Browse Source

控制逻辑表单项的校验

dev_itemshow_fix
wxz 2 years ago
parent
commit
7b0ed8b9a5
  1. 31
      src/components/parser/Parser.vue
  2. 13
      src/views/form/preview/ProjectForm.vue
  3. 2
      src/views/form/write/index.vue

31
src/components/parser/Parser.vue

@ -72,7 +72,7 @@ const layouts = {
function renderFrom (h) {
const { formConfCopy } = this
console.log(">>>",this[formConfCopy.formRules])
return (
<el-row gutter={formConfCopy.gutter}>
<el-form
@ -515,6 +515,7 @@ export default {
this.$refs[this.formConf.formRef].resetFields()
},
submitForm () {
// debugger
this.$refs[this.formConf.formRef].validate(valid => {
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)
}

13
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}`

2
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,

Loading…
Cancel
Save