Bläddra i källkod

表格右侧工具栏组件支持显隐列

RuoYi 5 år sedan
förälder
incheckning
09a0058379

+ 46 - 3
ruoyi-ui/src/components/RightToolbar/index.vue

@@ -7,31 +7,74 @@
7 7
       <el-tooltip class="item" effect="dark" content="刷新" placement="top">
8 8
         <el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
9 9
       </el-tooltip>
10
+      <el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
11
+        <el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
12
+      </el-tooltip>
10 13
     </el-row>
14
+    <el-dialog :title="title" :visible.sync="open" append-to-body>
15
+      <el-transfer
16
+        :titles="['显示', '隐藏']"
17
+        v-model="value"
18
+        :data="columns"
19
+        @change="dataChange"
20
+      ></el-transfer>
21
+    </el-dialog>
11 22
   </div>
12 23
 </template>
13 24
 <script>
14 25
 export default {
15 26
   name: "RightToolbar",
16 27
   data() {
17
-    return {};
28
+    return {
29
+      // 显隐数据
30
+      value: [],
31
+      // 弹出层标题
32
+      title: "显示/隐藏",
33
+      // 是否显示弹出层
34
+      open: false,
35
+    };
18 36
   },
19 37
   props: {
20 38
     showSearch: {
21 39
       type: Boolean,
22 40
       default: true,
23 41
     },
42
+    columns: {
43
+      type: Array,
44
+    },
24 45
   },
25 46
 
26 47
   methods: {
27
-    //搜索
48
+    // 搜索
28 49
     toggleSearch() {
29 50
       this.$emit("update:showSearch", !this.showSearch);
30 51
     },
31
-    //刷新
52
+    // 刷新
32 53
     refresh() {
33 54
       this.$emit("queryTable");
34 55
     },
56
+    // 右侧列表元素变化
57
+    dataChange(data) {
58
+      for (var item in this.columns) {
59
+        const key = this.columns[item].key;
60
+        this.columns[item].visible = !data.includes(key);
61
+      }
62
+    },
63
+    // 打开显隐列dialog
64
+    showColumn() {
65
+      this.open = true;
66
+    },
35 67
   },
36 68
 };
37 69
 </script>
70
+<style lang="scss" scoped>
71
+::v-deep .el-transfer__button {
72
+  border-radius: 50%;
73
+  padding: 12px;
74
+  display: block;
75
+  margin-left: 0px;
76
+}
77
+::v-deep .el-transfer__button:first-child {
78
+  margin-bottom: 10px;
79
+}
80
+</style>

+ 0 - 3
ruoyi-ui/src/layout/components/global.js

@@ -1,3 +0,0 @@
1
-import Vue from 'vue'
2
-const global = new Vue()
3
-export default global

+ 18 - 8
ruoyi-ui/src/views/system/user/index.vue

@@ -135,17 +135,17 @@
135 135
               v-hasPermi="['system:user:export']"
136 136
             >导出</el-button>
137 137
           </el-col>
138
-          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
138
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
139 139
         </el-row>
140 140
 
141 141
         <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
142 142
           <el-table-column type="selection" width="50" align="center" />
143
-          <el-table-column label="用户编号" align="center" prop="userId" />
144
-          <el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" />
145
-          <el-table-column label="用户昵称" align="center" prop="nickName" :show-overflow-tooltip="true" />
146
-          <el-table-column label="部门" align="center" prop="dept.deptName" :show-overflow-tooltip="true" />
147
-          <el-table-column label="手机号码" align="center" prop="phonenumber" width="120" />
148
-          <el-table-column label="状态" align="center">
143
+          <el-table-column label="用户编号" align="center" prop="userId" v-if="columns[0].visible" />
144
+          <el-table-column label="用户名称" align="center" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
145
+          <el-table-column label="用户昵称" align="center" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
146
+          <el-table-column label="部门" align="center" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
147
+          <el-table-column label="手机号码" align="center" prop="phonenumber" v-if="columns[4].visible" width="120" />
148
+          <el-table-column label="状态" align="center" v-if="columns[5].visible">
149 149
             <template slot-scope="scope">
150 150
               <el-switch
151 151
                 v-model="scope.row.status"
@@ -155,7 +155,7 @@
155 155
               ></el-switch>
156 156
             </template>
157 157
           </el-table-column>
158
-          <el-table-column label="创建时间" align="center" prop="createTime" width="160">
158
+          <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
159 159
             <template slot-scope="scope">
160 160
               <span>{{ parseTime(scope.row.createTime) }}</span>
161 161
             </template>
@@ -418,6 +418,16 @@ export default {
418 418
         status: undefined,
419 419
         deptId: undefined
420 420
       },
421
+      // 列信息
422
+      columns: [
423
+        { key: 0, label: `用户编号`, visible: true },
424
+        { key: 1, label: `用户名称`, visible: true },
425
+        { key: 2, label: `用户昵称`, visible: true },
426
+        { key: 3, label: `部门`, visible: true },
427
+        { key: 4, label: `手机号码`, visible: true },
428
+        { key: 5, label: `状态`, visible: true },
429
+        { key: 6, label: `创建时间`, visible: true }
430
+      ],
421 431
       // 表单校验
422 432
       rules: {
423 433
         userName: [