From 8a76767b0a7ad271c8487a02063590b956deb5df Mon Sep 17 00:00:00 2001 From: 严智鑫 <test> Date: 星期四, 25 七月 2024 14:30:30 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- UI-Project/src/views/PurchaseReturn/purchaseReturn.vue | 309 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 241 insertions(+), 68 deletions(-) diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue index 77bd047..ee5825e 100644 --- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue +++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue @@ -5,67 +5,202 @@ import request from "@/utils/request" import { ref, onMounted, onBeforeUnmount } from 'vue'; import { WebSocketHost ,host} from '@/utils/constants' +import { ElMessage, ElMessageBox } from 'element-plus' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { useI18n } from 'vue-i18n' const { t } = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') -const dialogFormVisible = ref(true) -const dialogFormVisiblea = ref(false) +const dialogFormVisible = ref(false) +const dialogFormVisiblea = ref(true) const dialogFormVisibleb = ref(false) +const blind = ref(false) const width = ref(); const height = ref(); const adjustedRects = ref([]); const adjustedRects2 = ref([]); const adjustedRectsa = ref([]); const adjustedRectsb = ref([]); +const currentGlassId = ref(null); +const currenttemperingFeedSequence = ref(null); const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; const handleMessage = (data) => { // 杩涚倝涓� - adjustedRects.value = data.intoGlass[0].map(rect => ({ + if(data.intoGlass!=null){ + adjustedRects.value = data.intoGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.height * 0.12; + adjustedHeight = rect.width * 0.1; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5087 - (rect.xCoordinate + rect.height); + } else { + adjustedWidth = rect.width * 0.12; + adjustedHeight = rect.height * 0.1; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5087 - (rect.xCoordinate + rect.width); + } + return { ...rect, - xcoordinate: rect.xCoordinate * 0.3, - ycoordinate: rect.ycoordinate * 0.3, - width: rect.width * 0.2, - height: rect.height * 0.2, - widtha: rect.width, - heighta: rect.height, - })); - adjustedRects2.value = data.intoGlass2[0].map(rect => ({ + xcoordinate: newX * 0.12, + ycoordinate: rect.yCoordinate * 0.1, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; + }); + } + if(data.intoGlass2!=null){ + adjustedRects2.value = data.intoGlass2[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.height * 0.12; + adjustedHeight = rect.width * 0.1; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5087 - (rect.xCoordinate + rect.height); + } else { + adjustedWidth = rect.width * 0.12; + adjustedHeight = rect.height * 0.1; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5087 - (rect.xCoordinate + rect.width); + } + return { ...rect, - xcoordinate: rect.xCoordinate * 0.3, - ycoordinate: rect.ycoordinate * 0.3, - width: rect.width * 0.2, - height: rect.height * 0.2, - widtha: rect.width, - heighta: rect.height, - })); - console.log(data.intoGlass[0]); + xcoordinate: newX * 0.12, + ycoordinate: rect.yCoordinate * 0.1, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; + }); + } // 杩涚倝鍓� - adjustedRectsa.value = data.waitingGlass[0].map(rect => ({ - ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - state: rect.state - })); + if(data.waitingGlass!=null){ + adjustedRectsa.value = data.waitingGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.width * 0.24; + adjustedHeight = rect.height * 0.16; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5190 - (rect.yCoordinate + rect.width); + } else { + adjustedWidth = rect.height * 0.24; + adjustedHeight = rect.width * 0.16; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5190 - (rect.yCoordinate + rect.height); + } + return { + ...rect, + x: newX * 0.24, + y: rect.xCoordinate * 0.16, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; +}); + } // 宸插嚭鐐� - adjustedRectsb.value = data.outGlass[0].map(rect => ({ + if(data.outGlass!=null){ + adjustedRectsb.value = data.outGlass[0].map(rect => { + let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; + let newX = rect.yCoordinate; + if (rect.angle === 0) { + adjustedWidth = rect.width * 0.24; + adjustedHeight = rect.height * 0.16; + adjustedWidtha = rect.width; + adjustedHeighta = rect.height; + newX = 5190 - (rect.yCoordinate + rect.width); + } else { + adjustedWidth = rect.height * 0.24; + adjustedHeight = rect.width * 0.16; + adjustedWidtha = rect.height; + adjustedHeighta = rect.width; + newX = 5190 - (rect.yCoordinate + rect.height); + } + return { ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬� - xcoordinate: rect.xCoordinate * 0.5, - ycoordinate: rect.ycoordinate * 0.5, - width: rect.width * 0.4, - height: rect.height * 0.4, - widtha: rect.width, - heighta: rect.height, - state: rect.state - })); + x: newX * 0.24, + y: rect.xCoordinate * 0.16, + width: adjustedWidth, + height: adjustedHeight, + widtha: adjustedWidtha, + heighta: adjustedHeighta, + }; +}); + } }; onMounted(() => { initializeWebSocket(socketUrl, handleMessage); }); +function updateRectColors() { + adjustedRectsa.value.forEach(rect => { + if (rect.glassId === glassId) { + rect.state = 5; + } + }); +} +function getRectColora(state) { + switch (state) { + case 0: + return '#d1edc4'; + case 1: + return '#E6E6FA'; + case -1: + return '#dedfe0'; + case 5: + return '#911005'; + } +} +function getRectColorb(state) { + switch (state) { + case 3: + return '#f8e3c5'; + case 4: + return '#F0F8FF'; + case 5: + return '#911005'; + } +} +function showDialog(rect) { + currentGlassId.value = rect.glassId; + currenttemperingFeedSequence.value = rect.temperingFeedSequence; + blind.value = true; +} +// 鐮存崯 +const handleDamage = async () => { + try { + const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { + glassId: currentGlassId.value, + // temperingFeedSequence: currenttemperingFeedSequence.value, + line: 4001, + status: 2, + workingProcedure: '閽㈠寲', + }) + if (response.code == 200) { + ElMessage.success(response.message); + blind.value = false; + updateRectColors(); + } else { + // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭� + ElMessage.error(response.message); + } +} +catch (error) { + // 澶勭悊閿欒 + console.error(error); + } +} onBeforeUnmount(() => { console.log("鍏抽棴浜�") closeWebSocket(); @@ -73,89 +208,126 @@ </script> <template> <div style="margin-top: 10px;"> - <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">{{ $t('processCard.intofurnace') }}</el-button> - <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >{{ $t('processCard.beforefurnace') }}</el-button> + <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >{{ $t('processCard.beforefurnace') }}</el-button> + <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">{{ $t('processCard.intofurnace') }}</el-button> <el-button id="searchButton" type="success" @click="dialogFormVisibleb = true;dialogFormVisible = false;dialogFormVisiblea = false">{{ $t('processCard.outfurnace') }}</el-button> <div v-if="dialogFormVisible" > <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading"> <div style="width: 49%;float: left;background-color: #f4f4f5;height: 550px;"> - <el-scrollbar height="630px"> - <div style="position: relative;width: 1400px;"> + <div v-if="adjustedRects.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRects" :key="index" + @click="showDialog(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" + :style="{ position: 'absolute', + top: `${rect.ycoordinate}px`, + left: `${rect.xcoordinate}px`, + width: `${rect.width}px`, + height: `${rect.height}px`, + backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }" > <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </div> <div style="width: 49%;float: right;background-color: #f4f4f5;height: 550px;"> - <el-scrollbar height="550px"> - <div style="position: relative;width: 1400px;"> + <div v-if="adjustedRects2.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRects2" :key="index" + @click="showDialog(rect)" class="rect" - :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" - > + :style="{ position: 'absolute', + top: `${rect.ycoordinate}px`, + left: `${rect.xcoordinate}px`, + width: `${rect.width}px`, + height: `${rect.height}px`, + backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }" + > <div class="centered-text"> - <div >{{ rect.flowcardId }}</div> - <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> + <div >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</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="550px"> - <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 v-if="adjustedRectsa.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRectsa" :key="index" + @click="showDialog(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: getRectColora(rect.state) }"> + <div class="centered-text"> + <div>{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ 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="550px"> - <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 v-if="adjustedRectsb.length > 0"> + <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div> + <el-scrollbar height="550px" style="background-color: #e9e9eb;"> + <div style="position: relative;max-width: 1400px;"> <div v-for="(rect, index) in adjustedRectsb" :key="index" + @click="showDialog(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: 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 >{{ rect.glassId }}</div> + <div >{{ rect.flowCardId }}</div> + <div>{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> + </div> </el-card> </div> + +<el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;"> + <el-button type="warning" plain :icon="Delete" @click="handleDamage" style="width: 140px;margin-left: 10px;"> + {{ $t('order.dilapidation') }} + </el-button> + </el-dialog> </div> </template> <style scoped> @@ -233,9 +405,10 @@ } .centered-text { /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */ - display: flex; + /* display: flex; */ justify-content: center; - align-items: center; + align-items: center; height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */ + /* font-size: small; */ } </style> \ No newline at end of file -- Gitblit v1.8.0