UI-Project/src/views/Identify/identify.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
UI-Project/src/views/PurchaseReturn/purchaseReturn.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
UI-Project/src/views/PurchaseReturn/purchaseStorage.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
UI-Project/src/views/Returns/returns.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
UI-Project/src/views/Slicecage/slicecage.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
UI-Project/src/views/Identify/identify.vue
@@ -76,12 +76,12 @@ adjustedRects.value = rawRects.map(rect => ({ ...rect, // 复制原始对象的其他属性 x_axis: (rect.x_axis*100) * 0.005, // 将x值除以3 y_axis: (rect.y_axis*100) * 0.005, width: (rect.width*100) * 0.004 , x_axis: (rect.x_axis*100) * 0.004, // 将x值除以3 y_axis: (rect.y_axis*100) * 0.004, width: (rect.width*100) * 0.002 , widtha: rect.width , heighta: rect.height , height:( rect.height*100) * 0.004 , height:( rect.height*100) * 0.002 , glass_state: rect.glass_state })); console.log(adjustedRects.value); @@ -183,12 +183,12 @@ // adjustedRects.value = data.currentCutTerritory[0] adjustedRects.value = data.currentCutTerritory[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 x_axis: (rect.x_axis*100) * 0.005, // 将x值除以3 y_axis: (rect.y_axis*100) * 0.005, width: (rect.width*100) * 0.004 , x_axis: (rect.x_axis*100) * 0.004, // 将x值除以3 y_axis: (rect.y_axis*100) * 0.004, width: (rect.width*100) * 0.002 , widtha: rect.width , heighta: rect.height , height:( rect.height*100) * 0.004 , height:( rect.height*100) * 0.002 , glass_state: rect.glass_state })); // console.log("更新后数据", tableData); UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -19,34 +19,41 @@ 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, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , xcoordinate: rect.xCoordinate * 0.5, // 将x值除以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, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , xcoordinate: rect.xCoordinate * 0.5, // 将x值除以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, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , xcoordinate: rect.xCoordinate * 0.5, // 将x值除以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 })); }; // 初始化 WebSocket,并传递消息处理函数 onMounted(() => { // fetchFlowCardId(); // fetchTableData(); // 获取数据 @@ -57,143 +64,18 @@ console.log("关闭了") closeWebSocket(); }); // onMounted(async () => { // try { // const response = await request.get('/temperingGlass/temperingGlassInfo/SelectIntoGlass'); // if (response.code === 200) { // const rawRects = response.data; // 设置矩形数据 // console.log(response.data); // const { height: newheight,width: newwidth } = response.data; // 获取尺寸 // height.value = newheight; // width.value = newwidth; // adjustedRects.value = rawRects.map(rect => ({ // ...rect, // 复制原始对象的其他属性 // xcoordinate: rect.xcoordinate, // 将x值除以3 // ycoordinate: rect.ycoordinate, // width: rect.width , // height: rect.height , // })); // console.log(rect); // // console.log( (rect.width*100) / 300 ); // } else { // // console.error('Failed to fetch rectangles from API.'); // console.error('Failed to fetch rects from API.'); // } // } catch (error) { // // console.error('Error fetching rectangles :', error); // console.error('Error fetching rects :', error); // } // }); // 进炉前 // const handleConfirm = async () => { // try { // const response = await request.post('/temperingGlass/temperingGlassInfo/SelectWaitingGlass'); // if (response.code === 200) { // const rawRects = response.data; // 设置矩形数据 // console.log(response.data); // const { height: newheight,width: newwidth } = response.data; // 获取尺寸 // height.value = newheight; // width.value = newwidth; // adjustedRectsa.value = rawRects.map(rect => ({ // ...rect, // 复制原始对象的其他属性 // xcoordinate: rect.xcoordinate, // 将x值除以3 // ycoordinate: rect.ycoordinate, // width: rect.width , // height: rect.height , // })); // console.log(rect); // // console.log( (rect.width*100) / 300 ); // } else { // // console.error('Failed to fetch rectangles from API.'); // console.error('Failed to fetch rects from API.'); // } // } catch (error) { // // console.error('Error fetching rectangles :', error); // console.error('Error fetching rects :', error); // } // }; // 已出炉 // const handleConfirma = async () => { // try { // const response = await request.get('/temperingGlass/temperingGlassInfo/SelectOutGlass'); // if (response.code === 200) { // const rawRects = response.data; // 设置矩形数据 // console.log(response.data); // const { height: newheight,width: newwidth } = response.data; // 获取尺寸 // height.value = newheight; // width.value = newwidth; // adjustedRectsb.value = rawRects.map(rect => ({ // ...rect, // 复制原始对象的其他属性 // xcoordinate: rect.xcoordinate, // 将x值除以3 // ycoordinate: rect.ycoordinate, // width: rect.width , // height: rect.height , // })); // console.log(rect); // // console.log( (rect.width*100) / 300 ); // } else { // // console.error('Failed to fetch rectangles from API.'); // console.error('Failed to fetch rects from API.'); // } // } catch (error) { // // console.error('Error fetching rectangles :', error); // console.error('Error fetching rects :', error); // } // }; const gridOptions = reactive({ border: "full",//表格加边框 keepSource: true,//保持源数据 align: 'center',//文字居中 stripe:true,//斑马纹 rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 id: 'OrderList', showFooter: true,//显示脚 printConfig: {}, importConfig: {}, exportConfig: {}, scrollY:{ enabled: true },//开启虚拟滚动 showOverflow:true, columnConfig: { resizable: true, useKey: true }, filterConfig: { //筛选配置项 remote: true }, customConfig: { storage: true }, editConfig: { trigger: 'click', mode: 'row', showStatus: true }, data: [ { } ], }) </script> <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="handleConfirm();dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >进炉前</el-button> <el-button id="searchButton" type="success" @click="handleConfirma();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;" >进炉前</el-button> <el-button id="searchButton" type="success" @click="dialogFormVisibleb = true;dialogFormVisible = false;dialogFormVisiblea = false">已出炉玻璃</el-button> <div v-if="dialogFormVisible" > <!-- <div style="display: flex;margin-bottom: 20px;"> <div style="margin-left: 450px;font-size: 20px;">工程号:P20240305001 </div> <div style="margin-left: 150px;font-size: 20px;">版图编号:1</div> </div> --> <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> <el-scrollbar height="630px"> <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;"> <div v-for="(rect, index) in adjustedRects" @@ -202,11 +84,32 @@ :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" > <div class="centered-text"> <div style="margin-top: 50px;margin-left: -85px;">{{ rect.width }}*{{ rect.height }}</div> <div >{{ rect.flowcardId }}</div> <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </div> </el-scrollbar> </div> <div style="width: 49%;float: right;background-color: #f4f4f5;height: 650px;"> <el-scrollbar height="630px"> <div style="position: relative;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` }" > <div class="centered-text"> <div >{{ rect.flowcardId }}</div> <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> </div> </el-card> </div> <div v-if="dialogFormVisiblea"> @@ -217,10 +120,12 @@ v-for="(rect, index) in adjustedRectsa" :key="index" 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 === 0 ? '#dedfe0' : '#d1edc4' }"> <div class="centered-text"> <div style="margin-top: 50px;margin-left: -85px;">{{ rect.width }}*{{ rect.height }}</div> <div >{{ rect.flowcardId }}</div> <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> @@ -235,10 +140,12 @@ v-for="(rect, index) in adjustedRectsb" :key="index" 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 === 4 ? '#911005' : '#f8e3c5' }"> <div class="centered-text"> <div style="margin-top: 50px;margin-left: -85px;">{{ rect.width }}*{{ rect.height }}</div> <div >{{ rect.flowcardId }}</div> <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -3,7 +3,10 @@ import {reactive} from "vue"; import {useRouter} from "vue-router" import { ref } from 'vue' import { ref, onMounted, onBeforeUnmount } from 'vue'; import { WebSocketHost ,host} from '@/utils/constants' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; const adjustedRects = ref([]); const dialogFormVisible = ref(true) const dialogFormVisiblea = ref(false) @@ -22,55 +25,53 @@ } } const gridOptions = reactive({ border: "full",//表格加边框 keepSource: true,//保持源数据 align: 'center',//文字居中 stripe:true,//斑马纹 rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 id: 'OrderList', showFooter: true,//显示脚 printConfig: {}, importConfig: {}, exportConfig: {}, scrollY:{ enabled: true },//开启虚拟滚动 showOverflow:true, columnConfig: { resizable: true, useKey: true }, filterConfig: { //筛选配置项 remote: true }, customConfig: { storage: true }, editConfig: { trigger: 'click', mode: 'row', showStatus: true }, data: [ { } ], }) const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 adjustedRects.value = data.overGlass[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 xcoordinate: rect.xCoordinate * 0.5, // 将x值除以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]); }; onMounted(() => { // fetchFlowCardId(); // fetchTableData(); // 获取数据 initializeWebSocket(socketUrl, handleMessage); }); onBeforeUnmount(() => { console.log("关闭了") closeWebSocket(); }); </script> <template> <div style="margin-top: 10px;"> <div> <el-card style="margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> <div style="display: flex;margin-top: 20px;"> <div style="margin-left: 400px;font-size: 20px;">工程号:P20240305001 </div> <div style="margin-left: 150px;font-size: 20px;">版图编号:1</div> </div> <div> <div id="boxa" style="width: 700px;height: 220px;margin-left: 260px;"> <div style="margin-top: 85px;"> NG202405060798A01-1</div> <div> 500×1500</div> </div> </div> <el-scrollbar height="630px"> <div style="position: relative;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`, backgroundColor: rect.state === 4 ? '#d1edc4' : '#f8e3c5' }"> <div class="centered-text"> <div >{{ rect.flowcardId }}</div> <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div> </div> </div> </div> </el-scrollbar> </el-card> </div> </div> @@ -87,4 +88,15 @@ margin-top: 70px; margin-bottom: 50px; } .rect { border: 1px solid black; /* 设置矩形的边框 */ background-color: lightblue; /* 设置矩形的背景色 */ } .centered-text { /* 设置文字居中样式 */ display: flex; justify-content: center; align-items: center; height: 100%; /* 确保div占据整个矩形的高度 */ } </style> UI-Project/src/views/Returns/returns.vue
@@ -68,7 +68,7 @@ label: thickness, })); } else { ElMessage.error(response.msg); ElMessage.error(response.message); } } catch (error) { // 处理请求失败的情况 @@ -91,7 +91,7 @@ flakea.value = true } } else { ElMessage.warning(res.msg) ElMessage.warning(res.message) // router.push("/login") } }); @@ -210,7 +210,7 @@ } } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); } } catch (error) { // 处理请求错误 @@ -249,7 +249,7 @@ } } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); } } catch (error) { // 处理请求错误 @@ -291,7 +291,7 @@ } } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); } } catch (error) { // 处理错误 @@ -337,7 +337,8 @@ })); } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); // ElMessage.error(response.msg); } } catch (error) { @@ -362,10 +363,10 @@ ElMessage.success(response.message); // window.location.reload() blind.value = false; selectedProjectNoa.value = '' selectedProjectNoa.value = ''; } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); } } catch (error) { @@ -390,10 +391,10 @@ if (response.code == 200) { ElMessage.success(response.message); blinda.value = false; tableData.splice([]); // tableData.splice([]); } else { // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); } } else { @@ -426,7 +427,7 @@ tableData.splice([]); // 请求失败,显示错误消息 ElMessage.error(response.msg); ElMessage.error(response.message); } } else { @@ -494,8 +495,29 @@ const confirmCuttingMachine = () => { cuttingMachineStatus.value = 'green'; }; const toggleEnableState = async (row: any) => { // 检查 id 是否为空 if (!row.id) { ElMessage.error('该工程未保存到上片表!'); return; // 如果 id 为空,则不执行后续操作 } const newState = row.state === 100 ? 0 : 100; try { // 发送请求到后端更新状态 const response = await request.post('/loadGlass/up-patten-usage/updateGlassState', { id: row.id, state: newState }); if (response.code === 200) { ElMessage.success(response.message); } else { ElMessage.error(response.message); } } catch (error) { // 处理请求错误 console.error('更新玻璃状态请求失败:', error); ElMessage.error('更新玻璃状态时发生错误'); } }; const wsUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`; const ws = new WebSocket(wsUrl); @@ -569,7 +591,7 @@ <el-button @click="confirmCuttingMachine" style="margin-left: 30px;margin-top: -3px;" >确认</el-button> <div style="margin-left: 70px;">{{ upstatus }} </div> <i :style="{ marginTop: '2px', backgroundColor: cuttingMachineStatusColor, width: '18px', height: '18px', borderRadius: '50%', display: 'block' }"></i> <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;" >确认</el-button> <el-button @click="confirmCutting" style="margin-left: 30px;margin-top: -3px;" >切换</el-button> </div> <el-button style="margin-top: 5px;margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true">选择工程</el-button> @@ -591,7 +613,7 @@ <el-table-column prop="filmsId" label="膜系" align="center"/> <el-table-column prop="layoutSequence" label="数量" align="center"/> <el-table-column prop="thickness" label="厚度" align="center"/> <el-table-column <!-- <el-table-column align="center" label="状态" min-width="80" @@ -601,7 +623,21 @@ <el-tag :type="getStatusType(scope.row.state)"> {{ getStatusText(scope.row.state) }} </el-tag> </template> </template> --> <el-table-column align="center" label="启用状态" min-width="80" prop="state" > <template #default="scope"> <el-tag :type="scope.row.state === 100 ? 'success' : 'warning'" @click="toggleEnableState(scope.row)" > {{ scope.row.state === 100 ? '通过' : '等待中' }} </el-tag> </template> </el-table-column> </el-table> </div> UI-Project/src/views/Slicecage/slicecage.vue
@@ -529,7 +529,7 @@ @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="id" align="center" label="大理片笼表ID" min-width="80" /> <el-table-column prop="deviceId" align="center" label="设备ID" min-width="120" /> <el-table-column prop="deviceId" align="center" label="理片笼号" min-width="120" /> <el-table-column prop="slot" align="center" label="栅格号" min-width="120" /> <el-table-column align="center"