From 7b0ed8b9a5789539d9e6fcb03b5ae18ca43a572b Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 17 Nov 2023 15:44:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E9=80=BB=E8=BE=91=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E9=A1=B9=E7=9A=84=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/parser/Parser.vue | 33 ++++++++++++++++++++++++-- src/views/form/preview/ProjectForm.vue | 13 ++++++++++ src/views/form/write/index.vue | 2 ++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/components/parser/Parser.vue b/src/components/parser/Parser.vue index 5626949..7948302 100644 --- a/src/components/parser/Parser.vue +++ b/src/components/parser/Parser.vue @@ -72,7 +72,7 @@ const layouts = { function renderFrom (h) { const { formConfCopy } = this - + console.log(">>>",this[formConfCopy.formRules]) return ( { if (!valid) { // 未选中自动高亮 @@ -527,6 +528,23 @@ export default { }, 100) return false } + + // 填鸭的必填校验,对于刚开始显示不出来的逻辑题目无效,这里手动校验一下 + // 先生成校验逻辑 + let checkRules = {} + this.formConf.fields.forEach(f => { + checkRules[f.__vModel__] = { + "fieldLabel":f.__config__.label, + "required":f.__config__.required + } + }) + + for (let fieldName in this.formData) { + if (!this.requiredFieldCheck(checkRules, fieldName, this.formData[fieldName])) { + return; + } + } + // 触发sumit事件 this.$emit('submit', { formModel: this[this.formConf.formModel], @@ -534,8 +552,19 @@ export default { }) return true }) - } + }, + + requiredFieldCheck(checkRules, fieldName, fieldValue) { + let fieldCheckRule = checkRules[fieldName] + let fieldShowed = document.querySelector(`div[cid="${fieldName.replace('field', '')}"]`).style.display != 'none' + if (fieldShowed && fieldCheckRule && fieldCheckRule.required && !fieldValue) { + this.$message.error("请填写:" + fieldCheckRule.fieldLabel) + return false; + } + return true; + }, }, + render (h) { return renderFrom.call(this, h) } diff --git a/src/views/form/preview/ProjectForm.vue b/src/views/form/preview/ProjectForm.vue index 231714c..d384288 100644 --- a/src/views/form/preview/ProjectForm.vue +++ b/src/views/form/preview/ProjectForm.vue @@ -140,6 +140,19 @@ export default { }, async mounted () { + // wxz test + // let test = { + // "a":"11", + // "b":"22", + // } + + // console.info('------'); + // for (let f in test) { + // console.info(test[f]); + // } + // console.info('------'); + + let url = `${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/details/${this.formConf.projectKey}` if (this.formConf.projectKind == 2) { url = `${process.env.VUE_APP_API_ROOT_TDUCK}/project/template/details/${this.formConf.projectKey}` diff --git a/src/views/form/write/index.vue b/src/views/form/write/index.vue index 7993ed7..baeac1c 100644 --- a/src/views/form/write/index.vue +++ b/src/views/form/write/index.vue @@ -320,6 +320,8 @@ export default { let inActiveTime = document.getElementById('inActiveTime').innerText let url = this.anonymous == '1'?`/user/project/result/createAnonymously`:`/user/project/result/create?access_key=${this.accessKey}&` + // debugger + await this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}${url}`, { 'completeTime': inActiveTime, 'projectKey': this.projectConfig.projectKey,