• el-table支持分页多选


    <template>
      <div>
        <el-dialog
          :title="`包含素材类型`"
          :visible.sync="visible"
          width="60%"
          center
          append-to-body
          :before-close="handleClose"
        >
          <div
            class="box"
            v-loading="tableLoading"
          >
    
            <!-- 内容区域 -->
            <div class="contend">
              <el-table
                :data="tableData"
                ref="multipleTable"
                stripe
                border
                style="width: 100%"
                @select="handleSelectionChange"
                @select-all="handleSelectionChange"
              >
                <el-table-column
                  type="selection"
                  width="55"
                >
                </el-table-column>
                <el-table-column
                  prop="id"
                  label="id"
                  align="center"
                  width="100"
                >
                </el-table-column>
                <el-table-column
                  prop="name"
                  label="名称"
                  align="center"
                  min-width="250"
                >
                </el-table-column>
              </el-table>
            </div>
            <!-- 分页 -->
            <Pagination
              v-if="tableData.length > 0"
              :total.sync="pagination.total"
              :page.sync="pagination.page"
              :page_size.sync="pagination.page_size"
              @paginationChange="paginationChange"
            ></Pagination>
          </div>
          <div class="flex mt40">
            <el-button
              size="mini"
              type="primary"
              style="marginRight: 100px"
              @click="submit('ruleForm')"
            >确 定</el-button>
            <el-button
              size="mini"
              @click="handleClose"
            >取 消</el-button>
          </div>
        </el-dialog>
      </div>
    </template>
    
    <script>
    import { getPaletteTypeList } from '@/api/product.js'
    import _ from 'lodash'
    import Pagination from '@/components/pagination/index.vue'
    
    
    
    
    export default {
      data () {
        return {
          tableLoading: false,
          tableData: [],
    
          // 分页器
          pagination: {
            total: 300,
            page: 1,
            page_size: 10
          },
          // 批量移除
          aboutBatchDele: {
            deleArr: [],
            singlePage: []
          }
        }
      },
      watch: {
        visible () {
          if (this.visible) {
            this.pagination.page = 1
            this.pagination.page_size = 10
            this.getData({ page: this.pagination.page, page_size: this.pagination.page_size })
            this.aboutBatchDele.deleArr = this.propData
          }
    
        }
      },
      props: {
        visible: {
          type: Boolean
        },
        propData: {
          type: Array
        },
      },
    
      methods: {
        // 原始获取数据
        async getData (obj) {
          let results = await getPaletteTypeList({ ...obj })
          console.log(results)
          if (results.data.code === 200 && results.data.msg === 'OK') {
            this.tableData = _.cloneDeep(results.data.data)
            this.managesinglePageForDele(_.cloneDeep(results.data.data))
            this.pagination.total = results.data.page.total
          }
        },
        // 分页获取数据
        paginationChange (page, pageSize) {
          this.getData({
            page,
            page_size: pageSize
          })
        },
        // 多选修改
        handleSelectionChange (val) {
          // this.aboutBatchDele.singlePage = val.map(item => item.id)
          // 整理当前页是删除的id
          let valItem = val.map(item => {
            return item.id
          })
          // 修改当前页是删除功能的
          this.aboutBatchDele.singlePage.forEach(item => {
            if (valItem.includes(item.id)) {
              item.isDele = true
              this.manageDeleArr(item.id, true)
            } else {
              item.isDele = false
              this.manageDeleArr(item.id, false)
            }
          })
          console.log(this.aboutBatchDele.deleArr);
        },
        manageDeleArr (id, status) {
          let valItem = this.aboutBatchDele.deleArr
          if (status) {
            // 入移除部分
            if (!valItem.includes(id)) {
              this.aboutBatchDele.deleArr.push(id)
            }
          } else {
            // 不需要移除部分
            this.aboutBatchDele.deleArr = valItem.filter(item => {
              if (item !== id) return true
            })
          }
    
        },
        managesinglePageForDele (Arr) {
          this.aboutBatchDele.singlePage = Arr
          console.log(this.aboutBatchDele.deleArr);
          this.aboutBatchDele.singlePage.forEach(item => {
            if (this.aboutBatchDele.deleArr.includes(item.id)) {
              item.isDele = false
            } else {
              item.isDele = true
            }
          })
    
          // 更新页面
          this.$nextTick(() => {
            let valItem = this.aboutBatchDele.deleArr
    
            this.tableData.forEach(item => {
              if (valItem.includes(item.id)) {
                this.$refs.multipleTable.toggleRowSelection(item);
              }
            })
          })
    
        },
        // 关闭
        handleClose () {
          this.$emit('change', false)
          this.$emit('update:visible', false)
        },
        submit () {
          console.log(this.aboutBatchDele.deleArr);
          this.$emit('change', this.aboutBatchDele.deleArr)
          this.$emit('update:visible', false)
    
        },
      },
      components: {
        Pagination
      }
    }
    </script>
    
    <style scoped lang="less">
    .box {
      padding: 15px 15px;
    }
    .topSearch {
      background-color: #fff;
      border-radius: 10px;
    }
    </style>
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
  • 相关阅读:
    Java面对对象的特征之二:继承性 :why?
    【计算机网络】网络基础知识
    基于ThinkPHP6 + Layui + MySql实现的企业OA系统
    中学生物教学杂志中学生物教学杂志社中学生物教学编辑部2022年第15期目录
    力扣(104.101)补9.7
    GateWay实现负载均衡
    机器学习中类别不平衡问题的解决方案
    设计模式---抽象工厂模式
    java练习 day5
    Solon v2.2.1 发布。向 Graalvm Native 友好靠近
  • 原文地址:https://blog.csdn.net/gongliming_qd/article/details/125896139