From e48bb24238063d7da963566d6b01ee23d03ddc4c Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: Tue, 2 Sep 2025 16:42:49 +0800
Subject: [PATCH] =?UTF-8?q?v1.9=20oa=20=E5=B7=A5=E4=BD=9C=E6=B5=81?=
=?UTF-8?q?=E8=A1=A8=E5=96=AE=E5=BF=85=E5=A1=AB=E5=95=8F=E9=A1=8C=E8=99=95?=
=?UTF-8?q?=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/oa/newOaWorkflowForm.vue | 66 ++++++++++++++-----------
1 file changed, 38 insertions(+), 28 deletions(-)
diff --git a/src/components/oa/newOaWorkflowForm.vue b/src/components/oa/newOaWorkflowForm.vue
index c35fddf0c..8fb43ecc2 100644
--- a/src/components/oa/newOaWorkflowForm.vue
+++ b/src/components/oa/newOaWorkflowForm.vue
@@ -11,28 +11,28 @@
-
+
-
+
-
+
-
@@ -40,7 +40,7 @@
-
@@ -48,7 +48,7 @@
-
+
{{ option.label }}
@@ -58,7 +58,7 @@
-
+
@@ -68,7 +68,7 @@
-
+
{{ option.label }}
@@ -91,7 +91,7 @@
-
+
{{ item.label }}
@@ -122,7 +122,8 @@ export default {
callBackListener: 'newOaWorkflowForm',
callBackFunction: 'fileName',
submitLoading: false,
- showUploadComponent: false
+ showUploadComponent: false,
+ flowId: null
}
},
@@ -143,8 +144,10 @@ export default {
flowId: this.flowId
})
console.log(res)
+
this.formJson = JSON.parse(res.data[0].formJson)
this.initForm()
+
} catch (error) {
console.error('获取表单配置失败:', error)
this.$message.error('获取表单配置失败')
@@ -152,21 +155,22 @@ export default {
},
initForm() {
- this.components = this.formJson.components
+
+ let _components = this.formJson.components
this.formData = {}
- this.components.forEach(item => {
+ _components.forEach(item => {
if (item.type !== 'button' && item.type !== 'text') {
- // 初始化表单数据
if (item.type === 'checkbox') {
- this.formData[item.key] = []
+ this.$set(this.formData, item.key, []);
} else if (item.type === 'radio' || item.type === 'select') {
- this.formData[item.key] = item.values && item.values.length > 0 ? item.values[0].value : ''
+ this.$set(this.formData, item.key, item.values && item.values.length > 0 ? item.values[0].value : '');
} else {
- this.formData[item.key] = ''
+ this.$set(this.formData, item.key, '');
}
}
- })
+ });
+ this.components = _components
},
getValidationRules(item) {
@@ -175,9 +179,19 @@ export default {
rules.push({
required: true,
message: `${item.label}不能为空`,
+ trigger: item.type === 'select' ? 'change' : 'blur'
+ })
+ }
+
+ // 添加其他验证规则,如正则表达式
+ if (item.validate && item.validate.pattern) {
+ rules.push({
+ pattern: new RegExp(item.validate.pattern),
+ message: item.validate.customMessage || `${item.label}格式不正确`,
trigger: 'blur'
})
}
+
return rules
},
@@ -216,18 +230,14 @@ export default {
},
_doReset() {
- let _that = this;
- _that.components.forEach(item => {
- item.value = "";
- if (item.type == 'textdate' || item.type == 'textdatetime') {
- item.value = "请选择";
+ this.$refs.form.resetFields()
+ // 特殊处理复选框
+ Object.keys(this.formData).forEach(key => {
+ const component = this.components.find(c => c.key === key)
+ if (component && component.type === 'checkbox') {
+ this.formData[key] = []
}
-
- if (item.type == "radio" || item.type == "select") {
- item.valueIndex = 0;
- }
- });
- this.$forceUpdate();
+ })
},
_doUploadFile() {