|
|
|
@ -9,19 +9,25 @@ |
|
|
|
<BaseInfoFormPackage fieldItemLabel="template.common.baseInfo" label="template.common.baseInfo" |
|
|
|
ref="baseInfoRef" :formConfig="baseInfoFormConfig" :formData="formData" /> |
|
|
|
<TableList label="template.common.reagentInfo" :columns="sysjColumns" :dataSource="resource" /> |
|
|
|
<TableList label="template.common.wzInfo" :columns="sywzColumns" :dataSource="resourceWz" |
|
|
|
v-if="resourceWz.length > 0" /> |
|
|
|
|
|
|
|
<TableList label="template.common.instrumentInfo" :columns="yqColumns" :dataSource="yqResource" /> |
|
|
|
<BaseInfoFormPackage fieldItemLabel="template.common.storageCondition" |
|
|
|
label="template.common.storageCondition" ref="storageConditionRef" |
|
|
|
:formConfig="storageFormConfig" :formData="formData" /> |
|
|
|
|
|
|
|
<LineLabel label="template.common.operationSteps" /> |
|
|
|
<div class="template-form-item"> |
|
|
|
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef" |
|
|
|
@clickable="handleFormClickable" |
|
|
|
@onSureModifyRecord="onSureModifyRecord" |
|
|
|
@resetRecord="resetRecord" |
|
|
|
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" /> |
|
|
|
<CustomTable @blur="onHandleTableBlur" |
|
|
|
:ref="`tableRef`" :columns="tableStepColumns" |
|
|
|
:formData="formData" :prefixKey="`table`" fieldItemLabel="template.common.operationSteps"> |
|
|
|
<CustomTable |
|
|
|
@blur="onHandleTableBlur" |
|
|
|
:ref="`stepTableRef`" |
|
|
|
:columns="tableStepColumns" |
|
|
|
:formData="formData" |
|
|
|
:prefixKey = "`table`" |
|
|
|
@clickable="handleClickable" |
|
|
|
fieldItemLabel = "template.common.operationSteps" |
|
|
|
> |
|
|
|
<template slot="operation" slot-scope="{ row, rowIndex, columns }"> |
|
|
|
<TableOpertaion |
|
|
|
:fillType="fillType" |
|
|
|
@ -42,6 +48,8 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<SelectReagentDialog @submit="onSelectReagentSubmit" ref="selectReagentDialogRef"> |
|
|
|
</SelectReagentDialog> |
|
|
|
<!-- <button @click="onSave">保存</button> --> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
@ -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<stepTableFormData.length;i++){ |
|
|
|
for (let i = 0; i < stepTableFormData.length; i++) { |
|
|
|
postSn.push({ |
|
|
|
pre:stepTableFormData[i].targetSolutionCode, |
|
|
|
type:1 |
|
|
|
pre: stepTableFormData[i].targetSolutionCode, |
|
|
|
type: 1 |
|
|
|
}) |
|
|
|
} |
|
|
|
const result = await getLatestSnArr(postSn) |
|
|
|
if(result.code == 200){ |
|
|
|
for(let i=0;i<stepTableFormData.length;i++){ |
|
|
|
this.$refs.tableRef.updateDataSourceByRowIndex(i,{ |
|
|
|
if (result.code == 200) { |
|
|
|
for (let i = 0; i < stepTableFormData.length; i++) { |
|
|
|
this.$refs.stepTableRef.updateDataSourceByRowIndex(i, { |
|
|
|
subTargetSolutionCode: result.data[i], |
|
|
|
}) |
|
|
|
} |
|
|
|
@ -276,11 +371,11 @@ export default { |
|
|
|
}, |
|
|
|
//获取已填写的表单数据 |
|
|
|
getFilledFormData() { |
|
|
|
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"]) |
|
|
|
return this.getFilledFormDataByRefs(["baseInfoRef", "stepFormPackageRef","stepTableRef", "stepRef", "remarkRef"]) |
|
|
|
}, |
|
|
|
//获取填写完成的表单数据 |
|
|
|
async getFormData() { |
|
|
|
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"]); |
|
|
|
let content = await this.validFormFields(["baseInfoRef", "stepFormPackageRef", "stepTableRef", "stepRef", "remarkRef"]); |
|
|
|
//生成resource |
|
|
|
let tmpResource = [] |
|
|
|
if (this.fillType === "actFill") { |
|
|
|
@ -316,6 +411,82 @@ export default { |
|
|
|
console.log(content); |
|
|
|
|
|
|
|
}, |
|
|
|
// 删除表格行 |
|
|
|
deleteRow(rowIndex) { |
|
|
|
const stepTableRef = this.$refs['stepTableRef']; |
|
|
|
if (stepTableRef) { |
|
|
|
stepTableRef.deleteRow(rowIndex); |
|
|
|
} |
|
|
|
}, |
|
|
|
configComplete(val) { |
|
|
|
if (val.rowData.sjjzxql === '' || val.rowData.sjjzxql === undefined || val.rowData.sjryxql === '' || val.rowData.sjryxql === undefined) { |
|
|
|
this.$message.error("表格内容未填完") |
|
|
|
return |
|
|
|
} |
|
|
|
console.log("完成配置数据:" + JSON.stringify(val)) |
|
|
|
const { total, unit } = addTj([val.rowData.sjjzxql, val.rowData.sjryxql], [val.headerSelectFields.sjjzxqlUnit, val.headerSelectFields.sjryxqlUnit]) |
|
|
|
let postData = { |
|
|
|
mc: null, |
|
|
|
studyId: this.formData.studyId, |
|
|
|
studyFormId: this.formData.id, |
|
|
|
studySubjectId: this.formData.studySubjectId, |
|
|
|
bh: val.rowData.bh + val.rowData.bhCode, |
|
|
|
nd: val.rowData.hhwznd, |
|
|
|
nddw: val.headerSelectFields.hhwzndUnit, |
|
|
|
kc: total, |
|
|
|
kcdw: unit, |
|
|
|
} |
|
|
|
console.log("完成配置提交数据:" + JSON.stringify(postData)) |
|
|
|
sj_configurationCompleted(postData).then(() => { |
|
|
|
}).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(() => { |
|
|
|
}) |
|
|
|
} |
|
|
|
}, |
|
|
|
} |
|
|
|
}; |
|
|
|
</script> |
|
|
|
|