el-table 实现动态隐藏列

html

 <el-popover placement="bottom" trigger="hover" width="80">
                        <template #reference>
                            <el-button :icon="Operation" circle></el-button>
                        </template>
                        <div>
                            <el-checkbox-group v-model="checkedColumns" @change="watchCheckedColumns" class="checkbox-wrap">
                                <el-checkbox size="large" style="display: block" v-for="item in checkBoxGroup"
                                    :key="item.value" :label="item.value">{{ item.label }}</el-checkbox>
                            </el-checkbox-group>
                        </div>
                    </el-popover>


                    <el-table-column v-if="tableColVisiableData.taskName" prop="taskName" label="任务名"
                    width="420"></el-table-column>
                <el-table-column v-if="tableColVisiableData.description" prop="description" label="描述"
                    show-overflow-tooltip></el-table-column>
                <el-table-column v-if="tableColVisiableData.totalNum" prop="totalNum" label="任务总数"
                    width="120"></el-table-column>
                <el-table-column v-if="tableColVisiableData.finishNum" prop="finishNum" label="完成数"
                    width="120"></el-table-column>
                <el-table-column v-if="tableColVisiableData.taskStatus" prop="taskStatus" label="状态"
                    width="120"></el-table-column>
                <el-table-column v-if="tableColVisiableData.employeeId" prop="employeeId" label="操作人"
                    width="120"></el-table-column>
                <el-table-column v-if="tableColVisiableData.createTime" prop="createTime" label="创建时间"
                    width="200"></el-table-column>

js


//用于存放随机数用于key属性的绑定
var reload = ref();

// 多选框的列表,列出表格的每一列
const checkBoxGroup = ref(
    [{
        "label": "任务名",
        "value": "taskName"
    }, {
        "label": "描述",
        "value": "description"
    }, {
        "label": "任务总数",
        "value": "totalNum"
    }, {
        "label": "完成数",
        "value": "finishNum"
    }, {
        "label": "状态",
        "value": "taskStatus"
    }, {
        "label": "操作人",
        "value": "employeeId"
    }, {
        "label": "创建时间",
        "value": "createTime"
    }]
)

// 当前选中的多选框,代表当前展示的列
const checkedColumns = ref([
    "taskName",
    "description",
    "totalNum",
    "finishNum",
    "taskStatus",
    "employeeId",
    "createTime"
])

// 列出表格中的每一列,默认都展示
const tableColVisiableData = reactive({
    "taskName": true,
    "description": true,
    "totalNum": true,
    "finishNum": true,
    "taskStatus": true,
    "employeeId": true,
    "createTime": true,
})
const watchCheckedColumns = () => {
    console.log(checkedColumns.value);
    for (let key in tableColVisiableData) {
        tableColVisiableData[key] = false;
    }
    checkedColumns.value.forEach((item) => {
        tableColVisiableData[item] = true
    })
    // 重新渲染表格
    reload.value = Math.random()
}

本文作者:Joe's blog

本文链接:https://www.cnblogs.com/rise0111/p/17531456.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   FromZeroToOne  阅读(994)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.