Merge branch 'master' of http://yun.pashanhoo.com:9090/bdc/bdcjg-web
Showing
8 changed files
with
547 additions
and
356 deletions
... | @@ -16,7 +16,7 @@ export const getRolesById = categoryId => { | ... | @@ -16,7 +16,7 @@ export const getRolesById = categoryId => { |
16 | conditions: [ | 16 | conditions: [ |
17 | { | 17 | { |
18 | property: 'category', | 18 | property: 'category', |
19 | value:categoryId, | 19 | value: categoryId, |
20 | operator: 'EQ' | 20 | operator: 'EQ' |
21 | } | 21 | } |
22 | ], | 22 | ], |
... | @@ -81,3 +81,43 @@ export const getParentMenuListAction = (id) => { | ... | @@ -81,3 +81,43 @@ export const getParentMenuListAction = (id) => { |
81 | const params = getParams(conditionGroup) | 81 | const params = getParams(conditionGroup) |
82 | return getAction(api.menus, params) | 82 | return getAction(api.menus, params) |
83 | } | 83 | } |
84 | // 获取权限列表 | ||
85 | export const getAuthorityListAction = (productId, subsystemCode) => { | ||
86 | const conditionGroup = { | ||
87 | conditions: [ | ||
88 | { | ||
89 | property: 'productId', | ||
90 | value: productId, | ||
91 | operator: 'EQ' | ||
92 | }, | ||
93 | { | ||
94 | property: 'code', | ||
95 | value: subsystemCode + '_MENU', | ||
96 | operator: 'EQ' | ||
97 | } | ||
98 | ], | ||
99 | queryRelation: 'AND' | ||
100 | } | ||
101 | const params = getParams(conditionGroup) | ||
102 | return getAction(api.resourceCategory, params) | ||
103 | } | ||
104 | /** | ||
105 | * 获取角色的权限 id operationCodes resourceCategoryCode | ||
106 | * id 授权id | ||
107 | * operationCodes 操作符集合 | ||
108 | * resourceCategoryCode 菜单默认MENU | ||
109 | */ | ||
110 | export const getRoleAuthorityList = ( | ||
111 | id, | ||
112 | operationCodes, | ||
113 | resourceCategoryCode | ||
114 | ) => { | ||
115 | return getAction(`${api.rolePermissions}/${id}`, { | ||
116 | operationCodes: operationCodes, | ||
117 | resourceCategoryCode: resourceCategoryCode | ||
118 | }) | ||
119 | } | ||
120 | // 角色授权 | ||
121 | export const roleAuthority = (id, permissionDtos) => { | ||
122 | return putAction(`${api.rolePermissions}/${id}`, permissionDtos) | ||
123 | } | ... | ... |
1 | import Vue from 'vue' | 1 | import Vue from 'vue' |
2 | 2 | ||
3 | // 下载,导出 | 3 | // 下载,导出 |
4 | Vue.prototype.$download = function(name, href) { | 4 | Vue.prototype.$download = function (name, href) { |
5 | var a = document.createElement('a') // 创建a标签 | 5 | var a = document.createElement('a') // 创建a标签 |
6 | var e = document.createEvent('MouseEvents') // 创建鼠标事件对象 | 6 | var e = document.createEvent('MouseEvents') // 创建鼠标事件对象 |
7 | e.initEvent('click', false, false) // 初始化事件对象 | 7 | e.initEvent('click', false, false) // 初始化事件对象 |
... | @@ -10,7 +10,7 @@ Vue.prototype.$download = function(name, href) { | ... | @@ -10,7 +10,7 @@ Vue.prototype.$download = function(name, href) { |
10 | a.dispatchEvent(e) // 给指定的元素,执行事件click事件 | 10 | a.dispatchEvent(e) // 给指定的元素,执行事件click事件 |
11 | } | 11 | } |
12 | // 导出json文件 | 12 | // 导出json文件 |
13 | Vue.prototype.$downloadJson = function(data, name) { | 13 | Vue.prototype.$downloadJson = function (data, name) { |
14 | // 1 生成文件的 blob 对象 | 14 | // 1 生成文件的 blob 对象 |
15 | const blobData = new Blob([JSON.stringify(data)], { | 15 | const blobData = new Blob([JSON.stringify(data)], { |
16 | type: 'application/octet-stream' | 16 | type: 'application/octet-stream' |
... | @@ -84,7 +84,7 @@ const checkCode = (rule, value, callback) => { | ... | @@ -84,7 +84,7 @@ const checkCode = (rule, value, callback) => { |
84 | // } | 84 | // } |
85 | // } | 85 | // } |
86 | // 日期格式转换 "yyyy-MM-dd HH:mm:ss" | 86 | // 日期格式转换 "yyyy-MM-dd HH:mm:ss" |
87 | Vue.prototype.$formdate = function(date) { | 87 | Vue.prototype.$formdate = function (date) { |
88 | if (!date) { | 88 | if (!date) { |
89 | return "" | 89 | return "" |
90 | } | 90 | } |
... | @@ -95,22 +95,22 @@ Vue.prototype.$formdate = function(date) { | ... | @@ -95,22 +95,22 @@ Vue.prototype.$formdate = function(date) { |
95 | var hh = (d.getHours() < 10 ? '0' + d.getHours() : d.getHours()) + ':'; | 95 | var hh = (d.getHours() < 10 ? '0' + d.getHours() : d.getHours()) + ':'; |
96 | var mm = (d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes()) + ':'; | 96 | var mm = (d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes()) + ':'; |
97 | var ss = (d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds()); | 97 | var ss = (d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds()); |
98 | return YY + MM + DD +" "+hh + mm + ss | 98 | return YY + MM + DD + " " + hh + mm + ss |
99 | } | 99 | } |
100 | // 时间格式过滤 | 100 | // 时间格式过滤 |
101 | Vue.filter('timeFilter', function(timeStr) { | 101 | Vue.filter('timeFilter', function (timeStr) { |
102 | if (timeStr) { | 102 | if (timeStr) { |
103 | return timeStr.substring(0, 10) | 103 | return timeStr.substring(0, 10) |
104 | } | 104 | } |
105 | }) | 105 | }) |
106 | export function getType(o) { | 106 | export function getType (o) { |
107 | return Object.prototype.toString.call(o).slice(8, -1) | 107 | return Object.prototype.toString.call(o).slice(8, -1) |
108 | } | 108 | } |
109 | export function isKeyType(o, type) { | 109 | export function isKeyType (o, type) { |
110 | return getType(o).toLowerCase() === type.toLowerCase() | 110 | return getType(o).toLowerCase() === type.toLowerCase() |
111 | } | 111 | } |
112 | // 深拷贝全局挂载 | 112 | // 深拷贝全局挂载 |
113 | Vue.prototype.$deepCopy = function(sth) { | 113 | Vue.prototype.$deepCopy = function (sth) { |
114 | // 深度复制数组 | 114 | // 深度复制数组 |
115 | // if (Object.prototype.toString.call(obj) === "[object Array]") { | 115 | // if (Object.prototype.toString.call(obj) === "[object Array]") { |
116 | // const object = []; | 116 | // const object = []; |
... | @@ -196,7 +196,7 @@ Vue.prototype.$dealArrNotDisabled = arr => { | ... | @@ -196,7 +196,7 @@ Vue.prototype.$dealArrNotDisabled = arr => { |
196 | } | 196 | } |
197 | } | 197 | } |
198 | } | 198 | } |
199 | function nodeDeal(arr) { | 199 | function nodeDeal (arr) { |
200 | arr.forEach(item => { | 200 | arr.forEach(item => { |
201 | delete item.disabled | 201 | delete item.disabled |
202 | if (item.children) { | 202 | if (item.children) { |
... | @@ -222,7 +222,7 @@ Vue.prototype.$dealArrDisabled = (arr, id) => { | ... | @@ -222,7 +222,7 @@ Vue.prototype.$dealArrDisabled = (arr, id) => { |
222 | } | 222 | } |
223 | } | 223 | } |
224 | } | 224 | } |
225 | function nodeDeal(arr) { | 225 | function nodeDeal (arr) { |
226 | arr.forEach(item => { | 226 | arr.forEach(item => { |
227 | item['disabled'] = true | 227 | item['disabled'] = true |
228 | if (item.children) { | 228 | if (item.children) { |
... | @@ -249,10 +249,9 @@ Vue.prototype.$getNodeRoute = (val, id) => { | ... | @@ -249,10 +249,9 @@ Vue.prototype.$getNodeRoute = (val, id) => { |
249 | } | 249 | } |
250 | } | 250 | } |
251 | }) | 251 | }) |
252 | function nodefun(newVal, newId, newCid_list) { | 252 | function nodefun (newVal, newId, newCid_list) { |
253 | let flag = false | 253 | let flag = false |
254 | newVal.forEach(j => { | 254 | newVal.forEach(j => { |
255 | // console.log(j) | ||
256 | if (j.id === newId) { | 255 | if (j.id === newId) { |
257 | newCid_list.push(j.id) | 256 | newCid_list.push(j.id) |
258 | flag = true | 257 | flag = true |
... | @@ -272,7 +271,7 @@ Vue.prototype.$getNodeRoute = (val, id) => { | ... | @@ -272,7 +271,7 @@ Vue.prototype.$getNodeRoute = (val, id) => { |
272 | return newCid_list | 271 | return newCid_list |
273 | } | 272 | } |
274 | } | 273 | } |
275 | function result(cid_list) { | 274 | function result (cid_list) { |
276 | const arr = cid_list.concat() | 275 | const arr = cid_list.concat() |
277 | arr.pop() | 276 | arr.pop() |
278 | return arr | 277 | return arr |
... | @@ -325,7 +324,7 @@ Vue.prototype.$findParent = (list, id) => { | ... | @@ -325,7 +324,7 @@ Vue.prototype.$findParent = (list, id) => { |
325 | Vue.prototype.$findChildren = (list, nodeId) => { | 324 | Vue.prototype.$findChildren = (list, nodeId) => { |
326 | let newArray = [] | 325 | let newArray = [] |
327 | let flag = false | 326 | let flag = false |
328 | function dealList(list, nodeId) { | 327 | function dealList (list, nodeId) { |
329 | if (list.length !== 0) { | 328 | if (list.length !== 0) { |
330 | list.forEach(item => { | 329 | list.forEach(item => { |
331 | if (!flag) { | 330 | if (!flag) { | ... | ... |
1 | <template> | ||
2 | <Dialog :title="title" class="tableClass" :show.sync="visible" :width="'715px'" @close="close()"> | ||
3 | <template slot="content"> | ||
4 | <lb-table ref="multipleTable" | ||
5 | :pagination="false" | ||
6 | :column="tableData.column" | ||
7 | :data="tableData.data" | ||
8 | @selection-change="handleSelectionChange"> | ||
9 | </lb-table> | ||
10 | </template> | ||
11 | <template slot="footer"> | ||
12 | <el-button type="primary" class="save" @click="handleSaveMember()" | ||
13 | >保存</el-button | ||
14 | > | ||
15 | <el-button class="cancel-button" @click="close()">取消</el-button> | ||
16 | </template> | ||
17 | </Dialog> | ||
18 | </template> | ||
19 | |||
20 | <script> | ||
21 | import Dialog from "@/components/Dialog/"; | ||
22 | export default { | ||
23 | name: "", | ||
24 | components: { Dialog }, | ||
25 | props: {}, | ||
26 | data() { | ||
27 | return { | ||
28 | title: "人员配置", | ||
29 | visible: false, | ||
30 | tableData: { | ||
31 | column: [ | ||
32 | { | ||
33 | type: 'selection' | ||
34 | }, | ||
35 | { | ||
36 | prop: 'name', | ||
37 | label: '角色名称' | ||
38 | }, | ||
39 | { | ||
40 | prop: 'type', | ||
41 | label: '角色类型' | ||
42 | }, | ||
43 | { | ||
44 | prop: 'departmentName', | ||
45 | label: '角色描述' | ||
46 | }, | ||
47 | ], | ||
48 | data: [ | ||
49 | { | ||
50 | id: "3127e455-43ba-45ff-9326-0e02ef89485e", | ||
51 | createdAt: null, | ||
52 | updatedAt: "2022-08-04T03:38:27.626+0000", | ||
53 | createdBy: null, | ||
54 | updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e", | ||
55 | sort: 1, | ||
56 | name: "超级管理员", | ||
57 | loginName: "admin", | ||
58 | password: "05eb15777e8fd1d61c840472e7267f61d432f63340d86b59", | ||
59 | passwordSalt: "5178114777136485", | ||
60 | email: null, | ||
61 | lastLoginTime: null, | ||
62 | mobilePhone: "18291003568", | ||
63 | status: "ACTIVE", | ||
64 | passwordChangeTime: "2021-12-10T08:01:01.569+0000", | ||
65 | idCard: "612725202111021521", | ||
66 | departmentId: "2eae5304-544f-4f5b-b354-8f5d47433c9b", | ||
67 | organizationId: "0bca67ae-1d9e-4b41-b057-f165586d24aa", | ||
68 | sex: "0", | ||
69 | isDuty: true, | ||
70 | type:"", | ||
71 | code: "123324", | ||
72 | jobLevel: null, | ||
73 | telephone: "028-87720898", | ||
74 | address: "办公地点修改测试", | ||
75 | isLocked: false, | ||
76 | departmentName: "研发部", | ||
77 | _X_ROW_KEY: "row_276", | ||
78 | }, | ||
79 | { | ||
80 | name: '数据管理员', | ||
81 | type:"1", | ||
82 | }, | ||
83 | { | ||
84 | name: '数据管理员2', | ||
85 | type:"d", | ||
86 | } | ||
87 | ] | ||
88 | }, | ||
89 | multipleSelection: [] | ||
90 | |||
91 | } | ||
92 | }, | ||
93 | computed: {}, | ||
94 | watch: {}, | ||
95 | created() {}, | ||
96 | mounted() {}, | ||
97 | methods: { | ||
98 | authorization() { | ||
99 | this.visible = true; | ||
100 | }, | ||
101 | close() { | ||
102 | // this.resetForm() | ||
103 | this.visible = false; | ||
104 | }, | ||
105 | // 保存事件 | ||
106 | handleSaveMember() { | ||
107 | // if (this.memberList.length === 0) { | ||
108 | // this.$message.warning("请添加待选人员"); | ||
109 | // return false; | ||
110 | // } | ||
111 | // const idList = this.memberList.map(item => item.id) | ||
112 | // updateUser(this.roleId, idList).then(res => { | ||
113 | // if (res.status === 1) { | ||
114 | // this.$message.success({ message: '保存成功', showClose: true }) | ||
115 | // this.showMemberConfigDialog = false | ||
116 | // this.$emit('setUsers', this.roleId) | ||
117 | // this.resetMemberConfig() | ||
118 | // } else this.$message.error({ message: res.message, showClose: true }) | ||
119 | // }) | ||
120 | }, | ||
121 | handleSelectionChange (val) { | ||
122 | this.multipleSelection = val | ||
123 | } | ||
124 | } | ||
125 | }; | ||
126 | </script> | ||
127 | <style scoped lang="scss"> | ||
128 | /deep/.el-dialog__header{ | ||
129 | text-align: center; | ||
130 | margin-bottom: 10px; | ||
131 | .el-dialog__title{ | ||
132 | color: white; | ||
133 | } | ||
134 | } | ||
135 | </style> |
... | @@ -166,6 +166,7 @@ export default { | ... | @@ -166,6 +166,7 @@ export default { |
166 | methods: { | 166 | methods: { |
167 | // 获取父级菜单 | 167 | // 获取父级菜单 |
168 | getParentMenuList(id) { | 168 | getParentMenuList(id) { |
169 | |||
169 | getParentMenuListAction(id).then((res) => { | 170 | getParentMenuListAction(id).then((res) => { |
170 | if (res.status === 1) { | 171 | if (res.status === 1) { |
171 | const list = this.$dealArrChildren(res.content) | 172 | const list = this.$dealArrChildren(res.content) |
... | @@ -195,7 +196,7 @@ export default { | ... | @@ -195,7 +196,7 @@ export default { |
195 | }, | 196 | }, |
196 | // 新增菜单 | 197 | // 新增菜单 |
197 | add() { | 198 | add() { |
198 | this.getParentMenuList(this.productId) | 199 | this.getParentMenuList("2925fdeb-ddeb-4c15-8ee0-7bc3aa75ec2b") |
199 | this.visible = true | 200 | this.visible = true |
200 | this.type = 0 | 201 | this.type = 0 |
201 | this.form.jumpMode = 1 | 202 | this.form.jumpMode = 1 | ... | ... |
... | @@ -19,33 +19,32 @@ | ... | @@ -19,33 +19,32 @@ |
19 | :data="tablelistData" | 19 | :data="tablelistData" |
20 | row-key="id" | 20 | row-key="id" |
21 | default-expand-all | 21 | default-expand-all |
22 | :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" | 22 | :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> |
23 | > | ||
24 | </lb-table> | 23 | </lb-table> |
25 | </div> | 24 | </div> |
26 | <edit-dialog ref="dialogForm" | 25 | <edit-dialog ref="dialogForm" |
27 | :product-id="productId" | 26 | :product-id="productId" |
28 | :resource-category-id="resourceCategoryId" | 27 | :resource-category-id="resourceCategoryId" |
29 | @ok="reloadTableData"/> | 28 | @ok="reloadTableData" /> |
30 | <!-- <authorizationdiglog ref="rolesForm" /> --> | 29 | <!-- <authorizationdiglog ref="rolesForm" /> --> |
31 | </div> | 30 | </div> |
32 | </template> | 31 | </template> |
33 | <script> | 32 | <script> |
34 | // 定时任务 | 33 | // 定时任务 |
35 | import data from "./data"; | 34 | import data from "./data"; |
36 | import { deleteAction, getAction, api } from "@/api/manageApi"; | 35 | import { deleteAction, getAction, api } from "@/api/manageApi"; |
37 | import EditDialog from "./edit-dialog.vue"; | 36 | import EditDialog from "./edit-dialog.vue"; |
38 | // import authorizationdiglog from "./authorizationdiglog.vue"; | 37 | // import authorizationdiglog from "./authorizationdiglog.vue"; |
39 | export default { | 38 | export default { |
40 | name: "menus", | 39 | name: "menus", |
41 | components: { | 40 | components: { |
42 | EditDialog, | 41 | EditDialog, |
43 | // authorizationdiglog, | 42 | // authorizationdiglog, |
44 | }, | 43 | }, |
45 | data() { | 44 | data () { |
46 | return { | 45 | return { |
47 | tablelistData: [], | 46 | tablelistData: [], |
48 | resourceCategoryId:"", | 47 | resourceCategoryId: "", |
49 | taskData: null, | 48 | taskData: null, |
50 | form: { | 49 | form: { |
51 | job_name: "", | 50 | job_name: "", |
... | @@ -106,15 +105,15 @@ export default { | ... | @@ -106,15 +105,15 @@ export default { |
106 | }, | 105 | }, |
107 | tableUrl: api.menus, // 菜单接口地址 | 106 | tableUrl: api.menus, // 菜单接口地址 |
108 | meumurlid: api.subsystem,// 项目id接口地址 | 107 | meumurlid: api.subsystem,// 项目id接口地址 |
109 | productId:""//项目id | 108 | productId: ""//项目id |
110 | }; | 109 | }; |
111 | }, | 110 | }, |
112 | created() { | 111 | created () { |
113 | this.getTableList(); | 112 | this.getTableList(); |
114 | }, | 113 | }, |
115 | methods: { | 114 | methods: { |
116 | // 加载表格数据 | 115 | // 加载表格数据 |
117 | getTableList() { | 116 | getTableList () { |
118 | 117 | ||
119 | const queryOptionsid = { | 118 | const queryOptionsid = { |
120 | conditionGroup: { | 119 | conditionGroup: { |
... | @@ -134,7 +133,7 @@ export default { | ... | @@ -134,7 +133,7 @@ export default { |
134 | // 获取系统id | 133 | // 获取系统id |
135 | getAction(this.meumurlid, params) | 134 | getAction(this.meumurlid, params) |
136 | .then((res) => { | 135 | .then((res) => { |
137 | this.productId=res.content[0].id; | 136 | this.productId = res.content[0].id; |
138 | let queryOptions = { | 137 | let queryOptions = { |
139 | conditionGroup: { | 138 | conditionGroup: { |
140 | conditions: [ | 139 | conditions: [ |
... | @@ -161,34 +160,33 @@ export default { | ... | @@ -161,34 +160,33 @@ export default { |
161 | if (res.status === 1) { | 160 | if (res.status === 1) { |
162 | this.loading = false; | 161 | this.loading = false; |
163 | this.tablelistData = res.content; | 162 | this.tablelistData = res.content; |
164 | console.log("this.tablelistData", this.tablelistData); | ||
165 | } else { | 163 | } else { |
166 | this.$message.error({ message: res.message, showClose: true }); | 164 | this.$message.error({ message: res.message, showClose: true }); |
167 | this.loading = false; | 165 | this.loading = false; |
168 | } | 166 | } |
169 | }) | 167 | }) |
170 | .catch((error) => { | 168 | .catch((error) => { |
171 | console.log("errrrrrorrrrr", error); | 169 | console.log("er", error); |
172 | this.loading = false; | 170 | this.loading = false; |
173 | }); | 171 | }); |
174 | }) | 172 | }) |
175 | .catch((error) => { | 173 | .catch((error) => { |
176 | console.log("errrrrrorrrrr", error); | 174 | console.log("er", error); |
177 | }); | 175 | }); |
178 | }, | 176 | }, |
179 | // 新增菜单 | 177 | // 新增菜单 |
180 | handleAdd() { | 178 | handleAdd () { |
181 | this.$refs.dialogForm.add(); | 179 | this.$refs.dialogForm.add(); |
182 | this.$refs.dialogForm.title = "添加"; | 180 | this.$refs.dialogForm.title = "添加"; |
183 | }, | 181 | }, |
184 | 182 | ||
185 | // 修改 | 183 | // 修改 |
186 | handleEdit(record) { | 184 | handleEdit (record) { |
187 | this.$refs.dialogForm.edit(record); | 185 | this.$refs.dialogForm.edit(record); |
188 | this.$refs.dialogForm.title = "修改"; | 186 | this.$refs.dialogForm.title = "修改"; |
189 | }, | 187 | }, |
190 | // 删除 | 188 | // 删除 |
191 | handleDelete(id,content) { | 189 | handleDelete (id, content) { |
192 | this.$confirm( | 190 | this.$confirm( |
193 | `<div class="customer-message-wrapper"> | 191 | `<div class="customer-message-wrapper"> |
194 | <h5 class="title">您确认要执行该操作用于以下信息:</h5> | 192 | <h5 class="title">您确认要执行该操作用于以下信息:</h5> |
... | @@ -225,22 +223,22 @@ export default { | ... | @@ -225,22 +223,22 @@ export default { |
225 | } | 223 | } |
226 | }) | 224 | }) |
227 | }) | 225 | }) |
228 | .catch(() => {}) | 226 | .catch(() => { }) |
229 | }, | 227 | }, |
230 | // 新增、编辑回显 | 228 | // 新增、编辑回显 |
231 | reloadTableData() { | 229 | reloadTableData () { |
232 | this.getTableList() | 230 | this.getTableList() |
233 | }, | 231 | }, |
234 | }, | 232 | }, |
235 | }; | 233 | }; |
236 | </script> | 234 | </script> |
237 | <style scoped lang="scss"> | 235 | <style scoped lang="scss"> |
238 | @import "~@/styles/mixin.scss"; | 236 | @import "~@/styles/mixin.scss"; |
239 | @import "~@/styles/public.scss"; | 237 | @import "~@/styles/public.scss"; |
240 | .btnColRight { | 238 | .btnColRight { |
241 | margin-top: 20px; | 239 | margin-top: 20px; |
242 | } | 240 | } |
243 | /deep/.el-table__expand-icon { | 241 | /deep/.el-table__expand-icon { |
244 | color: #fff; | 242 | color: #fff; |
245 | } | 243 | } |
246 | </style> | 244 | </style> | ... | ... |
... | @@ -22,8 +22,7 @@ | ... | @@ -22,8 +22,7 @@ |
22 | :column="tableData.columns" | 22 | :column="tableData.columns" |
23 | :data="listdata" | 23 | :data="listdata" |
24 | :expand-row-keys="keyList" | 24 | :expand-row-keys="keyList" |
25 | row-key="id" | 25 | row-key="id"> |
26 | > | ||
27 | </lb-table> | 26 | </lb-table> |
28 | </div> | 27 | </div> |
29 | <EditDialog ref="addEditDialog" @ok="reloadTableData" /> | 28 | <EditDialog ref="addEditDialog" @ok="reloadTableData" /> |
... | @@ -31,28 +30,35 @@ | ... | @@ -31,28 +30,35 @@ |
31 | </div> | 30 | </div> |
32 | </template> | 31 | </template> |
33 | <script> | 32 | <script> |
34 | import { | 33 | import { |
35 | getUuid, | 34 | getUuid, |
36 | judgeSort, | 35 | judgeSort, |
37 | realMove, | 36 | realMove, |
38 | findParents, | 37 | findParents, |
39 | removeTreeListItem, | 38 | removeTreeListItem, |
40 | } from "@/utils/operation"; | 39 | } from "@/utils/operation"; |
41 | import { getRolesById, getUserRoles } from "@/api/quanxianmanagement"; | 40 | import { getRolesById, getUserRoles, getAuthorityListAction } from "@/api/quanxianmanagement"; |
42 | import data from "./data"; | 41 | import data from "./data"; |
43 | import sjsbTask from "@/api/sjsbTask.js"; | 42 | // import { |
44 | import { api, getAction,deleteAction } from "@/api/manageApi"; | 43 | // getOrganizationAuthorityList, |
45 | import tableMixin from "@/mixins/tableMixin.js"; | 44 | // getDepartmentAuthorityList, |
46 | import EditDialog from "./edit-dialog.vue"; | 45 | // getRoleAuthorityList, |
47 | import Roleslistdiglog from "./roleslistdiglog.vue"; | 46 | // getUserAuthorityList, |
48 | export default { | 47 | // getAuthorityListAction |
48 | // } from '@/api/authorityManage' | ||
49 | import sjsbTask from "@/api/sjsbTask.js"; | ||
50 | import { api, getAction, deleteAction } from "@/api/manageApi"; | ||
51 | import tableMixin from "@/mixins/tableMixin.js"; | ||
52 | import EditDialog from "./edit-dialog.vue"; | ||
53 | import Roleslistdiglog from "./roleslistdiglog.vue"; | ||
54 | export default { | ||
49 | name: "menus", | 55 | name: "menus", |
50 | mixins: [tableMixin], | 56 | mixins: [tableMixin], |
51 | components: { | 57 | components: { |
52 | EditDialog, | 58 | EditDialog, |
53 | Roleslistdiglog, | 59 | Roleslistdiglog, |
54 | }, | 60 | }, |
55 | data() { | 61 | data () { |
56 | return { | 62 | return { |
57 | personlist: null, | 63 | personlist: null, |
58 | waitMemberList: [], | 64 | waitMemberList: [], |
... | @@ -67,6 +73,11 @@ export default { | ... | @@ -67,6 +73,11 @@ export default { |
67 | roleId: "", | 73 | roleId: "", |
68 | title: "", | 74 | title: "", |
69 | queryParam: {}, | 75 | queryParam: {}, |
76 | multipleSelection: [], | ||
77 | // 菜单列表 | ||
78 | menutablelistData: [], | ||
79 | tableUrl: api.menus, // 菜单接口地址 | ||
80 | meumurlid: api.subsystem, // 项目id接口地址 | ||
70 | selectType: "0", | 81 | selectType: "0", |
71 | queryName: "", | 82 | queryName: "", |
72 | organizationId: "", // 组织机构ID | 83 | organizationId: "", // 组织机构ID |
... | @@ -74,6 +85,8 @@ export default { | ... | @@ -74,6 +85,8 @@ export default { |
74 | departmentList: [], // 部门列表 | 85 | departmentList: [], // 部门列表 |
75 | levelList: [], // 职务级别 | 86 | levelList: [], // 职务级别 |
76 | sexList: [], | 87 | sexList: [], |
88 | operationCodes: null, // 操作符对象 | ||
89 | operationList: [], // 获取授权列表需要提交的操作符数组 | ||
77 | typeOptions: [ | 90 | typeOptions: [ |
78 | { | 91 | { |
79 | value: "0", | 92 | value: "0", |
... | @@ -141,10 +154,16 @@ export default { | ... | @@ -141,10 +154,16 @@ export default { |
141 | render: (h, scope) => { | 154 | render: (h, scope) => { |
142 | return ( | 155 | return ( |
143 | <div> | 156 | <div> |
144 | <el-tooltip class="item" effect="dark" disabled={scope.row.type !== 'Everyone'} content="没有点击的权限" placement="top"> | 157 | <el-tooltip |
158 | class="item" | ||
159 | effect="dark" | ||
160 | disabled={scope.row.type !== "Everyone"} | ||
161 | content="没有点击的权限" | ||
162 | placement="top" | ||
163 | > | ||
145 | <span> | 164 | <span> |
146 | <el-button | 165 | <el-button |
147 | disabled={scope.row.type === 'Everyone'} | 166 | disabled={scope.row.type === "Everyone"} |
148 | type="text" | 167 | type="text" |
149 | size="mini" | 168 | size="mini" |
150 | icon="el-icon-video-pause" | 169 | icon="el-icon-video-pause" |
... | @@ -156,7 +175,13 @@ export default { | ... | @@ -156,7 +175,13 @@ export default { |
156 | </el-button> | 175 | </el-button> |
157 | </span> | 176 | </span> |
158 | </el-tooltip> | 177 | </el-tooltip> |
159 | <el-tooltip class="item" effect="dark" disabled={scope.row.category !== 1} content="系统内置角色 不允许修改" placement="top"> | 178 | <el-tooltip |
179 | class="item" | ||
180 | effect="dark" | ||
181 | disabled={scope.row.category !== 1} | ||
182 | content="系统内置角色 不允许修改" | ||
183 | placement="top" | ||
184 | > | ||
160 | <span> | 185 | <span> |
161 | <el-button | 186 | <el-button |
162 | disabled={scope.row.category === 1} | 187 | disabled={scope.row.category === 1} |
... | @@ -171,7 +196,13 @@ export default { | ... | @@ -171,7 +196,13 @@ export default { |
171 | </el-button> | 196 | </el-button> |
172 | </span> | 197 | </span> |
173 | </el-tooltip> | 198 | </el-tooltip> |
174 | <el-tooltip class="item" effect="dark" disabled={scope.row.category !== 1} content="系统内置角色 不允许删除" placement="top"> | 199 | <el-tooltip |
200 | class="item" | ||
201 | effect="dark" | ||
202 | disabled={scope.row.category !== 1} | ||
203 | content="系统内置角色 不允许删除" | ||
204 | placement="top" | ||
205 | > | ||
175 | <span> | 206 | <span> |
176 | <el-button | 207 | <el-button |
177 | type="text" | 208 | type="text" |
... | @@ -201,15 +232,16 @@ export default { | ... | @@ -201,15 +232,16 @@ export default { |
201 | }, | 232 | }, |
202 | }; | 233 | }; |
203 | }, | 234 | }, |
204 | created() { | 235 | created () { |
205 | this.getTableData(); | 236 | this.getTableData(); |
237 | this.getTableList() | ||
206 | }, | 238 | }, |
207 | mounted() {}, | 239 | mounted () { }, |
208 | methods: { | 240 | methods: { |
209 | // 获取角色列表 | 241 | // 获取角色列表 |
210 | getTableData() { | 242 | getTableData () { |
211 | let Builtinrole=[] | 243 | let Builtinrole = []; |
212 | let Publicrole=[] | 244 | let Publicrole = []; |
213 | 245 | ||
214 | getRolesById(1) | 246 | getRolesById(1) |
215 | .then((res) => { | 247 | .then((res) => { |
... | @@ -225,11 +257,93 @@ export default { | ... | @@ -225,11 +257,93 @@ export default { |
225 | .catch((e) => console.error(e)); | 257 | .catch((e) => console.error(e)); |
226 | }) | 258 | }) |
227 | .catch((e) => console.error(e)); | 259 | .catch((e) => console.error(e)); |
260 | }, | ||
228 | 261 | ||
229 | 262 | // 获取菜单列表 | |
263 | getTableList () { | ||
264 | const queryOptionsid = { | ||
265 | conditionGroup: { | ||
266 | queryRelation: "AND", | ||
267 | conditions: [ | ||
268 | { | ||
269 | property: "code", | ||
270 | value: "BDCJGPT", | ||
271 | operator: "EQ", | ||
272 | }, | ||
273 | ], | ||
230 | }, | 274 | }, |
231 | // 人员配置 | 275 | }; |
232 | getUserList(row) { | 276 | const params = { |
277 | queryOptions: queryOptionsid, | ||
278 | }; | ||
279 | // 获取系统id | ||
280 | getAction(this.meumurlid, params) | ||
281 | .then((res) => { | ||
282 | this.productId = res.content[0].id; | ||
283 | this.getAuthorityList(res.content[0].id, res.content[0].code) | ||
284 | this.selectedSubsystemCode = res.content[0].code | ||
285 | let queryOptions = { | ||
286 | conditionGroup: { | ||
287 | conditions: [ | ||
288 | { | ||
289 | property: "productId", | ||
290 | value: this.productId, | ||
291 | operator: "EQ", | ||
292 | }, | ||
293 | ], | ||
294 | queryRelation: "AND", | ||
295 | }, | ||
296 | orderBys: [{ property: "sort", direction: "desc" }], | ||
297 | }; | ||
298 | if (!this.tableUrl) { | ||
299 | console.log("请设置tableUrl属性为接口地址!"); | ||
300 | return; | ||
301 | } | ||
302 | if (this.queryOptions !== "") { | ||
303 | this.queryParam.queryOptions = JSON.stringify(queryOptions); | ||
304 | } | ||
305 | // 查询系统菜单 | ||
306 | getAction(this.tableUrl, this.queryParam) | ||
307 | .then((res) => { | ||
308 | if (res.status === 1) { | ||
309 | this.loading = false; | ||
310 | this.menutablelistData = res.content; | ||
311 | } else { | ||
312 | this.$message.error({ message: res.message, showClose: true }); | ||
313 | this.loading = false; | ||
314 | } | ||
315 | }) | ||
316 | .catch((error) => { | ||
317 | console.log("er", error); | ||
318 | this.loading = false; | ||
319 | }); | ||
320 | }) | ||
321 | .catch((error) => { | ||
322 | console.log("er", error); | ||
323 | }); | ||
324 | }, | ||
325 | // 获取权限列表 | ||
326 | getAuthorityList (productId, code) { | ||
327 | getAuthorityListAction(productId, code).then( | ||
328 | res => { | ||
329 | if (res.status === 1) { | ||
330 | if (res.content.length !== 0) { | ||
331 | this.operationCodes = res.content[0].operations | ||
332 | this.operationList = [] | ||
333 | for (var k in this.operationCodes) { | ||
334 | this.operationList.push(k) | ||
335 | } | ||
336 | } | ||
337 | } else { | ||
338 | this.$message.error({ message: res.message, showClose: true }) | ||
339 | } | ||
340 | } | ||
341 | ) | ||
342 | }, | ||
343 | |||
344 | // 配置 | ||
345 | getUserList (row) { | ||
346 | this.getTableList() | ||
233 | const params = {}; | 347 | const params = {}; |
234 | const queryOptions = { | 348 | const queryOptions = { |
235 | conditionGroup: { | 349 | conditionGroup: { |
... | @@ -250,6 +364,7 @@ export default { | ... | @@ -250,6 +364,7 @@ export default { |
250 | orderBys: [{ property: "sort", direction: "desc" }], | 364 | orderBys: [{ property: "sort", direction: "desc" }], |
251 | }; | 365 | }; |
252 | params.queryOptions = JSON.stringify(queryOptions); | 366 | params.queryOptions = JSON.stringify(queryOptions); |
367 | |||
253 | getUserRoles(row.id).then((res) => { | 368 | getUserRoles(row.id).then((res) => { |
254 | if (res.status === 1) { | 369 | if (res.status === 1) { |
255 | this.personlist = res.content; | 370 | this.personlist = res.content; |
... | @@ -266,7 +381,10 @@ export default { | ... | @@ -266,7 +381,10 @@ export default { |
266 | }); | 381 | }); |
267 | } | 382 | } |
268 | 383 | ||
269 | this.$refs.rolesForm.adds(this.waitMemberList, row.id); | 384 | this.$refs.rolesForm.personlist(this.waitMemberList, row.id); |
385 | // this.$refs.rolesForm.getMenuData(); | ||
386 | |||
387 | this.$refs.rolesForm.menulist(this.operationList, row.id, this.selectedSubsystemCode, this.menutablelistData, this.operationCodes); | ||
270 | } else { | 388 | } else { |
271 | this.$message.error({ message: res.message, showClose: true }); | 389 | this.$message.error({ message: res.message, showClose: true }); |
272 | } | 390 | } |
... | @@ -276,7 +394,7 @@ export default { | ... | @@ -276,7 +394,7 @@ export default { |
276 | }); | 394 | }); |
277 | }, | 395 | }, |
278 | // 新增、修改角色 | 396 | // 新增、修改角色 |
279 | handleAddEdit(value) { | 397 | handleAddEdit (value) { |
280 | this.$refs.addEditDialog.menuType = this.menuType; | 398 | this.$refs.addEditDialog.menuType = this.menuType; |
281 | this.$refs.addEditDialog.roleId = value.id; | 399 | this.$refs.addEditDialog.roleId = value.id; |
282 | this.roleSort = value.sort ? value.sort : 0; | 400 | this.roleSort = value.sort ? value.sort : 0; |
... | @@ -289,13 +407,13 @@ export default { | ... | @@ -289,13 +407,13 @@ export default { |
289 | this.$refs.addEditDialog.dialogTitle = value.id ? "修改" : "新增"; | 407 | this.$refs.addEditDialog.dialogTitle = value.id ? "修改" : "新增"; |
290 | }, | 408 | }, |
291 | // 上移下移 | 409 | // 上移下移 |
292 | moveUpward(index, row) { | 410 | moveUpward (index, row) { |
293 | realMove(row.id, "UP", this.listdata); | 411 | realMove(row.id, "UP", this.listdata); |
294 | this.key++; | 412 | this.key++; |
295 | let id = findParents(this.listdata, row.id); | 413 | let id = findParents(this.listdata, row.id); |
296 | this.keyList = id; | 414 | this.keyList = id; |
297 | }, | 415 | }, |
298 | moveDown(index, row) { | 416 | moveDown (index, row) { |
299 | realMove(row.id, "DOWN", this.listdata); | 417 | realMove(row.id, "DOWN", this.listdata); |
300 | this.key++; | 418 | this.key++; |
301 | let id = findParents(this.listdata, row.id); | 419 | let id = findParents(this.listdata, row.id); |
... | @@ -303,7 +421,7 @@ export default { | ... | @@ -303,7 +421,7 @@ export default { |
303 | }, | 421 | }, |
304 | 422 | ||
305 | // 删除 | 423 | // 删除 |
306 | handleDelete: function(id, content = '') { | 424 | handleDelete: function (id, content = "") { |
307 | this.$confirm( | 425 | this.$confirm( |
308 | `<div class="customer-message-wrapper"> | 426 | `<div class="customer-message-wrapper"> |
309 | <h5 class="title">您确认要执行该操作用于以下信息:</h5> | 427 | <h5 class="title">您确认要执行该操作用于以下信息:</h5> |
... | @@ -313,47 +431,47 @@ export default { | ... | @@ -313,47 +431,47 @@ export default { |
313 | <span >无法恢复</span> | 431 | <span >无法恢复</span> |
314 | </p> | 432 | </p> |
315 | </div>`, | 433 | </div>`, |
316 | '执行确认', | 434 | "执行确认", |
317 | { | 435 | { |
318 | dangerouslyUseHTMLString: true, | 436 | dangerouslyUseHTMLString: true, |
319 | customClass: 'customer-delete', | 437 | customClass: "customer-delete", |
320 | confirmButtonText: '确定', | 438 | confirmButtonText: "确定", |
321 | cancelButtonText: '取消', | 439 | cancelButtonText: "取消", |
322 | type: 'warning' | 440 | type: "warning", |
323 | } | 441 | } |
324 | ) | 442 | ) |
325 | .then(() => { | 443 | .then(() => { |
326 | if (!this.tableUrl) { | 444 | if (!this.tableUrl) { |
327 | this.$message.error({ | 445 | this.$message.error({ |
328 | message: '请设置tableUrl属性为接口地址!', | 446 | message: "请设置tableUrl属性为接口地址!", |
329 | showClose: true | 447 | showClose: true, |
330 | }) | 448 | }); |
331 | return | 449 | return; |
332 | } | 450 | } |
333 | const url = this.tableUrl + '/' + id | 451 | const url = this.tableUrl + "/" + id; |
334 | deleteAction(url).then(res => { | 452 | deleteAction(url).then((res) => { |
335 | if (res.status === 1) { | 453 | if (res.status === 1) { |
336 | this.$message.success({ message: res.message, showClose: true }) | 454 | this.$message.success({ message: res.message, showClose: true }); |
337 | this.getTableData() | 455 | this.getTableData(); |
338 | } else { | 456 | } else { |
339 | this.$message.error({ message: res.message, showClose: true }) | 457 | this.$message.error({ message: res.message, showClose: true }); |
340 | } | 458 | } |
459 | }); | ||
341 | }) | 460 | }) |
342 | }) | 461 | .catch(() => { }); |
343 | .catch(() => {}) | ||
344 | }, | 462 | }, |
345 | // 新增回显 | 463 | // 新增回显 |
346 | reloadTableData() { | 464 | reloadTableData () { |
347 | this.getTableData() | 465 | this.getTableData(); |
348 | }, | 466 | }, |
349 | }, | 467 | }, |
350 | }; | 468 | }; |
351 | </script> | 469 | </script> |
352 | <style scoped lang="scss"> | 470 | <style scoped lang="scss"> |
353 | @import "~@/styles/mixin.scss"; | 471 | @import "~@/styles/mixin.scss"; |
354 | @import "~@/styles/public.scss"; | 472 | @import "~@/styles/public.scss"; |
355 | .btnColRight { | 473 | .btnColRight { |
356 | margin-left: -30px; | 474 | margin-left: -30px; |
357 | margin-top: 20px; | 475 | margin-top: 20px; |
358 | } | 476 | } |
359 | </style> | 477 | </style> | ... | ... |
... | @@ -5,8 +5,7 @@ | ... | @@ -5,8 +5,7 @@ |
5 | @click="close()" | 5 | @click="close()" |
6 | custom-class="dialogBox editDialogBox mainCenter" | 6 | custom-class="dialogBox editDialogBox mainCenter" |
7 | :visible.sync="visible" | 7 | :visible.sync="visible" |
8 | width="85%" | 8 | width="85%"> |
9 | > | ||
10 | <div slot="title" class="dialog_title" ref="dialogTitle"> | 9 | <div slot="title" class="dialog_title" ref="dialogTitle"> |
11 | {{ title || "标题" }} | 10 | {{ title || "标题" }} |
12 | </div> | 11 | </div> |
... | @@ -15,69 +14,89 @@ | ... | @@ -15,69 +14,89 @@ |
15 | <el-tab-pane label="人员配置" name="first"></el-tab-pane> | 14 | <el-tab-pane label="人员配置" name="first"></el-tab-pane> |
16 | <el-tab-pane label="菜单配置" name="second"></el-tab-pane> | 15 | <el-tab-pane label="菜单配置" name="second"></el-tab-pane> |
17 | </el-tabs> | 16 | </el-tabs> |
18 | <!-- <div class="editDialogBox-box" v-if="activeName == 'first'"> --> | ||
19 | <lb-table | 17 | <lb-table |
20 | v-if="activeName == 'first'" | 18 | v-show="activeName == 'first'" |
21 | ref="multipleTable" | 19 | ref="multipleTable" |
22 | :pagination="false" | 20 | :pagination="false" |
23 | :column="usertableData.column" | 21 | :column="usertableData.column" |
24 | :data="usertableData.data" | 22 | :data="usertableData.data" |
25 | @selection-change="handleSelectionChange" | 23 | @selection-change="handleSelectionChange" |
26 | @row-click="handleClickTableRow" | 24 | @row-click="handleClickTableRow"> |
27 | > | ||
28 | > | 25 | > |
29 | </lb-table> | 26 | </lb-table> |
30 | <!-- </div> --> | ||
31 | <!-- <div class="editDialogBox-box" v-else="activeName !== 'first'"> --> | ||
32 | <lb-table | 27 | <lb-table |
33 | v-else="activeName !== 'first'" | 28 | :key="menukey" |
29 | v-show="activeName == 'second'" | ||
30 | ref="multipleTable1" | ||
34 | :pagination="false" | 31 | :pagination="false" |
35 | :column="menutableData.columns" | 32 | :column="menutableData.column" |
36 | :data="menutableData" | 33 | :data="lastMenuList" |
37 | row-key="id" | 34 | row-key="id" |
38 | default-expand-all | 35 | default-expand-all |
39 | @selection-change="handleSelectionChanges" | 36 | :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> |
40 | @row-click="handleClickTableRows" | ||
41 | :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" | ||
42 | > | ||
43 | </lb-table> | 37 | </lb-table> |
44 | <!-- </div> --> | ||
45 | </div> | 38 | </div> |
46 | <template slot="footer"> | 39 | <template slot="footer"> |
47 | <el-button type="primary" class="save" @click="handleSaveMember()" | 40 | <el-button type="primary" class="save" @click="handleSaveMember()">保存</el-button> |
48 | >保存</el-button | ||
49 | > | ||
50 | <el-button class="cancel-button" @click="close()">取消</el-button> | 41 | <el-button class="cancel-button" @click="close()">取消</el-button> |
51 | </template> | 42 | </template> |
52 | </el-dialog> | 43 | </el-dialog> |
53 | </template> | 44 | </template> |
54 | 45 | ||
55 | <script> | 46 | <script> |
56 | import { updateUser } from "@/api/quanxianmanagement"; | 47 | import { api } from "@/api/manageApi"; |
57 | export default { | 48 | import { updateUser, getRoleAuthorityList, roleAuthority } from "@/api/quanxianmanagement"; |
49 | export default { | ||
58 | name: "", | 50 | name: "", |
59 | data() { | 51 | data () { |
60 | return { | 52 | return { |
61 | title: "人员配置", | 53 | title: "人员配置", |
62 | visible: false, | 54 | visible: false, |
63 | menutableData: { | 55 | menutableData: { |
64 | column: [ | 56 | column: [ |
65 | { | 57 | { |
66 | type: "selection", | 58 | label: "序号", |
59 | type: "index", | ||
60 | width: "50", | ||
61 | // index: this.indexMethod, | ||
67 | }, | 62 | }, |
68 | { | 63 | { |
69 | prop: "name", | 64 | prop: "name", |
65 | width: 330, | ||
70 | label: "菜单名称", | 66 | label: "菜单名称", |
67 | } | ||
68 | ].concat([ | ||
69 | { | ||
70 | label: "权限", | ||
71 | render: (h, scope) => { | ||
72 | return ( | ||
73 | <div> | ||
74 | <el-checkbox v-model={scope.row.checkArr[0].value} | ||
75 | disabled={scope.row.checkArr[0].disabled} | ||
76 | label={scope.row.checkArr[0].name} onChange={(checked) => { | ||
77 | this.changeCheck(checked, scope.row.checkArr[0].id, scope); | ||
78 | }} /> | ||
79 | <el-checkbox v-model={scope.row.checkArr[1].value} | ||
80 | disabled={scope.row.checkArr[0].disabled} | ||
81 | label={scope.row.checkArr[1].name} | ||
82 | onChange={(checked) => { | ||
83 | this.changeCheck(checked, scope.row.checkArr[1].id, scope); | ||
84 | }} /> | ||
85 | </div> | ||
86 | ); | ||
71 | }, | 87 | }, |
72 | ], | 88 | }, |
89 | ]), | ||
73 | }, | 90 | }, |
74 | usertableData: { | 91 | usertableData: { |
75 | column: [ | 92 | column: [ |
76 | { | 93 | { |
77 | type: "selection", | 94 | type: "selection", |
95 | width: 330, | ||
78 | }, | 96 | }, |
79 | { | 97 | { |
80 | prop: "name", | 98 | prop: "name", |
99 | width: 330, | ||
81 | label: "姓名", | 100 | label: "姓名", |
82 | }, | 101 | }, |
83 | { | 102 | { |
... | @@ -85,101 +104,212 @@ export default { | ... | @@ -85,101 +104,212 @@ export default { |
85 | label: "用户名", | 104 | label: "用户名", |
86 | }, | 105 | }, |
87 | ], | 106 | ], |
107 | data: [] | ||
88 | }, | 108 | }, |
89 | // 角色id | 109 | // 角色id |
90 | roleId: "", | 110 | roleId: "", |
111 | menuList: [], // 菜单列表 | ||
112 | queryParam: {}, | ||
113 | menukey: 0, | ||
91 | activeName: "first", | 114 | activeName: "first", |
92 | multipleSelection: [], | 115 | lastMenuList: [], // 重构完成的菜单表格数据 |
116 | usermultipleSelection: [], | ||
117 | // 选中菜单列表 | ||
118 | menumultipleSelection: [], | ||
119 | tableUrl: api.menus, // 菜单接口地址 | ||
120 | meumurlid: api.subsystem,// 项目id接口地址 | ||
121 | checkArr: [], // 重构操作符列表 | ||
122 | authorityList: [], // 授权回显数组 | ||
123 | checklistbor: [], | ||
124 | // 授权对象数据 | ||
125 | menuprams: {}, | ||
126 | // 系统code | ||
127 | selectedSubsystemCode: "" | ||
93 | }; | 128 | }; |
94 | }, | 129 | }, |
95 | computed: {}, | 130 | computed: {}, |
96 | 131 | ||
97 | created() {}, | 132 | created () { |
98 | mounted() {}, | 133 | }, |
134 | mounted () { | ||
135 | }, | ||
99 | methods: { | 136 | methods: { |
100 | 137 | ||
101 | // 人员配置点击行勾选数据 | 138 | // 人员配置点击行勾选数据 |
102 | handleClickTableRow(row, event) { | 139 | handleClickTableRow (row, event) { |
103 | this.checkNum = 0; | 140 | this.checkNum1 = 0; |
104 | this.isCheck = false; | 141 | this.isCheck1 = false; |
105 | if (event.label == "操作") { | 142 | if (event.label == "操作") { |
106 | return; | 143 | return; |
107 | } else { | 144 | } else { |
108 | if (row.status == "0") { | 145 | if (row.status == "0") { |
109 | return; | 146 | return; |
110 | } else { | 147 | } else { |
111 | if (this.multipleSelection.length > 0) { | 148 | if (this.usermultipleSelection.length > 0) { |
112 | if ( | 149 | if ( |
113 | JSON.stringify(this.multipleSelection).indexOf( | 150 | JSON.stringify(this.usermultipleSelection).indexOf( |
114 | JSON.stringify(row) | 151 | JSON.stringify(row) |
115 | ) == -1 | 152 | ) == -1 |
116 | ) { | 153 | ) { |
117 | this.multipleSelection.push(row); | 154 | this.usermultipleSelection.push(row); |
118 | this.$refs.multipleTable.toggleRowSelection(row, true); | 155 | this.$refs.multipleTable.toggleRowSelection(row, true); |
119 | } else { | 156 | } else { |
120 | this.multipleSelection.map((item, index) => { | 157 | this.usermultipleSelection.map((item, index) => { |
121 | if (item.id == row.id) { | 158 | if (item.id == row.id) { |
122 | this.multipleSelection.splice(index, 1); | 159 | this.usermultipleSelection.splice(index, 1); |
123 | this.$refs.multipleTable.toggleRowSelection(row, false); | 160 | this.$refs.multipleTable.toggleRowSelection(row, false); |
124 | } | 161 | } |
125 | }); | 162 | }); |
126 | } | 163 | } |
127 | } else { | 164 | } else { |
128 | this.multipleSelection.push(row); | 165 | this.usermultipleSelection.push(row); |
129 | this.$refs.multipleTable.toggleRowSelection(row, true); | 166 | this.$refs.multipleTable.toggleRowSelection(row, true); |
130 | } | 167 | } |
131 | } | 168 | } |
132 | } | 169 | } |
133 | if (this.multipleSelection.length > 0) { | 170 | if (this.usermultipleSelection.length > 0) { |
134 | this.checkNum = this.multipleSelection.length; | 171 | this.checkNum1 = this.usermultipleSelection.length; |
135 | this.isCheck = true; | 172 | this.isCheck1 = true; |
136 | } else { | 173 | } else { |
137 | this.isCheck = false; | 174 | this.isCheck1 = false; |
138 | } | 175 | } |
139 | }, | 176 | }, |
140 | // 菜单配置点击行勾选数据 | 177 | // 获取授权主体的菜单权限 |
141 | handleClickTableRow(row, event) { | 178 | // getMenuAuthorityList |
142 | this.checkNum = 0; | 179 | menulist (operationList, id, Code, menutablelistData, operationCodes) { |
143 | this.isCheck = false; | 180 | this.selectedSubsystemCode = Code |
144 | if (event.label == "操作") { | 181 | this.menuList = menutablelistData; |
145 | return; | 182 | getRoleAuthorityList( |
146 | } else { | 183 | id, |
147 | if (row.status == "0") { | 184 | operationList.toString(), |
148 | return; | 185 | Code + '_MENU' |
186 | ).then(res => { | ||
187 | if (res.status === 1) { | ||
188 | this.authorityList = res.content | ||
189 | this.getRecursionTreeData(this.menuList, this.authorityList, operationCodes) | ||
190 | this.getAuthorizedInfo() | ||
191 | // this.setCheckAllArr() | ||
192 | // this.getAuthorizedInfo() | ||
149 | } else { | 193 | } else { |
150 | if (this.multipleSelection.length > 0) { | 194 | this.$message.error({ message: res.message, showClose: true }) |
195 | } | ||
196 | }) | ||
197 | |||
198 | |||
199 | }, | ||
200 | /** | ||
201 | * 递归渲染列表数据 | ||
202 | * list:原始数组 | ||
203 | * authorityList:已授权数组 | ||
204 | */ | ||
205 | getRecursionTreeData (list, authorityList, operationCodes) { | ||
206 | ++this.menukey | ||
207 | this.checkArr = [] | ||
208 | for (const k in operationCodes) { | ||
209 | const obj = {} | ||
210 | obj.name = operationCodes[k] | ||
211 | obj.id = k | ||
212 | obj.value = false | ||
213 | obj.disabled = false | ||
214 | // obj.isAll = false; | ||
215 | this.checkArr.push(obj) | ||
216 | } | ||
217 | for (const [index, item] of Object.entries(list)) { | ||
218 | this.setAuthorizedConditions( | ||
219 | authorityList, | ||
220 | this.$deepCopy(this.checkArr), | ||
221 | item | ||
222 | ) | ||
151 | if ( | 223 | if ( |
152 | JSON.stringify(this.multipleSelection).indexOf( | 224 | item.children && |
153 | JSON.stringify(row) | 225 | item.children !== null && |
154 | ) == -1 | 226 | item.children.length !== 0 |
155 | ) { | 227 | ) { |
156 | this.multipleSelection.push(row); | 228 | item.children.forEach((child, j) => { |
157 | this.$refs.multipleTable.toggleRowSelection(row, true); | 229 | this.setAuthorizedConditions( |
158 | } else { | 230 | authorityList, |
159 | this.multipleSelection.map((item, index) => { | 231 | this.$deepCopy(this.checkArr), |
160 | if (item.id == row.id) { | 232 | child |
161 | this.multipleSelection.splice(index, 1); | 233 | ) |
162 | this.$refs.multipleTable.toggleRowSelection(row, false); | 234 | }) |
235 | this.getRecursionTreeData(item.children, authorityList, operationCodes) | ||
163 | } | 236 | } |
164 | }); | ||
165 | } | 237 | } |
238 | this.lastMenuList = list | ||
239 | // this.setCheckAllArr(list) | ||
240 | }, | ||
241 | // 授权条件 | ||
242 | setAuthorizedConditions (authorityList, checkArr, item) { | ||
243 | if (this.roleId === '') { | ||
244 | checkArr.forEach(ele => { | ||
245 | ele.disabled = true | ||
246 | ele.value = false | ||
247 | }) | ||
166 | } else { | 248 | } else { |
167 | this.multipleSelection.push(row); | 249 | if (authorityList.length !== 0) { |
168 | this.$refs.multipleTable.toggleRowSelection(row, true); | 250 | if (authorityList[0].superPermission === true) { |
251 | checkArr.forEach(ele => { | ||
252 | ele.value = true | ||
253 | ele.disabled = true | ||
254 | }) | ||
255 | } else { | ||
256 | const repeatArr = authorityList.filter(authorityItem => { | ||
257 | return authorityItem.resourceUri === item.id | ||
258 | }) | ||
259 | repeatArr.forEach(element => { | ||
260 | checkArr.forEach(ele => { | ||
261 | if (element.operationCode === ele.id) { | ||
262 | ele.value = true | ||
263 | if (this.roleId !== element.subjectId) { | ||
264 | ele.disabled = true | ||
169 | } | 265 | } |
170 | } | 266 | } |
267 | }) | ||
268 | }) | ||
269 | } | ||
171 | } | 270 | } |
172 | if (this.multipleSelection.length > 0) { | 271 | } |
173 | this.checkNum = this.multipleSelection.length; | 272 | this.$set(item, 'checkArr', this.$deepCopy(checkArr)) |
174 | this.isCheck = true; | 273 | }, |
175 | } else { | 274 | // 获取拼接授权信息 |
176 | this.isCheck = false; | 275 | getAuthorizedInfo () { |
276 | const lastArr = [] | ||
277 | const authorizedList = [] | ||
278 | const wholeArr = this.$deepCopy(this.lastMenuList) | ||
279 | const arr = this.$treeConvertToArr(wholeArr) | ||
280 | arr.forEach(ele => { | ||
281 | ele.checkArr.forEach(val => { | ||
282 | if (val.value === true && val.disabled === false) { | ||
283 | const obj = { | ||
284 | operationCode: val.id, | ||
285 | name: ele.name, | ||
286 | id: ele.id | ||
287 | } | ||
288 | lastArr.push(obj) | ||
289 | } | ||
290 | }) | ||
291 | }) | ||
292 | lastArr.forEach(element => { | ||
293 | authorizedList.push({ | ||
294 | operationCode: element.operationCode, // 标识符 | ||
295 | productCode: this.selectedSubsystemCode, // 子系统code | ||
296 | resourceCategoryCode: this.selectedSubsystemCode + '_MENU', // 资源类别code默认为MENU | ||
297 | resourceName: element.name, | ||
298 | resourceUri: element.id, // 授权菜单id | ||
299 | subjectId: this.roleId, // 授权对象id | ||
300 | subjectType: 'ROLE' // 授权对象类别 | ||
301 | }) | ||
302 | }) | ||
303 | this.menuprams = { | ||
304 | subjectId: this.roleId, | ||
305 | authorizedList: authorizedList | ||
177 | } | 306 | } |
178 | }, | 307 | }, |
179 | // 获取人员列表做筛选 | 308 | // 获取人员列表做筛选 |
180 | adds(a, rid) { | 309 | personlist (a, rid) { |
181 | this.roleId = rid; | 310 | this.roleId = rid; |
182 | this.visible = true; | 311 | this.visible = true; |
312 | |||
183 | this.usertableData.data = a; | 313 | this.usertableData.data = a; |
184 | this.usertableData.data.forEach((item, index) => { | 314 | this.usertableData.data.forEach((item, index) => { |
185 | if (item.selectStatus === 0) { | 315 | if (item.selectStatus === 0) { |
... | @@ -191,41 +321,81 @@ export default { | ... | @@ -191,41 +321,81 @@ export default { |
191 | }); | 321 | }); |
192 | } | 322 | } |
193 | }); | 323 | }); |
324 | |||
194 | }, | 325 | }, |
195 | // 关闭事件 | 326 | // 关闭事件 |
196 | close() { | 327 | close () { |
197 | this.visible = false; | 328 | this.visible = false; |
198 | }, | 329 | }, |
199 | // 保存事件 | 330 | // 保存事件 |
200 | handleSaveMember() { | 331 | handleSaveMember () { |
201 | const idList = this.multipleSelection.map((item) => { | 332 | // 人员授权 |
333 | const idList = this.usermultipleSelection.map((item) => { | ||
202 | return item.id; | 334 | return item.id; |
203 | }); | 335 | }) |
204 | updateUser(this.roleId, idList).then((res) => { | 336 | updateUser(this.roleId, idList).then((res) => { |
205 | if (res.status === 1) { | 337 | if (res.status === 1) { |
206 | this.$message.success({ message: "保存成功", showClose: true }); | 338 | this.$message.success({ message: "保存成功", showClose: true }); |
207 | this.visible = false; | 339 | this.visible = false; |
208 | // this.$emit("setUsers", this.roleId); | ||
209 | // this.resetMemberConfig(); | ||
210 | } else this.$message.error({ message: res.message, showClose: true }); | 340 | } else this.$message.error({ message: res.message, showClose: true }); |
211 | }); | 341 | }); |
342 | // 菜单授权 | ||
343 | roleAuthority( | ||
344 | this.menuprams.subjectId, | ||
345 | this.menuprams.authorizedList | ||
346 | ).then((res) => { | ||
347 | if (res.status === 1) { | ||
348 | this.$message.success({ | ||
349 | message: res.message, | ||
350 | }) | ||
351 | // this.authorizedContChange() | ||
352 | } else { | ||
353 | this.$message.error({ message: res.message, showClose: true }) | ||
354 | } | ||
355 | }) | ||
212 | }, | 356 | }, |
213 | // 勾选人员事件 | 357 | // 勾选人员事件 |
214 | handleSelectionChange(val) { | 358 | handleSelectionChange (val) { |
215 | this.multipleSelection = val; | 359 | this.usermultipleSelection = val; |
360 | }, | ||
361 | // 数据筛选 | ||
362 | setarrdata (scope, arr) { | ||
363 | |||
364 | arr.forEach((item, index, arr) => { | ||
365 | if (item.id == scope.row.id) { | ||
366 | this.checklistbor = [...arr] | ||
367 | } else if (item.id !== scope.row.id && item.children) { | ||
368 | this.setarrdata(scope, item.children) | ||
369 | } | ||
370 | |||
371 | }) | ||
372 | |||
216 | }, | 373 | }, |
217 | // 勾选菜单事件 | 374 | // 勾选菜单事件 |
218 | handleSelectionChanges(val) { | 375 | changeCheck (flag, checkId, scope) { |
219 | this.multipleSelection = val; | 376 | this.checklistbor = [] |
377 | this.setarrdata(scope, this.lastMenuList) | ||
378 | const parents = this.$findParent(this.lastMenuList, scope.row.parentId) | ||
379 | const childs = this.$findChildren(this.lastMenuList, scope.row.id) | ||
380 | this.$setChildArr( | ||
381 | this.lastMenuList, | ||
382 | scope.row.id, | ||
383 | checkId, | ||
384 | flag, | ||
385 | this.checklistbor, | ||
386 | parents, | ||
387 | childs | ||
388 | ) | ||
389 | this.getAuthorizedInfo() | ||
220 | }, | 390 | }, |
221 | }, | 391 | }, |
222 | }; | 392 | }; |
223 | </script> | 393 | </script> |
224 | <style scoped lang="scss"> | 394 | <style scoped lang="scss"> |
225 | @import "~@/styles/mixin.scss"; | 395 | @import "~@/styles/mixin.scss"; |
226 | @import "~@/styles/dialogBox.scss"; | 396 | @import "~@/styles/dialogBox.scss"; |
227 | 397 | ||
228 | .editForm { | 398 | .editForm { |
229 | /deep/.el-textarea__inner { | 399 | /deep/.el-textarea__inner { |
230 | border: 1px solid #224c7c !important; | 400 | border: 1px solid #224c7c !important; |
231 | margin: 0 0 10px 0 !important; | 401 | margin: 0 0 10px 0 !important; |
... | @@ -241,25 +411,25 @@ export default { | ... | @@ -241,25 +411,25 @@ export default { |
241 | color: #dadde3 !important; | 411 | color: #dadde3 !important; |
242 | background: transparent !important; | 412 | background: transparent !important; |
243 | } | 413 | } |
244 | } | 414 | } |
245 | 415 | ||
246 | /deep/.el-dialog__body { | 416 | /deep/.el-dialog__body { |
247 | display: flex; | 417 | display: flex; |
248 | flex-direction: column; | 418 | flex-direction: column; |
249 | } | 419 | } |
250 | 420 | ||
251 | /deep/ .el-tabs { | 421 | /deep/ .el-tabs { |
252 | color: #cef8ff; | 422 | color: #cef8ff; |
253 | } | 423 | } |
254 | 424 | ||
255 | .sjmx { | 425 | .sjmx { |
256 | /deep/.el-tabs__item { | 426 | /deep/.el-tabs__item { |
257 | height: 50px; | 427 | height: 50px; |
258 | padding-top: 6px; | 428 | padding-top: 6px; |
259 | } | 429 | } |
260 | } | 430 | } |
261 | 431 | ||
262 | /deep/.el-tabs__item { | 432 | /deep/.el-tabs__item { |
263 | color: #cef8ff !important; | 433 | color: #cef8ff !important; |
264 | 434 | ||
265 | display: flex; | 435 | display: flex; |
... | @@ -268,75 +438,75 @@ export default { | ... | @@ -268,75 +438,75 @@ export default { |
268 | background: url("~@/image/tabitem.png") no-repeat; | 438 | background: url("~@/image/tabitem.png") no-repeat; |
269 | background-size: 100% 100%; | 439 | background-size: 100% 100%; |
270 | border: none !important; | 440 | border: none !important; |
271 | } | 441 | } |
272 | 442 | ||
273 | .obligee-item-name { | 443 | .obligee-item-name { |
274 | background: #05275b; | 444 | background: #05275b; |
275 | color: #ffffff; | 445 | color: #ffffff; |
276 | background: url("~@/image/itembg.png") no-repeat; | 446 | background: url("~@/image/itembg.png") no-repeat; |
277 | background-size: 100% 100%; | 447 | background-size: 100% 100%; |
278 | } | 448 | } |
279 | 449 | ||
280 | /deep/.el-tabs__nav-scroll { | 450 | /deep/.el-tabs__nav-scroll { |
281 | background: none; | 451 | background: none; |
282 | } | 452 | } |
283 | 453 | ||
284 | /deep/.el-tabs__nav { | 454 | /deep/.el-tabs__nav { |
285 | display: flex; | 455 | display: flex; |
286 | border: none !important; | 456 | border: none !important; |
287 | } | 457 | } |
288 | 458 | ||
289 | /deep/.el-tabs__item.is-top { | 459 | /deep/.el-tabs__item.is-top { |
290 | border: 1px solid #dfe4ed; | 460 | border: 1px solid #dfe4ed; |
291 | border-top: 1px solid #dfe4ed; | 461 | border-top: 1px solid #dfe4ed; |
292 | border-bottom: 1px solid transparent; | 462 | border-bottom: 1px solid transparent; |
293 | } | 463 | } |
294 | 464 | ||
295 | /deep/.el-tabs__header { | 465 | /deep/.el-tabs__header { |
296 | border: none; | 466 | border: none; |
297 | margin-bottom: 0; | 467 | margin-bottom: 0; |
298 | } | 468 | } |
299 | 469 | ||
300 | /deep/.el-tabs__item.is-top:not(:last-child) { | 470 | /deep/.el-tabs__item.is-top:not(:last-child) { |
301 | margin-right: 5px; | 471 | margin-right: 5px; |
302 | } | 472 | } |
303 | 473 | ||
304 | /deep/.el-tabs__item.is-top { | 474 | /deep/.el-tabs__item.is-top { |
305 | background-color: none !important; | 475 | background-color: none !important; |
306 | } | 476 | } |
307 | 477 | ||
308 | /deep/.el-tabs__item.is-active { | 478 | /deep/.el-tabs__item.is-active { |
309 | background: url("~@/image/tabitemse.png") no-repeat; | 479 | background: url("~@/image/tabitemse.png") no-repeat; |
310 | background-size: 100% 100%; | 480 | background-size: 100% 100%; |
311 | } | 481 | } |
312 | 482 | ||
313 | .success-images { | 483 | .success-images { |
314 | width: 30px; | 484 | width: 30px; |
315 | height: 30px; | 485 | height: 30px; |
316 | position: relative; | 486 | position: relative; |
317 | top: 10px; | 487 | top: 10px; |
318 | right: 3px; | 488 | right: 3px; |
319 | } | 489 | } |
320 | 490 | ||
321 | .tab-pane-item { | 491 | .tab-pane-item { |
322 | line-height: 20px; | 492 | line-height: 20px; |
323 | color: #02d9fd; | 493 | color: #02d9fd; |
324 | 494 | ||
325 | p { | 495 | p { |
326 | text-align: center; | 496 | text-align: center; |
327 | } | 497 | } |
328 | } | 498 | } |
329 | 499 | ||
330 | .edit-content { | 500 | .edit-content { |
331 | height: 450px; | 501 | height: 450px; |
332 | overflow-y: auto; | 502 | overflow-y: auto; |
333 | overflow-x: hidden; | 503 | overflow-x: hidden; |
334 | padding-right: 1px; | 504 | padding-right: 1px; |
335 | margin-bottom: 10px; | 505 | margin-bottom: 10px; |
336 | border-top: none; | 506 | border-top: none; |
337 | } | 507 | } |
338 | 508 | ||
339 | /deep/.editDialogBox { | 509 | /deep/.editDialogBox { |
340 | border-radius: 8px; | 510 | border-radius: 8px; |
341 | overflow: hidden; | 511 | overflow: hidden; |
342 | min-width: 1228px; | 512 | min-width: 1228px; |
... | @@ -414,12 +584,12 @@ export default { | ... | @@ -414,12 +584,12 @@ export default { |
414 | width: 100%; | 584 | width: 100%; |
415 | border-bottom: 1px solid #ccc; | 585 | border-bottom: 1px solid #ccc; |
416 | } | 586 | } |
417 | } | 587 | } |
418 | 588 | ||
419 | .el-dialog__wrapper { | 589 | .el-dialog__wrapper { |
420 | overflow: hidden; | 590 | overflow: hidden; |
421 | } | 591 | } |
422 | /deep/.el-table { | 592 | /deep/.el-table { |
423 | background: none; | 593 | background: none; |
424 | th.el-table__cell { | 594 | th.el-table__cell { |
425 | background-color: #073781; | 595 | background-color: #073781; |
... | @@ -432,7 +602,7 @@ export default { | ... | @@ -432,7 +602,7 @@ export default { |
432 | color: white; | 602 | color: white; |
433 | } | 603 | } |
434 | } | 604 | } |
435 | } | 605 | } |
436 | 606 | ||
437 | // #08346F !important; | 607 | // #08346F !important; |
438 | </style> | 608 | </style> | ... | ... |
-
Please register or sign in to post a comment