点击按钮打开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>
相关推荐
脑袋大大的3 小时前
JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
开发语言·javascript·性能优化
速易达网络5 小时前
RuoYi、Vue CLI 和 uni-app 结合构建跨端全家桶方案
javascript·vue.js·低代码
耶啵奶膘5 小时前
uniapp+firstUI——上传视频组件fui-upload-video
前端·javascript·uni-app
JoJo_Way5 小时前
LeetCode三数之和-js题解
javascript·算法·leetcode
视频砖家5 小时前
移动端Html5播放器按钮变小的问题解决方法
前端·javascript·viewport功能
lyj1689976 小时前
vue-i18n+vscode+vue 多语言使用
前端·vue.js·vscode
GISer_Jing8 小时前
Monorepo+Pnpm+Turborepo
前端·javascript·ecmascript
天涯学馆8 小时前
前端开发也能用 WebAssembly?这些场景超实用!
前端·javascript·面试
我在北京coding9 小时前
TypeError: Cannot read properties of undefined (reading ‘queryComponents‘)
前端·javascript·vue.js