表格自定义列

表格自定义列

图片功能展示:

在这里插入图片描述

代码展示

<a style="padding-right: 10px" @click="searchReset"><a-icon type="reload" style="margin-right: 5px"/>刷新</a>
<!--自定义列-->
<a-popover title="自定义列" trigger="click" placement="bottomRight">
  <template slot="content">
    <a-checkbox-group @change="onColSettingsChange" v-model="settingColumns" :defaultValue="settingColumns">
      <a-row>
        <template v-for="(item,index) in defColumns">
          <template v-if="item.key!='rowIndex'&& item.dataIndex!='action'">
            <!-- :v-has="'testdemo:{{item.dataIndex}}'" :系统设置权限标识-->
            <a-col :span="12" :v-has="'testdemo:{{item.dataIndex}}'" ><a-checkbox :value="item.dataIndex" >{{ item.title }}</a-checkbox></a-col>
          </template>
        </template>
      </a-row>
    </a-checkbox-group>
  </template>
  <a><a-icon type="setting" />自定义列</a>
</a-popover>
 import Vue from 'vue'
 import { colAuthFilter } from "@/utils/authFilter"
 
/*columns:列表展示的列,初始为空。
settingColumns:保存勾选的列设置
defColumns:定义列表可以展示的列信息*/
//表头
columns: [],
//列设置
settingColumns:[],
//列定义
defColumns:[
  {
    title: '序号',
    dataIndex: '',
    key: 'rowIndex',
    width: 60,
    align: 'center',
    customRender: function(t, r, index) {
      return parseInt(index) + 1
    }
  },
  {
    title: '设备类型',
    align: 'center',
    width: 80,
    dataIndex: 'typeName'
  },

  {
    title: '设备型号',
    align: 'center',
    width: 80,
    dataIndex: 'modelName'
  },
  {
    title: '操作',
    dataIndex: 'action',
    scopedSlots: { customRender: 'action' },
    align: 'center',
    width: 100
  }
],
 	//列设置更改事件
    onColSettingsChange (checkedValues) {
      var key = this.$route.name+":colsettings";
      Vue.ls.set(key, checkedValues, 7 * 24 * 60 * 60 * 1000)
      this.settingColumns = checkedValues;
      const cols = this.defColumns.filter(item => {
        if(item.key =='rowIndex'|| item.dataIndex=='action'){
          return true
        }
        if (this.settingColumns.includes(item.dataIndex)) {
          return true
        }
        return false
      })
      this.columns =  cols;
    },
    initColumns(){
     //权限过滤(列权限控制时打开,修改第二个参数为授权码前缀)
     //'testdemo':系统设置授权标识
     // this.defColumns = colAuthFilter(this.defColumns,'testdemo:');
      var key = this.$route.name+":colsettings";
      let colSettings= Vue.ls.get(key);
      if(colSettings==null||colSettings==undefined){
        let allSettingColumns = [];
        this.defColumns.forEach(function (item,i,array ) {
          allSettingColumns.push(item.dataIndex);
        })
        this.settingColumns = allSettingColumns;
        this.columns = this.defColumns;
      }else{
        this.settingColumns = colSettings;
        const cols = this.defColumns.filter(item => {
          if(item.key =='rowIndex'|| item.dataIndex=='action'){
            return true;
          }
          if (colSettings.includes(item.dataIndex)) {
            return true;
          }
          return false;
        })
        this.columns =  cols;
      }
    }
  },
  created() {
    this.initColumns()
    this.disableMixinCreated=true;
    this.columns = colAuthFilter(this.columns,'testdemo:');
    this.loadData();
    this.initDictConfig();
  }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值