From e00b54ec7322cf7cba5883e17f2e2843f71b8833 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 20 十一月 2025 17:05:54 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override
---
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue | 328 +++++++++++++++++++++++++++++-------------------------
1 files changed, 176 insertions(+), 152 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
index 11152f2..408dba6 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -1,7 +1,7 @@
<script setup>
import request from "@/utils/request"
import {ElDatePicker, ElMessage} from "element-plus"
-import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
+import {nextTick, onMounted, onUnmounted, reactive, ref, watch, computed } from "vue"
import {Search} from "@element-plus/icons-vue"
import {useRouter} from 'vue-router'
import {changeFilterEvent, filterChanged} from "@/hook"
@@ -277,148 +277,171 @@
}
}
+
+// 鍘熷鍥剧墖鏁扮粍 picture
+
+// 1. 鎸� orderNumber 鍒嗙粍
+const pictureMap = computed(() => {
+ const map = {}
+ picture.value.forEach(p => {
+ if (!map[p.orderNumber]) map[p.orderNumber] = []
+ map[p.orderNumber].push(p)
+ })
+ return map
+})
+
+// 2. 鏍规嵁娴佺▼鍗� detailList 鍚堝苟搴忓彿瀵瑰簲鍥剧墖
+const getPicturesByDetailList = (detailList) => {
+ let pics = []
+ detailList.forEach(d => {
+ const num = d.order_number
+ if (pictureMap.value[num]) {
+ pics = pics.concat(pictureMap.value[num])
+ }
+ })
+ return pics
+}
</script>
<template>
<!-- <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>-->
<div id="printFlowCard">
- <table v-for="(item,id) in produceList" id="contentTable" :key="id" style="border-bottom: none">
- <thead>
- <tr v-for="(itemFlow,index) in item.detail" :key="index">
- <td colspan="31">
- <div style="float: left;"><img id="img-pic" style="width: 42px;height: 32px" src="@/assets/northGlass.ico" alt=""><input style="border: none;font-size: 28px;width: 70px;margin: 5px "/></div>
- <div id="bj" v-if="printFc=='true'" style="float: right;font-size: 28px">{{ id + 1 }}</div>
- <div id="bj" v-else style="float: right;font-size: 28px"></div>
- <div>{{ company.companyName }}</div>
+<div id="contentDiv" v-for="(item,id) in produceList" :key="id">
+ <table id="contentTable" style="border-bottom: none">
+ <thead>
+ <tr v-for="(itemFlow,index) in item.detail" :key="index">
+ <td colspan="31">
+ <div style="float: left;"><img id="img-pic" style="width: 42px;height: 32px" src="@/assets/northGlass.ico" alt=""><input style="border: none;font-size: 28px;width: 70px;margin: 5px "/></div>
+ <div id="bj" v-if="printFc=='true'" style="float: right;font-size: 28px">{{ id + 1 }}</div>
+ <div id="bj" v-else style="float: right;font-size: 28px"></div>
+ <div>{{ company.companyName }}</div>
+ <div>
+ 鐢熶骇娴佺▼鍗�<span style="font-weight: bold" v-if="printProject!=null">({{ printProject }})</span>
+ <span style="font-weight: bold" v-if="props.compound!=null">({{ props.compound }}灞傚悓鏋�)</span>
+ </div>
+ <div style="font-weight: bolder;display: flex;justify-content:space-between">
<div>
- 鐢熶骇娴佺▼鍗�<span style="font-weight: bold" v-if="printProject!=null">({{ printProject }})</span>
- <span style="font-weight: bold" v-if="props.compound!=null">({{ props.compound }}灞傚悓鏋�)</span>
- </div>
- <div style="font-weight: bolder;display: flex;justify-content:space-between">
- <div>
- 鎵撳嵃浜猴細{{user.user.userName}}
- 鏃堕棿锛歿{formattedTime}}
-
- <span style="font-weight: bolder;" >
+ 鎵撳嵃浜猴細{{user.user.userName}}
+ 鏃堕棿锛歿{formattedTime}}
+
+ <span style="font-weight: bolder;" >
鎬绘暟閲忥細{{itemFlow.orderQuantity}}
鎬婚潰绉細{{itemFlow.orderArea}}
</span>
-
- <span style="font-weight: bolder;" >
+
+ <span style="font-weight: bolder;" >
鎵撳嵃鎬绘暟閲忥細{{totalQuantity}}
鎵撳嵃鎬婚潰绉細{{totalArea}}
</span>
- </div>
- <div>
- <span v-if="name=='澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙TJBB-QR7.1-01锛�'" style="font-size: 10px">{{itemFlow.otherRemarks}}</span>
- {{itemFlow.rack}}
- 娴佺▼鍗″彿锛� {{
- itemFlow.process_id
- }}/{{ itemFlow.technologyNumber }} 鍏� {{ item.count }} 鏋�
- </div>
</div>
- </td>
- </tr>
- <tr v-for="(items,index) in item.detail" :key="index">
- <td class="tdNowrap">瀹㈡埛鍚嶇О锛�</td>
- <td colspan="2">{{ items.customer_name }}</td>
- <td class="tdNowrap">椤圭洰鍚嶇О锛�</td>
- <td colspan="4" style="min-width: 250px;">{{ items.projectBatch }}</td>
- <td class="tdNowrap">宸ヨ壓娴佺▼锛�</td>
- <td :colspan="2+item.processList.length*2" style="width: 500px">{{ items.process }}</td>
- </tr>
- <tr v-for="(itemTr,index) in item.detail" :key="index">
- <td class="tdNowrap">纾ㄨ竟绫诲瀷锛�</td>
- <td v-if="name=='澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙TJBB-QR7.1-01锛�'" colspan="2">{{ itemTr.other_remarks }}</td>
- <td v-else colspan="2">{{ itemTr.edging_type }}</td>
- <td class="tdNowrap">鍗曠墖鍚嶇О锛�</td>
- <td colspan="4">{{ itemTr.glass_child }}</td>
- <td class="tdNowrap">浜у搧鍚嶇О锛�</td>
- <td :colspan="2+item.processList.length*2">{{ itemTr.product_name }}</td>
- </tr>
- <tr>
- <td rowspan='2'>搴忓彿</td>
- <td rowspan='2'>鍥惧彿</td>
- <td rowspan='2'>缂栧彿</td>
- <td rowspan="2">灏忕墖椤哄簭</td>
- <td v-if="name=='娴欐睙宸ㄦ槦鍢夋嘲鏂版潗鏂欐湁闄愬叕鍙�'" rowspan='2' style="width: 90px">瀹�(寮ч暱)*楂�</td>
- <td v-else rowspan='2' style="width: 90px">瀹�*楂�</td>
- <td rowspan='2' >鏁伴噺</td>
- <td rowspan='2'>闈㈢Н</td>
- <td rowspan='2'>鍛ㄩ暱</td>
- <td rowspan='2'>鍗婂緞/澶囨敞</td>
- <td rowspan='2'>澶囨敞</td>
- <td v-for="(itemPr,index) in item.processList" :key="index" colspan="2">{{ itemPr.process }}</td>
- </tr>
- <tr>
- <template v-for=" n in item.processList.length">
- <td>{{ company.printLabel.printFlowCard.patch }}</td>
- <td>{{ company.printLabel.printFlowCard.lackOf }}</td>
- </template>
- </tr>
- </thead>
- <tbody>
+ <div>
+ <span v-if="name=='澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙TJBB-QR7.1-01锛�'" style="font-size: 10px">{{itemFlow.otherRemarks}}</span>
+ {{itemFlow.rack}}
+ 娴佺▼鍗″彿锛� {{
+ itemFlow.process_id
+ }}/{{ itemFlow.technologyNumber }} 鍏� {{ item.count }} 鏋�
+ </div>
+ </div>
+ </td>
+ </tr>
+ <tr v-for="(items,index) in item.detail" :key="index">
+ <td class="tdNowrap">瀹㈡埛鍚嶇О锛�</td>
+ <td colspan="2">{{ items.customer_name }}</td>
+ <td class="tdNowrap">椤圭洰鍚嶇О锛�</td>
+ <td colspan="4" style="min-width: 250px;">{{ items.projectBatch }}</td>
+ <td class="tdNowrap">宸ヨ壓娴佺▼锛�</td>
+ <td :colspan="2+item.processList.length*2" style="width: 500px">{{ items.process }}</td>
+ </tr>
+ <tr v-for="(itemTr,index) in item.detail" :key="index">
+ <td class="tdNowrap">纾ㄨ竟绫诲瀷锛�</td>
+ <td v-if="name=='澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙TJBB-QR7.1-01锛�'" colspan="2">{{ itemTr.other_remarks }}</td>
+ <td v-else colspan="2">{{ itemTr.edging_type }}</td>
+ <td class="tdNowrap">鍗曠墖鍚嶇О锛�</td>
+ <td colspan="4">{{ itemTr.glass_child }}</td>
+ <td class="tdNowrap">浜у搧鍚嶇О锛�</td>
+ <td :colspan="2+item.processList.length*2">{{ itemTr.product_name }}</td>
+ </tr>
+ <tr>
+ <td rowspan='2'>搴忓彿</td>
+ <td rowspan='2'>鍥惧彿</td>
+ <td rowspan='2'>缂栧彿</td>
+ <td rowspan="2">灏忕墖椤哄簭</td>
+ <td rowspan='2' style="width: 90px">瀹�(寮ч暱)*楂�</td>
+ <td rowspan='2' >鏁伴噺</td>
+ <td rowspan='2'>闈㈢Н</td>
+ <td rowspan='2'>鍛ㄩ暱</td>
+ <td rowspan='2'>鍗婂緞/澶囨敞</td>
+ <td rowspan='2'>澶囨敞</td>
+ <td v-for="(itemPr,index) in item.processList" :key="index" colspan="2">{{ itemPr.process }}</td>
+ </tr>
+ <tr>
+ <template v-for=" n in item.processList.length">
+ <td>{{ company.printLabel.printFlowCard.patch }}</td>
+ <td>{{ company.printLabel.printFlowCard.lackOf }}</td>
+ </template>
+ </tr>
+ </thead>
+ <tbody>
- <tr v-for="(itemDatile,index) in item.detailList" :key="index">
- <td>{{ itemDatile.order_number }}</td>
- <td>{{ itemDatile.mapNumber }}</td>
- <td v-if="name=='閲戝崕绂忓枩澶╂垚鐜荤拑鏈夐檺鍏徃'">{{ itemDatile.building_number }}</td>
- <td v-else>{{ itemDatile.s01Value }}</td>
- <td>{{ itemDatile.technology_number }}</td>
- <td>{{ itemDatile.child_width }}</td>
- <td class="item" style="width: 60px;height: 100%;">
- <input v-model="itemDatile.quantity" style="width: 100%;height: 100%;font-weight: bold;" @keyup="handleSummary()"/>
- </td>
- <td>{{ itemDatile.total_area }}</td>
- <td>{{ itemDatile.perimeter }}</td>
- <td>{{ itemDatile.bend_radius }}</td>
- <td v-if="name!='閲戝崕绂忓枩澶╂垚鐜荤拑鏈夐檺鍏徃'" style="white-space: normal; word-break: break-all; word-wrap: break-word;">{{ itemDatile.remarks }}</td>
- <td v-else>{{ itemDatile.remarks }}</td>
- <template v-for=" n in item.processList.length">
- <td></td>
- <td></td>
- </template>
- </tr>
- <tr style="height: 14px">
- <td v-for="(itemsum,index) in item.detail" :key="index" colspan="31">
- 鏁伴噺锛�
- <label>{{ itemsum.quantity }}</label>
- 闈㈢Н锛�
- <label>{{ itemsum.gross_area }}</label>
- 閲嶉噺锛�
- <label>{{ parseFloat(itemsum.weight.toFixed(2)) }}</label>
- </td>
- </tr>
- <tr v-for="(itemtextarea,index) in item.detail" :key="index">
+ <tr v-for="(itemDatile,index) in item.detailList" :key="index">
+ <td>{{ itemDatile.order_number }}</td>
+ <td>{{ itemDatile.mapNumber }}</td>
+ <td v-if="name=='閲戝崕绂忓枩澶╂垚鐜荤拑鏈夐檺鍏徃'">{{ itemDatile.building_number }}</td>
+ <td v-else>{{ itemDatile.s01Value }}</td>
+ <td>{{ itemDatile.technology_number }}</td>
+ <td>{{ itemDatile.child_width }}</td>
+ <td class="item" style="width: 60px;height: 100%;">
+ <input v-model="itemDatile.quantity" style="width: 100%;height: 100%;font-weight: bold;" @keyup="handleSummary()"/>
+ </td>
+ <td>{{ itemDatile.total_area }}</td>
+ <td>{{ itemDatile.perimeter }}</td>
+ <td>{{ itemDatile.bend_radius }}</td>
+ <td>{{ itemDatile.remarks }}</td>
+ <template v-for=" n in item.processList.length">
+ <td></td>
+ <td></td>
+ </template>
+ </tr>
+ <tr style="height: 14px">
+ <td v-for="(itemsum,index) in item.detail" :key="index" colspan="31">
+ 鏁伴噺锛�
+ <label>{{ itemsum.quantity }}</label>
+ 闈㈢Н锛�
+ <label>{{ itemsum.gross_area }}</label>
+ 閲嶉噺锛�
+ <label>{{ parseFloat(itemsum.weight.toFixed(2)) }}</label>
+ </td>
+ </tr>
+ <tr v-for="(itemtextarea,index) in item.detail" :key="index">
- <td>瀹屽伐绛惧悕</td>
+ <td>瀹屽伐绛惧悕</td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <template v-for=" n in item.processList.length">
<td colspan="2"></td>
+ </template>
+ </tr>
+ <tr>
+ <td>鐢熶骇鏃ユ湡</td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <td colspan="2"></td>
+ <template v-for=" n in item.processList.length">
<td colspan="2"></td>
- <td colspan="2"></td>
- <td colspan="2"></td>
- <td colspan="2"></td>
- <template v-for=" n in item.processList.length">
- <td colspan="2"></td>
- </template>
- </tr>
- <tr>
- <td>鐢熶骇鏃ユ湡</td>
- <td colspan="2"></td>
- <td colspan="2"></td>
- <td colspan="2"></td>
- <td colspan="2"></td>
- <td colspan="2"></td>
- <template v-for=" n in item.processList.length">
- <td colspan="2"></td>
- </template>
- </tr>
+ </template>
+ </tr>
- <tr>
- <td>鍘熺墖绠卞彿</td>
- <td colspan="31"></td>
- </tr>
- <tr v-for="(qrCodeItem,index) in item.detail" :key="index">
- <td colspan="31">
+ <tr>
+ <td>鍘熺墖绠卞彿</td>
+ <td colspan="31"></td>
+ </tr>
+ <tr v-for="(qrCodeItem,index) in item.detail" :key="index">
+ <td colspan="31">
<span style="display: flex;">
<span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 250px">
<div class='qrCode' style="width: 80px;height: 80px;">
@@ -429,32 +452,30 @@
}}</span>
</span>
</span>
- </td>
+ </td>
- </tr>
- <tr v-if="company.remarkSwitch=='1'">
- <td colspan="31">
- <div style="display: flex;flex-wrap: wrap;">
- <div class="nuber_xx" v-for="(itemremark,index) in item.remarkList" :key="index">
+ </tr>
+ <tr v-if="company.remarkSwitch=='1'">
+ <td colspan="31">
+ <div style="display: flex;flex-wrap: wrap;">
+ <div class="nuber_xx" v-for="(itemremark,index) in item.remarkList" :key="index">
<span v-if="!(itemremark.S02==null&&itemremark.S03==null&&itemremark.S04==null&&itemremark.S05==null)">
缂栧彿锛歿{itemremark.S01}}
</span>
- <span v-if="itemremark.S02!=null&&itemremark.S02!=''">澶囨敞1锛歿{itemremark.S02}}</span>
- <span v-if="itemremark.S03!=null&&itemremark.S03!=''">澶囨敞2锛歿{itemremark.S03}}</span>
- <span v-if="itemremark.S04!=null&&itemremark.S04!=''">澶囨敞3锛歿{itemremark.S04}}</span>
- <span v-if="itemremark.S05!=null&&itemremark.S05!=''">澶囨敞4锛歿{itemremark.S05}}</span>
- </div>
+ <span v-if="itemremark.S02!=null&&itemremark.S02!=''">澶囨敞1锛歿{itemremark.S02}}</span>
+ <span v-if="itemremark.S03!=null&&itemremark.S03!=''">澶囨敞2锛歿{itemremark.S03}}</span>
+ <span v-if="itemremark.S04!=null&&itemremark.S04!=''">澶囨敞3锛歿{itemremark.S04}}</span>
+ <span v-if="itemremark.S05!=null&&itemremark.S05!=''">澶囨敞4锛歿{itemremark.S05}}</span>
</div>
- </td>
- </tr>
- </tbody>
- <tfoot>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ <tfoot>
<tr v-for="(itemtextareas,index) in item.detail" :key="index">
<td colspan="31" style="width: 480px;height: 150px ">
- <div v-if="name=='娴欐睙宸ㄦ槦鍢夋嘲鏂版潗鏂欐湁闄愬叕鍙�'" style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 16px;font-weight: bold;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea>
- </div>
- <div v-else style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 14px;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea>
+ <div style="width: 100%;height: 100%;text-align: left"><textarea style="height: 99%;width: 99%;border: none;;font-size: 16px;font-weight: bold;overflow: hidden;text-align: left;vertical-align: middle">{{itemtextareas.processing_note}}</textarea>
</div>
</td>
</tr>
@@ -468,16 +489,15 @@
</tr>
</tfoot>
</table>
- <el-image
- class="picture"
- v-for="(item,index) in picture"
- :src="item.imageBase64"
- :preview-src-list="[item.imageBase64]"
- fit="contain"
- style="max-height: 700px;"
- />
+ <el-image
+ v-for="(img, index) in getPicturesByDetailList(item.detailList)"
+ :key="index"
+ :src="img.imageBase64"
+ fit="contain"
+ style="max-width: 400px;max-lines: 600px"
+ />
</div>
-
+ </div>
</template>
<style scoped>
@@ -495,6 +515,10 @@
//font-weight: bolder; height: 600px;
}
+#contentDiv {
+ width: 100%;
+}
+
#contentTable {
border-collapse: collapse;
border: 1px solid black;
--
Gitblit v1.8.0