vue实现自定义表格工具扩展

 更新时间:2022年04月12日 08:31:10   作者:$爱的陪伴  
这篇文章主要为大家详细介绍了vue实现自定义表格工具扩展,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue自定义表格工具扩展的具体代码,供大家参考,具体内容如下

工具组件

<template>
    <div class="right-btn">
        <el-row>
            <el-tooltip
                effect="dark"
                :content="showSearch ? '隐藏搜索' : '显示搜索'"
                placement="top"
            >
                <el-button 
                    size="mini" 
                    circle 
                    icon="el-icon-search"
                    @click="toggleSearch()" 
                />
            </tooltip>
            <el-tooltip
                effect="dark"
                content="刷新"
                placement="top"
            >
                <el-button 
                    size="mini"
                    circle
                    icon="el-icon-refresh"
                    @click="refresh()"
                />
            </el-tooltip>
            <el-tooltip
                effect="dark"
                content="显隐列"
                placement="top"
                v-if="columns"
            >
                <el-button 
                    size="mini"
                    circle
                    icon="el-icon-menu"
                    @click="showColumn()"
                />
            </el-tooltip>
        </el-row>

        // 显隐列对话框
        <el-dialog
            :title="title"
            :visible.sync="open"
            append-to-body
        >
            <el-transfer
                :title="['显示', '隐藏']"
                v-model="value"
                :data="columns"
                @change="changeData"
            ></el-transfer>
        </el-dialog>
    </div>
</template>

<script>
    export default {
        name: 'RightToolbar',
        data () {
            return {
                value: [], // 显隐数据
                title: "显示/隐藏", // 弹出层标题
                open: false, // 弹出层显示状态
            }
        },
        prop: {
            showSearch: {
                type: Boolean,
                default: true
            },
            columns: {
                type: Array
            }
        },

        created () {
            // 显隐列初始默认隐藏列
            for (let item in this.columns) {
                if (this.columns[item].visible === false) {
                    this.value.push(parseInt(item))
                }
            }
        }
        methods: {
            // 搜索
            toggleSeach () {
                this.$emit('update:showSeach', !this.showSearch);
            },
            // 刷新
            refresh () {
                this.$emit('queryTable');
            },
            // 打开显隐列对话框
            showColumn (){
                 this.open = true;
             },
             // 右侧列表元素变化
             changeData (data) {
                 for (var item in this.columns) {
                     const key = this.columns[item].key;
                     this.columns[item].visible = !data.includes(key);
                 }
             }
        }
    }
</script>

在main.js全局注册工具组件

import RightToolbar from '@/components/RightToolbar';

// 全局组件挂载
Vue.component('RightToolbar', RightToolbar);

其他页面引入工具组件

<template>
    <div class="index">
        <el-form v-show="showSearch"></el-form>
        <right-toolbar
            :showSearch.sync="showSearch"
            @queryTable="getList"
            :columns="columns"
        >
        <right-toolbar>
        <el-table>
            <el-table-column label="用户编号" v-if="columns[0].visible"></el-table-column>
            <el-table-column label="用户名称" v-if="columns[1].visible"></el-table-column>
            <el-table-column label="用户昵称" v-if="columns[2].visible">
            </el-table-column>
        </el-table>
    </div>
</template>

<script>
    export default {
        data () {
            return {
                // 显示搜索条件
                showSearch: true,
                // 列信息
                columns: [
                    {key: 0, label: '用户编号', visible: true},
                    {key: 1, label: '用户名称', visible: true},
                    {key: 2, label: '用户昵称', visible: true}
                    // ...
                ]
            }
        },
        created () {
            this.getList();
        },
        // 查询
        getList () {
            // 调用接口
        }
    }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue3+pinia用户信息持久缓存token的问题解决

    vue3+pinia用户信息持久缓存token的问题解决

    本文主要介绍了vue3+pinia用户信息持久缓存token的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • vue实现实时搜索显示功能

    vue实现实时搜索显示功能

    这篇文章主要为大家详细介绍了vue实现实时搜索显示功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vue中的this.$router.push()路由传值方式

    vue中的this.$router.push()路由传值方式

    这篇文章主要介绍了vue中的this.$router.push()路由传值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue3 获取当前组件实例及场景分析

    Vue3 获取当前组件实例及场景分析

    在Vue 3中,getCurrentInstance是一个用于获取当前组件实例的重要函数,以下是对getCurrentInstance的详细分析,感兴趣的朋友一起看看吧
    2024-12-12
  • 如何使用vuex实现兄弟组件通信

    如何使用vuex实现兄弟组件通信

    这篇文章主要给大家介绍了关于如何使用vuex实现兄弟组件通信的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • vue中的严格模式如何取消

    vue中的严格模式如何取消

    这篇文章主要介绍了vue中的严格模式如何取消,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue3中使用qrcode库实现二维码生成

    Vue3中使用qrcode库实现二维码生成

    Vue3中实现二维码生成需要使用第三方库来处理生成二维码的逻辑,常用的库有 qrcode和 vue-qrcode,本文主要介绍了Vue3中使用qrcode库实现二维码生成,感兴趣的可以了解一下
    2023-12-12
  • vue2老项目中node-sass更换dart-sass的操作方法

    vue2老项目中node-sass更换dart-sass的操作方法

    这篇文章主要介绍了vue2老项目中node-sass更换dart-sass的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-07-07
  • vue设计一个倒计时秒杀的组件详解

    vue设计一个倒计时秒杀的组件详解

    这篇文章主要介绍了vue设计一个倒计时秒杀的组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue双向绑定原理及实现方法

    Vue双向绑定原理及实现方法

    Vue双向绑定是指数据模型和视图之间的数据同步,通过Object.defineProperty()方法实现数据劫持,利用观察者模式实现数据更新和视图更新的自动同步,实现方式包括指令、计算属性、v-model等,优化方法包括使用虚拟DOM、合理使用computed和watch等
    2023-04-04

最新评论