<template>
<div class="">
<TableTop isFlex title="xxx" :border="false">
<template slot="tableList">
<div class="">
<el-form :model="form" :rules="rules" ref="form">
<el-table :data="form.tableData" style="width: 100%">
<el-table-column type="index" label="序号" width="50"> </el-table-column>
<el-table-column label="竞价项目名称" min-width="180" show-overflow-tooltip :render-header="addRedStar">
<template slot-scope="scope">
<el-form-item
:prop="'tableData.' + scope.$index + '.ipt'"
:rules="{ required: true, message: '必填', trigger: 'blur' }"
>
<el-input v-model="scope.row.ipt"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="name" label="操作" width="240" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="saveBtn">保存</el-button>
<el-button type="text" @click="delBtn(scope.row, scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</div>
</template>
</TableTop>
</div>
</template>
<script>
import TableTop from '@/components/TableTop/tableTop.vue'
export default {
data() {
return {
form: {
tableData: [
{ name: '2121', ipt: '内容' },
{ name: '2121', ipt: '内容' },
{ name: '2121', ipt: '内容' },
{ name: '2121', ipt: '内容' }
]
},
rules: {
name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
age: [{ required: true, message: '年龄不能为空', trigger: 'blur' }]
},
}
},
methods: {
add() {
this.form.tableData.push({ name: '2121', ipt: '内容' })
},
delBtn(row, index) {
this.form.tableData.splice(index, 1)
},
saveBtn() {
this.$refs.form.validate((valid) => {
if (valid) {
console.log('通过')
console.log(this.form.tableData)
}
})
},
addRedStar(h, { column }) {
return [h('span', { style: 'color:#f00' }, '*'), h('span', ' ' + column.label)]
},
},
components: {
TableTop,
MaterialDetailsInfo
}
}
</script>
<style lang="less" scoped>
</style>
vue form表单下嵌套表格 并校验每一行
最新推荐文章于 2024-07-08 17:24:26 发布