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