| ¶Ô±ÈÐÂÎļþ |
| | |
| | | var vm = new Vue({ |
| | | el: '#app', |
| | | data: function () { |
| | | return { |
| | | isLoading: false, |
| | | textInput: '', |
| | | scanWorkstation: '', |
| | | html5QrCode: null, |
| | | pendingCallbacks: {} // åå¨åè°å½æ° |
| | | } |
| | | }, |
| | | mounted() { |
| | | // åå§åæ¶æ¯çå¬ |
| | | window.addEventListener('message', this.handleH5Response); |
| | | }, |
| | | beforeDestroy() { |
| | | // æ¸
çäºä»¶çå¬ |
| | | window.removeEventListener('message', this.handleH5Response); |
| | | }, |
| | | methods: { |
| | | // å¤çH5çååº |
| | | handleH5Response(event) { |
| | | try { |
| | | const data = JSON.parse(event.data); |
| | | if (data.RequestId && typeof data.returnValue !== 'undefined') { |
| | | const callback = this.pendingCallbacks[data.RequestId]; |
| | | if (callback) { |
| | | callback(data.returnValue); |
| | | delete this.pendingCallbacks[data.RequestId]; |
| | | } |
| | | } |
| | | } catch (e) { |
| | | console.error('è§£æååºå¤±è´¥:', e); |
| | | } |
| | | }, |
| | | |
| | | // å¯å¨æ«ææµè¯ |
| | | startScanTest() { |
| | | const requestId = Date.now().toString(); // çæå¯ä¸è¯·æ±ID |
| | | const sendData = { |
| | | Type: 'Scan', |
| | | Barcode: 'TM250304-000104-2', |
| | | Detail: 'detail info', |
| | | Ip: '192.168.38.135', |
| | | Port: '9100', |
| | | RequestId: requestId // æ·»å è¯·æ±æ è¯ |
| | | }; |
| | | |
| | | // å建Promiseçå¾
ååº |
| | | new Promise((resolve) => { |
| | | this.pendingCallbacks[requestId] = resolve; |
| | | |
| | | // åéæ¶æ¯ |
| | | var result = uni.webView.postMessage({ |
| | | data: JSON.stringify(sendData) |
| | | }); |
| | | alert(result); |
| | | //// 设置è¶
æ¶å¤ç |
| | | //setTimeout(() => { |
| | | // if (this.pendingCallbacks[requestId]) { |
| | | // delete this.pendingCallbacks[requestId]; |
| | | // console.error('请æ±è¶
æ¶'); |
| | | // resolve(-1); // è¿åè¶
æ¶ç¶æ |
| | | // } |
| | | //}, 5000); // 5ç§è¶
æ¶ |
| | | }).then(result => { |
| | | console.log('æä½ç»æ:', result); |
| | | // è¿éå¤çè¿åç»æ |
| | | if (result === 0) { |
| | | alert('æä½æå!'); |
| | | } else { |
| | | alert('æä½å¤±è´¥ï¼é误ç : ' + result); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |