本文实例为大家分享了vue+element实现动态加载表单的具体代码,供大家参考,具体内容如下
一、问卷动态加载表单
//html//data数据 paperForm: { // 问卷表单 answerList:[{ questionRepository:'', questionOption:[], questionId: '', optionId:'', answer: '' }] }, //接口 getPaperByDrugStatus(drugStatus, id){ // 根据用药状态获取问卷 this.paperLoading = true this.$axios.get(this.$api + 'xxx/xxx?paperId='+this.selectStage.paperId + '&drugStatus=' + drugStatus).then(res => { if(res.data.code === 200){ let answerArr = [] let questionArr = [] res.data.data.questionToList.map((item)=>{ item.optionList.map((n)=>{ questionArr.push({ id:n.id, questionOption:n.questionOption }) }) answerArr.push({ questionOption:questionArr, questionRepository:item.questionRepository, questionId:item.questionRepository.id, optionId:item.questionRepository.type === 2?[]:'', answer: '' }) }) console.log(answerArr) this.paperForm = { // 问卷表单 answerList:answerArr } setTimeout(() => { this.paperLoading = false }, 300) } }) }, {{ i.questionOption }} {{ i.questionOption }} 保存问卷
二、批量数据动态加载表单
特点:
1.每一行的输入框,根据后台返回值,动态生成,数量可增可减。
2.行数根据自己设置的值 5 ,自动循环生成。
3.验证需要:prop和:rules,如果不验证,就删了
批量录入{{tabHeader.monthStr}}数据
患者请用姓名
或病历号模糊筛选以下信息每1个月登记一次 以下信息每3个月登记一次 以下信息每6个月登记一次 {{item.name}} {{n.name}} {{z.name}} 提交数据
部分必选:
data(){ return { formList:[{ patient:'', caseNumber:'', year:'', sex:'', dialysisAge:'', primaryDisease:'', diagnosis:'', creatinine:'', gfr:'', weekTreatTimes:'', weekDialysisHours:'' },{ patient:'', caseNumber:'', year:'', sex:'', dialysisAge:'', primaryDisease:'', diagnosis:'', creatinine:'', gfr:'', weekTreatTimes:'', weekDialysisHours:'' },{ patient:'', caseNumber:'', year:'', sex:'', dialysisAge:'', primaryDisease:'', diagnosis:'', creatinine:'', gfr:'', weekTreatTimes:'', weekDialysisHours:'' }] }, methods:{ submitData(){ let param={ dialysisId:this.$route.query.id, dialysisCenter:this.$route.query.name, createUserName:JSON.parse(localStorage.getItem('userInfo')).session.name, createUserId:JSON.parse(localStorage.getItem('userInfo')).session.id, patientList:nweArr } // 部分必选 start let ok = false // 需要必选的值 let rules = [{name:'patient',msg:'姓名'},{name:'caseNumber',msg:'身份证'},{name:'year',msg:'年龄'},{name:'sex',msg:'性别'}] this.formList.map((item)=>{ //每一行,是否有值 let hangNoVal = Object.keys(item).every(n=>item[n] == '') if(!hangNoVal){ //任意一个有值 for(let i of rules){ if(item[i.name] == ''){//必填项是否有值 this.$message({ message: i.msg+'不能为空!', type: 'error', duration: 1500 }) break } } }else{ ok = true } }) if(ok){ this.$message({ message: '请填写,再提交', type: 'error', duration: 1500 }) return false } // 部分必选 end this.$axios.post(this.$my.api + '/bms/input/bathSavePat',param).then(res => { if(res.data&&res.data.code === 200){ //ok } }).catch(function (error) {}) }, } } //情况二:有输入,才必填 // 部分必选 start let ok = [] let no = '' // 需要必选的值 let rules = [{name:'patient',msg:'姓名'},{name:'caseNumber',msg:'身份证'},{name:'year',msg:'年龄'},{name:'sex',msg:'性别'}] this.formList.map((item)=>{ //每一行,是否有值 let hangNoVal = Object.keys(item).every(n=>item[n] == '') if(!hangNoVal){ //任意一个有值 ok.push(false) for(let i of rules){ if(item[i.name] == ''){//必填项是否有值 no = true this.$message({ message: i.msg+'不能为空!', type: 'error', duration: 1500 }) break } } }else{ ok.push(true) } }) if(ok.every(n=>n == true)){ this.$message({ message: '请填写,再提交', type: 'error', duration: 1500 }) return false } if(no){ return false } // 部分必选 end
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。