【Vue】demo增删改查列表

<!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;
}

  

posted @ 2020-12-18 07:55  Mr_sven  阅读(209)  评论(0编辑  收藏  举报