若依-VUE 自动生成代码后显隐列不显示 and 保存每个显隐列的配置

如题
解决步骤

  1. 在自动生成的 right-toolbar 中 添加 :columns=“columns” 绑定到列数组中
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
  1. 添加列数组
 // 列信息
      columns: [
        { key: 0, label: `用户编号`, visible: true },
        { key: 1, label: `用户名称`, visible: true },
        { key: 2, label: `用户昵称`, visible: true },
        { key: 3, label: `部门`, visible: true },
        { key: 4, label: `手机号码`, visible: true },
        { key: 5, label: `状态`, visible: true },
        { key: 6, label: `创建时间`, visible: true }
      ],
  1. 在列上进行columns 补充
// 主要关注点
// 每一列中都要加入  不然按钮还是不会显示 
 v-if="columns[1].visible" 

代码

 <el-table-column type="selection" width="50" align="center" />
          <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
          <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
          <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
          <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
          <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
          <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">

前端修改

index.vue

/* :key="componentKey" 是因为 新增后 显隐列 dialog 不更新  需要强制让他+1去刷新子组件*/
 <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" @closeToolbarColumns="saveColumns" :columns="columns" :key="componentKey"></right-toolbar>



  created() {
  // 需要加入
    this.getColumnsList();
    this.getList();
  },
  
  methods: {
    /* 保存所选默认列 */
    /* 保存所选默认列 */
    saveColumns(){
      let columnList ={};
      columnList.tableName = this.$route.path;
      columnList.columns = JSON.stringify(this.columns);

      sessionStorage.setItem(this.tableName,columnList);
      this.$message({
          message: '成功保存配置',
          type: 'success'
      });
    },
	getColumnsList(){
      let columnList ={};
      columnList.tableName = this.$route.path;
      console.log(sessionStorage.getItem(this.tableName));
      if (sessionStorage.getItem(this.tableName) != null){
        this.columns = JSON.parse(sessionStorage.getItem(this.tableName));
      }
      //  强制刷新子组件
          this.componentKey+=1;
    },

rightToolbar/index.vue

//  注意  这段只新增了 @close='closeDialog'
  <el-dialog :title="title" :visible.sync="open" append-to-body @close='closeDialog'>
      <el-transfer
        :titles="['显示', '隐藏']"
        v-model="value"
        :data="columns"
        @change="dataChange"
      ></el-transfer>
    </el-dialog>

// 调用父组件 closeToolbarColumns   (@closeToolbarColumns="saveColums")
  methods: {
    // 关闭事件
    closeDialog(){
      this.$emit("closeToolbarColumns");
    },

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值