张延森 6 年之前
父節點
當前提交
616b5257dd

+ 4
- 4
src/config/api.js 查看文件

325
       method: 'get',
325
       method: 'get',
326
       url: `${commPrefix}/role`
326
       url: `${commPrefix}/role`
327
     },
327
     },
328
-    getById: {
328
+    get: {
329
       method: 'get',
329
       method: 'get',
330
-      url: `${commPrefix}/roleById`
330
+      url: `${commPrefix}/role/:id`
331
     },
331
     },
332
     save: {
332
     save: {
333
       method: 'post',
333
       method: 'post',
341
       method: 'get',
341
       method: 'get',
342
       url: `${commPrefix}/menus`
342
       url: `${commPrefix}/menus`
343
     },
343
     },
344
-    deleteMenu: {
344
+    delete: {
345
       method: 'delete',
345
       method: 'delete',
346
-      url: `${commPrefix}/role`
346
+      url: `${commPrefix}/role/:id`
347
     }
347
     }
348
   },
348
   },
349
   menu:{
349
   menu:{

+ 19
- 22
src/store/modules/role.js 查看文件

1
 import lodash from 'lodash'
1
 import lodash from 'lodash'
2
-import { interact } from '../../utils'
2
+import { interact, replaceApiParams } from '../../utils'
3
 import apis from '../../config/api'
3
 import apis from '../../config/api'
4
 
4
 
5
 export default {
5
 export default {
17
         }
17
         }
18
     },
18
     },
19
     actions: {
19
     actions: {
20
-        GetList({ commit }, payload) {
20
+        getList({ commit }, payload) {
21
             return new Promise((resolve, reject) => {
21
             return new Promise((resolve, reject) => {
22
-                const api = lodash.get(apis,'sysRole.list')
22
+                const api = apis.sysRole.list
23
                 interact(api, payload).then((data) => {
23
                 interact(api, payload).then((data) => {
24
                     commit('setList', data)
24
                     commit('setList', data)
25
                     resolve(data)
25
                     resolve(data)
29
 
29
 
30
             })
30
             })
31
         },
31
         },
32
-        AddRole( _, payload) {
32
+        addRole( _, payload) {
33
             return new Promise((resolve, reject) => {
33
             return new Promise((resolve, reject) => {
34
                 const api = lodash.get(apis,'sysRole.save')
34
                 const api = lodash.get(apis,'sysRole.save')
35
                 interact(api, payload).then((data)=> {
35
                 interact(api, payload).then((data)=> {
39
                 })
39
                 })
40
             })
40
             })
41
         },
41
         },
42
-        GetMenus({ commit }) {
42
+        getMenus({ commit }) {
43
             return new Promise((resolve, reject) => {
43
             return new Promise((resolve, reject) => {
44
-                const api = lodash.get(apis, 'sysRole.menu')
44
+                const api = apis.menu.list
45
                 interact(api).then((data) => {
45
                 interact(api).then((data) => {
46
                     resolve(data)
46
                     resolve(data)
47
                     commit('setMenus', data)
47
                     commit('setMenus', data)
48
-                }).catch(() => {
49
-                    reject()
48
+                }).catch((err) => {
49
+                    reject(err)
50
                 })
50
                 })
51
             })
51
             })
52
         },
52
         },
53
-        GetById(_, payload) {
53
+        getById(_, payload) {
54
             return new Promise((resolve, reject) => {
54
             return new Promise((resolve, reject) => {
55
-                const api = lodash.get(apis,'sysRole.getById')
56
-                interact(api, payload).then((data) => {
55
+                const api = apis.sysRole.get
56
+                interact(replaceApiParams(api, { id: payload.roleId })).then((data) => {
57
                     resolve(data)
57
                     resolve(data)
58
                 }).catch(()=>{
58
                 }).catch(()=>{
59
                     reject()
59
                     reject()
60
                 })
60
                 })
61
-
62
             })
61
             })
63
         },
62
         },
64
-        UpdateRole(_, payload) {
63
+        updateRole(_, payload) {
65
             return new Promise((resolve, reject) => {
64
             return new Promise((resolve, reject) => {
66
                 const api = lodash.get(apis,'sysRole.update')
65
                 const api = lodash.get(apis,'sysRole.update')
67
                 interact(api, payload).then((data) => {
66
                 interact(api, payload).then((data) => {
68
                     resolve(data)
67
                     resolve(data)
69
-                }).catch(()=>{
70
-                    reject()
68
+                }).catch((err)=>{
69
+                    reject(err)
71
                 })
70
                 })
72
-
73
             })
71
             })
74
         },
72
         },
75
-        DeleteMenu(_, payload) {
73
+        deleteRole(_, role) {
76
             return new Promise((resolve, reject) => {
74
             return new Promise((resolve, reject) => {
77
-                const api = lodash.get(apis,'sysRole.deleteMenu')
78
-                interact(api, payload).then((data) => {
75
+                const api = apis.sysRole.delete
76
+                interact(replaceApiParams(api, { id: role.roleId })).then((data) => {
79
                     resolve(data)
77
                     resolve(data)
80
-                }).catch(()=>{
81
-                    reject()
78
+                }).catch((err)=>{
79
+                    reject(err)
82
                 })
80
                 })
83
-
84
             })
81
             })
85
         },
82
         },
86
         aAddNode({ commit }) {
83
         aAddNode({ commit }) {

+ 2
- 2
src/store/modules/sysuser.js 查看文件

118
         })
118
         })
119
       })
119
       })
