Переглянути джерело

fix: NFC 卡号回填改用桥接 API 兼容 ss-inp 组件

ka-nfc-page.js 的 setNfcValue 从 DOM 操作改为 window.ss.dom.set,
配合编译后生成的 ss-inp 组件正确写入 Vue data 并触发联动查询
ruhuxu 1 тиждень тому
батько
коміт
fa8bb0adb7
3 змінених файлів з 110 додано та 25 видалено
  1. 7 9
      js/reader/ka-nfc-page.js
  2. 37 1
      page/biz/ka_nfcAdd.ss.jsp
  3. 66 15
      page/ka_nfcAdd.jsp

+ 7 - 9
js/reader/ka-nfc-page.js

@@ -98,16 +98,14 @@
     seenUids.set(uid, { protocol: protocol, time: Date.now() });
   }
 
-  function getNfcInput() {
-    return document.querySelector('input[name="kah"]');
-  }
-
+  // 功能说明:通过桥接 API 写入 Vue data,兼容 ss-inp 组件并触发联动查询 by xu 20260416
   function setNfcValue(uid) {
-    var input = getNfcInput();
-    if (!input) return;
-    input.value = uid;
-    input.dispatchEvent(new Event("input", { bubbles: true }));
-    input.dispatchEvent(new Event("change", { bubbles: true }));
+    if (typeof window.ss && typeof window.ss.dom && typeof window.ss.dom.set === "function") {
+      window.ss.dom.set('kah', uid);
+    }
+    if (typeof window.selBaseInfoByKah === "function") {
+      window.selBaseInfoByKah(uid);
+    }
   }
 
   function stopPolling() {

+ 37 - 1
page/biz/ka_nfcAdd.ss.jsp

@@ -85,7 +85,7 @@
 			<tr>
 				<th>NFC</th>
 				<td>
-					<input onChange="selBaseInfoByNfch" name="kah"/>
+					<input name="kah"/>
 				</td>
 			</tr>
 		</table>
@@ -218,7 +218,43 @@
 					else
 						document.getElementById('bmbj').innerHTML = "(无)";
 				}
+<%-- 再去掉,不显示。Lin
 				document.getElementById('xfye').innerHTML = d.xfye;
+--%>
+			}
+		});
+	}
+
+	function selBaseInfoByKah(value){
+		$.ajax({
+			url:"<serv.ss name='ry_selBaseInfoByKah'/>",
+			type:"post",
+			data:{
+				kah:value
+			},
+			dataType:"json",
+			success:function(data){
+				if (data.ssCode != 0) {
+					alert(data.ssMsg);
+					return;
+				}
+				var d = data.ssData;
+				document.getElementById('xm').innerHTML = d.xm;
+				document.getElementById('ryh').innerHTML = d.ryh;
+				if (d.rylbm != 1100) {	// 不是学员。Lin
+					if (d.bmmc)
+						document.getElementById('bmbj').innerHTML = d.bmmc;
+					else
+						document.getElementById('bmbj').innerHTML = "(无)";
+				} else {
+					if (d.bjmc)
+						document.getElementById('bmbj').innerHTML = d.bjmc;
+					else
+						document.getElementById('bmbj').innerHTML = "(无)";
+				}
+<%-- 再去掉,不显示。Lin
+				document.getElementById('xfye').innerHTML = d.xfye;
+--%>
 			}
 		});
 	}

+ 66 - 15
page/ka_nfcAdd.jsp

@@ -136,7 +136,20 @@ onChange="selBaseInfoByRyid"
 			<tr>
 				<th>NFC</th>
 				<td>
-					<input onChange="selBaseInfoByNfch" name="kah"/>
+					
+<%--自动生成:ka.kah--%>
+<script>
+ss.dom.formElemConfig.kah={val:'<ss:txt val='${ka.kah}'/>',type:window.ss.dom.TYPE.INPUT};
+</script>
+<ss-inp
+placeholder="请输入卡号"
+v-model="kah"
+name="kah"
+:readonly="false"
+>
+
+</ss-inp>
+
 				</td>
 			</tr>
 		</table>
@@ -163,28 +176,30 @@ onChange="selBaseInfoByRyid"
 
 	</div>
 <input name='wdComponentID' type='hidden' value='ka_nfcAdd'/></form>
-<script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
-<script type="text/javascript" src="/ss/js/wdRecord.js"></script>
+
+<ss:ichk name='ka_nfcAdd'/>
+<script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
+<script type="text/javascript" src="/ss/js/wdRecord.js"></script>
 <script type="text/javascript">(function(){wdRecord("ka_nfcAdd");})();</script>
 <script type="text/javascript" src="/ss/js/wdFitHeight.js"></script>
 <script type="text/javascript">initWdFitHeight(0)</script>
 <script type="text/javascript">initWdFitHeightFunction=function(){initWdFitHeight(0);};</script>
-<ss:equal val="${empty resizeComponent}" val2="false">
-<script>{var iframe=wd.display.getFrameOfWindow();
-if(iframe&&iframe.contentWindow==window)
-wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
+<ss:equal val="${empty resizeComponent}" val2="false">
+<script>{var iframe=wd.display.getFrameOfWindow();
+if(iframe&&iframe.contentWindow==window)
+wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
 </ss:equal>
 <ss:help/>
 </body>
-<script type="text/javascript">
-try{wd.display.showMsgPopup('${msg}');
-}catch(err){console.error(err);}
-</script>
-<ss:equal val="${empty wdclosewindowparam}" val2="false">
-<script type="text/javascript">
-try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
-}catch(err){console.error(err);}
+<script type="text/javascript">
+try{wd.display.showMsgPopup('${msg}');
+}catch(err){console.error(err);}
 </script>
+<ss:equal val="${empty wdclosewindowparam}" val2="false">
+<script type="text/javascript">
+try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
+}catch(err){console.error(err);}
+</script>
 </ss:equal>
 
 </html>
@@ -292,7 +307,43 @@ try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
 					else
 						document.getElementById('bmbj').innerHTML = "(无)";
 				}
+<%-- 再去掉,不显示。Lin
 				document.getElementById('xfye').innerHTML = d.xfye;
+--%>
+			}
+		});
+	}
+
+	function selBaseInfoByKah(value){
+		$.ajax({
+			url:"<ss:serv name='ry_selBaseInfoByKah'/>",
+			type:"post",
+			data:{
+				kah:value
+			},
+			dataType:"json",
+			success:function(data){
+				if (data.ssCode != 0) {
+					alert(data.ssMsg);
+					return;
+				}
+				var d = data.ssData;
+				document.getElementById('xm').innerHTML = d.xm;
+				document.getElementById('ryh').innerHTML = d.ryh;
+				if (d.rylbm != 1100) {	// 不是学员。Lin
+					if (d.bmmc)
+						document.getElementById('bmbj').innerHTML = d.bmmc;
+					else
+						document.getElementById('bmbj').innerHTML = "(无)";
+				} else {
+					if (d.bjmc)
+						document.getElementById('bmbj').innerHTML = d.bjmc;
+					else
+						document.getElementById('bmbj').innerHTML = "(无)";
+				}
+<%-- 再去掉,不显示。Lin
+				document.getElementById('xfye').innerHTML = d.xfye;
+--%>
 			}
 		});
 	}