diff --git a/src/pages_function/pages/equipment/index.vue b/src/pages_function/pages/equipment/index.vue index 070cf3b..8350369 100644 --- a/src/pages_function/pages/equipment/index.vue +++ b/src/pages_function/pages/equipment/index.vue @@ -57,6 +57,19 @@ import AppTitleHeader from '@/components/common/AppTitleHeader.vue' const equipmentCode = ref(''); const isScanning = ref(false); +const SCAN_TYPE = 'EQUIPMENT'; +const MODULE_NAME = '设备'; + +function parseScanResult(res) { + const raw = String(res?.result || '').trim(); + if (!raw) return {}; + const splitIndex = raw.indexOf('-'); + if (splitIndex <= 0 || splitIndex >= raw.length - 1) return {}; + return { + type: raw.slice(0, splitIndex), + id: raw.slice(splitIndex + 1) + }; +} function startScan() { if (isScanning.value) return; @@ -71,12 +84,16 @@ function startScan() { onlyFromCamera: true, scanType: ['qrCode', 'barCode'], success: (res) => { - const info = JSON.parse(res.result) - if (!info || !info.id) { + const { type, id } = parseScanResult(res); + if (!type || !id) { uni.showToast({ title: '未获取到扫码结果', icon: 'none' }) return } - navigateToDetail(info.id) + if (type !== SCAN_TYPE) { + uni.showToast({ title: `二维码类型不匹配,请扫描${MODULE_NAME}二维码`, icon: 'none' }) + return + } + navigateToDetail(id) }, fail: (err) => { const msg = String(err?.errMsg || '') diff --git a/src/pages_function/pages/keypart/index.vue b/src/pages_function/pages/keypart/index.vue index 4afa0f5..f5a1014 100644 --- a/src/pages_function/pages/keypart/index.vue +++ b/src/pages_function/pages/keypart/index.vue @@ -57,6 +57,19 @@ import AppTitleHeader from '@/components/common/AppTitleHeader.vue' const keypartCode = ref(''); const isScanning = ref(false); +const SCAN_TYPE = 'KEY_PART'; +const MODULE_NAME = '关键件'; + +function parseScanResult(res) { + const raw = String(res?.result || '').trim(); + if (!raw) return {}; + const splitIndex = raw.indexOf('-'); + if (splitIndex <= 0 || splitIndex >= raw.length - 1) return {}; + return { + type: raw.slice(0, splitIndex), + id: raw.slice(splitIndex + 1) + }; +} function startScan() { if (isScanning.value) return; @@ -71,12 +84,16 @@ function startScan() { onlyFromCamera: true, scanType: ['qrCode', 'barCode'], success: (res) => { - const info = JSON.parse(res.result) - if (!info || !info.id) { + const { type, id } = parseScanResult(res); + if (!type || !id) { uni.showToast({ title: '未获取到扫码结果', icon: 'none' }) return } - navigateToDetail(info.id) + if (type !== SCAN_TYPE) { + uni.showToast({ title: `二维码类型不匹配,请扫描${MODULE_NAME}二维码`, icon: 'none' }) + return + } + navigateToDetail(id) }, fail: (err) => { const msg = String(err?.errMsg || '') diff --git a/src/pages_function/pages/mold/index.vue b/src/pages_function/pages/mold/index.vue index 1479262..c182840 100644 --- a/src/pages_function/pages/mold/index.vue +++ b/src/pages_function/pages/mold/index.vue @@ -57,6 +57,20 @@ import AppTitleHeader from '@/components/common/AppTitleHeader.vue' const moldCode = ref(''); const isScanning = ref(false); +const SCAN_TYPE = 'MOLD'; +const MODULE_NAME = '模具'; + +function parseScanResult(res) { + const raw = String(res?.result || '').trim(); + if (!raw) return {}; + const splitIndex = raw.indexOf('-'); + if (splitIndex <= 0 || splitIndex >= raw.length - 1) return {}; + return { + type: raw.slice(0, splitIndex), + id: raw.slice(splitIndex + 1) + }; +} + function startScan() { if (isScanning.value) return; @@ -67,18 +81,19 @@ function startScan() { } uni.scanCode({ - onlyFromCamera: true, + onlyFromCamera: false, scanType: ['qrCode', 'barCode'], success: (res) => { - console.log(res) - const info = JSON.parse(res.result) - console.log('info',info) - if (!info) { + const { type, id } = parseScanResult(res); + if (!type || !id) { uni.showToast({ title: '未获取到扫码结果', icon: 'none' }) return } - console.log('info.id',info.id) - navigateToDetail(info.id) + if (type !== SCAN_TYPE) { + uni.showToast({ title: `二维码类型不匹配,请扫描${MODULE_NAME}二维码`, icon: 'none' }) + return + } + navigateToDetail(id) }, fail: (err) => { const msg = String(err?.errMsg || '') @@ -109,7 +124,6 @@ function confirmInput() { } function navigateToDetail(id) { - console.log('id',id) uni.navigateTo({ url: `/pages_function/pages/mold/detail?id=${encodeURIComponent(id)}` }); diff --git a/src/pages_function/pages/product/index.vue b/src/pages_function/pages/product/index.vue index 13992de..67f7f05 100644 --- a/src/pages_function/pages/product/index.vue +++ b/src/pages_function/pages/product/index.vue @@ -57,6 +57,19 @@ import AppTitleHeader from '@/components/common/AppTitleHeader.vue' const productId = ref('') const isScanning = ref(false) +const SCAN_TYPE = 'PRODUCTMATERIAL' +const MODULE_NAME = '产品物料' + +function parseScanResult(res) { + const raw = String(res?.result || '').trim() + if (!raw) return {} + const splitIndex = raw.indexOf('-') + if (splitIndex <= 0 || splitIndex >= raw.length - 1) return {} + return { + type: raw.slice(0, splitIndex), + id: raw.slice(splitIndex + 1) + } +} function startScan() { if (isScanning.value) return @@ -68,12 +81,16 @@ function startScan() { onlyFromCamera: true, scanType: ['qrCode', 'barCode'], success: (res) => { - const info = JSON.parse(res.result) - if (!info || !info.id) { + const { type, id } = parseScanResult(res) + if (!type || !id) { uni.showToast({ title: '未获取到扫码结果', icon: 'none' }) return } - navigateToDetail(info.id) + if (type !== SCAN_TYPE) { + uni.showToast({ title: `二维码类型不匹配,请扫描${MODULE_NAME}二维码`, icon: 'none' }) + return + } + navigateToDetail(id) }, fail: (err) => { const msg = String(err?.errMsg || '') diff --git a/src/pages_function/pages/spare/index.vue b/src/pages_function/pages/spare/index.vue index 3ac40d0..a80266e 100644 --- a/src/pages_function/pages/spare/index.vue +++ b/src/pages_function/pages/spare/index.vue @@ -57,6 +57,19 @@ import AppTitleHeader from '@/components/common/AppTitleHeader.vue' const spareCode = ref(''); const isScanning = ref(false); +const SCAN_TYPE = 'SPARE'; +const MODULE_NAME = '备件'; + +function parseScanResult(res) { + const raw = String(res?.result || '').trim(); + if (!raw) return {}; + const splitIndex = raw.indexOf('-'); + if (splitIndex <= 0 || splitIndex >= raw.length - 1) return {}; + return { + type: raw.slice(0, splitIndex), + id: raw.slice(splitIndex + 1) + }; +} function startScan() { if (isScanning.value) return; @@ -71,12 +84,16 @@ function startScan() { onlyFromCamera: true, scanType: ['qrCode', 'barCode'], success: (res) => { - const info = JSON.parse(res.result) - if (!info || !info.id) { + const { type, id } = parseScanResult(res); + if (!type || !id) { uni.showToast({ title: '未获取到扫码结果', icon: 'none' }) return } - navigateToDetail(info.id); + if (type !== SCAN_TYPE) { + uni.showToast({ title: `二维码类型不匹配,请扫描${MODULE_NAME}二维码`, icon: 'none' }) + return + } + navigateToDetail(id); }, fail: (err) => { const msg = String(err?.errMsg || '')