Browse Source

feat:[模板管理]PCR001

lkf
HanLong 2 months ago
parent
commit
99414738af
5 changed files with 638 additions and 3 deletions
  1. +4
    -2
      src/lang/en.js
  2. +152
    -0
      src/lang/en/template/pcr.js
  3. +4
    -1
      src/lang/zh.js
  4. +146
    -0
      src/lang/zh/template/pcr.js
  5. +332
    -0
      src/views/business/comps/template/comps/pcr/PCR001.vue

+ 4
- 2
src/lang/en.js View File

@ -17,7 +17,8 @@ import commonTemplate from './en/template/commonTemplate'
import sp from './en/template/sp' import sp from './en/template/sp'
//供试品模板 //供试品模板
import gspmb from './en/template/gsp' import gspmb from './en/template/gsp'
//PCR模板
import pcr from './en/template/pcr'
// 试验管理 // 试验管理
import study from './en/business/study/study' import study from './en/business/study/study'
import studyEnter from './en/business/study/studyEnter' import studyEnter from './en/business/study/studyEnter'
@ -183,6 +184,7 @@ export default {
template: { template: {
common: commonTemplate, common: commonTemplate,
sp: sp, sp: sp,
gsp: gspmb
gsp: gspmb,
pcr: pcr
} }
} }

+ 152
- 0
src/lang/en/template/pcr.js View File

@ -0,0 +1,152 @@
//色谱
export default {
// PCR分析溶液配制记录表
pcr001:{
title: 'PCR分析溶液配制记录表',
},
// 生物样品分析储备液配制表
sp002:{
title: '生物样品分析储备液配制表',
},
// 生物样品标曲工作液制备表
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',
},
// 生物样品内标工作液制备表
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',
rqcz: 'Container Material',
cctj:'Storage Condition',
},
// 生物样品分析方法学样品制备表-准确度与精密度
sp008: {
title:
'Bioanalytical Methods Sample Preparation Record(Accuracy and Precision)',
clpbh: 'Analysis Batch Number',
rqcz: 'Container Material',
clsj: 'Work Time',
xzjz: 'Select substrate',
bh: 'Serial Number',
ysry: 'Preset solution',
sjry: 'Actual solution',
yjryxql: 'Expected Solution Extraction Volume',
sjryxql: 'Actual Solution Extraction Volume',
yjjzxql: 'Expected Blank Matrix Extraction Volume',
sjjzxql: 'Actual Blank Matrix Extraction Volume',
hhwznd: 'Target Solution Concentration'
},
// 生物样品分析方法学样品制备表-Recovery
sp009: {
title: 'Bioanalytical Methods Sample Preparation Record (Recovery)',
clpbh: 'Analysis Batch Number',
rqcz: 'Container Material',
clsj: 'Work Time',
xzjz: 'Select substrate',
bh: 'Serial Number',
ysry: 'Preset solution',
sjry: 'Actual solution',
yjryxql: 'Expected Solution Extraction Volume',
sjryxql: 'Actual Solution Extraction Volume',
yjjzxql: 'Expected Blank Matrix Extraction Volume',
sjjzxql: 'Actual Blank Matrix Extraction Volume',
hhwznd: 'Target Solution Concentration',
xzgzy: 'Select Working Solution',
xzxsy: 'Select Diluent',
yjgzyxql: 'Expected Working Solution Extraction Volume',
sjgzyxql: 'Actual Working Solution Extraction Volume',
yjxsyxql: 'Expected Diluent Extraction Volume',
sjxsyxql: 'Actual Diluent Extraction Volume'
},
//生物样品分析方法学样品制备表(全血稳定)
sp010: {
title:
'Bioanalytical Methods Sample Preparation Record (Whole Blood Stability)'
},
//生物样品分析方法学样品制备表(Solution stability)-生物样品分析方法学样品制备表-储备液和工作液稳定性
sp011: {
title:
'Bioanalytical Methods Sample Preparation Record (Solution Stability)',
xzxsy: 'Select Diluent',
yjxsyxql: 'Expected Blank Diluent Extraction Volume',
sjxsyxql: 'Actual Blank Diluent Extraction Volume'
},
//生物样品分析方法学样品制备表(Haemolysed matrix effect)-生物样品分析方法学样品制备表(溶血基质效应)
sp012: {
title:
'Bioanalytical Methods Sample Preparation Record (Haemolytic Matrix Effect)'
},
//生物样品分析方法学样品制备表(Matrix effect)-生物样品分析方法学样品制备表(基质效应)
sp013: {
title: 'Bioanalytical Methods Sample Preparation Record (Matrix Effect)',
kbjzbh: 'Blank Matrix Serial Number'
},
//生物样品分析方法学样品制备表(Selectivity)-生物样品分析方法学样品制备表(选择性和特异性)
sp014: {
title: 'Bioanalytical Methods Sample Preparation Record (Selectivity)'
},
//生物样品分析方法学样品制备表(Sample Size)-生物样品分析方法学样品制备表(最大样本数)
sp015: {
title: 'Bioanalytical Methods Sample Preparation Record (Sample Amount)'
},
//生物样品分析方法学样品制备表(Dilution Integrity)- 生物样品分析方法学样品制备表(稀释可靠性)
sp016: {
title:
'Bioanalytical Methods Sample Preparation Record (Dilution Integrity)',
bs: 'Multiple'
},
//生物样品分析方法学样品制备表(Stock solution comparison)- 生物样品分析方法学样品制备表(储备液对比)
sp017: {
title:
'Bioanalytical Methods Sample Preparation Record (Stock Solution Comparison)'
},
//生物样品分析方法学质控配制表
sp018: {
title: 'Bioanalytical Methods Quality Control Solution Preparation Record',
xzxsy: 'Select Diluent'
}
}

