From 103b03d9b18cc713550ddfa3f5772123568dc6c3 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 29 十二月 2025 16:40:01 +0800
Subject: [PATCH] 标签打印预览界面中修改可同步变更的字段光标自动前移问题,流程卡进度打印界面增加列
---
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue | 9
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue | 177 ++++++++++-------
north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue | 2
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabel.vue | 145 ++++++++++----
north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue | 250 +++++++++++++++++-------
5 files changed, 393 insertions(+), 190 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabel.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabel.vue
index 6367be4..973760a 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabel.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabel.vue
@@ -74,53 +74,105 @@
+const isComposing = ref(false)
-//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
-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);
+const getCaretOffset = (el) => {
+ const sel = window.getSelection()
+ if (!sel || sel.rangeCount === 0) return 0
+ const range = sel.getRangeAt(0)
+ if (!el.contains(range.startContainer)) return 0
- // 鏍规嵁 index 鑾峰彇瀵瑰簲鐨勫睘鎬у悕
- const propertyName = keys[index];
+ const preRange = range.cloneRange()
+ preRange.selectNodeContents(el)
+ preRange.setEnd(range.startContainer, range.startOffset)
+ return preRange.toString().length
+}
- // 濡傛灉鏄犲皠涓病鏈夎 index锛岀洿鎺ヨ繑鍥�
- if (!propertyName) {
- console.warn('Unsupported index:', index);
- return;
+const setCaretOffset = (el, offset) => {
+ const sel = window.getSelection()
+ if (!sel) return
+
+ const range = document.createRange()
+ range.selectNodeContents(el)
+
+ let current = 0
+ const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null)
+ let node = walker.nextNode()
+
+ while (node) {
+ const next = current + (node.nodeValue?.length || 0)
+ if (offset <= next) {
+ range.setStart(node, Math.max(0, offset - current))
+ range.collapse(true)
+ sel.removeAllRanges()
+ sel.addRange(range)
+ return
+ }
+ current = next
+ node = walker.nextNode()
}
- // 閬嶅巻 lastList 骞舵洿鏂板搴旂殑灞炴��
- lastList.value.forEach(obj => {
- // 鑾峰彇鍓嶇紑鍜� orderId
- const prefix = lastList.value[id].processId.substring(0, 11);
- const orderId = obj.orderId;
- const glassNumber=lastList.value[id].glassNumber
- const customerName = obj.customerName
- // 鏍规嵁 propertyName 鏇存柊灞炴��
- if (propertyName === 'productAbbreviation' && prefix === obj.processId.substring(0, 11)) {
- obj.productAbbreviation = result;
- }
+ // 瓒呭嚭闀垮害鍒欐斁鍒版湯灏�
+ range.collapse(false)
+ sel.removeAllRanges()
+ sel.addRange(range)
+}
+// =============================================
- 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;
- }
- });
+//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
+const updateProductName = async (event, fieldIndex, rowIndex) => {
+ // 杈撳叆娉曠粍璇嶉樁娈典笉瑕佸悓姝ワ紝鍚﹀垯浼氭姈鍔�/閿欎贡
+ if (isComposing.value) return
+
+ const el = event.target
+
+ // 淇濆瓨鍏夋爣
+ const caret = getCaretOffset(el)
+
+ // 鍙栤�滅函鍊尖�濇鏃� contenteditable 鍙寘鍚�硷紝涓嶅寘鍚爣棰橈細
+ const result = (el.innerText ?? '').trim()
+
+ // 鏄犲皠锛歠ieldIndex -> 瀛楁鍚�
+ const propertyMapping = {}
+ labelList.forEach(item => {
+ propertyMapping[item.name] = item.title
+ })
+ const keys = Object.keys(propertyMapping)
+ const propertyName = keys[fieldIndex]
+ if (!propertyName) return
+
+ //鏇存柊
+ const baseRow = props.lastList?.[rowIndex]
+ if (!baseRow) return
+
+ const basePrefix = (baseRow.processId ?? '').substring(0, 11)
+ const baseGlassNumber = baseRow.glassNumber
+ const baseOrderId = baseRow.orderId
+
+ props.lastList.forEach(obj => {
+ const objPrefix = (obj.processId ?? '').substring(0, 11)
+
+ if (propertyName === 'productAbbreviation' && basePrefix === objPrefix) obj.productAbbreviation = result
+ if (propertyName === 'project' && baseOrderId === obj.orderId) obj.project = result
+ if (propertyName === 'productName' && basePrefix === objPrefix) obj.productName = result
+ if (propertyName === 'customerName' && baseOrderId === obj.orderId) obj.customerName = result
+ if (propertyName === 'orderId' && baseOrderId === obj.orderId) obj.orderId = result
+
+ if (propertyName === 'glassNumber' && baseGlassNumber === obj.glassNumber) obj.glassNumber = result
+ if (propertyName === 'width' && baseGlassNumber === obj.glassNumber) obj.width = result
+ if (propertyName === 'height' && baseGlassNumber === obj.glassNumber) obj.height = result
+
+ if (propertyName === 'custom1' && baseOrderId === obj.orderId) obj.custom1 = result
+ if (propertyName === 'custom2' && baseOrderId === obj.orderId) obj.custom2 = result
+ if (propertyName === 'custom3' && baseOrderId === obj.orderId) obj.custom3 = result
+ if (propertyName === 'custom4' && baseOrderId === obj.orderId) obj.custom4 = result
+ if (propertyName === 'custom5' && baseOrderId === obj.orderId) obj.custom5 = result
+ })
+
+ // 5) 绛� Vue patch 瀹屾垚鍚庯紝鎶婂厜鏍囨斁鍥炲幓
+ await nextTick()
+ setCaretOffset(el, caret)
}
@@ -132,9 +184,16 @@
<div v-for="(item1,index) in 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 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 class="row1" v-show="item1[item.name] != null && item1[item.name] !== ''">
+ <span class="label">{{ item.title }}锛�</span>
+ <span
+ class="value"
+ contenteditable="true"
+ @compositionstart="isComposing.value = true"
+ @compositionend="(e) => { isComposing.value = false; updateProductName(e, id, index) }"
+ @input="(e) => updateProductName(e, id, index)"
+ >{{ item1[item.name] }}</span>
+ </div>
</div>
<div v-html="company.printLabel.custom(item1)"></div>
</div>
diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue
index accd9ae..d965790 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelDetails.vue
@@ -83,76 +83,105 @@
-//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
-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;
+const isComposing = ref(false)
+
+
+const getCaretOffset = (el) => {
+ const sel = window.getSelection()
+ if (!sel || sel.rangeCount === 0) return 0
+ const range = sel.getRangeAt(0)
+ if (!el.contains(range.startContainer)) return 0
+
+ const preRange = range.cloneRange()
+ preRange.selectNodeContents(el)
+ preRange.setEnd(range.startContainer, range.startOffset)
+ return preRange.toString().length
+}
+
+const setCaretOffset = (el, offset) => {
+ const sel = window.getSelection()
+ if (!sel) return
+
+ const range = document.createRange()
+ range.selectNodeContents(el)
+
+ let current = 0
+ const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null)
+ let node = walker.nextNode()
+
+ while (node) {
+ const next = current + (node.nodeValue?.length || 0)
+ if (offset <= next) {
+ range.setStart(node, Math.max(0, offset - current))
+ range.collapse(true)
+ sel.removeAllRanges()
+ sel.addRange(range)
+ return
+ }
+ current = next
+ node = walker.nextNode()
}
- // 閬嶅巻 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;
- }
+ // 瓒呭嚭闀垮害鍒欐斁鍒版湯灏�
+ range.collapse(false)
+ sel.removeAllRanges()
+ sel.addRange(range)
+}
+// =============================================
- 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;
- }
- });
+//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
+const updateProductName = async (event, fieldIndex, rowIndex) => {
+ // 杈撳叆娉曠粍璇嶉樁娈典笉瑕佸悓姝ワ紝鍚﹀垯浼氭姈鍔�/閿欎贡
+ if (isComposing.value) return
+
+ const el = event.target
+
+ // 淇濆瓨鍏夋爣
+ const caret = getCaretOffset(el)
+
+ // 鍙栤�滅函鍊尖�濇鏃� contenteditable 鍙寘鍚�硷紝涓嶅寘鍚爣棰橈細
+ const result = (el.innerText ?? '').trim()
+
+ // 鏄犲皠锛歠ieldIndex -> 瀛楁鍚�
+ const propertyMapping = {}
+ labelList.forEach(item => {
+ propertyMapping[item.name] = item.title
+ })
+ const keys = Object.keys(propertyMapping)
+ const propertyName = keys[fieldIndex]
+ if (!propertyName) return
+
+ //鏇存柊
+ const baseRow = props.lastList?.[rowIndex]
+ if (!baseRow) return
+
+ const basePrefix = (baseRow.processId ?? '').substring(0, 11)
+ const baseGlassNumber = baseRow.glassNumber
+ const baseOrderId = baseRow.orderId
+
+ props.lastList.forEach(obj => {
+ const objPrefix = (obj.processId ?? '').substring(0, 11)
+
+ if (propertyName === 'productAbbreviation' && basePrefix === objPrefix) obj.productAbbreviation = result
+ if (propertyName === 'project' && baseOrderId === obj.orderId) obj.project = result
+ if (propertyName === 'productName' && basePrefix === objPrefix) obj.productName = result
+ if (propertyName === 'customerName' && baseOrderId === obj.orderId) obj.customerName = result
+ if (propertyName === 'orderId' && baseOrderId === obj.orderId) obj.orderId = result
+
+ if (propertyName === 'glassNumber' && baseGlassNumber === obj.glassNumber) obj.glassNumber = result
+ if (propertyName === 'width' && baseGlassNumber === obj.glassNumber) obj.width = result
+ if (propertyName === 'height' && baseGlassNumber === obj.glassNumber) obj.height = result
+
+ if (propertyName === 'custom1' && baseOrderId === obj.orderId) obj.custom1 = result
+ if (propertyName === 'custom2' && baseOrderId === obj.orderId) obj.custom2 = result
+ if (propertyName === 'custom3' && baseOrderId === obj.orderId) obj.custom3 = result
+ if (propertyName === 'custom4' && baseOrderId === obj.orderId) obj.custom4 = result
+ if (propertyName === 'custom5' && baseOrderId === obj.orderId) obj.custom5 = result
+ })
+
+ // 5) 绛� Vue patch 瀹屾垚鍚庯紝鎶婂厜鏍囨斁鍥炲幓
+ await nextTick()
+ setCaretOffset(el, caret)
}
@@ -164,10 +193,16 @@
<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 class="row1" v-show="item1[item.name] != null && item1[item.name] !== ''">
+ <span class="label">{{ item.title }}锛�</span>
+ <span
+ class="value"
+ contenteditable="true"
+ @compositionstart="isComposing.value = true"
+ @compositionend="(e) => { isComposing.value = false; updateProductName(e, id, index) }"
+ @input="(e) => updateProductName(e, id, index)"
+ >{{ item1[item.name] }}</span>
+ </div>
</div>
<div v-html="company.printLabel.custom(item1)"></div>
</div>
diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue
index 4e8ead6..31bc34b 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintCustomLabelTwo.vue
@@ -82,10 +82,8 @@
for (const group of list.value) {
// 閬嶅巻姣忕粍涓殑鏁版嵁锛堟浛鎹� j锛�
for (const item of group.data) {
- console.log(item)
const { quantity, newList } = item;
// 璺宠繃 quantity 涓� 0 鎴栨棤鏁堢殑鎯呭喌
- console.log(quantity)
if (!quantity || quantity <= 0) continue;
// 澶勭悊 newList锛氱‘淇濇槸鏁扮粍锛屼笉瓒虫椂鐢ㄧ┖瀵硅薄鍏滃簳
@@ -119,80 +117,180 @@
}
)
-//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
-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);
+const isComposing = ref(false)
- // 鏍规嵁 index 鑾峰彇瀵瑰簲鐨勫睘鎬у悕
- const propertyName = keys[index];
- // 濡傛灉鏄犲皠涓病鏈夎 index锛岀洿鎺ヨ繑鍥�
- if (!propertyName) {
- console.warn('Unsupported index:', index);
- return;
+const getCaretOffset = (el) => {
+ const sel = window.getSelection()
+ if (!sel || sel.rangeCount === 0) return 0
+ const range = sel.getRangeAt(0)
+ if (!el.contains(range.startContainer)) return 0
+
+ const preRange = range.cloneRange()
+ preRange.selectNodeContents(el)
+ preRange.setEnd(range.startContainer, range.startOffset)
+ return preRange.toString().length
+}
+
+const setCaretOffset = (el, offset) => {
+ const sel = window.getSelection()
+ if (!sel) return
+
+ const range = document.createRange()
+ range.selectNodeContents(el)
+
+ let current = 0
+ const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null)
+ let node = walker.nextNode()
+
+ while (node) {
+ const next = current + (node.nodeValue?.length || 0)
+ if (offset <= next) {
+ range.setStart(node, Math.max(0, offset - current))
+ range.collapse(true)
+ sel.removeAllRanges()
+ sel.addRange(range)
+ return
+ }
+ current = next
+ node = walker.nextNode()
}
- // 閬嶅巻 lastList 骞舵洿鏂板搴旂殑灞炴��
- props.lastList.forEach(obj => {
- // 鑾峰彇鍓嶇紑鍜� orderId
- console.log(index)
- 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;
- }
- });
+ // 瓒呭嚭闀垮害鍒欐斁鍒版湯灏�
+ range.collapse(false)
+ sel.removeAllRanges()
+ sel.addRange(range)
}
+// =============================================
+
+//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
+const updateProductName = async (event, fieldIndex, rowIndex) => {
+ // 杈撳叆娉曠粍璇嶉樁娈典笉瑕佸悓姝ワ紝鍚﹀垯浼氭姈鍔�/閿欎贡
+ if (isComposing.value) return
+
+ const el = event.target
+
+ // 淇濆瓨鍏夋爣
+ const caret = getCaretOffset(el)
+
+ // 鍙栤�滅函鍊尖�濇鏃� contenteditable 鍙寘鍚�硷紝涓嶅寘鍚爣棰橈細
+ const result = (el.innerText ?? '').trim()
+
+ // 鏄犲皠锛歠ieldIndex -> 瀛楁鍚�
+ const propertyMapping = {}
+ labelList.forEach(item => {
+ propertyMapping[item.name] = item.title
+ })
+ const keys = Object.keys(propertyMapping)
+ const propertyName = keys[fieldIndex]
+ if (!propertyName) return
+
+ //鏇存柊
+ const baseRow = props.lastList?.[rowIndex]
+ if (!baseRow) return
+
+ const basePrefix = (baseRow.processId ?? '').substring(0, 11)
+ const baseGlassNumber = baseRow.glassNumber
+ const baseOrderId = baseRow.orderId
+
+ props.lastList.forEach(obj => {
+ const objPrefix = (obj.processId ?? '').substring(0, 11)
+
+ if (propertyName === 'productAbbreviation' && basePrefix === objPrefix) obj.productAbbreviation = result
+ if (propertyName === 'project' && baseOrderId === obj.orderId) obj.project = result
+ if (propertyName === 'productName' && basePrefix === objPrefix) obj.productName = result
+ if (propertyName === 'customerName' && baseOrderId === obj.orderId) obj.customerName = result
+ if (propertyName === 'orderId' && baseOrderId === obj.orderId) obj.orderId = result
+
+ if (propertyName === 'glassNumber' && baseGlassNumber === obj.glassNumber) obj.glassNumber = result
+ if (propertyName === 'width' && baseGlassNumber === obj.glassNumber) obj.width = result
+ if (propertyName === 'height' && baseGlassNumber === obj.glassNumber) obj.height = result
+
+ if (propertyName === 'custom1' && baseOrderId === obj.orderId) obj.custom1 = result
+ if (propertyName === 'custom2' && baseOrderId === obj.orderId) obj.custom2 = result
+ if (propertyName === 'custom3' && baseOrderId === obj.orderId) obj.custom3 = result
+ if (propertyName === 'custom4' && baseOrderId === obj.orderId) obj.custom4 = result
+ if (propertyName === 'custom5' && baseOrderId === obj.orderId) obj.custom5 = result
+ })
+
+ // 5) 绛� Vue patch 瀹屾垚鍚庯紝鎶婂厜鏍囨斁鍥炲幓
+ await nextTick()
+ setCaretOffset(el, caret)
+}
+
+//淇敼鐩稿悓浜у搧鍚嶇О鏍囩
+// 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>
@@ -203,8 +301,16 @@
<div class="entirety_semi">
<div class="row4">{{ faceOrientation }}</div>
<div v-for="(item,id) in labelList" class="contentRow">
- <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 class="row1" v-show="item1[item.name] != null && item1[item.name] !== ''">
+ <span class="label">{{ item.title }}锛�</span>
+ <span
+ class="value"
+ contenteditable="true"
+ @compositionstart="isComposing.value = true"
+ @compositionend="(e) => { isComposing.value = false; updateProductName(e, id, index) }"
+ @input="(e) => updateProductName(e, id, index)"
+ >{{ item1[item.name] }}</span>
+ </div>
</div>
<div v-html="company.printLabel.customSemi(item1)"></div>
</div>
diff --git a/north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue b/north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue
index 454279d..437728f 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/PrintProcessReplenish.vue
@@ -289,7 +289,7 @@
<td v-else-if="itemTr.qrcodeList.length*1>1" colspan="3" >澶氬眰鍚堝苟锛岃鎯呰浜у搧鍚嶇О</td>
<td v-else colspan="3" style="font-size: 18px;">{{ itemTr.glass_child }}</td>
<td class="tdNowrap">浜у搧鍚嶇О锛�</td>
- <td v-if="!company.processFontSize" :colspan="2+item.processList.length*2">{{ itemTr.product_name }}</td>
+ <td v-if="!company.processFontSize" :colspan="5+item.processList.length*2">{{ itemTr.product_name }}</td>
<td v-else :colspan="5+item.processList.length*2" style="font-size: 18px;">{{ itemTr.product_name }}</td>
</tr>
<tr>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue
index c726441..36c76a3 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProgressProcessCard.vue
@@ -330,9 +330,12 @@
{field: 'order_number', width: 100,title: t('order.OrderNum'),showOverflow:"ellipsis",filters: [{data: ''}],
slots: {filter: 'num1_filter'},
filterMethod: filterChanged},
- // {field: 'glassNumber', width: 110,title: t('reportingWorks.glassNumber'),showOverflow:"ellipsis",filters: [{data: ''}],
- // slots: {filter: 'num1_filter'},
- // filterMethod: filterChanged},
+ {field: 'child_width', title: t('order.width'),width: 80,filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ filterMethod: filterChanged },
+ {field: 'child_height', title: t('order.height'),width: 80 ,filters: [{data: ''}],
+ slots: {filter: 'num1_filter'},
+ filterMethod: filterChanged},
{field: 'quantity', width: 90,title: t('order.quantity')},
{field: 'grossArea', width: 90,title: t('order.area')},
{field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
--
Gitblit v1.8.0