120
     },
120
     },
121
-    updateUserRolede ({ commit }, payload) {
121
+    updateUserRolede (_, payload) {
122
       return new Promise((resolve, reject) => {
122
       return new Promise((resolve, reject) => {
123
         const api = lodash.get(apis, 'sysuser.updateUserRolede')
123
         const api = lodash.get(apis, 'sysuser.updateUserRolede')
124
         interact(api,payload).then((data) => {
124
         interact(api,payload).then((data) => {
125
-          commit('updateList', data)
125
+          // commit('updateList', data)
126
           resolve(data)
126
           resolve(data)
127
         }).catch(() => {
127
         }).catch(() => {
128
           reject()
128
           reject()

+ 4
- 4
src/store/system.js 查看文件

27
   actions: {
27
   actions: {
28
     getUser({ state, commit }) {
28
     getUser({ state, commit }) {
29
       return new Promise((resolve, reject) => {
29
       return new Promise((resolve, reject) => {
30
-        if (state.userLoged) {
30
+        if (state.user && state.user.userId) {
31
           resolve(state.user)
31
           resolve(state.user)
32
           return
32
           return
33
         }
33
         }
57
     //     })
57
     //     })
58
     //   })
58
     //   })
59
     // },
59
     // },
60
-    login({ commit }, user) {
60
+    login(_, user) {
61
       return new Promise((resolve, reject) => {
61
       return new Promise((resolve, reject) => {
62
         const api = lodash.get(apis, 'user.login')
62
         const api = lodash.get(apis, 'user.login')
63
         interact(api, {...user}).then(() => {
63
         interact(api, {...user}).then(() => {
64
           // commit('updateUser', data)
64
           // commit('updateUser', data)
65
-          commit('syncState', { userLoged: true })
65
+          // commit('syncState', { userLoged: true })
66
           resolve()
66
           resolve()
67
         }).catch((err) => {
67
         }).catch((err) => {
68
           reject(err.message || err)
68
           reject(err.message || err)
73
       const api = lodash.get(apis, 'user.logout')
73
       const api = lodash.get(apis, 'user.logout')
74
       interact(api).then(() => {
74
       interact(api).then(() => {
75
         commit('updateUser', {})
75
         commit('updateUser', {})
76
-        commit('syncState', { userLoged: false })
76
+        // commit('syncState', { userLoged: false })
77
       })
77
       })
78
     }
78
     }
79
   }
79
   }

+ 18
- 0
src/utils/tree.js 查看文件

1
+
2
+//
3
+export function appendChildren(data, id, pid) {
4
+  // 浅拷贝原始数据
5
+  const arr = (data || []).map(x => ({...x}))
6
+
7
+  return arr.map((item) => {
8
+    const parent = arr.filter((m) => m[id] === item[pid])[0]
9
+    if (parent) {
10
+      parent.children = (parent.children || []).concat(item)
11
+    }
12
+    return item
13
+  })
14
+}
15
+
16
+export function getTreeNode(data, pid, root = '-1') {
17
+  return (data || []).filter(item => item[pid] === root) || []
18
+}

+ 0
- 9
src/views/index.js 查看文件

58
           title: '菜单管理',
58
           title: '菜单管理',
59
         },
59
         },
60
       },
60
       },
61
-      {
62
-        path: 'sysmenu/add',
63
-        name: 'sysmenuAdd',
64
-        component: () => import('./sysmenu/add.vue'),
65
-        meta: {
66
-          menuShow: false,
67
-          title: '添加菜单',
68
-        },
69
-      },
70
       {
61
       {
71
         path: 'sysuser/userRole/addUserRole',
62
         path: 'sysuser/userRole/addUserRole',
72
         name: 'addUserRole',
63
         name: 'addUserRole',

+ 0
- 70
src/views/sysmenu/add.vue 查看文件

1
-<template>
2
-    <div id="root">
3
-        <el-form ref="form" :model="form" label-width="80px">
4
-            <el-form-item label="菜单权限">
5
-                <el-tree
6
-                        :data="menus"
7
-                        show-checkbox
8
-                        node-key="menuId"
9
-                        ref="tree"
10
-                        :props="defaultProps">
11
-                </el-tree>
12
-            </el-form-item>
13
-        </el-form>
14
-    </div>
15
-</template>
16
-
17
-<script>
18
-import { createNamespacedHelpers } from 'vuex'
19
-const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
20
-
21
-export default {
22
-  name: "addRole",
23
-  data() {
24
-      return {
25
-          form: {
26
-              roleName: '',
27
-              menuIds: []
28
-          },
29
-          defaultProps: {
30
-              label: 'menuName',
31
-              children: 'children'
32
-          }
33
-      }
34
-  },
35
-  computed: {
36
-      ...mapSysRoleState({
37
-          menus: x => x.menus
38
-      })
39
-  },
40
-  methods: {
41
-    ...mapSysRoleActions([
42
-        'GetMenus',
43
-        'AddRole'
44
-    ]),
45
-    getCheckedNodes() {
46
-      let idSet = new Set();
47
-      const checkedNodes = this.$refs.tree.getCheckedNodes();
48
-      checkedNodes.map((item,index) => {
49
-          idSet.add(item.menuId)
50
-          idSet.add(item.menuPid)
51
-      })
52
-
53
-        for (let [value] of idSet.entries()) this.form.menuIds.push(value);
54
-
55
-    },
56
-    onSubmit() {
57
-        this.getCheckedNodes()
58
-        this.AddRole(this.form)
59
-        this.$router.go(-1)
60
-    }
61
-  },
62
-  created() {
63
-      this.GetMenus()
64
-  }
65
-}
66
-</script>
67
-
68
-<style scoped>
69
-
70
-</style>

+ 7
- 10
src/views/sysmenu/index.vue 查看文件

1
 <template>
1
 <template>
2
   <div>
2
   <div>
3
+    <el-alert title="右击菜单可进行编辑操作" type="warning"></el-alert>
3
     <div class="page-bar">
4
     <div class="page-bar">
4
       <el-button icon="el-icon-plus" @click="insertRootMenu">顶级节点</el-button>
5
       <el-button icon="el-icon-plus" @click="insertRootMenu">顶级节点</el-button>
5
     </div>
6
     </div>
41
     <el-dialog
42
     <el-dialog
42
       title="提示"
43
       title="提示"
43
       :visible.sync="dialogVisible"
44
       :visible.sync="dialogVisible"
44
-      width="30%">
45
+      width="30%"
46
+      @close="contextMenuVisible = false">
45
       <el-form :model="checkMenu" label-width="80px">
47
       <el-form :model="checkMenu" label-width="80px">
46
         <el-form-item label="菜单ID">
48
         <el-form-item label="菜单ID">
47
           <el-input v-model="checkMenu.menuId" :disabled="!!checkMenu.createDate"></el-input>
49
           <el-input v-model="checkMenu.menuId" :disabled="!!checkMenu.createDate"></el-input>
60
 
62
 
61
 <script>
63
 <script>
62
 import { createNamespacedHelpers } from 'vuex'
64
 import { createNamespacedHelpers } from 'vuex'
63
-const { mapActions: mapMenuActions } = createNamespacedHelpers('sysmenu')
65
+import { getTreeNode, appendChildren } from '../../utils/tree.js';
64
 
66
 
67
+const { mapActions: mapMenuActions } = createNamespacedHelpers('sysmenu')
65
 
68
 
66
 export default {
69
 export default {
67
   name: 'SysMenu',
70
   name: 'SysMenu',
84
   },
87
   },
85
   computed: {
88
   computed: {
86
     treeData () {
89
     treeData () {
87
-      return (this.menusWithChildren || []).filter(m => m.menuPid === "-1") || []
90
+      return getTreeNode(this.menusWithChildren, 'menuPid')
88
     },
91
     },
89
   },
92
   },
90
   created () {
93
   created () {
100
     initData () {
103
     initData () {
101
       this.getAllMenus().then((menus) => {
104
       this.getAllMenus().then((menus) => {
102
         this.menusRaw = menus
105
         this.menusRaw = menus
103
-        this.menusWithChildren = menus.map((menu) => {
104
-          const parent = menus.filter((m) => m.menuId === menu.menuPid)[0]
105
-          if (parent) {
106
-            parent.children = (parent.children || []).concat(menu)
107
-          }
108
-          return menu
109
-        })
106
+        this.menusWithChildren = appendChildren(menus, 'menuId', 'menuPid')
110
       })
107
       })
111
     },
108
     },
112
     handleNodeClick (data) {
109
     handleNodeClick (data) {

+ 0
- 142
src/views/sysmenu/list.vue 查看文件

1
-<template>
2
-  <div id="root">
3
-  <el-row>
4
-    <el-button type="primary" @click="addUserRole()">添加</el-button>
5
-  </el-row>
6
-   
7
-    <el-table
8
-    :data="menuList.records"
9
-    border>
10
-    <el-table-column
11
-      prop="menuId"
12
-      align='center'
13
-      label="菜单ID">
14
-    </el-table-column>
15
-    <el-table-column
16
-      prop="menuName"
17
-      align='center'
18
-      label="菜单名称">
19
-    </el-table-column>
20
-    <el-table-column
21
-      prop="menuPid"
22
-      align='center'
23
-      label="子级名称">
24
-    </el-table-column>
25
-      <el-table-column
26
-      prop="menuParents"
27
-      align='center'
28
-      label="父级名称">
29
-    </el-table-column> 
30
-     <el-table-column
31
-      prop="status"
32
-      align='center'
33
-      label="当前状态">
34
-    </el-table-column>
35
-    <el-table-column
36
-      prop="createDate"
37
-      align='center'
38
-      label="创建时间">
39
-    </el-table-column>
40
-
41
-     <el-table-column
42
-        fixed="right"
43
-        label="操作"
44
-        align='center'>
45
-        <template slot-scope="scope">
46
-          <el-button type="text" @click="handleEdit(scope.row.userId)" size="small">编辑</el-button>
47
-          <el-button type="text" @click="userRoleDelete(scope.row.userId)" size="small">删除</el-button>
48
-        </template>
49
-      </el-table-column>
50
-  </el-table>
51
-    <el-pagination
52
-            style="margin-top:50px;float:right"
53
-            @size-change="handleSizeChange"
54
-            @current-change="handleCurrentChange"
55
-            :current-page="formInline.pageNum"
56
-            :page-sizes="[1,10, 20, 30, 40]"
57
-            :page-size="formInline.pageSize"
58
-            layout="total, sizes, prev, pager, next, jumper"
59
-          :total="menuList.total || 0"
60
-            >
61
-           
62
-           
63
-    </el-pagination>
64
-  </div>
65
-</template>
66
-<script>
67
-import { createNamespacedHelpers } from 'vuex'
68
-const {mapState: mapSysMenuState, mapActions: mapSysMenuActions } = createNamespacedHelpers('sysmenu')
69
-
70
-export default {
71
-  name: 'followup-index',
72
-  data() {
73
-    return {
74
-      formInline: {
75
-        userName:'',
76
-        personName: '',
77
-        phone: '',
78
-        platNumber: '',
79
-        pageNum: 1,
80
-        pageSize: 10,
81
-        userId: ''
82
-      }
83
-    }
84
-  },
85
-  computed: {
86
-    ...mapSysMenuState({
87
-     menuList: x => x.safety,
88
-    })
89
-  },
90
-  created() {
91
-     
92
-    this.getPage()
93
-  },
94
-  methods: {
95
-    ...mapSysMenuActions([
96
-      'sysMenu',
97
-      'deleteRole'
98
-    ]),
99
-    onSubmit() {
100
-      this.getPage()
101
-    },
102
-    getPage() {
103
-       this.sysMenu(this.formInline)
104
-      // window.console.log(this.$store)
105
-      // this.$store.commit('security/foo')
106
-      // this.$store.dispatch('security/getSecurity')
107
-      // this.$store.commit('security/foo')
108
-    },
109
-    handleSizeChange(val) {
110
-      // console.log(`每页 ${val} 条`)
111
-      this.formInline.pageSize = val
112
-    },
113
-    handleCurrentChange(val) {
114
-      // console.log(`当前页: ${val}`)
115
-      this.formInline.pageNum = val
116
-      this.getPage()
117
-    },
118
-    clear(){
119
-      this.formInline.userName = ''
120
-      this.formInline.customerName = ''
121
-      this.formInline.phone = ''
122
-      this.formInline.platNumber = ''
123
-      this.formInline.pageNum = 1
124
-      this.formInline.pageSize = 10
125
-      this.getPage()
126
-    },
127
-    addUserRole(){
128
-      this.$router.push({ name: 'sysmenuAdd' })
129
-
130
-    },
131
-    handleEdit(id){
132
-       this.$router.push({ name: 'userRoleedit', query: {id:id} })
133
-    },
134
-    userRoleDelete(id){
135
-       this.formInline.userId = id
136
-       this.deleteRole(this.formInline)
137
-       this.getPage()
138
-    }
139
-   }
140
-}
141
-</script>
142
-

+ 12
- 12
src/views/sysuser/list.vue 查看文件

9
     </el-form-item>
9
     </el-form-item>
10
     <el-form-item>
10
     <el-form-item>
11
         <el-select v-model="listQuery.identity" placeholder="请选择">
11
         <el-select v-model="listQuery.identity" placeholder="请选择">
12
-          <el-option label="全部"></el-option>
12
+          <el-option label="全部" value="%"></el-option>
13
           <el-option
13
           <el-option
14
             v-for="item in identityDict"
14
             v-for="item in identityDict"
15
             :key="item.value"
15
             :key="item.value"
76
 
76
 
77
     <el-dialog title="添加权限" :visible.sync="filterData.dialogFormVisible" :show-close="filterData.close">
77
     <el-dialog title="添加权限" :visible.sync="filterData.dialogFormVisible" :show-close="filterData.close">
78
       <el-form :model="filterData">  
78
       <el-form :model="filterData">  
79
-      <el-form-item label="角色权限"  required>
80
-      <el-select v-model="userRoleId" multiple placeholder="请选择">
81
-      <el-option
82
-      v-for="(item, index) in sysRole"
83
-      :key="index"
84
-      :label="item.roleName"
85
-      :value="item.roleId">
86
-      </el-option>
87
-      </el-select>
88
-      </el-form-item>
89
-
79
+        <el-form-item label="角色权限"  required>
80
+          <el-select v-model="userRoleId" multiple placeholder="请选择">
81
+            <el-option
82
+              v-for="item in sysRole"
83
+              :key="item.roleId"
84
+              :label="item.roleName"
85
+              :value="item.roleId">
86
+            </el-option>
87
+          </el-select>
88
+        </el-form-item>
90
       </el-form>
89
       </el-form>
91
       <div slot="footer" class="dialog-footer">
90
       <div slot="footer" class="dialog-footer">
92
         <el-button @click="TransactionReplyOff">取 消</el-button>
91
         <el-button @click="TransactionReplyOff">取 消</el-button>
159
       this.getSysUserList({
158
       this.getSysUserList({
160
         pageNum: this.pageNavi.page || 1,
159
         pageNum: this.pageNavi.page || 1,
161
         pageSize: this.pageNavi.size,
160
         pageSize: this.pageNavi.size,
161
+        identity: this.listQuery.identity === '%' ? undefined : this.listQuery.identity,
162
         ...this.listQuery,
162
         ...this.listQuery,
163
       }).then((data) => {
163
       }).then((data) => {
164
         const { current: page, size, total } = data
164
         const { current: page, size, total } = data

+ 15
- 9
src/views/sysuser/role/add/add.vue 查看文件

6
             </el-form-item>
6
             </el-form-item>
7
             <el-form-item label="菜单权限">
7
             <el-form-item label="菜单权限">
8
                 <el-tree
8
                 <el-tree
9
-                        :data="menus"
10
-                        show-checkbox
11
-                        node-key="menuId"
12
-                        ref="tree"
13
-                        :props="defaultProps">
9
+                    :data="treeData"
10
+                    show-checkbox
11
+                    node-key="menuId"
12
+                    :default-expand-all="true"
13
+                    ref="tree"
14
+                    :props="defaultProps">
14
                 </el-tree>
15
                 </el-tree>
15
             </el-form-item>
16
             </el-form-item>
16
             <el-form-item>
17
             <el-form-item>
22
 
23
 
23
 <script>
24
 <script>
24
 import { createNamespacedHelpers } from 'vuex'
25
 import { createNamespacedHelpers } from 'vuex'
26
+import { appendChildren, getTreeNode } from '@/utils/tree'
27
+
25
 const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
28
 const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
26
 
29
 
27
 export default {
30
 export default {
40
   },
43
   },
41
   computed: {
44
   computed: {
42
       ...mapSysRoleState({
45
       ...mapSysRoleState({
43
-          menus: x => x.menus
44
-      })
46
+        menus: x => x.menus
47
+      }),
48
+      treeData () {
49
+        return getTreeNode(appendChildren(this.menus, 'menuId', 'menuPid'), 'menuPid')
50
+      },
45
   },
51
   },
46
   methods: {
52
   methods: {
47
     ...mapSysRoleActions([
53
     ...mapSysRoleActions([
48
-        'GetMenus',
54
+        'getMenus',
49
         'AddRole'
55
         'AddRole'
50
     ]),
56
     ]),
51
     getCheckedNodes() {
57
     getCheckedNodes() {
66
     }
72
     }
67
   },
73
   },
68
   created() {
74
   created() {
69
-      this.GetMenus()
75
+      this.getMenus()
70
   }
76
   }
71
 }
77
 }
72
 </script>
78
 </script>

+ 33
- 36
src/views/sysuser/role/edi/edi.vue 查看文件

6
             </el-form-item>
6
             </el-form-item>
7
             <el-form-item label="菜单权限">
7
             <el-form-item label="菜单权限">
8
                 <el-tree
8
                 <el-tree
9
-                        :data="menus"
10
-                        show-checkbox
11
-                        node-key="menuId"
12
-                        ref="tree"
13
-                        :default-checked-keys="checkedMenuKeys"
14
-                        :props="defaultProps">
9
+                    :data="treeData"
10
+                    show-checkbox
11
+                    node-key="menuId"
12
+                    ref="tree"
13
+                    :default-expand-all="true"
14
+                    :props="defaultProps">
15
                 </el-tree>
15
                 </el-tree>
16
             </el-form-item>
16
             </el-form-item>
17
             <el-form-item>
17
             <el-form-item>
23
 
23
 
24
 <script>
24
 <script>
25
 import { createNamespacedHelpers } from 'vuex'
25
 import { createNamespacedHelpers } from 'vuex'
26
+import { appendChildren, getTreeNode } from '@/utils/tree'
27
+
26
 const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
28
 const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
27
 
29
 
28
 export default {
30
 export default {
38
               label: 'menuName',
40
               label: 'menuName',
39
               children: 'children'
41
               children: 'children'
40
           },
42
           },
41
-          checkedMenuKeys: [] // 默认勾选
43
+          checkedMenus: []
42
       }
44
       }
43
   },
45
   },
44
   computed: {
46
   computed: {
45
       ...mapSysRoleState({
47
       ...mapSysRoleState({
46
           menus: x => x.menus
48
           menus: x => x.menus
47
-      })
49
+      }),
50
+      treeData () {
51
+        const dt = getTreeNode(appendChildren(this.menus, 'menuId', 'menuPid'), 'menuPid')
52
+        return dt
53
+      },
54
+  },
55
+  watch: {
56
+    checkedMenus (newVal) {
57
+      this.form.menuIds = (newVal || []).join(',')
58
+
59
+      if (this.$refs.tree) {
60
+        this.$refs.tree.setCheckedKeys(newVal)
61
+      }
62
+    }
48
   },
63
   },
49
   methods: {
64
   methods: {
50
     ...mapSysRoleActions([
65
     ...mapSysRoleActions([
51
-        'GetMenus',
52
-        'AddRole',
53
-        'GetById',
54
-        'UpdateRole'
66
+        'getMenus',
67
+        'addRole',
68
+        'getById',
69
+        'updateRole'
55
     ]),
70
     ]),
56
-    getCheckedNodes() {
57
-      let idSet = new Set();
58
-      const checkedNodes = this.$refs.tree.getCheckedNodes();
59
-      checkedNodes.map((item) => {
60
-          idSet.add(item.menuId)
61
-      })
62
-
63
-        for (let [value] of idSet.entries()) this.form.menuIds.push(value);
64
-
65
-    },
66
     onSubmit() {
71
     onSubmit() {
67
-        this.getCheckedNodes()
68
-        this.UpdateRole(this.form)
69
-        this.$router.go(-1)
72
+      this.form.menuIds = this.$refs.tree.getCheckedKeys().join(',')
73
+      this.updateRole(this.form)
74
+      this.$router.go(-1)
70
     },
75
     },
71
     getByRoleId() {
76
     getByRoleId() {
72
-        this.GetById({ roleId: this.form.roleId }).then((res) => {
77
+        this.getById({ roleId: this.form.roleId }).then((res) => {
73
             this.form.roleId = res.roleId
78
             this.form.roleId = res.roleId
74
             this.form.roleName = res.roleName
79
             this.form.roleName = res.roleName
75
 
80
 
76
-            this.menusParsing(res.menuList)
77
-        })
78
-    },
79
-    menusParsing(array) {
80
-        array.map((item) => {
81
-            this.checkedMenuKeys.push(item.menuId)
82
-            if (item.children !== null) {
83
-                this.menusParsing(item.children)
84
-            }
81
+            this.checkedMenus = (res.menuList || []).map(m => m.menuId)
85
         })
82
         })
86
     }
83
     }
87
   },
84
   },
88
   created() {
85
   created() {
89
-      this.GetMenus()
86
+      this.getMenus()
90
       this.form.roleId = this.$route.query.id
87
       this.form.roleId = this.$route.query.id
91
       this.getByRoleId()
88
       this.getByRoleId()
92
   }
89
   }

+ 38
- 58
src/views/sysuser/role/list.vue 查看文件

6
       </el-form-item> 
6
       </el-form-item> 
7
       <el-form-item>
7
       <el-form-item>
8
         <el-button type="primary" @click="onSubmit">查询</el-button>
8
         <el-button type="primary" @click="onSubmit">查询</el-button>
9
-        <el-button type="info" @click="clear">重置</el-button>
10
       </el-form-item>
9
       </el-form-item>
11
     </el-form>
10
     </el-form>
12
     <div style="margin-bottom: 20px;">
11
     <div style="margin-bottom: 20px;">
13
-<!--      <router-link :to="{name: 'role-add'}" tag="el-button">添加</router-link>-->
14
-
15
       <el-button type="success" @click="addRole">添加</el-button>
12
       <el-button type="success" @click="addRole">添加</el-button>
16
-      <el-button type="warning" @click="updateRole">修改</el-button>
17
-      <el-button type="danger" @click="deleteRole">删除</el-button>
18
     </div>
13
     </div>
19
-    <el-table
20
-    :data="roleDataList.records"
21
-    @selection-change="handleSelectionChange"
22
-    border>
23
-      <el-table-column
24
-              type="selection"
25
-              width="55"/>
26
-    <el-table-column
27
-      prop="roleId"
28
-      align='center'
29
-      label="编号"/>
14
+    <el-table :data="roleDataList.records" border>
30
     <el-table-column
15
     <el-table-column
31
       prop="roleName"
16
       prop="roleName"
32
       align='center'
17
       align='center'
35
       prop="roleStatus"
20
       prop="roleStatus"
36
       align='center'
21
       align='center'
37
       label="角色状态">
22
       label="角色状态">
38
-      <template slot-scope="scope">{{ scope.row.status === 1 ? '有效' : '无效' }}</template>
23
+      <template slot-scope="scope">{{ scope.row.status === 1 ? '正常' : '异常' }}</template>
24
+    </el-table-column>
25
+    <el-table-column
26
+       label="创建时间">
27
+       <template slot-scope="scope">
28
+         <span>{{formateDate(scope.row.createDate)}}</span>
29
+       </template>
39
     </el-table-column>
30
     </el-table-column>
40
     <el-table-column
31
     <el-table-column
41
-       prop="createDate"
42
-       align='center'
43
-       label="创建时间"/>
32
+      label="操作">
33
+      <template slot-scope="scope">
34
+        <div>
35
+          <el-button type="text" size="mini" @click="updateData(scope.row)">编辑</el-button>
36
+          <el-button type="text" size="mini" @click="deleteData(scope.row)">删除</el-button>
37
+        </div>
38
+      </template>
39
+    </el-table-column>
44
   </el-table>
40
   </el-table>
45
     <el-pagination
41
     <el-pagination
46
             style="margin-top:50px;float:right"
42
             style="margin-top:50px;float:right"
57
   </div>
53
   </div>
58
 </template>
54
 </template>
59
 <script>
55
 <script>
56
+import dayjs from 'dayjs'
60
 import { createNamespacedHelpers } from 'vuex'
57
 import { createNamespacedHelpers } from 'vuex'
61
 const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
58
 const {mapState: mapSysRoleState, mapActions: mapSysRoleActions } = createNamespacedHelpers('sysyrole')
62
 
59
 
82
   },
79
   },
83
   methods: {
80
   methods: {
84
     ...mapSysRoleActions([
81
     ...mapSysRoleActions([
85
-      'GetList',
86
-      'DeleteMenu'
82
+      'getList',
83
+      'deleteRole'
87
     ]),
84
     ]),
85
+    formateDate (dt) {
86
+      return dayjs(dt).format('YYYY-MM-DD HH:mm')
87
+    },
88
     onSubmit() {
88
     onSubmit() {
89
       this.getPage()
89
       this.getPage()
90
     },
90
     },
91
     getPage() {
91
     getPage() {
92
-       this.GetList(this.formInline)
93
-      // window.console.log(this.$store)
94
-      // this.$store.commit('security/foo')
95
-      // this.$store.dispatch('security/getSecurity')
96
-      // this.$store.commit('security/foo')
92
+       this.getList(this.formInline)
97
     },
93
     },
98
     handleSizeChange(val) {
94
     handleSizeChange(val) {
99
       // console.log(`每页 ${val} 条`)
95
       // console.log(`每页 ${val} 条`)
104
       this.formInline.pageNum = val
100
       this.formInline.pageNum = val
105
       this.getPage()
101
       this.getPage()
106
     },
102
     },
107
-    clear(){
108
-      this.formInline.roleName = ''
109
-      this.formInline.pageNum = 1
110
-      this.formInline.pageSize = 10
111
-      this.getPage()
112
-    },
113
     addRole() {
103
     addRole() {
114
       this.$router.push({name: 'role-add'})
104
       this.$router.push({name: 'role-add'})
115
     },
105
     },
116
-    deleteRole() {
117
-      if (this.ids.length <= 0) {
118
-        this.$message.error("请至少选择一行")
119
-        return
120
-      }
121
-
122
-      this.DeleteMenu({ menuIds: this.ids })
123
-      this.getPage()
106
+    deleteData(role) {
107
+      this.$confirm(`确定删除角色 [${role.roleName}] ?`).then(() => {
108
+        this.deleteRole(role).then(() => {
109
+          this.$alert('删除成功', '', {
110
+            confirmButtonText: '确定',
111
+            callback: () => {
112
+              this.getPage()
113
+            }
114
+          })
115
+        }).catch((err) => {
116
+          this.$message.error(err.message || err);
117
+        })
118
+      })
124
     },
119
     },
125
-    updateRole() {
126
-      if (this.ids.length > 1) {
127
-        this.$message.error("只能针对一行操作")
128
-        return
129
-      }
130
-      if (this.ids.length <= 0) {
131
-        this.$message.error("请至少选择一行")
132
-        return
133
-      }
134
-
135
-      this.$router.push({name: 'role-edi', query: { id: this.ids[0] }})
120
+    updateData(role) {
121
+      this.$router.push({name: 'role-edi', query: { id: role.roleId }})
136
     },
122
     },
137
-    handleSelectionChange(val) {
138
-      this.ids = []
139
-      val.map((item)=> {
140
-        this.ids.push(item.roleId);
141
-      })
142
-    }
143
   }
123
   }
144
 }
124
 }
145
 </script>
125
 </script>