el-table回显复选框和设置el-table表头全选框隐藏或

2023-06-15  本文已影响0人  jesse28

1.设置el-table表头全选框隐藏或禁用:参考链接https://blog.csdn.net/weixin_63896561/article/details/128922622

2.el-table表格勾选判断当前操作是勾选还是取消勾选(只支持用户手动点击表格前面勾选框的勾选)参考链接
https://blog.csdn.net/Amnesiac666/article/details/111602066

<template>
  <el-dialog :title="title" width="850px" :visible="show" @close="onClose" :close-on-click-modal="false">
    <div class="containner" style="height:600px">
      <el-form :model="form" ref="form" label-width="80px" :inline="true" size="small">
        <el-form-item label="姓名:">
          <el-input v-model="form.name" style="width:200px"></el-input>
        </el-form-item>
        <el-form-item label="账号:">
          <el-input v-model="form.account" style="width:200px"></el-input>
        </el-form-item>
        <el-form-item label="部门:">
          <treeselect style="width:200px" :default-expand-level="3" v-model="form.orgId" noResultsText="暂无结果" :searchable="true" :options="orgList" :normalizer="normalizer" :show-count="true" placeholder="请选择部门" />
        </el-form-item>
        <el-form-item label="电话号码:">
          <el-input style="width:200px" v-model="form.mobile"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button @click="getList" type="primary" icon="el-icon-search">查询</el-button>
          <el-button @click="cacelList" icon="el-icon-delete">重置</el-button>
        </el-form-item>
      </el-form>
      <el-table @select='onTableSelect' border :row-key="getRowKeys" highlight-current-row :height="430" class="tableAll" ref="multipleTable" :header-cell-style="{ background: '#F4F4F4' }" :data="tableData" style="width: 100%;margin-bottom: 20px;">
        <el-table-column align="center" type="selection" :reserve-selection="true" width="80" />
        <el-table-column prop="name" label="用户名"></el-table-column>
        <el-table-column prop="account" label="账号"></el-table-column>
        <el-table-column prop="mobile" label="账号"></el-table-column>
      </el-table>
      <pagination :total="total" :page.sync="pageNum" :limit.sync="pageSize" @pagination="pagination" />
    </div>
  </el-dialog>
</template>
    
<script>
import Pagination from "@/components/Pagination";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { changeTree } from "@/utils/index";
import {
  allUserListApi,
  systemOrgFindList,
  addBindingUser,
  deleteBindingUser,
} from "@/api/system/sys";
export default {
  props: ["title", "id"],
  data() {
    return {
      show: true,
      pageNum: 1,
      pageSize: 10,
      total: 0, // 总页数
      orgList: [], //部门数组
      tableData: [],
      form: {
        name: "", //用户名
        account: "", //账号
        orgId: null, //部门
        mobile: "", //电话
      },
    };
  },
  components: {
    Treeselect,
    Pagination,
  },
  created() {
    this.getOrg();
    this.getList();
  },
  methods: {
    getRowKeys(row) {
      if (row.isCheck == "1") {
        //判断条件,根据自己的项目进行添加
        return row.id;
      }
    },
    /** 转换菜单数据结构 */
    normalizer(node) {
      return {
        id: node.id,
        label: node.orgName,
        children: node.children,
      };
    },
    getList() {
      let params = Object.assign(
        {},
        { roleId: this.id },
        this.form,
        { pageNum: this.pageNum },
        { pageSize: this.pageSize }
      );
      allUserListApi(params).then((res) => {
        console.log("输出参数", res);
        if (res.data) {
          if (this.pageNum > 1 && res.data.list.length === 0) {
            this.pageNum = 1
            this.getList()
          }
          this.tableData = res.data.list;
          this.total = res.data.total;
          this.tableData = JSON.parse(JSON.stringify(res.data.list));
          this.$nextTick(()=>{
            this.tableData.forEach((item) => {
              console.log("输出什么", item.isCheck);
              if (item.isCheck == "1") {
                //判断条件,根据自己的项目进行添加
                this.$refs.multipleTable.toggleRowSelection(item, true);
              } else if (item.isCheck == "0") {
                this.$refs.multipleTable.toggleRowSelection(item, false);
              }
            });
          })
        }
      });
    },
    // 获取部门
    getOrg() {
      systemOrgFindList({}).then((res) => {
        if (res && res.data) {
          this.orgList = changeTree(res.data, "order");
        }
      });
    },
    // 重置
    cacelList() {
      this.pageNum = 1
      this.form.name = "";
      this.form.account = "";
      this.form.orgId = null;
      this.form.mobile = "";
      this.getList();
    },

    onTableSelect(rows, row) {
      console.log("触发表格", rows, row);
      let selected = rows.length && rows.indexOf(row) !== -1;
      console.log(selected); // true就是选中,0或者false是取消选中
      if (selected) {
        addBindingUser({
          roleId: this.id,
          userId: row.id,
        }).then((res) => {});
      } else {
        deleteBindingUser({
          roleId: this.id,
          userId: row.id,
        }).then((res) => {});
      }
    },
    // 分页查询
    pagination(val) {
      this.pageNum = val.page;
      this.pageSize = val.limit;
      this.getList();
    },
    //关闭事件
    onClose() {
      this.$emit("onClose");
    },
  },
};
</script>
    
<style lang="scss" scoped>

::v-deep .el-table__header-wrapper .el-checkbox {
  // display: none;//设置不成功,页面卡顿
  visibility: hidden;
}
.el-dialog__wrapper {
  ::v-deep .el-dialog {
    border-top-left-radius: 2px;
    border-top-right-radius: 2px;

    .el-dialog__header {
      border-top-left-radius: 2px;
      border-top-right-radius: 2px;
      background-color: #1890ff;

      .el-dialog__title {
        color: #fff;
        font-size: 16px;
        font-weight: 600;
      }

      .el-dialog__close {
        color: #fff;
      }
    }

    .el-dialog__body {
      padding: 10px;
    }

    .el-dialog__footer {
      // border-top: 1px solid #e8eaec !important;
      padding: 10px;
      padding-top: 30px;
    }
  }
}
</style>
    
上一篇下一篇

猜你喜欢

热点阅读