<!-- 设备收发详情--公共组件 --> <script name="TemplateDetail" lang="ts" setup> import type { Ref } from 'vue' import type { FormInstance, FormRules, TabPaneName, TabsPaneContext, UploadProps, UploadUserFile } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' import sendReceiveOrder from './order.vue' import sendReceiveMeasure from './measure.vue' import sendReceiveBasic from './basic.vue' import sendReceiveMeasureItem from './measureItem.vue' import sendReceiveCertificate from './certificate.vue' import { tagBinding } from '@/api/reader' import scanEquipmentDialog from '@/components/scanEquipmentDialog/index.vue' const props = defineProps({ radioMenus: { type: Array as () => { value: string; name: string }[], default: () => [ // 标签内容 { name: '任务单信息', value: 'send-receive-order' }, // { name: '检定信息', value: 'send-receive-measure' }, { name: '基本信息', value: 'send-receive-basic' }, { name: '检定项信息', value: 'send-receive-measureItem' }, { name: '证书报告', value: 'send-receive-certificate' }, ], }, title: { type: String, default: '设备收发管理', }, orderId: { // 任务单id type: String, }, equipmentId: { // 设备id type: String, }, menuType: { // 菜单类型 hiddenButton需要隐藏按钮 type: String, default: '', }, }) const textMap: { [key: string]: string } = { edit: '编辑', add: '新建', detail: '详情', }// 页面类型字典 const $router = useRouter() // 路由实例 const loading = ref(false) // 表单加载状态 const pageType = ref('detail') // 页面类型: add, edit, detail const infoId = ref('') // id const bookBasicRef = ref() // 子组件--基本信息ref const sampleId = ref('') // 任务单id // -------------------------------------标签-------------------------------------------------- const current = ref(props.radioMenus[0].value) // 选择的tab 默认基本信息 const sendReceiveOrderRef = ref() // 任务单信息组件ref const sendReceiveMeasureRef = ref() // 检定信息组件ref const sendReceiveBasicRef = ref() // 基本信息组件ref const sendReceiveCertificateRef = ref() // 证书报告组件ref // -----------------------------------路由参数------------------------------------------------- // 从路由中获取页面类型参数 const $route = useRoute() if ($route.params && $route.params.type) { pageType.value = $route.params.type as string if ($route.params.id) { infoId.value = $route.params.id as string } } // ---------------------------------右上角按钮(操作表单)------------------------------------------ // 点击关闭 const close = () => { $router.back() } // 点击标识打印 const labelPrinting = () => { $router.push({ path: '/taskMeasure/printList', }) } // --------------------------------------------标签绑定-------------------------------------------- const scanEquipmentRef = ref() // 点击扫描收添加 const scan = () => { // 参数:是标签绑定 scanEquipmentRef.value.initDialog(true, 'detail') } // 扫描结束 const scanOver = (value: any) => { const label = value.label scanEquipmentRef.value.closeDialog() tagBinding({ label, equipmentId: props.equipmentId }).then((res) => { ElMessage.success('标签绑定成功') scanEquipmentRef.value.closeDialog() sendReceiveBasicRef.value.fetchInfo() // 获取详情 }) } // ------------------------------------------------------------------------------------------- const customerId = ref('') // 委托方id const giveCustomerId = (customerIdParam: string) => { customerId.value = customerIdParam console.log('委托方id', customerId.value) } </script> <template> <app-container> <detail-page v-loading="loading" :title="`${title}-${textMap[pageType]}`"> <template #btns> <el-button v-if="props.menuType !== 'hiddenButton'" type="primary" @click="labelPrinting"> 标识打印 </el-button> <el-button v-if="props.menuType !== 'hiddenButton'" type="primary" @click="scan"> rfid标签绑定 </el-button> <el-button type="info" @click="close"> 关闭 </el-button> </template> <el-radio-group v-model="current"> <el-radio-button v-for="item in radioMenus" :key="item!.value" :label="item.value"> {{ item.name }} </el-radio-button> </el-radio-group> </detail-page> <!-- 任务单信息 --> <send-receive-order v-if="current === 'send-receive-order'" ref="sendReceiveOrderRef" :order-id="props.orderId" @give-customer-id="giveCustomerId" /> <!-- 检定信息 --> <send-receive-measure v-if="current === 'send-receive-measure'" ref="sendReceiveMeasureRef" :page-type="pageType" :order-id="props.orderId!" :sample-id="props.equipmentId!" @give-customer-id="giveCustomerId" /> <!-- 基本信息 --> <send-receive-basic v-if="current === 'send-receive-basic'" ref="sendReceiveBasicRef" :equipment-id="props.equipmentId" /> <!-- 检定项信息 --> <send-receive-measure-item v-if="current === 'send-receive-measureItem'" ref="sendReceiveMeasureItemRef" :page-type="pageType" :equipment-id="props.equipmentId!" /> <!-- 证书报告 --> <send-receive-certificate v-if="current === 'send-receive-certificate'" ref="sendReceiveCertificateRef" :customer-id="customerId" :sample-id="props.equipmentId!" /> </app-container> <!-- 扫描 --> <scan-equipment-dialog ref="scanEquipmentRef" title="标签绑定" @confirm="scanOver" /> </template>