From a660db06773007b1be690e0674829c00a57aeb7b Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 24 十二月 2025 16:21:23 +0800
Subject: [PATCH] 订单首页流程卡新增楼层编号显示
---
north-glass-erp/northglass-erp/src/components/pp/PrintRepairCustomLabel.vue | 315 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 315 insertions(+), 0 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintRepairCustomLabel.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintRepairCustomLabel.vue
new file mode 100644
index 0000000..7f834e7
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintRepairCustomLabel.vue
@@ -0,0 +1,315 @@
+<script setup>
+import request from "@/utils/request"
+import {ElDatePicker, ElMessage} from "element-plus"
+import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from 'vue-router'
+import {changeFilterEvent, filterChanged} from "@/hook"
+import {useI18n} from 'vue-i18n'
+import deepClone from "@/utils/deepClone";
+import companyInfo from "@/stores/sd/companyInfo";
+
+const company = companyInfo()
+//璇█鑾峰彇
+const {t} = useI18n()
+let router = useRouter()
+let produceList = ref([])
+let labelList = ref([])
+let titleList = ref([])
+let dataList = ref([])
+let list = ref([])
+let lastList = ref([])
+
+let filterData = ref({})
+
+const data = ref({
+ printList: []
+})
+
+let props = defineProps({
+ list:null,//鍕鹃�夌殑鏁版嵁
+ faceOrientation:null,//鍐呭闈�
+ type:null,//鏍囩妯℃澘
+ lableType:null,//鏍囩绫诲瀷
+ titleList:null,//鏍囬
+ switch:null,//鍒ゆ柇鏄惁涓烘柊鎵撳嵃,
+ lastList:[],
+ detailType:null
+})
+
+const {currentRoute} = useRouter()
+const route = currentRoute.value
+let type = props.type
+
+let lableType = props.lableType
+let switchType = props.switch
+let detailType= props.detailType
+data.value.printList = JSON.parse(props.list)
+onMounted(() => {
+
+ request.post(`/Replenish/getSelectPrintCustomLabel/${type}/${lableType}`, data.value).then((res) => {
+ if (res.code == 200) {
+ produceList.value = deepClone(res.data.title)
+ list.value = deepClone(res.data.data)
+ const data = produceList.value[0].value
+ dataList = JSON.parse(`[${data}]`);
+ const printElements = dataList[0].panels[0].printElements;
+ let a = []
+ printElements.forEach(element => {
+ if(element.options.field==='table'){
+ element.options.columns[0].forEach(elements => {
+ if(elements.field){
+ a.push({
+ title: elements.title,
+ name: elements.field
+ }
+ )
+ }
+ })
+ }else{
+ a.push({
+ title: element.options.title,
+ name: element.options.field
+ })
+ }
+ })
+ labelList = a
+ // 閬嶅巻鍒楄〃锛堟浛鎹� i 涓烘洿璇箟鍖栫殑鍙橀噺鍚嶏級
+ for (const group of list.value) {
+ // 閬嶅巻姣忕粍涓殑鏁版嵁锛堟浛鎹� j锛�
+ for (const item of group.data) {
+ const { quantity, newList } = item;
+ // 璺宠繃 quantity 涓� 0 鎴栨棤鏁堢殑鎯呭喌
+ if (!quantity || quantity <= 0) continue;
+
+ // 澶勭悊 newList锛氱‘淇濇槸鏁扮粍锛屼笉瓒虫椂鐢ㄧ┖瀵硅薄鍏滃簳
+ const safeNewList = Array.isArray(newList) ? newList : [];
+
+ // 寰幆 quantity 娆★紝娣诲姞鏁版嵁鍒� lastList
+ for (let k = 0; k < quantity; k++) {
+ // 娣辨嫹璐� item锛岄伩鍏嶉噸澶嶅紩鐢紙鍏抽敭锛侊級
+ const newItem = JSON.parse(JSON.stringify(item));
+
+ // 鑻� newList 鏈夊搴旂储寮曟暟鎹紝濉厖瀛楁锛涘惁鍒欑疆绌�
+ const listItem = safeNewList[k];
+ if (listItem) {
+ newItem.heat_layout_sort = listItem.glass_id || ''; // 鍏滃簳绌哄瓧绗︿覆
+ newItem.stockPolysId = `${listItem.stock_id || ''}/${listItem.polys_id || ''}`; // 閬垮厤 undefined/
+ } else {
+ // 鏃犲搴旀暟鎹椂锛屽瓧娈电疆绌猴紙閬垮厤淇濈暀鍘熷鍊硷級
+ newItem.heat_layout_sort = '';
+ newItem.stockPolysId = '';
+ }
+
+ // 娣诲姞鍒扮洰鏍囧垪琛�
+ props.lastList.push(newItem);
+ }
+ }
+ }
+ } else {
+ ElMessage.warning(res.msg)
+ router.push("/login")
+ }
+ })
+
+ }
+
+)
+
+
+
+//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
+const updateProductName = (event, index,id) => {
+ // 鍒涘缓鏄犲皠瀵硅薄
+ const propertyMapping = {};
+ labelList.forEach(item => {
+ propertyMapping[item.name] = item.title;
+ });
+ // 杈撳叆鐨勫��
+ const newValue = event.target.innerText;
+ const parts = newValue.split('锛�');
+ const result = parts[1]; // 鑾峰彇鍐掑彿鍚庣殑閮ㄥ垎
+ // 鑾峰彇鏄犲皠涓墍鏈夌殑閿�
+ const keys = Object.keys(propertyMapping);
+ // 鏍规嵁 index 鑾峰彇瀵瑰簲鐨勫睘鎬у悕
+ const propertyName = keys[index];
+ // 濡傛灉鏄犲皠涓病鏈夎 index锛岀洿鎺ヨ繑鍥�
+ if (!propertyName) {
+ console.warn('Unsupported index:', index);
+ return;
+ }
+
+ // 閬嶅巻 lastList 骞舵洿鏂板搴旂殑灞炴��
+ props.lastList.forEach(obj => {
+ // 鑾峰彇鍓嶇紑鍜� orderId
+ const prefix = props.lastList[id].processId.substring(0, 11);
+ const orderId = obj.orderId;
+ const glassNumber=props.lastList[id].glassNumber
+ // 鏍规嵁 propertyName 鏇存柊灞炴��
+ if (propertyName === 'productAbbreviation' && prefix === obj.processId.substring(0, 11)) {
+ obj.productAbbreviation = result;
+ }
+
+ if (propertyName === 'project' && orderId === obj.orderId) {
+ obj.project = result;
+ }
+ if (propertyName === 'productName' && prefix === obj.processId.substring(0, 11)){
+ obj.productName = result;
+ }
+ if (propertyName === 'customerName' && orderId === obj.orderId){
+ obj.customerName = result;
+ }
+ if (propertyName === 'orderId' && orderId === obj.orderId){
+ obj.orderId = result;
+ }
+ if (propertyName === 'glassNumber' && glassNumber === obj.glassNumber){
+ obj.glassNumber = result;
+ }
+ if (propertyName === 'width' && glassNumber === obj.glassNumber){
+ obj.width = result;
+ }
+ if (propertyName === 'height' && glassNumber === obj.glassNumber){
+ obj.height = result;
+ }
+ if (propertyName === 'custom1' && orderId === obj.orderId){
+ obj.custom1 = result;
+ }
+ if (propertyName === 'custom2' && orderId === obj.orderId){
+ obj.custom2 = result;
+ }
+ if (propertyName === 'custom3' && orderId === obj.orderId){
+ obj.custom3 = result;
+ }
+ if (propertyName === 'custom4' && orderId === obj.orderId){
+ obj.custom4 = result;
+ }
+ if (propertyName === 'custom5' && orderId === obj.orderId){
+ obj.custom5 = result;
+ }
+ });
+}
+
+
+</script>
+
+<template>
+ <div id="print" :class="company.printLabel.className.custom.printFlowCardName()">
+ <div v-for="(item1,index) in props.lastList" :class="company.printLabel.className.custom.entiretyName()">
+ <div class="row4">{{ faceOrientation }}</div>
+ <div v-for="(item,id) in labelList" :class="company.printLabel.className.custom.contentRowName()">
+ <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row1" contenteditable="true" @input="updateProductName($event, id,index)" v-text="item.title+'锛�'+item1[item.name]"></div>
+ <div v-else class="row1" contenteditable="true" @input="updateProductName($event, id,index)" v-text="item.title+'锛�'"></div>
+ <!-- <div class="row2" style="width: 100%;"><input class="contentRow2" v-model="item1[item.name]" @keyup="updataProductName()" style="border: none;"/></div>-->
+ <!-- <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row2" style="width: 100%;" contenteditable="true" @input="updateProductName($event, id)" v-text="item1[item.name]"></div>-->
+ </div>
+ <!-- <div v-html="company.printLabel.custom(item1)"></div>-->
+ <div v-if="(id + 1) % 2 === 0" class="pagebreak"></div>
+ </div>
+ </div>
+
+</template>
+
+<style scoped>
+* {
+ margin: 0;
+ padding: 0;
+}
+
+body{
+ font-weight: bolder;
+ overflow: hidden;
+}
+
+#printButton {
+ margin-top: -20px;
+ width: 100px;
+}
+
+/*鎴�*/
+.printFlowCard_finished {
+ /*
+ font-family: 'Microsoft YaHei', '寰蒋闆呴粦', sans-serif;
+ */
+ flex-wrap: nowrap;
+ font-size: 12pt;
+ display: flex;
+ flex-direction:column;
+}
+
+
+/*鎴�*/
+.entirety_finished {
+ display: flex;
+ text-align: center;
+ flex-direction:column;
+ margin-left: 10px;
+ width: 100%;
+ height: 100%;
+
+}
+
+/*div{
+ font-family: 'Microsoft YaHei', '寰蒋闆呴粦', sans-serif;
+}*/
+
+.row3{
+ text-align: center;
+ font-weight: bolder;
+ font-size: 22px;
+ /*display: flex;
+ justify-content:space-evenly;*/
+}
+
+.row3 label{
+ font-size: 22px;
+ margin-top: 28px;
+}
+
+.contentRow{
+ font-weight: bolder;
+ display: flex;
+ text-align: center;
+ width: 100%;
+}
+
+label{
+ font-weight: bolder;
+ /*font-family: 'Microsoft YaHei', '寰蒋闆呴粦', sans-serif;*/
+}
+
+.row1{
+ width: 30%;
+ font-weight: bolder;
+}
+
+.row4{
+ font-weight: bolder;
+ text-align: right;
+ margin-right: 10px;
+}
+
+.row1,.row2{
+ text-align: left;
+ font-weight: bolder;
+}
+
+
+@page {
+ size: auto; /* auto is the initial value */
+ margin: 13mm 4mm 0mm 6mm; /* this affects the margin in the printer settings */
+}
+
+@media print {
+ div {
+ page-break-inside: avoid;
+ }
+
+.entirety_finished{
+ page-break-before: always;
+}
+ .pagebreak {
+ page-break-after: always;
+ }
+}
+
+</style>
\ No newline at end of file
--
Gitblit v1.8.0