<el-form v-if="JSON.stringify(formInline) !== {}"
:model="formInline" :rules="rules"
ref="formref" label-width="160px"
>
<div v-for="(it index) in dynamicForm" :key="index">
<el-form-item
v-if="it.controlType === 'text'"
:label="it.caption"
:prop="it.eleCode && it.eleCode"
>
<el-input
v-model="formInline[it.eleCode]"
placeholder="請(qǐng)輸入"
style="width: 300px"
clearable
>
</el-input>
</el-form-item>
<el-form-item
v-if="it.controlType === 'combo'"
:label="it.props.caption"
:prop="it.props.eleCode && it.props.eleCode"
>
<el-select
v-model="formInline[it.eleCode]"
:value="formInline[it.eleCode]"
placeholder="請(qǐng)選擇"
style="width: 300px"
>
<el-option
v-for="item in it"
:key="item.label"
:label="label"
:value="value"
></el-option>
</el-select>
</el-form-item>
....
</div>
</el-form>
</template>```
```<script>
export default {
name: "forms",
props: ['dynamikc'],
data() {
return {
formInline: {},
dynamicForm: [{
controlType: 'text', //表單類型
caption: '文本框', // label
eleCode: 'TEXT', // 表單提交的字段屬性
isShowValidate: true, // 是否為必填項(xiàng)
option: [] //單選復(fù)選數(shù)據(jù)
}, {
controlType: 'select',
caption: '下拉框',
isShowValidate: true,
eleCode: 'SELECT',
option: [{
value: '1',
label: '1'
}, {
value: '1',
label: '1'
}]
}, {
controlType: 'radio',
caption: '單選',
eleCode: 'RADIO',
isShowValidate: false,
option: [{
value: '1',
label: '1'
}, {
value: '1',
label: '1'
}]
}],
rules: {},
}
},
created() {
this.dynamicForm.map(item => {
this.propsKey(item)
})
},
methods: {
/**
* 表單校驗(yàn)+提交
*/
submit() {
this.$refs['formref'].validate((valid) => {
if (valid) {
alert('submit!');
} else {
// alert('error submit!!');
return false;
}
});
},
/**
* 去form-model的key 和 判斷創(chuàng)建rules
* item[Object] 動(dòng)態(tài)表單的item
*/
propsKey(item) {
if(item.eleCode) {
// 創(chuàng)建動(dòng)態(tài)表單的v-model
let obj = {};
obj[item.eleCode] = '';
this.formInline = Object.assign({...this.formInline}, {...obj});
// 判斷是否是必填項(xiàng)
if(item.isShowValidate) {
if(item.controlType === 'text') {
let rule = {};
rule[item.eleCode] = [{
required: true, message: '必填項(xiàng)不能為空埋市,請(qǐng)輸入', trigger: 'blur'
}];
this.rules = Object.assign({...this.rules}, {...rule});
} else {
let rule = {};
rule[item.eleCode] = [{
required: true, message: '必填項(xiàng)不能為空冠桃,請(qǐng)選擇', trigger: 'change'
}];
this.rules = Object.assign({...this.rules}, {...rule});
}
}
}
}
},
};
</script>```
vue 動(dòng)態(tài)表單+動(dòng)態(tài)驗(yàn)證
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來襟士,“玉大人盗飒,你說我怎么就攤上這事〉蟹洌” “怎么了箩兽?”我有些...
- 文/不壞的土叔 我叫張陵津肛,是天一觀的道長章喉。 經(jīng)常有香客問我,道長身坐,這世上最難降的妖魔是什么秸脱? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮部蛇,結(jié)果婚禮上摊唇,老公的妹妹穿的比我還像新娘。我一直安慰自己涯鲁,他們只是感情好巷查,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抹腿,像睡著了一般岛请。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上警绩,一...
- 文/蒼蘭香墨 我猛地睜開眼疾层,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了松申?” 一聲冷哼從身側(cè)響起云芦,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贸桶,沒想到半個(gè)月后舅逸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡皇筛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年琉历,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片水醋。...
- 正文 年R本政府宣布惶桐,位于F島的核電站撮弧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姚糊。R本人自食惡果不足惜贿衍,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望救恨。 院中可真熱鬧贸辈,春花似錦、人聲如沸肠槽。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽秸仙。三九已至嘴拢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筋栋,已是汗流浹背炊汤。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長得像迈倍,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卦洽,可洞房花燭夜當(dāng)晚...