From d5d0d1c7a84b996b9bbcebfaf2c2c95f1a5a3678 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期五, 11 十月 2024 08:39:15 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- UI-Project/src/views/UnLoadGlass/loadmachinerack.vue | 277 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 201 insertions(+), 76 deletions(-) diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue index e72c5e9..5a918af 100644 --- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue +++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue @@ -1,25 +1,30 @@ <script setup> -import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue"; -import {useRouter} from "vue-router" -import {useI18n} from 'vue-i18n' -import {ElMessage} from 'element-plus' +import { onBeforeUnmount, onMounted, onUnmounted, reactive, ref } from "vue"; +import { useRouter } from "vue-router" +import { useI18n } from 'vue-i18n' +import { ElMessage } from 'element-plus' import request from "@/utils/request"; -import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; -import {host, WebSocketHost} from '@/utils/constants' +import { closeWebSocket, initializeWebSocket } from '@/utils/WebSocketService'; +import { host, WebSocketHost } from '@/utils/constants' import PrintFlow from "@/views/UnLoadGlass/PrintFlow.vue"; import Landingindication from "./Landingindication.vue"; import Landingindicationtwo from "./Landingindicationtwo.vue"; +import PrintLabel from "@/views/UnLoadGlass/PrintCustomLabelSemi1.vue"; const router = useRouter() -const {t} = useI18n() +const { t } = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') const printLoading = ref(true) const fullFlowCard = ref('') const autoPrint = ref(false) +const takeGlass = ref([]) +const scanGlass = ref([]) + const dialogFormVisiblea = ref(false) const dialogFormVisiblea2 = ref(false) const dialogFormVisibleaDownGlass = ref(false) +const dialogFormVisibleaDownGlasss = ref(false) // 鏁版嵁 const loading = ref(false); // 寮规鏄剧ず鎺у埗 @@ -36,10 +41,12 @@ const selectValuesa = reactive({}); const selectOptionsa = ref([]); const dialogTableVisible = ref(false) +const dialogTableVisible1 = ref(false) const printFlowCardId = ref('') const printLayer = ref('') const now = new Date(); -const timeRange = ref([new Date(now.setHours(0, 0, 0, 0)), new Date(now.setHours(23, 59, 59, 999))]) +const timeRange = ref([]) +const browser = ref(false) const handleChange = async () => { console.log("瑙﹀彂寮�鍏�") @@ -62,7 +69,15 @@ console.error(error); } } - +const confirmBrowser = () => { + if (/chrome|chromium/i.test(navigator.userAgent) && !/edg/i.test(navigator.userAgent)) { + browser.value = true + } else if (/edg/i.test(navigator.userAgent)) { + browser.value = false + } else { + browser.value = false + } +} const handleInputChangea = (value, rowId) => { // 鏇存柊瀵瑰簲琛岀殑 select 鍊� @@ -87,7 +102,7 @@ if (response.code === 200) { flowCardOptions.value = response.data.filter(item => item !== null) - .map(item => ({flowcard_id: item.flow_card_id})); + .map(item => ({ flowcard_id: item.flow_card_id })); console.log(flowCardOptions.value); } else { @@ -107,7 +122,6 @@ flowCardId: firstPart, layer: twoPart }); - console.log(response) if (response.code == 200) { // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫 console.log('缁戝畾鎴愬姛'); @@ -133,7 +147,7 @@ const handleBindRack2 = (row) => { workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕 dialogFormVisiblea2.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗� - workFlowCard.value=row.flowCardId; + workFlowCard.value = row.flowCardId; }; //娓呴櫎鍐呭 const handleclear = async () => { @@ -148,8 +162,8 @@ console.log('娓呴櫎鎴愬姛'); ElMessage.success(response.message); dialogFormVisiblea2.value = false; - if(fullFlowCard.value==workFlowCard.value){ - fullFlowCard.value=""; + if (fullFlowCard.value == workFlowCard.value) { + fullFlowCard.value = ""; } } else if (response.code === 500) { // 娓呴櫎澶辫触鐨勯�昏緫 @@ -191,7 +205,7 @@ // 鏇存柊 tableData 鐨勬暟鎹� if (data.downGlassInfos != null) { - downGlass.value = data.downGlassInfos[0][1]; + downGlass.value = data.downGlassInfos[0]; } if (data.engineerIdList != null) { selectOptionsa.value = data.engineerIdList[0] @@ -199,9 +213,31 @@ if (data.autoPrint != null) { autoPrint.value = data.autoPrint[0]; } + if (data.takeGlass != null) { + + takeGlass.value = data.takeGlass[0]; + // takeGlass.value 鏄竴涓┖瀵硅薄 + let width = takeGlass.value.width; + let height = takeGlass.value.height; + if (width < height) { + takeGlass.value.width = height; + takeGlass.value.height = width; + } - - if (fullFlowCard.value == ""&&autoPrint.value==true) { + + } + if (data.scanGlass != null) { + scanGlass.value = data.scanGlass[0]; + let width = scanGlass.value.width; + let height = scanGlass.value.height; + if (width < height) { + scanGlass.value.width = height; + scanGlass.value.height = width; + } + } + + //鑷姩鎵撳嵃 + if (fullFlowCard.value == "" && autoPrint.value == true && browser.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) { @@ -215,7 +251,7 @@ } } } - if(data.params!=null){ + if (data.params != null) { tableData.splice(0, tableData.length, ...data.params[0]); } @@ -223,6 +259,7 @@ }; // 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁� onMounted(() => { + confirmBrowser();//鑾峰彇娴忚鍣� fetchFlowCardId(); fetchTableData(); // 鑾峰彇鏁版嵁 socket = initializeWebSocket(socketUrl, handleMessage); @@ -293,11 +330,19 @@ printLayer.value = row.layer dialogTableVisible.value = true; setTimeout(() => { - printFlowCard(); // 鏇挎崲鎴愪綘瑕佹墽琛岀殑鍑芥暟鍚� + printFlowCard(); dialogTableVisible.value = false; - }, 1000); - ; + }, 2000); +} +const open1 = async (row) => { + printFlowCardId.value = row.flowCardId; + printLayer.value = row.layer + dialogTableVisible1.value = true; + setTimeout(() => { + printFlowCard1(); + //dialogTableVisible1.value = false; + }, 1000); } const printFlowCard = () => { @@ -311,20 +356,65 @@ let content = doc.createElement("div"); content.id = printId; + // alert(/Chrome/.test(userAgent) && !/Edge/.test(userAgent)); + + // 鏍峰紡鎺у埗涓庢墦鍗版棤鍏崇殑鍏冪礌闅愯棌 + let style = doc.createElement("style"); + console.log("style1:" + style.innerHTML) + style.innerHTML = + "body>#" + + printId + + "{display:none;}@media print{" + + "@page {" + + " size: auto; " + + " margin: 10mm 5mm 10mm 5mm; " + + " }body>:not(#" + + printId + + "){display:none !important;}body>#" + + printId + + "{display:block;}#" + + printId + + "{display: block; padding: 0; margin: 0; width: 100%; position: absolute; top: 0; left: 0; height: 100vh; box-sizing: border-box;}} "; + + content.innerHTML = el.outerHTML; + // // console.log("el.outerHTML", el.outerHTML); + body.appendChild(style); + + // 涓巗tyle鍏冪礌璁剧疆鐨勬牱寮忕浉閰嶅悎 + // 鎶婃墦鍗板唴瀹圭殑鍏冪礌娣诲姞鍒癰ody(浣滀负body鐨勫瓙鍏冪礌锛屽彲鐢╞ody鐨勫瓙閫夋嫨鍣� '>' 鎺у埗鎵撳嵃鏍峰紡) + body.appendChild(content); + setTimeout(() => { + window.print(); + body.removeChild(content); + body.removeChild(style); + }, 20); +} + +const printFlowCard1 = () => { + // 闇�瑕佹墦鍗扮殑灞�閮ㄥ尯鍩熻祴浜�"print-wrap"鐨刬d + 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 style = doc.createElement("style"); style.innerHTML = - "body>#" + - printId + - "{display:none}@media print{" + - "@page {" + - " size: auto; " + - " margin: 10mm 2mm 10mm 1mm; " + - " }body>:not(#" + - printId + - "){display:none !important}body>#" + - printId + - "{display:block;padding-top:1px}}"; + "body>#" + + printId + + "{display:none}@media print{" + + "@page {" + + " size: auto; " + + " margin: 2mm 2mm 2mm 2mm; " + + " }body>:not(#" + + printId + + "){display:none !important}body>#" + + printId + + "{display:block;padding-top:1px}}"; // content.innerHTML = el.outerHTML; // // console.log("el.outerHTML", el.outerHTML); @@ -341,6 +431,8 @@ } + + // beforeUnmount(() => { // closeWebSocket(); // }); @@ -348,25 +440,28 @@ </script> <template> <div> - <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" - @click="dialogFormVisibleaDownGlass = true">钀芥灦璇︽儏 + <el-button style="margin-top: 10px;margin-left: 10px;margin-bottom: 10px;" id="searchButton" type="primary" + @click="dialogFormVisibleaDownGlass = true">钀芥灦璇︽儏 </el-button> - <el-switch style="margin-top: 5px;margin-left: 10px;" v-model="autoPrint" class="mb-2" :inactive-text="$t('鑷姩鎵撳嵃')" - @change="handleChange"/> + <el-button style="margin-top: 10px;margin-left: 10px;margin-bottom: 10px;" id="searchButton" type="primary" + @click="dialogFormVisibleaDownGlasss = true">浜哄伐涓嬬墖 + </el-button> + <el-switch style="margin-top: 10px;margin-left: 15px;margin-bottom: 10px;" v-model="autoPrint" class="mb-2" + :inactive-text="$t('鑷姩鎵撳嵃')" @change="handleChange" /> <el-card style="flex: 1;" v-loading="loading"> <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> - <el-table height="200px" ref="table" @selection-change="handleSelectionChange" :data="tableData" - :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> - <el-table-column prop="workstationId" align="center" :label="$t('reportWork.lowerbit')" min-width="80"/> + <el-table height="350px" ref="table" @selection-change="handleSelectionChange" :data="tableData" + :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> + <el-table-column prop="workstationId" align="center" :label="$t('reportWork.lowerbit')" min-width="80" /> <el-table-column prop="workstationId" align="center" :label="$t('reportWork.shelfnumber')" - min-width="120"/> - <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="150"/> + min-width="120" /> + <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="150" /> <el-table-column prop="totalQuantity" align="center" :label="$t('reportWork.totalquantity')" - min-width="120"/> - <el-table-column prop="racksNumber" align="center" :label="$t('reportWork.beendropped')" min-width="120"/> - <el-table-column prop="layer" align="center" label="灞傛暟" min-width="120"/> - <el-table-column prop="otherNumber" align="center" label="浜哄伐涓嬬墖鏁�" min-width="120"/> + min-width="120" /> + <el-table-column prop="racksNumber" align="center" :label="$t('reportWork.beendropped')" min-width="120" /> + <el-table-column prop="layer" align="center" label="灞傛暟" min-width="120" /> + <el-table-column prop="otherNumber" align="center" label="浜哄伐涓嬬墖鏁�" min-width="120" /> <!-- <el-table-column prop="work_state" align="center" :label="$t('reportWork.state')" min-width="120" /> --> <el-table-column prop="deviceId" align="center" :label="$t('reportWork.devicenumber')" min-width="120" /> <el-table-column align="center" :label="$t('reportWork.startstatus')" min-width="80" prop="enableState"> @@ -376,22 +471,22 @@ </el-tag> </template> </el-table-column> - <el-table-column fixed="right" :label="$t('reportWork.operate')" align="center" width="200"> + <el-table-column fixed="right" :label="$t('reportWork.operate')" align="center" width="400"> <template #default="scope"> <el-button size="mini" type="text" plain v-show="scope.row.enableState !== '宸插惎鐢�'" - @click="handleBindRack(scope.row)">{{ $t('reportWork.bindingshelves') }} + @click="handleBindRack(scope.row)">{{ $t('reportWork.bindingshelves') }} </el-button> <el-button size="mini" type="text" plain @click="handleBindRack2(scope.row)">{{ $t('reportWork.clear') }}</el-button> - <el-button @click="open(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃</el-button> + <el-button @click="open(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃娴佺▼鍗�</el-button> + <el-button @click="open1(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃鏍囩</el-button> </template> </el-table-column> </el-table> </div> - <el-dialog v-model="dialogFormVisibleaDownGlass" top="2vh" width="97%" - :title="$t('searchOrder.cageinformation')"> + <el-dialog v-model="dialogFormVisibleaDownGlass" top="2vh" width="97%" :title="$t('钀芥灦淇℃伅')"> <el-select v-model="selectValuesa[0]" filterable :placeholder="$t('璇烽�夋嫨宸ヤ綅')" clearable> <el-option label="鍏ㄩ儴" value="0"></el-option> <el-option label="1" value="1"></el-option> @@ -401,41 +496,71 @@ <el-option label="5" value="5"></el-option> <el-option label="6" value="6"></el-option> <el-option label="7" value="7"></el-option> - <el-option label="8" value="8"></el-option> - <el-option label="9" value="9"></el-option> - <el-option label="10" value="10"></el-option> </el-select> <el-select v-model="selectValuesa[1]" filterable :placeholder="$t('basicData.plselectproject')" clearable - @input="handleInputChangea($event, row.id)"> - <el-option v-for="item in selectOptionsa" :key="item" :label="item" :value="item"/> + @input="handleInputChangea($event, row.id)"> + <el-option v-for="item in selectOptionsa" :key="item" :label="item" :value="item" /> </el-select> <span class="demonstration">鏃堕棿娈�</span> <el-date-picker v-model="timeRange" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> + value-format="YYYY-MM-DD hh:mm:ss" end-placeholder="缁撴潫鏃ユ湡"> </el-date-picker> <el-button type="primary" style="margin-left: 10px;" @click="selectDownGlassData()">{{ - $t('reportmanage.inquire') - }} + $t('reportmanage.inquire') + }} </el-button> <el-table height="200px" ref="table" @selection-change="handleSelectionChange" :data="downGlass" - :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> - <el-table-column prop="workStationId" align="center" :label="$t('宸ヤ綅鍙�')" min-width="80"/> - <el-table-column prop="engineerId" align="center" :label="$t('宸ョ▼鍙�')" min-width="80"/> - <el-table-column prop="flowCardId" align="center" :label="$t('娴佺▼鍗″彿')" min-width="80"/> - <el-table-column prop="layer" align="center" :label="$t('灞�')" min-width="120"/> - <el-table-column prop="sequence" align="center" :label="$t('椤哄簭')" min-width="150"/> - <el-table-column prop="width" align="center" :label="$t('瀹�')" min-width="120"/> - <el-table-column prop="height" align="center" :label="$t('楂�')" min-width="120"/> - <el-table-column prop="Filmsid" align="center" :label="$t('鑶滅郴')" min-width="120"/> - <el-table-column prop="thickness" align="center" label="鍘氬害" min-width="120"/> - <el-table-column prop="glassId" align="center" :label="$t('鐜荤拑id')" min-width="120"/> - + :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }"> + <el-table-column prop="workStationId" align="center" :label="$t('宸ヤ綅鍙�')" min-width="80" /> + <el-table-column prop="engineerId" align="center" :label="$t('宸ョ▼鍙�')" min-width="80" /> + <el-table-column prop="flowCardId" align="center" :label="$t('娴佺▼鍗″彿')" min-width="80" /> + <el-table-column prop="layer" align="center" :label="$t('灞�')" min-width="120" /> + <el-table-column prop="sequence" align="center" :label="$t('椤哄簭')" min-width="150" /> + <el-table-column prop="width" align="center" :label="$t('瀹�')" min-width="120" /> + <el-table-column prop="height" align="center" :label="$t('楂�')" min-width="120" /> + <el-table-column prop="Filmsid" align="center" :label="$t('鑶滅郴')" min-width="120" /> + <el-table-column prop="thickness" align="center" label="鍘氬害" min-width="120" /> + <el-table-column prop="glassId" align="center" :label="$t('鐜荤拑id')" min-width="120" /> </el-table> </el-dialog> + <el-dialog v-model="dialogFormVisibleaDownGlasss" top="2vh" width="97%" :title="$t('浜哄伐涓嬬墖淇℃伅')"> + <div style="display:flex;justify-content: space-around;"> + <el-card + style="display: flex; justify-content: center; align-items: center; width:800px; height: 800px;position: relative;"> + <div + :style="{ width: takeGlass.width + 'px', height: takeGlass.height + 'px', backgroundColor: '#e1f3d8', transform: 'scale(' + 800 / (takeGlass.width > takeGlass.height ? takeGlass.width : takeGlass.height) + ')' }"> + </div> + <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:170px;"> + <div>浜哄伐涓嬬墖褰撳墠鐜荤拑淇℃伅</div> + <div>{{ takeGlass.flowCardId }}</div> + <div>{{ takeGlass.layer }}</div> + <div>{{ takeGlass.glassId }}</div> + <div>{{ takeGlass.width }}</div> + <div>{{ takeGlass.height }}</div> + </div> + </el-card> + <el-card + style="display: flex; justify-content: center; align-items: center; width: 800px; height: 800px;position: relative;"> + <div + :style="{ width: scanGlass.width + 'px', height: scanGlass.height + 'px', backgroundColor: '#e1f3d8', transform: 'scale(' + 800 / (scanGlass.width > scanGlass.height ? scanGlass.width : scanGlass.height) + ')' }"> + + </div> + <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:200px;"> + <div>鎵爜鏋綋鍓嶇幓鐠冧俊鎭�</div> + <div>{{ scanGlass.flowCardId }}</div> + <div>{{ scanGlass.layer }}</div> + <div>{{ scanGlass.glassId }}</div> + <div>{{ scanGlass.width }}</div> + <div>{{ scanGlass.height }}</div> + + </div> + </el-card> + </div> + </el-dialog> </el-card> <!-- workstationId: '1', workstationId: '1005', @@ -465,7 +590,7 @@ <el-form-item :label="$t('reportWork.cardnumbera')" :required="true" style="width: 25vw;"> <el-select v-model="flowCardId" :placeholder="$t('reportWork.incardnumber')"> <el-option v-for="item in flowCardOptions" :key="item.flowcard_id" :label="item.flowcard_id" - :value="item.flowcard_id"/> + :value="item.flowcard_id" /> </el-select> </el-form-item> </el-form> @@ -492,12 +617,12 @@ </template> </el-dialog> - <el-dialog id="sizePrintCalrd" v-model="dialogTableVisible" destroy-on-close style="width: 75%;height:75% "> - <!-- <template #header="{ close, titleId, titleClass }"> - <el-button @click="printFlowCard" >鎵撳嵃</el-button> - </template> --> + <el-dialog id="sizePrintCalrd" v-model="dialogTableVisible" destroy-on-close> <print-flow id="child" :printFlowCardId="printFlowCardId" :printLayer="printLayer" - style="width: 100%;height: 100%"/> + style="width: 100%;height: 100%" /> + </el-dialog> + <el-dialog id="sizePrintCalrd1" v-model="dialogTableVisible1" destroy-on-close> + <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer" style="" /> </el-dialog> </template> -- Gitblit v1.8.0