diff --git a/src/commonMethods/useCheckList.ts b/src/commonMethods/useCheckList.ts index 9dcdfa8..7e52c63 100644 --- a/src/commonMethods/useCheckList.ts +++ b/src/commonMethods/useCheckList.ts @@ -22,7 +22,7 @@ } else { // 检查必填 - if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { + if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}`.replace(/\s/g, '') === '' || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { if (`${prop.belongStandardEquipment}` === '15') { // 小功率 ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`) } diff --git a/src/commonMethods/useCheckList.ts b/src/commonMethods/useCheckList.ts index 9dcdfa8..7e52c63 100644 --- a/src/commonMethods/useCheckList.ts +++ b/src/commonMethods/useCheckList.ts @@ -22,7 +22,7 @@ } else { // 检查必填 - if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { + if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}`.replace(/\s/g, '') === '' || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { if (`${prop.belongStandardEquipment}` === '15') { // 小功率 ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`) } diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue index 35b0202..88a83f7 100644 --- a/src/components/MultiHeaderTable/index.vue +++ b/src/components/MultiHeaderTable/index.vue @@ -272,55 +272,57 @@ *{{ item.text }} diff --git a/src/commonMethods/useCheckList.ts b/src/commonMethods/useCheckList.ts index 9dcdfa8..7e52c63 100644 --- a/src/commonMethods/useCheckList.ts +++ b/src/commonMethods/useCheckList.ts @@ -22,7 +22,7 @@ } else { // 检查必填 - if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { + if (prop.required && (!(`${item[prop.value]}`) || `${item[prop.value]}`.replace(/\s/g, '') === '' || `${item[prop.value]}` === 'null' || `${item[prop.value]}` === 'undefined' || item[prop.value] == undefined)) { if (`${prop.belongStandardEquipment}` === '15') { // 小功率 ElMessage.warning(`${tableTitle} 第${index + 1}行中 ${prop.message} ${prop.text} 字段不能为空`) } diff --git a/src/components/MultiHeaderTable/index.vue b/src/components/MultiHeaderTable/index.vue index 35b0202..88a83f7 100644 --- a/src/components/MultiHeaderTable/index.vue +++ b/src/components/MultiHeaderTable/index.vue @@ -272,55 +272,57 @@ *{{ item.text }} diff --git a/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue b/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue index b1215d6..249abb1 100644 --- a/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue +++ b/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue @@ -20,7 +20,7 @@ import { calc } from '@/utils/useCalc' import multiTable from '@/components/MultiHeaderTable/index.vue' import templateTable from '@/views/business/measure/item/components/second/templateTable.vue' - +import { useGroup } from '@/commonMethods/useGroup' const props = defineProps({ infoId: String, // id dataNo: String, // 检定数据编号 @@ -37,9 +37,11 @@ itemCategoryId: '', // 设备检定项分类名称id belongStandardEquipment: '', // 标准装置code belongStandardEquipmentName: '', // 标准装置名称 - appearance: '1', // 外观(1/0) - appearance1: '1', // 外观(1/0) - appearanceRemark: '1', // 外观备注说明 + appearanceRemark: '/', + appearanceFunctionCheck: '1' as any, // 外观(1/0) + sealingTest: '1', // 标准器示值是否已通过软件 + conclusion: '', // 结论 + remark: '', // 备注 }) // -------------------------------------------路由参数------------------------------------------ @@ -66,16 +68,16 @@ const columns_mechanical = ref([ // 机械式温湿度仪表 { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' }, { text: '类型', value: 'typeDesc', align: 'center', required: false, type: 'text' }, - { text: '温度/湿度', value: 'value', align: 'center', required: true, type: 'inputNumber', unit: pageType.value === 'detail' ? 'unit' : '' }, - { text: '温度点/湿度点', value: 'point', align: 'center', required: false, type: 'text' }, + { text: '温度/湿度', value: 'dimension', align: 'center', width: '120', required: true, type: pageType.value === 'detail' ? 'text' : 'inputNumber', unit: 'dimensionPointUnit' }, + { text: '温度点/湿度点', value: 'dimensionPoint', align: 'center', width: '100', required: false, type: 'text' }, { text: '第1次', value: '', align: 'center', required: false, children: [ - { text: '标准示值', value: 'oneValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueOne', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'oneValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -84,8 +86,8 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'threeValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'fourValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueTwo', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -94,27 +96,27 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'average1', align: 'center', required: false, width: '140', type: 'text' }, - { text: '被检示值', value: 'average2', align: 'center', required: false, width: '140', type: 'text' }, + { text: '标准示值', value: 'averageMeasureValue', align: 'center', required: false, width: '110', type: 'text' }, + { text: '被检示值', value: 'averageValue', align: 'center', required: false, width: '110', type: 'text' }, ], }, - { text: '误差', value: 'error', align: 'center', required: false, type: 'text' }, - { text: '最大误差', value: 'maxError', align: 'center', required: false, type: 'text' }, - { text: '最大允许误差', value: 'allowMaximum', align: 'center', required: false, type: 'text' }, + { text: '误差', value: 'errorValue', align: 'center', width: '120', required: false, type: 'text' }, + { text: '最大误差', value: 'maxError', width: '120', align: 'center', required: false, type: 'text' }, + { text: '最大允许误差', value: 'maximumError', width: '120', align: 'center', required: false, type: 'text' }, ]) const columns_digital = ref([ // 数字式/外置探头式温湿度仪表 { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' }, { text: '类型', value: 'typeDesc', align: 'center', required: false, type: 'text' }, - { text: '温度/湿度', value: 'value', align: 'center', required: false, type: 'inputNumber', unit: pageType.value === 'detail' ? 'unit' : '' }, - { text: '温度点/湿度点', value: 'point', align: 'center', required: false, type: 'text' }, + { text: '温度/湿度', value: 'dimension', align: 'center', width: '120', required: true, type: pageType.value === 'detail' ? 'text' : 'inputNumber', unit: 'dimensionPointUnit' }, + { text: '温度点/湿度点', value: 'dimensionPoint', align: 'center', width: '100', required: false, type: 'text' }, { text: '第1次', value: '', align: 'center', required: false, children: [ - { text: '标准示值', value: 'oneValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueOne', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'oneValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -123,8 +125,8 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'threeValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'fourValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueTwo', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -133,8 +135,8 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'fiveValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'sixValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueThree', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'threeValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -143,16 +145,82 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'average1', align: 'center', required: false, width: '140', type: 'text' }, - { text: '被检示值', value: 'average2', align: 'center', required: false, width: '140', type: 'text' }, + { text: '标准示值', value: 'averageMeasureValue', align: 'center', required: false, width: '110', type: 'text' }, + { text: '被检示值', value: 'averageValue', align: 'center', required: false, width: '110', type: 'text' }, ], }, - { text: '误差', value: 'error', align: 'center', required: false, type: 'text' }, - { text: '最大误差', value: 'maxError', align: 'center', required: false, type: 'text' }, - { text: '最大允许误差', value: 'allowMaximum', align: 'center', required: false, type: 'text' }, - { text: '不确定度', value: 'urel', align: 'center', required: false, type: 'text' }, + { text: '误差', value: 'errorValue', align: 'center', width: '120', required: false, type: 'text' }, + { text: '最大误差', value: 'maxError', width: '120', align: 'center', required: false, type: 'text' }, + { text: '最大允许误差', value: 'maximumError', width: '120', align: 'center', required: false, type: 'text' }, + { text: '不确定度', value: 'urel', align: 'center', width: '100', required: false, type: 'text' }, ]) +// 监听 外观检查 如果不合格 表格不可编辑数据置为'/' +watch(() => itemFormData.value.appearanceFunctionCheck, (newVal) => { + // console.log(newVal, 'newVal') + if (newVal === '1') { + list.value = list.value.map((item: any) => ({ + ...item, + editable: true, + dimension: item.typeDesc.includes('温度') ? ' ' : ' ', + measureValueOne: '', + oneValue: '', + measureValueTwo: '', + twoValue: '', + averageMeasureValue: '', + averageValue: '', + errorValue: '', + maxError: '', + measureValueThree: '', + threeValue: '', + })) + const needInput = ['dimension', 'measureValueThree', 'threeValue', 'twoValue', 'measureValueTwo', 'measureValueOne', 'oneValue'] + columns.value.forEach((item: TableColumn | any) => { + if (needInput.includes(item.value)) { + item.type = 'inputNumber' + } + if (item.children) { + item.children.forEach((citem: any) => { + if (needInput.includes(citem.value)) { + citem.type = 'inputNumber' + } + }) + } + }) + } + else if (newVal === '0') { + list.value = list.value.map((item: any) => ({ + ...item, + editable: false, + dimension: item.typeDesc.includes('温度') ? ' /' : '/ ', + measureValueOne: '/', + oneValue: '/', + measureValueTwo: '/', + twoValue: '/', + averageMeasureValue: '/', + averageValue: '/', + errorValue: '/', + maxError: '/', + measureValueThree: '/', + threeValue: '/', + })) + columns.value.forEach((item: TableColumn | any) => { + item.type = 'text' + if (item.children) { + item.children.forEach((citem: any) => { + citem.type = 'text' + }) + } + }) + } + list.value.forEach((item: any) => { + for (const i in item) { + if (i.includes('-span')) { + delete item[i] + } + } + }) +}) // -------------------------------------------获取详情信息-------------------------------------------------- // 获取页面详情信息 const fetchInfo = () => { @@ -172,19 +240,22 @@ itemFormData.value.itemId = res.data.itemId // 检定项id itemFormData.value.itemCategoryName = res.data.itemCategoryName // 设备检定项分类名称 itemFormData.value.itemCategoryId = res.data.itemCategoryId ? res.data.itemCategoryId : itemFormData.value.itemCategoryId // 设备检定项分类名称id - itemFormData.value.appearance = `${res.data.appearance}` // 外观(1/0) - + itemFormData.value.appearanceRemark = `${res.data.appearanceRemark}` // 外观备注 + itemFormData.value.appearanceFunctionCheck = `${res.data.appearanceFunctionCheck}` // 外观(1/0) + itemFormData.value.sealingTest = `${res.data.sealingTest}` // 标准器示值是否已通过软件 + itemFormData.value.conclusion = `${res.data.conclusion}` // 结论 + itemFormData.value.remark = `${res.data.remark}` // 结论 // =======================================表单公共组件数据处理======================================================= useSolveFormData(res, templateFormAndTableRef.value) // ==================================检定数据======================================================================== - // list.value = res.data.measureDataPistonGaugeList.map((item: IDetailMeasureList) => { - // return { - // ...item, - // editable: pageType.value !== 'detail', - // } - // }) // 检定数据 - + list.value = res.data.measureDataPointMeterList.map((item: IDetailMeasureList) => { + return { + ...item, + editable: pageType.value !== 'detail', + params: '示值测试', + } + }) // 检定数据 infoId.value = res.data.id emits('giveInfoId', infoId.value) loading.close() @@ -193,7 +264,26 @@ // 初始化输入数据 const initInputData = (data: any) => { - console.log(data, '1111111111111111111111111111111') + list.value = data.map((item: any) => ({ + ...item, + params: '示值测试', + dimension: item.typeDesc.includes('温度') ? ' ' : ' ', + // dimensionPoint: '', + measureValueOne: '', + oneValue: '', + measureValueTwo: '', + twoValue: '', + measureValueThree: '', + threeValue: '', + averageMeasureValue: '', + averageValue: '', + errorValue: '', + maxError: '', + editable: true, + typeDesc: `${item.typeDesc}/${item.dimensionPointUnit}`, + })) + // 整理数据 温度 湿度 + list.value = [...list.value.filter((item: any) => item.typeDesc.includes('温度')), ...list.value.filter((item: any) => item.typeDesc.includes('湿度'))] } /** @@ -209,7 +299,6 @@ belongStandardEquipment, // 检校标准装置字典code } getItemInfo(params).then((res) => { - itemFormData.value.appearance = res.data.measureItemConfigPistonGauge.appearance ? '1' : '' // 外观及功能检查 1有外观,2没有外观 initInputData(res.data.measureItemDataPointMeterList) }) } @@ -217,6 +306,18 @@ // ----------------------------------------点击保存时校验--------------------------------------- // 校验 const checkout = () => { + let result = true + if (itemFormData.value.appearanceFunctionCheck === '') { + return true + } + if (!list.value.length) { + ElMessage.warning('该设备未配置检定项') + result = false + } + if (!useCheckList(list.value, columns.value, '示值测试')) { + result = false + } + return result } // -----------------------------------------生成结果处理---------------------------------------- // 点击计算结果 @@ -225,56 +326,51 @@ ElMessage.warning('没有检定项数据,无法生成结果') return false } - console.log(list.value, columns.value) + list.value.forEach((item: any) => { + if (item.typeDesc.includes('温度')) { + console.log(list.value.filter((citem: any) => citem.typeDesc.includes('温度'))[0].dimension, '123') + item.dimension = list.value.filter((citem: any) => citem.typeDesc.includes('温度'))[0].dimension + } + else if (item.typeDesc.includes('湿度')) { + item.dimension = list.value.filter((citem: any) => citem.typeDesc.includes('湿度'))[0].dimension + } + }) if (!useCheckList(list.value, columns.value, '示值测试')) { return false } - list.value = list.value.map((item: any) => { - let obj = {} - if (itemFormData.value.itemCategoryName === '机械式温湿度仪表') { - obj = { - ...item, - average1: (Number(item.oneValue) + Number(item.threeValue)) / 2, - average2: (Number(item.twoValue) + Number(item.fourValue)) / 2, - error: (Number(item.oneValue) + Number(item.threeValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue)) / 2, - maxError: `±${Math.abs((Number(item.oneValue) + Number(item.threeValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue)) / 2)}`, - } - } - else { - // 数字式/外置探头式温湿度仪表 - obj = { - ...item, - average1: (Number(item.oneValue) + Number(item.threeValue) + Number(item.fiveValue)) / 2, - average2: (Number(item.twoValue) + Number(item.fourValue) + Number(item.sixValue)) / 2, - error: (Number(item.oneValue) + Number(item.threeValue) + Number(item.fiveValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue) + Number(item.sixValue)) / 2, - maxError: `±${Math.abs((Number(item.oneValue) + Number(item.threeValue) + Number(item.fiveValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue) + Number(item.sixValue)) / 2)}`, - } - } - return obj + + if (list.value.filter((citem: any) => citem.typeDesc.includes('温度'))[0]?.dimension === list.value.filter((citem: any) => citem.typeDesc.includes('湿度'))[0]?.dimension) { + ElMessage.warning('温度和湿度值不能一直') + return false + } + const params = { + belongStandardEquipment: itemFormData.value.belongStandardEquipment, // 检校标准装置 + itemCategoryName: itemFormData.value.itemCategoryName, // 检定项分类名称 + measureDataPointMeterList: list.value, + } + calculateHandle(params).then((res) => { + list.value = (res.data || list.value).map((item: any) => ({ + ...item, + params: '示值测试', + editable: true, + dimensionPointUnit: item.typeDesc.includes('温度') ? '℃' : '%RH', + })) }) - // const params = { - // belongStandardEquipment: itemFormData.value.belongStandardEquipment, // 检校标准装置 - // itemCategoryName: itemFormData.value.itemCategoryName, // 检定项分类名称 - // measureDataCalibratorList: list.value, - // } - // calculateHandle(params).then((res) => { - // if (res.data && res.data.length) { - // resultList.value = res.data.map((item: IDetailMeasureList) => { - // return { - // ...item, - // } - // }) // 检定数据 - // } - // else { - // list.value = res.data - // } - // }) } +// 结论 +watch(() => [itemFormData.value.appearanceFunctionCheck, list.value], () => { + if (itemFormData.value.appearanceFunctionCheck === '1' && list.value.every((item: any) => Number(item.maxError) < Number(item.maximumError))) { + itemFormData.value.conclusion = '合格' + } + else { + itemFormData.value.conclusion = '不合格' + } +}, { + deep: true, +}) // ------------------------------------------钩子---------------------------------------------- watch(() => itemFormData.value.itemCategoryName, (newValue) => { - console.log(newValue, 'itemCategoryName.value') - if (newValue) { switch (newValue) { case '机械式温湿度仪表': @@ -294,48 +390,23 @@ infoId.value = newValue } }, { immediate: true }) - +watch(() => pageType.value, (newValue) => { + console.log(newValue, 'ageType.value') + if (newValue) { + if (newValue === 'detail') { + columns.value.forEach((item: TableColumn | any) => { + item.type = 'text' + if (item.children) { + item.children.forEach((citem: any) => { + citem.type = 'text' + }) + } + }) + list.value = list.value.map((item: any) => ({ ...item, editable: false })) + } + } +}) onMounted(() => { - setTimeout(() => { - list.value = [ - { - params: '示值测试', - type: '温度示值', - value: '', - point: '13.6℃', - unit: '℃', - urel: '0.6984', - allowMaximum: '0.4892', - editable: pageType.value !== 'detail', - oneValue: '', - twoValue: '', - threeValue: '', - fourValue: '', - fiveValue: '', - sixValue: '', - average1: '', - average2: '', - }, - { - params: '示值测试', - type: '湿度示值', - value: '', - point: '45%RH', - unit: '%RH', - urel: '0.2657', - allowMaximum: '0.669', - editable: pageType.value !== 'detail', - oneValue: '', - twoValue: '', - threeValue: '', - fourValue: '', - fiveValue: '', - sixValue: '', - average1: '', - average2: '', - }, - ] - }, 1500) if (pageType.value === 'add') { // 从我的任务跳转过来(新增) itemFormData.value.itemId = $route.query.itemId as string// 检定项id itemFormData.value.itemCategoryName = $route.query.itemCategoryName as string// 设备检定项分类名称 @@ -354,7 +425,7 @@ } }) -defineExpose({ checkout, itemFormData, templateFormAndTableRef, pageType }) +defineExpose({ checkout, itemFormData, templateFormAndTableRef, pageType, list }) diff --git a/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue b/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue index b1215d6..249abb1 100644 --- a/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue +++ b/src/views/business/taskMeasure/measureData/components/seventh/templateDetail.vue @@ -20,7 +20,7 @@ import { calc } from '@/utils/useCalc' import multiTable from '@/components/MultiHeaderTable/index.vue' import templateTable from '@/views/business/measure/item/components/second/templateTable.vue' - +import { useGroup } from '@/commonMethods/useGroup' const props = defineProps({ infoId: String, // id dataNo: String, // 检定数据编号 @@ -37,9 +37,11 @@ itemCategoryId: '', // 设备检定项分类名称id belongStandardEquipment: '', // 标准装置code belongStandardEquipmentName: '', // 标准装置名称 - appearance: '1', // 外观(1/0) - appearance1: '1', // 外观(1/0) - appearanceRemark: '1', // 外观备注说明 + appearanceRemark: '/', + appearanceFunctionCheck: '1' as any, // 外观(1/0) + sealingTest: '1', // 标准器示值是否已通过软件 + conclusion: '', // 结论 + remark: '', // 备注 }) // -------------------------------------------路由参数------------------------------------------ @@ -66,16 +68,16 @@ const columns_mechanical = ref([ // 机械式温湿度仪表 { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' }, { text: '类型', value: 'typeDesc', align: 'center', required: false, type: 'text' }, - { text: '温度/湿度', value: 'value', align: 'center', required: true, type: 'inputNumber', unit: pageType.value === 'detail' ? 'unit' : '' }, - { text: '温度点/湿度点', value: 'point', align: 'center', required: false, type: 'text' }, + { text: '温度/湿度', value: 'dimension', align: 'center', width: '120', required: true, type: pageType.value === 'detail' ? 'text' : 'inputNumber', unit: 'dimensionPointUnit' }, + { text: '温度点/湿度点', value: 'dimensionPoint', align: 'center', width: '100', required: false, type: 'text' }, { text: '第1次', value: '', align: 'center', required: false, children: [ - { text: '标准示值', value: 'oneValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueOne', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'oneValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -84,8 +86,8 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'threeValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'fourValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueTwo', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -94,27 +96,27 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'average1', align: 'center', required: false, width: '140', type: 'text' }, - { text: '被检示值', value: 'average2', align: 'center', required: false, width: '140', type: 'text' }, + { text: '标准示值', value: 'averageMeasureValue', align: 'center', required: false, width: '110', type: 'text' }, + { text: '被检示值', value: 'averageValue', align: 'center', required: false, width: '110', type: 'text' }, ], }, - { text: '误差', value: 'error', align: 'center', required: false, type: 'text' }, - { text: '最大误差', value: 'maxError', align: 'center', required: false, type: 'text' }, - { text: '最大允许误差', value: 'allowMaximum', align: 'center', required: false, type: 'text' }, + { text: '误差', value: 'errorValue', align: 'center', width: '120', required: false, type: 'text' }, + { text: '最大误差', value: 'maxError', width: '120', align: 'center', required: false, type: 'text' }, + { text: '最大允许误差', value: 'maximumError', width: '120', align: 'center', required: false, type: 'text' }, ]) const columns_digital = ref([ // 数字式/外置探头式温湿度仪表 { text: '检定项目', value: 'params', align: 'center', required: false, type: 'text' }, { text: '类型', value: 'typeDesc', align: 'center', required: false, type: 'text' }, - { text: '温度/湿度', value: 'value', align: 'center', required: false, type: 'inputNumber', unit: pageType.value === 'detail' ? 'unit' : '' }, - { text: '温度点/湿度点', value: 'point', align: 'center', required: false, type: 'text' }, + { text: '温度/湿度', value: 'dimension', align: 'center', width: '120', required: true, type: pageType.value === 'detail' ? 'text' : 'inputNumber', unit: 'dimensionPointUnit' }, + { text: '温度点/湿度点', value: 'dimensionPoint', align: 'center', width: '100', required: false, type: 'text' }, { text: '第1次', value: '', align: 'center', required: false, children: [ - { text: '标准示值', value: 'oneValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueOne', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'oneValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -123,8 +125,8 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'threeValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'fourValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueTwo', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'twoValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -133,8 +135,8 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'fiveValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, - { text: '被检示值', value: 'sixValue', align: 'center', required: true, width: '140', type: 'inputNumber' }, + { text: '标准示值', value: 'measureValueThree', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, + { text: '被检示值', value: 'threeValue', align: 'center', required: true, width: '110', type: pageType.value === 'detail' ? 'text' : 'inputNumber' }, ], }, { @@ -143,16 +145,82 @@ align: 'center', required: false, children: [ - { text: '标准示值', value: 'average1', align: 'center', required: false, width: '140', type: 'text' }, - { text: '被检示值', value: 'average2', align: 'center', required: false, width: '140', type: 'text' }, + { text: '标准示值', value: 'averageMeasureValue', align: 'center', required: false, width: '110', type: 'text' }, + { text: '被检示值', value: 'averageValue', align: 'center', required: false, width: '110', type: 'text' }, ], }, - { text: '误差', value: 'error', align: 'center', required: false, type: 'text' }, - { text: '最大误差', value: 'maxError', align: 'center', required: false, type: 'text' }, - { text: '最大允许误差', value: 'allowMaximum', align: 'center', required: false, type: 'text' }, - { text: '不确定度', value: 'urel', align: 'center', required: false, type: 'text' }, + { text: '误差', value: 'errorValue', align: 'center', width: '120', required: false, type: 'text' }, + { text: '最大误差', value: 'maxError', width: '120', align: 'center', required: false, type: 'text' }, + { text: '最大允许误差', value: 'maximumError', width: '120', align: 'center', required: false, type: 'text' }, + { text: '不确定度', value: 'urel', align: 'center', width: '100', required: false, type: 'text' }, ]) +// 监听 外观检查 如果不合格 表格不可编辑数据置为'/' +watch(() => itemFormData.value.appearanceFunctionCheck, (newVal) => { + // console.log(newVal, 'newVal') + if (newVal === '1') { + list.value = list.value.map((item: any) => ({ + ...item, + editable: true, + dimension: item.typeDesc.includes('温度') ? ' ' : ' ', + measureValueOne: '', + oneValue: '', + measureValueTwo: '', + twoValue: '', + averageMeasureValue: '', + averageValue: '', + errorValue: '', + maxError: '', + measureValueThree: '', + threeValue: '', + })) + const needInput = ['dimension', 'measureValueThree', 'threeValue', 'twoValue', 'measureValueTwo', 'measureValueOne', 'oneValue'] + columns.value.forEach((item: TableColumn | any) => { + if (needInput.includes(item.value)) { + item.type = 'inputNumber' + } + if (item.children) { + item.children.forEach((citem: any) => { + if (needInput.includes(citem.value)) { + citem.type = 'inputNumber' + } + }) + } + }) + } + else if (newVal === '0') { + list.value = list.value.map((item: any) => ({ + ...item, + editable: false, + dimension: item.typeDesc.includes('温度') ? ' /' : '/ ', + measureValueOne: '/', + oneValue: '/', + measureValueTwo: '/', + twoValue: '/', + averageMeasureValue: '/', + averageValue: '/', + errorValue: '/', + maxError: '/', + measureValueThree: '/', + threeValue: '/', + })) + columns.value.forEach((item: TableColumn | any) => { + item.type = 'text' + if (item.children) { + item.children.forEach((citem: any) => { + citem.type = 'text' + }) + } + }) + } + list.value.forEach((item: any) => { + for (const i in item) { + if (i.includes('-span')) { + delete item[i] + } + } + }) +}) // -------------------------------------------获取详情信息-------------------------------------------------- // 获取页面详情信息 const fetchInfo = () => { @@ -172,19 +240,22 @@ itemFormData.value.itemId = res.data.itemId // 检定项id itemFormData.value.itemCategoryName = res.data.itemCategoryName // 设备检定项分类名称 itemFormData.value.itemCategoryId = res.data.itemCategoryId ? res.data.itemCategoryId : itemFormData.value.itemCategoryId // 设备检定项分类名称id - itemFormData.value.appearance = `${res.data.appearance}` // 外观(1/0) - + itemFormData.value.appearanceRemark = `${res.data.appearanceRemark}` // 外观备注 + itemFormData.value.appearanceFunctionCheck = `${res.data.appearanceFunctionCheck}` // 外观(1/0) + itemFormData.value.sealingTest = `${res.data.sealingTest}` // 标准器示值是否已通过软件 + itemFormData.value.conclusion = `${res.data.conclusion}` // 结论 + itemFormData.value.remark = `${res.data.remark}` // 结论 // =======================================表单公共组件数据处理======================================================= useSolveFormData(res, templateFormAndTableRef.value) // ==================================检定数据======================================================================== - // list.value = res.data.measureDataPistonGaugeList.map((item: IDetailMeasureList) => { - // return { - // ...item, - // editable: pageType.value !== 'detail', - // } - // }) // 检定数据 - + list.value = res.data.measureDataPointMeterList.map((item: IDetailMeasureList) => { + return { + ...item, + editable: pageType.value !== 'detail', + params: '示值测试', + } + }) // 检定数据 infoId.value = res.data.id emits('giveInfoId', infoId.value) loading.close() @@ -193,7 +264,26 @@ // 初始化输入数据 const initInputData = (data: any) => { - console.log(data, '1111111111111111111111111111111') + list.value = data.map((item: any) => ({ + ...item, + params: '示值测试', + dimension: item.typeDesc.includes('温度') ? ' ' : ' ', + // dimensionPoint: '', + measureValueOne: '', + oneValue: '', + measureValueTwo: '', + twoValue: '', + measureValueThree: '', + threeValue: '', + averageMeasureValue: '', + averageValue: '', + errorValue: '', + maxError: '', + editable: true, + typeDesc: `${item.typeDesc}/${item.dimensionPointUnit}`, + })) + // 整理数据 温度 湿度 + list.value = [...list.value.filter((item: any) => item.typeDesc.includes('温度')), ...list.value.filter((item: any) => item.typeDesc.includes('湿度'))] } /** @@ -209,7 +299,6 @@ belongStandardEquipment, // 检校标准装置字典code } getItemInfo(params).then((res) => { - itemFormData.value.appearance = res.data.measureItemConfigPistonGauge.appearance ? '1' : '' // 外观及功能检查 1有外观,2没有外观 initInputData(res.data.measureItemDataPointMeterList) }) } @@ -217,6 +306,18 @@ // ----------------------------------------点击保存时校验--------------------------------------- // 校验 const checkout = () => { + let result = true + if (itemFormData.value.appearanceFunctionCheck === '') { + return true + } + if (!list.value.length) { + ElMessage.warning('该设备未配置检定项') + result = false + } + if (!useCheckList(list.value, columns.value, '示值测试')) { + result = false + } + return result } // -----------------------------------------生成结果处理---------------------------------------- // 点击计算结果 @@ -225,56 +326,51 @@ ElMessage.warning('没有检定项数据,无法生成结果') return false } - console.log(list.value, columns.value) + list.value.forEach((item: any) => { + if (item.typeDesc.includes('温度')) { + console.log(list.value.filter((citem: any) => citem.typeDesc.includes('温度'))[0].dimension, '123') + item.dimension = list.value.filter((citem: any) => citem.typeDesc.includes('温度'))[0].dimension + } + else if (item.typeDesc.includes('湿度')) { + item.dimension = list.value.filter((citem: any) => citem.typeDesc.includes('湿度'))[0].dimension + } + }) if (!useCheckList(list.value, columns.value, '示值测试')) { return false } - list.value = list.value.map((item: any) => { - let obj = {} - if (itemFormData.value.itemCategoryName === '机械式温湿度仪表') { - obj = { - ...item, - average1: (Number(item.oneValue) + Number(item.threeValue)) / 2, - average2: (Number(item.twoValue) + Number(item.fourValue)) / 2, - error: (Number(item.oneValue) + Number(item.threeValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue)) / 2, - maxError: `±${Math.abs((Number(item.oneValue) + Number(item.threeValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue)) / 2)}`, - } - } - else { - // 数字式/外置探头式温湿度仪表 - obj = { - ...item, - average1: (Number(item.oneValue) + Number(item.threeValue) + Number(item.fiveValue)) / 2, - average2: (Number(item.twoValue) + Number(item.fourValue) + Number(item.sixValue)) / 2, - error: (Number(item.oneValue) + Number(item.threeValue) + Number(item.fiveValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue) + Number(item.sixValue)) / 2, - maxError: `±${Math.abs((Number(item.oneValue) + Number(item.threeValue) + Number(item.fiveValue)) / 2 - (Number(item.twoValue) + Number(item.fourValue) + Number(item.sixValue)) / 2)}`, - } - } - return obj + + if (list.value.filter((citem: any) => citem.typeDesc.includes('温度'))[0]?.dimension === list.value.filter((citem: any) => citem.typeDesc.includes('湿度'))[0]?.dimension) { + ElMessage.warning('温度和湿度值不能一直') + return false + } + const params = { + belongStandardEquipment: itemFormData.value.belongStandardEquipment, // 检校标准装置 + itemCategoryName: itemFormData.value.itemCategoryName, // 检定项分类名称 + measureDataPointMeterList: list.value, + } + calculateHandle(params).then((res) => { + list.value = (res.data || list.value).map((item: any) => ({ + ...item, + params: '示值测试', + editable: true, + dimensionPointUnit: item.typeDesc.includes('温度') ? '℃' : '%RH', + })) }) - // const params = { - // belongStandardEquipment: itemFormData.value.belongStandardEquipment, // 检校标准装置 - // itemCategoryName: itemFormData.value.itemCategoryName, // 检定项分类名称 - // measureDataCalibratorList: list.value, - // } - // calculateHandle(params).then((res) => { - // if (res.data && res.data.length) { - // resultList.value = res.data.map((item: IDetailMeasureList) => { - // return { - // ...item, - // } - // }) // 检定数据 - // } - // else { - // list.value = res.data - // } - // }) } +// 结论 +watch(() => [itemFormData.value.appearanceFunctionCheck, list.value], () => { + if (itemFormData.value.appearanceFunctionCheck === '1' && list.value.every((item: any) => Number(item.maxError) < Number(item.maximumError))) { + itemFormData.value.conclusion = '合格' + } + else { + itemFormData.value.conclusion = '不合格' + } +}, { + deep: true, +}) // ------------------------------------------钩子---------------------------------------------- watch(() => itemFormData.value.itemCategoryName, (newValue) => { - console.log(newValue, 'itemCategoryName.value') - if (newValue) { switch (newValue) { case '机械式温湿度仪表': @@ -294,48 +390,23 @@ infoId.value = newValue } }, { immediate: true }) - +watch(() => pageType.value, (newValue) => { + console.log(newValue, 'ageType.value') + if (newValue) { + if (newValue === 'detail') { + columns.value.forEach((item: TableColumn | any) => { + item.type = 'text' + if (item.children) { + item.children.forEach((citem: any) => { + citem.type = 'text' + }) + } + }) + list.value = list.value.map((item: any) => ({ ...item, editable: false })) + } + } +}) onMounted(() => { - setTimeout(() => { - list.value = [ - { - params: '示值测试', - type: '温度示值', - value: '', - point: '13.6℃', - unit: '℃', - urel: '0.6984', - allowMaximum: '0.4892', - editable: pageType.value !== 'detail', - oneValue: '', - twoValue: '', - threeValue: '', - fourValue: '', - fiveValue: '', - sixValue: '', - average1: '', - average2: '', - }, - { - params: '示值测试', - type: '湿度示值', - value: '', - point: '45%RH', - unit: '%RH', - urel: '0.2657', - allowMaximum: '0.669', - editable: pageType.value !== 'detail', - oneValue: '', - twoValue: '', - threeValue: '', - fourValue: '', - fiveValue: '', - sixValue: '', - average1: '', - average2: '', - }, - ] - }, 1500) if (pageType.value === 'add') { // 从我的任务跳转过来(新增) itemFormData.value.itemId = $route.query.itemId as string// 检定项id itemFormData.value.itemCategoryName = $route.query.itemCategoryName as string// 设备检定项分类名称 @@ -354,7 +425,7 @@ } }) -defineExpose({ checkout, itemFormData, templateFormAndTableRef, pageType }) +defineExpose({ checkout, itemFormData, templateFormAndTableRef, pageType, list })