diff --git a/src/views/business/comps/template/comps/pcr/PCR002.vue b/src/views/business/comps/template/comps/pcr/PCR002.vue index f0f2022..60c38b9 100644 --- a/src/views/business/comps/template/comps/pcr/PCR002.vue +++ b/src/views/business/comps/template/comps/pcr/PCR002.vue @@ -9,19 +9,25 @@ - + - +
- + @@ -53,14 +61,15 @@ import TableList from "@/components/Template/Table"; import Step from "@/components/Template/Step"; import templateMixin from "../../mixins/templateMixin"; import CustomTable from '@/components/Template/CustomTable.vue'; -import { getLatestSn } from '@/api/template'; +import { getLatestSnArr } from '@/api/template'; import { EventBus } from "@/utils/eventBus"; import { uniqeResource } from "@/utils/calUnitTools"; -import { debounce } from 'lodash-es' +import SelectReagentDialog from '../../dialog/SelectReagentDialog.vue'; import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js"; +import TableOpertaion from "@/components/Template/operation/TableOpertaion.vue" export default { - name: "PCR001", - components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable }, + name: "PCR002", + components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable, TableOpertaion, SelectReagentDialog }, mixins: [templateMixin], props: { fillType: { @@ -70,7 +79,7 @@ export default { }, computed: { tableStepColumns() { - return getLadderColumnsConfig(this); + return getLadderColumnsConfig(this, 'business_pcr_gzy'); }, // 配置条件 storageFormConfig() { @@ -233,32 +242,118 @@ export default { }, data() { return { - formData: {} + reagentType: null, // 1-表单 2-表格 + formData: {}, + currentSubKey: "",//当前点击的子项key + currentType: "",//当前点击的类型 + currentRowIndex: "",//当前点击的行索引 }; }, mounted() { const formData = this.getFormDataByTemplateData(); - if(this.fillType === "actFill"){ + if (this.fillType === "actFill") { this.getCode(formData); } }, methods: { + //更新记录 + onSureModifyRecord(key) { + if (key === "subStartSolution") {//选择起始源溶液需要同步更新table的变更记录。 + this.$refs.stepTableRef.updateRecords(); + } + }, + resetRecord() { + this.$refs.stepTableRef.resetRecord(); + }, + // 表单点击 + handleFormClickable(obj) { + if (this.fillType === "preFill") { + return; + } + console.log(obj) + const subKey = obj.subKey; + if (subKey === "subStartSolution" || subKey === "subSolution") {//起始源溶液点击事件 + this.$refs.selectReagentDialogRef.show(this.formData.id) + this.currentSubKey = subKey; + this.reagentType = 1; + } + }, + //点击表格单元格 + handleClickable(col, rowIndex) { + //本表单特殊字段 + this.reagentType = 2 + + this.rowIndex = rowIndex + this.currentSubKey = col.prop; + console.log("clickable",rowIndex, col) + if(col.prop === "sjry"){ + //调用对应弹窗的方法-多个点击的需要判断是哪个字段点击 + this.$refs.selectReagentDialogRef.show(this.formData.id) + } + }, + //选择试剂提交事件 + onSelectReagentSubmit(code,row){ + if(this.reagentType===1){ + this.$refs.stepFormPackageRef.updateFormData(this.currentSubKey, code); + // 实际起始源溶液浓度:根据所选的起始溶液自动回显浓度 + if(this.currentSubKey == 'subStartSolution') { + this.$refs.stepFormPackageRef.updateFormData("targetAcSolution", row.nd + row.nddw); + this.updateStepTableData(row); + } + }else{ + this.$refs.stepTableRef.updateDataSourceByRowIndex(this.rowIndex,{ + [this.currentSubKey]: code, + }) + } + this.$refs.selectReagentDialogRef.onCancel() + }, + //更新table数据 + updateStepTableData(row) { + const { stepTableFormData = [] } = this.$refs.stepTableRef.getFilledFormData(); + + // 创建新的表格数据副本 + const newStepTableData = JSON.parse(JSON.stringify(stepTableFormData)); + + // 遍历数据,按要求更新起始溶液编号 + for (let i = 0; i < newStepTableData.length; i++) { + const item = newStepTableData[i]; + if (i === 0) { + // 第一条记录的起始溶液编号是确认弹框带出来的,也就是row.code字段 + newStepTableData[i].startSolutionCode = row.bh; + } else { + // 第二条的起始溶液编号是第一条数据里面的targetSolutionCode字段, + // 第三条的起始溶液编号是第二条数据里面的targetSolutionCode字段,以此类推 + newStepTableData[i].startSolutionCode = newStepTableData[i - 1].targetSolutionCode + newStepTableData[i - 1].subTargetSolutionCode; + } + console.log(item, row, 'updateStepTableData') + const volResult = this.updateSjmbrynd(item, row.nd); + console.log(volResult, 'volResult') + if (!volResult) { + continue + } + item.actSolutionVolume = volResult.actVol; + item.actSolutionConcentration = volResult.actNd; + item.actSolutionExpire = row.sxr; + } + this.$refs.stepTableRef.updateDataSource(newStepTableData); + // 更新tableRef组件的数据 + }, //获取目标溶液编号 - async getCode(v){ - const {stepTableFormData = []} = v; - if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){ + async getCode(v) { + const { stepTableFormData = [] } = v; + if (stepTableFormData && stepTableFormData.length > 0 && !stepTableFormData[0].bhCode) { let postSn = [] - for(let i=0;i { + }).catch(() => { + }) + .finally(() => { + }) + }, + startConfig(val) { + console.log("开始配置数据:" + JSON.stringify(val)) + let postData = { + bh: val.rowData.bh + val.rowData.bhCode, + studyId: this.formData.studyId, + studyFormId: this.formData.id, + studySubjectId: this.formData.studySubjectId, + } + console.log("开始配置提交数据:" + JSON.stringify(postData)) + sj_startConfiguration(postData).then(() => { + }).catch(() => { + }) + .finally(() => { + }) + }, + subPackageSubmit(val) { + console.log("分装数据:" + JSON.stringify(val)) + if (val.fzsj.fzList && val.fzsj.fzList.length > 0) { + let list = [] + for (let i = 0; i < val.fzsj.fzList.length; i++) { + let item = val.fzsj.fzList[i] + list.push({ + bh: val.fzsj.mybh + item.preCode, + kc: item.num, + kcdw: val.fzsj.dw, + }) + } + let postData = { + studyId: this.formData.studyId, + studyFormId: this.formData.id, + studySubjectId: this.formData.studySubjectId, + bh: val.fzsj.mybh, + nd: val.rowData.hhwznd, + nddw: val.headerSelectFields.hhwzndUnit, + list: list + } + console.log("分装提交数据:" + JSON.stringify(postData)) + sj_subpackage(postData).then(() => { + }).catch(() => { + }) + .finally(() => { + }) + } + }, } }; diff --git a/src/views/business/comps/template/formConfig/PCRTableConfig.js b/src/views/business/comps/template/formConfig/PCRTableConfig.js index 7745916..2963d11 100644 --- a/src/views/business/comps/template/formConfig/PCRTableConfig.js +++ b/src/views/business/comps/template/formConfig/PCRTableConfig.js @@ -1,15 +1,17 @@ // 阶梯配置表格列配置 -export const getLadderColumnsConfig = ($this) => { +export const getLadderColumnsConfig = ($this, selectKey) => { return [ { label: 'template.pcr.pcr002.mbrybh', prop: 'targetSolutionCode', - bodyType: 'input', + bodyType: selectKey === '' ? 'input' : 'select', + bodyOptions: $this.getDictOptions(selectKey), + otherCode: 'bhOther', bodySubType: 'span', bodySubKey: 'subTargetSolutionCode', bodyFillType: 'preFill', width: 280, - myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段 + myCodeFields: ["targetSolutionCode", "bhOther", "subTargetSolutionCode"],//分装的母液编号字段 maxVolumeField: "actSolutionVolume",//分装的最大量字段 maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段 }, @@ -17,6 +19,7 @@ export const getLadderColumnsConfig = ($this) => { label: 'template.pcr.pcr002.qsrybh', prop: 'startSolutionCode', width: 280, + bodyDisabled: true, bodyType: 'input', bodyFillType: 'actFill', bodyMaxlength: 10 diff --git a/src/views/business/comps/template/mixins/templateMixin.js b/src/views/business/comps/template/mixins/templateMixin.js index 5bea18c..0ef1ebb 100644 --- a/src/views/business/comps/template/mixins/templateMixin.js +++ b/src/views/business/comps/template/mixins/templateMixin.js @@ -24,7 +24,8 @@ export default { 'business_sp_xzxytyx', //色谱-编号-选择性与特异性 'business_sp_zdybs', //色谱-编号-最大样本数 'business_sp_xskkx', //色谱-编号-稀释可靠性 - 'business_sp_cbydb' //色谱-编号-储备液对比 + 'business_sp_cbydb', //色谱-编号-储备液对比 + 'business_pcr_gzy', // PCR-编号-工作液 ], props: { templateData: { @@ -53,11 +54,11 @@ export default { } = v if (v.resource) { //type 类型:1:试剂;3:给药制剂;5:麻精药;7:供试品 - //试验试剂信息 试剂 + //试验试剂信息 试剂 this.resource = _.filter(JSON.parse(v.resource),function(o){ return o.type==1||o.elnType==1 }) - //试验物资信息 供试品、给药制剂 + //试验物资信息 供试品、给药制剂 this.resourceWz =_.filter(JSON.parse(v.resource),function(o){ return o.type==3||o.type==7||o.elnType==3||o.elnType==7 }) @@ -380,6 +381,7 @@ export default { //计算并更新实际目标溶液浓度 先计算实际目标溶液体积再计算实际目标溶液浓度 updateSjmbrynd(item, targetAcSolution) { + console.log(item, targetAcSolution, 'updateSjmbrynd') //实际源溶液浓度÷(实际终体积÷源溶液加入体积); const precision = item.actSolutionConcentrationPrecision || 0 const volPrecision = item.actSolutionVolumePrecision || 0 diff --git a/src/views/business/resource/sj/comps/Bj.vue b/src/views/business/resource/sj/comps/Bj.vue index c578680..b2799a4 100644 --- a/src/views/business/resource/sj/comps/Bj.vue +++ b/src/views/business/resource/sj/comps/Bj.vue @@ -95,7 +95,7 @@