+ 4
- 1
src/lang/zh.js View File

@ -17,6 +17,8 @@ import commonTemplate from './zh/template/commonTemplate'
import sp from './zh/template/sp' import sp from './zh/template/sp'
//供试品模板 //供试品模板
import gspmb from './zh/template/gsp' import gspmb from './zh/template/gsp'
//PCR模板
import pcr from './zh/template/pcr'
// 试验管理 // 试验管理
import study from './zh/business/study/study' import study from './zh/business/study/study'
@ -178,6 +180,7 @@ export default {
template: { template: {
common: commonTemplate, common: commonTemplate,
sp: sp, sp: sp,
gsp: gspmb
gsp: gspmb,
pcr: pcr
} }
} }

+ 146
- 0
src/lang/zh/template/pcr.js View File

@ -0,0 +1,146 @@
//色谱
export default {
// PCR分析溶液配制记录表
pcr001:{
title: 'PCR分析溶液配制记录表',
},
// 生物样品分析储备液配制表
sp002:{
title: '生物样品分析储备液配制表',
},
// 生物样品标曲工作液制备表
sp003:{
title: '生物样品标曲工作液制备表',
rqcz: '容器材质',
cctj:'存储条件',
qsyry:'起始源溶液',
ysqsyrynd:'预设起始源溶液浓度',
sjqsyrynd:'实际起始源溶液浓度',
xsy:'稀释液',
qsbhstd:'起始编号STD',
mbryyxzq:'目标溶液有效周期',
mbrysxr:'目标溶液失效日',
mbrybh:'目标溶液编号',
qsrybh:'起始溶液编号',
ysqsrytj:'预设起始溶液体积',
sjqsrytj:'实际起始溶液体积',
ysxsytj:'预设稀释液体积',
sjxsytj:'实际稀释液体积',
ysmbrynd:'预设目标溶液浓度',
sjmbrynd:'实际目标溶液浓度',
ysmbrytj:'预设目标溶液体积',
sjmbrytj:'实际目标溶液体积',
},
// 生物样品内标工作液制备表
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:'稀释液',
rqcz: '容器材质',
cctj:'存储条件',
},
// 生物样品分析方法学样品制备表-准确度与精密度
sp008: {
title: '生物样品分析方法学样品制备表(准确度与精密度)',
clpbh: '处理批编号',
rqcz: '容器材质',
clsj: '处理时间',
xzjz: '选择基质',
bh: '编号',
ysry: '预设溶液',
sjry: '实际溶液',
yjryxql: '预计溶液吸取量',
sjryxql: '实际溶液吸取量',
yjjzxql: '预计基质吸取量',
sjjzxql: '实际基质吸取量',
hhwznd: '化合物终浓度'
},
// 生物样品分析方法学样品制备表-Recovery
sp009: {
title: '生物样品分析方法学样品制备表(Recovery)',
clpbh: '处理批编号',
rqcz: '容器材质',
clsj: '处理时间',
xzjz: '选择基质',
bh: '编号',
ysry: '预设溶液',
sjry: '实际溶液',
yjryxql: '预计溶液吸取量',
sjryxql: '实际溶液吸取量',
yjjzxql: '预计基质吸取量',
sjjzxql: '实际基质吸取量',
hhwznd: '化合物终浓度',
xzgzy: '选择工作液',
xzxsy: '选择稀释液',
yjgzyxql: '预计工作液吸取量',
sjgzyxql: '实际工作液吸取量',
yjxsyxql: '预计稀释液吸取量',
sjxsyxql: '实际稀释液吸取量'
},
//生物样品分析方法学样品制备表(全血稳定)
sp010: {
title: '生物样品分析方法学样品制备表(全血稳定)'
},
//生物样品分析方法学样品制备表(Solution stability)-生物样品分析方法学样品制备表-储备液和工作液稳定性
sp011: {
title: '生物样品分析方法学样品制备表(储备液和工作液稳定性)',
xzxsy: '选择稀释液',
yjxsyxql: '预计稀释液吸取量',
sjxsyxql: '实际稀释液吸取量'
},
//生物样品分析方法学样品制备表(Haemolysed matrix effect)-生物样品分析方法学样品制备表(溶血基质效应)
sp012: {
title: '生物样品分析方法学样品制备表(溶血基质效应)'
},
//生物样品分析方法学样品制备表(Matrix effect)-生物样品分析方法学样品制备表(基质效应)
sp013: {
title: '生物样品分析方法学样品制备表(基质效应)',
kbjzbh: '空白基质编号'
},
//生物样品分析方法学样品制备表(Selectivity)-生物样品分析方法学样品制备表(选择性和特异性)
sp014: {
title: '生物样品分析方法学样品制备表(选择性和特异性)'
},
//生物样品分析方法学样品制备表(Sample Size)-生物样品分析方法学样品制备表(最大样本数)
sp015: {
title: '生物样品分析方法学样品制备表(最大样本数)'
},
//生物样品分析方法学样品制备表(Dilution Integrity)- 生物样品分析方法学样品制备表(稀释可靠性)
sp016: {
title: '生物样品分析方法学样品制备表(稀释可靠性)',
bs: '倍数'
},
//生物样品分析方法学样品制备表(Stock solution comparison)- 生物样品分析方法学样品制备表(储备液对比)
sp017: {
title: '生物样品分析方法学样品制备表(储备液对比)'
},
//生物样品分析方法学质控配制表
sp018: {
title: '生物样品分析方法学质控配制表',
xzxsy: '选择稀释液'
}
}

