| | |
| | | |
| | | const startScan = async () => { |
| | | try { |
| | | scanLoading.value = true |
| | | // 使用uniapp的扫码API |
| | | uni.scanCode({ |
| | | success: (res) => { |
| | | console.log('扫码成功:', res) |
| | | handleScanSuccess(res) |
| | | }, |
| | | fail: (err) => { |
| | |
| | | title: '扫码失败', |
| | | icon: 'error' |
| | | }) |
| | | }, |
| | | complete: () => { |
| | | scanLoading.value = false |
| | | } |
| | | }) |
| | | } catch (e) { |
| | | console.error('启动扫码失败:', e) |
| | | scanLoading.value = false |
| | | uni.showToast({ |
| | | title: '启动扫码失败', |
| | | icon: 'error' |
| | |
| | | // 扫码成功处理 |
| | | const handleScanSuccess = async (result) => { |
| | | try { |
| | | console.log('处理扫码结果:', result) |
| | | |
| | | uni.showToast({ |
| | | title: '识别成功', |
| | | icon: 'success' |
| | |
| | | let qrData |
| | | try { |
| | | qrData = JSON.parse(result.result) |
| | | console.log('解析的二维码数据:', qrData) |
| | | } catch (e) { |
| | | qrData = { deviceName: result.result, location: '' } |
| | | // 如果不是JSON格式,直接使用扫码结果作为设备名称 |
| | | qrData = { |
| | | deviceName: result.result, |
| | | location: '', |
| | | qrCodeId: result.result // 添加二维码ID |
| | | } |
| | | console.log('使用默认数据格式:', qrData) |
| | | } |
| | | |
| | | // 确保数据完整性 |
| | | if (!qrData.deviceName) { |
| | | qrData.deviceName = result.result |
| | | } |
| | | if (!qrData.qrCodeId) { |
| | | qrData.qrCodeId = result.result |
| | | } |
| | | |
| | | callBackendAPI(qrData) |
| | | } catch (error) { |
| | | console.error('处理扫码结果失败:', error) |
| | | uni.showToast({ |
| | | title: error.message || '数据解析失败', |
| | | icon: 'error' |
| | |
| | | } |
| | | |
| | | const callBackendAPI = (result) => { |
| | | console.log('准备打开弹框,数据:', result) |
| | | console.log('弹框组件引用:', qrCodeFormDia.value) |
| | | |
| | | // 确保组件引用存在 |
| | | if (qrCodeFormDia.value) { |
| | | console.log('直接调用弹框openDialog方法') |
| | | qrCodeFormDia.value.openDialog(result) |
| | | } else { |
| | | // 如果组件引用不存在,等待下一个tick |
| | | console.log('组件引用不存在,等待nextTick') |
| | | nextTick(() => { |
| | | qrCodeFormDia.value?.openDialog(result) |
| | | console.log('nextTick后弹框组件引用:', qrCodeFormDia.value) |
| | | if (qrCodeFormDia.value) { |
| | | console.log('nextTick后调用弹框openDialog方法') |
| | | qrCodeFormDia.value.openDialog(result) |
| | | } else { |
| | | console.error('弹框组件引用不存在') |
| | | uni.showToast({ |
| | | title: '弹框组件未准备好', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | |
| | | // 扫码处理 |
| | | const handleScanCode = (result) => { |