<!-- 核查项分类管理详情 --> <script lang="ts" setup name="checkDataDetail"> import { ref } from 'vue' import { ElLoading, ElMessage } from 'element-plus' import dayjs from 'dayjs' import type { IDetailCheckData, IEquipmentList, IForm } from './checkData-interface' import selectStandardEquipmentDialog from './dialog/selectStandardEquipmentDialog.vue' import saveCheckRecord from './dialog/saveCheckRecord.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' import useUserStore from '@/store/modules/user' import { getDictByCode } from '@/api/system/dict' import type { dictType } from '@/global' import multiTable from '@/components/MultiHeaderTable/index.vue' import { getCheckItemDetail, getJobInstructionList } from '@/api/equipment/standard/book' import SelectEquipmentDialog from '@/views/business/fieldTest/approve/dialog/selectEquipmentDialog.vue' import { addCheckData, calculateHandle, getInfo, updateCheckData } from '@/api/equipment/standard/checkData' const user = useUserStore() // 用户信息 const textMap: { [key: string]: string } = { edit: '编辑', add: '新建', detail: '详情', }// 字典 const $router = useRouter() // 关闭页面使用 const $route = useRoute() // 路由参数 const pageType = ref('add') // 页面类型: add, edit, detail const infoId = ref('') // 列表id const ruleFormRef = ref() // 表单ref const form = ref<IForm>({ dataNo: '', // 核查数据编号 checkDate: '', // 核查日期 checkAddress: '', // 核查地点 temperature: '', // 环境温度 humidity: '', // 环境湿度 checkAccord: '', // 核查依据(即标准装置的作业指导书文件minio文件名,多个分号分割) createUserName: '', // 核查员 stabilityExamine: '', // 是否用于稳定性考核(1/0) qualified: '', // 稳定性考核是否合格 }) // 校验规则 const formRules = ref({ checkDate: [{ required: true, message: '核查日期不能为空', trigger: ['blur', 'change'] }], checkAddress: [{ required: true, message: '核查地点不能为空', trigger: ['blur', 'change'] }], temperature: [{ required: true, message: '温度不能为空', trigger: ['blur', 'change'] }, { pattern: /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/, message: '温度只能为数字', trigger: ['blur', 'change'] }], humidity: [{ required: true, message: '相对湿度不能为空', trigger: ['blur', 'change'] }, { pattern: /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/, message: '相对湿度只能为数字', trigger: ['blur', 'change'] }], createUserName: [{ required: true, message: '核查员不能为空', trigger: ['blur', 'change'] }], stabilityExamine: [{ required: true, message: '是否用于稳定性考核不能为空', trigger: ['blur', 'change'] }], }) const saveCheckRecordRef = ref() // 保存核查记录dialog组件ref // -------------------------------------------字典------------------------------------------ const deviceTypeList = ref<dictType[]>([])// 设备分类 const standardList = ref<dictType[]>([])// 检校标准装置 const positionList = ref<dictType[]>([]) // 核查地点 const stabilityExamineList = [ // 是否用于稳定性考核 { id: '1', name: '是', }, { id: '2', name: '否', }, ] // 核查地点 positionList.value = [ { id: '1', name: '地点1', value: '1', }, { id: '2', name: '地点2', value: '2', }, ] function getDict() { // 设备分类 getDictByCode('bizEquipmentCategory').then((response) => { deviceTypeList.value = response.data }) // 检校标准装置 getDictByCode('bizStandardEquipmentType').then((response) => { standardList.value = response.data }) } // ----------------------------------路由参数------------------------------------------------ if ($route.params && $route.params.type) { pageType.value = $route.params.type as string console.log(pageType.value) if ($route.params.id) { infoId.value = $route.params.id as string } } // --------------------------------核查标准设备----------------------------------------------- const equipmentColumns = [ // 表头 { text: '设备名称', value: 'equipmentName', align: 'center', width: '240' }, { text: '型号规格', value: 'model', align: 'center' }, { text: '出厂编号', value: 'manufactureNo', align: 'center' }, { text: '准确度等级', value: 'accuracyLevel', align: 'center' }, { text: '测量范围', value: 'measureRange', align: 'center' }, { text: '制造厂家', value: 'manufacturer', align: 'center' }, { text: '证书有效期', value: 'certificateValid', align: 'center', width: '120' }, { text: '备注', value: 'remark', align: 'center' }, ] const equipmentList = ref<IEquipmentList[]>([])// 表格数据 const checkoutEquipmentList = ref([]) as any // 选中数据 const selectEquipmentDialogRef = ref() // 选择设备组件ref // 选中 const handleSelectionEquipmentChange = (e: any) => { checkoutEquipmentList.value = e } // 批量添加 const multiAddEquipment = () => { selectEquipmentDialogRef.value.initDialog() } // 确定选择设备 const confirmSelectEquipment = (list = []) => { list.forEach((item: IEquipmentList) => { // 只添加列表里不存在的 const index = equipmentList.value.findIndex((i: { id: string }) => item.id === i.id) if (index === -1) { item.certificateValid = item.certificateValid ? dayjs(item.certificateValid).format('YYYY-MM-DD') : item.certificateValid equipmentList.value.push(item) } }) } // 删除 const delEquipmentRow = () => { if (!checkoutEquipmentList.value.length) { ElMessage.warning('请选中要删除的行') } else { equipmentList.value = equipmentList.value.filter((item: any) => { return !checkoutEquipmentList.value.includes(item) }) } } // ------------------------------------------被核查设备--------------------------------------- const selectStandardId = ref('') // 被核查设备选择的标准装置id const selectStandardName = ref('') // 被核查设备选择的标准装置名称 const belongStandardEquipment = ref('') // 检校标准装置code const chekedEquipmentList = ref<IEquipmentList[]>([{ id: '', equipmentNo: '', // 设备编号 equipmentName: '', // 设备名称 model: '', // 型号规格 manufactureNo: '', // 出厂编号 accuracyLevel: '', // 准确度等级 measureRange: '', // 测量范围 manufacturer: '', // 制造厂(生产厂家) certificateValid: '', // 证书有效期 remark: '', // 备注 }])// 表格数据 const selectStandardEquipmentDialogRef = ref() // 选择标准装置组件ref // 点击选择被核查设备 const selectStandardEquipment = () => { selectStandardEquipmentDialogRef.value.initDialog() } // 选好配套设备 const confirmSelectedStandardEquipmentDialog = (val: any, standardId: string, standardName: string, belongStandardEquipmentParams: string) => { selectStandardId.value = standardId // 被核查设备选择的标准装置id selectStandardName.value = standardName // 被核查设备选择的标准装置name belongStandardEquipment.value = belongStandardEquipmentParams // 检校标准装置code chekedEquipmentList.value = [{ id: val[0].id, equipmentNo: val[0].equipmentNo, // 设备编号 equipmentName: val[0].equipmentName, // 设备名称 model: val[0].model, // 型号规格 manufactureNo: val[0].manufactureNo, // 出厂编号 accuracyLevel: val[0].accuracyLevel, // 准确度等级 measureRange: val[0].measureRange, // 测量范围 manufacturer: val[0].manufacturer, // 制造厂(生产厂家) certificateValid: val[0].certificateValid, // 证书有效期 remark: val[0].remark, // 备注 itemCategoryId: val[0].itemCategoryId, // 核查项分类id itemCategoryName: val[0].itemCategoryName, // 核查项分类名称 }] fetchCheckItemDetail() // 获取核查数据 } // -------------------------------------------表单--请求核查依据(作业指导书)---------------------------------------- const technologyFile = ref([]) // 核查依据 // 查询条件(作业指导书列表) const listQueryJobInstruction = ref({ id: '', offset: 1, limit: 999999, }) // // 请求作业指导书列表 function fetchJobInstruction(isNowPage = false, StandardId = '') { if (!isNowPage) { // 是否显示当前页,否则跳转第一页 listQueryJobInstruction.value.offset = 1 } listQueryJobInstruction.value.id = StandardId // 标准装置id getJobInstructionList(listQueryJobInstruction.value).then((response) => { technologyFile.value = response.data.rows.map((item: { file: string }) => item.file) }) } // ----------------------------------------核查数据---------------------------------------------- const radioMenus = ref([ // 标签内容 { name: '最佳点', value: 'best' }, { name: '最差点', value: 'worst' }, { name: '典型点', value: 'model' }, ]) const current = ref('best') // 选择的tab 默认基本信息 const repeatabilityColumns = ref<TableColumn[]>([ // 重复性表头 { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text' }, { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' }, { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' }, { text: '频率', value: 'frequency', align: 'center', type: 'text' }, { text: '单位', value: 'frequencyUnit', align: 'center', type: 'text' }, { text: '示值', value: 'indicatingValue', align: 'center', required: true, width: '160', children: [ { text: '1', value: '1', align: 'center', required: true, type: 'inputNumber' }, { text: '2', value: '2', align: 'center', required: true, type: 'inputNumber' }, { text: '3', value: '3', align: 'center', required: true, type: 'inputNumber' }, { text: '4', value: '4', align: 'center', required: true, type: 'inputNumber' }, { text: '5', value: '5', align: 'center', required: true, type: 'inputNumber' }, { text: '6', value: '6', align: 'center', required: true, type: 'inputNumber' }, ], }, { text: '算数平均值', value: 'averageValue', align: 'center', required: true, type: 'text' }, { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: true, type: 'text' }, { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text' }, ]) const stabilityColumns = ref<TableColumn[]>([ // 稳定性表头 { text: '核查项目', value: 'params', align: 'center', required: true, type: 'text' }, { text: '核查点', value: 'checkPoint', align: 'center', required: true, type: 'text' }, { text: '单位', value: 'unit', align: 'center', required: true, type: 'text' }, { text: '频率', value: 'frequency', align: 'center', type: 'text' }, { text: '单位', value: 'frequencyUnit', align: 'center', type: 'text' }, { text: '示值', value: 'indicatingValue', align: 'center', required: true, width: '110', children: [ { text: '2022-12-12', value: '2022-12-12', align: 'center', required: true, type: 'text' }, { text: '2022-12-13', value: '2022-12-13', align: 'center', required: true, type: 'text' }, { text: '2022-12-14', value: '2022-12-14', align: 'center', required: true, type: 'text' }, { text: '2022-12-15', value: '2022-12-15', align: 'center', required: true, type: 'text' }, { text: '2022-12-16', value: '2022-12-16', align: 'center', required: true, type: 'text' }, { text: '2022-12-17', value: '2022-12-17', align: 'center', required: true, type: 'text' }, ], }, { text: '算数平均值', value: 'averageValue', align: 'center', required: true, type: 'text' }, { text: '标准偏差S(X)', value: 'standardDeviation', align: 'center', required: true, type: 'text' }, { text: '相对重复性', value: 'relativeRepeatability', align: 'center', type: 'text' }, // { text: '历次核查Sn(x)', value: 'previousCheck', align: 'center' }, { text: 'Urel', value: 'urel', align: 'center', type: 'text' }, { text: '相对重复性是否小于相对扩展不确定度Urel', value: 'lessThan', align: 'center', type: 'text' }, // { text: '稳定性考核是否合格', value: 'flit', align: 'center' }, ]) const bestList = ref<IDetailCheckData[]>([]) // 最佳点重复性 const bestListStability = ref<IDetailCheckData[]>([]) // 最佳点稳定性 const worstList = ref<IDetailCheckData[]>([]) // 最差点重复性 const worstListStability = ref<IDetailCheckData[]>([]) // 最差点稳定性 const modelList = ref<IDetailCheckData[]>([]) // 典型点重复性 const modelListStability = ref<IDetailCheckData[]>([]) // 典型点稳定性 // 获取配置详情 function fetchCheckItemDetail() { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) const params = { belongStandardEquipment: belongStandardEquipment.value, // 检校标准装置code itemCategoryId: chekedEquipmentList.value[0].itemCategoryId, // 核查项分类id itemCategoryName: chekedEquipmentList.value[0].itemCategoryName, // 核查项分类名称 } getCheckItemDetail(params).then((res) => { loading.close() handleData(res.data.checkItemDataCalibratorList) }) } // 处理数据 function handleData(list: any, type = 'edit') { // 最佳点 bestList.value = list.filter((item: { testType: string }) => item.testType === '最佳点') // 最佳点重复性 bestList.value = bestList.value.map((e: any) => { return { ...e, frequency: !e.frequency ? '/' : e.frequency, // 频率 frequencyUnit: !e.frequencyUnit ? '/' : e.frequencyUnit, // 频率单位 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, editable: type === 'edit', } }) // // 最佳点稳定性 // bestListStability.value = bestList.value.map((e: any) => { // return { // ...e, // frequency: !e.frequency ? '/' : e.frequency, // 频率 // frequencyUnit: !e.frequencyUnit ? '/' : e.frequencyUnit, // 频率单位 // } // }) // 最差点 worstList.value = list.filter((item: { testType: string }) => item.testType === '最差点') // 最差点重复性 worstList.value = worstList.value.map((e: any) => { return { ...e, frequency: !e.frequency ? '/' : e.frequency, // 频率 frequencyUnit: !e.frequencyUnit ? '/' : e.frequencyUnit, // 频率单位 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, editable: type === 'edit', } }) // // 最差点稳定性 // worstListStability.value = worstList.value.map((e: any) => { // return { // ...e, // frequency: !e.frequency ? '/' : e.frequency, // 频率 // frequencyUnit: !e.frequencyUnit ? '/' : e.frequencyUnit, // 频率单位 // editable: true, // } // }) // 典型点 modelList.value = list.filter((item: { testType: string }) => item.testType === '典型点') // 典型点重复性 modelList.value = modelList.value.map((e: any) => { return { ...e, frequency: !e.frequency ? '/' : e.frequency, // 频率 frequencyUnit: !e.frequencyUnit ? '/' : e.frequencyUnit, // 频率单位 1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 2, editable: type === 'edit', } }) // // 典型点稳定性 // modelListStability.value = modelList.value.map((e: any) => { // return { // ...e, // frequency: !e.frequency ? '/' : e.frequency, // 频率 // frequencyUnit: !e.frequencyUnit ? '/' : e.frequencyUnit, // 频率单位 // editable: true, // } // }) } // 点击生成结果处理 const createResult = () => { if (current.value === 'best' && !bestList.value.length) { // 最佳点 ElMessage.warning('最佳点未配置重复性,请检查') return false } if (current.value === 'worst' && !worstList.value.length) { // 最佳点 ElMessage.warning('最差点未配置重复性,请检查') return false } if (current.value === 'model' && !modelList.value.length) { // 最佳点 ElMessage.warning('典型点未配置重复性,请检查') return false } ElMessage.info('敬请期待') const params = { belongStandardEquipment: belongStandardEquipment.value, // 检校标准装置 checkDataCalibratorList: bestList.value.concat(bestListStability.value, worstList.value, worstListStability.value, modelList.value, modelListStability.value), itemCategoryId: chekedEquipmentList.value[0].itemCategoryId, // 核查项分类id } // calculateHandle(params).then(() => { // }) } // ------------------------------------------------------------------------------------------ // 关闭新增页面的回调 const close = () => { $router.back() } // 保存 const save = () => { if (!equipmentList.value.length) { ElMessage.warning('核查标准设备不能为空') return false } if (!chekedEquipmentList.value[0].equipmentNo) { ElMessage.warning('被核查设备不能为空') return false } ruleFormRef.value!.validate((valid: boolean) => { if (valid) { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) const params = { ...form.value, checkAccord: technologyFile.value.join(','), // 核查依据 checkDataCalibratorList: bestList.value.concat(bestListStability.value, worstList.value, worstListStability.value, modelList.value, modelListStability.value), checkEquipmentIdList: equipmentList.value.map(item => item.id), // 核查标准设备 equipmentId: chekedEquipmentList.value[0].equipmentId, // 被核查标准设备id createUserId: user.id, // 核查员id createUserName: user.name, // 核查员 // temperature: Number(form.value.temperature), // 环境温度 // humidity: Number(form.value.humidity), // 环境湿度 itemCategoryId: chekedEquipmentList.value[0].itemCategoryId, // 核查项分类id standardEquipmentId: selectStandardId.value, // 被核查标准装置id id: infoId.value, checkDataPistonGaugeList: [], // 第二套 } if (pageType.value === 'add') { // 新建 addCheckData(params).then((res) => { ElMessage.success('保存成功') // form.value.dataNo = res.data.dataNo // 核查数据编号 infoId.value = res.data .pageType.value = 'detail' loading.close() }).catch(() => { loading.close() }) } // 保存 else if (pageType.value === 'edit') { // 编辑 updateCheckData(params).then((res) => { ElMessage.success('保存成功') pageType.value = 'detail' loading.close() }).catch(() => { loading.close() }) } } else { console.log('表单校验不通过') } }) } // 点击编辑 const edit = () => { pageType.value = 'edit' } // 获取详情 const fetchInfo = () => { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) getInfo({ id: infoId.value }).then((res) => { form.value = { ...res.data } handleData(res.data.checkDataCalibratorList, 'detail') chekedEquipmentList.value = [{ id: '', equipmentId: res.data.equipmentId, // 设备id equipmentNo: res.data.equipmentNo, // 设备编号 equipmentName: res.data.equipmentName, // 设备名称 model: res.data.equipmentModel, // 型号规格 manufactureNo: res.data.manufactureNo, // 出厂编号 accuracyLevel: res.data.accuracyLevel, // 准确度等级 measureRange: res.data.measureRange, // 测量范围 manufacturer: res.data.manufacturer, // 制造厂(生产厂家) certificateValid: res.data.certificateValid, // 证书有效期 remark: res.data.remark, // 备注 itemCategoryId: res.data.itemCategoryId, // 核查项分类id itemCategoryName: res.data.itemCategoryName, // 核查项分类名称 }] technologyFile.value = res.data.checkAccord ? res.data.checkAccord.split(',') : '无' // 核查依据 equipmentList.value = res.data.checkEquipmentList // 核查标准设备 selectStandardId.value = res.data.standardEquipmentId // 被核查标准装置id loading.close() }) } // 点击生成核查记录 const createCheckRecord = () => { const params = { ...form.value, checkAccord: technologyFile.value.join(','), // 核查依据 checkDataCalibratorList: bestList.value.concat(bestListStability.value, worstList.value, worstListStability.value, modelList.value, modelListStability.value), checkEquipmentIdList: equipmentList.value.map(item => item.id), // 核查标准设备 equipmentId: chekedEquipmentList.value[0].equipmentId, // 被核查标准设备id createUserId: user.id, // 核查员id createUserName: user.name, // 核查员 // temperature: Number(form.value.temperature), // 环境温度 // humidity: Number(form.value.humidity), // 环境湿度 itemCategoryId: chekedEquipmentList.value[0].itemCategoryId, // 核查项分类id standardEquipmentId: selectStandardId.value, // 被核查标准装置id id: infoId.value, } saveCheckRecordRef.value.initDialog(params) } // -------------------------------------钩子----------------------------------------------------- watch(() => selectStandardId.value, (newValue) => { if (newValue) { fetchJobInstruction(false, newValue) // 新建的时候获取核查依据 } }) onMounted(async () => { getDict() if (pageType.value === 'add') { form.value.createUserName = user.name // 核查员 } else { fetchInfo() } }) </script> <template> <app-container> <detail-page :title="`核查项分类管理-${textMap[pageType]}`"> <template #btns> <el-button v-if="pageType === 'edit'" type="primary" @click="createCheckRecord"> 生成核查记录 </el-button> <el-button v-if="pageType === 'detail'" type="primary" @click="edit"> 编辑 </el-button> <el-button v-if="pageType !== 'detail'" type="primary" @click="save"> 保存 </el-button> <el-button type="info" @click="close"> 关闭 </el-button> </template> <el-form ref="ruleFormRef" :model="form" label-width="130" label-position="right" :rules="formRules" > <el-row :gutter="24"> <el-col :span="6"> <el-form-item label="核查数据编号:" prop="dataNo"> <el-input v-model="form.dataNo" class="full-width-input" disabled placeholder="系统自动生成" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="核查日期:" prop="checkDate"> <el-date-picker v-model="form.checkDate" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" :placeholder="pageType === 'detail' ? ' ' : '请选择核查日期'" :disabled="pageType === 'detail'" class="full-width-input" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="核查地点:" prop="checkAddress"> <el-select v-model="form.checkAddress" placeholder="核查地点" filterable :disabled="pageType === 'detail'" > <el-option v-for="item in positionList" :key="item.id" :label="item.name" :value="item.value" /> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="温度(℃):" prop="temperature"> <el-input v-model="form.temperature" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '请输入温度'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="相对湿度(%):" prop="humidity"> <el-input v-model="form.humidity" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '请输入相对湿度'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="核查员:" prop="dacreateUserNametaNo"> <el-input v-model="form.createUserName" disabled placeholder="检定员" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="是否用于稳定性考核:" label-width="160" prop="stabilityExamine"> <el-select v-model="form.stabilityExamine" placeholder="请选择" class="short-input" filterable :disabled="pageType === 'detail'" > <el-option v-for="item in stabilityExamineList" :key="item.id" :label="item.name" :value="item.id" /> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="marg"> <el-col :span="24"> <el-form-item label="核查依据:" prop="technologyFile"> <div v-for="(item, index) in technologyFile" :key="index" style="display: flex;"> <show-photo :minio-file-name="item" style="margin-right: 10px;" /> </div> <span v-if="pageType === 'detail' && !technologyFile">无</span> </el-form-item> </el-col> </el-row> </el-form> </detail-page> <detail-block title="核查标准设备"> <template v-if="pageType !== 'detail'" #btns> <el-button type="primary" @click="multiAddEquipment"> 批量添加 </el-button> <el-button type="info" @click="delEquipmentRow"> 删除行 </el-button> </template> <el-table :data="equipmentList" border style="width: 100%;" @selection-change="handleSelectionEquipmentChange" > <el-table-column v-if="pageType !== 'detail'" type="selection" width="55" /> <el-table-column align="center" label="序号" width="80" type="index" /> <el-table-column v-for="item in equipmentColumns" :key="item.value" :prop="item.value" :label="item.text" :width="item.width" align="center" /> </el-table> </detail-block> <detail-block title="被核查设备"> <el-table :data="chekedEquipmentList" border style="width: 100%;" > <el-table-column align="center" label="序号" width="80" type="index" /> <el-table-column v-for="item in equipmentColumns" :key="item.value" :prop="item.value" :label="item.text" :width="item.width" align="center" > <template #default="scope"> <el-input v-if="pageType !== 'detail' && item.value === 'equipmentName'" v-model="scope.row[item.value]" placeholder="请选择" disabled > <template #append> <el-button size="small" @click="selectStandardEquipment"> 选择 </el-button> </template> </el-input> </template> </el-table-column> </el-table> </detail-block> <!-- 核查数据 --> <detail-block title="核查数据"> <div style="display: flex;justify-content: space-between;"> <el-radio-group v-model="current" style="margin-bottom: 20px;"> <el-radio-button v-for="item in radioMenus" :key="item.value" :label="item.value"> {{ item.name }} </el-radio-button> </el-radio-group> <el-button v-if="pageType !== 'detail'" type="primary" @click="createResult"> 生成结果处理 </el-button> </div> <h5>核查类型--重复性</h5> <multi-table :table-data="current === 'best' ? bestList : current === 'worst' ? worstList : modelList" :table-header="repeatabilityColumns" :merge-rows="[]" :need-index="true" /> <h5>核查类型--稳定性</h5> <multi-table :table-data="current === 'best' ? bestListStability : current === 'worst' ? worstListStability : modelListStability" :table-header="stabilityColumns" :merge-rows="[]" :need-index="true" /> <!-- 稳定性考核是否合格 --> <el-form style="margin-top: 20px;" :model="form" label-width="160" label-position="right" :rules="formRules" > <el-row :gutter="24"> <el-col :span="12"> <el-form-item label="稳定性考核是否合格:" prop="qualified"> <el-input v-model="form.qualified" class="full-width-input" disabled placeholder="稳定性考核是否合格" /> </el-form-item> </el-col> </el-row> </el-form> </detail-block> <!-- 选择设备台账 --> <select-equipment-dialog ref="selectEquipmentDialogRef" :is-multi="true" @confirm="confirmSelectEquipment" /> <!-- 选择标准装置设备 --> <select-standard-equipment-dialog ref="selectStandardEquipmentDialogRef" @confirm="confirmSelectedStandardEquipmentDialog" /> <!-- 保存核查记录 --> <save-check-record ref="saveCheckRecordRef" /> </app-container> </template> <style lang="scss" scoped> .link { text-decoration: underline; color: #3d7eff; cursor: pointer; } .file-area { display: flex; align-items: center; font-size: 14px; color: #60627f; margin-bottom: 10px; margin-left: 40px; white-space: nowrap; .tech-file { display: flex; align-items: center; margin-left: 20px; .file-text { margin-right: 10px; } } } </style>