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() {