卧式理片模块新增报警,中空理片笼、钢化理片笼-理片笼详情改造
| | |
| | | Content:'Content', |
| | | idSame:'The glass ID for the entry task is the same', |
| | | sizeSame:'There are glass pieces of the same specification inside the cage', |
| | | slotLess:'Insufficient remaining slots', |
| | | overSize:'There is glass in the straight-through feeder, end this feeding process.', |
| | | noGlass:'Glass information not found, please collect the project', |
| | | projectMsg2:'Please select a label template', |
| | | clickmakesure: 'Whether or not to confirm the click?', |
| | | logarithm: 'logarithm:', |
| | |
| | | content:'내용', |
| | | idSame:'진입 작업 유리 ID가 동일합니다.', |
| | | sizeSame:'우리 안에 동일한 규격의 유리가 존재합니다.', |
| | | slotLess:'나머지 그리드가 부족합니다.', |
| | | overSize:'직통 피딩대에 유리가 있어 이번 피딩을 종료합니다', |
| | | noGlass:'유리 정보를 찾을 수 없습니다. 공정을 받으세요.', |
| | | clickmakesure: '클릭 확인 여부?', |
| | | logarithm: '대수:', |
| | | totalPairQuantitya: '총 임무 짝수', |
| | |
| | | content:'内容', |
| | | idSame:'进片任务玻璃ID相同', |
| | | sizeSame:'笼内存在相同规格的玻璃', |
| | | slotLess:'剩余格子不足', |
| | | overSize:'直通片台存在玻璃,结束本次进片', |
| | | noGlass:'未找到玻璃信息,请领取工程', |
| | | clickmakesure: '是否确认点击?', |
| | | logarithm: '对数:', |
| | | totalPairQuantitya: '任务总配对数', |
| | |
| | | prompt:'提示', |
| | | }, |
| | | delivery:{ |
| | | alarmStartTime:'报警开始时间', |
| | | alarmEndTime:'报警结束时间', |
| | | equipment:'设备', |
| | | content:'内容', |
| | | confirmer:'确认人', |
| | | addrole:'添加角色', |
| | | editrole:'修改角色', |
| | | role :'角色', |
| | |
| | | content:'内容', |
| | | idSame:'进片任务玻璃ID相同', |
| | | sizeSame:'笼内存在相同规格的玻璃', |
| | | slotLess:'剩余格子不足', |
| | | overSize:'直通片台存在玻璃,结束本次进片', |
| | | noGlass:'未找到玻璃信息,请领取工程', |
| | | projectMsg2:'请选择标签模板', |
| | | clickmakesure: '是否确认点击?', |
| | | logarithm: '对数:', |
| | |
| | | path: '/User/userpageNo', |
| | | name: 'userpageNo', |
| | | component: () => import('../views/User/userpageNo.vue') |
| | | }, |
| | | { |
| | | path: '/User/alarmLog', |
| | | name: 'alarmLog', |
| | | component: () => import('../views/User/alarmLog.vue') |
| | | } |
| | | ] |
| | | }, |
| | |
| | | const adjustedRects = ref([]); |
| | | const selectValuesa = reactive([]); |
| | | const timeRange = ref([]) |
| | | const tableDataAlert = ref([]) |
| | | const taskState = ref('') |
| | | const taskStat = ref('') |
| | | const taskType = ref('') |
| | | const glassId = ref('') |
| | | const alertText = ref('') |
| | | const alertMessage = ref('') |
| | | const alarmData = ref('') |
| | | // const alarmData = ref<any>(null) |
| | | const showAlert = ref(false) |
| | | const showModal = ref(false) |
| | | const blindb = ref(false) |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassOne`; |
| | | const handleMessage = (data) => { |
| | | // 报警信息 |
| | | if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) { |
| | | const alert = data.alarmInfo[0]; |
| | | const { id, alarmMessage, ...rest } = alert[0]; |
| | | alertMessage.value = `${alarmMessage}`; |
| | | alertMessage.value = `${alert[0].alarmMessage}`; |
| | | if (alert[0].alarmCode === 'sizeSame') { |
| | | alertText.value = t('hellow.sizeSame'); |
| | | } else if (alert[0].alarmCode === 'idSame') { |
| | | alertText.value = t('hellow.idSame'); |
| | | } else if (alert[0].alarmCode === 'slotLess') { |
| | | alertText.value = t('hellow.slotLess'); |
| | | } else if (alert[0].alarmCode === 'overSize') { |
| | | alertText.value = t('hellow.overSize'); |
| | | } else if (alert[0].alarmCode === 'noGlass') { |
| | | alertText.value = t('hellow.noGlass'); |
| | | } else { |
| | | alertText.value = t('hellow.unknownAlert'); |
| | | } |
| | | alarmData.value = data; // 存储完整数据用于弹窗 |
| | | showAlert.value = true; |
| | | } |
| | | const formattedData = data.alarmInfo[0].map(record => ({ |
| | | ...record, |
| | | formattedCreateTime: formatTimestamp(record.createTime), |
| | | alarmCode: record.alarmCode, |
| | | alarmMessage: record.alarmMessage |
| | | })); |
| | | tableDataAlert.value = formattedData; |
| | | const cageInfo = data.taskMessage[0]; |
| | | if (cageInfo && cageInfo.createTime) { |
| | | cageInfo.formattedCreateTime = formatTimestamp(cageInfo.createTime); |
| | |
| | | } |
| | | } catch (error) { |
| | | } |
| | | }; |
| | | }; |
| | | // 警报确认 |
| | | const handleSure = async (row) => { |
| | | try { |
| | | const confirmResult = await ElMessageBox.confirm( |
| | | t('hellow.clickmakesure'), |
| | | t('productStock.prompt'), |
| | | { |
| | | confirmButtonText: t('productStock.yes'), |
| | | cancelButtonText: t('productStock.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | const response = await request.post('/hollowGlass/productAlarmInfo/updateAlarmInfo', { |
| | | id: row.id |
| | | }) |
| | | if (response.code === 200) { |
| | | showModal.value = false; |
| | | showAlert.value = false; |
| | | |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.msg); |
| | | } |
| | | } |
| | | } catch (error) { |
| | | console.error('发生错误:', error); |
| | | } |
| | | }; |
| | | |
| | | // 警报双击弹窗 |
| | | const handleDoubleClick = () => { |
| | | showModal.value = true; |
| | | }; |
| | | const getAlertText = (alarmCode) => { |
| | | const codeMap = { |
| | | sizeSame: 'hellow.sizeSame', |
| | | idSame: 'hellow.idSame', |
| | | slotLess: 'hellow.slotLess', |
| | | overSize: 'hellow.overSize', |
| | | noGlass: 'hellow.noGlass' |
| | | }; |
| | | return alarmCode in codeMap |
| | | ? t(codeMap[alarmCode]) |
| | | : t('hellow.unknownAlert'); |
| | | }; |
| | | const rowClassName = ({ row }) => { |
| | | // 根据 enableState 设置行的 CSS 类 |
| | | return row.slot % 2 === 0 ? 'success-row' : ''; |
| | |
| | | </script> |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick"> |
| | | <div class="alert-content"> |
| | | <el-icon><WarnTriangleFilled /></el-icon> |
| | | <span class="alert-text"> |
| | | {{ alertText }} (id:{{ alertMessage }}) |
| | | </span> |
| | | </div> |
| | | <button @click="showAlert = false" class="close-btn">×</button> |
| | | </div> |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;"> |
| | | <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handlehistorical" type="primary">{{ $t('searchOrder.historicaltasks') }}</el-button> |
| | | <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handleptask()" type="warning">{{ $t('searchOrder.partask') }}</el-button> |
| | |
| | | frameborder="0" |
| | | ></iframe> |
| | | </el-dialog> |
| | | <!-- 报警弹窗 --> |
| | | <el-dialog |
| | | v-model="showModal" |
| | | width="40%" |
| | | center |
| | | > |
| | | <el-table |
| | | ref="table" |
| | | border |
| | | :data="tableDataAlert" |
| | | max-height="calc(500px - 35px)" |
| | | style="width: 100%;" |
| | | > |
| | | <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" /> |
| | | <el-table-column |
| | | :label="$t('hellow.content')" |
| | | align="center" |
| | | min-width="220" |
| | | > |
| | | <template #default="scope"> |
| | | <span> |
| | | {{ getAlertText(scope.row.alarmCode) }} |
| | | (id:{{ scope.row.alarmMessage }}) |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain |
| | | @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <!-- <el-dialog v-model="blindb" top="10vh" width="90%"> |
| | | <div style="display: flex;"> |
| | | <el-input v-model="glassId" style="margin-left: 10px;margin-bottom: 10px;width: 270px;" :placeholder="$t('searchOrder.inglassID')" /> |
| | |
| | | max-width: 100%; |
| | | margin-left: 10% |
| | | } |
| | | .global-alert-bar { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 50%; /* 水平居中关键 */ |
| | | transform: translateX(-50%); /* 水平居中关键 */ |
| | | padding: 12px 20px; |
| | | background-color: #dbdbd7; |
| | | box-shadow: 0 2px 10px rgba(0,0,0,0.2); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | z-index: 9999; |
| | | max-width: 80%; /* 防止小屏幕溢出 */ |
| | | min-width: 400px; /* 最小宽度保证 */ |
| | | } |
| | | </style> |
| | |
| | | const adjustedRects = ref([]); |
| | | const selectValuesa = reactive([]); |
| | | const timeRange = ref([]) |
| | | const tableDataAlert = ref([]) |
| | | const taskState = ref('') |
| | | const taskType = ref('') |
| | | const glassId = ref('') |
| | | const alertText = ref('') |
| | | const alertMessage = ref('') |
| | | const alarmData = ref('') |
| | | const showAlert = ref(false) |
| | | const showModal = ref(false) |
| | | const blindb = ref(false) |
| | | let socket = null; |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassTwo`; |
| | | const handleMessage = (data) => { |
| | | // 报警信息 |
| | | if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) { |
| | | const alert = data.alarmInfo[0]; |
| | | const { id, alarmMessage, ...rest } = alert[0]; |
| | | alertMessage.value = `${alarmMessage}`; |
| | | alertMessage.value = `${alert[0].alarmMessage}`; |
| | | if (alert[0].alarmCode === 'sizeSame') { |
| | | alertText.value = t('hellow.sizeSame'); |
| | | } else if (alert[0].alarmCode === 'idSame') { |
| | | alertText.value = t('hellow.idSame'); |
| | | } else if (alert[0].alarmCode === 'slotLess') { |
| | | alertText.value = t('hellow.slotLess'); |
| | | } else if (alert[0].alarmCode === 'overSize') { |
| | | alertText.value = t('hellow.overSize'); |
| | | } else if (alert[0].alarmCode === 'noGlass') { |
| | | alertText.value = t('hellow.noGlass'); |
| | | } else { |
| | | alertText.value = t('hellow.unknownAlert'); |
| | | } |
| | | alarmData.value = data; // 存储完整数据用于弹窗 |
| | | showAlert.value = true; |
| | | } |
| | | const formattedData = data.alarmInfo[0].map(record => ({ |
| | | ...record, |
| | | formattedCreateTime: formatTimestamp(record.createTime), |
| | | alarmCode: record.alarmCode, |
| | | alarmMessage: record.alarmMessage |
| | | })); |
| | | tableDataAlert.value = formattedData; |
| | | const cageInfo = data.taskMessage[0]; |
| | | if (cageInfo && cageInfo.createTime) { |
| | | cageInfo.formattedCreateTime = formatTimestamp(cageInfo.createTime); |
| | |
| | | } catch (error) { |
| | | } |
| | | }; |
| | | // 警报确认 |
| | | const handleSure = async (row) => { |
| | | try { |
| | | const confirmResult = await ElMessageBox.confirm( |
| | | t('hellow.clickmakesure'), |
| | | t('productStock.prompt'), |
| | | { |
| | | confirmButtonText: t('productStock.yes'), |
| | | cancelButtonText: t('productStock.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | const response = await request.post('/hollowGlass/productAlarmInfo/updateAlarmInfo', { |
| | | id: row.id |
| | | }) |
| | | if (response.code === 200) { |
| | | showModal.value = false; |
| | | showAlert.value = false; |
| | | |
| | | ElMessage.success(response.message); |
| | | } else { |
| | | ElMessage.error(response.msg); |
| | | } |
| | | } |
| | | } catch (error) { |
| | | console.error('发生错误:', error); |
| | | } |
| | | }; |
| | | |
| | | // 警报双击弹窗 |
| | | const handleDoubleClick = () => { |
| | | showModal.value = true; |
| | | }; |
| | | const getAlertText = (alarmCode) => { |
| | | const codeMap = { |
| | | sizeSame: 'hellow.sizeSame', |
| | | idSame: 'hellow.idSame', |
| | | slotLess: 'hellow.slotLess', |
| | | overSize: 'hellow.overSize', |
| | | noGlass: 'hellow.noGlass' |
| | | }; |
| | | return alarmCode in codeMap |
| | | ? t(codeMap[alarmCode]) |
| | | : t('hellow.unknownAlert'); |
| | | }; |
| | | const rowClassName = ({ row }) => { |
| | | // 根据 enableState 设置行的 CSS 类 |
| | | return row.slot % 2 === 0 ? 'success-row' : ''; |
| | |
| | | </script> |
| | | <template> |
| | | <div style="height: 500px;"> |
| | | <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick"> |
| | | <div class="alert-content"> |
| | | <el-icon><WarnTriangleFilled /></el-icon> |
| | | <span class="alert-text"> |
| | | {{ alertText }} (id:{{ alertMessage }}) |
| | | </span> |
| | | </div> |
| | | <button @click="showAlert = false" class="close-btn">×</button> |
| | | </div> |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;"> |
| | | <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handlehistorical" type="primary">{{ $t('searchOrder.historicaltasks') }}</el-button> |
| | | <el-button style="margin-bottom: 15px;margin-left: 20px;" @click="handleptask()" type="warning">{{ $t('searchOrder.partask') }}</el-button> |
| | |
| | | frameborder="0" |
| | | ></iframe> |
| | | </el-dialog> |
| | | <!-- 报警弹窗 --> |
| | | <el-dialog |
| | | v-model="showModal" |
| | | width="40%" |
| | | center |
| | | > |
| | | <el-table |
| | | ref="table" |
| | | border |
| | | :data="tableDataAlert" |
| | | max-height="calc(500px - 35px)" |
| | | style="width: 100%;" |
| | | > |
| | | <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" /> |
| | | <el-table-column |
| | | :label="$t('hellow.content')" |
| | | align="center" |
| | | min-width="220" |
| | | > |
| | | <template #default="scope"> |
| | | <span> |
| | | {{ getAlertText(scope.row.alarmCode) }} |
| | | (id:{{ scope.row.alarmMessage }}) |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain |
| | | @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | </template> |
| | | <style scoped> |
| | | #dt { display:block; float:left;line-height: 20px;margin-left: 100px;} |
| | |
| | | max-width: 100%; |
| | | margin-left: 10% |
| | | } |
| | | .global-alert-bar { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 50%; /* 水平居中关键 */ |
| | | transform: translateX(-50%); /* 水平居中关键 */ |
| | | padding: 12px 20px; |
| | | background-color: #dbdbd7; |
| | | box-shadow: 0 2px 10px rgba(0,0,0,0.2); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | z-index: 9999; |
| | | max-width: 80%; /* 防止小屏幕溢出 */ |
| | | min-width: 400px; /* 最小宽度保证 */ |
| | | } |
| | | </style> |
| | |
| | | const selectValuesa = reactive([]); |
| | | const carPosition = ref([]) |
| | | const ganghua = ref('') |
| | | const engineerId = ref('') |
| | | const diaodu = ref('') |
| | | const flowCardId = ref('') |
| | | const filmsId = ref('') |
| | |
| | | const getAlertText = (alarmCode) => { |
| | | const codeMap = { |
| | | sizeSame: 'hellow.sizeSame', |
| | | idSame: 'hellow.idSame' |
| | | idSame: 'hellow.idSame', |
| | | slotLess: 'hellow.slotLess', |
| | | overSize: 'hellow.overSize', |
| | | noGlass: 'hellow.noGlass' |
| | | }; |
| | | return alarmCode in codeMap |
| | | ? t(codeMap[alarmCode]) |
| | |
| | | const fetchxiang = async () => { |
| | | isLoading.value = true; |
| | | try { |
| | | const response = await request.post('/cacheVerticalGlass/bigStorageCage/querybigStorageCageDetail',{ |
| | | const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/queryVerticalSheetCageDetailsList',{ |
| | | // deviceId: page, |
| | | engineerId: engineerId.value, |
| | | filmsId: filmsId.value, |
| | | flowCardId: flowCardId.value, |
| | | glassId: glassId.value, |
| | | thickness: -1, |
| | | }) |
| | | // 模拟最小加载时间 |
| | | await new Promise(resolve => setTimeout(resolve, 300)); |
| | |
| | | const fetchxianga = async () => { |
| | | let page = window.localStorage.getItem('pagenumber') |
| | | try { |
| | | const response = await request.post('/cacheVerticalGlass/bigStorageCage/querybigStorageCageDetail',{ |
| | | const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/queryVerticalSheetCageDetailsList',{ |
| | | deviceId: page, |
| | | engineerId: engineerId.value, |
| | | filmsId: filmsId.value, |
| | | flowCardId: flowCardId.value, |
| | | glassId: glassId.value, |
| | | thickness: thickness.value ? thickness.value : -1, |
| | | }) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`; |
| | | const handleMessage = (data) => { |
| | | // 报警信息 |
| | | if (data.alarmInfo[0] !=null && data.alarmInfo[0].length > 0) { |
| | | const alert = data.alarmInfo[0] |
| | | const { id,alarmMessage, ...rest } = alert[0]; |
| | | alertMessage.value = `${alarmMessage}`; |
| | | alertMessage.value = `${alert[0].alarmMessage}`; |
| | | // 动态翻译逻辑:根据alarmCode选择翻译键 |
| | | alertText.value = alert[0].alarmCode === 'sizeSame' |
| | | ? t('hellow.sizeSame') |
| | | : t('hellow.idSame'); |
| | | if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) { |
| | | const alert = data.alarmInfo[0]; |
| | | const { id, alarmMessage, ...rest } = alert[0]; |
| | | alertMessage.value = `${alarmMessage}`; |
| | | alertMessage.value = `${alert[0].alarmMessage}`; |
| | | if (alert[0].alarmCode === 'sizeSame') { |
| | | alertText.value = t('hellow.sizeSame'); |
| | | } else if (alert[0].alarmCode === 'idSame') { |
| | | alertText.value = t('hellow.idSame'); |
| | | } else if (alert[0].alarmCode === 'slotLess') { |
| | | alertText.value = t('hellow.slotLess'); |
| | | } else if (alert[0].alarmCode === 'overSize') { |
| | | alertText.value = t('hellow.overSize'); |
| | | } else if (alert[0].alarmCode === 'noGlass') { |
| | | alertText.value = t('hellow.noGlass'); |
| | | } else { |
| | | alertText.value = t('hellow.unknownAlert'); |
| | | } |
| | | alarmData.value = data; // 存储完整数据用于弹窗 |
| | | showAlert.value = true; |
| | | } |
| | | } |
| | | const formattedData = data.alarmInfo[0].map(record => ({ |
| | | ...record, |
| | | formattedCreateTime: formatTimestamp(record.createTime), |
| | |
| | | closeWebSocket(socket); |
| | | } |
| | | }); |
| | | function getStatusType(enableState: number) { |
| | | switch (enableState) { |
| | | case 100: |
| | | return 'success'; |
| | | case 102: |
| | | return 'warning'; |
| | | } |
| | | } |
| | | function getStatusText(enableState: number) { |
| | | switch (enableState) { |
| | | case 100: |
| | | return t('searchOrder.zailong'); |
| | | case 102: |
| | | return t('searchOrder.rengongxp'); |
| | | } |
| | | } |
| | | function getStatusTypea(ishorizontal: number) { |
| | | switch (ishorizontal) { |
| | | case 0: |
| | |
| | | :title="$t('searchOrder.cageinformation')"> |
| | | <div v-loading="isLoading" class="loading-container" :element-loading-text="$t('searchOrder.loadingText')" > |
| | | <div style="display: flex;"> |
| | | <el-input v-model="engineerId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('processCard.projectnumber')"/> |
| | | <el-input v-model="glassId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inglassID')"/> |
| | | <el-input v-model="flowCardId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.incardnumber')" /> |
| | | <el-input v-model="filmsId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('film.infilms')"/> |
| | | <el-input v-model="thickness" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inthickness')"/> |
| | | <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="fetchxianga"> |
| | | {{$t('reportmanage.inquire')}}</el-button> |
| | | </div> |
| | | <el-table |
| | | :data="tableDataa" |
| | | @row-click="handleRowClick" |
| | | height="700" |
| | | @expand-change="handleExpandChange" |
| | | row-key="id" |
| | | default-expand-all |
| | | :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" |
| | | > |
| | | <el-table-column type="expand"> |
| | | <template #default="props"> |
| | | <div v-if="props.row.bigStorageCageDetails && props.row.bigStorageCageDetails.length"> |
| | | <el-table |
| | | :data="props.row.bigStorageCageDetails" |
| | | border |
| | | style="width: 98%;margin-left: 20px;" |
| | | row-key="id" |
| | | :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" |
| | | > |
| | | <!-- <el-table-column prop="menuName" label="二级菜单栏" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/> --> |
| | | <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="120"/> |
| | | <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" /> |
| | | <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" /> |
| | | <!-- <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="80" /> --> |
| | | <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" /> |
| | | <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" /> |
| | | <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" /> |
| | | <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" /> |
| | | <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('searchOrder.startstatus')" |
| | | min-width="80" |
| | | prop="state" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag :type="getStatusType(scope.row.state)"> |
| | | {{ getStatusText(scope.row.state) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" /> |
| | | <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" min-width="220"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button> |
| | | <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button> |
| | | <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button> |
| | | <el-button type="text" |
| | | :disabled="!((props.row.bigStorageCageDetails[0].state !== 102 && scope.$index == 0 ) || (props.row.bigStorageCageDetails[(scope.$index - 1)<0?0:scope.$index-1].state==102)&&(scope.row.state!=102))" |
| | | plain @click="outfil(scope.row)"> |
| | | {{ $t('searchOrder.outfilm') }} |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="id" :label="$t('searchOrder.cagetableID')" align="center" min-width="90"/> |
| | | <el-table ref="table" style="margin-top: 20px;height: 700px;width: 1770px;" :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.cagenumber')" min-width="100" /> |
| | | <el-table-column prop="engineerId" align="center" :label="$t('searchOrder.projectnumber')" min-width="100" /> |
| | | <el-table-column prop="layer" align="center" :label="$t('processCard.layer')" min-width="50" /> |
| | | <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="150" /> |
| | | <el-table-column |
| | | align="center" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remainWidth" align="center" :label="$t('searchOrder.remainingwidth')" min-width="120" /> |
| | | |
| | | <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="120"/> |
| | | <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" /> |
| | | <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" /> |
| | | <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" /> |
| | | <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" /> |
| | | <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" /> |
| | | <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" /> |
| | | <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" /> |
| | | <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="240"> |
| | | <template #default="scope"> |
| | | <!-- <el-button type="text" plain @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button> --> |
| | | <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button> |
| | | <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button> |
| | | <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button> |
| | | <!-- <el-button type="text" |
| | | :disabled="!((props.row.bigStorageCageDetails[0].state !== 102 && scope.$index == 0 ) || (props.row.bigStorageCageDetails[(scope.$index - 1)<0?0:scope.$index-1].state==102)&&(scope.row.state!=102))" |
| | | plain @click="outfil(scope.row)"> |
| | | {{ $t('searchOrder.outfilm') }} |
| | | </el-button> --> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div> |
| | | <!-- <div style="margin-top: 20px;margin-left: 40%;"> |
| New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import { Search } from "@element-plus/icons-vue" |
| | | import { ref, onMounted, reactive, computed } from "vue" |
| | | import { useRouter } from "vue-router" |
| | | import { useI18n } from 'vue-i18n' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const showAlert = ref(true) |
| | | const showModal = ref(false) |
| | | // const tableData = ref([]) |
| | | const tableData = [ |
| | | { |
| | | alarmStartTime: '2025-11-03 8:25:05',//报警开始时间 |
| | | alarmEndTime: '2025-11-03 9:25:05',//报警结束时间 |
| | | equipment: '上片1号机',//设备 |
| | | content: '未收到请求',//内容 |
| | | confirmer: 'admin',//确认人 |
| | | }, |
| | | { |
| | | alarmStartTime: '2025-11-03 10:05:05', |
| | | alarmEndTime: '2025-11-03 10:08:05', |
| | | equipment: '卧式理片笼', |
| | | content: '未获取到玻璃对应尺寸信息', |
| | | confirmer: 'admin', |
| | | }, |
| | | { |
| | | alarmStartTime: '2025-11-03 16:30:15', |
| | | alarmEndTime: '2025-11-03 16:35:05', |
| | | equipment: '钢化大理片笼', |
| | | content: '进片玻璃ID与笼内玻璃ID相同', |
| | | confirmer: 'admin', |
| | | }, |
| | | { |
| | | alarmStartTime: '2025-11-03 20:30:15', |
| | | alarmEndTime: '2025-11-03 22:30:15', |
| | | equipment: '中空大理片笼', |
| | | content: '笼内存在相同规格的玻璃', |
| | | confirmer: 'admin', |
| | | }, |
| | | ] |
| | | const tableDataAlert = [ |
| | | { |
| | | formattedCreateTime: '2025-11-03 8:25:05', |
| | | }, |
| | | ] |
| | | // 警报双击弹窗 |
| | | const handleDoubleClick = () => { |
| | | showModal.value = true; |
| | | }; |
| | | const handleSure = async (row) => { |
| | | try { |
| | | const confirmResult = await ElMessageBox.confirm( |
| | | t('hellow.clickmakesure'), |
| | | t('productStock.prompt'), |
| | | { |
| | | confirmButtonText: t('productStock.yes'), |
| | | cancelButtonText: t('productStock.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ); |
| | | if (confirmResult === 'confirm') { |
| | | showModal.value = false; |
| | | showAlert.value = false; |
| | | |
| | | ElMessage.success(); |
| | | } |
| | | } catch (error) { |
| | | console.error('发生错误:', error); |
| | | } |
| | | }; |
| | | onMounted(() => { |
| | | }); |
| | | </script> |
| | | <template> |
| | | <div> |
| | | <div v-if="showAlert" class="global-alert-bar" @dblclick="handleDoubleClick"> |
| | | <div class="alert-content"> |
| | | <el-icon><WarnTriangleFilled /></el-icon> |
| | | <span class="alert-text"> |
| | | 笼内存在相同规格的玻璃 (id:25103114002002) |
| | | </span> |
| | | </div> |
| | | <button @click="showAlert = false" class="close-btn">×</button> |
| | | </div> |
| | | <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;"> |
| | | <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> |
| | | <el-table height="780" ref="table" |
| | | :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="alarmStartTime" align="center" :label="$t('delivery.alarmStartTime')" min-width="180" /> |
| | | <el-table-column prop="alarmEndTime" align="center" :label="$t('delivery.alarmEndTime')" min-width="180" /> |
| | | <el-table-column prop="equipment" align="center" :label="$t('delivery.equipment')" min-width="180" /> |
| | | <el-table-column prop="content" align="center" :label="$t('delivery.content')" min-width="180" /> |
| | | <el-table-column prop="confirmer" align="center" :label="$t('delivery.confirmer')" min-width="180" /> |
| | | </el-table> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | |
| | | <el-dialog |
| | | v-model="showModal" |
| | | width="40%" |
| | | center |
| | | > |
| | | <el-table |
| | | ref="table" |
| | | border |
| | | :data="tableDataAlert" |
| | | max-height="calc(500px - 35px)" |
| | | style="width: 100%;" |
| | | > |
| | | <el-table-column prop="formattedCreateTime" align="center" :label="$t('film.createtime')" min-width="100" /> |
| | | <el-table-column |
| | | :label="$t('hellow.content')" |
| | | align="center" |
| | | min-width="220" |
| | | > |
| | | <template #default="scope"> |
| | | <span> |
| | | 笼内存在相同规格的玻璃 (id:25103114002002) |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="100"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain |
| | | @click="handleSure(scope.row)">{{ $t('basicData.yes') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | </template> |
| | | <style scoped> |
| | | #dt { display:block; float:left;line-height: 20px;margin-left: 100px;} |
| | | #dta { display:block; float:left;line-height: 20px;margin-left: 80%;} |
| | | #dialog-footer{ |
| | | text-align: center; |
| | | margin-top: -15px; |
| | | } |
| | | #message{ |
| | | text-align: center; |
| | | align-items: center; |
| | | color: black; |
| | | width: 200px; |
| | | height: 100px; |
| | | background-color: #337ecc; |
| | | margin-left: 28%; |
| | | } |
| | | #awatch{ |
| | | height: 460px; |
| | | } |
| | | |
| | | .global-alert-bar { |
| | | position: fixed; |
| | | top: 0; |
| | | left: 50%; /* 水平居中关键 */ |
| | | transform: translateX(-50%); /* 水平居中关键 */ |
| | | padding: 12px 20px; |
| | | background-color: #dbdbd7; |
| | | box-shadow: 0 2px 10px rgba(0,0,0,0.2); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | z-index: 9999; |
| | | max-width: 80%; /* 防止小屏幕溢出 */ |
| | | min-width: 400px; /* 最小宽度保证 */ |
| | | } |
| | | </style> |
| | |
| | | const currentAlarm = ref<any>(null) |
| | | const tableDataAlert = ref([]) |
| | | const alertText = ref('') |
| | | |
| | | const engineerId = ref('') |
| | | const ganghua = ref('') |
| | | const diaodu = ref('') |
| | | const hollowPriority = ref('') |
| | |
| | | const glassType = ref('') |
| | | const layer = ref('') |
| | | const filmsId = ref('') |
| | | const thickness = ref('') |
| | | const adjust = ref([]); |
| | | const adjusta = ref([]); |
| | | const adjustedRects = ref([]); |
| | |
| | | // 理片笼信息 |
| | | const fetchxiang = async () => { |
| | | try { |
| | | const response = await request.post('/hollowGlass/hollowBigStorageCage/queryHollowBigStorageCageDetail',{ |
| | | const response = await request.post('/hollowGlass/hollowBigStorageCageDetails/queryVerticalSheetCageDetailsList',{ |
| | | // deviceId: page, |
| | | engineerId: engineerId.value, |
| | | filmsId: filmsId.value, |
| | | flowCardId: flowCardId.value, |
| | | glassId: glassId.value, |
| | | thickness: -1, |
| | | }) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | |
| | | const fetchxianga = async () => { |
| | | let page = window.localStorage.getItem('pagenumber') |
| | | try { |
| | | const response = await request.post('/hollowGlass/hollowBigStorageCage/queryHollowBigStorageCageDetail',{ |
| | | const response = await request.post('/hollowGlass/hollowBigStorageCageDetails/queryVerticalSheetCageDetailsList',{ |
| | | deviceId: page, |
| | | engineerId: engineerId.value, |
| | | filmsId: filmsId.value, |
| | | flowCardId: flowCardId.value, |
| | | glassId: glassId.value, |
| | | thickness: thickness.value ? thickness.value : -1, |
| | | }) |
| | | if (response.code === 200) { |
| | | ElMessage.success(response.message); |
| | |
| | | const socketUrl = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/hollowGlassMessage`; |
| | | const handleMessage = (data) => { |
| | | // 报警信息 |
| | | if (data.alarmInfo[0] !=null && data.alarmInfo[0].length > 0) { |
| | | const alert = data.alarmInfo[0] |
| | | const { id,alarmMessage, ...rest } = alert[0]; |
| | | alertMessage.value = `${alarmMessage}`; |
| | | alertMessage.value = `${alert[0].alarmMessage}`; |
| | | // 动态翻译逻辑:根据alarmCode选择翻译键 |
| | | alertText.value = alert[0].alarmCode === 'sizeSame' |
| | | ? t('hellow.sizeSame') |
| | | : t('hellow.idSame'); |
| | | if (data.alarmInfo[0] != null && data.alarmInfo[0].length > 0) { |
| | | const alert = data.alarmInfo[0]; |
| | | const { id, alarmMessage, ...rest } = alert[0]; |
| | | alertMessage.value = `${alarmMessage}`; |
| | | alertMessage.value = `${alert[0].alarmMessage}`; |
| | | if (alert[0].alarmCode === 'sizeSame') { |
| | | alertText.value = t('hellow.sizeSame'); |
| | | } else if (alert[0].alarmCode === 'idSame') { |
| | | alertText.value = t('hellow.idSame'); |
| | | } else if (alert[0].alarmCode === 'slotLess') { |
| | | alertText.value = t('hellow.slotLess'); |
| | | } else if (alert[0].alarmCode === 'overSize') { |
| | | alertText.value = t('hellow.overSize'); |
| | | } else if (alert[0].alarmCode === 'noGlass') { |
| | | alertText.value = t('hellow.noGlass'); |
| | | } else { |
| | | alertText.value = t('hellow.unknownAlert'); |
| | | } |
| | | alarmData.value = data; // 存储完整数据用于弹窗 |
| | | showAlert.value = true; |
| | | } |
| | | } |
| | | const formattedData = data.alarmInfo[0].map(record => ({ |
| | | ...record, |
| | | formattedCreateTime: formatTimestamp(record.createTime), |
| | |
| | | const getAlertText = (alarmCode) => { |
| | | const codeMap = { |
| | | sizeSame: 'hellow.sizeSame', |
| | | idSame: 'hellow.idSame' |
| | | idSame: 'hellow.idSame', |
| | | slotLess: 'hellow.slotLess', |
| | | overSize: 'hellow.overSize', |
| | | noGlass: 'hellow.noGlass' |
| | | }; |
| | | return alarmCode in codeMap |
| | | ? t(codeMap[alarmCode]) |
| | |
| | | const minutes = String(date.getMinutes()).padStart(2, '0'); // 补零(如果需要显示时间) |
| | | const seconds = String(date.getSeconds()).padStart(2, '0'); // 补零(如果需要显示时间) |
| | | return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; |
| | | } |
| | | function getStatusType(enableState: number) { |
| | | switch (enableState) { |
| | | case 100: |
| | | return 'success'; |
| | | case 102: |
| | | return 'warning'; |
| | | } |
| | | } |
| | | function getStatusText(enableState: number) { |
| | | switch (enableState) { |
| | | case 100: |
| | | return t('searchOrder.zailong'); |
| | | case 102: |
| | | return t('searchOrder.rengongxp'); |
| | | } |
| | | } |
| | | function getcasOnea(isSame) { |
| | | switch (isSame) { |
| | |
| | | <!-- 理片笼信息 --> |
| | | <el-dialog v-model="dialogFormVisiblea" top="2vh" width="97%" :title="$t('searchOrder.cageinformation')"> |
| | | <div style="display: flex;"> |
| | | <el-input v-model="flowCardId" style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.incardnumber')" /> |
| | | <el-input v-model="filmsId" style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('film.infilms')"/> |
| | | <el-input v-model="engineerId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('processCard.projectnumber')"/> |
| | | <el-input v-model="glassId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inglassID')"/> |
| | | <el-input v-model="flowCardId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.incardnumber')" /> |
| | | <el-input v-model="filmsId" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('film.infilms')"/> |
| | | <el-input v-model="thickness" clearable style="margin-left: 10px;margin-bottom: 10px;width: 240px;" :placeholder="$t('searchOrder.inthickness')"/> |
| | | <el-button type="primary" style="margin-left: 10px;margin-bottom: 10px;" @click="fetchxianga"> |
| | | {{$t('reportmanage.inquire')}}</el-button> |
| | | </div> |
| | | <el-table |
| | | :data="tableDataa" |
| | | @row-click="handleRowClick" |
| | | height="700" |
| | | row-key="id" |
| | | default-expand-all |
| | | :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" |
| | | > |
| | | <el-table-column type="expand"> |
| | | <template #default="props"> |
| | | <div v-if="props.row.hollowBigStorageCageDetails && props.row.hollowBigStorageCageDetails.length"> |
| | | <el-table |
| | | :data="props.row.hollowBigStorageCageDetails" |
| | | border |
| | | style="width: 98%;margin-left: 20px;" |
| | | row-key="id" |
| | | :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" |
| | | > |
| | | <!-- <el-table-column prop="menuName" label="二级菜单栏" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/> --> |
| | | <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="130"/> |
| | | <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" /> |
| | | <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" /> |
| | | <!-- <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="80" /> --> |
| | | <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" /> |
| | | <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" /> |
| | | <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" /> |
| | | <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" /> |
| | | <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('searchOrder.startstatus')" |
| | | min-width="80" |
| | | prop="state" |
| | | > |
| | | <template #default="scope"> |
| | | <el-tag :type="getStatusType(scope.row.state)"> |
| | | {{ getStatusText(scope.row.state) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" /> |
| | | <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" min-width="220"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button> |
| | | <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button> |
| | | <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="id" :label="$t('searchOrder.cagetableID')" align="center" min-width="100"/> |
| | | <el-table ref="table" style="margin-top: 20px;height: 700px;width: 1770px;" :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> |
| | | <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.cagenumber')" min-width="150" /> |
| | | <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="150" /> |
| | | <el-table-column prop="engineerId" align="center" :label="$t('searchOrder.projectnumber')" min-width="100" /> |
| | | <el-table-column prop="layer" align="center" :label="$t('processCard.layer')" min-width="80" /> |
| | | <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="120" /> |
| | | <el-table-column |
| | | align="center" |
| | | :label="$t('searchOrder.startstatus')" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="remainWidth" align="center" :label="$t('searchOrder.remainingwidth')" min-width="120" /> |
| | | |
| | | <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center"> |
| | | <template #default="scope"> |
| | | <el-button type="text" plain @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="130"/> |
| | | <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" /> |
| | | <el-table-column prop="filmsId" align="center" :label="$t('searchOrder.coatingtypes')" min-width="80" /> |
| | | <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" /> |
| | | <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" /> |
| | | <el-table-column prop="thickness" align="center" :label="$t('searchOrder.thickness')" min-width="80" /> |
| | | <el-table-column prop="temperingLayoutId" align="center" :label="$t('searchOrder.layoutID')" min-width="100" /> |
| | | <el-table-column prop="temperingFeedSequence" align="center" :label="$t('searchOrder.picturesequence')" min-width="120" /> |
| | | <el-table-column prop="gap" align="center" :label="$t('searchOrder.glassgaps')" min-width="80" /> |
| | | <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="240"> |
| | | <template #default="scope"> |
| | | <!-- <el-button type="text" plain @click="handleBindRack(scope.row)">{{ $t('searchOrder.add') }}</el-button> --> |
| | | <el-button type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button> |
| | | <el-button type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button> |
| | | <el-button type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div> |
| | | </div> |