Vue+Element UI使用本地数据实现对表格的增删改查

28 篇文章 0 订阅
6 篇文章 0 订阅

Vue+Element UI使用本地数据实现对表格的增删改查

先上效果图

在这里插入图片描述

话不多说,代码在下方

<template>
  <div id="app">
    <el-card class="box-card" style="width: 1200px;margin:150px auto;">
   <div style="margin:100px 0 100px 0;position:relative;">
     <el-button @click="addItem()" type="primary" size="small" style="position:absolute;right:100px;top:-50px;">新增</el-button>
      <el-button @click="delAll()" type="primary" size="small" style="position:absolute;right:0;top:-50px;">一键删除</el-button>
    <el-table
    ref="Datalist"
    :data="Datalist"
    border
    stripe
    @selection-change="handleSelectionChange">
    <el-table-column
      type="selection"
      width="55">
    </el-table-column>
    <el-table-column
      prop="id"
      label="ID"
      width="200">
    </el-table-column>
    <el-table-column
      prop="title"
      label="标题"
      width="240"
      show-overflow-tooltip>
    </el-table-column>
    <el-table-column
      prop="content"
      label="内容"
      width="300"
      show-overflow-tooltip>
    </el-table-column>
    <el-table-column
      prop="author"
      label="作者"
      width="200"
      show-overflow-tooltip>
    </el-table-column>
     <el-table-column
      fixed="right"
      label="操作"
      width="120">
      <template slot-scope="scope">
        <el-button @click="updateClick(scope.row)" type="text" size="small">编辑</el-button>
        <el-button @click="delClick(scope.row)" type="text" size="small">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
   </div>
    </el-card>
   <!-- 新增弹框 -->
   <el-dialog
    title="新增"
    :visible.sync="dialogVisible"
    width="30%">
    <el-form :model="addform" ref="addform" :rules="addRule">
      <el-form-item label="标题" prop="title">
        <el-input v-model="addform.title"></el-input>
      </el-form-item>
      <el-form-item label="内容" prop="content">
        <el-input v-model="addform.content" type="textarea" :rows="6"></el-input>
      </el-form-item>
      <el-form-item label="作者" prop="author">
        <el-input v-model="addform.author"></el-input>
      </el-form-item>
  </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="dialogVisible = false">取 消</el-button>
      <el-button type="primary" @click="addBtn()">确 定</el-button>
    </span>
  </el-dialog>
  <!-- 编辑弹框 -->
  <el-dialog
    title="修改信息"
    :visible.sync="updatedialogVisible"
    width="30%">
    <el-form :model="detailRow" ref="addform" :rules="addRule">
      <el-form-item label="标题" prop="title">
        <el-input v-model="detailRow.title"></el-input>
      </el-form-item>
      <el-form-item label="内容" prop="content">
        <el-input v-model="detailRow.content" type="textarea" :rows="6"></el-input>
      </el-form-item>
      <el-form-item label="作者" prop="author">
        <el-input v-model="detailRow.author"></el-input>
      </el-form-item>
  </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="updatedialogVisible = false">取 消</el-button>
      <el-button type="primary" @click="updateBtn()">确 定</el-button>
    </span>
  </el-dialog>
  </div>
</template>
<script>

export default {
  data(){
    return {
      dialogVisible:false,
      updatedialogVisible:false,
      addform:{
        title:'',
        content:'',
        author:'',
      },
      addRule:{
        title: { required: true, message: '标题不可为空', trigger: 'blur' },
        content: { required: true, message: '内容不可为空', trigger: 'blur' },
        author: { required: true, message: '作者不可为空', trigger: 'blur' },
      },
      detailRow:{},
      Datalist:[
        {id:1,title:'今天是个好日子',content:'这里是内容部分',author:'张三'},
        {id:2,title:'圣诞狂欢肺宁颗粒萨满的',content:'这里是内容部分',author:'张三'},
        {id:3,title:'同时打开没发的罚款缴纳',content:'这里是内容部分',author:'张三'},
        {id:4,title:'可视对讲发快递',content:'这里是内容部分',author:'张三'},
        {id:5,title:'借款收到您反馈水电费',content:'这里是内容部分',author:'张三'}
      ],
      ids:[]
    }
  },
  methods:{
    handleSelectionChange(val){
      let ids = []
      val.forEach(item =>{
        ids.push(item.id)
      })
      this.ids = ids
    },
    updateClick(row){
      this.detailRow = row
      this.updatedialogVisible = true
    },
    delClick(row){
      this.Datalist.forEach((item,index) =>{
        if(item.id == row.id){
          this.Datalist.splice(index,1)
        }
      })
      this.$message.success('删除成功')
    },
    delAll(){
      if(this.ids.length == 0) return this.$message.warning('暂未选择要删除的数据')
      for(let i=0;i<this.ids.length;i++){
        this.Datalist.forEach((item,index) =>{
          if(this.ids[i] == item.id){
            this.Datalist.splice(index,1)
          }
        })
      }
      this.$message.success('删除多条数据成功')
    },
    addItem(){
      this.dialogVisible = true
    },
    async addBtn(){
      try{
        await this.$refs.addform.validate()
        this.addform.id = this.Datalist.length+1
        this.Datalist.push(this.addform)
        this.dialogVisible = false
        this.$message.success('新增成功')
        this.addform = {}
      }catch(err){return err}
    },
    async updateBtn(){
      this.Datalist.forEach((item,index) =>{
        if(item.id == this.detailRow.id){
          this.Datalist[index] = this.detailRow
        }
      })
      this.detailRow = {}
      this.updatedialogVisible = false
      this.$message.success('修改成功')
    }
  }
}
</script>
<style lang="scss">
*{
  margin:0;
  padding: 0;
}
#app,html,body {
  width: 100%;
}
 .el-table__body-wrapper::-webkit-scrollbar {
    width: 8px;
    height: 8px;
  }
 .el-table__body-wrapper::-webkit-scrollbar-track {
    border-radius: 10px;
    background-color: #eeeeee;
  }
  .el-table__body-wrapper::-webkit-scrollbar-thumb {
    border-radius: 10px;
    background-color: rgb(145, 143, 143);
  }

</style>
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端大斗师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值