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>

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

相关文章

  • vue纯前端实现将页面导出为pdf和word文件

    vue纯前端实现将页面导出为pdf和word文件

    这篇文章主要为大家详细介绍了vue如何通过纯前端实现将页面导出为pdf和word文件,文中的示例代码讲解详细,有需要的小伙伴可以参考一下
    2024-01-01
  • 如何搭建一个完整的Vue3.0+ts的项目步骤

    如何搭建一个完整的Vue3.0+ts的项目步骤

    这篇文章主要介绍了如何搭建一个完整的Vue3.0+ts的项目步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • ElementUI如何修改Dialog的标题样式

    ElementUI如何修改Dialog的标题样式

    这篇文章主要介绍了ElementUI如何修改Dialog的标题样式问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue项目中使用require.context引入组件

    vue项目中使用require.context引入组件

    本文主要介绍了vue项目中使用require.context引入组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • vue实现列表拖拽排序的示例代码

    vue实现列表拖拽排序的示例代码

    本文主要介绍了vue实现列表拖拽排序的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • vue+three.js实现炫酷的3D登陆页面示例详解

    vue+three.js实现炫酷的3D登陆页面示例详解

    这篇文章主要为大家介绍了vue+three.js实现炫酷的3D登陆页面示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue 插件的方法代码详解

    vue 插件的方法代码详解

    在开发项目的时候,我们一般都用 vue-cli 来避免繁琐的 webpack 配置和 template 配置。这篇文章主要介绍了如何写一个 vue 插件,需要的朋友可以参考下
    2019-06-06
  • Vue3 Radio单选切换展示不同内容实现代码

    Vue3 Radio单选切换展示不同内容实现代码

    这篇文章主要介绍了Vue3 Radio单选切换展示不同内容,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • vue计算属性无法监听到数组内部变化的解决方案

    vue计算属性无法监听到数组内部变化的解决方案

    今天小编就为大家分享一篇vue计算属性无法监听到数组内部变化的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue3发送post请求出现400 Bad Request报错的解决办法

    Vue3发送post请求出现400 Bad Request报错的解决办法

    这篇文章主要给大家介绍了关于Vue3发送post请求出现400 Bad Request报错的解决办法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02

最新评论