赞
踩
目前做的项目后台管理系统,用到了el-form中嵌套el-table,并且需要非空验证,效果图如下:
废话不多说,直接上代码
- <el-form
- v-loading="loading"
- :model="currBillType"
- :rules="currBillType.rules"
- style="height: calc(100% - 95px)"
- >
- <el-table
- :data="currBillType.dataSource"
- ref="companySettingList"
- align="left"
- >
- <el-table-column
- prop="companyCode"
- :label="l('CompanyCode')"
- ></el-table-column>
- <el-table-column
- prop="companyName"
- :label="l('CompanyName')"
- ></el-table-column>
- <el-table-column prop="prefix" :label="l('前缀')">
- <template slot-scope="scope">
- <el-form-item
- :prop="'dataSource.' + scope.$index + '.prefix'"
- :rules="currBillType.rules.prefix"
- style="margin-bottom: 0px"
- >
- <el-input v-model="scope.row.prefix"></el-input>
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="used" :label="l('Used')" align="center">
- <template slot-scope="scope">
- <el-checkbox v-model="scope.row.used"></el-checkbox>
- </template>
- </el-table-column>
- <el-table-column prop="digit" :label="l('YrDigit')">
- <template slot-scope="scope">
- <el-form-item
- :prop="'dataSource.' + scope.$index + '.digit'"
- :rules="currBillType.rules.digit"
- style="margin-bottom: 0px"
- >
- <el-input v-model="scope.row.digit"></el-input>
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column
- prop="autoGenMode"
- :label="l('AutoGenMode')"
- align="center"
- >
- <template slot-scope="scope">
- <el-checkbox
- v-model="scope.row.autoGenMode"
- :true-label="1"
- :false-label="0"
- ></el-checkbox>
- </template>
- </el-table-column>
- </el-table>
- </el-form>

1、为了保证prop的唯一性,所以el-form-item的prop需要动态来写
:prop="'dataSource.' + scope.$index + '.prefix'"
dataSource:el-form绑定的数组,prefix:对应的字段名
2、注意数据结构的不同,el-form需要的数据结构是对象类型{......},el-table需要的是数组,
所以需要对数据进行处理,我这里的数据是后台返回的,大致数据(也就是data部分)结构如下:
- currBillType: {
- dataSource: [],
- rules: {
- prefix: [
- {
- required: true,
- trigger: "blur",
- },
- ],
- digit: [
- {
- required: true,
- trigger: "blur",
- },
- ],
- },
- },

3、表单校验el-form-item上记得加验证规则,注意的不只是form表单需要配置,每个item也需要配置
- <el-table-column prop="prefix" :label="l('前缀')">
- <template slot-scope="scope">
- <el-form-item
- :prop="'dataSource.' + scope.$index + '.prefix'"
- :rules="currBillType.rules.prefix"
- style="margin-bottom: 0px"
- >
- <el-input v-model="scope.row.prefix"></el-input>
- </el-form-item>
- </template>
- </el-table-column>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。