UI-Project/package-lock.json
@@ -8,7 +8,7 @@ "name": "northglass-mes", "version": "0.0.0", "dependencies": { "@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.3.1", "@vue-macros/reactivity-transform": "^0.3.23", "axios": "^1.6.8", "chart.js": "^4.4.3", @@ -100,9 +100,9 @@ } }, "node_modules/@element-plus/icons-vue": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz", "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==", "version": "2.3.1", "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", "peerDependencies": { "vue": "^3.2.0" } @@ -2225,9 +2225,9 @@ "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==" }, "@element-plus/icons-vue": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz", "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==", "version": "2.3.1", "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", "requires": {} }, "@esbuild/win32-ia32": { UI-Project/package.json
@@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { "@element-plus/icons-vue": "^2.1.0", "@element-plus/icons-vue": "^2.3.1", "@vue-macros/reactivity-transform": "^0.3.23", "axios": "^1.6.8", "chart.js": "^4.4.3", UI-Project/src/lang/zh.js
@@ -432,6 +432,8 @@ allstatus: '全部入库状态', completedquantity: '完成数量', scrapquantity: '报废数量', number: '数量', method: '加工方式', }, reportmanage:{ productiontime :'生产时间', UI-Project/src/layout/MainErpView.vue
@@ -10,7 +10,7 @@ const { t } = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') const store = userInfo() const isCollapse = ref(false); // const { $i18n } = useI18n(); // 获取 i18n 实例 const router = useRouter() const userStore = useUserInfoStore() @@ -158,6 +158,9 @@ openFlag = menuID } } function toggleCollapse() { isCollapse.value = !isCollapse.value; } </script> <template> @@ -188,33 +191,21 @@ <SwitchButton size=""/>{{ $t('main.quit') }} </el-icon> </el-button> <!-- <div class="header-left"> <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse" style="height:30px;"></el-button> </div> --> </span> </div> </el-header> <div id="line"></div> <el-container> <!-- <el-aside width="160px" style="height: 99%; background-color: #fff;"> <div class="menu"> <div v-for="items in menuList"> <div class='menu_title' @click="openMenu(items.id)"> <span>☰</span> {{ items.menuName }} </div> <ul class='enter-x-left' v-show="openFlag==items.id"> <li v-for="menuItem in items.children" style="margin-bottom:2px"> <router-link :to="{path:menuItem.url}"> {{ menuItem.menuName }} </router-link> </el-aside> --> <el-aside :width="isCollapse ? '30px' : '200px'" style="background-color: #fff;"> <el-row :span="20"> <el-menu :default-active="activePath" class="el-menu-vertical-demo" background-color="#fff"> <el-menu :default-active="activePath" class="el-menu-vertical-demo" > <div class="menu"> <div v-for="items in menuList"> <div class='menu_title' <div class='menu_title' v-show="!isCollapse" @click="openMenu(items.id)"> <span>☰</span> {{ items.menuName }} @@ -232,12 +223,12 @@ </div> </el-menu> </el-row> <el-main> </el-aside> <el-main> <div id="main"> <router-view></router-view> </div> </el-main> </el-container> </el-container> </div> UI-Project/src/views/Caching/cachingbefore.vue
@@ -110,7 +110,7 @@ <div style="height: 500px;"> <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> <el-table height="240" ref="table" <el-table height="340" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="slot" align="center" :label="$t('sorter.gridnumber')" min-width="80" /> UI-Project/src/views/Caching/cachingun.vue
@@ -2,159 +2,152 @@ <div style="height: 500px;"> <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> <el-table height="240" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table height="340" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> <el-table-column prop="slot" align="center" :label="$t('sorter.gridnumber')" min-width="80" /> <el-table-column prop="glass_id" align="center" :label="$t('sorter.glassnumber')" min-width="80" /> <el-table-column prop="width" align="center" :label="$t('sorter.width')" min-width="120" /> <el-table-column prop="height" align="center" :label="$t('sorter.height')" min-width="120" /> <el-table-column align="center" :label="$t('sorter.startstatus')" min-width="80" prop="enable_state" > <template #default="scope"> <el-tag :type="scope.row.enable_state === 1 ? 'success' : 'danger'" @click="toggleEnableState(scope.row)" > {{ scope.row.enable_state === 1 ? $t('sorter.start') : $t('sorter.disable') }} </el-tag> </template> <!-- <template #default="scope"> <el-table-column align="center" :label="$t('sorter.startstatus')" min-width="80" prop="enable_state"> <template #default="scope"> <el-tag :type="scope.row.enable_state === 1 ? 'success' : 'danger'" @click="toggleEnableState(scope.row)"> {{ scope.row.enable_state === 1 ? $t('sorter.start') : $t('sorter.disable') }} </el-tag> </template> <!-- <template #default="scope"> <el-tag type="success" >{{ scope.row.enable_state==1?"启用":"未启用" }}</el-tag> </template> --> </el-table-column> <el-table-column fixed="right" :label="$t('sorter.operate')" align="center" width="200"> <template #default="scope"> <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('sorter.deficiencieste') }}</el-button> <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('sorter.updown') }}</el-button> <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('sorter.deficiencieste') }}</el-button> <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('sorter.updown') }}</el-button> </template> </el-table-column> </el-table-column> </el-table> </div> </el-card> <div class="awatch"> <img src="../../assets/woshihuancun.png" alt="" style="width: 70%;height: 90%;margin-left: 200px;margin-top: 20px;position: relative;"> <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;"> <div v-for="(rect, index) in adjustedRects" :key="rect" :style="{ position: 'absolute', top: `${rect.id}px`, left: `10px`, width: `${rect.width}px`, height: `5px`, <div class="awatch"> <img src="../../assets/woshihuancun.png" alt="" style="width: 70%;height: 90%;margin-left: 200px;margin-top: 20px;position: relative;"> <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;"> <div v-for="(rect, index) in adjustedRects" :key="rect" :style="{ position: 'absolute', top: `${rect.id}px`, left: `10px`, width: `${rect.width}px`, height: `5px`, backgroundColor: '#409EFF' }" > }"> </div> </div> </div> </div> </div> </div> </template> <script setup> import {Search,Lock,Avatar} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {useRouter} from "vue-router" import { Search, Lock, Avatar } from "@element-plus/icons-vue"; import { reactive } from "vue"; import { useRouter } from "vue-router" const router = useRouter() const adda = ref(false) import { WebSocketHost ,host} from '@/utils/constants' import { WebSocketHost, host } from '@/utils/constants' import request from "@/utils/request" import { ref, onMounted , onBeforeUnmount,onUnmounted} from "vue"; import { ref, onMounted, onBeforeUnmount, onUnmounted } from "vue"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; // import { ref } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' // import LanguageMixin from './lang/LanguageMixin' import { useI18n } from 'vue-i18n' const { t } = useI18n() const { t } = useI18n() // import i18n from '@/i18n'; const tableData = reactive([]); const slot = ref('') const adjustedRects = ref([]); onMounted(async () => { try { const response = await request.get('/unLoadGlass/downStorage/selectStorageCage'); // 替换为你的API端点 if (response.code === 200) { const rawRects = response.data; // 设置矩形数据 tableData.value = response.data console.log(response.data); adjustedRects.value = rawRects.map(rect => ({ ...rect, // 复制原始对象的其他属性 width: rect.width * 0.5 , id: rect.id * 10, })); console.log(adjustedRects.value); } else { ElMessage.warning(res.msg) } } catch (error) { // console.error('Error fetching rects :', error); } }); const open = async(row) => { onMounted(async () => { try { const confirmResult = await ElMessageBox.confirm( t('sorter.information'), t('sorter.prompt'), { confirmButtonText: t('sorter.yes'), const response = await request.get('/unLoadGlass/downStorage/selectStorageCage'); // 替换为你的API端点 if (response.code === 200) { const rawRects = response.data; // 设置矩形数据 tableData.value = response.data console.log(response.data); adjustedRects.value = rawRects.map(rect => ({ ...rect, // 复制原始对象的其他属性 width: rect.width * 0.5, id: rect.id * 10, })); console.log(adjustedRects.value); } else { ElMessage.warning(res.msg) } } catch (error) { // console.error('Error fetching rects :', error); } }); const open = async (row) => { try { const confirmResult = await ElMessageBox.confirm( t('sorter.information'), t('sorter.prompt'), { confirmButtonText: t('sorter.yes'), cancelButtonText: t('sorter.cancel'), type: 'warning', } ); if (confirmResult === 'confirm') { type: 'warning', } ); if (confirmResult === 'confirm') { // 用户点击了“是”,现在调用删除接口 var url="/unLoadGlass/downStorage/deleteDownStorageCage?downStorageCageId="+row.id; var url = "/unLoadGlass/downStorage/deleteDownStorageCage"; console.log(url); const response = await request.post(url, { esdId: row.esdId glassId: row.glass_id, state: 9, line: 1001, workingProcedure: '磨边前理片笼', }) if (response.code === 200) { ElMessage.success(response.message); } else { // 删除失败,您可以处理错误或显示错误信息给用户 } else { // 删除失败,您可以处理错误或显示错误信息给用户 ElMessage.error(response.message); // alert('删除失败:' + deleteResponse.message); } } } catch (error) { // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等 console.error('发生错误:', error); // alert('删除失败:' + deleteResponse.message); } } }; } catch (error) { // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等 console.error('发生错误:', error); } }; // 人工下片 const opena = async(row) => { const opena = async (row) => { try { const confirmResult = await ElMessageBox.confirm( t('sorter.infor'), t('sorter.prompt'), { confirmButtonText: t('sorter.yes'), const confirmResult = await ElMessageBox.confirm( t('sorter.infor'), t('sorter.prompt'), { confirmButtonText: t('sorter.yes'), cancelButtonText: t('sorter.cancel'), type: 'warning', } ); type: 'warning', } ); if (confirmResult === 'confirm') { const response = await request.post("/unLoadGlass/downGlassTask/generateOutGlassTask", { glassId: row.glass_id }) if (response.code === 200) { ElMessage.success(response.message); } else { if (response.code === 200) { ElMessage.success(response.message); } else { // 删除失败,您可以处理错误或显示错误信息给用户 ElMessage.error(response.message); ElMessage.error(response.message); // alert('删除失败:' + deleteResponse.message); } } } catch (error) { } } } catch (error) { // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等 console.error('发生错误:', error); } }; console.error('发生错误:', error); } }; // const open = async(row) => { // const { t } = useI18n(); // try { @@ -184,23 +177,23 @@ // } // } // } // catch (error) { // // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等 // console.error('发生错误:', error); // } // }; const toggleEnableState = async (row) => { const newState = row.enable_state === 1 ? 0 : 1; const toggleEnableState = async (row) => { const newState = row.enable_state === 1 ? 0 : 1; // 发送请求到后端更新状态(这里省略了实际的请求逻辑) const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enableState: newState }); const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enableState: newState }); if (response.code === 200) { ElMessage.success(response.message); } else { ElMessage.error(response.message); } row.enable_state = newState; ElMessage.success(response.message); } else { ElMessage.error(response.message); } row.enable_state = newState; }; @@ -213,44 +206,57 @@ tableData.splice(0, tableData.length, ...data.params2[0]); // tableData.value = data.params[0] // adjustedRects.value = data.EdgStorageCageinfos[0] adjustedRects.value = data.params2[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 width: rect.width * 0.5 , id: rect.id * 10, })); adjustedRects.value = data.params2[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 width: rect.width * 0.5, id: rect.id * 10, })); }; onMounted(() => { socket = initializeWebSocket(socketUrl, handleMessage); }); onUnmounted(() => { if (socket) { onUnmounted(() => { if (socket) { closeWebSocket(socket); } }); } }); onBeforeUnmount(() => { console.log("关闭了") closeWebSocket(); }); </script> <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{ #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{ #message { text-align: center; align-items: center; color: black; width: 200px; height: 100px; background-color: #337ecc; margin-left: 28%; width: 200px; height: 100px; background-color: #337ecc; margin-left: 28%; } .awatch{ .awatch { height: 460px; width: 1500px; max-width: 100%; UI-Project/src/views/Identify/identify.vue
@@ -84,10 +84,10 @@ // console.log(url); // const response = await request.post(url) const response = await request.post('/cacheGlass/taskCache/identControls', { identId: currentGlassId.value, controlsId: 8, glassId: currentGlassId.value, state: 8, line: 1001, machine: '识别', workingProcedure: '识别', }) if (response.code == 200) { ElMessage.success(response.message); @@ -111,10 +111,10 @@ // console.log(url); // const response = await request.post(url) const response = await request.post('/cacheGlass/taskCache/identControls', { identId: currentGlassId.value, controlsId: 9, glassId: currentGlassId.value, state: 9, line: 1001, machine: '识别', workingProcedure: '识别', }) if (response.code == 200) { // 绑定成功,处理逻辑 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -38,17 +38,17 @@ heighta = rect.height; } if (rect.angle === 0) { adjustedWidth = widtha * 0.12; adjustedHeight = heighta * 0.1; // adjustedWidtha = widtha; // adjustedHeighta = heighta; newX = 5087 - (rect.yCoordinate + widtha); } else { adjustedWidth = heighta * 0.12; adjustedHeight = widtha * 0.1; // adjustedWidtha = widtha; // adjustedHeighta = heighta; newX = 5087 - (rect.yCoordinate + heighta); } else { adjustedWidth = widtha * 0.12; adjustedHeight = heighta * 0.1; // adjustedWidtha = widtha; // adjustedHeighta = heighta; newX = 5087 - (rect.yCoordinate + widtha); newX = 5087 - (rect.yCoordinate + heighta); } // if (rect.angle === 0) { // adjustedWidth = heighta * 0.12; @@ -89,17 +89,17 @@ heighta = rect.height; } if (rect.angle === 0) { adjustedWidth = heighta * 0.12; adjustedHeight = widtha * 0.1; // adjustedWidtha = widtha; // adjustedHeighta = heighta; newX = 5087 - (rect.yCoordinate + heighta); } else { adjustedWidth = widtha * 0.12; adjustedHeight = heighta * 0.1; // adjustedWidtha = widtha; // adjustedHeighta = heighta; newX = 5087 - (rect.yCoordinate + widtha); } else { adjustedWidth = heighta * 0.12; adjustedHeight = widtha * 0.1; // adjustedWidtha = widtha; // adjustedHeighta = heighta; newX = 5087 - (rect.yCoordinate + heighta); } // if (rect.angle === 0) { // adjustedWidth = heighta * 0.12; UI-Project/src/views/Returns/returns.vue
@@ -718,7 +718,7 @@ <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="150" height="350" ref="table" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" :data="tableData" UI-Project/src/views/Slicecage/slicecage.vue
@@ -600,8 +600,9 @@ // 更新 tableData 的数据 if(data.bigStorageCageDetailsOutTask!=null){ tableDatac.value = data.bigStorageCageDetailsOutTask[0] console.log(data.bigStorageCageDetailsOutTask[0]) adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); console.log(data.bigStorageCageDetailsOutTask[0]); // console.log(data.bigStorageCageDetailsOutTask[0]); } else { tableDatac.value = '', @@ -628,6 +629,7 @@ } if(data.temperingGlassInfoList!=null){ tableDatab.value = data.temperingGlassInfoList[0] console.log(tableDatab.value) }else{ tableDatab.value = '' } @@ -1352,8 +1354,8 @@ <el-table ref="table" style="margin-top: 20px;height: 500px;" :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="id" fixed align="center" :label="$t('searchOrder.sheetID')" min-width="150"/> <el-table-column prop="flowcardId" fixed align="center" :label="$t('searchOrder.processcards')" min-width="120" /> <el-table-column prop="glassType" align="center" :label="$t('searchOrder.processcardtype')" min-width="150" /> <el-table-column prop="flowCardId" fixed align="center" :label="$t('searchOrder.processcards')" min-width="120" /> <!-- <el-table-column prop="glassType" align="center" :label="$t('searchOrder.processcardtype')" min-width="150" /> --> <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" /> @@ -1387,13 +1389,13 @@ </el-tag> </template> </el-table-column> <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="150"> <!-- <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="150"> <template #default="scope"> <el-button size="mini" type="text" plain @click="brokea(scope.row)">{{ $t('searchOrder.breakage') }}</el-button> <el-button size="mini" type="text" plain @click="brokeb(scope.row)">{{ $t('searchOrder.takeout') }}</el-button> <el-button size="mini" type="text" plain @click="deletea(scope.row)">{{ $t('searchOrder.delete') }}</el-button> </template> </el-table-column> </el-table-column> --> </el-table> </el-dialog> <el-dialog v-model="dialogFormVisiblec" top="5vh" width="85%" :title="$t('searchOrder.temperingqueries')"> UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -157,18 +157,18 @@ <template> <div> <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> <el-select v-model="selectValuesa[0]" filterable :placeholder="$t('请选择线路')" clearable> <el-select v-model="selectValuesa[0]" filterable :placeholder="$t('请选择线路')" clearable style="margin-left: 20px;"> <el-option label="磨边一线" value="2001"></el-option> <el-option label="磨边二线" value="2002"></el-option> </el-select> <el-select v-model="selectValuesa[1]" filterable :placeholder="$t('请选择状态')" clearable > <el-select v-model="selectValuesa[1]" filterable :placeholder="$t('请选择状态')" clearable style="margin-left: 20px;" > <el-option label="未磨边" value="0"></el-option> <el-option label="磨边中" value="1"></el-option> <el-option label="已磨边" value="2"></el-option> </el-select> <span class="demonstration">时间段</span> <el-date-picker v-model="timeRange" type="datetimerange" range-separator="至" start-placeholder="开始日期" <span class="demonstration" style="margin-left: 20px;">时间段</span> <el-date-picker v-model="timeRange" type="datetimerange" range-separator="至" start-placeholder="开始日期" style="margin-left: 20px;" end-placeholder="结束日期"> </el-date-picker> <el-button type="primary" style="margin-left: 10px;" @click="setEdgGlassInfoRequest()">{{ UI-Project/src/views/UnLoadGlass/PrintFlow.vue
@@ -69,54 +69,56 @@ } const printFlowCard = () => { // 需要打印的局部区域赋予"print-wrap"的id let el = document.getElementById("printFlowCard"); let doc = document; let body = doc.body || doc.getElementsByTagName("body")[0]; let printId = "print-" + Date.now(); // const printFlowCard = () => { // // 需要打印的局部区域赋予"print-wrap"的id // let el = document.getElementById("printFlowCard"); // let doc = document; // let body = doc.body || doc.getElementsByTagName("body")[0]; // let printId = "print-" + Date.now(); // 创建无副作用的打印容器(因不确定页面的打印元素有无其它样式) let content = doc.createElement("div"); content.id = printId; // // 创建无副作用的打印容器(因不确定页面的打印元素有无其它样式) // let content = doc.createElement("div"); // content.id = printId; // 样式控制与打印无关的元素隐藏 let style = doc.createElement("style"); style.innerHTML = "body>#" + printId + "{display:none}@media print{" + "@page {" + " size: auto; " + " margin: 5mm 5mm 5mm 5mm; " + " }body>:not(#" + printId + "){display:none !important}body>#" + printId + "{display:block;padding-top:1px}}"; // content.innerHTML = el.outerHTML; // // console.log("el.outerHTML", el.outerHTML); body.appendChild(style); // // 样式控制与打印无关的元素隐藏 // let style = doc.createElement("style"); // style.innerHTML = // "body>#" + // printId + // "{display:none}@media print{" + // "@page {" + // " size: auto; " + // " margin: 5mm 5mm 5mm 5mm; " + // " }body>:not(#" + // printId + // "){display:none !important}body>#" + // printId + // "{display:block;padding-top:1px}}"; // // // content.innerHTML = el.outerHTML; // // // console.log("el.outerHTML", el.outerHTML); // body.appendChild(style); // 与style元素设置的样式相配合 // 把打印内容的元素添加到body(作为body的子元素,可用body的子选择器 '>' 控制打印样式) body.appendChild(content); setTimeout(() => { window.print(); body.removeChild(content); body.removeChild(style); }, 20); } // // 与style元素设置的样式相配合 // // 把打印内容的元素添加到body(作为body的子元素,可用body的子选择器 '>' 控制打印样式) // body.appendChild(content); // setTimeout(() => { // window.print(); // body.removeChild(content); // body.removeChild(style); // }, 20); // } onMounted(async () => { console.log(props.printFlowCardId,props.printLayer) try { const response = await request.post('/unLoadGlass/downGlassInfo/downGlassPrint',{ flowCardId:props.printFlowCardId, layer:props.printLayer }); if (response.code == 200) { // 绑定成功,处理逻辑 produceList.value = response.data; ElMessage.success(response.message); UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -6,6 +6,7 @@ import request from "@/utils/request"; import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; import {host, WebSocketHost} from '@/utils/constants' import PrintFlow from "@/views/UnLoadGlass/PrintFlow.vue"; const router = useRouter() const {t} = useI18n() @@ -23,6 +24,7 @@ const dialogFormVisible = ref(false); // 表单数据 const workstationId = ref(''); const workFlowCard = ref(''); const selectedProjectNoa = ref(null); // 当前选中的角色 const flowCardId = ref(''); const flowCardOptions = ref('[]'); @@ -129,6 +131,7 @@ const handleBindRack2 = (row) => { workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名 dialogFormVisiblea2.value = true; // 打开绑定架子对话框 workFlowCard.value=row.flowCardId; }; //清除内容 const handleclear = async () => { @@ -143,6 +146,9 @@ console.log('清除成功'); ElMessage.success(response.message); dialogFormVisiblea2.value = false; if(fullFlowCard.value==workFlowCard.value){ fullFlowCard.value=""; } } else if (response.code === 500) { // 清除失败的逻辑 console.log('清除失败'); @@ -189,12 +195,11 @@ selectOptionsa.value = data.engineerIdList[0] } if (data.autoPrint != null) { autoPrint.value = data.autoPrint; autoPrint.value = data.autoPrint[0]; } console.log(autoPrint.value) tableData.splice(0, tableData.length, ...data.params[0]); if (fullFlowCard.value == "") { if (fullFlowCard.value == ""&&autoPrint.value==true) { for (let i = 0; i < tableData.length; i++) { if (tableData[i].totalQuantity != 0) { if (tableData[i].totalQuantity == tableData[i].racksNumber + tableData[i].otherNumber && fullFlowCard.value != tableData[i].flowCardId) { @@ -208,7 +213,9 @@ } } } if(data.params!=null){ tableData.splice(0, tableData.length, ...data.params[0]); } // console.log("更新后数据", data.params[0]); }; UI-Project/src/views/largescreen/largescreen.vue
@@ -25,7 +25,7 @@ </el-table-column> </el-table> </div> --> <div id="parent" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 1000px;"> <div id="parent" style="margin-top: 10px;margin-left: 150px; height: 240px;width: 1000px;"> <img src="../../assets/dpxsa.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> <div id="lipiana" v-show="woshia"></div> <div id="lipianb" v-show="woshia"></div> @@ -45,14 +45,14 @@ <div id="xiapianji5" v-show="xiapian5"></div> <div id="xiapianji6" v-show="xiapian6"></div> </div> <div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;"> <!-- <div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;"> <el-table height="240" ref="table" width="340px" @selection-change="handleSelectionChange" :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="projectNo" align="center" :label="$t('large.projectnumber')" min-width="50" /> <el-table-column prop="projectName" align="center" :label="$t('large.projectname')" min-width="50" /> </el-table> </div> </div> --> </div> <div id="bottom" style="margin-top: 10px;height: 190px;background-color: #911005;"> <el-table height="190" ref="table" @@ -75,41 +75,29 @@ </el-tag> </template> </el-table-column> <el-table-column prop="deliveryDate" align="center" :label="$t('large.deliveryDate')" min-width="50" /> <el-table-column prop="deliveryDate" align="center" :label="$t('large.deliveryDate')" min-width="100" /> <el-table-column fixed="right" :label="$t('large.operate')" align="center" width="100"> <template #default="scope"> <el-button size="mini" type="text" plain @click="handleBinda(scope.row)">{{ $t('large.mes') }}</el-button> </template> </el-table-column> </el-table> </div> </el-scrollbar> </el-card> <el-dialog v-model="blinda" top="5vh" width="80%" :title="$t('large.brokeno')"> <el-dialog v-model="blinda" top="5vh" width="85%"> <el-table height="400" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="reportingWorkTime" fixed align="center" :label="$t('large.time')" min-width="110" /> <el-table-column prop="orderId" fixed align="center" :label="$t('large.number')" min-width="110" /> <el-table-column prop="reportingWorkId" align="center" :label="$t('large.jobnumber')" min-width="120" /> <el-table-column prop="productionId" align="center" :label="$t('large.productionnumber')" min-width="130" /> <el-table-column prop="processId" align="center" :label="$t('large.cardnumber')" min-width="140" /> <el-table-column prop="project" align="center" :label="$t('large.projectname')" min-width="110" /> <el-table-column prop="batch" align="center" :label="$t('large.batch')" min-width="110" /> <el-table-column prop="reviewer" align="center" :label="$t('large.detailID')" min-width="110" /> <el-table-column prop="orderSort" align="center" :label="$t('large.serialnumber')" min-width="110" /> <el-table-column prop="productName" align="center" :label="$t('large.productname')" :show-overflow-tooltip="true" min-width="220" /> <el-table-column prop="technologyNumber" align="center" :label="$t('large.serial')" min-width="110" /> <el-table-column prop="glassAddress" align="center" :label="$t('large.slicemarker')" min-width="130" /> <el-table-column prop="patchNum" align="center" :label="$t('large.numberpatches')" min-width="110" /> <el-table-column prop="width" align="center" :label="$t('large.width')" min-width="110" /> <el-table-column prop="height" align="center" :label="$t('large.height')" min-width="110" /> <el-table-column prop="shape" align="center" :label="$t('large.shape')" min-width="110" /> <el-table-column prop="responsibleProcess" align="center" :label="$t('large.responsibleprocess')" min-width="110" /> <el-table-column prop="patchProcesses" align="center" :label="$t('large.process')" min-width="110" /> <el-table-column prop="breakageQuantity" align="center" :label="$t('large.numberfractions')" min-width="110" /> <el-table-column prop="patchReason" align="center" :label="$t('large.breakreason')" min-width="110" /> <el-table-column prop="patchType" align="center" :label="$t('large.breaktype')" min-width="110" /> <el-table-column prop="responsiblePersonnel" align="center" :label="$t('large.responsiblepersonnel')" min-width="110" /> <el-table-column prop="responsibleEquipment" align="center" :label="$t('large.responsiblequipment')" min-width="110" /> <el-table-column prop="responsibleTeam" align="center" :label="$t('large.responsibleteam')" min-width="110" /> <el-table-column prop="patchArea" align="center" :label="$t('large.area')" min-width="110" /> <el-table-column prop="qualityInspector" align="center" :label="$t('large.inspector')" min-width="110" /> <el-table-column prop="orderId" fixed align="center" :label="$t('large.orderId')" min-width="110" /> <el-table-column prop="project" fixed align="center" :label="$t('large.project')" min-width="110" /> <el-table-column prop="productName" fixed align="center" :label="$t('large.productname')" min-width="110" /> <el-table-column prop="width" fixed align="center" :label="$t('large.width')" min-width="100" /> <el-table-column prop="height" fixed align="center" :label="$t('large.height')" min-width="100" /> <el-table-column prop="area" fixed align="center" :label="$t('large.are')" min-width="100" /> <el-table-column prop="quantity" fixed align="center" :label="$t('large.number')" min-width="110" /> <el-table-column prop="processingNote" fixed align="center" :label="$t('large.method')" min-width="110" /> <el-table-column prop="deliveryDate" fixed align="center" :label="$t('large.deliveryDate')" min-width="130" /> </el-table> <template #footer> <div id="dialog-footer" style="text-align: center;"> @@ -133,46 +121,50 @@ const tableDatac = ref([]) const adjustedRects = ref([]); const chartRefs = ref([]); // const flake = ref(false) // const flakeb = ref(false) // const flakec = ref(false) // const flaked = ref(false) // const woshia = ref(false) // const woshic = ref(false) // const dalipiana = ref(false) // const dalipianb = ref(false) // const shangpian = ref(false) // const xiapian1 = ref(false) // const xiapian2 = ref(false) // const xiapian3 = ref(false) // const xiapian4 = ref(false) // const xiapian5 = ref(false) // const xiapian6 = ref(false) const flake = ref(true) const flakeb = ref(true) const flakec = ref(true) const flaked = ref(true) const woshia = ref(true) const woshic = ref(true) const dalipiana = ref(true) const dalipianb = ref(true) const shangpian = ref(true) const xiapian1 = ref(true) const xiapian2 = ref(true) const xiapian3 = ref(true) const xiapian4 = ref(true) const xiapian5 = ref(true) const xiapian6 = ref(true) const flake = ref(false) const flakeb = ref(false) const flakec = ref(false) const flaked = ref(false) const woshia = ref(false) const woshic = ref(false) const dalipiana = ref(false) const dalipianb = ref(false) const shangpian = ref(false) const xiapian1 = ref(false) const xiapian2 = ref(false) const xiapian3 = ref(false) const xiapian4 = ref(false) const xiapian5 = ref(false) const xiapian6 = ref(false) const thisProcess = ref(); // 用于存储process_id的响应式引用 // 定义一个响应式引用来存储图表实例 const chartDom = ref(null); let chartInstance = null; const blinda = ref(false) const handleBinda = (row) => { blinda.value = true; }; const handleBinda = async (row) => { blinda.value = true; await fetchFlowCardId(row.orderId); }; const processesData = ref([]); const fetchFlowCardId = async (orderId) => { try { const response = await request.post('/loadGlass/order/order/selectOrderdetail',{ orderId: orderId }) if (response.code == 200) { ElMessage.success(response.message); tableData.value = response.data; console.log(tableData.value); } else { ElMessage.error(response.message); } } catch (error) { // 处理错误 console.error(error); } } function getStatusType(warehousing) { switch (warehousing) { case 0: @@ -201,7 +193,7 @@ let socket6 = null; const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`; const handleMessage = (data) => { tableData.value = data.awaitingRepairs[0] // tableData.value = data.awaitingRepairs[0] tableDatab.value = data.DoingTask[0] tableDatac.value = data.orders[0] socket.onmessage = (event) => { @@ -224,50 +216,48 @@ } const socketUrl2 = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingIsRun`; const handleMessage2 = (data) => { // const tasks = data.temperingTaskType[0]; // if (tasks && tasks.length >= 4) { // flake.value = tasks[0].state === 1; // flakeb.value = tasks[1].state === 2; // flakec.value = tasks[2].state === 3; // flaked.value = tasks[3].state === 4; // } const tasks = data.temperingTaskType[0]; flake.value = tasks.some(task => task.state == 1); flakeb.value = tasks.some(task => task.state == 2); flakec.value = tasks.some(task => task.state == 3); flaked.value = tasks.some(task => task.state == 4); }; // 卧式理片 const socketUrl3 = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassIsRun`; const handleMessage3 = (data) => { // const tasks = data.taskCaches[0]; // woshia.value = tasks.some(task => task.line == 2001); // woshic.value = tasks.some(task => task.line == 2002); // console.log(tasks); const tasks = data.taskCaches[0]; woshia.value = tasks.some(task => task.line == 2001); woshic.value = tasks.some(task => task.line == 2002); console.log(tasks); }; // 大理片笼 const socketUrl4 = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/isRun`; const handleMessage4 = (data) => { // const tasks = data.bigStorageCageDetailsOutTask[0]; // const taskss = data.bigStorageCageDetailsFeedTask[0]; // dalipiana.value = tasks.some(task => task.slot !== null && task.slot !== undefined); // dalipianb.value = taskss.some(task => task.slot !== null && task.slot !== undefined); const tasks = data.bigStorageCageDetailsOutTask[0]; const taskss = data.bigStorageCageDetailsFeedTask[0]; dalipiana.value = tasks.some(task => task.slot !== null && task.slot !== undefined); dalipianb.value = taskss.some(task => task.slot !== null && task.slot !== undefined); }; // 上片 const socketUrl5 = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlassIsRun`; const handleMessage5 = (data) => { // if(data.engineering.length !==0 ){ // shangpian.value = true; // } if(data.engineering.length !==0 ){ shangpian.value = true; } }; // 下片 const socketUrl6 = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unLoadGlassIsRun`; const handleMessage6 = (data) => { const tasks = data.downWorkstation[0]; // if (tasks && tasks.length >= 6) { // xiapian1.value = tasks[0].racksNumber !== 0; // xiapian2.value = tasks[1].racksNumber !== 0; // xiapian3.value = tasks[2].racksNumber !== 0; // xiapian4.value = tasks[3].racksNumber !== 0; // xiapian5.value = tasks[4].racksNumber !== 0; // xiapian6.value = tasks[5].racksNumber !== 0; // } if (tasks && tasks.length >= 6) { xiapian1.value = tasks[0].racksNumber !== 0; xiapian2.value = tasks[1].racksNumber !== 0; xiapian3.value = tasks[2].racksNumber !== 0; xiapian4.value = tasks[3].racksNumber !== 0; xiapian5.value = tasks[4].racksNumber !== 0; xiapian6.value = tasks[5].racksNumber !== 0; } }; const renderPieCharts = () => { processesData.value.forEach((data, index) => { @@ -445,20 +435,20 @@ #longa{ position: absolute; z-index: 1; width: 29px; width: 33px; height: 5px; background-color: #529b2e; margin-top: -20px; margin-left: 80px; margin-left: 130px; } #longb{ position: absolute; z-index: 1; width: 29px; width: 33px; height: 5px; background-color: #529b2e; margin-top: -20px; margin-left: 150px; margin-left: 235px; } #shangpianji{ position: absolute; @@ -467,60 +457,60 @@ height: 10px; background-color: #529b2e; margin-top: -90px; margin-left: 568px; margin-left: 868px; } #xiapianji1{ position: absolute; z-index: 1; width: 10px; width: 12px; height: 7px; background-color: #529b2e; margin-top: -213px; margin-left: 111px; margin-left: 173px; } #xiapianji2{ position: absolute; z-index: 1; width: 10px; width: 12px; height: 7px; background-color: #529b2e; margin-top: -213px; margin-left: 140px; margin-left: 217px; } #xiapianji3{ position: absolute; z-index: 1; width: 10px; width: 12px; height: 7px; background-color: #529b2e; margin-top: -202px; margin-left: 126px; margin-left: 196px; } #xiapianji4{ position: absolute; z-index: 1; width: 10px; width: 12px; height: 7px; background-color: #529b2e; margin-top: -213px; margin-left: 175px; margin-left: 270px; } #xiapianji5{ position: absolute; z-index: 1; width: 10px; width: 12px; height: 7px; background-color: #529b2e; margin-top: -213px; margin-left: 204px; margin-left: 314px; } #xiapianji6{ position: absolute; z-index: 1; width: 10px; width: 12px; height: 7px; background-color: #529b2e; margin-top: -202px; margin-left: 190px; margin-left: 293px; } </style> hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -149,7 +149,7 @@ arguments.put("controlsId","300"); //拿走:200/破损:201 arguments.put("line","2001"); //线路: arguments.put("machine","冷加工"); //设备名称: edgStorageCageDetailsService.identWorn(arguments); // edgStorageCageDetailsService.identWorn(arguments); log.info("识别台【破损/拿走】:{}", 1); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -2,6 +2,7 @@ import com.mes.downstorage.entity.DownStorageCage; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.entity.request.CacheWornRequest; import com.mes.downstorage.service.DownStorageCageDetailsService; import com.mes.downstorage.service.DownStorageCageService; import com.mes.utils.Result; @@ -61,8 +62,9 @@ @ApiOperation("删除缓存理片笼信息 功能:对笼内栅格玻璃进行【清除】") @PostMapping("/deleteDownStorageCage") @ResponseBody public Result deleteDownStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails,int downStorageCageId) { boolean isSucess=downStorageCageService.updateDownStorageCageDetails(downStorageCageId,downStorageCageDetails); public Result deleteDownStorageCage(@RequestBody CacheWornRequest cacheWornRequest) { downStorageCageService.deleteDownStorageCage(cacheWornRequest); // boolean isSucess=downStorageCageService.updateDownStorageCageDetails(downStorageCageId,downStorageCageDetails); return Result.build(200,"删除成功",1); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -4,6 +4,7 @@ import com.mes.downglassinfo.entity.DownGlassTask; import com.mes.downstorage.entity.DownStorageCage; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.entity.request.CacheWornRequest; import com.mes.glassinfo.entity.GlassInfo; import java.util.List; @@ -53,6 +54,8 @@ List<Map<String, Object>> selectDownStorageCages(); List<DownStorageCageDetails> selectCacheMax(); void deleteDownStorageCage(CacheWornRequest cacheWornRequest); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,14 +1,18 @@ package com.mes.downstorage.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.common.config.Const; import com.mes.damage.entity.Damage; import com.mes.damage.service.DamageService; import com.mes.downglassinfo.entity.DownGlassTask; import com.mes.downglassinfo.service.DownGlassTaskService; import com.mes.downstorage.entity.DownStorageCage; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.entity.request.CacheWornRequest; import com.mes.downstorage.mapper.DownStorageCageDetailsMapper; import com.mes.downstorage.mapper.DownStorageCageMapper; import com.mes.downstorage.service.DownStorageCageDetailsService; @@ -46,6 +50,8 @@ private DownStorageCageDetailsService downStorageCageDetailsService; @Autowired private DownStorageCageDetailsMapper downStorageCageDetailsMapper; @Autowired DamageService damageService; @Override public DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, Integer taskType) { @@ -128,7 +134,6 @@ } @Override public List<Map<String, Object>> selectDownStorageCages() { return baseMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCage.class) @@ -190,7 +195,10 @@ if (downItem != null) { //移除 DownStorageCageDetails result = downStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<DownStorageCageDetails>().eq(DownStorageCageDetails::getSlot, downStorageCageId)); DownStorageCageDetails result = downStorageCageDetailsMapper .selectOne(new MPJLambdaWrapper<DownStorageCageDetails>() .eq(DownStorageCageDetails::getSlot, downStorageCageId) ); if (result != null) { result.setSlot(0); downStorageCageDetailsMapper.updateById(result); @@ -200,4 +208,19 @@ return true; } @Override public void deleteDownStorageCage(CacheWornRequest cacheWornRequest) { Damage damage = new Damage(); BeanUtils.copyProperties(cacheWornRequest, damage); damage.setType(cacheWornRequest.getState()); damage.setRemark(""); damage.setStatus(0); damageService.insertDamage(damage); downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>() .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT) .eq(DownStorageCageDetails::getGlassId, cacheWornRequest.getGlassId()) .eq(DownStorageCageDetails::getState,Const.GLASS_STATE_IN)); } }