写一个可显示隐藏表格列的功能:el-table

实现效果如标题,写一个可显示隐藏表格列的功能,先看一下效果

视图层:表格头插槽,插入el-popover

<el-table-column fixed="right" prop="" label="操作" align="center">
          <!-- 配置表格 -->
          <template slot="header" slot-scope="scope">
            <el-popover placement="bottom" :width="700" @hide="configuration">
              <transition name="fade">
                <div>
                  <div v-if="false">{{ scope }}</div>
                  <div>选择显示字段(选项更改后请<span style="color: #e6a23c"
                  >点击框外</span
                >并<span style="color: #e6a23c">刷新页面</span>)</div>
                  <div>
                    <el-checkbox
                      v-for="item in columnData"
                      :model="item.name"
                      :checked="item.value"
                      :key="item.name"
                      @change="handleCheckChange(item)"
                      >{{ item.name }}</el-checkbox
                    >
                  </div>
                </div>
              </transition>
              <el-button size="mini" slot="reference" type="text"><i class="el-icon-setting"></i> 配置表格</el-button>
            </el-popover>
          </template>
          <!-- 下边的 template 是列表里的内容了,自己根据自身需求修改一下 -->

          <template slot-scope="row">
            <el-button v-if="orderState == 2" @click="printThisOrder(row.row)" type="text" size="mini"
              >打印订单</el-button
            >
            <el-button @click="printThisOrder(row.row)" type="text" size="mini">查看详情</el-button>
          </template>
        </el-table-column>

data中配合需要展示的字段

data(){
return{
columnData: [
        { name: '订单id', value: true },
        { name: '订单状态', value: true },
        { name: '商品图片', value: true },
        { name: '商品名称', value: true },
        { name: '规格名称', value: true },
        { name: '订单商品数量', value: true },
        { name: '邮费金额', value: true },
        { name: '总支付金额', value: true },
        { name: '主播单价', value: true },
        { name: '订单是否超时', value: true },
        { name: '打印状态', value: true },
        { name: '发货状态', value: true },
        { name: '快递单号', value: true },
        { name: '用户下单时间', value: true },
        { name: '主播下单时间', value: true },
      ],
}
 }


配合方法,更改选择框的value值,并存进localStorage持久化

/**
     * ==============保存表格字段====================
     */
    configuration() {
      // 框失焦保存选择
      localStorage.setItem('orderAdminColumn', JSON.stringify(this.columnData));
    },
    handleCheckChange(item) {
      this.columnData.forEach((obj) => {
        if (obj.name == item.name) {
          obj.value = !obj.value;
        }
      });
    },

计算属性的一个值

computed: {
    columnList() {
      let list = [];
      this.columnData.forEach((item, ids) => {
        if (item.value == true) {
          list.push(item.name);
        } else list.splice(ids, 1);
      });
      return list;
    },
  },

挂载时提取localStorage中的数据

 mounted() {
    if (localStorage.getItem('orderAdminColumn')) {
      this.columnData = JSON.parse(localStorage.getItem('orderAdminColumn'));
    }
  },

el-table 里的 column,举几个例子

<el-table-column v-if="columnList.includes('商品名称')" prop="productName" label="商品名称" align="center"> </el-table-column>
        <el-table-column v-if="columnList.includes('规格名称')" prop="skuName" label="规格名称" align="center"> </el-table-column>
        <el-table-column v-if="columnList.includes('订单商品数量')" prop="sum" label="订单商品数量" align="center"> </el-table-column>

下面是随笔,方便直接拿来改用,可以不看了

<template slot-scope="scope2">
            <span v-if="scope2.row.productName.length < 10">{{ scope2.row.productName }}</span>
            <el-popover v-else placement="top" title="" trigger="hover">
              <div class="tagPlus" slot="reference">
                <span style="color: #1890ff" size="mini">{{ scope2.row.productName.substring(0, 10) + '...' }}</span>
              </div>
              {{ scope2.row.productName }}
            </el-popover>
          </template>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值