目前做的项目管理系统,用到了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类型。不想去麻烦后端,所以我们改。