gaoluyang
2025-09-20 4b39710e41760807527cba66c248c0939c3427b0
src/pages/inspectionUpload/index.vue
@@ -317,9 +317,11 @@
const startScan = async () => {
  try {
    scanLoading.value = true
    // 使用uniapp的扫码API
    uni.scanCode({
      success: (res) => {
        console.log('扫码成功:', res)
        handleScanSuccess(res)
      },
      fail: (err) => {
@@ -328,10 +330,14 @@
          title: '扫码失败',
          icon: 'error'
        })
      },
      complete: () => {
        scanLoading.value = false
      }
    })
  } catch (e) {
    console.error('启动扫码失败:', e)
    scanLoading.value = false
    uni.showToast({
      title: '启动扫码失败',
      icon: 'error'
@@ -346,6 +352,8 @@
// 扫码成功处理
const handleScanSuccess = async (result) => {
  try {
    console.log('处理扫码结果:', result)
    uni.showToast({
      title: '识别成功',
      icon: 'success'
@@ -355,12 +363,28 @@
    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'
@@ -369,11 +393,33 @@
}
const callBackendAPI = (result) => {
  nextTick(() => {
    qrCodeFormDia.value?.openDialog(result)
  })
  console.log('准备打开弹框,数据:', result)
  console.log('弹框组件引用:', qrCodeFormDia.value)
  // 确保组件引用存在
  if (qrCodeFormDia.value) {
    console.log('直接调用弹框openDialog方法')
    qrCodeFormDia.value.openDialog(result)
  } else {
    // 如果组件引用不存在,等待下一个tick
    console.log('组件引用不存在,等待nextTick')
    nextTick(() => {
      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) => {
  console.log('扫码结果:', result)