<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="./style/element-ui-index.css"> <link rel="stylesheet" href="./style/index.css"> <title>入门</title> </head> <body> <div id="app"> <h1>同学录</h1> <div class="head"> <el-row :gutter="20"> <el-col :span="6"> <el-input v-model="userInfo.name" placeholder="请输入姓名"></el-input> </el-col> <el-col :span="6"> <el-input v-model="userInfo.gender" placeholder="请输入性别"></el-input> </el-col> <el-col :span="6"> <el-input v-model="userInfo.phoneNum" placeholder="请输入电话号码"></el-input> </el-col> <el-col :span="6"> <el-date-picker v-model="userInfo.birthday" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd"></el-date-picker> </el-col> </el-row> <el-button type="primary" @click="addUser">添加信息</el-button> </div> <div class="body"> <template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="序号" width="180"> <template slot-scope="scope">{{scope.$index+1}}</template><!--{{scope.row.name}}获取当前列的姓名--> </el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> <el-table-column prop="phoneNum" label="电话号码"></el-table-column> <el-table-column prop="birthday" label="生日"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="primary" icon="el-icon-edit" @click="editUser(scope.row,scope.$index)" circle></el-button> <el-button type="danger" icon="el-icon-delete" @click="delUser(scope.$index)" circle></el-button> </template> </el-table-column> </el-table> </template> </div> <el-dialog title="编辑用户信息" :visible.sync="dialogVisible" width="30%" :before-close="handleClose"> <div> <el-form ref="form" :model="editObj" label-width="80px"> <el-form-item label="姓名"> <el-input v-model="editObj.name"></el-input> </el-form-item> <el-form-item label="性别"> <el-input v-model="editObj.gender"></el-input> </el-form-item> <el-form-item label="电话号码"> <el-input v-model="editObj.phoneNum"></el-input> </el-form-item> <el-form-item label="出生日期"> <el-date-picker v-model="editObj.birthday" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd"></el-date-picker> </el-form-item> </el-form> </div> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="confirm()">确 定</el-button> </span> </el-dialog> </div> </body> <!-- import Vue before Element --> <script src="./javascript/vue.min.js"></script> <!-- import JavaScript --> <script src="./javascript/element-ui-index.js"></script> <script src="./javascript/index.js"></script> </html>
JS
new Vue({ el:"#app", data(){ return{ userInfo:{//添加用户信息 name:‘‘, gender:‘‘, phoneNum:‘‘, birthday:‘‘ }, tableData: [{ name: ‘王小虎1‘, gender: ‘男‘, phoneNum: ‘13311112222‘, birthday:‘2020-12-09‘ }, { name: ‘王小虎2‘, gender: ‘男‘, phoneNum: ‘15511112222‘, birthday:‘2021-12-09‘ }, { name: ‘王小虎3‘, gender: ‘男‘, phoneNum: ‘16611112222‘, birthday:‘2022-12-09‘ }, { name: ‘王小虎4‘, gender: ‘男‘, phoneNum: ‘17711112222‘, birthday:‘2023-12-09‘ }], dialogVisible: false,//弹框的显示 editObj:{ name:‘‘, gender:‘‘, phoneNum:‘‘, birthday:‘‘ }, userIndex:0, } }, methods:{ //添加用户 addUser(){ if(this.userInfo.name==""){ this.$message({ message: ‘姓名不能为空!‘, type: ‘warning‘ }); return; }; if(!/^1[3578]\d{9}$/.test(this.userInfo.phoneNum)){ this.$message({ message: ‘请输入正确的电话号码!‘, type: ‘warning‘ }); return; }; this.tableData.push(this.userInfo); this.userInfo={//添加完之后清空userInfo name:‘‘, gender:‘‘, phoneNum:‘‘, birthday:‘‘ }}, //删除数据 delUser(index){ //alert(index); this.$confirm(‘确认删除?‘) .then(_ => { this.tableData.splice(index,1); }).catch(_ => {}); }, editUser(item,index){ //编辑用户 this.userIndex=index; this.editObj={ name:item.name, gender:item.gender, phoneNum:item.phoneNum, birthday:item.birthday } this.dialogVisible=true; }, handleClose(){ this.dialogVisible=false; }, confirm(){//提交修改 this.dialogVisible=false; //this.tableData[this.userIndex]=this.editObj;//这种方式不能渲染页面 Vue.set(this.tableData,this.userIndex,this.editObj); } } })
CSS
#app{ width: 1024px; margin: 0 auto; }
原文:https://www.cnblogs.com/ixtao/p/14153079.html