element-ui的el-table与el-form的使用与表单校验

简介: element-ui的el-table与el-form的使用与表单校验

目前做的项目后台管理系统,用到了el-form中嵌套el-table,并且需要非空验证,效果图如下:

20210527153548522.png

废话不多说,直接上代码

   <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>
相关文章
|
5月前
|
前端开发
Element UI 【实战】纯前端对表格数据进行增删改查(内含弹窗表单、数据校验、时间日期格式)
Element UI 【实战】纯前端对表格数据进行增删改查(内含弹窗表单、数据校验、时间日期格式)
196 6
|
4月前
|
计算机视觉
ElementUI——vue2+element-ui 2.x的动态表格和表单
ElementUI——vue2+element-ui 2.x的动态表格和表单
151 1
|
5月前
element UI 组件封装--搜索表单(含插槽和内嵌组件)
element UI 组件封装--搜索表单(含插槽和内嵌组件)
141 5
|
5月前
|
JavaScript
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
165 5
|
5月前
|
UED
Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )
Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )
55 0
|
5月前
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
441 0
|
5月前
|
JavaScript
vue项目中升级element ui(含常见报错及解决方案,如表格不显示,el-table无效, “__v_isRef“ is not defined,Use :deep() instead)
vue项目中升级element ui(含常见报错及解决方案,如表格不显示,el-table无效, “__v_isRef“ is not defined,Use :deep() instead)
63 0
|
5月前
Element UI 表单【详解】-- 表单校验,表单元素排列在一行,常用表单元素等
Element UI 表单【详解】-- 表单校验,表单元素排列在一行,常用表单元素等
173 0
|
5月前
Element UI 上传文件 el-upload —— 手动上传文件,限制上传文件数量,文件类型校验等
Element UI 上传文件 el-upload —— 手动上传文件,限制上传文件数量,文件类型校验等
1351 0
|
7月前
基于sortablejs实现拖拽element-ui el-table表格行进行排序
基于sortablejs实现拖拽element-ui el-table表格行进行排序