<!-- 检定项管理详情 -->
<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 } // 校验其他必填项
addRowPatternRef.value.solveDataBeforeSave() // 保存时将标准值按照分辨力保留小数位数
}
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, itemId: infoId.value, 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': // 多功能校准源
if (showItemTableType.value === 'addRowPattern') {
addRowPatternRef.value.clearConfig()
}
else if (showItemTableType.value === 'createPattern') {
createPatternRef.value.clearConfig()
}
break
default:
standardRef.value.clearConfig()
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>