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

文章讲述了在Vue.js的项目管理系统中,使用el-form和el-table组件进行数据绑定和非空验证时遇到的问题。当后端返回的数值类型为Number,而验证规则要求为String时,未修改的数值会触发错误。为解决此问题,作者提出了两种方案:后端返回数据改为String类型或前端在接收到数值时转换为String。文中选择在前端进行转换以避免麻烦后端。
摘要由CSDN通过智能技术生成

目前做的项目管理系统,用到了el-form中嵌套el-table,并且需要非空验证,效果图如下:
在这里插入图片描述
记录一下代码和采坑记录:

<el-form :model="dataForm" :rules="dataRule" ref="dataForm">
      <el-table
        :data="dataForm.supplierList"
        class="form-table"
        border
        style="width: 100%;">
        <el-table-column
          prop="billNo"
          header-align="center"
          align="center"
          min-width="200"
          label="服务采购编号"
          show-overflow-tooltip>
        </el-table-column>
        <el-table-column
          prop="name"
          header-align="center"
          align="center"
          min-width="200"
          label="服务商名称"
          show-overflow-tooltip>
        </el-table-column>
        <el-table-column
          header-align="center"
          align="center"
          min-width="200"
          label="累计采购金额">
          <template slot-scope="scope">
            <el-form-item
              label=""
              :prop="'supplierList.' + scope.$index + '.totalAmt'"
              :rules="dataRule.totalAmt"
            >
              <eng-money-input
                :disabled="isDetail"
                :validate-event="false"
                v-model.trim="scope.row.totalAmt"
                maxlength="16"
                placeholder="请输入(不能超过预算金额)"
              ></eng-money-input>
            </el-form-item>
          </template>
        </el-table-column>
        <el-table-column
          fixed="right"
          header-align="center"
          label-class-name="action-bar"
          align="center"
          width="150"
          label="操作">
          <template slot-scope="scope">
            <el-button
              class="delete-button"
              :disabled="isDetail"
              type="text"
              size="small"
              @click="deleteHandle(dataForm.supplierList, scope.$index)">删除
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </el-form>

  data() {
    return {
      dataForm:{supplierList:[]},
      dataRule: {
        totalAmt: [{type: 'string', required: true, msg: '累计采购金额', trigger: 'change'}]
      }
    }
  },

遇到的问题:
后端返回的值是Number类型,但是校验规则是String类型。导致编辑的时候不修改值的情况下就会提示错误。导致必须修改一次后,才可以提交。
解决办法:后端改为String类型或者前端在拿到值的时候将该字段改为String类型。不想去麻烦后端,所以我们改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对的态度带你走向对的路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值