点击按钮打开dialog嵌套表格checked数据关闭dialog回显checked数据

介绍:点击按钮打开dialog嵌套表格,勾选数据,点击确认关闭弹窗并且回显选中得数据,回显的数据被删除,dialog里面的数据也被取消勾选,废话不多说 上代码!!!

这里的勾选回显-外层

dialog嵌套表格-里层

html 复制代码
<template>
  <div class="award-page">
    <el-button @click="handlerService" class="btn">选择服务</el-button>
    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column
        prop="date"
        label="项目名称">
      </el-table-column>
      <el-table-column
        prop="name"
        label="服务分类">
      </el-table-column>
      <el-table-column
        prop="address"
        label="价值">
      </el-table-column>
      <el-table-column
        prop="address"
        label="描述">
      </el-table-column>
      <el-table-column
        label="操作"
      >
        <template slot-scope="scope">
          <el-button @click="deleteItem(scope.row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-dialog
      title="添加服务项目"
      :visible.sync="dialogFlag"
      width="50%"
    >
      <el-table
        :data="addServiceData"
        ref="table"
        @selection-change="handleSelectionChange"
        style="width: 100%">
        <el-table-column
          type="selection"
          width="55">
        </el-table-column>
        <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>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogFlag = false">取 消</el-button>
        <el-button type="primary" @click="handleConfirm">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        dialogFlag: false,
        tableData: [], // 外层数据
        preStoredData: [], // 暂存数据
        addServiceData: [{ // 里层数据
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
      }
    },
    methods: {
      // 打开弹窗
      handlerService () {
        this.dialogFlag = true
      },
      // 里层-勾选
      handleSelectionChange (data) {
        this.preStoredData = data
      },
      // 里层-确认
      handleConfirm () {
        this.dialogFlag = false
        this.tableData = this.preStoredData
      },
      // 外层-删除
      deleteItem (row) {
        this.tableData = this.tableData.filter(item => item !== row);
        this.cancelSelection(row)
      },
      // 里层-取消勾选
      cancelSelection(row) {
        const table = this.$refs.table;
        // 使用toggleRowSelection来取消选中
        table.toggleRowSelection(row, false);
      },
    }
  }
</script>

<style lang="scss" scoped>
</style>
相关推荐
CodeClimb5 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
沈梦研5 小时前
【Vscode】Vscode不能执行vue脚本的原因及解决方法
ide·vue.js·vscode
轻口味6 小时前
Vue.js 组件之间的通信模式
vue.js
光头程序员7 小时前
grid 布局react组件可以循数据自定义渲染某个数据 ,或插入某些数据在某个索引下
javascript·react.js·ecmascript
fmdpenny8 小时前
Vue3初学之商品的增,删,改功能
开发语言·javascript·vue.js
小美的打工日记8 小时前
ES6+新特性,var、let 和 const 的区别
前端·javascript·es6
涔溪9 小时前
有哪些常见的 Vue 错误?
前端·javascript·vue.js
程序猿online9 小时前
前端jquery 实现文本框输入出现自动补全提示功能
前端·javascript·jquery
亦黑迷失11 小时前
vue 项目优化之函数式组件
前端·vue.js·性能优化
Turtle11 小时前
SPA路由的实现原理
前端·javascript