From 4ca2900c4e3e9400d9a94567b8eb01b3948648cc Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期三, 14 一月 2026 20:01:44 +0800
Subject: [PATCH] rfid-2版
---
pages/rfid/uhftest.vue | 2
pages/AGV/agv_start.vue | 12 ++++
pages/order/orderPakin2.vue | 12 ++++
common/rfid-input-helper.js | 127 ++++++++++++++++++++++++++++++++++--------
pages/rfid/uhftest2.vue | 2
pages/pakin/pakin.vue | 6 ++
6 files changed, 134 insertions(+), 27 deletions(-)
diff --git a/common/rfid-input-helper.js b/common/rfid-input-helper.js
index 1262093..48095c8 100644
--- a/common/rfid-input-helper.js
+++ b/common/rfid-input-helper.js
@@ -107,32 +107,50 @@
* len:璇诲彇鐨勬暟鎹暱搴�(Word绫诲瀷锛屽ぇ浜�0)
* pwd:璁块棶瀵嗙爜锛岄粯璁ゅ瘑鐮佷负锛�00000000
* 娉ㄦ剰锛歐ord绫诲瀷锛屼竴涓暱搴﹁〃绀烘爣绛惧瓨鍌�4浣嶅瓧绗�
+ * len=1琛ㄧず璇诲彇4浣嶏紝len=2琛ㄧず璇诲彇8浣嶏紝len=8琛ㄧず璇诲彇32浣�
+ * 浣跨敤len=1璇诲彇4浣嶆暟鎹紙濡傛灉鏍囩鏄�4浣嶏級
*/
- uhfModel.readTagWithoutFilter(1, 2, 6, "00000000", (ret) => {
+ const readLen = 1; // 璇诲彇闀垮害锛�1涓猈ord = 4涓瓧绗�
+ uhfModel.readTagWithoutFilter(1, 2, readLen, "00000000", (ret) => {
isScanning = false;
console.log('[RFIDInputHelper] readTagWithoutFilter result:', ret);
if (ret && typeof ret === 'string') {
- // 瑙f瀽杩斿洖缁撴灉锛屾彁鍙朎PC
+ // 瑙f瀽杩斿洖缁撴灉锛屾彁鍙朎PC锛堜笉杩藉姞锛屼笉鎴柇锛屼娇鐢ㄥ疄闄呴暱搴︼級
// 杩斿洖鏍煎紡鍙兘鏄細success EPC:XXXXXXXX 鎴栫被浼兼牸寮�
let epc = '';
if (ret.includes('success') || ret.includes('EPC')) {
- // 灏濊瘯鎻愬彇EPC鍊�
+ // 灏濊瘯鎻愬彇EPC鍊硷紙鎻愬彇瀹屾暣鐨�16杩涘埗瀛楃涓诧紝涓嶉檺鍒堕暱搴︼級
const epcMatch = ret.match(/EPC[:\s]+([A-F0-9]+)/i);
if (epcMatch && epcMatch[1]) {
- epc = epcMatch[1];
+ epc = epcMatch[1]; // 浣跨敤瀹為檯闀垮害锛屼笉杩藉姞
} else {
- // 濡傛灉娌℃湁鍖归厤鍒帮紝灏濊瘯鎻愬彇16杩涘埗瀛楃涓�
- const hexMatch = ret.match(/([A-F0-9]{16,})/i);
+ // 濡傛灉娌℃湁鍖归厤鍒帮紝灏濊瘯鎻愬彇16杩涘埗瀛楃涓诧紙涓嶉檺鍒舵渶灏忛暱搴︼級
+ const hexMatch = ret.match(/([A-F0-9]+)/i);
if (hexMatch && hexMatch[1]) {
- epc = hexMatch[1];
+ epc = hexMatch[1]; // 浣跨敤瀹為檯闀垮害锛屼笉杩藉姞
}
}
}
if (epc) {
- console.log('[RFIDInputHelper] 鉁� 璇诲彇鍒版爣绛綞PC:', epc);
- // 鑷姩濉叆褰撳墠鐒︾偣杈撳叆妗�
+ // 鏍规嵁璇诲彇闀垮害鎴彇鏁版嵁锛坙en=1琛ㄧず4浣嶏紝len=2琛ㄧず8浣嶏級
+ const maxLength = readLen * 4; // Word闀垮害 脳 4 = 瀛楃鏁�
+ if (epc.length > maxLength) {
+ console.log(`[RFIDInputHelper] 鏁版嵁杩囬暱(${epc.length}浣�)锛屾埅鍙栧墠${maxLength}浣峘);
+ epc = epc.substring(0, maxLength);
+ }
+
+ // 鍘婚櫎鍓嶅0锛堝鏋滄彃浠惰繑鍥炰簡鍥哄畾闀垮害鐨勬暟鎹紝鍓嶉潰鍙兘鏈�0濉厖锛�
+ // 浣嗕繚鐣欒嚦灏�1浣嶏紙濡傛灉鍏ㄩ儴鏄�0锛屼繚鐣欎竴涓�0锛�
+ const originalLength = epc.length;
+ epc = epc.replace(/^0+/, '') || '0';
+ if (originalLength !== epc.length) {
+ console.log('[RFIDInputHelper] 鍘婚櫎鍓嶅0: 鍘熷闀垮害=' + originalLength + ', 鍘婚櫎鍚庨暱搴�=' + epc.length);
+ }
+
+ console.log('[RFIDInputHelper] 鉁� 璇诲彇鍒版爣绛綞PC (闀垮害' + epc.length + '浣�):', epc);
+ // 鑷姩濉叆褰撳墠鐒︾偣杈撳叆妗嗭紙涓嶈拷鍔狅紝浣跨敤瀹為檯闀垮害锛�
fillCurrentInput(epc);
modal.toast({
message: '宸茶鍙栨爣绛�',
@@ -147,10 +165,18 @@
duration: 1.5
});
} else {
- // 灏濊瘯鐩存帴浣跨敤杩斿洖鐨勫瓧绗︿覆浣滀负EPC
+ // 灏濊瘯鐩存帴浣跨敤杩斿洖鐨勫瓧绗︿覆浣滀负EPC锛堜笉闄愬埗鏈�灏忛暱搴︼級
const cleanRet = ret.trim();
- if (cleanRet.length >= 8) {
- fillCurrentInput(cleanRet);
+ // 绉婚櫎鍙兘鐨�"success"绛夊墠缂�锛屽彧淇濈暀16杩涘埗瀛楃
+ let hexOnly = cleanRet.replace(/[^A-F0-9]/gi, '');
+ if (hexOnly.length > 0) {
+ // 鍘婚櫎鍓嶅0锛堝鏋滄彃浠惰繑鍥炰簡鍥哄畾闀垮害鐨勬暟鎹紝鍓嶉潰鍙兘鏈�0濉厖锛�
+ const originalLength = hexOnly.length;
+ hexOnly = hexOnly.replace(/^0+/, '') || '0';
+ if (originalLength !== hexOnly.length) {
+ console.log('[RFIDInputHelper] 鍘婚櫎鍓嶅0: 鍘熷闀垮害=' + originalLength + ', 鍘婚櫎鍚庨暱搴�=' + hexOnly.length);
+ }
+ fillCurrentInput(hexOnly); // 浣跨敤瀹為檯闀垮害锛屼笉杩藉姞
modal.toast({
message: '宸茶鍙栨爣绛�',
duration: 1.5
@@ -166,9 +192,34 @@
} else if (ret && typeof ret === 'object') {
// 濡傛灉杩斿洖鐨勬槸瀵硅薄鏍煎紡
if (ret.code === 'success' && ret.data) {
- const epc = ret.data.epc || ret.data;
+ let epc = '';
+ if (typeof ret.data === 'string') {
+ // 濡傛灉鏄瓧绗︿覆锛屾彁鍙�16杩涘埗閮ㄥ垎锛堜笉杩藉姞锛屼笉鎴柇锛�
+ epc = ret.data.trim().replace(/[^A-F0-9]/gi, '');
+ } else if (ret.data.epc) {
+ epc = String(ret.data.epc).trim().replace(/[^A-F0-9]/gi, '');
+ } else {
+ epc = String(ret.data).trim().replace(/[^A-F0-9]/gi, '');
+ }
+
+ // 鏍规嵁璇诲彇闀垮害鎴彇鏁版嵁锛坙en=1琛ㄧず4浣嶏紝len=2琛ㄧず8浣嶏級
if (epc) {
- fillCurrentInput(epc);
+ const maxLength = readLen * 4; // Word闀垮害 脳 4 = 瀛楃鏁�
+ if (epc.length > maxLength) {
+ console.log(`[RFIDInputHelper] 鏁版嵁杩囬暱(${epc.length}浣�)锛屾埅鍙栧墠${maxLength}浣峘);
+ epc = epc.substring(0, maxLength);
+ }
+
+ // 鍘婚櫎鍓嶅0锛堝鏋滄彃浠惰繑鍥炰簡鍥哄畾闀垮害鐨勬暟鎹紝鍓嶉潰鍙兘鏈�0濉厖锛�
+ // 浣嗕繚鐣欒嚦灏�1浣嶏紙濡傛灉鍏ㄩ儴鏄�0锛屼繚鐣欎竴涓�0锛�
+ const originalLength = epc.length;
+ epc = epc.replace(/^0+/, '') || '0';
+ if (originalLength !== epc.length) {
+ console.log('[RFIDInputHelper] 鍘婚櫎鍓嶅0: 鍘熷闀垮害=' + originalLength + ', 鍘婚櫎鍚庨暱搴�=' + epc.length);
+ }
+
+ console.log('[RFIDInputHelper] 鉁� 璇诲彇鍒版爣绛綞PC (闀垮害' + epc.length + '浣�):', epc);
+ fillCurrentInput(epc); // 浣跨敤瀹為檯闀垮害锛屼笉杩藉姞
modal.toast({
message: '宸茶鍙栨爣绛�',
duration: 1.5
@@ -229,14 +280,25 @@
{ field: 'locNo', focusField: 'locNoFocus' }
];
+ // 璋冭瘯锛氭墦鍗版墍鏈夎緭鍏ユ鐨勭劍鐐圭姸鎬�
+ console.log('[RFIDInputHelper] ========== 妫�鏌ヨ緭鍏ユ鐒︾偣鐘舵�� ==========');
+ for (let item of inputFieldMap) {
+ if (vm[item.field] !== undefined) {
+ const focusValue = vm[item.focusField];
+ console.log(`[RFIDInputHelper] ${item.field}: focus=${focusValue}, value="${vm[item.field]}"`);
+ }
+ }
+
// 鍙煡鎵炬湁鐒︾偣鐨勮緭鍏ユ锛堝厜鏍囨墍鍦ㄧ殑杈撳叆妗嗭級
let focusedField = null;
for (let item of inputFieldMap) {
if (vm[item.field] !== undefined) {
// 妫�鏌ユ槸鍚︽湁鐒︾偣鐘舵�佸瓧娈碉紝骞朵笖鐒︾偣涓簍rue
- if (vm[item.focusField] === true) {
+ const focusValue = vm[item.focusField];
+ console.log(`[RFIDInputHelper] 妫�鏌� ${item.field}: focusField=${item.focusField}, focusValue=${focusValue}, type=${typeof focusValue}`);
+ if (focusValue === true) {
focusedField = item.field;
- console.log(`[RFIDInputHelper] 鉁� 鎵惧埌鏈夌劍鐐圭殑杈撳叆妗�: ${item.field}`);
+ console.log(`[RFIDInputHelper] 鉁撯湏鉁� 鎵惧埌鏈夌劍鐐圭殑杈撳叆妗�: ${item.field} (focus=${focusValue})`);
break;
}
}
@@ -245,20 +307,35 @@
// 鍙~鍏ユ湁鐒︾偣鐨勮緭鍏ユ锛屽鏋滄病鏈夌劍鐐瑰垯涓嶅~鍏�
if (focusedField) {
console.log(`[RFIDInputHelper] 濉叆鏈夌劍鐐圭殑杈撳叆妗� ${focusedField}:`, epc);
- vm[focusedField] = epc;
- // 瑙﹀彂input浜嬩欢锛岀‘淇濋〉闈㈤�昏緫鑳藉搷搴�
+ console.log(`[RFIDInputHelper] 杈撳叆妗嗗綋鍓嶅��: "${vm[focusedField]}"`);
+
+ // 鍏堟竻绌鸿緭鍏ユ锛屽啀濉叆鏂板�硷紙閬垮厤杩藉姞锛�
+ vm[focusedField] = '';
+
+ // 浣跨敤 $nextTick 纭繚娓呯┖鎿嶄綔瀹屾垚鍚庡啀濉叆鏂板��
if (vm.$nextTick) {
vm.$nextTick(() => {
- // 濡傛灉椤甸潰鏈夊搴旂殑input澶勭悊鏂规硶锛屽彲浠ユ墜鍔ㄨЕ鍙�
- if (focusedField === 'barcode' && typeof vm.barcodeInput === 'function') {
- vm.barcodeInput();
- } else if (focusedField === 'matnr' && typeof vm.findMat === 'function') {
- vm.findMat();
- }
+ // 濉叆鏂扮殑EPC鍊硷紙鏇挎崲锛屼笉杩藉姞锛�
+ vm[focusedField] = epc;
+ console.log(`[RFIDInputHelper] 鉁� 宸叉浛鎹㈣緭鍏ユ鍊间负: "${vm[focusedField]}"`);
+
+ // 鍐嶆浣跨敤 $nextTick 纭繚鍊煎凡璁剧疆锛屽啀瑙﹀彂input浜嬩欢
+ vm.$nextTick(() => {
+ // 濡傛灉椤甸潰鏈夊搴旂殑input澶勭悊鏂规硶锛屽彲浠ユ墜鍔ㄨЕ鍙�
+ if (focusedField === 'barcode' && typeof vm.barcodeInput === 'function') {
+ vm.barcodeInput();
+ } else if (focusedField === 'matnr' && typeof vm.findMat === 'function') {
+ vm.findMat();
+ }
+ });
});
+ } else {
+ // 濡傛灉娌℃湁 $nextTick锛岀洿鎺ヨ缃�
+ vm[focusedField] = epc;
}
} else {
- console.warn('[RFIDInputHelper] 鏈壘鍒版湁鐒︾偣鐨勮緭鍏ユ锛屼笉濉叆浠讳綍杈撳叆妗�');
+ console.warn('[RFIDInputHelper] 鉁� 鏈壘鍒版湁鐒︾偣鐨勮緭鍏ユ锛屼笉濉叆浠讳綍杈撳叆妗�');
+ console.warn('[RFIDInputHelper] 璇峰厛鐐瑰嚮杈撳叆妗嗚幏寰楃劍鐐癸紝鐒跺悗鍐嶆寜鎵爜鎸夐敭');
modal.toast({
message: '璇峰厛鐐瑰嚮杈撳叆妗嗚幏寰楃劍鐐�',
duration: 1.5
diff --git a/pages/AGV/agv_start.vue b/pages/AGV/agv_start.vue
index 8dc0c4d..e0ba9c0 100644
--- a/pages/AGV/agv_start.vue
+++ b/pages/AGV/agv_start.vue
@@ -238,6 +238,12 @@
// 鎵樼洏鐮佽緭鍏ユ鑾峰緱鐒︾偣锛堜繚鐣欐柟娉曪紝浣嗕笉鑷姩瑙﹀彂鎵弿锛�
onBarcodeFocus() {
console.log('[agv_start] 鎵樼洏鐮佽緭鍏ユ鑾峰緱鐒︾偣');
+ // 璁剧疆鎵樼洏鐮佽緭鍏ユ涓虹劍鐐癸紝鍏朵粬杈撳叆妗嗗け鍘荤劍鐐�
+ this.barcodeFocus = true;
+ this.matFocus = false;
+ if (this.sourceSiteFocus !== undefined) {
+ this.sourceSiteFocus = false;
+ }
// 娉ㄦ剰锛氬崟鏍囩璇绘棤杩囨护鍔熻兘宸叉敼涓烘寜閿Е鍙戯紙191銆�189銆�190锛夛紝涓嶅啀鍦ㄧ劍鐐规椂鑷姩瑙﹀彂
},
// 鎵樼洏鐮佽緭鍏ユ澶卞幓鐒︾偣鏃跺仠姝FID鎵弿锛堝彲閫夛級
@@ -252,6 +258,12 @@
// 鏆傚瓨浣嶈緭鍏ユ鑾峰緱鐒︾偣锛堜繚鐣欐柟娉曪紝浣嗕笉鑷姩瑙﹀彂鎵弿锛�
onSourceSiteFocus() {
console.log('[agv_start] 鏆傚瓨浣嶈緭鍏ユ鑾峰緱鐒︾偣');
+ // 璁剧疆鏆傚瓨浣嶈緭鍏ユ涓虹劍鐐癸紝鍏朵粬杈撳叆妗嗗け鍘荤劍鐐�
+ if (this.sourceSiteFocus !== undefined) {
+ this.sourceSiteFocus = true;
+ }
+ this.barcodeFocus = false;
+ this.matFocus = false;
// 娉ㄦ剰锛氬崟鏍囩璇绘棤杩囨护鍔熻兘宸叉敼涓烘寜閿Е鍙戯紙191銆�189銆�190锛夛紝涓嶅啀鍦ㄧ劍鐐规椂鑷姩瑙﹀彂
},
onTargetSiteChange(e) {
diff --git a/pages/order/orderPakin2.vue b/pages/order/orderPakin2.vue
index 2905059..501ee3e 100644
--- a/pages/order/orderPakin2.vue
+++ b/pages/order/orderPakin2.vue
@@ -240,11 +240,23 @@
// 鎵樼洏鐮佽緭鍏ユ鑾峰緱鐒︾偣锛堜繚鐣欐柟娉曪紝浣嗕笉鑷姩瑙﹀彂鎵弿锛�
onBarcodeFocus() {
console.log('[orderPakin2] 鎵樼洏鐮佽緭鍏ユ鑾峰緱鐒︾偣');
+ // 璁剧疆鎵樼洏鐮佽緭鍏ユ涓虹劍鐐癸紝鍏朵粬杈撳叆妗嗗け鍘荤劍鐐�
+ this.barcodeFocus = true;
+ this.matFocus = false;
+ if (this.orderNoFocus !== undefined) {
+ this.orderNoFocus = false;
+ }
// 娉ㄦ剰锛氬崟鏍囩璇绘棤杩囨护鍔熻兘宸叉敼涓烘寜閿Е鍙戯紙191銆�189銆�190锛夛紝涓嶅啀鍦ㄧ劍鐐规椂鑷姩瑙﹀彂
},
// 鐗╂枡鐮佽緭鍏ユ鑾峰緱鐒︾偣锛堜繚鐣欐柟娉曪紝浣嗕笉鑷姩瑙﹀彂鎵弿锛�
onMatnrFocus() {
console.log('[orderPakin2] 鐗╂枡鐮佽緭鍏ユ鑾峰緱鐒︾偣');
+ // 璁剧疆鐗╂枡鐮佽緭鍏ユ涓虹劍鐐癸紝鍏朵粬杈撳叆妗嗗け鍘荤劍鐐�
+ this.matFocus = true;
+ this.barcodeFocus = false;
+ if (this.orderNoFocus !== undefined) {
+ this.orderNoFocus = false;
+ }
// 娉ㄦ剰锛氬崟鏍囩璇绘棤杩囨护鍔熻兘宸叉敼涓烘寜閿Е鍙戯紙191銆�189銆�190锛夛紝涓嶅啀鍦ㄧ劍鐐规椂鑷姩瑙﹀彂
},
messageToggle(type) {
diff --git a/pages/pakin/pakin.vue b/pages/pakin/pakin.vue
index edd6646..cf1df7c 100644
--- a/pages/pakin/pakin.vue
+++ b/pages/pakin/pakin.vue
@@ -218,6 +218,9 @@
// 鎵樼洏鐮佽緭鍏ユ鑾峰緱鐒︾偣锛堜繚鐣欐柟娉曪紝浣嗕笉鑷姩瑙﹀彂鎵弿锛�
onBarcodeFocus() {
console.log('[pakin] 鎵樼洏鐮佽緭鍏ユ鑾峰緱鐒︾偣');
+ // 璁剧疆鎵樼洏鐮佽緭鍏ユ涓虹劍鐐癸紝鐗╂枡鐮佸け鍘荤劍鐐�
+ this.barcodeFocus = true;
+ this.matFocus = false;
// 娉ㄦ剰锛氬崟鏍囩璇绘棤杩囨护鍔熻兘宸叉敼涓烘寜閿Е鍙戯紙191銆�189銆�190锛夛紝涓嶅啀鍦ㄧ劍鐐规椂鑷姩瑙﹀彂
},
// 鎵樼洏鐮佽緭鍏ユ澶卞幓鐒︾偣鏃跺仠姝FID鎵弿锛堝彲閫夛級
@@ -232,6 +235,9 @@
// 鐗╂枡鐮佽緭鍏ユ鑾峰緱鐒︾偣锛堜繚鐣欐柟娉曪紝浣嗕笉鑷姩瑙﹀彂鎵弿锛�
onMatnrFocus() {
console.log('[pakin] 鐗╂枡鐮佽緭鍏ユ鑾峰緱鐒︾偣');
+ // 璁剧疆鐗╂枡鐮佽緭鍏ユ涓虹劍鐐癸紝鎵樼洏鐮佸け鍘荤劍鐐�
+ this.matFocus = true;
+ this.barcodeFocus = false;
// 娉ㄦ剰锛氬崟鏍囩璇绘棤杩囨护鍔熻兘宸叉敼涓烘寜閿Е鍙戯紙191銆�189銆�190锛夛紝涓嶅啀鍦ㄧ劍鐐规椂鑷姩瑙﹀彂
},
clearBarcode() {
diff --git a/pages/rfid/uhftest.vue b/pages/rfid/uhftest.vue
index 6ac08c0..0b0e841 100644
--- a/pages/rfid/uhftest.vue
+++ b/pages/rfid/uhftest.vue
@@ -230,7 +230,7 @@
* pwd:璁块棶瀵嗙爜锛岄粯璁ゅ瘑鐮佷负锛�00000000
* 娉ㄦ剰锛歐ord绫诲瀷锛屼竴涓暱搴﹁〃绀烘爣绛惧瓨鍌�4浣嶅瓧绗�
*/
- uhfModel.readTagWithoutFilter(1, 2, 6, "00000000", (ret) => {
+ uhfModel.readTagWithoutFilter(1, 2, 8, "00000000", (ret) => {
//
modal.toast({
message: ret,
diff --git a/pages/rfid/uhftest2.vue b/pages/rfid/uhftest2.vue
index 785ba8a..3536841 100644
--- a/pages/rfid/uhftest2.vue
+++ b/pages/rfid/uhftest2.vue
@@ -129,7 +129,7 @@
* pwd:璁块棶瀵嗙爜锛岄粯璁ゅ瘑鐮佷负锛�00000000
* 娉ㄦ剰锛歐ord绫诲瀷锛屼竴涓暱搴﹁〃绀烘爣绛惧瓨鍌�4浣嶅瓧绗�
*/
- uhfModel.readTagWithoutFilter(1, 2, 6, "00000000", (ret) => {
+ uhfModel.readTagWithoutFilter(1, 2, 8, "00000000", (ret) => {
//
modal.toast({
message: ret,
--
Gitblit v1.9.1