From 3935548984be1c9bc6560ee001ca6df39a4afc65 Mon Sep 17 00:00:00 2001
From: memorylkf <312904636@qq.com>
Date: Thu, 5 Feb 2026 10:22:43 +0800
Subject: [PATCH 01/10] =?UTF-8?q?feat:=20[=E6=93=8D=E4=BD=9C=E6=97=A5?=
=?UTF-8?q?=E5=BF=97]=20=E9=83=A8=E9=97=A8=E6=93=8D=E4=BD=9C=E6=97=A5?=
=?UTF-8?q?=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/system/dept/index.vue | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
index b996e66..ca7ee28 100644
--- a/src/views/system/dept/index.vue
+++ b/src/views/system/dept/index.vue
@@ -352,6 +352,9 @@ export default {
/** 修改按钮操作 */
handleUpdate(row,readonly) {
this.readonly = readonly
+ if(readonly){
+ this.saveSimpleLog({name:row.deptName,nameEn:row.deptName,jcmc:'部门详情',jcmcEn:'Department Detail'})
+ }
this.reset()
getDept(row.deptId).then(response => {
this.form = response.data
From 81194edecc68ae999c243dc74f49e016092557e6 Mon Sep 17 00:00:00 2001
From: HanLong <404402223@qq.com>
Date: Thu, 5 Feb 2026 11:10:52 +0800
Subject: [PATCH 02/10] =?UTF-8?q?feat:[=E6=A8=A1=E6=9D=BF=E7=AE=A1?=
=?UTF-8?q?=E7=90=86]PCR002?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/lang/en/template/pcr.js | 133 +++--
src/lang/zh/template/pcr.js | 130 +++--
.../business/comps/template/TemplateTable.vue | 6 +-
.../business/comps/template/comps/pcr/PCR002.vue | 330 ++++++++++++
.../comps/template/formConfig/PCRTableConfig.js | 574 +++++++++++++++++++++
5 files changed, 1064 insertions(+), 109 deletions(-)
create mode 100644 src/views/business/comps/template/comps/pcr/PCR002.vue
create mode 100644 src/views/business/comps/template/formConfig/PCRTableConfig.js
diff --git a/src/lang/en/template/pcr.js b/src/lang/en/template/pcr.js
index 1600c5b..6d8d914 100644
--- a/src/lang/en/template/pcr.js
+++ b/src/lang/en/template/pcr.js
@@ -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: {
diff --git a/src/lang/zh/template/pcr.js b/src/lang/zh/template/pcr.js
index 2cd6b64..cea497b 100644
--- a/src/lang/zh/template/pcr.js
+++ b/src/lang/zh/template/pcr.js
@@ -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: {
diff --git a/src/views/business/comps/template/TemplateTable.vue b/src/views/business/comps/template/TemplateTable.vue
index fc9455d..f8ac4da 100644
--- a/src/views/business/comps/template/TemplateTable.vue
+++ b/src/views/business/comps/template/TemplateTable.vue
@@ -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"
diff --git a/src/views/business/comps/template/comps/pcr/PCR002.vue b/src/views/business/comps/template/comps/pcr/PCR002.vue
new file mode 100644
index 0000000..f0f2022
--- /dev/null
+++ b/src/views/business/comps/template/comps/pcr/PCR002.vue
@@ -0,0 +1,330 @@
+
+
+
+
+

{{ formData.bdmc ||
+ $t('template.pcr.pcr002.title') }}

+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/business/comps/template/formConfig/PCRTableConfig.js b/src/views/business/comps/template/formConfig/PCRTableConfig.js
new file mode 100644
index 0000000..7745916
--- /dev/null
+++ b/src/views/business/comps/template/formConfig/PCRTableConfig.js
@@ -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'
+ }
+ }
+ }
+ ]
+}
From afb965531add126965197fb7712ea60fc96351fb Mon Sep 17 00:00:00 2001
From: "15881625488@163.com" <15881625488@163.com>
Date: Thu, 5 Feb 2026 11:39:52 +0800
Subject: [PATCH 03/10] =?UTF-8?q?fix:[=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86?=
=?UTF-8?q?]=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/Table.vue | 3 ++-
.../business/comps/template/comps/sp/SP00456.vue | 22 ++--------------------
2 files changed, 4 insertions(+), 21 deletions(-)
diff --git a/src/components/Template/Table.vue b/src/components/Template/Table.vue
index 194c8c7..e712cb0 100644
--- a/src/components/Template/Table.vue
+++ b/src/components/Template/Table.vue
@@ -15,7 +15,8 @@
- | {{ ditem[item.prop] }} |
+
+ {{item.prop=='ndz'? (ditem['nd']+ditem['nddw']):ditem[item.prop] }} |
diff --git a/src/views/business/comps/template/comps/sp/SP00456.vue b/src/views/business/comps/template/comps/sp/SP00456.vue
index ad62715..0ae9563 100644
--- a/src/views/business/comps/template/comps/sp/SP00456.vue
+++ b/src/views/business/comps/template/comps/sp/SP00456.vue
@@ -595,7 +595,7 @@ export default {
debugger
let tmpResource = []
if (this.fillType === "actFill") {
- //平行配置
+ //阶梯配置
if (content.ladderConfigs && content.ladderConfigs.length > 0) {
for (let i = 0; i < content.ladderConfigs.length; i++) {
let ladderConfigs = content.ladderConfigs[i]
@@ -689,7 +689,7 @@ export default {
}
}
}
- //阶梯配置
+ //平行配置
if (content.paralleConfigs && content.paralleConfigs.length > 0) {
for (let i = 0; i < content.paralleConfigs.length; i++) {
let paralleConfigs = content.paralleConfigs[i]
@@ -742,24 +742,6 @@ export default {
yxzq: stepTableFormData[j].targetSolutionCycle,
yxzqdw: stepTableFormData[j].targetSolutionCyclePrecision,
})
- //起始源溶液
- tmpResource.push({
- mc: null,
- bh: paralleConfigs.subStartSolution,
- ph: null,
- nd: null,
- nddw: null,
- ndz: null,
- ly: null,
- sxrq: null,
- kc: null,
- kcdw: null,
- type: 1,
- syl: stepTableFormData[j].actSolutionVolume,
- syldw: paralleConfigs.headerSelectFields.actSolutionVolumeUnit,
- yxzq: null,
- yxzqdw: null,
- })
//稀释液
tmpResource.push({
mc: null,
From 64d39048b05470d14d62f18182aba415c75aa668 Mon Sep 17 00:00:00 2001
From: memorylkf <312904636@qq.com>
Date: Thu, 5 Feb 2026 11:43:27 +0800
Subject: [PATCH 04/10] =?UTF-8?q?feat:=20[=E7=B3=BB=E7=BB=9F=E7=AE=A1?=
=?UTF-8?q?=E7=90=86]=20=E6=9D=83=E9=99=90=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/business/template/list.vue | 4 +-
src/views/system/dept/index.vue | 2 +-
src/views/system/dict/data.vue | 86 ++++++++++++++++---------------
src/views/system/dict/index.vue | 99 ++++++++++++++++++++----------------
src/views/system/role/index.vue | 6 +--
5 files changed, 106 insertions(+), 91 deletions(-)
diff --git a/src/views/business/template/list.vue b/src/views/business/template/list.vue
index 200c27c..f8d5d24 100644
--- a/src/views/business/template/list.vue
+++ b/src/views/business/template/list.vue
@@ -62,7 +62,7 @@
{{ $t('page.system.template.bj') }}
- {{ $t('page.system.template.detail') }}
+ {{ $t('page.system.template.detail') }}
@@ -264,6 +264,8 @@ export default {
});
},
bdpz(row) {
+ this.saveSimpleLog({name:row.name+'('+row.showSn+')',nameEn:row.name+'('+row.showSn+')',jcmc:'模板详情',jcmcEn:'Function Detail'})
+
this.tableDialog.title = '表单配置'
this.tableDialog.sn=row.sn
this.tableDialog.visible=true
diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
index ca7ee28..8bbab70 100644
--- a/src/views/system/dept/index.vue
+++ b/src/views/system/dept/index.vue
@@ -106,7 +106,7 @@
v-hasPermi="['system:dept:remove']"
>{{$t('page.system.dept.delete')}}
{{$t('page.system.dept.detail')}}
diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data.vue
index 4e03317..dff2cec 100644
--- a/src/views/system/dict/data.vue
+++ b/src/views/system/dict/data.vue
@@ -11,15 +11,15 @@
/>
-
+
-
+
- 搜索
+ 查询
重置
@@ -43,10 +43,10 @@
icon="el-icon-plus"
@click="handleAdd"
- v-hasPermi="['system:dict:add']"
+ v-hasPermi="['system:dict:add','system:dict:edit']"
>新增
-
+
-
-
-
+
+
+
{{ scope.row.dictLabel }}
{{ scope.row.dictLabel }}
-
-
-
+
+
+
-
+
修改
+ >编辑
删除
+
+ 详情
+
@@ -146,19 +152,19 @@
-
-
+
+
-
-
+
+
-
+
+
+
-
-
-
-
+
-
+
-