当前位置:   article > 正文

控制el-table的列显示隐藏_v-permission 控制el-table-column是否显示

v-permission 控制el-table-column是否显示

控制el-table的列显示隐藏,一般的话可以通过循环来实现,但是假如业务及页面比较复杂的话,list数组循环并不好用。

在我们的页面中el-table-column是固定的,因为现在是对现有的进行维护和迭代更新。

对需要控制列显示隐藏的页面进行控制。

1.封装的组件代码如下:

1.1 el-tooltip用于文字提示:不明白el-tooltip点击此处了解

1.2 el-row内3个按钮分别为form表单显示隐藏,页面刷新,控制列弹层。

1.3 el-transfer为打开的弹层(穿梭框):不明白el-transfer点击此处了解

  1. <template>
  2. <div class="top-right-btn" :style="style">
  3. <el-row>
  4. <el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
  5. <el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
  6. </el-tooltip>
  7. <el-tooltip class="item" effect="dark" content="刷新" placement="top">
  8. <el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
  9. </el-tooltip>
  10. <el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
  11. <el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
  12. </el-tooltip>
  13. </el-row>
  14. <el-dialog :title="title" :visible.sync="open" append-to-body>
  15. <el-transfer
  16. :titles="['显示', '隐藏']"
  17. v-model="value"
  18. :data="columns"
  19. @change="dataChange"
  20. ></el-transfer>
  21. </el-dialog>
  22. </div>
  23. </template>

 2.js代码:

  1. <script>
  2. export default {
  3. name: "RightToolbar",
  4. data() {
  5. return {
  6. // 显隐数据
  7. value: [],
  8. // 弹出层标题
  9. title: "显示/隐藏",
  10. // 是否显示弹出层
  11. open: false,
  12. };
  13. },
  14. props: {
  15. showSearch: {
  16. type: Boolean,
  17. default: true,
  18. },
  19. columns: {
  20. type: Array,
  21. },
  22. search: {
  23. type: Boolean,
  24. default: true,
  25. },
  26. gutter: {
  27. type: Number,
  28. default: 10,
  29. },
  30. },
  31. computed: {
  32. style() {
  33. const ret = {};
  34. if (this.gutter) {
  35. ret.marginRight = `${this.gutter / 2}px`;
  36. }
  37. return ret;
  38. }
  39. },
  40. created() {
  41. // 显隐列初始默认隐藏列
  42. for (let item in this.columns) {
  43. if (this.columns[item].visible === false) {
  44. this.value.push(parseInt(item));
  45. }
  46. }
  47. },
  48. methods: {
  49. // 搜索
  50. toggleSearch() {
  51. this.$emit("update:showSearch", !this.showSearch);
  52. },
  53. // 刷新
  54. refresh() {
  55. this.$emit("queryTable");
  56. },
  57. // 右侧列表元素变化
  58. dataChange(data) {
  59. for (let item in this.columns) {
  60. const key = this.columns[item].key;
  61. this.columns[item].visible = !data.includes(key);
  62. }
  63. },
  64. // 打开显隐列dialog
  65. showColumn() {
  66. this.open = true;
  67. },
  68. },
  69. };
  70. </script>

3.页面样式如下两图所示:

左边为页面的三个按钮,下面为弹层样式(一眼知道蒸馍操作了哦)

4.在data中·定义变量

用于控制form表单显示隐藏showSearch,以及table的列名数组columns

  1. data() {
  2. return {
  3. showSearch:true,
  4. columns: [
  5. { key: 0, label: `多选列`, visible: true },
  6. { key: 1, label: `序号列`, visible: true },
  7. { key: 2, label: `库存编号`, visible: true },
  8. { key: 3, label: `库区名称`, visible: true },
  9. { key: 4, label: `状态`, visible: true },
  10. { key: 5, label: `平台仓库`, visible: true },
  11. { key: 6, label: `负责人`, visible: true },
  12. { key: 7, label: `拣货方式`, visible: true },
  13. { key: 8, label: `库区类型`, visible: true },
  14. { key: 9, label: `操作`, visible: true },
  15. ],

5.在页面中引入使用:

(搞成全局的就不用一个个引入了)

  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns" />

其中showSearch和colums上面讲了,还有一个getList就是页面获取数据的函数

6.对搜索和列进行显示隐藏:

对需要显示隐藏的列加上如下就行,并且和定义的columns设定的key需要一致哦。

if="columns[num].visible"
  1. 表单:
  2. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"
  3. v-show="showSearch">
  4. btn按钮:
  5. <el-button icon="el-icon-search" size="small" @click="handleQuery"
  6. v-show="showSearch">搜索</el-button>
  7. <el-button icon="el-icon-refresh-left" size="small" @click="resetQuery"
  8. class="white_black2" v-show="showSearch">重置</el-button>
  9. 需要控制显示隐藏的el-table-column列:
  10. <el-table-column prop="branchName" align="center" label="平台仓库"
  11. v-if="columns[5].visible"></el-table-column>

控制el-talbe列的显示隐藏完成。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/103278
推荐阅读
相关标签
  

闽ICP备14008679号