Vue2.0+element-ui实现表格的增删查改

这篇具有很好参考价值的文章主要介绍了Vue2.0+element-ui实现表格的增删查改。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue2做了个表格的demo,有增删改查的功能,记录一下,喜欢就点个赞收藏一下吧~

效果:

elementui表格增删改查,封装,javascript,vue.js,elementui
elementui表格增删改查,封装,javascript,vue.js,elementui
elementui表格增删改查,封装,javascript,vue.js,elementui

代码:

1.主文件list-page.vue 列表页

<template>
  <div>
    <div class="btn-box">
      <el-button type="primary" @click="add">添加</el-button>
    </div>
    <el-table :data="tableData" style="width: 100%">
      <el-table-column prop="date" label="日期" width="180"> </el-table-column>
      <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
      <el-table-column prop="address" label="地址"> </el-table-column>
      <el-table-column label="操作">
        <template slot-scope="scope">
          <el-button type="text" @click="edit(scope.row, scope.$index)"
            >修改</el-button
          >
          <el-button type="text" @click="del(scope.row, scope.$index)"
            >删除</el-button
          >
        </template>
      </el-table-column>
    </el-table>
    <operation-dialog ref="operaDialog" />
  </div>
</template>

<script>
import OperationDialog from "./operation-dialog.vue";
export default {
  name: "ListPage",
  components: { OperationDialog },
  data() {
    return {
      tableData: [],
    };
  },
  created() {
    this.getTableData();
  },
  methods: {
    getTableData() {
      // 模拟请求回来的数据 实际操作中这里应该调接口发请求获取数据
      this.tableData = [
        {
          id: 1,
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          id: 2,
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1517 弄",
        },
        {
          id: 3,
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1519 弄",
        },
        {
          id: 4,
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1516 弄",
        },
      ];
    },
    // 添加弹窗打开
    add() {
      this.$refs.operaDialog.open();
    },
    // 添加弹窗打开
    edit(row, index) {
      this.$refs.operaDialog.open(row, index);
    },
    // 删除
    del(row, index) {
      this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          // 这两句模拟接口删除返回的结果
          this.tableData.splice(index, 1);
          this.$message({
            type: "success",
            message: "删除成功!",
          });
          //   // 实际操作调接口请求删除当前选中数据
          //   delRow(row.id).then((res) => {
          //     if (res.code === 200) {
          //       this.$message({
          //         type: "success",
          //         message: res.msg,
          //       });
          //     }
          //   });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
    },
  },
};
</script>

2.弹窗页面(新增/编辑公用一个弹窗页面)文章来源地址https://www.toymoban.com/news/detail-693914.html

<template>
  <el-dialog
    v-if="visible"
    :title="form.id?'修改':'新增'"
    :visible.sync="visible"
    modal
    :close-on-click-modal="false"
    width="30%"
    :before-close="close"
  >
    <el-form
      :model="form"
      :rules="rules"
      ref="form"
      label-width="100px"
      class="form"
    >
      <el-form-item label="日期" prop="date">
        <el-date-picker value-format="yyyy-MM-dd" format="yyyy-MM-dd" v-model="form.date" type="date" placeholder="选择日期">
        </el-date-picker>
      </el-form-item>
      <el-form-item label="姓名" prop="name">
        <el-input v-model="form.name" placeholder="请输入姓名"></el-input>
      </el-form-item>
      <el-form-item label="地址" prop="address">
        <el-input v-model="form.address" placeholder="请输入地址"></el-input>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="close">取 消</el-button>
      <el-button type="primary" @click="confirm">确 定</el-button>
    </span>
  </el-dialog>
</template>

<script>
export default {
  data() {
    return {
      visible: false,
      form: {
        date:'',
        name:'',
        address:''
      },
      rules: {
        date: [
          { required: true, message: "请选择日期", trigger: "change" },
        ],
        name: [
          { required: true, message: "请输入姓名", trigger: "blur" },
          { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
        ],
        address: [{ required: true, message: "请输入地址", trigger: "blur" }],
      },
    };
  },
  methods: {
    open(row, index) {
      this.visible = true;
      //   有id则是编辑 否则则是新增
      if (row && row.id) {
        this.form = JSON.parse(JSON.stringify(row));
        // 因为要模拟修改 此处需要索引 实际项目操作不需要index
        this.form.index = index;
      }
    },
    close() {
      this.visible = false;
      this.form = {};
      // 移除校验结果并重置数据
      this.$refs.form.resetFields()
    },
    confirm() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.id) {
            // 编辑的提交
            // 调用修改接口 并在接口返回成功后调用父组件的getList()方法
            // editApi(this.form).then(res=>{if(res.code===200) {this.$message.sucess(res.msg);this.$parent.getList();this.close()}})

            // 模拟修改-(以下四句实际操作不需要 逻辑处理在接口返回 参考上面的代码)
            let cloneForm=JSON.parse(JSON.stringify(this.form))
            this.$parent.tableData.splice(this.form.index, 1, cloneForm);
            this.close();
          } else {
            // 新增的提交
            // 调用新增接口 并在接口返回成功后调用父组件的getList()方法
            // addApi(this.form).then(res=>{if(res.code===200) {this.$message.sucess(res.msg);this.$parent.getList();this.close()}})

            // 模拟添加-(以下四句实际操作不需要 逻辑处理在接口返回 参考上面的代码)
            this.form.id=this.$parent.tableData.length+1
            let cloneForm=JSON.parse(JSON.stringify(this.form))
            this.$parent.tableData.push(cloneForm);
            this.close();
          }
        } else {
          return false;
        }
      });
    },
  },
};
</script>

