From 654aa6b30ccd30ef1efc0d083a2f48a8d8287a4e Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期三, 06 一月 2021 17:30:39 +0800
Subject: [PATCH] 表格右侧工具栏组件支持显隐列

---
 ruoyi-ui/src/components/RightToolbar/index.vue |   50 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/ruoyi-ui/src/components/RightToolbar/index.vue b/ruoyi-ui/src/components/RightToolbar/index.vue
index 73d2dcc..9bf9722 100644
--- a/ruoyi-ui/src/components/RightToolbar/index.vue
+++ b/ruoyi-ui/src/components/RightToolbar/index.vue
@@ -1,4 +1,3 @@
-<!-- @author Shiyn/   huangmx 20200807优化-->
 <template>
   <div class="top-right-btn">
     <el-row>
@@ -8,31 +7,74 @@
       <el-tooltip class="item" effect="dark" content="刷新" placement="top">
         <el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
       </el-tooltip>
+      <el-tooltip class="item" 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
+        :titles="['显示', '隐藏']"
+        v-model="value"
+        :data="columns"
+        @change="dataChange"
+      ></el-transfer>
+    </el-dialog>
   </div>
 </template>
 <script>
 export default {
   name: "RightToolbar",
   data() {
-    return {};
+    return {
+      // 显隐数据
+      value: [],
+      // 弹出层标题
+      title: "显示/隐藏",
+      // 是否显示弹出层
+      open: false,
+    };
   },
   props: {
     showSearch: {
       type: Boolean,
       default: true,
     },
+    columns: {
+      type: Array,
+    },
   },
 
   methods: {
-    //搜索
+    // 搜索
     toggleSearch() {
       this.$emit("update:showSearch", !this.showSearch);
     },
-    //刷新
+    // 刷新
     refresh() {
       this.$emit("queryTable");
+    },
+    // 右侧列表元素变化
+    dataChange(data) {
+      for (var item in this.columns) {
+        const key = this.columns[item].key;
+        this.columns[item].visible = !data.includes(key);
+      }
+    },
+    // 打开显隐列dialog
+    showColumn() {
+      this.open = true;
     },
   },
 };
 </script>
+<style lang="scss" scoped>
+::v-deep .el-transfer__button {
+  border-radius: 50%;
+  padding: 12px;
+  display: block;
+  margin-left: 0px;
+}
+::v-deep .el-transfer__button:first-child {
+  margin-bottom: 10px;
+}
+</style>

--
Gitblit v1.9.2