diff --git a/src/views/business/comps/template/mixins/templateMixin.js b/src/views/business/comps/template/mixins/templateMixin.js index d03699f..6547350 100644 --- a/src/views/business/comps/template/mixins/templateMixin.js +++ b/src/views/business/comps/template/mixins/templateMixin.js @@ -14,12 +14,19 @@ export default { handler(v) { if (v) { let n = { ...v }; - this.formData =n; - if(v.resource){//试验试剂信息 - this.resource = JSON.parse(v.resource); + this.formData = n; + if (v.resource) {//试验试剂信息 + this.resource = JSON.parse(v.resource); } if (v.bdnr) { - this.formData = { ...n, ...JSON.parse(v.bdnr) }; + this.formData = { ...JSON.parse(v.bdnr), ...n }; + } + const { startDate, effectivePeriod, effectivePeriodUnit, expireDate } = this.formData; + //实际填报的时候,如果有了开始时间,并且有有效周期,但是没有失效日,就计算失效日为开始时间+有效周期 + if (startDate && this.fillType === "actFill" && effectivePeriod && effectivePeriodUnit && !expireDate) { + const start = moment(startDate); + const end = start.add(Number(effectivePeriod), effectivePeriodUnit).format("YYYY-MM-DD HH:mm:ss"); + this.formData = { ...this.formData, expireDate: end }; } console.log(v, "formData from templateData") this.setTemplateData(n); @@ -33,19 +40,19 @@ export default { templateDetail: {}, resource: [],//试验试剂信息 sysjColumns: [ - { label: "试剂名称", prop: "reagentName" }, - { label: "编号", prop: "reagentCode" }, - { label: "批号", prop: "reagentNo" }, - { label: "浓度/含量/纯度", prop: "concentration" }, - { label: "来源", prop: "source" }, - { label: "失效日", prop: "expireDate" }, - ], - yqsColumns: [ - { label: "仪器名称", prop: "instrumentName" }, - { label: "仪器型号", prop: "instrumentModel" }, - { label: "仪器编号", prop: "instrumentCode" }, - { label: "下次测试/校准/检定日期", prop: "nextTestDate" }, - ] + { label: "试剂名称", prop: "reagentName" }, + { label: "编号", prop: "reagentCode" }, + { label: "批号", prop: "reagentNo" }, + { label: "浓度/含量/纯度", prop: "concentration" }, + { label: "来源", prop: "source" }, + { label: "失效日", prop: "expireDate" }, + ], + yqsColumns: [ + { label: "仪器名称", prop: "instrumentName" }, + { label: "仪器型号", prop: "instrumentModel" }, + { label: "仪器编号", prop: "instrumentCode" }, + { label: "下次测试/校准/检定日期", prop: "nextTestDate" }, + ] } }, mounted() { @@ -58,11 +65,11 @@ export default { return this.resource; }, //根据ref数组获取直接formData - getFilledFormDataByRefs(refArr = []){ + getFilledFormDataByRefs(refArr = []) { let result = {}; refArr.map(ref => { const refData = this.$refs[ref]?.getFilledFormData() || {}; - result = { ...result, ...refData }; + result = { ...result, ...refData }; }); return result; }, @@ -98,7 +105,7 @@ export default { getDictOptions(dictType) { return this.dict.type[dictType] || []; }, - + setTemplateData(data) { this.$store.commit('template/SET_TEMPLATE_DATA', data) }, @@ -111,12 +118,7 @@ export default { onHandleBlur(fields) { const { key, effectivePeriodUnit, effectivePeriod, codeSTD, targetStartSolution } = fields; const { startDate } = this.formData; - if (key === "effectivePeriod") {//统一处理有效周期失焦,计算失效事件,保证字段名不能变 - if(!startDate) return; - const start = moment(startDate); - const end = start.add(Number(effectivePeriod), effectivePeriodUnit).format("YYYY-MM-DD HH:mm:ss"); - this.$refs.stepFormPackageRef.updateFormData("expireDate", end); - } else if (key === "codeSTD") {//起始编号STD失焦时,更新stepDataSource + if (key === "codeSTD") {//起始编号STD失焦时,更新stepDataSource const arr = Array.from({ length: codeSTD }, (item, index) => ({ actSolutionVolumePrecision: 3,//小数点精度默认为3 actSolutionConcentrationPrecision: 3,//小数点精度默认为3 @@ -140,16 +142,16 @@ export default { if (volume) { this.updateTargetStartSolutionVolume(item, volume); } - }else if(colKey === "actStartSolutionVolume" || colKey === "actDiluentVolume"){//实际起始溶液体积和实际目标溶液体积 + } else if (colKey === "actStartSolutionVolume" || colKey === "actDiluentVolume") {//实际起始溶液体积和实际目标溶液体积 const targetAcSolution = this.$refs.stepFormPackageRef?.getFormDataByKey("targetAcSolution") || 0;//获取实际起始溶液浓度 - if(targetAcSolution){ - this.updateSjmbrynd(item,targetAcSolution); + if (targetAcSolution) { + this.updateSjmbrynd(item, targetAcSolution); } } }, //计算并更新实际目标溶液浓度 先计算实际目标溶液体积再计算实际目标溶液浓度 - updateSjmbrynd(item,targetAcSolution){ + updateSjmbrynd(item, targetAcSolution) { //实际源溶液浓度÷(实际终体积÷源溶液加入体积); const precision = item.actSolutionConcentrationPrecision || 0; const volPrecision = item.actSolutionVolumePrecision || 0; @@ -157,7 +159,7 @@ export default { const actDiluentVolume = item.actDiluentVolume || 0; const actStartSolutionVolume = item.actStartSolutionVolume || 0; //实际高源溶液加入体积+实际稀释液加入体积 - const actVol = (Number(actStartSolutionVolume)+Number(actDiluentVolume)).toFixed(volPrecision); + const actVol = (Number(actStartSolutionVolume) + Number(actDiluentVolume)).toFixed(volPrecision); //实际目标溶液体积 item.actSolutionVolume = actVol; //实际目标溶液浓度