Autor | SHA1 | Zpráva | Datum |
---|---|---|---|
范志钦 | e117388027 | 24小时设备数据-报废数据删除,质量管理-监测统计数据-按时间查询 | před 11 měsíci |
范志钦 | 5511837e90 | 更新质量模块 | před 11 měsíci |
范志钦 | 755ad9df30 | 下片更新 | před 1 rokem |
范志钦 | 101eac890c | 创建厂务管理/下片检测和详情页面 | před 1 rokem |
@@ -3,8 +3,8 @@ | |||
* @version: | |||
* @Author: fzq | |||
* @Date: 2022-11-25 09:51:46 | |||
* @LastEditors: fzq | |||
* @LastEditTime: 2023-02-09 14:40:52 | |||
* @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git | |||
* @LastEditTime: 2023-09-20 11:15:04 | |||
--> | |||
<!DOCTYPE html> | |||
<html> | |||
@@ -40,25 +40,29 @@ | |||
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %> | |||
<script> | |||
// window.SITE_CONFIG['apiURL'] = 'http://192.168.1.8'; | |||
window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
// window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
window.SITE_CONFIG['apiURL'] = 'http://127.0.0.1:8080/'; | |||
</script> | |||
<% } %> | |||
<!-- 集成测试环境 --> | |||
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %> | |||
<script> | |||
window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
// window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
window.SITE_CONFIG['apiURL'] = 'http://127.0.0.1:8080/'; | |||
</script> | |||
<% } %> | |||
<!-- 验收测试环境 --> | |||
<% if (process.env.VUE_APP_NODE_ENV === 'prod:uat') { %> | |||
<script> | |||
window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
// window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
window.SITE_CONFIG['apiURL'] = 'http://127.0.0.1:8080/'; | |||
</script> | |||
<% } %> | |||
<!-- 生产环境 --> | |||
<% if (process.env.VUE_APP_NODE_ENV === 'prod') { %> | |||
<script> | |||
window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
// window.SITE_CONFIG['apiURL'] = 'http://india.mes.picaiba.com/'; | |||
window.SITE_CONFIG['apiURL'] = 'http://127.0.0.1:8080/'; | |||
</script> | |||
<% } %> | |||
</head> | |||
@@ -359,7 +359,7 @@ export default { | |||
}).then(({ data: res }) => { | |||
if (res && res.code === 0) { | |||
const dataFormKeys = Object.keys(this.dataForm) | |||
console.log('data form keys: ', dataFormKeys, pick(res.data, dataFormKeys)) | |||
// console.log('data form keys: ', dataFormKeys, pick(res.data, dataFormKeys)) | |||
this.dataForm = pick(res.data, dataFormKeys) | |||
// LABEL: FILE_RELATED | |||
@@ -184,6 +184,8 @@ export default { | |||
// }, | |||
data() { | |||
return { | |||
//按钮盒用 | |||
idMark: 1, | |||
// 按钮防重复点击 | |||
isDisabled: false, | |||
COLUMN_PER_ROW, | |||
@@ -411,10 +413,10 @@ export default { | |||
}).then(({ data: res }) => { | |||
if (res && res.code === 0) { | |||
const dataFormKeys = Object.keys(this.dataForm) | |||
console.log('keys ===> ', dataFormKeys) | |||
// console.log('keys ===> ', dataFormKeys) | |||
// console.log('data form keys: ', dataFormKeys, pick(res.data, dataFormKeys)) | |||
this.dataForm = __pick(res.data, dataFormKeys) | |||
console.log('pick(res.data, dataFormKeys) ===> ', __pick(res.data, dataFormKeys)) | |||
// console.log('pick(res.data, dataFormKeys) ===> ', __pick(res.data, dataFormKeys)) | |||
// LABEL: FILE_RELATED | |||
/** 对文件下载进行分流 */ | |||
this.fileList = {} | |||
@@ -469,6 +471,9 @@ export default { | |||
this.dataForm[currentField.relatedField] = null | |||
} | |||
this.$emit('select-change', { name, id }) | |||
//按钮盒页面用 | |||
this.idMark = id | |||
}, | |||
handleEditorReady(val) {}, | |||
@@ -510,9 +515,19 @@ export default { | |||
} | |||
this.$set(this.dataForm, 'fileIds', fileIds) | |||
} | |||
console.log('before send: ', this.dataForm) | |||
// console.log('this.$route',this.$route); | |||
// console.log('before send: ', this.dataForm) | |||
//增加质量模块按钮盒多传参数的判断 | |||
if(this.$route.name == 'monitoring-qualityInspectionBoxBtn'){ | |||
// console.log('关键',this.configs.fields); | |||
for(let i = 0;i<this.configs.fields[4].options.length;i++){ | |||
if (this.configs.fields[4].options[i].label == this.idMark) { | |||
this.dataForm.inspectionDetId = this.configs.fields[4].options[i].inspectionDetId | |||
} | |||
} | |||
} | |||
// console.log('before send: ', this.dataForm) | |||
this.$http({ | |||
url: this.$http.adornUrl(urls[btn.name].url), | |||
method: btn.name === 'save' ? 'POST' : 'PUT', | |||
@@ -27,6 +27,7 @@ t.routes['字典管理'] = 'Dict Management' | |||
t.routes['PLC信息'] = 'PLC' | |||
// Relations between | |||
t.routes['设备与PLC关联配置'] = 'PLC & Equipments' | |||
t.routes['下片监测'] = 'Unload Log' | |||
t.routes['近24小时设备生产数据'] = 'Equipment Data' | |||
t.routes['近24小时产线生产数据'] = 'Productline Data' | |||
t.routes['近24小时质量检查数据'] = 'Quality Inspection Data' | |||
@@ -67,6 +68,7 @@ t.routes['设备信息'] = 'Equipment Details' | |||
t.routes['设备参数状态监控'] = 'Current Equipment State' | |||
t.routes['设备分组报警信息'] = 'Equipment Group Alarm' | |||
t.routes['设备历史参数'] = 'Equipment Historical Parameters' | |||
t.routes['下片详情'] = 'Unload Detail' | |||
t.routes['质量检测类型'] = 'Quality Inpection Types' | |||
t.routes['质量检测信息'] = 'Quality Inpection Details' | |||
t.routes['安灯检测盒'] = 'Andeng inspection box' | |||
@@ -146,6 +148,11 @@ t.status = 'Status' | |||
t.normal = 'Normal' | |||
t.shutdown = 'Shut Down' | |||
t.malfunction = 'Malfunction' // ? | |||
t.stop = 'Stop' | |||
t.run = 'Run' | |||
t.unknown = 'Unknown' | |||
t.buttonId = 'Button Number' | |||
t.boxNo = 'Box Number' | |||
t.diagram = 'Device Status Sequence Diagram' | |||
t.diagram2 = 'Device Product Sequence Diagram' | |||
t.addr = 'Address' | |||
@@ -422,6 +429,13 @@ t.pl.choose = 'Please select equipment' | |||
t.pl.confirm = 'Confirm' | |||
t.pl.cancel = 'Cancel' | |||
t.pl.success = 'The new device data is obtained successfully' | |||
t.pl.paperLaying = 'Paper Laying Machine Number' | |||
t.pl.robotNo = 'Robot Number' | |||
t.pl.glassNumber = 'Pallet Glass Number' | |||
t.pl.glassLength = 'Glass Length' | |||
t.pl.glassWidth = 'Glass Width' | |||
t.pl.thick = 'Glass Thcikness' | |||
t.pl.quantity = 'Pallet Quantity' | |||
t.prompt = {} | |||
@@ -27,6 +27,7 @@ t.routes['设备'] = '设备' | |||
t.routes['字典管理'] = '字典管理' | |||
t.routes['PLC信息'] = 'PLC信息' | |||
t.routes['设备与PLC关联配置'] = '设备与PLC关联配置' // ? | |||
t.routes['下片监测'] = '下片监测' | |||
t.routes['近24小时设备生产数据'] = '近24小时设备生产数据' | |||
t.routes['近24小时产线生产数据'] = '近24小时产线生产数据' | |||
t.routes['近24小时质量检查数据'] = '近24小时质量检查数据' | |||
@@ -67,6 +68,7 @@ t.routes['设备信息'] = '设备信息' | |||
t.routes['设备参数状态监控'] = '设备参数状态监控' | |||
t.routes['设备分组报警信息'] = '设备分组报警信息' | |||
t.routes['设备历史参数'] = '设备历史参数' | |||
t.routes['下片详情'] = '下片详情' | |||
t.routes['质量检测类型'] = '质量检测类型' | |||
t.routes['质量检测信息'] = '质量检测信息' | |||
t.routes['安灯检测盒'] = '安灯检测盒' | |||
@@ -145,10 +147,16 @@ t.status = '状态' // 1 | |||
t.normal = '正常' // ? | |||
t.shutdown = '停机' // ? | |||
t.malfunction = '故障' // ? | |||
t.stop = '停止' | |||
t.run = '运行' | |||
t.unknown = '未知' | |||
t.buttonId = '网关号' | |||
t.boxNo = '盒子编号' | |||
t.diagram = '设备状态时序图' | |||
t.diagram2 = '设备产量时序图' | |||
t.addr = '地址' // 1 | |||
t.planStop = '计划停机' // ? | |||
t.startTime = '开始时间' // 1 | |||
t.endTime = '结束时间' // 1 | |||
t.to = '至' // 1 | |||
@@ -423,6 +431,14 @@ t.pl.success = '新设备数据获取成功' | |||
t.pl.choose = '请选择设备' | |||
t.pl.confirm = '确定' | |||
t.pl.cancel = '取消' | |||
t.pl.paperLaying = '铺纸机名称' | |||
t.pl.robotNo = '下片机名称' | |||
t.pl.glassNumber = '木托玻璃数' | |||
t.pl.glassLength = '玻璃长度' | |||
t.pl.glassWidth = '玻璃宽度' | |||
t.pl.thick = '玻璃厚度' | |||
t.pl.quantity = '木托数量' | |||
t.prompt = {} | |||
@@ -8,8 +8,8 @@ import merge from 'lodash/merge' | |||
const http = axios.create({ | |||
// baseURL: window.SITE_CONFIG['apiURL'], | |||
baseURL: '/api', | |||
// baseURL: '/yd-monitor', | |||
// baseURL: '/api', | |||
baseURL: '/yd-monitor', | |||
// baseURL: process.env.NODE_ENV === 'production' ? '/api' : '/yd-monitor', | |||
timeout: 1000 * 180, | |||
withCredentials: true | |||
@@ -0,0 +1,355 @@ | |||
<template> | |||
<div class="mod-config"> | |||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="currentChangeHandle(1)" class="blueTip" size="small"> | |||
<el-form-item> | |||
{{ $t('pl.name') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<!-- @input="getLineEqList($event)" --> | |||
<el-select v-model="dataForm.lineId" :placeholder="$t('pl.name')" clearable filterable > | |||
<el-option v-for="line in lineList" :key="line.code" :value="line.id" :label="line.name" /> | |||
</el-select> | |||
</el-form-item> | |||
<!-- <el-form-item> | |||
{{ $t('eq.name') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-select v-model="dataForm.equipmentId" :placeholder="$t('eq.name')" clearable filterable> | |||
<el-option v-for="eq in eqList" :key="eq.code" :value="eq.id" :label="eq.name" /> | |||
</el-select> | |||
</el-form-item> --> | |||
<el-form-item> | |||
{{ $t('startTime') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-date-picker v-model="startTime" type="datetime" :placeholder="$t('hints.date')" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-ddTHH:mm:ss" /> | |||
</el-form-item> | |||
<el-form-item> | |||
{{ $t('endTime') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-date-picker v-model="endTime" type="datetime" :placeholder="$t('hints.date')" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-ddTHH:mm:ss" /> | |||
</el-form-item> | |||
<el-form-item> | |||
{{ $t('pl.thick') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-select v-model="glassThick" :placeholder="$t('pl.thick')"> | |||
<el-option | |||
v-for="item in glassOptions" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value"> | |||
</el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item> | |||
<!-- <el-button class="buttonColor" @click="currentChangeHandle(1)">{{ $t('query') }}</el-button> --> | |||
<el-button class="buttonColor" @click="currentChangeHandle(1)">{{ $t('query') }}</el-button> | |||
<!-- <el-button v-if="$hasPermission('monitoring:equipmentgroup:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> --> | |||
</el-form-item> | |||
</el-form> | |||
<base-table | |||
:data="dataList" | |||
:table-head-configs="tableConfigs" | |||
:max-height="calcMaxHeight(8)" | |||
@operate-event="handleOperations" | |||
@refreshDataList="getDataList" /> | |||
<!-- layout="total, sizes, prev, pager, next, jumper" --> | |||
<el-pagination | |||
@size-change="sizeChangeHandle" | |||
@current-change="currentChangeHandle" | |||
:current-page="pageIndex" | |||
:page-sizes="[10, 20, 50, 100]" | |||
:page-size="pageSize" | |||
:total="totalPage" | |||
layout="total, sizes, prev, pager, next, jumper" | |||
> | |||
</el-pagination> | |||
<!-- 弹窗, 新增 / 修改 --> | |||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" :configs="addOrUpdateConfigs" @refreshDataList="getDataList" @destory-dialog="handleDestroyDialog" /> | |||
</div> | |||
</template> | |||
<script> | |||
import { calcMaxHeight } from '@/utils' | |||
import { timeFilter } from '@/utils/filters' | |||
import AddOrUpdate from '@/components/base-dialog/addOrUpdate' | |||
// import AddOrUpdate from './equipmentGroup-add-or-update' | |||
import i18n from '@/i18n' | |||
import BaseTable from '@/components/base-table' | |||
// import TableOperateComponent from '@/components/base-table/components/operationComponent' | |||
import TableTextComponent from '@/components/base-table/components/detailComponent' | |||
const tableConfigs = [ | |||
{ | |||
type: 'index', | |||
width: 100, | |||
name: i18n.t('index') | |||
}, | |||
{ prop: 'lineName', name: i18n.t('pl.name') }, | |||
{ prop: 'location', name: i18n.t('pl.paperLaying') }, | |||
{ prop: 'equipmentName', name: i18n.t('pl.robotNo') }, | |||
{ prop: 'quantity', name: i18n.t('pl.quantity') }, | |||
{ prop: 'glassNumber', name: i18n.t('pl.glassNumber') }, | |||
{ prop: 'startTime', name: i18n.t('startTime') }, | |||
{ prop: 'endTime', name: i18n.t('endTime') }, | |||
{ prop: 'glassLength', name: i18n.t('pl.glassLength') }, | |||
{ prop: 'glassWidth', name: i18n.t('pl.glassWidth') }, | |||
{ prop: 'glassThickness', name: i18n.t('pl.thick') }, | |||
{ | |||
prop: 'detail', | |||
name: i18n.t('detail'), | |||
buttonContent: i18n.t('detail'), | |||
subcomponent: TableTextComponent, | |||
emitFullData: true, | |||
actionName: 'view-detail' | |||
} | |||
// { prop: 'operations', name: i18n.t('handle'), fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] } | |||
] | |||
const addOrUpdateConfigs = { | |||
type: 'dialog', | |||
infoUrl: '/monitoring/downloadLog/getTimeDet', | |||
fields: [{ name: 'equipmentName', label: i18n.t('eq.groupname') }, { name: 'equipmentName', label: i18n.t('eq.groupname') }], | |||
operations: [ | |||
{ name: 'cancel', showAlways: true }, | |||
{ name: 'save', url: '/monitoring/equipmentGroup', permission: 'monitoring:equipmentgroup:save', showOnEdit: false }, | |||
{ name: 'update', url: '/monitoring/equipmentGroup', permission: 'monitoring:equipmentgroup:update', showOnEdit: true } | |||
] | |||
} | |||
export default { | |||
data() { | |||
return { | |||
addOrUpdateConfigs, | |||
calcMaxHeight, | |||
tableConfigs, | |||
dataForm: { | |||
equipmentId: '', | |||
lineId: '' | |||
}, | |||
dataList: [], | |||
eqList: [], | |||
lineList: [], | |||
pageIndex: 1, | |||
pageSize: 20, | |||
totalPage: 0, | |||
dataListLoading: false, | |||
dataListSelections: [], | |||
addOrUpdateVisible: false, | |||
startTime: '', | |||
endTime: '', | |||
glassNumber: 95, | |||
glassLength: 2261, | |||
glassWidth: 1128, | |||
glassThick: 3.2, | |||
glassOptions: [{ | |||
value: 3.2, | |||
label: '3.2mm' | |||
}, { | |||
value: 2, | |||
label: '2mm' | |||
}], | |||
value: '' | |||
} | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
BaseTable | |||
}, | |||
activated() { | |||
// this.getEqList() | |||
this.getLineList() | |||
this.getDataList() | |||
}, | |||
methods: { | |||
// destroy dialog | |||
handleDestroyDialog() { | |||
setTimeout(() => { | |||
this.addOrUpdateVisible = false | |||
}, /** after dialog animated */ 200) | |||
}, | |||
// 产线对应设备 | |||
getLineEqList(event) { | |||
// console.log(event) | |||
this.$http({ | |||
url: this.$http.adornUrl('/monitoring/equipment/page'), | |||
method: 'get', | |||
params: this.$http.adornParams({ | |||
limit: 99999, | |||
page: 1, | |||
lineId: event | |||
}) | |||
}).then(({ data }) => { | |||
if (data && data.code === 0) { | |||
let fileterEqList = data.data.list.filter((t) => { | |||
return t.lineId == event | |||
}) | |||
this.eqList = fileterEqList | |||
} else { | |||
this.eqList = [] | |||
} | |||
}) | |||
}, | |||
// 产线 | |||
getLineList() { | |||
this.$http({ | |||
url: this.$http.adornUrl('/monitoring/productionLine/list'), | |||
method: 'get' | |||
}).then(({ data }) => { | |||
if (data && data.code === 0) { | |||
this.lineList = data.data | |||
} else { | |||
this.lineList = [] | |||
} | |||
}) | |||
}, | |||
// 获取数据列表 | |||
getDataList() { | |||
this.addOrUpdateVisible = false | |||
this.dataListLoading = true | |||
// this.$http({ | |||
// url: this.$http.adornUrl('/monitoring/downloadLog/getTimeCount'), | |||
// method: 'POST', | |||
// params: this.$http.adornParams({ | |||
// // page: this.pageIndex, | |||
// // limit: this.pageSize, | |||
// // lineId: this.dataForm.lineId, | |||
// 'startTime': this.startTime, | |||
// 'endTime': this.endTime | |||
// } | |||
// ) | |||
this.$http({ | |||
url: this.$http.adornUrl('/monitoring/downloadLog/getTimeCount'), | |||
method: 'POST', | |||
data: { | |||
page: this.pageIndex, | |||
limit: this.pageSize, | |||
// lineId: this.dataForm.lineId, | |||
'startTime': this.startTime, | |||
'endTime': this.endTime | |||
} | |||
}).then(({ data }) => { | |||
if ((data && data.code === 0) && (this.dataForm.lineId != '')) { | |||
// console.log('this.dataForm.lineId', this.dataForm.lineId); | |||
let fileterLineList = data.data.filter((t) => { | |||
return t.lineId == this.dataForm.lineId | |||
}) | |||
this.dataList = fileterLineList | |||
// this.dataList = data.data | |||
this.totalPage = this.dataList.length | |||
// console.log('this.totalPage',this.totalPage) | |||
} else if (this.dataForm.lineId == '') { | |||
this.dataList = data.data | |||
this.totalPage = data.data.length | |||
} | |||
else { | |||
this.dataList = [] | |||
this.totalPage = 0 | |||
} | |||
for(let i =0;i<this.dataList.length;i++){ | |||
this.dataList[i].glassNumber = ( this.glassThick == 3.2 ) ? 95 :150 | |||
this.dataList[i].glassThickness = this.glassThick | |||
this.dataList[i].glassLength = 2261 | |||
this.dataList[i].glassWidth = 1128 | |||
this.dataList[i].endTime = this.dataList[i].endTime == null ? '-' : this.dataList[i].endTime | |||
this.dataList[i].startTime = this.dataList[i].startTime == null ? '-' : this.dataList[i].startTime | |||
} | |||
// console.log(this.dataList); | |||
this.dataListLoading = false | |||
}) | |||
}, | |||
// 每页数 | |||
sizeChangeHandle(val) { | |||
this.pageSize = val | |||
this.pageIndex = 1 | |||
this.getDataList() | |||
}, | |||
// 当前页 | |||
currentChangeHandle(val) { | |||
this.pageIndex = val | |||
this.getDataList() | |||
}, | |||
// 多选 | |||
selectionChangeHandle(val) { | |||
this.dataListSelections = val | |||
}, | |||
handleOperations({ type, data }) { | |||
switch (type) { | |||
case 'view-detail': | |||
const { equipmentId: id , equipmentName: name} = data | |||
this.$router.push({ | |||
name: 'monitoring-unloadDetail', | |||
params: { id, name } | |||
}) | |||
break | |||
// case 'edit': | |||
// return this.addOrUpdateHandle(id) | |||
// case 'delete': | |||
// return this.deleteHandle(id) | |||
} | |||
}, | |||
// 新增 / 修改 | |||
addOrUpdateHandle(id) { | |||
this.addOrUpdateVisible = true | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(id) | |||
}) | |||
}, | |||
// 删除 | |||
deleteHandle(id) { | |||
var ids = id | |||
? [id] | |||
: this.dataListSelections.map((item) => { | |||
return item.id | |||
}) | |||
this.$confirm(`${i18n.t('prompt.info', { handle: id ? i18n.t('delete').toLowerCase() : i18n.t('deleteBatch').toLowerCase() })}`, i18n.t('prompt.title'), { | |||
confirmButtonText: i18n.t('confirm'), | |||
cancelButtonText: i18n.t('cancel'), | |||
type: 'warning' | |||
}).then(() => { | |||
this.$http({ | |||
url: this.$http.adornUrl('/monitoring/equipmentGroup'), | |||
method: 'delete', | |||
data: this.$http.adornData(ids, false, 'raw') | |||
}).then(({ data }) => { | |||
if (data && data.code === 0) { | |||
this.$message({ | |||
message: i18n.t('prompt.success'), | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
this.getDataList() | |||
} | |||
}) | |||
} else { | |||
this.$message.error(data.msg) | |||
} | |||
}) | |||
}) | |||
} | |||
} | |||
} | |||
</script> | |||
<style> | |||
.blueTip::before { | |||
display: inline-block; | |||
content: ''; | |||
width: 4px; | |||
height: 24px; | |||
background: #0b58ff; | |||
border-radius: 1px; | |||
margin-right: 8px; | |||
margin-top: 4px; | |||
} | |||
.buttonColor { | |||
color: #fff; | |||
background: #0b58ff; | |||
} | |||
</style> |
@@ -5,7 +5,7 @@ | |||
{{ $t('pl.name') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-select v-model="dataForm.lineId" :placeholder="$t('pl.name')" clearable filterable> | |||
<el-select v-model="dataForm.lineId" :placeholder="$t('pl.name')" clearable filterable @input="getLineEqList($event)"> | |||
<el-option v-for="line in lineList" :key="line.code" :value="line.id" :label="line.name" /> | |||
</el-select> | |||
</el-form-item> | |||
@@ -90,6 +90,7 @@ const tableConfigs = [ | |||
prop: 'status', | |||
name: i18n.t('realtime.state'), | |||
filter: (val) => { | |||
if (val == 9) return i18n.t('unknown') | |||
if (val !== null && val !== undefined) return [i18n.t('normal'), i18n.t('planStop'), i18n.t('malfunction')][+val] | |||
} | |||
}, | |||
@@ -150,8 +151,9 @@ export default { | |||
BaseTable | |||
}, | |||
activated() { | |||
this.getEqList() | |||
// this.getEqList() | |||
this.getLineList() | |||
this.getEqList() | |||
this.getDataList() | |||
}, | |||
methods: { | |||
@@ -178,6 +180,28 @@ export default { | |||
} | |||
}) | |||
}, | |||
// 产线对应设备 | |||
getLineEqList(event) { | |||
console.log(event) | |||
this.$http({ | |||
url: this.$http.adornUrl('/monitoring/equipment/page'), | |||
method: 'get', | |||
params: this.$http.adornParams({ | |||
limit: 99999, | |||
page: 1, | |||
lineId: event | |||
}) | |||
}).then(({ data }) => { | |||
if (data && data.code === 0) { | |||
let fileterEqList = data.data.list.filter((t) => { | |||
return t.lineId == event | |||
}) | |||
this.eqList = fileterEqList | |||
} else { | |||
this.eqList = [] | |||
} | |||
}) | |||
}, | |||
// 产线 | |||
getLineList() { | |||
this.$http({ | |||
@@ -61,7 +61,7 @@ const tableConfigs = [ | |||
{ prop: 'factoryName', name: i18n.t('factory.title') }, | |||
{ prop: 'name', name: i18n.t('pl.name') }, | |||
{ prop: 'code', name: i18n.t('pl.code') }, | |||
{ prop: 'status', name: i18n.t('pl.status'), filter: (val) => (val === 0 || val === 1 || val === 2) && ['停止', '运行', '未知'][val] }, | |||
{ prop: 'status', name: i18n.t('pl.status'), filter: (val) => (val === 0 || val === 1 || val === 2) && [i18n.t('stop'), i18n.t('run'), i18n.t('unknown')][val] }, | |||
{ prop: 'description', name: i18n.t('desc') }, | |||
{ prop: 'remark', name: i18n.t('remark') }, | |||
{ prop: 'operations', name: i18n.t('handle'), fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] } | |||
@@ -75,7 +75,7 @@ const tableConfigs = [ | |||
}, | |||
{ prop: 'inspectionDetContent', name: i18n.t('andeng.inspectContent') }, // name: '检测内容' }, | |||
{ prop: 'keyValue', name: i18n.t('andeng.btnVal') }, // name: '按钮值' }, | |||
{ prop: 'model', name: i18n.t('andeng.btnBoxModel') }, // name: '按钮盒模式' }, | |||
{ prop: 'buttonId', name: i18n.t('buttonId') }, // name: '网关号' }, | |||
{ | |||
prop: 'operations', | |||
@@ -145,7 +145,9 @@ const addOrUpdateConfigs = { | |||
required: true, | |||
type: 'select', | |||
options: [] | |||
} | |||
}, | |||
{ name: 'buttonId', label: i18n.t('buttonId') }, | |||
{ name: 'boxNo', label: i18n.t('boxNo') } | |||
], | |||
operations: [ | |||
{ name: 'cancel', showAlways: true }, | |||
@@ -334,14 +336,15 @@ export default { | |||
this.addOrUpdateConfigs.fields.forEach((item) => { | |||
// console.log('item',item) | |||
// console.log('res',res) | |||
if (item.name === 'inspectionDetContent') item.options = res.data.list.map((item) => ({ label: item.content, value: item.content, inspectionDetId: item.code })) | |||
// console.log('item',item) | |||
if (item.name === 'inspectionDetContent') item.options = res.data.list.map((item) => ({ label: item.content, value: item.content, inspectionDetId: item.id })) | |||
// console.log('this.addOrUpdateConfigs.fields[4].options', this.addOrUpdateConfigs.fields[4].options) | |||
}) | |||
} else { | |||
this.addOrUpdateConfigs.fields.forEach((item) => { | |||
if (item.name === 'inspectionDetContent') item.options.splice(0) | |||
}) | |||
} | |||
// console.log('this.addOrUpdateConfigs.fields[4]检测内容',this.addOrUpdateConfigs) | |||
}) | |||
}, | |||
// 每页数 | |||
@@ -375,16 +378,20 @@ export default { | |||
} | |||
case 'inspectionDetContent': | |||
// this.dataForm.inspectionDetId = id | |||
// console.log(id) | |||
// console.log('name',name) | |||
// console.log('id',id) | |||
// console.log(this.addOrUpdateConfigs.fields[4].options) | |||
for (var i = 0; i < this.addOrUpdateConfigs.fields[4].options.length; i++) { | |||
if (this.addOrUpdateConfigs.fields[4].options[i].label == id) { | |||
this.dataForm.inspectionDetId = this.addOrUpdateConfigs.fields[4].options[i].inspectionDetId | |||
this.addOrUpdateConfigs.fields.inspectionDetId = this.addOrUpdateConfigs.fields[4].options[i].inspectionDetId | |||
// this.addOrUpdateConfigs.fields[6].inspectionDetId = this.addOrUpdateConfigs.fields[4].options[i].inspectionDetId | |||
// console.log('this.addOrUpdateConfigs.fields.inspectionDetId', this.addOrUpdateConfigs.fields) | |||
// this.addOrUpdateConfigs.fields.push({name:'inspectionDetId'}) | |||
} | |||
} | |||
console.log('dataForm', this.dataForm) | |||
console.log('addOrUpdateConfigs', this.addOrUpdateConfigs.fields) | |||
// console.log('dataForm', this.dataForm) | |||
// console.log('addOrUpdateConfigs', this.addOrUpdateConfigs.fields) | |||
} | |||
}, | |||
addSuccess() { | |||
@@ -1,21 +1,34 @@ | |||
<template> | |||
<div class="mod-config"> | |||
<el-form :inline="true" @keyup.enter.native="getDataList()" class="blueTip" size="small"> | |||
<el-form-item> | |||
<!-- <el-form-item> | |||
{{ $t('time') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<!-- type="datetimerange" --> | |||
type="datetimerange" | |||
:default-time="['00:00:00', '23:59:59']" | |||
<el-date-picker | |||
type="daterange" | |||
v-model="datetime" | |||
format="yyyy-MM-dd HH:mm:ss" | |||
value-format="yyyy-MM-ddTHH:mm:ss" | |||
:start-placeholder="$t('startTime')" | |||
:end-placeholder="$t('endTime')" | |||
:range-separator="$t('to')" | |||
:default-time="['00:00:00', '23:59:59']" | |||
:picker-options="quickOptions" | |||
clearable /> | |||
</el-form-item> --> | |||
<el-form-item> | |||
{{ $t('startTime') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-date-picker v-model="startTime" type="datetime" :placeholder="$t('hints.date')" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-ddTHH:mm:ss" /> | |||
</el-form-item> | |||
<el-form-item> | |||
{{ $t('endTime') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-date-picker v-model="endTime" type="datetime" :placeholder="$t('hints.date')" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-ddTHH:mm:ss" /> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button class="buttonColor" @click="getDataList()">{{ $t('query') }}</el-button> | |||
@@ -176,7 +189,7 @@ const FakeChart = { | |||
}, | |||
defaultOpts: { | |||
handler: function (val) { | |||
console.log('defaullt opts change: ', val) | |||
// console.log('defaullt opts change: ', val) | |||
this.setOptions() | |||
}, | |||
immediate: true, | |||
@@ -222,6 +235,8 @@ export default { | |||
dataType: dict[0], // 表格 | 图形 | |||
showGraph: false, | |||
datetime: [], | |||
startTime: '', | |||
endTime: '', | |||
quickOptions: { | |||
shortcuts: [ | |||
{ | |||
@@ -267,8 +282,10 @@ export default { | |||
this.echartCategories = null | |||
this.echartCheckTypes.splice(0) | |||
/** 设置默认日期 */ | |||
const startTime = this.datetime[0] || moment().set({ hour: 0, minute: 0, second: 0 }).format('yyyy-MM-DDTHH:mm:ss') | |||
const endTime = this.datetime[1] || moment().set({ hour: 23, minute: 59, second: 59 }).format('yyyy-MM-DDTHH:mm:ss') | |||
// const startTime = this.datetime[0] || moment().set({ hour: 0, minute: 0, second: 0 }).format('yyyy-MM-DDTHH:mm:ss') | |||
// const endTime = this.datetime[1] || moment().set({ hour: 23, minute: 59, second: 59 }).format('yyyy-MM-DDTHH:mm:ss') | |||
const startTime = this.startTime | |||
const endTime = this.endTime | |||
/** [1] 获取上下片数据 */ | |||
this.fetchList('sx', startTime, endTime).then(({ data: res }) => { | |||
@@ -277,12 +294,12 @@ export default { | |||
}) | |||
/** [2] 获取产线检测类型 */ | |||
this.fetchList('pl', startTime, endTime).then(({ data: res }) => { | |||
console.log('res: ', res) | |||
// console.log('res: ', res) | |||
/** TODO: 解析 nameData */ | |||
this.parseTableProps(res.data.nameData) | |||
this.dataListDynamic = this.parseDynamicData(res.data.data) || [] | |||
console.log('this.dataListDynamic', this.dataListDynamic) | |||
// console.log('this.dataListDynamic', this.dataListDynamic) | |||
this.buildGraphData() | |||
}) | |||
@@ -337,9 +354,9 @@ export default { | |||
this.echartCheckTypes.forEach((ect) => { | |||
result.push({ name: ect, type: 'bar', data: [] }) | |||
}) | |||
console.log('result', result) | |||
console.log('echartCheckTypes',this.echartCheckTypes); | |||
console.log('this.echartCategories',this.echartCategories); | |||
// console.log('result', result) | |||
// console.log('echartCheckTypes',this.echartCheckTypes); | |||
// console.log('this.echartCategories',this.echartCategories); | |||
this.dataListDynamic.forEach((inspection, index) => { | |||
// console.log('inspection: ', inspection) | |||
this.echartCategories.forEach((cate) => { | |||
@@ -357,7 +374,7 @@ export default { | |||
// { name: '222', type: 'bar', data: [1, 2, 3] } | |||
// ] | |||
console.log('echarts data: ', this.echartsData) | |||
// console.log('echarts data: ', this.echartsData) | |||
}, | |||
fetchList(type, startTime, endTime) { | |||
@@ -205,7 +205,7 @@ export default { | |||
limit: 9999999 | |||
}) | |||
}).then(({ data: res }) => { | |||
console.log('insdet:', res) | |||
// console.log('insdet:', res) | |||
const insDetOpt = this.addOrUpdateConfigs.fields.find((item) => item.name === 'inspectionDetId') | |||
if (insDetOpt) { | |||
insDetOpt.options = res.data.list.map((item) => ({ value: item.id, label: item.content })) || [] | |||
@@ -134,8 +134,8 @@ export default { | |||
children: [ | |||
{ prop: obj.recordTime + '-inputNum', label: i18n.t('realtime.in') }, | |||
{ prop: obj.recordTime + '-outputNum', label: i18n.t('realtime.out') }, | |||
{ prop: obj.recordTime + '-scrapNum', label: i18n.t('realtime.data') }, | |||
{ prop: obj.recordTime + '-scrapRate', label: i18n.t('realtime.rate'), filter: val => (val !== '-' ? `${val.toFixed(2)}%` : '-') } | |||
// { prop: obj.recordTime + '-scrapNum', label: i18n.t('realtime.data') }, | |||
// { prop: obj.recordTime + '-scrapRate', label: i18n.t('realtime.rate'), filter: val => (val !== '-' ? `${val.toFixed(2)}%` : '-') } | |||
] | |||
}) | |||
} | |||
@@ -14,7 +14,8 @@ export default { | |||
// url: window.SITE_CONFIG['apiURL'] + this.$http.adornUrl('/ureport/designer') | |||
// url: this.$http.adornUrl('/ureport/designer') | |||
// url: (process.env.NODE_ENV === 'production' ? '/api' : '/yd-monitor') + '/ureport/designer' | |||
url: '/api/ureport/designer' | |||
// url: '/api/ureport/designer' | |||
url: '/yd-monitor/ureport/designer' | |||
} | |||
}, | |||
mounted() { | |||
@@ -1,8 +1,8 @@ | |||
<!-- | |||
* @Author: gtz | |||
* @Date: 2021-03-07 18:39:03 | |||
* @LastEditors: gtz | |||
* @LastEditTime: 2022-02-24 16:35:51 | |||
* @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git | |||
* @LastEditTime: 2023-09-20 11:14:33 | |||
* @Description: file content | |||
--> | |||
<template> | |||
@@ -24,7 +24,8 @@ export default { | |||
// url: process.env.VUE_APP_REPORT_VIEW_URL | |||
// url: window.SITE_CONFIG['apiURL'] + this.$http.adornUrl('/ureport/preview') | |||
// url: (process.env.NODE_ENV === 'production' ? '/api' : '/yd-monitor') + '/ureport/preview' | |||
url: '/api/ureport/preview' | |||
// url: '/api/ureport/preview' | |||
url: '/yd-monitor/ureport/preview' | |||
} | |||
}, | |||
mounted() { | |||
@@ -0,0 +1,210 @@ | |||
<template> | |||
<el-form :model="dataForm" :inline="true" class="blueTip" size="small"> | |||
<el-form-item> | |||
{{ $t('pl.robotNo') }} | |||
</el-form-item> | |||
<!-- <el-form-item :label="$t('equCode')"> | |||
<strong>{{ equipmentCode }}</strong> | |||
</el-form-item> --> | |||
<el-form-item > | |||
{{ equipmentName }} | |||
</el-form-item> | |||
<el-form-item> | |||
{{ $t('startTime') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-date-picker v-model="startTime" type="datetime" :placeholder="$t('hints.date')" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-ddTHH:mm:ss" /> | |||
</el-form-item> | |||
<el-form-item> | |||
{{ $t('endTime') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-date-picker v-model="endTime" type="datetime" :placeholder="$t('hints.date')" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-ddTHH:mm:ss" /> | |||
</el-form-item> | |||
<el-form-item> | |||
{{ $t('pl.thick') }} | |||
</el-form-item> | |||
<el-form-item> | |||
<el-select v-model="glassThick" :placeholder="$t('pl.thick')"> | |||
<el-option | |||
v-for="item in glassOptions" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value"> | |||
</el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item> | |||
<!-- <el-button class="buttonColor" @click="currentChangeHandle(1)">{{ $t('query') }}</el-button> --> | |||
<el-button class="buttonColor" @click="currentChangeHandle(1)">{{ $t('query') }}</el-button> | |||
<!-- <el-button v-if="$hasPermission('monitoring:equipmentgroup:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> --> | |||
</el-form-item> | |||
<base-table | |||
:page="pageIndex" | |||
:size="pageSize" | |||
:data="dataList" | |||
:table-head-configs="tableConfigs" | |||
:max-height="calcMaxHeight(8)" | |||
@refreshDataList="getDataList" /> | |||
<!-- layout="total, sizes, prev, pager, next, jumper" --> | |||
<el-pagination | |||
@size-change="sizeChangeHandle" | |||
@current-change="currentChangeHandle" | |||
:current-page="pageIndex" | |||
:page-sizes="[10, 20, 50, 100]" | |||
:page-size="pageSize" | |||
:total="totalPage" | |||
layout="total, sizes, prev, pager, next, jumper" | |||
> | |||
</el-pagination> | |||
</el-form> | |||
</template> | |||
<script> | |||
import { calcMaxHeight } from '@/utils' | |||
import { timeFilter } from '@/utils/filters' | |||
import AddOrUpdate from '@/components/base-dialog/addOrUpdate' | |||
import i18n from '@/i18n' | |||
import BaseTable from '@/components/base-table' | |||
import { pick } from 'lodash/object' | |||
import equipmentVue from './equipment.vue' | |||
const tableConfigs = [ | |||
{ | |||
type: 'index', | |||
width: 100, | |||
name: i18n.t('index') | |||
}, | |||
{ prop: 'lineName', name: i18n.t('pl.name') }, | |||
{ prop: 'location', name: i18n.t('pl.paperLaying') }, | |||
{ prop: 'equipmentName', name: i18n.t('pl.robotNo') }, | |||
{ prop: 'glassNumber', name: i18n.t('pl.glassNumber') }, | |||
{ prop: 'startTime', name: i18n.t('startTime') }, | |||
{ prop: 'endTime', name: i18n.t('endTime') }, | |||
{ prop: 'glassLength', name: i18n.t('pl.glassLength') }, | |||
{ prop: 'glassWidth', name: i18n.t('pl.glassWidth') }, | |||
{ prop: 'glassThickness', name: i18n.t('pl.thick') }, | |||
// { prop: 'operations', name: i18n.t('handle'), fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] } | |||
] | |||
export default { | |||
data() { | |||
return { | |||
calcMaxHeight, | |||
tableConfigs, | |||
dataForm: { | |||
equipmentId: '', | |||
lineId: '' | |||
}, | |||
dataList: [], | |||
eqList: [], | |||
lineList: [], | |||
pageIndex: 1, | |||
pageSize: 10, | |||
totalPage: 0, | |||
equId: null, | |||
dataListLoading: false, | |||
dataListSelections: [], | |||
addOrUpdateVisible: false, | |||
startTime: '', | |||
endTime: '', | |||
glassNumber: 95, | |||
glassLength: 2261, | |||
glassWidth: 1128, | |||
glassThick: 3.2, | |||
glassOptions: [{ | |||
value: 3.2, | |||
label: '3.2mm' | |||
}, { | |||
value: 2, | |||
label: '2mm' | |||
}], | |||
value: '', | |||
equipmentName: this.$route.params.name | |||
} | |||
}, | |||
components: { | |||
AddOrUpdate, | |||
BaseTable | |||
}, | |||
activated() { | |||
this.getDataList() | |||
}, | |||
mouted() { | |||
this.getDataList() | |||
}, | |||
created() { | |||
// console.log('params',this.$route.params) | |||
}, | |||
methods: { | |||
// destroy dialog | |||
handleDestroyDialog() { | |||
setTimeout(() => { | |||
this.addOrUpdateVisible = false | |||
}, /** after dialog animated */ 200) | |||
}, | |||
// 获取数据列表 | |||
getDataList() { | |||
// console.log('this.$route.params.name',this.$route.params.name); | |||
this.equipmentName = this.$route.params.name | |||
this.dataListLoading = true | |||
this.$http({ | |||
// url: this.$http.adornUrl(`/monitoring/downloadLog/getTimeDet/${this.$route.params.id}`), | |||
url: this.$http.adornUrl('/monitoring/downloadLog/getTimeDet'), | |||
method: 'POST', | |||
data: { | |||
page: this.pageIndex, | |||
limit: this.pageSize, | |||
// lineId: this.dataForm.lineId, | |||
equId: this.$route.params.id, | |||
'startTime': this.startTime, | |||
'endTime': this.endTime | |||
} | |||
}).then(({ data }) => { | |||
if (data && data.code === 0) { | |||
// let fileterLineList = data.data.filter((t) => { | |||
// return t.lineId == this.dataForm.lineId | |||
// }) | |||
// this.dataList = fileterLineList | |||
this.dataList = data.data.list | |||
// this.totalPage = this.dataList.length | |||
this.totalPage = data.data.total | |||
console.log('data',data) | |||
} else if (this.dataForm.lineId == '') { | |||
this.dataList = data.data.list | |||
this.totalPage = data.data.total | |||
// console.log('this.dataList',this.dataList); | |||
} | |||
else { | |||
this.dataList = [] | |||
this.totalPage = 0 | |||
} | |||
for(let i =0;i<this.dataList.length;i++){ | |||
this.dataList[i].glassNumber = ( this.glassThick == 3.2 ) ? 95 :150 | |||
this.dataList[i].glassThickness = this.glassThick | |||
this.dataList[i].glassLength = 2261 | |||
this.dataList[i].glassWidth = 1128 | |||
this.dataList[i].endTime = this.dataList[i].endTime == null ? '-' : this.dataList[i].endTime | |||
this.dataList[i].startTime = this.dataList[i].startTime == null ? '-' : this.dataList[i].startTime | |||
} | |||
// console.log(this.dataList); | |||
this.dataListLoading = false | |||
}).catch(()=>{}) //---去除无效报错--- | |||
}, | |||
// 每页数 | |||
sizeChangeHandle(val) { | |||
this.pageSize = val | |||
this.pageIndex = 1 | |||
this.getDataList() | |||
}, | |||
// 当前页 | |||
currentChangeHandle(val) { | |||
this.pageIndex = val | |||
this.getDataList() | |||
} | |||
} | |||
} | |||
</script> |
@@ -30,7 +30,8 @@ export default { | |||
this.visible = true | |||
// this.url = `${window.SITE_CONFIG['apiURL']}/sys/oss/upload?token=${Cookies.get('token')}` | |||
// this.url = (process.env.NODE_ENV === 'production' ? '/api' : '/yd-monitor') + `/sys/oss/upload?token=${Cookies.get('token')}` | |||
this.url = `/api/sys/oss/upload?token=${Cookies.get('token')}` | |||
// this.url = `/api/sys/oss/upload?token=${Cookies.get('token')}` | |||
this.url = `/yd-monitor/sys/oss/upload?token=${Cookies.get('token')}` | |||
this.num = 0 | |||
this.fileList = [] | |||
}, | |||
@@ -166,7 +166,8 @@ export default { | |||
this.dataForm.uuid = getUUID() | |||
// this.captchaPath = `${window.SITE_CONFIG['apiURL']}/captcha?uuid=${this.dataForm.uuid}` | |||
// this.captchaPath = (process.env.NODE_ENV === 'production' ? '/api' : '/yd-monitor') + `/captcha?uuid=${this.dataForm.uuid}` | |||
this.captchaPath = `/api/captcha?uuid=${this.dataForm.uuid}` | |||
// this.captchaPath = `/api/captcha?uuid=${this.dataForm.uuid}` | |||
this.captchaPath = `/yd-monitor/captcha?uuid=${this.dataForm.uuid}` | |||
}, | |||
// 表单提交 | |||
dataFormSubmitHandle: debounce( | |||
@@ -29,13 +29,16 @@ module.exports = { | |||
}, | |||
proxy: { | |||
'/api': { | |||
target: 'http://india.mes.picaiba.com/' | |||
// target: 'http://india.mes.picaiba.com/' | |||
target: 'http://127.0.0.1:8080/' | |||
}, | |||
'/yd-monitor': { | |||
target: 'http://192.168.1.18:8080/' // 开发地址 | |||
// target: 'http://192.168.1.18:8080/' // 开发地址 | |||
target: 'http://127.0.0.1:8080/' | |||
}, | |||
'/ureport': { | |||
target: 'http://india.mes.picaiba.com/' // ureporter | |||
// target: 'http://india.mes.picaiba.com/' // ureporter | |||
target: 'http://127.0.0.1:8080/' | |||
} | |||
} | |||
} | |||