From 0924888464844cdca767e0bb0ad2e7bb5f4dc268 Mon Sep 17 00:00:00 2001
From: memorylkf <312904636@qq.com>
Date: Sat, 28 Feb 2026 15:17:41 +0800
Subject: [PATCH 01/17] =?UTF-8?q?feat:=20[=E6=AD=A5=E9=AA=A4=E7=AE=A1?=
=?UTF-8?q?=E7=90=86]=20=E6=96=B0=E5=A2=9E=E6=AD=A5=E9=AA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/HandleFormItem.vue | 2 +-
src/components/Template/Step.vue | 129 ++++++++++++++-------
src/components/Template/StepComponents/ry/jr.vue | 36 ++++++
src/components/Template/StepComponents/ry/kb.vue | 36 ++++++
.../Template/StepComponents/ry/kbsjgsp.vue | 52 +++++++++
src/components/Template/StepComponents/ry/kbyq.vue | 52 +++++++++
src/views/business/template/list.vue | 1 +
7 files changed, 262 insertions(+), 46 deletions(-)
create mode 100644 src/components/Template/StepComponents/ry/jr.vue
create mode 100644 src/components/Template/StepComponents/ry/kb.vue
create mode 100644 src/components/Template/StepComponents/ry/kbsjgsp.vue
create mode 100644 src/components/Template/StepComponents/ry/kbyq.vue
diff --git a/src/components/Template/HandleFormItem.vue b/src/components/Template/HandleFormItem.vue
index 7ebe2d8..45edc07 100644
--- a/src/components/Template/HandleFormItem.vue
+++ b/src/components/Template/HandleFormItem.vue
@@ -16,7 +16,7 @@
+ @visible-change="onSelectBlur" @change="onInputChange" filterable>
diff --git a/src/components/Template/Step.vue b/src/components/Template/Step.vue
index b378158..fcaac4e 100644
--- a/src/components/Template/Step.vue
+++ b/src/components/Template/Step.vue
@@ -56,6 +56,7 @@ import Jb from "./StepComponents/ry/jb.vue";//溶液-搅拌
import Jrjb from "./StepComponents/ry/jrjb.vue";//溶液-加热搅拌
import Cs from "./StepComponents/ry/cs.vue";//溶液-超声
import Sy from "./StepComponents/ry/sy.vue";//溶液-水浴
+import Zy from "./StepComponents/ry/zy.vue";//溶液-正压
import Dc from "./StepComponents/ry/dc.vue";//溶液-氮吹
import Jd from "./StepComponents/ry/jd.vue";//溶液-解冻
import Jz from "./StepComponents/ry/jz.vue";//溶液-静置
@@ -73,53 +74,63 @@ import Fs from "./StepComponents/ry/fs.vue";//溶液-复苏
import Fb from "./StepComponents/ry/fb.vue";//溶液-封板
import Zlfz from "./StepComponents/ry/zlfz.vue";//溶液-质量分装
-
-
-const stepTypes = [
- { label: '操作地点', value: 'czdd' },
- { label: '操作方法', value: 'czhj' },
- { label: '选择容器', value: 'xzrq' },
- { label: '加入溶液', value: 'jrry' },
- { label: '天平校验(单点)', value: 'tpjydd' },
- { label: '天平校验(双点)', value: 'tpjysd' },
- { label: '取用物质', value: 'qywz' },
- { label: '称量(非传值)', value: 'clfcz' },
- { label: '称量(传值)', value: 'clcz' },
- { label: '标定(体积)', value: 'bdtj' },
- { label: '标定(质量)', value: 'bdzl' },
- { label: '调节PH(传值)', value: 'tjphcz' },
- { label: '调节PH(非传值)', value: 'tjphfcz' },
- { label: '离心', value: 'lx' },
- { label: '恒温混匀', value: 'hwhy' },
- { label: '振摇混匀', value: 'zyhy' },
- { label: '涡旋混匀', value: 'wxhy' },
- { label: '颠倒混匀', value: 'ddhy' },
- { label: '研磨', value: 'ym' },
- { label: '搅拌', value: 'jb' },
- { label: '加热搅拌', value: 'jrjb' },
- { label: '超声', value: 'cs' },
- { label: '水浴', value: 'sy' },
- { label: '氮吹', value: 'dc' },
- { label: '解冻', value: 'jd' },
- { label: '静置', value: 'jz' },
- { label: '过滤(自动)', value: 'glzd' },
- { label: '过滤(手动)', value: 'glsd' },
- { label: '孵育', value: 'fy' },
- { label: '取出原药', value: 'qcyy' },
- { label: '复溶(多容器)', value: 'frdrq' },
- { label: '复溶', value: 'fr' },
- { label: '合并', value: 'hb' },
- { label: '染色', value: 'rs' },
- { label: '计数', value: 'js' },
- { label: '灭菌', value: 'mj' },
- { label: '复苏', value: 'fs' },
- { label: '封板', value: 'fb' },
- // { label: '质量分装', value: 'zlfz' },
+//罗开凡新增
+import kbyq from "./StepComponents/ry/kbyq.vue";//溶液-空白仪器
+import kbsjgsp from "./StepComponents/ry/kbsjgsp.vue";//溶液-空白(试剂/供试品)
+import kb from "./StepComponents/ry/kb.vue";//溶液-空白
+import jr from "./StepComponents/ry/jr.vue";//溶液-加热
+//罗开凡新增
+
+
+import { public_templateStepList } from '@/api/business/public/public';
+
+
+// const stepTypes = [
+// { label: '操作地点', value: 'czdd' },
+// { label: '操作方法', value: 'czhj' },
+// { label: '选择容器', value: 'xzrq' },
+// { label: '加入溶液', value: 'jrry' },
+// { label: '天平校验(单点)', value: 'tpjydd' },
+// { label: '天平校验(双点)', value: 'tpjysd' },
+// { label: '取用物质', value: 'qywz' },
+// { label: '称量(非传值)', value: 'clfcz' },
+// { label: '称量(传值)', value: 'clcz' },
+// { label: '标定(体积)', value: 'bdtj' },
+// { label: '标定(质量)', value: 'bdzl' },
+// { label: '调节PH(传值)', value: 'tjphcz' },
+// { label: '调节PH(非传值)', value: 'tjphfcz' },
+// { label: '离心', value: 'lx' },
+// { label: '恒温混匀', value: 'hwhy' },
+// { label: '振摇混匀', value: 'zyhy' },
+// { label: '涡旋混匀', value: 'wxhy' },
+// { label: '颠倒混匀', value: 'ddhy' },
+// { label: '研磨', value: 'ym' },
+// { label: '搅拌', value: 'jb' },
+// { label: '加热搅拌', value: 'jrjb' },
+// { label: '超声', value: 'cs' },
+// { label: '水浴', value: 'sy' },
+// { label: '正压', value: 'zy' },
+// { label: '氮吹', value: 'dc' },
+// { label: '解冻', value: 'jd' },
+// { label: '静置', value: 'jz' },
+// { label: '过滤(自动)', value: 'glzd' },
+// { label: '过滤(手动)', value: 'glsd' },
+// { label: '孵育', value: 'fy' },
+// { label: '取出原药', value: 'qcyy' },
+// { label: '复溶(多容器)', value: 'frdrq' },
+// { label: '复溶', value: 'fr' },
+// { label: '合并', value: 'hb' },
+// { label: '染色', value: 'rs' },
+// { label: '计数', value: 'js' },
+// { label: '灭菌', value: 'mj' },
+// { label: '复苏', value: 'fs' },
+// { label: '封板', value: 'fb' },
+// { label: '质量分装', value: 'zlfz' },
-];
+// ];
export default {
- inject: ['templateFillType'],
+ inject: ['templateFillType','templateData'],
name: 'Step',
props: {
formData: {
@@ -130,7 +141,7 @@ export default {
data() {
return {
stepSelectConfig: {
- options: stepTypes,
+ options: [],
fillType: "preFill",
placeholder: "请选择步骤类型"
},
@@ -164,6 +175,7 @@ export default {
Jrjb,
Cs,
Sy,
+ Zy,
Dc,
Jd,
Jz,
@@ -180,6 +192,12 @@ export default {
Fs,
Fb,
Zlfz,
+ //罗开凡新增
+ kbyq,
+ kbsjgsp,
+ kb,
+ jr
+ //罗开凡新增
},
computed: {
stepComponentMap() {
@@ -207,6 +225,7 @@ export default {
'jb': 'Jb',
'jrjb': 'Jrjb',
'sy': 'Sy',
+ 'zy': 'Zy',
'cs': 'Cs',
'dc': 'Dc',
'jd': 'Jd',
@@ -224,6 +243,14 @@ export default {
'fs': 'Fs',
'fb': 'Fb',
'zlfz': 'Zlfz',
+
+ //罗开凡新增
+ 'kbyq': 'kbyq',
+ 'kbsjgsp': 'kbsjgsp',
+ 'kb': 'kb',
+ 'jr': 'jr',
+ // 'fz': 'fz',
+ //罗开凡新增
}
}
return this.componentMap
@@ -242,6 +269,7 @@ export default {
// // 默认添加一个步骤
// this.addStep()
// }
+ this.getStepList()
},
watch: {
// steps: {
@@ -263,6 +291,17 @@ export default {
}
},
methods: {
+ getStepList(){
+ debugger
+ public_templateStepList({templateId:this.templateData.templateId}).then(response => {
+ let options = []
+ _.forEach(response.data,(item)=>{
+ options.push({ label: item.name, value: item.sn })
+ })
+ debugger
+ this.stepSelectConfig.options = options
+ });
+ },
isShowAddStep() {
return this.templateFillType === 'preFill';
},
diff --git a/src/components/Template/StepComponents/ry/jr.vue b/src/components/Template/StepComponents/ry/jr.vue
new file mode 100644
index 0000000..5cdb4c9
--- /dev/null
+++ b/src/components/Template/StepComponents/ry/jr.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Template/StepComponents/ry/kb.vue b/src/components/Template/StepComponents/ry/kb.vue
new file mode 100644
index 0000000..a1545c9
--- /dev/null
+++ b/src/components/Template/StepComponents/ry/kb.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Template/StepComponents/ry/kbsjgsp.vue b/src/components/Template/StepComponents/ry/kbsjgsp.vue
new file mode 100644
index 0000000..4f938e5
--- /dev/null
+++ b/src/components/Template/StepComponents/ry/kbsjgsp.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Template/StepComponents/ry/kbyq.vue b/src/components/Template/StepComponents/ry/kbyq.vue
new file mode 100644
index 0000000..40f25ff
--- /dev/null
+++ b/src/components/Template/StepComponents/ry/kbyq.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/business/template/list.vue b/src/views/business/template/list.vue
index 80ab658..5b017a6 100644
--- a/src/views/business/template/list.vue
+++ b/src/views/business/template/list.vue
@@ -317,6 +317,7 @@ export default {
this.tableDialog.title = '表单配置'
this.tableDialog.sn = row.sn
this.tableDialog.templateData.bdmc =this.$i18n.locale === 'zh_CN'? row.name:row.nameEn
+ this.tableDialog.templateData.templateId = row.id
this.tableDialog.visible = true
},
getList() {
From c36c1f86e7e4b9007c077a2aace55192678adce5 Mon Sep 17 00:00:00 2001
From: memorylkf <312904636@qq.com>
Date: Sat, 28 Feb 2026 16:48:07 +0800
Subject: [PATCH 02/17] =?UTF-8?q?feat:=20[=E6=AD=A5=E9=AA=A4=E7=AE=A1?=
=?UTF-8?q?=E7=90=86]=20=E8=A1=A8=E9=85=8D=E7=BD=AE=E6=AD=A5=E9=AA=A4?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/Step.vue | 10 ++++-
.../Template/StepComponents/b/jrry_b.vue | 46 ++++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
create mode 100644 src/components/Template/StepComponents/b/jrry_b.vue
diff --git a/src/components/Template/Step.vue b/src/components/Template/Step.vue
index fcaac4e..b0638a8 100644
--- a/src/components/Template/Step.vue
+++ b/src/components/Template/Step.vue
@@ -81,6 +81,8 @@ import kb from "./StepComponents/ry/kb.vue";//溶液-空白
import jr from "./StepComponents/ry/jr.vue";//溶液-加热
//罗开凡新增
+//表配置
+import jrry_b from './StepComponents/b/jrry_b.vue';//表配置-加入溶液
import { public_templateStepList } from '@/api/business/public/public';
@@ -196,8 +198,11 @@ export default {
kbyq,
kbsjgsp,
kb,
- jr
+ jr,
//罗开凡新增
+
+ //表配置
+ jrry_b,
},
computed: {
stepComponentMap() {
@@ -251,6 +256,9 @@ export default {
'jr': 'jr',
// 'fz': 'fz',
//罗开凡新增
+
+ //标配配置
+ 'jrry_b': 'jrry_b',
}
}
return this.componentMap
diff --git a/src/components/Template/StepComponents/b/jrry_b.vue b/src/components/Template/StepComponents/b/jrry_b.vue
new file mode 100644
index 0000000..b991793
--- /dev/null
+++ b/src/components/Template/StepComponents/b/jrry_b.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
From 3dfb33a5b63c7051afdfe9620766a965e69e42e3 Mon Sep 17 00:00:00 2001
From: luojie <125330818@qq.com>
Date: Sun, 1 Mar 2026 12:35:35 +0800
Subject: [PATCH 03/17] =?UTF-8?q?feat:[=E6=A8=A1=E6=9D=BF=E7=AE=A1?=
=?UTF-8?q?=E7=90=86][=E6=9A=82=E5=AD=98]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/BaseInfoFormPackage.vue | 31 +++++++++++++---------
src/components/Template/HandleFormItem.vue | 25 ++++++++++++++++-
.../business/comps/template/comps/yp/YP003.vue | 22 +++++++++++++--
3 files changed, 62 insertions(+), 16 deletions(-)
diff --git a/src/components/Template/BaseInfoFormPackage.vue b/src/components/Template/BaseInfoFormPackage.vue
index 7d17fa5..7692db7 100644
--- a/src/components/Template/BaseInfoFormPackage.vue
+++ b/src/components/Template/BaseInfoFormPackage.vue
@@ -114,13 +114,7 @@
@update:error="errors[key] = false" @resetRecord="resetRecord(key)" :item="sItem"
:value="formFields[key]" />
-
- onAttachmentChange(key, e)"
- :error="errors[key]" @update:error="errors[key] = false"
- :orange-bg="orangeBgFields[key]" />
-
+
+
+ onFqyqChange(key, e)"
+ :error="errors[key]" @update:error="errors[key] = false" />
+
@@ -275,12 +275,6 @@
@update:error="errors[key] = false" @resetRecord="resetRecord(key)" :item="sItem"
:value="formFields[key]" />
-
- onAttachmentChange(key, e)" :error="errors[key]"
- @update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
-
\ No newline at end of file
diff --git a/src/components/Template/HandleFormItem.vue b/src/components/Template/HandleFormItem.vue
index 25be34a..b64b8eb 100644
--- a/src/components/Template/HandleFormItem.vue
+++ b/src/components/Template/HandleFormItem.vue
@@ -109,6 +109,25 @@
+
+
+ onFqyqChange(val, 'yyyy/MM/DD')">
+ 是
+
+
+
+
+
+
+
+
+ onFqyqChange(val, 'yyyy/MM/DD')">
+ 否
+
+
+
@@ -1168,7 +1187,7 @@ export default {
if (this.getDisabled()) {
return ""
}
- if (this.regentType.includes(type) || type === "clickable") {
+ if (this.regentType.includes(type) || type === "clickable" || type === "fqyq") {
return this.$t("template.common.pleaseSelect")
}
let prex = "template.common.pleaseFillIn"
@@ -1731,4 +1750,8 @@ export default {
}
}
}
+.fqyq-input{
+ width: 500px;
+ margin-left: 10px;
+}
\ No newline at end of file
diff --git a/src/views/business/comps/template/comps/yp/YP003.vue b/src/views/business/comps/template/comps/yp/YP003.vue
index 87a7963..0b9e5e8 100644
--- a/src/views/business/comps/template/comps/yp/YP003.vue
+++ b/src/views/business/comps/template/comps/yp/YP003.vue
@@ -31,6 +31,8 @@
+
@@ -65,6 +67,22 @@ export default {
},
},
computed: {
+ // 分取要求
+ fqyqConig() {
+ return [
+ {
+ type: "cellItem",
+ config: {
+ fqyq: {
+ label: "template.yp.yp003.sfyfzyq",
+ type: "fqyq",
+ fillType: "actFill",
+ span: 1,
+ }
+ }
+ }
+ ]
+ },
// 备注表单配置
remarkConig() {
return [
@@ -202,11 +220,11 @@ export default {
},
//获取已填写的表单数据
getFilledFormData() {
- return this.getFilledFormDataByRefs(["baseInfoRef", "tableRef", "stepRef", "remarkRef"])
+ return this.getFilledFormDataByRefs(["baseInfoRef", "tableRef", "stepRef", "fqyqRef","remarkRef"])
},
//获取填写完成的表单数据
async getFormData() {
- let content = await this.validFormFields(["baseInfoRef", "tableRef", "stepRef", "remarkRef"]);
+ let content = await this.validFormFields(["baseInfoRef", "tableRef", "stepRef", "fqyqRef","remarkRef"]);
return content;
},
getResource() {
From 6cda336a741755559c2168fac59cf9bc6ef10f28 Mon Sep 17 00:00:00 2001
From: luojie <125330818@qq.com>
Date: Sun, 1 Mar 2026 21:11:55 +0800
Subject: [PATCH 04/17] =?UTF-8?q?feat:[=E6=A8=A1=E6=9D=BF=E7=AE=A1?=
=?UTF-8?q?=E7=90=86][=E6=9A=82=E5=AD=98]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/HandleFormItem.vue | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/src/components/Template/HandleFormItem.vue b/src/components/Template/HandleFormItem.vue
index b64b8eb..d682873 100644
--- a/src/components/Template/HandleFormItem.vue
+++ b/src/components/Template/HandleFormItem.vue
@@ -110,23 +110,19 @@
-
- onFqyqChange(val, 'yyyy/MM/DD')">
- 是
-
-
-
-
-
-
-
-
- onFqyqChange(val, 'yyyy/MM/DD')">
- 否
-
-
+
+
+ 否
+
From 20ee6d90aff15ab1d10ae88d0d7542af48144375 Mon Sep 17 00:00:00 2001
From: luojie <125330818@qq.com>
Date: Sun, 1 Mar 2026 22:30:01 +0800
Subject: [PATCH 05/17] =?UTF-8?q?feat:[=E6=A8=A1=E6=9D=BF=E7=AE=A1?=
=?UTF-8?q?=E7=90=86][yp003]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/HandleFormItem.vue | 98 ++++++++++++++++++----
.../Template/mixins/formPackageMixins.js | 87 ++++++++++++-------
2 files changed, 142 insertions(+), 43 deletions(-)
diff --git a/src/components/Template/HandleFormItem.vue b/src/components/Template/HandleFormItem.vue
index d682873..8ded2d0 100644
--- a/src/components/Template/HandleFormItem.vue
+++ b/src/components/Template/HandleFormItem.vue
@@ -110,12 +110,13 @@
-
-
+
+
是
-
-
-
+
+
+
是否在规定时间完成
+
@@ -253,7 +254,7 @@ export default {
},
data() {
let initialValue = this.value;
- let initialOtherValues = {}, checkboxTagList = [];
+ let initialOtherValues = {}, checkboxTagList = [], fqyqValue = {};
// 如果是checkboxList类型且value是对象格式
if (this.type === 'checkboxList' && this.value && typeof this.value === 'object') {
@@ -267,7 +268,9 @@ export default {
checked: tag.checked,
tagValue: tag.tagValue || ''
}));
- }
+ } else if (this.type === 'fqyq' && !this.value) {
+ initialValue = {mainRadio: '', subRadio: '',inputValue:""};
+ }
return {
inputValue: initialValue,
oldValue: initialValue, // 记录上一次的值
@@ -284,6 +287,8 @@ export default {
checkboxValue: this.getChecked(),//是否选中
checkboxTagList: checkboxTagList, // checkboxTag类型的列表数据
oldCheckboxTagList: JSON.parse(JSON.stringify(checkboxTagList)), // 记录上一次的checkboxTagList
+ fqyqValue: initialValue, // fqyq类型的值
+ oldFqyqValue: {...initialValue}, // 记录上一次的fqyq值
uuid: getuuid(), // 唯一标识符,用于EventBus事件匹配
regentType: ['sj', 'gsp', 'mix', 'xj', 'xb', 'gyzj', 'mjy', 'yq', 'jcb', 'qxbd'], //试剂/仪器/供试品等类型
selectRegentInfo: {},//选择的试剂/仪器/供试品等信息
@@ -295,6 +300,7 @@ export default {
pendingUploadFile: null, // 用于存储待上传的文件
pendingRemoveFile: null, // 用于存储待删除的文件
currentTagIndex:-1,//当前选中的checkboxTag索引
+ currentFqyqType:'',//当前选中的fqyq操作的类型
}
},
watch: {
@@ -309,7 +315,14 @@ export default {
checked: tag.checked,
tagValue: tag.tagValue || ''
}));
- } else {
+ } else if (this.type === 'fqyq' && newVal && typeof newVal === 'object') {
+ // fqyq类型
+ this.fqyqValue = {
+ mainRadio: newVal.mainRadio || '',
+ inputValue: newVal.inputValue || '',
+ subRadio: newVal.subRadio || ''
+ };
+ } else {
this.inputValue = this.type === 'checkboxList' && !Array.isArray(newVal) ? [] : newVal;
}
}
@@ -346,7 +359,7 @@ export default {
},
methods: {
getFlexClass() {
- const noFlexArr = ["radio", "checkboxTag"]
+ const noFlexArr = ["radio", "checkboxTag","fqyq"]
return noFlexArr.includes(this.type) ? '' : 'flex1'
},
getDecimalDigits() {
@@ -665,13 +678,14 @@ export default {
},
getFillTypeStyle(type) {
const { fillType } = this.item;
+ const filterType = ["attachment","checkboxTag","fqyq"]
const typeObj = {
actFill: "orange-border",//实际填写的边框颜色
green: "green-border",
preFill: "blue-border",//预填写的边框颜色
}
// 如果有错误状态,返回红色边框样式,覆盖原有的边框颜色
- if (this.error && this.type !== "attachment" && this.type !== "checkboxTag") {
+ if (this.error && !filterType.includes(this.type)) {
return "error-border";
}
return typeObj[fillType] || ""
@@ -857,6 +871,21 @@ export default {
this.$emit('input', [...this.checkboxTagList]);
this.$emit('change', [...this.checkboxTagList]);
},
+
+ // fqyq 主radio变化处理
+ onFqyqRadioChange(val, radioType) {
+ this.fqyqValue[radioType] = val;
+ this.currentFqyqType = radioType;
+ this.onCommonHandleSaveRecord();
+ },
+
+ // fqyq 输入框失去焦点
+ onFqyqInputBlur(e) {
+ this.fqyqValue.inputValue = e.target.value;
+ this.currentFqyqType = 'inputValue';
+ this.onCommonHandleSaveRecord(this.fqyqValue.inputValue);
+ },
+
// 统一处理失去焦点事件
onBlur(e) {
this.onCommonHandleSaveRecord(e.target.value);
@@ -889,6 +918,16 @@ export default {
this.visible = true;
}
},
+ getFqyqInfo(){
+ const { mainRadio,inputValue,subRadio } = this.fqyqValue;
+ const { mainRadio: oldMainRadio,inputValue: oldInputValue,subRadio: oldSubRadio } = this.oldFqyqValue;
+ const o ={
+ "mainRadio":{oldValue:oldMainRadio,newValue:mainRadio,des:""},
+ "inputValue":{oldValue:oldInputValue,newValue:inputValue,des:""},
+ "subRadio":{oldValue:oldSubRadio,newValue:subRadio,des:"是否在规定时间完成:"}
+ }
+ return o[this.currentFqyqType];
+ },
async onCommonHandleSaveRecord(val) {
const isEmpty = this.isValueEmpty(this.inputValue);
if (this.error && !isEmpty) {
@@ -945,11 +984,15 @@ export default {
const oldTag = this.oldCheckboxTagList[this.currentTagIndex] || {};
isSame = this.isEqual(oldTag.checked, currentTag.checked);
isOldValueEmpty = this.isValueEmpty(oldTag.checked);
-
- }else{
+ } else if (this.type === "fqyq") {
+ const current = this.getFqyqInfo();
+ isSame = this.isEqual(current.oldValue,current.newValue);
+ isOldValueEmpty = this.isValueEmpty(current.oldValue);
+ } else {
isSame = this.isEqual(this.oldValue, this.inputValue)
isOldValueEmpty = this.isValueEmpty(this.oldValue);
}
+ console.log(isSame,isOldValueEmpty,this.fqyqValue,this.oldFqyqValue,"isSame")
if (isSame) {
return;
}
@@ -981,6 +1024,10 @@ export default {
this.checkboxTagList = JSON.parse(JSON.stringify(this.oldCheckboxTagList));
oldValue = [...this.checkboxTagList];
}
+ } else if (this.type === "fqyq") {
+ // 如果没有指定字段,回退整个对象
+ this.fqyqValue = JSON.parse(JSON.stringify(this.oldFqyqValue));
+ oldValue = { ...this.fqyqValue };
}
this.inputValue = this.oldValue;
this.$emit('input', oldValue); // 触发 v-model 更新
@@ -1008,8 +1055,12 @@ export default {
const currentTag = this.checkboxTagList[this.currentTagIndex] || {};
recordOldVlaue = `${oldTag.tagValue || ''}:${oldTag.checked ? '勾选' : '未勾选'}`;
recordValue = `${currentTag.tagValue || ''}:${currentTag.checked ? '勾选' : '未勾选'}`;
- isModify = oldTag.checked !== undefined
-
+ isModify = oldTag.checked !== undefined;
+ } else if (this.type === "fqyq") {
+ const current = this.getFqyqInfo();
+ recordOldVlaue = `${current.des+current.oldValue}`;
+ recordValue = `${current.des+current.newValue}`;
+ isModify = !!this.oldFqyqValue.mainRadio
}
const record = {
...baseInfo,
@@ -1040,6 +1091,9 @@ export default {
// 如果没有指定tagIndex,更新整个数组
this.oldCheckboxTagList = JSON.parse(JSON.stringify(this.checkboxTagList));
}
+ } else if (this.type === "fqyq") {
+ // 如果没有指定字段,更新整个对象
+ this.oldFqyqValue = JSON.parse(JSON.stringify(this.fqyqValue));
}
let value = this.inputValue;
if (this.type === 'checkboxList') {
@@ -1049,6 +1103,8 @@ export default {
};
} else if (this.type === "checkboxTag") {
value = [...this.checkboxTagList];
+ } else if (this.type === "fqyq") {
+ value = { ...this.fqyqValue };
}
if (this.type === "button") {
this.$emit('clickButton', this.item, this.inputValue, data);
@@ -1692,6 +1748,9 @@ export default {
border-color: #f9c588;
}
}
+ .el-radio__inner {
+ border-color: #f9c588;
+ }
}
}
@@ -1748,6 +1807,15 @@ export default {
}
.fqyq-input{
width: 500px;
- margin-left: 10px;
+ margin-right:10px;
+}
+.mb-10{
+ margin-bottom: 10px;
+}
+.fs-14{
+ font-size: 14px;
+}
+.mr-10{
+ margin-right: 10px;
}
\ No newline at end of file
diff --git a/src/components/Template/mixins/formPackageMixins.js b/src/components/Template/mixins/formPackageMixins.js
index 4af3cb3..ed74c6d 100644
--- a/src/components/Template/mixins/formPackageMixins.js
+++ b/src/components/Template/mixins/formPackageMixins.js
@@ -54,7 +54,7 @@ export default {
}
this.onValueChangeCompareTo(key, val);
this.formFields[key] = val;
- this.$emit("select", { key, value: val, type,...this.formFields });
+ this.$emit("select", { key, value: val, type, ...this.formFields });
// 清除该表单项的错误状态
if (this.errors[key]) {
this.$set(this.errors, key, false);
@@ -62,22 +62,22 @@ export default {
},
//试剂/仪器等弹窗提交
- onRegentSubmit(data,inputValue,key,item){
- this.updateFormData(key,inputValue);
- this.$emit("onRegentSubmit", {selectInfo:data,inputValue,key,config:item});
+ onRegentSubmit(data, inputValue, key, item) {
+ this.updateFormData(key, inputValue);
+ this.$emit("onRegentSubmit", { selectInfo: data, inputValue, key, config: item });
},
- getRegentItem(item,fieldCode="type"){
- const type = item[fieldCode] ;
- console.log(item,"type")
+ getRegentItem(item, fieldCode = "type") {
+ const type = item[fieldCode];
+ console.log(item, "type")
return {
label: "",
type,
fillType: item.subFillType || item.fillType,
parentLabel: item.label,
- filledCodes:item.filledCodes,
+ filledCodes: item.filledCodes,
}
},
-
+
handleClickButton(key) {
this.$emit("clickButton", key)
},
@@ -96,7 +96,7 @@ export default {
this.$set(this.errors, key, false);
}
},
- //批量更新表单数据
+ //批量更新表单数据
batchUpdateFormData(data) {
const cloneFormFields = JSON.parse(JSON.stringify(this.formFields));
Object.keys(data).forEach(key => {
@@ -107,29 +107,29 @@ export default {
this.$set(this.errors, key, false);
}
})
-
+
},
//更新表单数据
- updateFormData(key, value,data) {
- const {isUpdateRecord,signData} = data || {};
+ updateFormData(key, value, data) {
+ const { isUpdateRecord, signData } = data || {};
// 深拷贝当前表单数据,避免直接修改原数据
const cloneFormFields = JSON.parse(JSON.stringify(this.formFields));
-
+
this.oldFormFields[key] = cloneFormFields[key];
this.formFields[key] = value;
// 清除该表单项的错误状态
if (this.errors[key]) {
this.$set(this.errors, key, false);
}
-
- if(isUpdateRecord){
+
+ if (isUpdateRecord) {
setTimeout(() => {
- this.$refs[key][0].handleUpdateRecord(signData,{oldValue:this.oldFormFields[key],inputValue:value});
+ this.$refs[key][0].handleUpdateRecord(signData, { oldValue: this.oldFormFields[key], inputValue: value });
}, 10);
}
},
-
-
+
+
handleClickable(sItem, key) {
if (this.templateFillType !== 'actFill') {
return
@@ -177,7 +177,7 @@ export default {
fillType: sItem.subFillType || sItem.fillType,
parentLabel: sItem.label,
}
- if(sItem.subDisabled){
+ if (sItem.subDisabled) {
config.disabled = sItem.subDisabled;
}
return config;
@@ -215,14 +215,14 @@ export default {
// 处理特殊字段 - "其他"字段
if (currentConfig.otherCode) {
- const { otherCode,type } = currentConfig;
+ const { otherCode, type } = currentConfig;
//如果是更新的话,优先使用formFields中的值
if (update) {
result[otherCode] = formFields[otherCode] || formData[otherCode] || '';
} else {
result[otherCode] = formData[otherCode] || formFields[otherCode] || '';
}
- config[otherCode] = { label: "template.common.other",parentType:type, parentKey: key, type: "input", fillType: currentConfig.fillType }
+ config[otherCode] = { label: "template.common.other", parentType: type, parentKey: key, type: "input", fillType: currentConfig.fillType }
}
if (currentConfig.subKey) {
const { subKey } = currentConfig;
@@ -311,17 +311,17 @@ export default {
if (!isSelectedOther) {//如果其他选项没有被选择,清空其他字段
formFields[o.otherCode] = "";
}
- }else if(o.type === "radioAndOther"){
- const isSelectedOther = this.isShowOtherByRadioAndOther(formFields[key]);
+ } else if (o.type === "radioAndOther") {
+ const isSelectedOther = this.isShowOtherByRadioAndOther(formFields[key]);
if (!isSelectedOther) {//如果其他选项没有被选择,清空其他字段
formFields[o.otherCode] = "";
}
}
}
- if(o.type === "attachment"){
+ if (o.type === "attachment") {
const attValue = formFields[key];
- if(!attValue || attValue == "[]"){
+ if (!attValue || attValue == "[]") {
errors.push({
field: key,
label: o.label,
@@ -329,13 +329,44 @@ export default {
});
this.$set(this.errors, key, true);
}
+ } else if (o.type === "fqyq") {
+ const fqyqValue = formFields[key];
+ const {mainRadio, subRadio,inputValue} = fqyqValue;
+ if (!mainRadio) {
+ errors.push({
+ field: key,
+ label: o.label,
+ error: "请选择是否在规定时间完成"
+ });
+ this.$set(this.errors, key, true);
+ } else {
+ if (mainRadio==="是") {
+ if (!subRadio) {
+ errors.push({
+ field: key,
+ label: o.label,
+ error: "请选择是否在规定时间完成"
+ });
+ this.$set(this.errors, key, true);
+ }else if(!inputValue){
+ errors.push({
+ field: key,
+ label: o.label,
+ error: "请输入信息"
+ });
+ this.$set(this.errors, key, true);
+ }
+ }
+ }
+
+ continue
}
if (this.isValueEmpty(formFields[key])) {
// 其他字段需要判断是否显示再校验
if (o.label === "template.common.other" && !this.isShowOther(formFields[o.parentKey]) && o.parentType !== "radioAndOther") {
continue
}
- if (o.type === "radioAndOther" &&o.label === "template.common.other" && !this.isShowOtherByRadioAndOther(formFields[o.parentKey])) {
+ if (o.type === "radioAndOther" && o.label === "template.common.other" && !this.isShowOtherByRadioAndOther(formFields[o.parentKey])) {
continue
}
//span的字段不校验
@@ -432,7 +463,7 @@ export default {
if (this.errors[key]) {
this.$set(this.errors, key, false);
}
-
+
// 如果是checkboxList类型,需要处理otherValues
if (val && typeof val === 'object' && val.otherValues) {
// 将otherValues中的每个值也保存到formFields中
From ccb9d24c7beaec9e81de336068a659c667a15e50 Mon Sep 17 00:00:00 2001
From: HanLong <404402223@qq.com>
Date: Mon, 2 Mar 2026 09:28:23 +0800
Subject: [PATCH 06/17] =?UTF-8?q?feat:[=E8=B5=84=E6=BA=90=E5=BA=93?=
=?UTF-8?q?=E7=AE=A1=E7=90=86][=E4=BB=AA=E5=99=A8=E7=AE=A1=E7=90=86]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/business/resource/yq/comps/detail.vue | 4 ++--
src/views/business/resource/yq/list.vue | 14 +++++++-------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/views/business/resource/yq/comps/detail.vue b/src/views/business/resource/yq/comps/detail.vue
index 1529f8c..d59502a 100644
--- a/src/views/business/resource/yq/comps/detail.vue
+++ b/src/views/business/resource/yq/comps/detail.vue
@@ -42,7 +42,7 @@
-
+
diff --git a/src/views/business/resource/yq/list.vue b/src/views/business/resource/yq/list.vue
index c86d9c1..63ebfa3 100644
--- a/src/views/business/resource/yq/list.vue
+++ b/src/views/business/resource/yq/list.vue
@@ -17,12 +17,12 @@
-
+
{{ $t('form.search')
}}
@@ -32,10 +32,10 @@
- {{
+ {{
$t('page.business.resource.yq.refresh') }}
- {{
- $t('page.business.resource.yq.add') }}
+
@@ -54,8 +54,8 @@
{{
$t('form.detail') }}
- {{
- $t('form.edit') }}
+
From 048eddbbe53164da71fe7b1633e24fab19fad299 Mon Sep 17 00:00:00 2001
From: memorylkf <312904636@qq.com>
Date: Mon, 2 Mar 2026 16:05:47 +0800
Subject: [PATCH 07/17] =?UTF-8?q?feat:=20[=E6=AD=A5=E9=AA=A4=E7=AE=A1?=
=?UTF-8?q?=E7=90=86]=20=E8=A1=A8=E9=85=8D=E7=BD=AE=E7=A6=BB=E5=BF=83-?=
=?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=BA=B6=E6=B6=B2=E7=A6=BB=E5=BF=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/Step.vue | 4 +++-
src/components/Template/StepComponents/ry/lx.vue | 23 ++++++++++++++++++-----
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/src/components/Template/Step.vue b/src/components/Template/Step.vue
index b0638a8..3e9c0e7 100644
--- a/src/components/Template/Step.vue
+++ b/src/components/Template/Step.vue
@@ -12,7 +12,7 @@
-