Browse Source

feat:[模板管理]PCR002

lkf
HanLong 2 months ago
parent
commit
81194edecc
5 changed files with 1064 additions and 109 deletions
  1. +79
    -54
      src/lang/en/template/pcr.js
  2. +77
    -53
      src/lang/zh/template/pcr.js
  3. +4
    -2
      src/views/business/comps/template/TemplateTable.vue
  4. +330
    -0
      src/views/business/comps/template/comps/pcr/PCR002.vue
  5. +574
    -0
      src/views/business/comps/template/formConfig/PCRTableConfig.js

+ 79
- 54
src/lang/en/template/pcr.js View File

@ -1,67 +1,92 @@
//色谱
//PCR
export default {
// PCR分析溶液配制记录表
pcr001:{
title: 'PCR分析溶液配制记录表',
pcr001: {
title: 'PCR分析溶液配制记录表'
},
// 生物样品分析储备液配制表
sp002:{
title: '生物样品分析储备液配制表',
// PCR分析工作液制备表
pcr002: {
title: 'PCR分析工作液制备表',
qsyry: 'Source Solution',
ysqsyrynd: 'Expected Concentration of Source Solution',
mbryyxzq: 'Validity Period of Target Solution',
mbrysxr: 'Expiration Date of Target Solution',
mbrybh: 'Target Solution ID',
qsrybh: 'Source Solution ID',
ysqsrytj: 'Expected Volume of Source Solution',
sjqsrytj: 'Actual Source Solution Volume',
ysxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
ysmbrynd: 'Expected Concentration of Target Solution',
sjmbrynd: 'Actual Concentration of Target Solution',
ysmbrytj: 'Expected Volume of Target Solution',
sjmbrytj: 'Actual Volume of Target Solution',
mbryyxzq: 'Validity Period of Target Solution',
mbrysxr: 'Expiration Date of Target Solution',
ysysrybh: '预设原始溶液编号',
sjysrybh: '实际原始溶液编号',
ysysrynd: '预设原始溶液浓度',
sjysrynd: '实际原始溶液浓度',
ysysrytj: '预设原始溶液体积',
sjysrytj: '实际原始溶液体积',
yjxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
sjqsyrynd: 'Actual Concentration of Source Solution',
xsy: 'Diluent',
rqcz: 'Container Material',
cctj: 'Storage Condition',
},
// 生物样品标曲工作液制备表
sp003:{
sp003: {
title: '生物样品标曲工作液制备表',
rqcz: 'Container Material',
cctj:'Storage Condition',
qsyry:'Source Solution',
ysqsyrynd:'Expected Concentration of Source Solution',
sjqsyrynd:'Actual Concentration of Source Solution',
xsy:'Diluent',
qsbhstd:'STD Starting Number',
mbryyxzq:'Validity Period of Target Solution',
mbrysxr:'Expiration Date of Target Solution',
mbrybh:'Target Solution ID',
qsrybh:'Source Solution ID',
ysqsrytj:'Expected Volume of Source Solution',
sjqsrytj:'Actual Source Solution Volume',
ysxsytj:'Expected Volume of Diluent',
sjxsytj:'Actual Volume of Diluent',
ysmbrynd:'Expected Concentration of Target Solution',
sjmbrynd:'Actual Concentration of Target Solution',
ysmbrytj:'Expected Volume of Target Solution',
sjmbrytj:'Actual Volume of Target Solution',
cctj: 'Storage Condition',
qsyry: 'Source Solution',
ysqsyrynd: 'Expected Concentration of Source Solution',
qsbhstd: 'STD Starting Number',
mbrybh: 'Target Solution ID',
qsrybh: 'Source Solution ID',
ysqsrytj: 'Expected Volume of Source Solution',
sjqsrytj: 'Actual Source Solution Volume',
ysxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
ysmbrynd: 'Expected Concentration of Target Solution',
sjmbrynd: 'Actual Concentration of Target Solution',
ysmbrytj: 'Expected Volume of Target Solution',
sjmbrytj: 'Actual Volume of Target Solution'
},
// 生物样品内标工作液制备表
sp00456:{
// 生物样品内标工作液制备表
sp00456: {
title: '生物样品内标工作液制备表',
mbrybh:'Target Solution ID',
qsrybh:'Source Solution ID',
ysqsrytj:'Expected Volume of Source Solution',
sjqsrytj:'Actual Source Solution Volume',
ysxsytj:'Expected Volume of Diluent',
sjxsytj:'Actual Volume of Diluent',
ysmbrynd:'Expected Concentration of Target Solution',
sjmbrynd:'Actual Concentration of Target Solution',
ysmbrytj:'Expected Volume of Target Solution',
sjmbrytj:'Actual Volume of Target Solution',
mbryyxzq:'Validity Period of Target Solution',
mbrysxr:'Expiration Date of Target Solution',
ysysrybh:'预设原始溶液编号',
sjysrybh:'实际原始溶液编号',
ysysrynd:'预设原始溶液浓度',
sjysrynd:'实际原始溶液浓度',
ysysrytj:'预设原始溶液体积',
sjysrytj:'实际原始溶液体积',
yjxsytj:'Expected Volume of Diluent',
sjxsytj:'Actual Volume of Diluent',
qsyry:'Source Solution',
ysqsyrynd:'Expected Concentration of Source Solution',
sjqsyrynd:'Actual Concentration of Source Solution',
xsy:'Diluent',
mbrybh: 'Target Solution ID',
qsrybh: 'Source Solution ID',
ysqsrytj: 'Expected Volume of Source Solution',
sjqsrytj: 'Actual Source Solution Volume',
ysxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
ysmbrynd: 'Expected Concentration of Target Solution',
sjmbrynd: 'Actual Concentration of Target Solution',
ysmbrytj: 'Expected Volume of Target Solution',
sjmbrytj: 'Actual Volume of Target Solution',
mbryyxzq: 'Validity Period of Target Solution',
mbrysxr: 'Expiration Date of Target Solution',
ysysrybh: '预设原始溶液编号',
sjysrybh: '实际原始溶液编号',
ysysrynd: '预设原始溶液浓度',
sjysrynd: '实际原始溶液浓度',
ysysrytj: '预设原始溶液体积',
sjysrytj: '实际原始溶液体积',
yjxsytj: 'Expected Volume of Diluent',
sjxsytj: 'Actual Volume of Diluent',
sjqsyrynd: 'Actual Concentration of Source Solution',
xsy: 'Diluent',
rqcz: 'Container Material',
cctj:'Storage Condition',
},
// 生物样品分析方法学样品制备表-准确度与精密度
sp008: {

+ 77
- 53
src/lang/zh/template/pcr.js View File

@ -1,67 +1,91 @@
//色谱
//PCR
export default {
// PCR分析溶液配制记录表
pcr001:{
title: 'PCR分析溶液配制记录表',
pcr001: {
title: 'PCR分析溶液配制记录表'
},
// 生物样品分析储备液配制表
sp002:{
title: '生物样品分析储备液配制表',
// PCR分析工作液制备表
pcr002: {
title: 'PCR分析工作液制备表',
mbrybh: '目标溶液编号',
qsrybh: '起始溶液编号',
ysqsrytj: '预设起始溶液体积',
sjqsrytj: '实际起始溶液体积',
ysxsytj: '预设稀释液体积',
sjxsytj: '实际稀释液体积',
ysmbrynd: '预设目标溶液浓度',
sjmbrynd: '实际目标溶液浓度',
ysmbrytj: '预设目标溶液体积',
sjmbrytj: '实际目标溶液体积',
mbryyxzq: '目标溶液有效周期',
mbrysxr: '目标溶液失效日',
ysysrybh: '预设原始溶液编号',
sjysrybh: '实际原始溶液编号',
ysysrynd: '预设原始溶液浓度',
sjysrynd: '实际原始溶液浓度',
ysysrytj: '预设原始溶液体积',
sjysrytj: '实际原始溶液体积',
yjxsytj: '预计稀释液体积',
sjxsytj: '实际稀释液体积',
qsyry: '起始源溶液',
ysqsyrynd: '预设起始源溶液浓度',
sjqsyrynd: '实际起始源溶液浓度',
xsy: '稀释液',
rqcz: '容器材质',
cctj: '存储条件'
},
// 生物样品标曲工作液制备表
sp003:{
sp003: {
title: '生物样品标曲工作液制备表',
rqcz: '容器材质',
cctj:'存储条件',
qsyry:'起始源溶液',
ysqsyrynd:'预设起始源溶液浓度',
sjqsyrynd:'实际起始源溶液浓度',
xsy:'稀释液',
qsbhstd:'起始编号STD',
mbryyxzq:'目标溶液有效周期',
mbrysxr:'目标溶液失效日',
mbrybh:'目标溶液编号',
qsrybh:'起始溶液编号',
ysqsrytj:'预设起始溶液体积',
sjqsrytj:'实际起始溶液体积',
ysxsytj:'预设稀释液体积',
sjxsytj:'实际稀释液体积',
ysmbrynd:'预设目标溶液浓度',
sjmbrynd:'实际目标溶液浓度',
ysmbrytj:'预设目标溶液体积',
sjmbrytj:'实际目标溶液体积',
cctj: '存储条件',
qsyry: '起始源溶液',
ysqsyrynd: '预设起始源溶液浓度',
sjqsyrynd: '实际起始源溶液浓度',
xsy: '稀释液',
qsbhstd: '起始编号STD',
mbryyxzq: '目标溶液有效周期',
mbrysxr: '目标溶液失效日',
mbrybh: '目标溶液编号',
qsrybh: '起始溶液编号',
ysqsrytj: '预设起始溶液体积',
sjqsrytj: '实际起始溶液体积',
ysxsytj: '预设稀释液体积',
sjxsytj: '实际稀释液体积',
ysmbrynd: '预设目标溶液浓度',
sjmbrynd: '实际目标溶液浓度',
ysmbrytj: '预设目标溶液体积',
sjmbrytj: '实际目标溶液体积'
},
// 生物样品内标工作液制备表
sp00456:{
sp00456: {
title: '生物样品内标工作液制备表',
mbrybh:'目标溶液编号',
qsrybh:'起始溶液编号',
ysqsrytj:'预设起始溶液体积',
sjqsrytj:'实际起始溶液体积',
ysxsytj:'预设稀释液体积',
sjxsytj:'实际稀释液体积',
ysmbrynd:'预设目标溶液浓度',
sjmbrynd:'实际目标溶液浓度',
ysmbrytj:'预设目标溶液体积',
sjmbrytj:'实际目标溶液体积',
mbryyxzq:'目标溶液有效周期',
mbrysxr:'目标溶液失效日',
ysysrybh:'预设原始溶液编号',
sjysrybh:'实际原始溶液编号',
ysysrynd:'预设原始溶液浓度',
sjysrynd:'实际原始溶液浓度',
ysysrytj:'预设原始溶液体积',
sjysrytj:'实际原始溶液体积',
yjxsytj:'预计稀释液体积',
sjxsytj:'实际稀释液体积',
qsyry:'起始源溶液',
ysqsyrynd:'预设起始源溶液浓度',
sjqsyrynd:'实际起始源溶液浓度',
xsy:'稀释液',
mbrybh: '目标溶液编号',
qsrybh: '起始溶液编号',
ysqsrytj: '预设起始溶液体积',
sjqsrytj: '实际起始溶液体积',
ysxsytj: '预设稀释液体积',
sjxsytj: '实际稀释液体积',
ysmbrynd: '预设目标溶液浓度',
sjmbrynd: '实际目标溶液浓度',
ysmbrytj: '预设目标溶液体积',
sjmbrytj: '实际目标溶液体积',
mbryyxzq: '目标溶液有效周期',
mbrysxr: '目标溶液失效日',
ysysrybh: '预设原始溶液编号',
sjysrybh: '实际原始溶液编号',
ysysrynd: '预设原始溶液浓度',
sjysrynd: '实际原始溶液浓度',
ysysrytj: '预设原始溶液体积',
sjysrytj: '实际原始溶液体积',
yjxsytj: '预计稀释液体积',
sjxsytj: '实际稀释液体积',
qsyry: '起始源溶液',
ysqsyrynd: '预设起始源溶液浓度',
sjqsyrynd: '实际起始源溶液浓度',
xsy: '稀释液',
rqcz: '容器材质',
cctj:'存储条件',
cctj: '存储条件'
},
// 生物样品分析方法学样品制备表-准确度与精密度
sp008: {

+ 4
- 2
src/views/business/comps/template/TemplateTable.vue View File

@ -46,6 +46,7 @@ import MJYLQSQD from "./comps/gsp/MJYLQSQD.vue";
// PCR
import PCR001 from "./comps/pcr/PCR001.vue";
import PCR002 from "./comps/pcr/PCR002.vue";
export default {
name: "TemplateTable",
@ -57,7 +58,7 @@ export default {
//
SP001, SP002, SP003, SP00456, SP008, SP009, SP010, SP011, SP012, SP013, SP014, SP015, SP016, SP017, SP018,
// PCR
PCR001
PCR001, PCR002
},
props: {
sn: {
@ -104,7 +105,8 @@ export default {
'SYWZPZJHB': 'SYWZPZJHB',
'MJYLQSQD': 'MJYLQSQD',
//PCR
'PCR001': 'PCR001'
'PCR001': 'PCR001',
'PCR002': 'PCR002'
}
}
return this.componentMap || "Demo"

+ 330
- 0
src/views/business/comps/template/comps/pcr/PCR002.vue View File

@ -0,0 +1,330 @@
<!-- PCR分析溶液配制记录表 -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.pcr.pcr002.title') }}<img src="@/assets/images/detail-title.png" /></div>
<div class="detail-content">
<div class="content">
<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"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
<CustomTable @blur="onHandleTableBlur"
:ref="`tableRef`" :columns="tableStepColumns"
:formData="formData" :prefixKey="`table`" fieldItemLabel="template.common.operationSteps">
<template slot="operation" slot-scope="{ row, rowIndex, columns }">
<TableOpertaion
:fillType="fillType"
:row="row"
:rowIndex="rowIndex"
:columns="columns"
@deleteRow="(rowIndex) => deleteRow(rowIndex)"
@subPackageSubmit="subPackageSubmit"
@startConfig="startConfig"
@configComplete="configComplete"
></TableOpertaion>
</template>
</CustomTable>
</div>
<Step ref="stepRef" :formData="formData.stepData"></Step>
<BaseInfoFormPackage fieldItemLabel="template.common.remark" label="template.common.remark"
ref="remarkRef" :formConfig="remarkConig" :formData="formData" />
</div>
</div>
</div>
<!-- <button @click="onSave">保存</button> -->
</div>
</template>
<script>
import BaseInfoFormPackage from "@/components/Template/BaseInfoFormPackage";
import LineLabel from "@/components/Template/LineLabel";
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 { EventBus } from "@/utils/eventBus";
import { uniqeResource } from "@/utils/calUnitTools";
import { debounce } from 'lodash-es'
import { getLadderColumnsConfig } from "../../formConfig/PCRTableConfig.js";
export default {
name: "PCR001",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
tableStepColumns() {
return getLadderColumnsConfig(this);
},
//
storageFormConfig() {
return [
{
type: "conditionItem",
config: {
storageCondition: {
label: 'template.common.storageConditionLabel',
type: "select",
fillType: "preFill",
options: this.getDictOptions("business_cctj"),
otherCode: "storageConditionOther",
},
}
}
];
},
//
remarkConig() {
return [
{
type: "cellItem",
config: {
remark: {
label: "",
type: "textarea",
fillType: "actFill",
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
},
//
baseInfoFormConfig() {
return [
{
type: "cardItem",
config: {
studyMc: {
label: 'template.common.testName',
type: "input",
disabled: true,
},
studySn: {
label: 'template.common.testNumber',
type: "input",
disabled: true,
},
}
},
{
type: "conditionItem",
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: "select",
multiple: true,
fillType: "preFill",
options: this.getDictOptions('business_pztj'),
otherCode: "preOther",
},
act: {
label: 'template.common.actualFill',
type: "select",
fillType: "actFill",
otherCode: "actOther",
multiple: true,
compareTo: "pre",
options: this.getDictOptions('business_pztj')
}
}
},
{
type: "cellItem",
label: 'template.common.configurationTime',
config: {
startDate: {
label: 'template.common.startTime',
type: "input",
},
endDate: {
label: 'template.common.endTime',
type: "input",
},
}
}
]
},
//
stepFormConfig() {
return [
{
type: 'step',
config: {
startSolution: {
label: 'template.pcr.pcr002.qsyry',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subStartSolution',
subFillType: 'actFill',
maxlength: 20
},
targetStartSolution: {
label: 'template.pcr.pcr002.ysqsyrynd',
type: 'inputNumber',
subType: 'select',
fillType: 'preFill',
subOptions: this.getDictOptions('business_nddw'),
subKey: 'subTargetStartSolution',
maxlength: 10
},
targetAcSolution: {
label: 'template.pcr.pcr002.sjqsyrynd',
type: 'input',
fillType: 'actFill',
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //
},
solution: {
label: 'template.pcr.pcr002.xsy',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subSolution',
subFillType: 'actFill',
maxlength: 20
},
stepStorageCondition: {
label: 'template.pcr.pcr002.cctj',
type: 'select',
fillType: 'preFill',
options: this.getDictOptions('business_cctj'),
otherCode: 'stepStorageConditionOther'
},
effectivePeriod: {
label: 'template.pcr.pcr002.mbryyxzq',
type: 'input',
subType: 'select',
subKey: 'effectivePeriodUnit',
fillType: 'preFill',
subOptions: this.getDictOptions('business_yxqdw')
},
expireDate: {
label: 'template.pcr.pcr002.mbrysxr',
type: 'input'
}
}
}
]
},
},
data() {
return {
formData: {}
};
},
mounted() {
const formData = this.getFormDataByTemplateData();
if(this.fillType === "actFill"){
this.getCode(formData);
}
},
methods: {
//
async getCode(v){
const {stepTableFormData = []} = v;
if(stepTableFormData && stepTableFormData.length>0 && !stepTableFormData[0].bhCode){
let postSn = []
for(let i=0;i<stepTableFormData.length;i++){
postSn.push({
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,{
subTargetSolutionCode: result.data[i],
})
}
const params = {
type: "fieldChanged",
newRecord: null,
resourceList: null,
}
setTimeout(() => {
EventBus.$emit('onModifyRecord', params,)
}, 10);
}
}
},
//
getFilledFormData() {
return this.getFilledFormDataByRefs(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"])
},
//
async getFormData() {
let content = await this.validFormFields(["baseInfoRef", "storageConditionRef", "stepFormPackageRef", "stepRef", "remarkRef"]);
//resource
let tmpResource = []
if (this.fillType === "actFill") {
//
tmpResource.push({
mc: content.targetName,
bh: content.targetCode + content.targetCodeSn,
ph: '',
ndz: content.targetActConcentration + content.targetActConcentrationUnit,
nd: content.targetActConcentration,
nddw: content.targetActConcentrationUnit,
ly: 'ELN配制',
sxrq: content.expireDate,
kc: content.targetActVolume,
kcdw: content.targetActVolumeUnit,
syl: null,
type: null,
elnType: this.product,
syldw: content.targetActVolumeUnit,
yxzq: content.effectivePeriod,
yxzqdw: content.effectivePeriodUnit,
})
}
//使
const stepResource = this.$refs.stepRef.getStepResource()
this.resourceTmp = uniqeResource(tmpResource, stepResource.sjResource || [])
this.yqResourceTmp = stepResource.yqResource || []
return content;
},
//
async onSave() {
let content = this.$refs.stepRef.getStepResource();
console.log(content);
},
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.mt-20 {
margin-top: 20px;
}
.print-btn {
margin-bottom: 20px;
}
</style>

+ 574
- 0
src/views/business/comps/template/formConfig/PCRTableConfig.js View File

@ -0,0 +1,574 @@
// 阶梯配置表格列配置
export const getLadderColumnsConfig = ($this) => {
return [
{
label: 'template.pcr.pcr002.mbrybh',
prop: 'targetSolutionCode',
bodyType: 'input',
bodySubType: 'span',
bodySubKey: 'subTargetSolutionCode',
bodyFillType: 'preFill',
width: 280,
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
},
{
label: 'template.pcr.pcr002.qsrybh',
prop: 'startSolutionCode',
width: 280,
bodyType: 'input',
bodyFillType: 'actFill',
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr002.ysqsrytj',
prop: 'targetStartSolutionVolume',
width: 280,
headerSelectKey: 'targetStartSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodySubType: 'inputNumber',
bodySubKey: 'targetStartSolutionVolumePrecision',
bodyFillType: 'preFill',
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'targetStartSolutionVolumePrecision',
bodyMaxlength: 10,
bodyDisabled: true,
bodySubPlaceholder: 'template.common.xswsPlaceholder'
},
{
label: 'template.pcr.pcr002.sjqsrytj',
prop: 'actStartSolutionVolume',
width: 280,
headerSelectKey: 'actStartSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom: 'targetStartSolutionVolume', //复制哪个字段
compareTo: 'targetStartSolutionVolume' //比较哪个字段
},
{
label: 'template.pcr.pcr002.ysxsytj',
prop: 'targetDiluentVolume',
width: 280,
headerSelectKey: 'targetDiluentVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyDisabled: true,
bodyType: 'inputNumber',
bodySubType: 'inputNumber',
bodySubKey: 'targetDiluentVolumePrecision',
bodyFillType: 'preFill',
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'targetDiluentVolumePrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder'
},
{
label: 'template.pcr.pcr002.sjxsytj',
prop: 'actDiluentVolume',
width: 280,
headerSelectKey: 'actDiluentVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom: 'targetDiluentVolume', //复制哪个字段
compareTo: 'targetDiluentVolume', //比较哪个字段
},
{
label: 'template.pcr.pcr002.ysmbrynd',
prop: 'targetSolutionConcentration',
width: 280,
headerSelectKey: 'targetSolutionConcentrationUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr002.sjmbrynd',
prop: 'actSolutionConcentration',
width: 280,
headerSelectKey: 'actSolutionConcentrationUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_nddw'),
bodyDisabled: true,
bodyType: 'inputNumber',
bodySubType: 'inputNumber',
bodySubKey: 'actSolutionConcentrationPrecision',
bodyFillType: 'actFill',
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionConcentrationPrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionConcentration', //比较哪个字段
},
{
label: 'template.pcr.pcr002.ysmbrytj',
prop: 'targetSolutionVolume',
width: 280,
headerSelectKey: 'targetSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.pcr.pcr002.sjmbrytj',
prop: 'actSolutionVolume',
width: 280,
headerSelectKey: 'actSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyDisabled: true,
bodyType: 'inputNumber',
bodySubType: 'inputNumber',
bodySubKey: 'actSolutionVolumePrecision',
bodyFillType: 'actFill',
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionVolumePrecision',
bodyMaxlength: 10,
// copyFrom: 'targetSolutionVolume', //复制哪个字段
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionVolume', //比较哪个字段
}
]
}
// 平行配置表格列配置
export const getParallelColumnsConfig = ($this) => {
const sn = $this.sn;
let o = {
"SP004":"business_sp_nbgzy",
"SP005":"business_sp_zkgzy",
"SP006":"business_sp_bzqxzkypzbb",
}
return [
{
label: 'template.sp.sp00456.mbrybh',
prop: 'targetSolutionCode',
bodyType: 'select',
bodyOptions: $this.getDictOptions(o[sn]),
bodySubType: 'span',
bodySubKey: 'subTargetSolutionCode',
bodyFillType: 'preFill',
myCodeFields: ["targetSolutionCode", "subTargetSolutionCode"],//分装的母液编号字段
maxVolumeField: "actSolutionVolume",//分装的最大量字段
maxVolumeFieldUnit: "actSolutionVolumeUnit",//分装的最大量单位字段
width: 280
},
{
label: 'template.sp.sp00456.ysmbrynd',
prop: 'targetSolutionConcentration',
width: 280,
headerSelectKey: 'targetSolutionConcentrationUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_nddw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.sp.sp00456.sjmbrynd',
prop: 'actSolutionConcentration',
width: 280,
headerSelectKey: 'actSolutionConcentrationUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_nddw'),
bodyDisabled: true,
bodyType: 'inputNumber',
bodySubType: 'inputNumber',
bodySubKey: 'actSolutionConcentrationPrecision',
bodyFillType: 'actFill',
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionConcentrationPrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionConcentration', //比较哪个字段
},
{
label: 'template.sp.sp00456.ysmbrytj',
prop: 'targetSolutionVolume',
width: 280,
headerSelectKey: 'targetSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.sp.sp00456.sjmbrytj',
prop: 'actSolutionVolume',
width: 280,
headerSelectKey: 'actSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
bodyDisabled: true,
bodyType: 'inputNumber',
bodySubType: 'inputNumber',
bodySubKey: 'actSolutionVolumePrecision',
bodyFillType: 'actFill',
bodySubFillType: 'preFill',
showBodySub: $this.fillType === 'preFill',
bodyPrecisionKey: 'actSolutionVolumePrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
compareTo: 'targetSolutionVolume', //比较哪个字段
},
{
label: 'template.sp.sp00456.mbryyxzq',
prop: 'targetSolutionCycle',
width: 280,
fillType: 'preFill',
bodyType: 'inputNumber',
bodySubType: 'select',
showBodySub: true,
bodySubKey: 'targetSolutionCyclePrecision',
bodySubOptions: $this.getDictOptions('business_yxqdw'),
bodyFillType: 'preFill',
bodySubFillType: 'preFill',
bodyMaxlength: 10
},
{
label: 'template.sp.sp00456.mbrysxr',
prop: 'targetSolutionExpirationDate',
width: 180,
bodyType: 'span'
},
{
label: 'template.sp.sp00456.ysysrybh',
prop: 'startSolutionCode',
width: 280,
bodyType: 'input',
bodyFillType: 'preFill'
},
{
label: 'template.sp.sp00456.sjysrybh',
prop: 'actStartSolutionCode',
width: 280,
bodyType: 'clickable',
bodyFillType: 'actFill',
compareTo: 'startSolutionCode', //比较哪个字段
},
{
label: 'template.sp.sp00456.ysysrynd',
prop: 'targetStartSolutionConcentration',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodySubType: 'select',
bodySubKey: 'targetStartSolutionConcentrationPrecision',
bodySubOptions: $this.getDictOptions('business_nddw'),
bodySubFillType: 'preFill',
bodyMaxlength: 10,
showBodySub: true
},
{
label: 'template.sp.sp00456.sjysrynd',
prop: 'targetAcSolution',
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyDisabled: true,
compareTo: 'targetStartSolutionConcentration', //比较哪个字段
},
{
label: 'template.sp.sp00456.ysysrytj',
prop: 'targetStartSolutionVolume',
headerSelectKey: 'targetStartSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodySubType: 'inputNumber',
bodySubKey: 'targetStartSolutionVolumePrecision',
bodySubFillType: 'preFill',
bodyMaxlength: 10,
bodyPrecisionKey: 'targetStartSolutionVolumePrecision',
bodyMaxlength: 10,
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodyDisabled: true,
showBodySub: true,
showBodySub: $this.fillType === 'preFill'
},
{
label: 'template.sp.sp00456.sjysrytj',
prop: 'actStartSolutionVolume',
headerSelectKey: 'actStartSolutionVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
compareTo: 'targetStartSolutionVolume', //比较哪个字段
copyFrom: 'targetStartSolutionVolume' //复制哪个字段
},
{
label: 'template.sp.sp00456.yjxsytj',
prop: 'targetDiluentVolume',
headerSelectKey: 'preDiluentVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'preFill',
bodySubType: 'inputNumber',
bodySubKey: 'targetDiluentVolumePrecision',
bodySubFillType: 'preFill',
bodyMaxlength: 10,
bodyPrecisionKey: 'targetDiluentVolumePrecision',
bodySubPlaceholder: 'template.common.xswsPlaceholder',
bodyDisabled: true,
showBodySub: $this.fillType === 'preFill'
},
{
label: 'template.sp.sp00456.sjxsytj',
prop: 'actDiluentVolume',
headerSelectKey: 'actDiluentVolumeUnit',
fillType: 'preFill',
headerOptions: $this.getDictOptions('business_tjdw'),
width: 280,
bodyType: 'inputNumber',
bodyFillType: 'actFill',
bodyMaxlength: 10,
copyFrom:"targetDiluentVolume",
compareTo: 'targetDiluentVolume' //比较哪个字段
}
]
}
//阶梯配置
export const getLadderFormConfig = ($this) => {
return [
{
type: 'step',
config: {
startSolution: {
label: 'template.sp.sp00456.qsyry',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subStartSolution',
subFillType: 'actFill',
maxlength: 20
},
targetStartSolution: {
label: 'template.sp.sp00456.ysqsyrynd',
type: 'inputNumber',
subType: 'select',
fillType: 'preFill',
subOptions: $this.getDictOptions('business_nddw'),
subKey: 'subTargetStartSolution',
maxlength: 10
},
targetAcSolution: {
label: 'template.sp.sp00456.sjqsyrynd',
type: 'input',
fillType: 'actFill',
disabled: true,
maxlength: 10,
compareTo: 'targetStartSolution', //比较哪个字段
},
solution: {
label: 'template.sp.sp00456.xsy',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subSolution',
subFillType: 'actFill',
maxlength: 20
},
stepStorageCondition: {
label: 'template.sp.sp00456.cctj',
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
otherCode: 'stepStorageConditionOther'
},
effectivePeriod: {
label: 'template.sp.sp00456.mbryyxzq',
type: 'input',
subType: 'select',
subKey: 'effectivePeriodUnit',
fillType: 'preFill',
subOptions: $this.getDictOptions('business_yxqdw')
},
expireDate: {
label: 'template.sp.sp00456.mbrysxr',
type: 'input'
}
}
}
]
}
//试验基本信息
export const getBaseInfoFormConfig = ($this) => {
return [
{
type: 'cardItem',
config: {
studyMc: {
label: 'template.common.testName',
type: 'input',
disabled: true
},
studySn: {
label: 'template.common.testNumber',
type: 'input',
disabled: true
},
methodCode: {
label: 'template.common.methodCode',
type: 'input',
fillType: 'preFill',
maxlength: 50
},
versionNum: {
label: 'template.common.versionNumber',
type: 'inputNumber',
fillType: 'actFill',
prepend: 'V',
maxlength: 50
}
}
},
{
type: 'conditionItem',
label: 'template.common.testConfigurationConditions',
config: {
pre: {
label: 'template.common.preFill',
type: 'select',
multiple: true,
fillType: 'preFill',
options: $this.getDictOptions('business_pztj'),
otherCode: 'preOther'
},
act: {
label: 'template.common.actualFill',
type: 'select',
fillType: 'actFill',
otherCode: 'actOther',
multiple: true,
options: $this.getDictOptions('business_pztj'),
compareTo: 'pre'
}
}
},
{
type: 'conditionItem',
label: 'template.sp.sp00456.rqcz',
config: {
containerMaterial: {
label: 'template.sp.sp00456.rqcz',
type: 'select',
options: $this.getDictOptions('business_rqcz'),
fillType: 'actFill',
multiple: true,
otherCode: 'containerMaterialOther'
}
}
},
{
type: 'cellItem',
label: 'template.common.configurationTime',
config: {
startDate: {
label: 'template.common.startTime',
type: 'input'
},
endDate: {
label: 'template.common.endTime',
type: 'input'
}
}
}
]
}
//备注config
export const getRemarkFormConfig = () => {
return [
{
type: 'cellItem',
config: {
remark: {
label: '',
type: 'textarea',
fillType: 'actFill',
span: 1,
placeholder: 'template.common.remarkPlaceholder',
maxlength: 1000,
rows: 5
}
}
}
]
}
//存储条件
export const getStorageConditionFormConfig = ($this) => {
return [
{
type: 'conditionItem',
config: {
storageCondition: {
label: 'template.sp.sp00456.cctj',
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
otherCode: 'othersSorageCondition'
}
}
}
]
}
//并行步骤配置
export const getParalleStepFormConfig = ($this) => {
return [
{
type: 'step',
config: {
solution: {
label: 'template.sp.sp00456.xsy',
type: 'input',
fillType: 'preFill',
subType: 'clickable',
subKey: 'subSolution',
subFillType: 'actFill',
maxlength: 20
},
paralleStepStorageCondition: {
label: 'template.sp.sp00456.cctj',
type: 'select',
fillType: 'preFill',
options: $this.getDictOptions('business_cctj'),
otherCode: 'paralleStepStorageConditionOther'
}
}
}
]
}

Loading…
Cancel
Save