From 56fab901b298857ff4985b7429ef843c9a9d1471 Mon Sep 17 00:00:00 2001 From: wangfei <3597712270@qq.com> Date: 星期三, 28 八月 2024 16:20:02 +0800 Subject: [PATCH] 钢化模块打印功能,新增表格字段 --- UI-Project/src/views/PurchaseReturn/purchaseReturn.vue | 957 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 851 insertions(+), 106 deletions(-) diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue index da044de..fe85ccf 100644 --- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue +++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue @@ -1,168 +1,909 @@ -<script setup> -import {Search} from "@element-plus/icons-vue"; +<script setup lang="ts"> +import {Search ,Delete, Upload,Edit} from "@element-plus/icons-vue"; import {reactive} from "vue"; -import {useRouter} from "vue-router" import request from "@/utils/request" -// import { ref } from 'vue' -import { ref, onMounted, onBeforeUnmount } from 'vue'; +import { ref, onMounted, onBeforeUnmount,nextTick } from 'vue'; import { WebSocketHost ,host} from '@/utils/constants' +import { ElMessage, ElMessageBox } from 'element-plus' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; -const dialogFormVisible = ref(true) -const dialogFormVisiblea = ref(false) + import { useI18n } from 'vue-i18n' + import { useRouter } from 'vue-router' + const { t } = useI18n() + let language = ref(localStorage.getItem('lang') || 'zh') +const dialogFormVisible = ref(false) +const dialogFormVisiblea = ref(true) const dialogFormVisibleb = ref(false) -const width = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 -const height = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 -const adjustedRects = ref([]); +const dialogFormVisiblec = ref(false) +const blind1 = ref(false) +const blind2 = ref(false) +const blinda = ref(false) +const blindb = ref(false) +const dialogVisible = ref(false) +const width = ref(); +const height = ref(); +const currentRect = ref(null); +const canSelectProject1 = ref(true); +const canSelectProject2 = ref(true); +const canSelectProjecta = ref(true); +const cantakea = ref(true); +const cantakeb = ref(true); +const canona = ref(true); +const canonb = ref(true); +const canSelectProjectb = ref(true); +const adjustedRects1 = ref([]); +const adjustedRects2 = ref([]); const adjustedRectsa = ref([]); const adjustedRectsb = ref([]); -// 杩涚倝涓� - -const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; -// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺 - -const handleMessage = (data) => { - // 鏇存柊 tableData 鐨勬暟鎹� - adjustedRects.value = data.intoGlass[0].map(rect => ({ - ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3 - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - })); - console.log(data.intoGlass[0]); - adjustedRectsa.value = data.waitingGlass[0].map(rect => ({ - ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3 - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - state: rect.state - })); - - adjustedRectsb.value = data.outGlass[0].map(rect => ({ - ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3 - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - state: rect.state - })); +const tableData = ref([]) +const engineerId = ref('') +const router = useRouter() +const currentGlassId = ref(null); +const currenttemperingFeedSequence = ref(null); +onMounted(async () => { + try { + const response = await request.post('/loadGlass/damage/selectDamagePrint', { + type: 9, + workingProcedure: '閽㈠寲', + }) + if (response.code === 200) { + tableData.value = response.data + console.log(response.data); + } else { + ElMessage.warning(res.msg) + } + } catch (error) { + // console.error('Error fetching rects :', error); + } +}); +const selectReportData = async () => { + let postData = { + type: 9, + workingProcedure: '閽㈠寲', + ...(engineerId.value !== '' && { engineerId: engineerId.value }), + }; + const response = await request.post("/loadGlass/damage/selectDamagePrint", postData) + if (response.code === 200) { + tableData.value = response.data; + ElMessage.success(response.message); + } else { + ElMessage.error(response.message); + } }; +const printing = async () => { + let postData = { + type: 9, + workingProcedure: '閽㈠寲', + ...(engineerId.value !== '' && { engineerId: engineerId.value }), + }; + console.log(engineerId.value); + + const response = await request.post("/loadGlass/damage/selectDamagePrintDetails", postData) + if (response.code === 200) { + dialogVisible.value = true; + tableData.value = response.data; + await nextTick(); + window.print(); +} else { + ElMessage.error(response.message); + } +}; +const printTable = () => { + // 杩欓噷鍙互娣诲姞涓�浜汣SS鏍峰紡鏉ヤ紭鍖栨墦鍗版晥鏋� + // 渚嬪锛屽彲浠ユ坊鍔犱竴涓殣钘忕殑鎵撳嵃鏍峰紡琛� + window.print(); +}; +const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; +const handleMessage = (data) => { + // 杩涚倝涓彸 + if (data.intoGlass2 && data.intoGlass2.length > 0) { + // 鎻愬彇鏂扮殑鐭╁舰ID + const newGlassIds = new Set(data.intoGlass2[0].map(rect => rect.glassId)); + // 杩囨护鍑哄凡瀛樺湪鐨勭煩褰� + const existingRects = adjustedRects2.value.filter(rect => newGlassIds.has(rect.glassId)); + // 璁$畻鏂扮殑鐭╁舰 + const newRects = data.intoGlass2[0].map(rect => { + const scaleFactor = 794.67/5087; + const scaleFactorY = 430/2800; + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;; + let newX = rect.yCoordinate; + if (rect.width < rect.height) { + widtha = rect.height; + heighta = rect.width; + }else { + widtha = rect.width; + heighta = rect.height; + } + if (rect.angle === 0) { + adjustedWidth = widtha * scaleFactor; + adjustedHeight = heighta * scaleFactorY; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + newX = 5087 - (rect.yCoordinate + widtha); + } else { + adjustedWidth = heighta * scaleFactor; + adjustedHeight = widtha * scaleFactorY; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + newX = 5087 - (rect.yCoordinate + heighta); + } + return { + ...rect, + xcoordinate: newX * scaleFactor, + ycoordinate: rect.xCoordinate * scaleFactorY, + width: adjustedWidth, + height: adjustedHeight, + widtha: rect.width, + heighta: rect.height, + } + }); + // 鍚堝苟鏂版棫鐭╁舰锛屽苟淇濈暀 isActive 鐘舵�� + adjustedRects2.value = existingRects.map(oldRect => { + const newRect = newRects.find(r => r.glassId === oldRect.glassId); + if (newRect) { + return { ...oldRect, ...newRect, isActive: oldRect.isActive }; + } + return oldRect; // 濡傛灉鏃х煩褰㈠湪鏂版暟鎹腑涓嶅瓨鍦紝浣嗕繚鐣欏湪newGlassIds涓紝鍒欎繚鐣欏師鏍� + }).concat(newRects.filter(r => !existingRects.some(o => o.glassId === r.glassId))); + } + else if (data.intoGlass2 == null) { + adjustedRects2.value = [] + } + // 杩涚倝涓乏 + if (data.intoGlass && data.intoGlass.length > 0) { + const newGlassIds = new Set(data.intoGlass[0].map(rect => rect.glassId)); + const existingRects = adjustedRects1.value.filter(rect => newGlassIds.has(rect.glassId)); + const newRects = data.intoGlass[0].map(rect => { + const scaleFactor = 810.89/5087; + const scaleFactorY = 430/2800; + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;; + let newX = rect.yCoordinate; + if (rect.width < rect.height) { + widtha = rect.height; + heighta = rect.width; + }else { + widtha = rect.width; + heighta = rect.height; + } + if (rect.angle === 0) { + adjustedWidth = widtha * scaleFactor; + adjustedHeight = heighta * scaleFactorY; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + newX = 5087 - (rect.yCoordinate + widtha); + } else { + adjustedWidth = heighta * scaleFactor; + adjustedHeight = widtha * scaleFactorY; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + newX = 5087 - (rect.yCoordinate + heighta); + } + return { + ...rect, + xcoordinate: newX * scaleFactor, + ycoordinate: rect.xCoordinate * scaleFactorY, + width: adjustedWidth, + height: adjustedHeight, + widtha: rect.width, + heighta: rect.height, + } + }); + // 鍚堝苟鏂版棫鐭╁舰锛屽苟淇濈暀 isActive 鐘舵�� + adjustedRects1.value = existingRects.map(oldRect => { + const newRect = newRects.find(r => r.glassId === oldRect.glassId); + if (newRect) { + return { ...oldRect, ...newRect, isActive: oldRect.isActive }; + } + return oldRect; // 濡傛灉鏃х煩褰㈠湪鏂版暟鎹腑涓嶅瓨鍦紝浣嗕繚鐣欏湪newGlassIds涓紝鍒欎繚鐣欏師鏍� + }).concat(newRects.filter(r => !existingRects.some(o => o.glassId === r.glassId))); + } + else if (data.overGlass == null) { + adjustedRects1.value = [] + } + if (data.waitingGlass && data.waitingGlass.length > 0) { + const newGlassIds = new Set(data.waitingGlass[0].map(rect => rect.glassId)); + const existingRects = adjustedRectsa.value.filter(rect => newGlassIds.has(rect.glassId)); + const newRects = data.waitingGlass[0].map(rect => { + const scaleFactor = 1390/5190; + const scaleFactorY = 750/2800; + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;; + let newX = rect.yCoordinate; + if (rect.width < rect.height) { + widtha = rect.height; + heighta = rect.width; + }else { + widtha = rect.width; + heighta = rect.height; + } + if (rect.angle === 0) { + adjustedWidth = widtha * scaleFactor; + adjustedHeight = heighta * scaleFactorY; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + newX = 5190 - (rect.yCoordinate + widtha); + } else { + adjustedWidth = heighta * scaleFactor; + adjustedHeight = widtha * scaleFactorY; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + newX = 5190 - (rect.yCoordinate + heighta); + } + return { + ...rect, + x: newX * scaleFactor, + y: rect.xCoordinate * scaleFactorY, + width: adjustedWidth, + height: adjustedHeight, + widtha: rect.width, + heighta: rect.height, + } + }); + // 鍚堝苟鏂版棫鐭╁舰锛屽苟淇濈暀 isActive 鐘舵�� + adjustedRectsa.value = existingRects.map(oldRect => { + const newRect = newRects.find(r => r.glassId === oldRect.glassId); + if (newRect) { + return { ...oldRect, ...newRect, isActive: oldRect.isActive }; + } + return oldRect; // 濡傛灉鏃х煩褰㈠湪鏂版暟鎹腑涓嶅瓨鍦紝浣嗕繚鐣欏湪newGlassIds涓紝鍒欎繚鐣欏師鏍� + }).concat(newRects.filter(r => !existingRects.some(o => o.glassId === r.glassId))); + } + else if (data.waitingGlass == null) { + adjustedRectsa.value = [] + } + if (data.outGlass && data.outGlass.length > 0) { + // 鎻愬彇鏂扮殑鐭╁舰ID + const newGlassIds = new Set(data.outGlass[0].map(rect => rect.glassId)); + // 杩囨护鍑哄凡瀛樺湪鐨勭煩褰� + const existingRects = adjustedRectsb.value.filter(rect => newGlassIds.has(rect.glassId)); + // 璁$畻鏂扮殑鐭╁舰 + const newRects = data.outGlass[0].map(rect => { + const scaleFactor = 1390/5190; + const scaleFactory = 750/2800; + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta,newY; + let newX = rect.yCoordinate; + if (rect.width < rect.height) { + widtha = rect.height; + heighta = rect.width; + }else { + widtha = rect.width; + heighta = rect.height; + } + if (rect.angle === 0) { + adjustedWidth = widtha * scaleFactor; + adjustedHeight = heighta * scaleFactory; + // adjustedWidtha = widtha; + // adjustedHeighta = heighta; + // newX = 5190 - (rect.yCoordinate + widtha); + newY = 2800 - (rect.xCoordinate + heighta); + } else { + adjustedWidth = heighta * scaleFactor; + adjustedHeight = widtha * scaleFactory; + // adjustedWidtha = heighta; + // adjustedHeighta = widtha; + // newX = 5190 - (rect.yCoordinate + heighta); + newY = 2800 - (rect.xCoordinate + widtha); + } + return { + ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� + x: newX * scaleFactor, + y: newY * scaleFactory, + width: adjustedWidth, + height: adjustedHeight, + widtha: rect.width, + heighta: rect.height, + } + }); + + // 鍚堝苟鏂版棫鐭╁舰锛屽苟淇濈暀 isActive 鐘舵�� + adjustedRectsb.value = existingRects.map(oldRect => { + const newRect = newRects.find(r => r.glassId === oldRect.glassId); + if (newRect) { + return { ...oldRect, ...newRect, isActive: oldRect.isActive }; + } + return oldRect; // 濡傛灉鏃х煩褰㈠湪鏂版暟鎹腑涓嶅瓨鍦紝浣嗕繚鐣欏湪newGlassIds涓紝鍒欎繚鐣欏師鏍� + }).concat(newRects.filter(r => !existingRects.some(o => o.glassId === r.glassId))); + } + else if (data.outGlass == null) { + adjustedRectsb.value = [] + } +}; onMounted(() => { - // fetchFlowCardId(); - // fetchTableData(); // 鑾峰彇鏁版嵁 initializeWebSocket(socketUrl, handleMessage); }); - +function updateRectColorsa() { + adjustedRectsa.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 8; + } + }); +} +function updateoutColorsa() { + adjustedRectsa.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 9; + } + }); +} +function updateonColorsa() { + adjustedRectsa.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 1; + } + }); +} +function updateRectColorsb() { + adjustedRectsb.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 8; + } + }); +} +function updateoutColorsb() { + adjustedRectsb.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 9; + } + }); +} +function updateonColorsb() { + adjustedRectsb.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 3; + } + }); +} +function updateRectColors1() { + adjustedRects1.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 8; + } + }); +} +function updateRectColors2() { + adjustedRects2.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 8; + } + }); +} +function getRectColora(state) { + switch (state) { + case 0: + return '#7AC5CD'; + case 1: + return '#95d475'; + case -1: + return '#CDAF95'; + case 8: + return '#911005'; + case 9: + return '#4682B4'; + } +} +function getRectColorb(state) { + switch (state) { + case 3: + return '#eebe77'; + case 4: + return '#CD6090'; + case 8: + return '#911005'; + case 9: + return '#4682B4'; + } +} +function showDialog1(rect) { + const index = adjustedRects1.value.findIndex(r => r.glassId === rect.glassId); + if (index !== -1) { + adjustedRects1.value[index].isActive = true; + } + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blind1.value = true; + currentRect.value = rect; + if (currentRect.value.state == 8) { + canSelectProject1.value = false; + } else if (currentRect.value.state !== 8) { + canSelectProject1.value = true; + } +} +function showDialog2(rect) { + const index = adjustedRects2.value.findIndex(r => r.glassId === rect.glassId); + if (index !== -1) { + adjustedRects2.value[index].isActive = true; + } + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blind2.value = true; + currentRect.value = rect; + if (currentRect.value.state == 8) { + canSelectProject2.value = false; + } else if (currentRect.value.state !== 8) { + canSelectProject2.value = true; + } +} +function showDialoga(rect) { + const index = adjustedRectsa.value.findIndex(r => r.glassId === rect.glassId); + if (index !== -1) { + adjustedRectsa.value[index].isActive = true; + } + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blinda.value = true; + currentRect.value = rect; + if (currentRect.value.state == 8) { + canSelectProjecta.value = false; + } else if (currentRect.value.state !== 8) { + canSelectProjecta.value = true; + } + if (currentRect.value.state == 9) { + cantakea.value = false; + } else if (currentRect.value.state !== 9) { + cantakea.value = true; + } + if (currentRect.value.state == 1) { + canona.value = false; + } else if (currentRect.value.state == 0) { + canona.value = true; + } +} +function showDialogb(rect) { + const index = adjustedRectsb.value.findIndex(r => r.glassId === rect.glassId); + if (index !== -1) { + adjustedRectsb.value[index].isActive = true; + } + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blindb.value = true; + currentRect.value = rect; + if (currentRect.value.state == 8) { + canSelectProjectb.value = false; + } else if (currentRect.value.state !== 8) { + canSelectProjectb.value = true; + } + if (currentRect.value.state == 9) { + cantakeb.value = false; + } else if (currentRect.value.state !== 9) { + cantakeb.value = true; + } + if (currentRect.value.state == 3) { + canonb.value = false; + } else if (currentRect.value.state !== 3) { + canonb.value = true; + } +} + const handleDialogClose1 = () => { + adjustedRects1.value.forEach(rect => { + rect.isActive = false; + }); + blind1.value = false; +}; + const handleDialogClose2 = () => { + adjustedRects2.value.forEach(rect => { + rect.isActive = false; + }); + blind2.value = false; +}; + const handleDialogClosea = () => { + adjustedRectsa.value.forEach(rect => { + rect.isActive = false; + }); + blinda.value = false; +}; + const handleDialogCloseb = () => { + adjustedRectsb.value.forEach(rect => { + rect.isActive = false; + }); + blindb.value = false; +}; +// 鐮存崯 +const handleDamage1 = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + // temperingFeedSequence: currenttemperingFeedSequence.value, + line: 4001, + status: 8, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blind1.value = false; + updateRectColors1(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} +const handleDamage2 = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 8, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blind2.value = false; + updateRectColors2(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} +// 杩涚倝鍓嶇牬鎹� +const handleDamagea = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 8, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blinda.value = false; + updateRectColorsa(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} +// 杩涚倝鍓嶄汉宸ユ嬁璧� +const takeouta = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 9, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blinda.value = false; + updateoutColorsa(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} +// 杩涚倝鍓嶆斁鍥� +const takeona = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 1, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blinda.value = false; + updateonColorsa(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} +// 宸插嚭鐐夌牬鎹� +const handleDamageb = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 8, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blindb.value = false; + updateRectColorsb(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + // console.error(error); + } +} +// 宸插嚭鐐変汉宸ユ嬁璧� +const takeoutb = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 9, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blindb.value = false; + updateoutColorsb(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + // console.error(error); + } +} +// 宸插嚭鐐夋斁鍥� +const takeonb = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + line: 4001, + status: 3, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success('鎴愬姛锛�'); + blindb.value = false; + updateonColorsb(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + // console.error(error); + } +} onBeforeUnmount(() => { console.log("鍏抽棴浜�") closeWebSocket(); }); </script> - -<template> +<template> <div style="margin-top: 10px;"> - <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">杩涚倝涓�</el-button> - <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >杩涚倝鍓�</el-button> - <el-button id="searchButton" type="success" @click="dialogFormVisibleb = true;dialogFormVisible = false;dialogFormVisiblea = false">宸插嚭鐐夌幓鐠�</el-button> + <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;dialogFormVisiblec = false;" >{{ $t('processCard.beforefurnace') }}</el-button> + <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;dialogFormVisiblec = false;">{{ $t('processCard.intofurnace') }}</el-button> + <el-button id="searchButton" type="success" @click="dialogFormVisibleb = true;dialogFormVisible = false;dialogFormVisiblea = false;dialogFormVisiblec = false;">{{ $t('processCard.outfurnace') }}</el-button> + <el-button id="searchButton" type="info" @click="dialogFormVisiblec = true;dialogFormVisibleb = false;dialogFormVisible = false;dialogFormVisiblea = false">{{ $t('processCard.print') }}</el-button> <div v-if="dialogFormVisible" > - <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 700px;" v-loading="loading"> -<div style="width: 49%;float: left;background-color: #f4f4f5;height: 650px;"> - <el-scrollbar height="630px"> - <div v-for="(group, groupId) in groupedRects" :key="groupId" style="position: relative;"> - <div style="position: relative;width: 1400px;"> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading"> +<div style="width: 50%;float: left;background-color: #f4f4f5;height: 430px;"> + <div v-if="adjustedRects1.length > 0"> + <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> + <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRects1[0].engineerId }}-{{ adjustedRects1[0].temperingLayoutId }} </div> + <el-scrollbar height="430px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div - v-for="(rect, index) in adjustedRects" + v-for="(rect, index) in adjustedRects1" :key="index" - class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" + @click="showDialog1(rect)" + class="rect" + :style="{ position: 'absolute', + top: `${rect.ycoordinate}px`, + left: `${rect.xcoordinate}px`, + width: `${rect.width}px`, + height: `${rect.height}px`, + backgroundColor: rect.isActive ? '#ADFF2F' : rect.state === 8 ? '#911005' : 'lightblue' }" > <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.flowCardId }}</div> + <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> - </div> - </div> + </div> </div> </el-scrollbar> + </div> </div> -<div style="width: 49%;float: right;background-color: #f4f4f5;height: 650px;"> - <el-scrollbar height="630px"> - <div style="position: relative;width: 1400px;"> +<div style="width: 49%;float: right;background-color: #f4f4f5;height: 430px;"> + <div v-if="adjustedRects2.length > 0"> + <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRects2[0].engineerId }}-{{ adjustedRects2[0].temperingLayoutId }} </div> + <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> + <el-scrollbar height="430px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div - v-for="(rect, index) in adjustedRects" - :key="index" - class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" - > + v-for="(rect, index) in adjustedRects2" + :key="index" + @click="showDialog2(rect)" + class="rect" + :style="{ position: 'absolute', + top: `${rect.ycoordinate}px`, + left: `${rect.xcoordinate}px`, + width: `${rect.width}px`, + height: `${rect.height}px`, + backgroundColor: rect.isActive ? '#ADFF2F' : rect.state === 8 ? '#911005' : 'lightblue' }" + > <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.flowCardId }}</div> + <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> - </div> + </div> </div> </el-scrollbar> + </div> </div> - </el-card> </div> <div v-if="dialogFormVisiblea"> - <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> - <el-scrollbar height="630px"> - <div style="position: relative;width: 1400px;"> + <!-- 杩涚倝鍓� --> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 800px;" v-loading="loading"> + <div v-if="adjustedRectsa.length > 0"> + <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRectsa[0].engineerId }}-{{ adjustedRectsa[0].temperingLayoutId }} </div> + <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplaya }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> + <el-scrollbar height="750px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRectsa" :key="index" + @click="showDialoga(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, + :style="{ position: 'absolute', top: `${rect.y}px`, left: `${rect.x}px`, width: `${rect.width}px`, height: `${rect.height}px`, - backgroundColor: rect.state === 0 ? '#dedfe0' : '#d1edc4' }"> - <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + backgroundColor: rect.isActive ? '#ADFF2F' : getRectColora(rect.state) }"> + <div class="centered-text"> + <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.flowCardId }}</div> + <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </el-card> </div> <div v-if="dialogFormVisibleb"> - <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> - <el-scrollbar height="630px"> - <div style="position: relative;width: 1400px;"> + <!-- 宸插嚭鐐� --> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 800px;" v-loading="loading"> + <div v-if="adjustedRectsb.length > 0"> + <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRectsb[0].engineerId }}-{{ adjustedRectsb[0].temperingLayoutId }} </div> + <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplayb }}-{{ adjustedRects[0].temperingLayoutId }}</div> --> + <el-scrollbar height="750px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRectsb" :key="index" + @click="showDialogb(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, + :style="{ position: 'absolute', top: `${rect.y}px`, left: `${rect.x}px`, width: `${rect.width}px`, height: `${rect.height}px`, - backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }"> + backgroundColor: rect.isActive ? '#ADFF2F' : getRectColorb(rect.state) }"> + <!-- backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }"> --> <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.glassId }}</div> + <div style="font-size: 15px;font-weight: bold;">{{ rect.flowCardId }}</div> + <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </el-card> </div> +<div v-if="dialogFormVisiblec"> + <!-- 鎵撳嵃 --> + <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 800px;" v-loading="loading"> + <div style="display: flex; flex-direction: row; align-items: center; margin-top: 5px;margin-left: 10px;"> + <el-input :placeholder="$t('processCard.projectnumber')" v-model="engineerId" autocomplete="off" style="width: 300px;"/> + <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('processCard.inquire') }}</el-button> + <el-button type="info" style="margin-left: 10px;" @click="printing()">{{ $t('processCard.printing') }}</el-button> + </div> + + <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading"> + <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> + <el-table + height="600" + ref="table" + :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" + :data="tableData" + > + <el-table-column prop="engineerId" :label="$t('processCard.project')" width="200" align="center"/> + <el-table-column prop="temperingLayoutId" :label="$t('processCard.layoutID')" align="center"/> + <el-table-column prop="temperingFeedSequence" :label="$t('processCard.temperingfeed')" align="center"/> + <el-table-column prop="glassId" :label="$t('processCard.glassID')" align="center"/> + <el-table-column prop="width" :label="$t('processCard.width')" align="center"/> + <el-table-column prop="height" :label="$t('processCard.height')" align="center"/> + <el-table-column prop="thickness" :label="$t('processCard.thickness')" align="center"/> + </el-table> + </div> + </el-card> + </el-card> +</div> +<!-- 杩涚倝涓� --> +<el-dialog v-model="blind1" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose1"> + <el-button :disabled="!canSelectProject1" type="warning" plain :icon="Delete" @click="handleDamage1" style="width: 150px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + </el-dialog> +<el-dialog v-model="blind2" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose2"> + <el-button :disabled="!canSelectProject2" type="warning" plain :icon="Delete" @click="handleDamage2" style="width: 150px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + </el-dialog> + <!-- 杩涚倝鍓� --> +<el-dialog v-model="blinda" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClosea"> + <el-button type="warning" plain :icon="Delete" @click="handleDamagea" :disabled="!canSelectProjecta" style="width: 150px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + <el-button :disabled="!cantakea" type="danger" plain @click="takeouta" style="width: 150px;margin-left: 10px;margin-top: 10px;"> + <el-icon class="el-icon--right"><Upload /></el-icon> + {{ $t('order.takeaway') }} + </el-button> + <el-button type="success" plain :icon="Edit" @click="takeona" :disabled="!canona" style="width: 150px;margin-left: 10px;margin-top: 10px;"> + {{ $t('order.takeon') }} + </el-button> + </el-dialog> + <!-- 宸插嚭鐐� --> +<el-dialog v-model="blindb" top="30vh" width="15%" style="text-align: center;" @close="handleDialogCloseb"> + <el-button :disabled="!canSelectProjectb" type="warning" plain :icon="Delete" @click="handleDamageb" style="width: 150px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + <el-button :disabled="!cantakeb" type="danger" plain @click="takeoutb" style="width: 150px;margin-left: 10px;margin-top: 10px;"> + <el-icon class="el-icon--right"><Upload /></el-icon> + {{ $t('order.takeaway') }} + </el-button> + <!-- <el-button type="success" plain :icon="Edit" @click="takeonb" :disabled="!canonb" style="width: 150px;margin-left: 10px;margin-top: 10px;"> + {{ $t('order.takeon') }} + </el-button> --> + </el-dialog> + <el-dialog + v-model="dialogVisible" + width="100%" + top="0vh" + :show-close="false" + > + <div class="custom-title" style="text-align: center; margin-bottom: 20px;"> + {{ $t('processCard.glasstakeout') }} + </div> + <el-table + :data="tableData" + style="width: 100%;height: 760px" + > + <el-table-column prop="flowCardId" :label="$t('processCard.flowcard')" width="140" align="center"/> + <el-table-column prop="layer" :label="$t('processCard.layer')" align="center" width="52"/> + <el-table-column prop="engineerId" :label="$t('processCard.project')" align="center" width="110"/> + <el-table-column prop="temperingLayoutId" :label="$t('processCard.temperinglayout')" align="center" width="52"/> + <el-table-column prop="temperingFeedSequence" :label="$t('processCard.temperingfeed')" align="center" width="52"/> + <el-table-column prop="width" :label="$t('processCard.width')" align="center" width="80"/> + <el-table-column prop="height" :label="$t('processCard.height')" align="center" width="80"/> + <el-table-column prop="thickness" :label="$t('processCard.thickness')" align="center" width="52"/> + </el-table> + </el-dialog> </div> </template> - <style scoped> #boxa{ border: 1px solid rgb(119, 116, 116); background-color: #529b2e; text-align: center; display: inline-block; - /* align-items:center; */ - /* justify-content:center; */ + /* align-items:center; */ + /* justify-content:center; */ margin-left: 20px; } #boxb{ @@ -171,16 +912,16 @@ /* display:flex; */ text-align: center; display: inline-block; - align-items:center; - justify-content:center; + align-items:center; + justify-content:center; margin-left: 20px; } #box{ border: 1px solid black; background-color: #337ecc; display:flex; - align-items:center; - justify-content:center; + align-items:center; + justify-content:center; } #home-card { width: 100%; @@ -222,17 +963,21 @@ } .rect { border: 1px solid black; /* 璁剧疆鐭╁舰鐨勮竟妗� */ - background-color: lightblue; /* 璁剧疆鐭╁舰鐨勮儗鏅壊 */ + /* background-color: lightblue; 璁剧疆鐭╁舰鐨勮儗鏅壊 */ } #rect { position: relative; /* 纭繚绠ご鍙互鐩稿浜庣煩褰㈠畾浣� */ - /* 鍏朵粬鏍峰紡 */ } .centered-text { /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */ - display: flex; + /* display: flex; */ justify-content: center; - align-items: center; + align-items: center; height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */ + /* font-size: small; */ +} +.custom-title { + font-size: 20px; + font-weight: bold; } </style> \ No newline at end of file -- Gitblit v1.8.0