From 99d0bb96043ba5d6db66bbfb00f67ca4e09f3ffb Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期五, 07 三月 2025 09:08:33 +0800
Subject: [PATCH] 小片尺寸和成品尺寸不相同时,打印显示小片信息

---
 north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue |  313 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 313 insertions(+), 0 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue
new file mode 100644
index 0000000..1cc3f5a
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue
@@ -0,0 +1,313 @@
+<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,//鏍囩绫诲瀷
+  switch:null,//鍒ゆ柇鏄惁涓烘柊鎵撳嵃
+  lastList:[],
+})
+
+const {currentRoute} = useRouter()
+const route = currentRoute.value
+let type = props.type
+let faceOrientation = props.faceOrientation
+if (type.indexOf("鑻辨枃")>-1 && faceOrientation==="姝ら潰涓哄鍐呴潰"){
+  faceOrientation='INSIDE'
+}
+else if (type.indexOf("鑻辨枃")>-1 && faceOrientation==="姝ら潰涓哄澶栭潰"){
+  faceOrientation='OUTSIDE'
+}
+let lableType = props.lableType
+data.value.printList = JSON.parse(props.list)
+onMounted(() => {
+      request.post(`/processCard/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
+          for (let i = 0; i < list.value.length; i++) {
+            let count = list.value[i].data.length
+            for (let j = 0; j < count; j++) {
+            //  for (let k = 0; k < list.value[i].data[j].quantity; k++) {
+                props.lastList.push(list.value[i].data[j])
+            //  }
+            }
+          }
+        } else {
+          ElMessage.warning(res.msg)
+        }
+      })
+
+    }
+)
+
+//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
+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.semi.printFlowCardName()">
+    <div v-for="(item1,id) in props.lastList" :class="company.printLabel.className.semi.entiretyName()">
+      <div class="row4">{{ faceOrientation }}</div>
+      <div  v-for="(item,id) in labelList" :class="company.printLabel.className.semi.contentRowName()">
+        <div contenteditable="true" v-if="item1[item.name] != null && item1[item.name] !== ''" class="row1" @input="updateProductName($event, id,index)">{{ item.title }}锛歿{ item1[item.name] }}</div>
+        <!--        <div v-if="item1[item.name] != null && item1[item.name] !== ''" class="row2">{{ item1[item.name] }}</div>-->
+      </div>
+      <div v-html="company.printLabel.customSemi(item1)"></div>
+      <div v-if="(id + 1) % 2 === 0" class="pagebreak"></div>
+    </div>
+  </div>
+
+
+
+
+
+</template>
+
+<style scoped>
+* {
+  margin: 0;
+  padding: 0;
+}
+
+body{
+  overflow: hidden;
+  font-family: Arial;
+
+}
+
+#printButton {
+  margin-top: -20px;
+  width: 100px;
+}
+
+
+
+/*鍗�*/
+.printFlowCard_semi {
+  flex-wrap: wrap;
+  font-size: 10px;
+  display: flex;
+  justify-content:space-between;
+}
+
+
+
+/*鍗�*/
+.entirety_semi {
+  width: 45%;
+  display: flex;
+  text-align: center;
+  flex-direction:column;
+  margin: 8px;
+
+}
+
+.row3{
+  text-align: center;
+}
+
+.contentRow{
+  display: flex;
+  text-align: center;
+}
+
+label{
+  font-weight: bolder;
+}
+
+.contentRow .row1{
+  width: 100%;
+}
+
+.entirety_semi .row4{
+  text-align: right;
+}
+
+.contentRow .row1,.contentRow .row2{
+  text-align: left;
+}
+
+
+
+@media print {
+  @page {
+    size: auto;  /* auto is the initial value */
+    margin: 13mm 5mm 0mm 7mm;  /* this affects the margin in the printer settings */
+  }
+  div {
+    page-break-inside: avoid;
+  }
+
+
+
+  .pagebreak {
+    page-break-after: always;
+  }
+
+}
+
+.printFlowCard_semi1 {
+  flex-wrap: wrap;
+  font-size: 8pt;
+  display: flex;
+}
+
+
+/*鎴�*/
+.entirety_semi1 {
+  width: 50%;
+  display: flex;
+  text-align: center;
+  flex-direction: column;
+  margin-left: -10px;
+  height: 80px;
+
+}
+
+.contentRow1 {
+  font-weight: bolder;
+  display: flex;
+  text-align: center;
+  width: 100%;
+}
+
+.contentRow1 .row1 {
+  width: 30%;
+  font-weight: bolder;
+}
+
+.entirety_finished1 .row4 {
+  font-weight: bolder;
+  text-align: right;
+  margin-right: 10px;
+}
+
+.contentRow1 .row1, .contentRow1 .row2 {
+  text-align: left;
+  font-weight: bolder;
+}
+
+</style>
\ No newline at end of file

--
Gitblit v1.8.0