到了这里,关于Vue2.0+element-ui实现表格的增删查改的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2 +Element-ui实现前端页面

    以一个简单的前端页面为例。主要是利用vue和element-ui实现。 里面涉及的主要包括:新建vue项目、一行多个输入框、页面实现等。   ①首先安装nodejs,这部分在此就不讲啦。 ②然后安装vue-cli: 查看是否安装成功: 安装成功之后就输出vue的版本 ③在cmd窗口新建一个vue2脚手架

    2024年02月16日
    浏览(42)
  • vue2+element-ui 实现国际化

    在src目录下创建一个lang文件夹,同时创建zh.js(中文),en.js(英文),ja.js(日文),fr.js(法文)四个语言包js文件,并创建一个index.js文件,用来整合语言包 对于一个项目来说,一个语言包需要包含所有页面以及组件;在语言包以页面为单位,创建一个对象;对公共的title或者按钮名

    2024年02月02日
    浏览(53)
  • vue2+element-ui实现侧边导航栏

    编写 client/src/components/LeftMenu.vue ,创建侧边导航栏: 编辑 client/src/views/Index.vue ,引入侧边导航栏:

    2024年02月02日
    浏览(46)
  • (vue)element-ui 表格实现勾选单选

    效果: 重选后: 解决参考:https://blog.csdn.net/m0_58373910/article/details/125912828

    2024年02月12日
    浏览(43)
  • vue搭配element-ui前端实现表格分页

    如果不从后台请求数据,那么就需要在前端手动管理数据。可以使用以下步骤实现该功能: 在 Vue 组件的 data 中定义一个数组来存放所有数据(不分页)。 在 mounted 钩子函数中,手动获取数据并存放到上一步定义的数组中。 在模板中使用 element-ui 的表格组件来展示数据,同

    2024年02月11日
    浏览(44)
  • vue+element-UI实现跟随滚动条加载表格数据

    el-table当数据量大的时候,实现滚动到底部后加载数据,直接上js代码,有其他需求请各自更改  第一步、在data中定义两个数组 第二步、在数据发生改变的方法中先循环存放一部分数据用于页面显示 第三步、在mounted监听滚动事件

    2024年02月16日
    浏览(55)
  • vue 实现element-ui 表格的行拖拽排序 (Sortable)

    Sortable它是一个比较简单好用的拖拽排序工具 1.首先是安装下载Sortable (npm install sortablejs --save) 2.在要进行拖拽的页面引入Sortable (import Sortable from \\\'sortablejs\\\') 3.写个方法去处理你需要的数据,这里需要注意一下需要等待元素渲染完成后再执行此方法  4.处理好数据以后再去

    2024年02月11日
    浏览(50)
  • 【分页表格】Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)

    这篇文章,主要介绍Vue2 + Element UI实现自定义的分页表格组件(自定义Vue组件)。 目录 一、分页表格 1.1、运行效果 1.2、运行环境 1.3、案例代码

    2024年02月11日
    浏览(55)
  • vue2实现可拖拽甘特图(结合element-ui的gantt图)

      接到公司需求,要做一个可拖拽的甘特图来实现排期需求,官方的插件要付费还没有中文的官方文档可以看,就去找了各种开源的demo来看,功能上都不是很齐全,于是总结了很多demo,合在一起组成了一版较为完整的满足需求的甘特图。 1.拖拽  拖拽功能是甘特图的主要功

    2024年02月03日
    浏览(48)
  • 【vue2】element-ui el-transfer扩展 实现多列效果一对多

    vue2 el-transfer 穿梭框实现多类别 template 复制Transfer源码中的template,并拓展我们需要的列表2和button script 这里重写了Transfer的addToLeft方法,按着element-ui的逻辑写出第二个列表的逻辑即可。源码就不做解释了,这个组件比较简单,感兴趣的朋友可以去看看 style GitHub地址

    2024年02月08日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包