+ 332
- 0
src/views/business/comps/template/comps/pcr/PCR001.vue View File

@ -0,0 +1,332 @@
<!-- PCR分析溶液配制记录表 -->
<template>
<div>
<div class="detail-container">
<div class="detail-title"><img src="@/assets/images/detail-title.png">{{ formData.bdmc ||
$t('template.pcr.pcr001.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">
<el-button class="print-btn" v-if="fillType === 'actFill'" type="primary"
@click="printTag">标签打印</el-button>
<BaseInfoFormPackage fieldItemLabel="template.common.operationSteps" ref="stepFormPackageRef"
:formConfig="stepFormConfig" @blur="onHandleBlur" :formData="formData" />
</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'
export default {
name: "PCR001",
components: { BaseInfoFormPackage, LineLabel, TableList, Step, CustomTable },
mixins: [templateMixin],
props: {
fillType: {
type: String,
default: 'preFill',
},
},
computed: {
//
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,
},
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,
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: {
targetName: {
label: 'template.common.targetSolutionName',
type: "input",
fillType: "preFill",
maxlength: 50
},
targetCode: {
label: 'template.common.targetSolutionCode',
type: "input",
subType: "span",
fillType: "preFill",
subKey: "targetCodeSn",
maxlength: 20
},
targetPreConcentration: {
label: 'template.common.targetPreConcentration',
type: "inputNumber",
subType: "select",
subKey: "targetPreConcentrationUnit",
fillType: "preFill",
subOptions: this.getDictOptions('business_nddw'),
maxlength: 10,
selectTo: "targetActConcentrationUnit",//
},
targetActConcentration: {
label: 'template.common.targetActConcentration',
type: "inputNumber",
subType: "select",
subKey: "targetActConcentrationUnit",
compareTo: "targetPreConcentration",//
fillType: "actFill",
subFillType: "preFill",
subOptions: this.getDictOptions('business_nddw'),
copyFrom: "targetPreConcentration",//
maxlength: 10
},
targetPreVolume: {
label: 'template.common.targetPreVolume',
type: "inputNumber",
subType: "select",
subKey: "targetPreVolumeUnit",
subOptions: this.getDictOptions('business_tjdw'),
fillType: "preFill",
maxlength: 10,
selectTo: "targetActVolumeUnit",//
},
targetActVolume: {
label: 'template.common.targetActVolume',
type: "inputNumber",
subType: "select",
subKey: "targetActVolumeUnit",
fillType: "actFill",
subFillType: "preFill",
subOptions: this.getDictOptions('business_tjdw'),
compareTo: "targetPreVolume",//
copyFrom: "targetPreVolume",//
maxlength: 10
},
effectivePeriod: {
label: 'template.common.effectivePeriod',
type: "inputNumber",
subType: "select",
subKey: "effectivePeriodUnit",
fillType: "preFill",
subOptions: this.getDictOptions('business_yxqdw'),
maxlength: 10
},
expireDate: {
label: 'template.common.expireDate',
type: "input",
},
}
}
]
},
},
data() {
return {
formData: {}
};
},
mounted() {
const formData = this.getFormDataByTemplateData();
if(!formData.targetCodeSn&& this.fillType === "actFill"){
this.getCode(formData);
}
},
methods: {
//
printTag() {
const printConfig = this.getBasePrintConfig();
const { storageCondition, targetCodeSn } = this.formData;
printConfig["存储条件"] = storageCondition;
printConfig["编号"] = targetCodeSn;
EventBus.$emit('showTagPrintDialog', { printConfig })
},
//
getCode: debounce(async function (v) {
const result = await getLatestSn({
count: 1,
pre:v.targetCode,
type:1
})
if (result.code == 200) {
this.$refs.stepFormPackageRef.updateFormData("targetCodeSn", result.data[0])
}
}, 100),
//
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>

Loading…
Cancel
Save