element-UI 在表格中添加 输入框 并校验
在弹窗中 做 表格中放文本框并校验
dialog 代码:
<!-- 添加或修改申请报修对话框 -->
<el-dialog :title="title" :visible.sync="open" :fullscreen="true">
<!-- 添加报修事项按钮 -->
<el-row :gutter="20" class="mb8">
<el-col :span="2">
<el-button @click="addItem" size="small" type="primary"
>添加报修事项</el-button
>
</el-col>
</el-row>
<!-- 表单表格校验 -->
<el-row :gutter="10" class="mb8">
<el-col :span="24">
<el-form :model="formData" ref="formData">
<el-col :span="4">
<el-form-item label="报修地点" prop="place" :rules="rules.place">
<el-input
v-model="formData.place"
maxlength="50"
show-word-limit
></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item
label="联系方式"
prop="repairReportPhone"
:rules="rules.repairReportPhone"
>
<el-input v-model="formData.repairReportPhone"></el-input>
</el-form-item>
</el-col>
<el-table
:data="formData.tableData"
border
stripe
style="width: 100%"
height="300px"
max-height="300px"
>
<el-table-column
header-align="center"
align="center"
prop="sn"
label="序号"
width="100"
>
</el-table-column>
<el-table-column
header-align="center"
align="center"
prop="goodsName"
label="物品名称"
width="250"
>
<template slot-scope="scope">
<el-form-item
:prop="'tableData.' + scope.$index + '.goodsName'"
:rules="rules.goodsName"
>
<el-input
v-model="scope.row.goodsName"
placeholder="物品名称"
maxlength="50"
show-word-limit
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
prop="faultDescription"
label="故障描述"
width="400"
>
<template slot-scope="scope">
<el-form-item
:prop="'tableData.' + scope.$index + '.faultDescription'"
:rules="rules.faultDescription"
>
<el-input
v-model="scope.row.faultDescription"
type="textarea"
placeholder="故障描述"
maxlength="500"
show-word-limit
></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="上传图片"
width="200"
>
<template #default="scope">
<el-button
size="mini"
@click="handleEdit(scope.$index, scope.row)"
>点击上传</el-button
>
<el-button
size="mini"
@click="handleDelete(scope.$index, scope.row)"
>更换图片</el-button
>
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="图片详情"
>
<template width="40" slot-scope="scope">
<el-image
:src="scope.url"
style="width: 50px; height: 50px"
:fit="fill"
></el-image>
</template>
</el-table-column>
<el-table-column
label="操作"
header-align="center"
align="center"
width="150"
>
<template #default="scope">
<el-button
size="small"
type="text"
@click="handleEdit(scope.$index, scope.row)"
>编辑</el-button
>
<el-button
size="mini"
type="text"
@click="handleDelete(scope.$index, scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-form>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
表单初始化:
// 表单参数
formData: {
place: "",
repairReportPhone: "",
tableData: [],
},
// 表单校验
rules: {
place: [
{
required: true,
message: "报修地点不能为空",
trigger: ["blur", "change"],
},
],
repairReportPhone: [
{
required: true,
message: "联系方式不能为空",
trigger: ["blur", "change"],
},
,
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: ["blur", "change"],
},
],
goodsName: [
{
required: true,
message: "物品名称不能为空",
trigger: ["blur", "change"],
},
],
url: [
{
required: true,
message: "故障照片不能为空",
trigger: ["blur", "change"],
},
],
},
表格增加数据的方法:
// 增加一条数据 addItem() { let item = { sn: this.formData.tableData.length, goodsName: "", faultDescription: "", url: "", }; this.formData.tableData.push(item); },
提交校验表单:
/** 提交按钮 */
submitForm() {
this.$refs["formData"].validate((valid) => {
if (valid) {
}
});
},
效果展示:


浙公网安备 33010602011771号