<!-- 检定项管理详情 --> <script lang="ts" setup name="BusinessMeasureItemDetail"> import { ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' // import type { IForm } from './item-interface' import templateDetailAddRowPattern from './components/first/templateDetailAddRowPattern.vue' import templateDetailCreatePattern from './components/first/templateDetailCreatePattern.vue' import templateDetailSecond from './components/second/templateDetail.vue' import templateDetailThird from './components/third/templateDetail.vue' import templateDetailFourth from './components/fourth/templateDetail.vue' import templateDetailFifth from './components/fifth/templateDetail.vue' import templateDetailSixth from './components/sixth/templateDetail.vue' import templateDetailSeventh from './components/seventh/templateDetail.vue' import templateDetailEighth from './components/eighth/templateDetail.vue' import templateDetailNinth from './components/ninth/templateDetail.vue' import templateDetailTenth from './components/tenth/templateDetail.vue' import templateDetailEleventh from './components/eleventh/templateDetail.vue' import templateDetailThirteenth from './components/thirteenth/templateDetail.vue' import templateDetailFourteen from './components/fourteen/templateDetail.vue' import templateDetailFifteenth from './components/fifteenth/templateDetail.vue' import templateDetailSixteen from './components/sixteen/templateDetail.vue' import templateDetailSeventeen from './components/seventeen/templateDetail.vue' import quoteTemplateListDialog from './dialog/quoteTemplateListDialog.vue' import useUserStore from '@/store/modules/user' import type { Itech } from '@/views/equipement/info/book/book-interface' import { getDictByCode } from '@/api/system/dict' import type { dictType } from '@/global' import { UploadFile } from '@/api/file' import showPhoto from '@/components/showPhoto/index.vue' import { asTemplate, configItem, getInfo } from '@/api/business/measure/item' import { getClassificationList } from '@/api/business/measure/classification' import categoryNameDict from '/public/config/categoryNameDict.json' 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 showItemTableType = ref('') // 显示检定项表格两种页面(addRowPattern: 增加行模式,createPattern: 生成检定项模式) const form = ref({ model: '', // 规格型号 deviceName: '', // 设备名称 helpInstruction: '', // 辅助字段 helpFieldInstruction: '', // 辅助字段说明 deviceType: '', // 设备分类(检校分类) deviceTypeName: '', // 设备分类(检校分类)名称 itemCategoryId: '', // 设备检定项分类id itemCategoryName: '', // 设备检定项分类 belongStandardEquipment: '', // 检校标准装置(字典code) belongStandardEquipmentName: '', // 检校标准装置(字典value) checkCycle: 0, // 检定周期 itemRemark: '', // 检定项备注 itemId: '', // 检定项id }) // 校验规则 const rules = ref({ measureCategory: [{ required: true, message: '检校类别不能为空', trigger: ['blur', 'change'] }], technologyFile: [{ required: true, message: '依据技术文件不能为空', trigger: ['blur', 'change'] }], labLocation: [{ required: true, message: '地点不能为空', trigger: ['blur', 'change'] }], labX: [{ required: true, message: '西昌实验室名字不能为空', trigger: ['blur', 'change'] }], labH: [{ required: true, message: '海口实验室名字不能为空', trigger: ['blur', 'change'] }], }) const getList = ref([]) // 检定项列表 const getObject = ref <any> ({}) // 检定项表单 // ==========================第一套:多功能校准源标准装置数据================================== const appearanceFunctionCheck = ref(true) // 第一套:多功能校准源--外观及功能检查 const indicationError = ref(true) // 第一套:多功能校准源--示值误差 const addRowPatternRef = ref() // 第一种模式组件ref(增加行模式) const createPatternRef = ref() // 第二种模式组件ref(生成检定点) // ==========================第4套:0.02级活塞式压力计标准装置数据================================== const standardRef = ref() // 除第一套之外的剩余几套组件ref // -------------------------------------------字典------------------------------------------ const deviceTypeList = ref < dictType[] > ([]) // 设备分类 function getDict() { // 设备分类 getDictByCode('eqptDeviceType').then((response) => { deviceTypeList.value = response.data }) } // ----------------------------------路由参数------------------------------------------------ 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 itemList = ref < { id: string;name: string }[] > ([]) // 检定项分类列表 // 获取检校标准装置 const fetchItemList = async (deviceType = '', belongStandardEquipment = '') => { const requestParams = { belongStandardEquipment, // 检校标准装置 categoryName: '', // 检定项分类名称 categoryNo: '', // 检定项分类编号 deviceType, // 设备分类 measureCategory: '', // 检校类别 limit: 999999, offset: 1, } const response = await getClassificationList(requestParams) itemList.value = response.data.rows.map((item: { categoryName: string;id: string }) => { return { name: item.categoryName, // 检定项分类名称 id: item.id, } }) } // ------------------------------------------------------------------------------------------ // 关闭新增页面的回调 const close = () => { $router.back() } // 校验 const check = () => { if (form.value.belongStandardEquipment === '1') { // 第一套:多功能校准源 if (showItemTableType.value === 'addRowPattern') { // 增加行模式校验 if (!addRowPatternRef.value.list.length) { ElMessage.warning('检定项不能为空') return false } if (!addRowPatternRef.value.checkFrequencyUnit()) { return false } // 校验频率单位 if (!addRowPatternRef.value.checkList()) { return false } // 校验其他必填项 } else { if (!createPatternRef.value.list.length) { ElMessage.warning('检定项不能为空') return false } if (!createPatternRef.value.checkForm()) { return false } // 校验其他必填项 } } else if (form.value.belongStandardEquipment === '2') { // 第2套:直流稳压电源 if (!standardRef.value.getList().length && !Number(standardRef.value.form1.appearanceFunctionCheck)) { ElMessage.warning('检定项不能为空') return false } if (!standardRef.value.checkAllList()) { return false } } else if (form.value.belongStandardEquipment === '3') { // 第3套:多功能电器安全校准器 let titleTop = '开路电压' let titleBottom = '示值误差' if (form.value.itemCategoryName === '数字式接地电阻表' || form.value.itemCategoryName === '模拟式接地电阻表') { titleTop = '示值误差' titleBottom = '辅助接地电阻试验' } if (standardRef.value.showListTop && !standardRef.value.listTop.length) { ElMessage.warning(`${titleTop}不能为空`) return false } if (standardRef.value.showListBottom && !standardRef.value.listBottom.length) { ElMessage.warning(`${titleBottom}不能为空`) return false } } else if (form.value.belongStandardEquipment === '4') { // 第四套:0.02级活塞式压力计 if (!standardRef.value.list.length && !standardRef.value.form.appearance && !standardRef.value.form.tightness) { ElMessage.warning('检定项不能为空') return false } } else if (form.value.belongStandardEquipment === '5') { // 第5套:二等铂 if (!standardRef.value.checkList()) { return false } } else if (form.value.belongStandardEquipment === '6') { // 第六套:安全阀 if (!standardRef.value.getList().length && !Number(standardRef.value.form.appearanceFunctionCheck) && !Number(standardRef.value.form.sealingTest)) { ElMessage.warning('检定项不能为空') return false } if (!standardRef.value.checkList()) { return false } } else if (form.value.belongStandardEquipment === '7') { // 第七套:精密漏点仪 if (!standardRef.value.checkList()) { return false } } else if (form.value.belongStandardEquipment === '9') { // 频谱分析仪 if (!standardRef.value.getList().length && !Number(standardRef.value.form.appearanceFunctionCheck)) { ElMessage.warning('检定项不能为空') return false } if (!standardRef.value.checkAllList()) { return false } } else if (form.value.belongStandardEquipment === '11') { // 微波衰减 if (!standardRef.value.getList().length && !Number(standardRef.value.form.appearanceFunctionCheck)) { ElMessage.warning('检定项不能为空') return false } if (!standardRef.value.checkAllList()) { return false } } else if (form.value.belongStandardEquipment === '14') { // 铯原子 standardRef.value.getInfo() if (!standardRef.value.getInfo().getList().length && !Number(standardRef.value.getInfo().form.appearanceFunctionCheck)) { ElMessage.warning('检定项不能为空') return false } if (!standardRef.value.getInfo().checkAllList()) { return false } } else if (form.value.belongStandardEquipment === '16') { // 低频信号源 if (!standardRef.value.getList().length && !Number(standardRef.value.form.appearanceFunctionCheck)) { ElMessage.warning('检定项不能为空') return false } if (!standardRef.value.checkAllList()) { return false } } return true } // 处理请求数据 const solveData = () => { let params if (form.value.belongStandardEquipment === '1') { // 第一套:多功能校准源 let measureItemConfigCalibrator if (showItemTableType.value === 'createPattern') { measureItemConfigCalibrator = createPatternRef.value.form measureItemConfigCalibrator.itemId = infoId.value } const list = showItemTableType.value === 'addRowPattern' ? addRowPatternRef.value.list.map((item: { updateTime: string }) => { item.updateTime = ''; return item }) : createPatternRef.value.list.map((item: { updateTime: string }) => { item.updateTime = ''; return item }) params = { appearanceFunctionCheck: appearanceFunctionCheck.value ? '1' : '0', // 外观及功能检查 helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemId: infoId.value, // 检定项id itemRemark: form.value.itemRemark, // 检定项备注 measureItemDataCalibratorList: list.length ? list : [{}], // 检定项 measureItemConfigCalibrator, // 检定项配置 } } else if (form.value.belongStandardEquipment === '2') { // 第二套:直流稳压电源 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id appearanceFunctionCheck: standardRef.value.form1.appearanceFunctionCheck, // 外观及功能检查 voltageRegulation: standardRef.value.form1.voltageRegulation, // 电源电压调整率 loadRegulation: standardRef.value.form1.loadRegulation, // 负载调整率 voltageRepresentError: standardRef.value.form1.voltageRepresentError, // 电压表示值误差 currentRepresentErrorDirect: standardRef.value.form1.currentRepresentErrorDirect, // 电流表示值误差(直接测量) currentRepresentErrorIndirect: standardRef.value.form1.currentRepresentErrorIndirect, // 电流表示值误差(间接测量) rippleVoltage: standardRef.value.form1.rippleVoltage, // 纹波电压 voltageOutputStability: standardRef.value.form1.voltageOutputStability, // 输出电压短期稳定性 measureItemDataDcPowerList: standardRef.value.getList().length ? standardRef.value.getList().map((item: any) => ({ ...item, itemId: infoId.value, updateTime: '', id: '', })) : [{}], // 鉴定项列表 } } else if (form.value.belongStandardEquipment === '3') { // 第3套:多功能电气安全校准器 let list = [] if (standardRef.value.showListTop && standardRef.value.showListBottom) { list = standardRef.value.listBottom.concat(standardRef.value.listTop) } else { if (standardRef.value.showListTop && !standardRef.value.showListBottom) { list = standardRef.value.listTop } else if (!standardRef.value.showListTop && standardRef.value.showListBottom) { list = standardRef.value.listBottom } } params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemId: infoId.value, // 检定项id itemRemark: form.value.itemRemark, // 检定项备注 measureItemDataElectricalSafetyList: list.length ? list.map((item: { updateTime: string }) => { item.updateTime = ''; return { ...item, id: '' } }) : [{}], // 检定项 appearanceFunctionCheck: getObject.value.appearanceFunctionCheck, // 外观及功能检查 } } else if (form.value.belongStandardEquipment === '4') { // 第四套:0.02级活塞式压力计 if (!standardRef.value.checkList()) { params = '未通过校验'; return params } const list = standardRef.value.list.map((item: { zeroPosition: string }) => { return { ...item, zeroPosition: item.zeroPosition !== '否', theoreticalOutputValueUnit: standardRef.value.form.theoreticalOutputValueUnit, // 理论输出值单位 updateTime: '', itemId: infoId.value, // 检定项id } }) params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemId: infoId.value, // 检定项id itemRemark: form.value.itemRemark, // 检定项备注 measureItemDataPistonGaugeList: list.length ? list : [{}], // 检定项 measureItemConfigPistonGauge: { ...standardRef.value.form, itemId: infoId.value, supplyVoltage: standardRef.value.form.supplyVoltage + standardRef.value.form.supplyVoltageUnit }, } } else if (form.value.belongStandardEquipment === '5') { // 第5套:二等铂 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id ...standardRef.value.form, measureItemDataResistanceThermometerList: standardRef.value.list.length ? standardRef.value.list.map((item: any) => ({ ...item, accuracyLevel: standardRef.value.form.accuracyLevel, // 准确度等级 measureRangeLower: standardRef.value.form.measureRangeLower, // 测量范围下限 measureRangeUnit: standardRef.value.form.measureRangeUnit, // 测量范围单位 measureRangeUpper: standardRef.value.form.measureRangeUpper, // 测量范围上限 level: standardRef.value.form.level, // 级别 itemId: infoId.value, updateTime: '', id: '', })) : [{}], } } else if (form.value.belongStandardEquipment === '6') { // 第六套:安全阀 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataSafetyValveList: standardRef.value.getList().length ? standardRef.value.getList().map((item: any) => ({ upperAllowValue: item.upperAllowValue, // 允许值上限 lowerAllowValue: item.lowerAllowValue, // 允许值下限 nominalValue: item.nominalValue, // 标称值 unit: item.unit, // 单位 itemId: infoId.value, updateTime: '', })) : [{}], // 整定压力 appearanceFunctionCheck: getObject.value.appearanceFunctionCheck, // 外观及功能检查 sealingTest: getObject.value.sealingTest, // 密封试验 rippleVoltage: getObject.value.rippleVoltage, // 整定压力 } } else if (form.value.belongStandardEquipment === '7') { // 第七套:精密漏点仪 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataPointMeterList: Number(standardRef.value.form.indicationError) ? standardRef.value.list.map((item: any) => ({ ...item, itemId: infoId.value, id: '', })) : [{}], appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能检查 indicationError: standardRef.value.form.indicationError, // 外观及功能检查 } } else if (form.value.belongStandardEquipment === '8') { // 第8套:E2等砝码 if (!standardRef.value.checkList()) { params = '未通过校验'; return params } params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataETwoList: [{ actualDivisionValue: standardRef.value.form.actualDivisionValue, // 实际分度值d actualDivisionValueUnit: standardRef.value.form.actualDivisionValueUnit, // 实际分度值d单位 itemId: infoId.value, // 检定项id ptOne: standardRef.value.form.ptOne, // 实验载荷Pt1 ptOneUnit: standardRef.value.form.ptOneUnit, // 实验载荷Pt1单位 ptTwo: standardRef.value.form.ptTwo, // 实验载荷Pt2 ptTwoUnit: standardRef.value.form.ptTwoUnit, // 实验载荷Pt2单位 updateTime: '', }], repeatability: standardRef.value.form.repeatability, // 重复性 localIndicationError: standardRef.value.form.localIndicationError, // 局部示值误差 partialLoadError: standardRef.value.form.partialLoadError, // 偏载误差 appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能检查 } } else if (form.value.belongStandardEquipment === '9') { // 第九套:频谱分析仪 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能性检查 frequencyDisplay: standardRef.value.form.frequencyDisplay, // 频率显示 sweepWidth: standardRef.value.form.sweepWidth, // 扫频宽度 middleFrequencyWidth: standardRef.value.form.middleFrequencyWidth, // 中频带宽 middleConversionDeviation: standardRef.value.form.middleConversionDeviation, // 中频带宽转换偏差 referenceLevel: standardRef.value.form.referenceLevel, // 参考电平 verticalScale: standardRef.value.form.verticalScale, // 垂直刻度(显示位置从上到下) inputFrequency: standardRef.value.form.inputFrequency, // 输入频响 averageNoiseLevel: standardRef.value.form.averageNoiseLevel, // 平均噪声电平 harmonicDistortion: standardRef.value.form.harmonicDistortion, // 谐波失真 inputAttenuation: standardRef.value.form.inputAttenuation, // 输入衰减 gainCompression: standardRef.value.form.gainCompression, // 1dB增益压缩点 calibratingSignal: standardRef.value.form.calibratingSignal, // 校准信号 measureItemDataSpectrumAnalyzerList: standardRef.value.getList().length ? standardRef.value.getList().map((item: any) => ({ ...item, itemId: infoId.value, technicalIndexSymbol: undefined, // referencePoint: item.referencePoint === '是' ? '1' : item.referencePoint === '否' ? '0' : undefined, id: undefined, updateTime: '', })) : [{}], // 鉴定项列表 } } else if (form.value.belongStandardEquipment === '10') { // 第10套:信号发生器 if (!standardRef.value.checkListBeforeSave()) { params = '未通过校验'; return params } const tempList = standardRef.value.solveDataBeforeSave() // 处理数据 const list = tempList.map((item: { itemId: string }) => { return { ...item, itemId: infoId.value, id: '', } }) params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataSignalGeneratorList: list.length ? list : [{}], appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能性检查 attenuationAmount: standardRef.value.form.attenuationAmount, // 衰减量 ...standardRef.value.form, } } else if (form.value.belongStandardEquipment === '11') { // 第11套:微波衰减 // if (!standardRef.value.list.length) { params = '鉴定项不能为空'; return params } params = { appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能性检查 attenuationAmount: standardRef.value.form.attenuationAmount, // 衰减量 helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id ...standardRef.value.form, } params.measureItemDataMicrowaveAttenuationList = standardRef.value.getList().length ? standardRef.value.getList().map((item: any) => ({ ...item, itemId: infoId.value, id: undefined, updateTime: '', })) : [{}] // 鉴定项列表, } else if (form.value.belongStandardEquipment === '13') { // 第13套:示波器 if (!standardRef.value.checkListBeforeSave()) { params = '未通过校验'; return params } const tempList = standardRef.value.solveDataBeforeSave() // 处理数据 const list = tempList.map((item: { itemId: string }) => { return { ...item, itemId: infoId.value, // 检定项id id: '', } }) params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataOscilloscopeList: list, ...standardRef.value.form, } } else if (form.value.belongStandardEquipment === '14') { // 第十四套:铯原子 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id appearanceFunctionCheck: standardRef.value.getInfo().form.appearanceFunctionCheck, // 外观及功能性检查 frequencySignalOutputAmplitude: standardRef.value.getInfo().form.frequencySignalOutputAmplitude, // 频率信号输出幅度 secondPulseOutput: standardRef.value.getInfo().form.secondPulseOutput, // 秒脉冲输出 frequencyStability: standardRef.value.getInfo().form.frequencyStability, // 频率稳定度 relativeFrequencyDeviation: standardRef.value.getInfo().form.relativeFrequencyDeviation, // 相对频率偏差 frequencyReproducibility: standardRef.value.getInfo().form.frequencyReproducibility, // 频率复现性 dailyAgingRate: standardRef.value.getInfo().form.dailyAgingRate, // 日老化率 outputSignal: standardRef.value.getInfo().form.outputSignal, // 输出信号 warmUp: standardRef.value.getInfo().form.warmUp, // 开机特性 dailyFrequencyDriftRate: standardRef.value.getInfo().form.dailyFrequencyDriftRate, // 日频率漂移率 frequencyMeasureError: standardRef.value.getInfo().form.frequencyMeasureError, // 频率测量误差 frequencyMeasureRange: standardRef.value.getInfo().form.frequencyMeasureRange, // 频率测量范围、输入灵敏度 crystalOscillatorDailyAgingRate: standardRef.value.getInfo().form.crystalOscillatorDailyAgingRate, // 晶振日老化率 crystalOscillatorReproducibility: standardRef.value.getInfo().form.crystalOscillatorReproducibility, // 晶振频率复现性 crystalOscillatorDeviation: standardRef.value.getInfo().form.crystalOscillatorDeviation, // 晶振相对频率偏差 crystalOscillatorStability: standardRef.value.getInfo().form.crystalOscillatorStability, // 晶振1s频率稳定度 crystalOscillatorStartupCharacter: standardRef.value.getInfo().form.crystalOscillatorStartupCharacter, // 晶振开机特性 timeIntervalMeasureRange: standardRef.value.getInfo().form.timeIntervalMeasureRange, // 时间间隔测量范围及测量误差 periodicMeasureError: standardRef.value.getInfo().form.periodicMeasureError, // 周期测量误差 periodicMeasureRange: standardRef.value.getInfo().form.periodicMeasureRange, // 周期测量范围、输入灵敏度 measureItemDataCesiumAtomList: standardRef.value.getInfo().getList().length ? standardRef.value.getInfo().getList().map((item: any) => ({ ...item, itemId: infoId.value, id: undefined, updateTime: '', technicalIndex: item.technicalIndex.includes('/') ? '/' : item.technicalIndex, })) : [{}], // 鉴定项列表 } } else if (form.value.belongStandardEquipment === '15') { // 第15套:小功率 if (!standardRef.value.checkListBeforeSave()) { params = '未通过校验'; return params } params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataLowPowerList: standardRef.value.list.length ? standardRef.value.list.map((item: any) => ({ ...item, id: '' })) : [{}], ...standardRef.value.form, } } else if (form.value.belongStandardEquipment === '16') { // 第十六套: 低频信号源 params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id appearanceFunctionCheck: standardRef.value.form.appearanceFunctionCheck, // 外观及功能性检查 frequency: standardRef.value.form.frequency, // 频率 acVoltage: standardRef.value.form.acVoltage, // 交流电压 dcVoltage: standardRef.value.form.dcVoltage, // 直流电压 riseTime: standardRef.value.form.riseTime, // 上升时间 sinusoidFlatness: standardRef.value.form.sinusoidFlatness, // 正弦信号平坦度 harmonicDistortion: standardRef.value.form.harmonicDistortion, // 总谐波失真 measureItemDataLowFrequencySignalList: standardRef.value.getList().length ? standardRef.value.getList().map((item: any) => ({ ...item, itemId: infoId.value, id: undefined, updateTime: '', })) : [{}], // 鉴定项列表 } } else if (form.value.belongStandardEquipment === '17') { // 第17套: S参数 if (!standardRef.value.checkListBeforeSave()) { params = '未通过校验'; return params } const tempList = standardRef.value.solveDataBeforeSave() // 处理数据 const list = tempList.map((item: { itemId: string }) => { return { ...item, itemId: infoId.value, // 检定项id id: '', } }) params = { helpFieldInstruction: form.value.helpFieldInstruction, // 辅助字段说明 itemRemark: form.value.itemRemark, // 检定项备注 itemId: infoId.value, // 检定项id measureItemDataSParamList: list, ...standardRef.value.form, } } return params } // 保存 const save = () => { if (!check()) { return false } console.log('点击保存校验通过') ruleFormRef.value!.validate((valid: boolean) => { if (valid) { const params = solveData() if (params === '未通过校验') { return false } const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) // 保存 configItem(params).then((res) => { fetchInfo() ElMessage.success('保存成功') pageType.value = 'detail' loading.close() }).catch(() => { loading.close() }) } else { console.log('表单校验不通过') } }) } // 点击编辑 const edit = () => { pageType.value = 'edit' fetchInfo() // 获取详情 } // 点击存为模板 const saveTemplate = () => { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) asTemplate({ id: infoId.value }).then((res) => { ElMessage.success('存为模板成功') loading.close() }).catch(() => { loading.close() }) } const quoteTemplate = ref() // 选择引用模板组件ref // 点击引用模板 const quote = () => { quoteTemplate.value.initDialog(form.value.itemCategoryId) } // 确定选择模板 const confirmSelectedTemplate = (val: any) => { if (val && val.length) { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) const params = { id: val[0].id, itemCategoryName: form.value.itemCategoryName, // 检定项分类名字 belongStandardEquipment: form.value.belongStandardEquipment, // 检校标准装置字典code } getInfo(params).then((res) => { solveResponseData(res.data, true) loading.close() }) } } // ------------------------------------技术指标------------------------------------------- const technicalTargetList = ref < Itech[] > ([]) // 技术指标列表 const technicalIndexColumns = [ // 技术指标表头 { text: '测量范围', value: 'measureRange', required: true }, { text: '不确定度或允许误差极限或准确度等级', value: 'uncertainty', required: true }, { text: '依据的技术文件', value: 'basedDocuments', required: true }, ] // ---------------------------------------初次配置鉴定项------------------------------------------ function soveFirstConfig(response: any, config: string[], configArr: string) { // 判断是否初次加载 如果是 将配置项都改为1 if (!response[configArr] && !response.appearanceFunctionCheck) { console.log('第一次配置') for (let i = 0; i < config.length; i++) { response[config[i]] = 1 } } } // ---------------------------------------获取详情------------------------------------------------ /** * 处理返回数据、处理引用模板数据 * @param response * @param template 是否处理模板数据 */ function solveResponseData(response: any, template = false) { if (form.value.belongStandardEquipment === '1') { // 第一套:多功能校准源 appearanceFunctionCheck.value = response.appearanceFunctionCheck if (template) { // 模板 getList.value = response.measureItemDataCalibratorList.map((item: { id: string }) => { return { ...item, id: '', itemId: infoId.value, } }) // 检定项表格 const tempobj = { ...response.measureItemConfigCalibrator, // id: '', fromTemplate: `${template}`, } getObject.value = tempobj // 检定项表单 } else { getList.value = response.measureItemDataCalibratorList // 检定项表格 getObject.value = response.measureItemConfigCalibrator // 检定项表单 } } else if (form.value.belongStandardEquipment === '2') { // 第二套:直流稳压电源 getList.value = response.measureItemDataDcPowerList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '3') { // 第3套:多功能电气安全校准器 if (template) { // 模板 getList.value = response.measureItemDataElectricalSafetyList.map((item: { id: string }) => { return { ...item, id: '', itemId: infoId.value, } }) // 检定项表格 } else { getList.value = response.measureItemDataElectricalSafetyList // 检定项表格 } getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '4') { // 第四套:0.02级活塞式压力计 getList.value = response.measureItemDataPistonGaugeList // 检定项表格 getObject.value = response.measureItemConfigPistonGauge // 检定项表单 } else if (form.value.belongStandardEquipment === '5') { // 第5套:二等铂 getList.value = response.measureItemDataResistanceThermometerList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '6') { // 第六套:安全阀 getList.value = response.measureItemDataSafetyValveList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '7') { // 第七套:精密漏点仪 getList.value = response.measureItemDataPointMeterList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '8') { // 第8套:E2等砝码 getList.value = response.measureItemDataETwoList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '9') { // 第9套:频谱分析仪 getList.value = response.measureItemDataSpectrumAnalyzerList // 检定项表格 getObject.value = response // 检定项表单 // 判断是否初次加载 如果是 将配置项都改为1 const formDisplay = ['appearanceFunctionCheck', 'frequencyDisplay', 'sweepWidth', 'middleFrequencyWidth', 'middleConversionDeviation', 'referenceLevel', 'verticalScale', 'inputFrequency', 'averageNoiseLevel', 'harmonicDistortion', 'inputAttenuation', 'gainCompression', 'calibratingSignal'] soveFirstConfig(response, formDisplay, 'measureItemDataSpectrumAnalyzerList') } else if (form.value.belongStandardEquipment === '10') { // 第10套:信号发生器 getList.value = response.measureItemDataSignalGeneratorList // 检定项表格 getObject.value = { appearanceFunctionCheck: `${response.appearanceFunctionCheck}` === '' ? 1 : response.appearanceFunctionCheck, // 外观及功能性检查 frequency: `${response.frequency}` === '' ? 1 : response.frequency, // 频率 power: `${response.power}` === '' ? 1 : response.power, // 功率 amplitudeModulationDepth: `${response.amplitudeModulationDepth}` === '' ? 1 : response.amplitudeModulationDepth, // 调幅深度 frequencyModulationDeviation: `${response.frequencyModulationDeviation}` === '' ? 1 : response.frequencyModulationDeviation, // 调频频偏 remainAmplitudeModulation: `${response.remainAmplitudeModulation}` === '' ? 1 : response.remainAmplitudeModulation, // 剩余调幅 remainFrequencyModulation: `${response.remainFrequencyModulation}` === '' ? 1 : response.remainFrequencyModulation, // 剩余调频 harmonic: `${response.harmonic}` === '' ? 1 : response.harmonic, // 谐波 phaseModulationPhaseDeviation: `${response.phaseModulationPhaseDeviation}` === '' ? 1 : response.phaseModulationPhaseDeviation, // 调相相偏 noHarmonic: `${response.noHarmonic}` === '' ? 1 : response.noHarmonic, // 非谐波 } // 检定项表单 } else if (form.value.belongStandardEquipment === '11') { // 第11套:微波衰减 getList.value = response.measureItemDataMicrowaveAttenuationList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '13') { // 第13套:示波器 getList.value = response.measureItemDataOscilloscopeList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '14') { // 第14套:铯原子 getList.value = response.measureItemDataCesiumAtomList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '15') { // 第15套:小功率 getList.value = response.measureItemDataLowPowerList // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '16') { // 第16套:低频信号源 getList.value = response.measureItemDataLowFrequencySignalList.map((item: { datumPoint: any }) => ({ ...item, datumPoint: String(item.datumPoint) })) // 检定项表格 getObject.value = response // 检定项表单 } else if (form.value.belongStandardEquipment === '17') { // 第17套:S参数 getList.value = response.measureItemDataSParamList // 检定项表格 getObject.value = response // 检定项表单 } } function fetchInfo() { const loading = ElLoading.service({ lock: true, background: 'rgba(255, 255, 255, 0.8)', }) const params = { id: infoId.value, itemCategoryName: form.value.itemCategoryName, // 检定项分类名字 belongStandardEquipment: form.value.belongStandardEquipment, // 检校标准装置字典code } getInfo(params).then((res) => { form.value = res.data technicalTargetList.value = res.data.technicalTargetList // 技术指标 solveResponseData(res.data) loading.close() }).catch(() => { loading.close() }) } // ---------------------------------------------清空配置------------------------------------------ // 点击清空配置 // const clear = () => { // ElMessageBox.confirm( // '是否清空当前已配置检定项目?注意操作不可逆!', // '提示', // { // confirmButtonText: '确认', // cancelButtonText: '取消', // type: 'warning', // }, // ) // .then(() => { // switch (form.value.belongStandardEquipment) { // case '1': // break; // } // }) // } // -------------------------------------钩子----------------------------------------------------- const isNeverDefineItemCategory = ref(false) // 检定项分类是否是从未定义过的 // 监听检定项分类 watch(() => form.value.itemCategoryName, (newValue) => { if (newValue) { const index = categoryNameDict.findIndex((item: any) => item === newValue) if (index === -1) { isNeverDefineItemCategory.value = true } else { isNeverDefineItemCategory.value = false } } }, { immediate: true }) onMounted(async () => { form.value = { ...$route.query as any } fetchItemList() // 获取设备检定项分类 getDict() if (form.value.itemCategoryName === '数字多用表(手持)' || form.value.itemCategoryName === '数字多用表(台式)' || form.value.itemCategoryName === '多功能电力参数测量仪' || form.value.itemCategoryName === '钳形电流表' || form.value.itemCategoryName === '指针式万用表') { showItemTableType.value = 'addRowPattern' // 增加行模式 } else { showItemTableType.value = 'createPattern' // 生成检定项模式 } // if (form.value.belongStandardEquipment === '7') { // return // } fetchInfo() // 获取详情 }) </script> <template> <app-container> <detail-page :title="`配置检定项-${textMap[pageType]}`"> <template #btns> <el-button v-if="pageType === 'detail' && !isNeverDefineItemCategory" type="primary" @click="saveTemplate"> 存为模板 </el-button> <el-button v-if="pageType !== 'detail' && !isNeverDefineItemCategory" type="primary" @click="quote"> 引用模板 </el-button> <!-- <el-button v-if="pageType !== 'detail'" type="warning" @click="clear"> 清空配置 </el-button> --> <el-button v-if="pageType === 'detail' && !isNeverDefineItemCategory" 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="120" label-position="right" :rules="rules" > <el-row :gutter="24"> <el-col :span="6"> <el-form-item label="设备名称:" prop="deviceName"> <el-input v-model="form.deviceName" class="full-width-input" :disabled="pageType !== 'add'" placeholder="设备名称" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="规格型号:" prop="model"> <el-input v-model="form.model" class="full-width-input" :disabled="pageType !== 'add'" placeholder="规格型号" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="辅助字段:" prop="helpInstruction"> <el-input v-model="form.helpInstruction" class="full-width-input" :disabled="pageType !== 'add'" placeholder="辅助字段" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="辅助字段说明:" prop="helpFieldInstruction"> <el-input v-model="form.helpFieldInstruction" type="textarea" autosize class="full-width-input" :disabled="pageType === 'detail'" :placeholder="pageType === 'detail' ? ' ' : '辅助字段说明'" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="设备分类:" prop="deviceType"> <el-select v-model="form.deviceType" placeholder="设备分类" class="short-input" filterable disabled > <el-option v-for="item in deviceTypeList" :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="categoryName"> <!-- <el-input v-model="form.categoryName" class="full-width-input" disabled placeholder="设备检定项分类" /> --> <el-select v-model="form.itemCategoryId" placeholder="设备检定项分类" filterable style="width: 400px;" disabled > <el-option v-for="item in itemList" :key="item.id" :label="item.name" :value="item.id" /> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="检定周期(月):" prop="checkCycle"> <el-input-number v-model="form.checkCycle" :placeholder="pageType === 'detail' ? '' : '请输入检定周期'" disabled class="full-width-input" :min="0" /> </el-form-item> </el-col> </el-row> </el-form> </detail-page> <!-- 技术指标 --> <detail-block v-if="pageType === 'detail'" title="技术指标"> <el-table ref="techRef" :data="technicalTargetList" border style="width: 100%;" > <el-table-column align="center" label="序号" width="80" type="index" /> <el-table-column v-for="item in technicalIndexColumns" :key="item.value" :prop="item.value" :label="item.text" align="center" /> </el-table> </detail-block> <detail-block v-if="isNeverDefineItemCategory" title="检定项" style="padding-bottom: 20px;" /> <!-- 第一套:多功能校准源标准装置--字典:1 --> <detail-block v-if="form.belongStandardEquipment === '1' && !isNeverDefineItemCategory" title="检定项"> <el-checkbox v-model="appearanceFunctionCheck" :true-label="1" :false-label="0" :disabled="pageType === 'detail'"> 外观及功能检查 </el-checkbox> <el-checkbox v-model="indicationError" disabled> 示值误差 </el-checkbox> <!-- 检定项表格(增加行模式) --> <template-detail-add-row-pattern v-if="showItemTableType === 'addRowPattern'" ref="addRowPatternRef" :list="getList" :page-type="pageType" :item-category-name="form.itemCategoryName" /> <!-- 检定项表格(生成检定点模式) --> <template-detail-create-pattern v-if="showItemTableType === 'createPattern'" ref="createPatternRef" :form="getObject" :list="getList" :page-type="pageType" :item-category-name="form.itemCategoryName" /> </detail-block> <!-- 第2套: 直流稳压电源标准装置--字典:2 --> <detail-block v-if="form.belongStandardEquipment === '2' && !isNeverDefineItemCategory" title="检定项"> <template-detail-second ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第三套: 多功能电气安全校准器标准装置--字典:3 --> <detail-block v-if="form.belongStandardEquipment === '3' && !isNeverDefineItemCategory" title="检定项"> <template-detail-third ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第四套: 0.02级活塞式压力计标准装置--字典:4 --> <detail-block v-if="form.belongStandardEquipment === '4' && !isNeverDefineItemCategory" title="检定项"> <template-detail-fourth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第五套:二等铂电阻温度计标准装置 --> <detail-block v-if="form.belongStandardEquipment === '5' && !isNeverDefineItemCategory" title="检定项"> <template-detail-fifth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第6套:安全阀标准装置--字典:6 --> <detail-block v-if="form.belongStandardEquipment === '6' && !isNeverDefineItemCategory" title="检定项"> <template-detail-sixth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第7套: 精密露点仪--字典:7 --> <detail-block v-if="form.belongStandardEquipment === '7' && !isNeverDefineItemCategory" title="检定项"> <template-detail-seventh ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第8套: E2砝码--字典:8 --> <detail-block v-if="form.belongStandardEquipment === '8' && !isNeverDefineItemCategory" title="检定项"> <template-detail-eighth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第9套: 频谱分析仪--字典:9 --> <detail-block v-if="form.belongStandardEquipment === '9' && !isNeverDefineItemCategory" title="检定项"> <template-detail-ninth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第10套: 频谱分析仪--字典:10 --> <detail-block v-if="form.belongStandardEquipment === '10' && !isNeverDefineItemCategory" title="检定项"> <template-detail-tenth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第11套: 微波衰减标准装置--字典:11 --> <detail-block v-if="form.belongStandardEquipment === '11' && !isNeverDefineItemCategory" title="检定项"> <template-detail-eleventh ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第13套: 示波器检定装置--字典:13 --> <detail-block v-if="form.belongStandardEquipment === '13' && !isNeverDefineItemCategory" title="检定项"> <template-detail-thirteenth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第14套: 铯原子频率装置--字典:14 --> <detail-block v-if="form.belongStandardEquipment === '14' && !isNeverDefineItemCategory" title="检定项"> <template-detail-fourteen ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第15套: 小功率检定装置--字典:15 --> <detail-block v-if="form.belongStandardEquipment === '15' && !isNeverDefineItemCategory" title="检定项"> <template-detail-fifteenth ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第16套: 低频信号源检定装置--字典:16 --> <detail-block v-if="form.belongStandardEquipment === '16' && !isNeverDefineItemCategory" title="检定项"> <template-detail-sixteen ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 第17套: S参数检定装置--字典:17 --> <detail-block v-if="form.belongStandardEquipment === '17' && !isNeverDefineItemCategory" title="检定项"> <template-detail-seventeen ref="standardRef" :page-type="pageType" :item-category-name="form.itemCategoryName" :belong-standard-equipment="form.belongStandardEquipment" :item-id="infoId" :list="getList" :form="getObject" /> </detail-block> <!-- 检定项备注 --> <el-form v-if="!isNeverDefineItemCategory" :model="form" label-width="120" label-position="right" :rules="rules" style="margin-top: 20px;"> <el-row> <el-col :span="12"> <el-form-item label="检定项备注:" prop="itemRemark"> <el-input v-model="form.itemRemark" class="full-width-input" autosize type="textarea" :placeholder="pageType === 'detail' ? ' ' : '请输入检定项备注'" :disabled="pageType === 'detail'" /> </el-form-item> </el-col> </el-row> </el-form> </app-container> <quote-template-list-dialog ref="quoteTemplate" @confirm="confirmSelectedTemplate" /> </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>