在彈窗中 做 表格中放文本框並校驗
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) { } }); },
效果展示: