1. 程式人生 > 程式設計 >vue element實現表格增加刪除修改資料

vue element實現表格增加刪除修改資料

本文例項為大家分享了vue element實現表格增加刪除修改資料的具體程式碼,供大家參考,具體內容如下

這裡用到是設定一個彈出框來實現此功能,還有一種方法是直接在原來的基礎上面進行修改

效果如下:

vue element實現表格增加刪除修改資料

表格的table:

<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 size="small" @click="handleEdit(scope.$index,scope.row)">編輯</el-button>
      <el-button size="small" type="danger" @click="handleDelete(scope.$index,scope.row)">刪除</el-button>
    </template>
  </el-table-column>
</el-table>

彈出框的設定:

<!-- 下面這個用來設定點選新增按鈕的彈出框,裡面可以進行巢狀表格來展示彈出的表格資訊,使用下面的:visible.sync來控制顯示與否 -->
<!-- 裡面繫結的是我們新設定的值,填寫完成後,將我們這個新值塞到頁面中所有的資料當中去 -->
<el-dialog title="使用者資訊" :visible.sync="dialogFormVisible">
  <!-- 在el-dialog中進行巢狀el-form實現彈出表格的效果 -->
  <el-form :model="form">
    <el-form-item label="地址" :label-width="formLabelWidth">
      <el-input v-model="form.address" auto-complete="off"></el-input>
    </el-form-item>
    <el-form-item label="姓名" :label-width="formLabelWidth">
      <el-input v-model="form.name" auto-complete="off"></el-input>
    </el-form-item>
    <el-form-item label="日期" :label-width="formLabelWidth">
      <el-date-picker
        v-model="form.date"
        type="date"
        placeholder="選擇日期"
        value-format="yyyy-MM-dd"
      ></el-date-picker>
    </el-form-item>

    <el-form-item label="性別" :label-width="formLabelWidth">
      <el-select v-model="form.region" placeholder="性別">
        <el-option label="男" value="男"></el-option>
        <el-option label="女" value="女"></el-option>
      </el-select>
    </el-form-item>
  </el-form>
  <div slot="footer" class="dialog-footer">
    <el-button @click="cancel">取 消</el-button>
    <!-- 設定觸發更新的方法 -->
    <el-button type="primary" @click="update">確 定</el-button>
  </div>
</el-dialog>

完整的程式碼如下:

<template>
  <div class="basetable" v-loading="loading" element-loading-text="拼命載入中">
    <!-- v-loading 設定載入 -->
    <div class="selectMenu">
      <el-date-picker v-model="value6" type="daterange" placeholder="選擇日期範圍"></el-date-picker>
      <!-- 點選觸發add方法 --www.cppcns.com
> <el-button type="primary" @click="add">新增</el-button> </div> <div class="tableMain"> <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 size="small" @click="handleEdit(scope.$index,scope.row)">編輯</el-button> <el-button size="small" type="danger" @click="handleDelete(scope.$index,scope.row)">刪除</el-button> </template> </el-table-column> </el-table> </div> <div class="page"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage3" :page-size="100" layout="prev,pager,next,jumper" :total="1000" ></el-pagination> </div> <!-- 下面這個用來設定點選新增按鈕的彈出框,裡面可以進行巢狀表格來展示彈出的表格資訊,使用下面的:visible.sync來控制顯示與否 --> <!-- 裡面繫結的是我們新設定的值,填寫完成後,將我們這個新值塞到頁面中所有的資料當中去 --> <el-dialog title="使用者資訊" :visible.sync="dialogFormVisible"> <!-- 在el-dialog中進行巢狀el-form實現彈出表格的效果 --> <el-form :model="form"> <el-form-item label="地址" :label-width="formLabelWidth"> <el-input v-model="form.address" auto-complete="off"></el-input> </el-form-item> <el-form-item label="姓名" :label-width="formLabelWidth"> <el-input v-model="form.name" auto-complete="off"></el-input> </el-form-item> <el-form-item label="日期" :label-width="formLabelWidth"> <el-date-picker v-model="form.date" type="date" placeholder="選擇日期" value-format="yyyy-MM-dd" ></el-date-picker> </el-form-item> <el-form-item label="性別" :label-width="formLabelWidth"> <el-select v-model="form.region" placeholder="性別"> <el-option label="男" value="男"></el-option> <el-option label="女" value="女"></el-option> </el-select> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="cancel">取 消</el-button> <!-- 設定觸發更新的方法 --> <el-button type="primary" @click="update">確 定</el-button> </div> </el-dialog> </div> </template> <script type="text/ecmascript-6"> export default { data() { return { loading: true,// 表格的資料 tableData: [ { date: "2017-05-01",name: "士兵76",region: "男",address: "國王大道",city: "" },{ date: "2017-05-02",name: "源氏",address: "尼泊爾",{ date: "2017-05-03",name: "黑百合",region: "女",address: "沃斯卡亞工業區",{ date: "2017-05-04",name: "獵空",name: "查莉婭",name: "禪雅塔",name: "半藏",address: "花村",city: "" } ],// 城市選擇資料 cityList: [ { nam程式設計客棧e: "國王大道" },{ name: "尼泊爾" },{ name: "沃斯卡亞工業區" },{ name: "花村" },{ name: "月球基地" } ],dialogFormVisible: false,formLabelWidth: "80px",// 設定form用於進行新增的時候繫結值 form: {},value6: "",currentPage3: 1,currentIndex: "" }; },created() { // 設定回撥函式,進行1.5秒的loading動畫顯示 setTimeout(() => { this.loading = false; },1500); },methods: { showTime() { this.$alert(this.value6,"起止時間",{ confirmButtonText: "確定",callback: action => { this.$message({ type: "info",message: "已顯示" }); } }); },// 增加資料的方式,單獨的設定一些值,用於增加功能,這些值放在物件裡面進行設定,然後將這個新增的物件塞到總資料裡面 add() { this.form = { date: "",name: "",region: "",advnzfYwyzuOdress: "" }; // 設定點選按鈕之後進行顯示對話方塊 this.dialogFormVisible = true; },update() { // this.form.date = reformat(this.form.date); // 可以在html上面進行設定日期的格式化 // 將我們新增的資訊提交到總資料裡面 this.tableData.push(this.form); this.dialogFormVisible = false; },handleEdit(index,row) { // 將資料的index傳遞過來用於實現資料的回顯 this.form = this.tableData[index]; this.currentIndex = index; // 設定對話方塊的可見 this.dialogFormVisible = true; },handleDelete(index,row) { // 設定類似於console型別的功能 this.$confirm("永久刪除該檔案,是否繼續?","提示",cancelButtonText: "取消",type: "warning" }) .then(() => { // 移除對應索引位置的資料,可以對row進行設定向後臺請求刪除資料 this.tableData.splice(index,1); this.$message({ type: "success",message: "刪除成功!" }); }) .catch(() => { this.$message({ type: "info",message: "已取消刪除" }); }); },cancel() { // 取消的時候直接設定對話方塊不可見即可 this.dialogFormVisible = false; },handleSizeChange(val) { console.log(`每頁 ${val} 條`); },handleCurrentChange(val) { console.log(`當前頁: ${val}`); } } }; </script> <style lang="scss"> .basetable { .tableMain { margin: { top: 10px; } } .page { float: left; margin: { vnzfYwyzuO top: 10px; } } } www.cppcns.com</style>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。