diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/system/label.ts b/src/api/system/label.ts index 1aac7dc..814b7fa 100644 --- a/src/api/system/label.ts +++ b/src/api/system/label.ts @@ -35,7 +35,6 @@ }) } // 批量导入 - export function batchImportLabel(data: object) { return request({ url: '/system/rfid/importRfid', @@ -43,3 +42,19 @@ data, }) } +// 扫描导入 +export function scanBatchImport(data: object) { + return request({ + url: '/system/rfid/batchAdd', + method: 'post', + params: data, + responseType: 'blob', + // paramsSerializer: () => qs.stringify(params, { arrayFormat: 'repeat' }), + // paramsSerializer: (params) => { + // return qs.stringify(params, { indices: false }) + // }, + paramsSerializer: { + serialize: params => qs.stringify(params, { arrayFormat: 'repeat' }), + }, + }) +} diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/system/label.ts b/src/api/system/label.ts index 1aac7dc..814b7fa 100644 --- a/src/api/system/label.ts +++ b/src/api/system/label.ts @@ -35,7 +35,6 @@ }) } // 批量导入 - export function batchImportLabel(data: object) { return request({ url: '/system/rfid/importRfid', @@ -43,3 +42,19 @@ data, }) } +// 扫描导入 +export function scanBatchImport(data: object) { + return request({ + url: '/system/rfid/batchAdd', + method: 'post', + params: data, + responseType: 'blob', + // paramsSerializer: () => qs.stringify(params, { arrayFormat: 'repeat' }), + // paramsSerializer: (params) => { + // return qs.stringify(params, { indices: false }) + // }, + paramsSerializer: { + serialize: params => qs.stringify(params, { arrayFormat: 'repeat' }), + }, + }) +} diff --git a/src/components.d.ts b/src/components.d.ts index c627659..ccbfda8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -52,6 +52,7 @@ PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] PieChart: typeof import('./components/Echart/PieChart.vue')['default'] PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + QRcodeDeviceDialog: typeof import('./components/QRcodeDeviceDialog/index.vue')['default'] QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/system/label.ts b/src/api/system/label.ts index 1aac7dc..814b7fa 100644 --- a/src/api/system/label.ts +++ b/src/api/system/label.ts @@ -35,7 +35,6 @@ }) } // 批量导入 - export function batchImportLabel(data: object) { return request({ url: '/system/rfid/importRfid', @@ -43,3 +42,19 @@ data, }) } +// 扫描导入 +export function scanBatchImport(data: object) { + return request({ + url: '/system/rfid/batchAdd', + method: 'post', + params: data, + responseType: 'blob', + // paramsSerializer: () => qs.stringify(params, { arrayFormat: 'repeat' }), + // paramsSerializer: (params) => { + // return qs.stringify(params, { indices: false }) + // }, + paramsSerializer: { + serialize: params => qs.stringify(params, { arrayFormat: 'repeat' }), + }, + }) +} diff --git a/src/components.d.ts b/src/components.d.ts index c627659..ccbfda8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -52,6 +52,7 @@ PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] PieChart: typeof import('./components/Echart/PieChart.vue')['default'] PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + QRcodeDeviceDialog: typeof import('./components/QRcodeDeviceDialog/index.vue')['default'] QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/src/components/QRcodeDeviceDialog/index.vue b/src/components/QRcodeDeviceDialog/index.vue new file mode 100644 index 0000000..e053348 --- /dev/null +++ b/src/components/QRcodeDeviceDialog/index.vue @@ -0,0 +1,175 @@ + + + + + + + diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/system/label.ts b/src/api/system/label.ts index 1aac7dc..814b7fa 100644 --- a/src/api/system/label.ts +++ b/src/api/system/label.ts @@ -35,7 +35,6 @@ }) } // 批量导入 - export function batchImportLabel(data: object) { return request({ url: '/system/rfid/importRfid', @@ -43,3 +42,19 @@ data, }) } +// 扫描导入 +export function scanBatchImport(data: object) { + return request({ + url: '/system/rfid/batchAdd', + method: 'post', + params: data, + responseType: 'blob', + // paramsSerializer: () => qs.stringify(params, { arrayFormat: 'repeat' }), + // paramsSerializer: (params) => { + // return qs.stringify(params, { indices: false }) + // }, + paramsSerializer: { + serialize: params => qs.stringify(params, { arrayFormat: 'repeat' }), + }, + }) +} diff --git a/src/components.d.ts b/src/components.d.ts index c627659..ccbfda8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -52,6 +52,7 @@ PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] PieChart: typeof import('./components/Echart/PieChart.vue')['default'] PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + QRcodeDeviceDialog: typeof import('./components/QRcodeDeviceDialog/index.vue')['default'] QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/src/components/QRcodeDeviceDialog/index.vue b/src/components/QRcodeDeviceDialog/index.vue new file mode 100644 index 0000000..e053348 --- /dev/null +++ b/src/components/QRcodeDeviceDialog/index.vue @@ -0,0 +1,175 @@ + + + + + + + diff --git a/src/components/SearchArea/index.vue b/src/components/SearchArea/index.vue index 55f8cf9..451ee49 100644 --- a/src/components/SearchArea/index.vue +++ b/src/components/SearchArea/index.vue @@ -80,6 +80,7 @@
+ 搜索 diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/system/label.ts b/src/api/system/label.ts index 1aac7dc..814b7fa 100644 --- a/src/api/system/label.ts +++ b/src/api/system/label.ts @@ -35,7 +35,6 @@ }) } // 批量导入 - export function batchImportLabel(data: object) { return request({ url: '/system/rfid/importRfid', @@ -43,3 +42,19 @@ data, }) } +// 扫描导入 +export function scanBatchImport(data: object) { + return request({ + url: '/system/rfid/batchAdd', + method: 'post', + params: data, + responseType: 'blob', + // paramsSerializer: () => qs.stringify(params, { arrayFormat: 'repeat' }), + // paramsSerializer: (params) => { + // return qs.stringify(params, { indices: false }) + // }, + paramsSerializer: { + serialize: params => qs.stringify(params, { arrayFormat: 'repeat' }), + }, + }) +} diff --git a/src/components.d.ts b/src/components.d.ts index c627659..ccbfda8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -52,6 +52,7 @@ PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] PieChart: typeof import('./components/Echart/PieChart.vue')['default'] PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + QRcodeDeviceDialog: typeof import('./components/QRcodeDeviceDialog/index.vue')['default'] QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/src/components/QRcodeDeviceDialog/index.vue b/src/components/QRcodeDeviceDialog/index.vue new file mode 100644 index 0000000..e053348 --- /dev/null +++ b/src/components/QRcodeDeviceDialog/index.vue @@ -0,0 +1,175 @@ + + + + + + + diff --git a/src/components/SearchArea/index.vue b/src/components/SearchArea/index.vue index 55f8cf9..451ee49 100644 --- a/src/components/SearchArea/index.vue +++ b/src/components/SearchArea/index.vue @@ -80,6 +80,7 @@
+ 搜索 diff --git a/src/components/scanEquipmentDialog/index.vue b/src/components/scanEquipmentDialog/index.vue index fb13a4c..c097677 100644 --- a/src/components/scanEquipmentDialog/index.vue +++ b/src/components/scanEquipmentDialog/index.vue @@ -14,9 +14,14 @@ type: String, default: '扫描收入', }, + isMuit: { + type: Boolean, + default: false, + }, }) const emits = defineEmits(['confirm']) const dialogVisible = ref(false) // 弹窗显示 +const multipleTableRef = ref() const scanStatus = ref('0') const isBinding = ref(false) // 是否是标签绑定 const pageType = ref('') // 页面类型、表格list、需要提醒是否绑定,detail详情不提醒 @@ -24,7 +29,6 @@ // 扫描到的标签列表 const list = ref([]) - // 获取数据 const mesureTypeMap = ref({}) as any const managerStateMap = ref({}) as any @@ -40,7 +44,11 @@ managerStateMap.value[item.value] = item.name }) } - +const checkList = ref([]) // 多选选中 +// 多选 +const handleSelectionChange = (val: any) => { + checkList.value = val +} // 关闭弹窗 const closeDialog = () => { dialogVisible.value = false @@ -48,7 +56,7 @@ // 点击确定,保存选择的成员配置 const confirm = () => { - if (isBinding.value && !singleChecked.value) { // 标签绑定 + if (isBinding.value && (!singleChecked.value && !checkList.value.length)) { // 标签绑定 ElMessage.warning('请选中') return false } @@ -69,11 +77,15 @@ // singleChecked.value = '' // }) // } - emits('confirm', singleChecked.value) + emits('confirm', props.isMuit ? checkList.value : singleChecked.value) singleChecked.value = '' // 清除单选选中 + checkList.value = [] + multipleTableRef.value.clearSelection() } else { - emits('confirm', list.value) + emits('confirm', props.isMuit ? checkList.value : list.value) + checkList.value = [] + multipleTableRef.value.clearSelection() } } else { @@ -155,13 +167,15 @@
扫描到 {{ list.length }} 个标签{{ list.length > 1 ? ',请选择需要绑定的标签' : '' }}
- + - + + + @@ -192,6 +206,9 @@ 确 定 + + 确 定 + 关 闭 diff --git a/src/api/reader.ts b/src/api/reader.ts index e495856..b05b634 100644 --- a/src/api/reader.ts +++ b/src/api/reader.ts @@ -1,6 +1,6 @@ // 读写器或扫码枪相关接口 import axios from 'axios' -import request from './index' +import request from './request' const readerType: { [key: string]: string } = { readerWriter: 'http://127.0.0.1:8083/business/readWriter/gunAndTId/readList', // 有线扫码枪和大读写器 // readerWriter: '/proxy/business/readWriter/tId/readList', // 读写器 @@ -11,9 +11,9 @@ } // 设备台账标签绑定 -export function equipmentLabelBind(data: { sampleId: string; label: string }) { +export function equipmentLabelBind(data: { equipmentId: string; label: string }) { return request({ - url: '/equipment/label/bind', + url: '/business/dispatch/label/bind', method: 'post', data, }) @@ -22,7 +22,7 @@ // 设备台账标签的设备列表 export function getReaderEquipmentList(data: Object) { return request({ - url: '/equipment/label/readList', + url: '/business/dispatch/label/readList', method: 'post', data, }) diff --git a/src/api/system/label.ts b/src/api/system/label.ts index 1aac7dc..814b7fa 100644 --- a/src/api/system/label.ts +++ b/src/api/system/label.ts @@ -35,7 +35,6 @@ }) } // 批量导入 - export function batchImportLabel(data: object) { return request({ url: '/system/rfid/importRfid', @@ -43,3 +42,19 @@ data, }) } +// 扫描导入 +export function scanBatchImport(data: object) { + return request({ + url: '/system/rfid/batchAdd', + method: 'post', + params: data, + responseType: 'blob', + // paramsSerializer: () => qs.stringify(params, { arrayFormat: 'repeat' }), + // paramsSerializer: (params) => { + // return qs.stringify(params, { indices: false }) + // }, + paramsSerializer: { + serialize: params => qs.stringify(params, { arrayFormat: 'repeat' }), + }, + }) +} diff --git a/src/components.d.ts b/src/components.d.ts index c627659..ccbfda8 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -52,6 +52,7 @@ PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] PieChart: typeof import('./components/Echart/PieChart.vue')['default'] PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + QRcodeDeviceDialog: typeof import('./components/QRcodeDeviceDialog/index.vue')['default'] QrDialog: typeof import('./components/QrDialog/index.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/src/components/QRcodeDeviceDialog/index.vue b/src/components/QRcodeDeviceDialog/index.vue new file mode 100644 index 0000000..e053348 --- /dev/null +++ b/src/components/QRcodeDeviceDialog/index.vue @@ -0,0 +1,175 @@ + + + + + + + diff --git a/src/components/SearchArea/index.vue b/src/components/SearchArea/index.vue index 55f8cf9..451ee49 100644 --- a/src/components/SearchArea/index.vue +++ b/src/components/SearchArea/index.vue @@ -80,6 +80,7 @@
+ 搜索 diff --git a/src/components/scanEquipmentDialog/index.vue b/src/components/scanEquipmentDialog/index.vue index fb13a4c..c097677 100644 --- a/src/components/scanEquipmentDialog/index.vue +++ b/src/components/scanEquipmentDialog/index.vue @@ -14,9 +14,14 @@ type: String, default: '扫描收入', }, + isMuit: { + type: Boolean, + default: false, + }, }) const emits = defineEmits(['confirm']) const dialogVisible = ref(false) // 弹窗显示 +const multipleTableRef = ref() const scanStatus = ref('0') const isBinding = ref(false) // 是否是标签绑定 const pageType = ref('') // 页面类型、表格list、需要提醒是否绑定,detail详情不提醒 @@ -24,7 +29,6 @@ // 扫描到的标签列表 const list = ref([]) - // 获取数据 const mesureTypeMap = ref({}) as any const managerStateMap = ref({}) as any @@ -40,7 +44,11 @@ managerStateMap.value[item.value] = item.name }) } - +const checkList = ref([]) // 多选选中 +// 多选 +const handleSelectionChange = (val: any) => { + checkList.value = val +} // 关闭弹窗 const closeDialog = () => { dialogVisible.value = false @@ -48,7 +56,7 @@ // 点击确定,保存选择的成员配置 const confirm = () => { - if (isBinding.value && !singleChecked.value) { // 标签绑定 + if (isBinding.value && (!singleChecked.value && !checkList.value.length)) { // 标签绑定 ElMessage.warning('请选中') return false } @@ -69,11 +77,15 @@ // singleChecked.value = '' // }) // } - emits('confirm', singleChecked.value) + emits('confirm', props.isMuit ? checkList.value : singleChecked.value) singleChecked.value = '' // 清除单选选中 + checkList.value = [] + multipleTableRef.value.clearSelection() } else { - emits('confirm', list.value) + emits('confirm', props.isMuit ? checkList.value : list.value) + checkList.value = [] + multipleTableRef.value.clearSelection() } } else { @@ -155,13 +167,15 @@
扫描到 {{ list.length }} 个标签{{ list.length > 1 ? ',请选择需要绑定的标签' : '' }}
- + - + + + @@ -192,6 +206,9 @@ 确 定 + + 确 定 + 关 闭 diff --git a/src/views/system/label/list.vue b/src/views/system/label/list.vue index a7a12e5..88c1395 100644 --- a/src/views/system/label/list.vue +++ b/src/views/system/label/list.vue @@ -3,8 +3,11 @@ import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' import type { ILabelItem, IUseStateList, IlistQuery, dictType } from './label' import { getDictByCode } from '@/api/system/dict' -import { batchImportLabel, delLabel, getLabelList, importLabel } from '@/api/system/label' +import { batchImportLabel, delLabel, getLabelList, importLabel, scanBatchImport } from '@/api/system/label' import { exportFile } from '@/utils/exportUtils' +import scanEquipmentDialog from '@/components/scanEquipmentDialog/index.vue' +// import scanEquipmentDialog from '@/components/scanEquipmentDialog/index.vue' + const { proxy } = getCurrentInstance() as any const useStateList = ref([]) // 关联使用情况字典值 const listQuery = reactive({ @@ -80,7 +83,33 @@ listQuery.offset = 1 fetchData(true) } - +// 扫描搜索 +const scanEquipmentRef = ref() +const scanFlag = ref('seach') +const scanSearch = () => { + scanFlag.value = 'seach' + // 参数:是标签绑定 + scanEquipmentRef.value.initDialog(true, 'detail') +} +// 扫描完成 +const scanOver = (value: any) => { + if (scanFlag.value === 'seach') { + console.log('单选选中rfid', value.rfid) + listQuery.rfid = value.rfid + fetchData(false) + scanEquipmentRef.value.closeDialog() + } + else if (scanFlag.value === 'batch') { + // 批量新增 + console.log('多选选中', value.map((item: any) => item.rfid)) + scanBatchImport(value.map((item: any) => item.rfid)).then((res) => { + if (res.code === 200) { + scanEquipmentRef.value.closeDialog() + fetchData(false) + } + }) + } +} const onFileChange = (event: any) => { // 原生上传 // console.log(event.target.files) @@ -187,6 +216,12 @@ ElMessage.warning('请选择需要删除的数据') } } +// 扫描录入 +const scanImport = () => { + scanFlag.value = 'batch' + // 参数:是标签绑定 + scanEquipmentRef.value.initDialog(true, 'detail') +} onMounted(() => { fetchLabelUseDict() fetchData(true) @@ -195,6 +230,8 @@