Browse Source

控制逻辑表单项的校验

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

33
src/components/parser/Parser.vue

@ -72,7 +72,7 @@ const layouts = {
function renderFrom (h) { function renderFrom (h) {
const { formConfCopy } = this const { formConfCopy } = this
console.log(">>>",this[formConfCopy.formRules])
return ( return (
<el-row gutter={formConfCopy.gutter}> <el-row gutter={formConfCopy.gutter}>
<el-form <el-form
@ -515,6 +515,7 @@ export default {
this.$refs[this.formConf.formRef].resetFields() this.$refs[this.formConf.formRef].resetFields()
}, },
submitForm () { submitForm () {
// debugger
this.$refs[this.formConf.formRef].validate(valid => { this.$refs[this.formConf.formRef].validate(valid => {
if (!valid) { if (!valid) {
// //
@ -527,6 +528,23 @@ export default {
}, 100) }, 100)
return false 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 // sumit
this.$emit('submit', { this.$emit('submit', {
formModel: this[this.formConf.formModel], formModel: this[this.formConf.formModel],
@ -534,8 +552,19 @@ export default {
}) })
return true 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) { render (h) {
return renderFrom.call(this, h) return renderFrom.call(this, h)
} }

13
src/views/form/preview/ProjectForm.vue

@ -140,6 +140,19 @@ export default {
}, },
async mounted () { 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}` let url = `${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/details/${this.formConf.projectKey}`
if (this.formConf.projectKind == 2) { if (this.formConf.projectKind == 2) {
url = `${process.env.VUE_APP_API_ROOT_TDUCK}/project/template/details/${this.formConf.projectKey}` 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 inActiveTime = document.getElementById('inActiveTime').innerText
let url = this.anonymous == '1'?`/user/project/result/createAnonymously`:`/user/project/result/create?access_key=${this.accessKey}&` 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}`, { await this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}${url}`, {
'completeTime': inActiveTime, 'completeTime': inActiveTime,
'projectKey': this.projectConfig.projectKey, 'projectKey': this.projectConfig.projectKey,

Loading…
Cancel
Save