From 43e1199ca0c75787fb6b52bef7d595abd115ceab Mon Sep 17 00:00:00 2001 From: feige <791364011@qq.com> Date: 星期四, 02 一月 2025 21:44:58 +0800 Subject: [PATCH] 修改bug --- ruoyi-ui/src/views/system/role/index.vue | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 350 insertions(+), 1 deletions(-) diff --git a/ruoyi-ui/src/views/system/role/index.vue b/ruoyi-ui/src/views/system/role/index.vue index fb3b5ef..fa5316e 100644 --- a/ruoyi-ui/src/views/system/role/index.vue +++ b/ruoyi-ui/src/views/system/role/index.vue @@ -602,4 +602,353 @@ } } }; -</script> \ No newline at end of file +</script> + +export default { + name: "Role", + dicts: ['sys_normal_disable'], + data() { + return { + // 閬僵灞� + loading: true, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 瑙掕壊琛ㄦ牸鏁版嵁 + roleList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏄惁鏄剧ず寮瑰嚭灞傦紙鏁版嵁鏉冮檺锛� + openDataScope: false, + menuExpand: false, + menuNodeAll: false, + deptExpand: true, + deptNodeAll: false, + // 鏃ユ湡鑼冨洿 + dateRange: [], + // 鏁版嵁鑼冨洿閫夐」 + dataScopeOptions: [ + { + value: "1", + label: "鍏ㄩ儴鏁版嵁鏉冮檺" + }, + { + value: "2", + label: "鑷畾鏁版嵁鏉冮檺" + }, + { + value: "3", + label: "鏈儴闂ㄦ暟鎹潈闄�" + }, + { + value: "4", + label: "鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺" + }, + { + value: "5", + label: "浠呮湰浜烘暟鎹潈闄�" + } + ], + // 鑿滃崟鍒楄〃 + menuOptions: [], + // 閮ㄩ棬鍒楄〃 + deptOptions: [], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + roleName: undefined, + roleKey: undefined, + status: undefined + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + defaultProps: { + children: "children", + label: "label" + }, + // 琛ㄥ崟鏍¢獙 + rules: { + roleName: [ + { required: true, message: "瑙掕壊鍚嶇О涓嶈兘涓虹┖", trigger: "blur" } + ], + roleKey: [ + { required: true, message: "鏉冮檺瀛楃涓嶈兘涓虹┖", trigger: "blur" } + ], + roleSort: [ + { required: true, message: "瑙掕壊椤哄簭涓嶈兘涓虹┖", trigger: "blur" } + ] + } + }; + }, + created() { + this.getList(); + }, + methods: { + /** 鏌ヨ瑙掕壊鍒楄〃 */ + getList() { + this.loading = true; + listRole(this.addDateRange(this.queryParams, this.dateRange)).then(response => { + this.roleList = response.rows; + this.total = response.total; + this.loading = false; + } + ); + }, + /** 鏌ヨ鑿滃崟鏍戠粨鏋� */ + getMenuTreeselect() { + menuTreeselect().then(response => { + this.menuOptions = response.data; + }); + }, + // 鎵�鏈夎彍鍗曡妭鐐规暟鎹� + getMenuAllCheckedKeys() { + // 鐩墠琚�変腑鐨勮彍鍗曡妭鐐� + let checkedKeys = this.$refs.menu.getCheckedKeys(); + // 鍗婇�変腑鐨勮彍鍗曡妭鐐� + let halfCheckedKeys = this.$refs.menu.getHalfCheckedKeys(); + checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys); + return checkedKeys; + }, + // 鎵�鏈夐儴闂ㄨ妭鐐规暟鎹� + getDeptAllCheckedKeys() { + // 鐩墠琚�変腑鐨勯儴闂ㄨ妭鐐� + let checkedKeys = this.$refs.dept.getCheckedKeys(); + // 鍗婇�変腑鐨勯儴闂ㄨ妭鐐� + let halfCheckedKeys = this.$refs.dept.getHalfCheckedKeys(); + checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys); + return checkedKeys; + }, + /** 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戠粨鏋� */ + getRoleMenuTreeselect(roleId) { + return roleMenuTreeselect(roleId).then(response => { + this.menuOptions = response.menus; + return response; + }); + }, + /** 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戠粨鏋� */ + getDeptTree(roleId) { + return deptTreeSelect(roleId).then(response => { + this.deptOptions = response.depts; + return response; + }); + }, + // 瑙掕壊鐘舵�佷慨鏀� + handleStatusChange(row) { + let text = row.status === "0" ? "鍚敤" : "鍋滅敤"; + this.$modal.confirm('纭瑕�"' + text + '""' + row.roleName + '"瑙掕壊鍚楋紵').then(function() { + return changeRoleStatus(row.roleId, row.status); + }).then(() => { + this.$modal.msgSuccess(text + "鎴愬姛"); + }).catch(function() { + row.status = row.status === "0" ? "1" : "0"; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 鍙栨秷鎸夐挳锛堟暟鎹潈闄愶級 + cancelDataScope() { + this.openDataScope = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + if (this.$refs.menu != undefined) { + this.$refs.menu.setCheckedKeys([]); + } + this.menuExpand = false, + this.menuNodeAll = false, + this.deptExpand = true, + this.deptNodeAll = false, + this.form = { + roleId: undefined, + roleName: undefined, + roleKey: undefined, + roleSort: 0, + status: "0", + menuIds: [], + deptIds: [], + menuCheckStrictly: true, + deptCheckStrictly: true, + remark: undefined + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.dateRange = []; + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.roleId) + this.single = selection.length!=1 + this.multiple = !selection.length + }, + // 鏇村鎿嶄綔瑙﹀彂 + handleCommand(command, row) { + switch (command) { + case "handleDataScope": + this.handleDataScope(row); + break; + case "handleAuthUser": + this.handleAuthUser(row); + break; + default: + break; + } + }, + // 鏍戞潈闄愶紙灞曞紑/鎶樺彔锛� + handleCheckedTreeExpand(value, type) { + if (type == 'menu') { + let treeList = this.menuOptions; + for (let i = 0; i < treeList.length; i++) { + this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value; + } + } else if (type == 'dept') { + let treeList = this.deptOptions; + for (let i = 0; i < treeList.length; i++) { + this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value; + } + } + }, + // 鏍戞潈闄愶紙鍏ㄩ��/鍏ㄤ笉閫夛級 + handleCheckedTreeNodeAll(value, type) { + if (type == 'menu') { + this.$refs.menu.setCheckedNodes(value ? this.menuOptions: []); + } else if (type == 'dept') { + this.$refs.dept.setCheckedNodes(value ? this.deptOptions: []); + } + }, + // 鏍戞潈闄愶紙鐖跺瓙鑱斿姩锛� + handleCheckedTreeConnect(value, type) { + if (type == 'menu') { + this.form.menuCheckStrictly = value ? true: false; + } else if (type == 'dept') { + this.form.deptCheckStrictly = value ? true: false; + } + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.getMenuTreeselect(); + this.open = true; + this.title = "娣诲姞瑙掕壊"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const roleId = row.roleId || this.ids + const roleMenu = this.getRoleMenuTreeselect(roleId); + getRole(roleId).then(response => { + this.form = response.data; + this.open = true; + this.$nextTick(() => { + roleMenu.then(res => { + let checkedKeys = res.checkedKeys + checkedKeys.forEach((v) => { + this.$nextTick(()=>{ + this.$refs.menu.setChecked(v, true ,false); + }) + }) + }); + }); + this.title = "淇敼瑙掕壊"; + }); + }, + /** 閫夋嫨瑙掕壊鏉冮檺鑼冨洿瑙﹀彂 */ + dataScopeSelectChange(value) { + if(value !== '2') { + this.$refs.dept.setCheckedKeys([]); + } + }, + /** 鍒嗛厤鏁版嵁鏉冮檺鎿嶄綔 */ + handleDataScope(row) { + this.reset(); + const deptTreeSelect = this.getDeptTree(row.roleId); + getRole(row.roleId).then(response => { + this.form = response.data; + this.openDataScope = true; + this.$nextTick(() => { + deptTreeSelect.then(res => { + this.$refs.dept.setCheckedKeys(res.checkedKeys); + }); + }); + this.title = "鍒嗛厤鏁版嵁鏉冮檺"; + }); + }, + /** 鍒嗛厤鐢ㄦ埛鎿嶄綔 */ + handleAuthUser: function(row) { + const roleId = row.roleId; + this.$router.push("/system/role-auth/user/" + roleId); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm: function() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.roleId != undefined) { + this.form.menuIds = this.getMenuAllCheckedKeys(); + updateRole(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + this.form.menuIds = this.getMenuAllCheckedKeys(); + addRole(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鎻愪氦鎸夐挳锛堟暟鎹潈闄愶級 */ + submitDataScope: function() { + if (this.form.roleId != undefined) { + this.form.deptIds = this.getDeptAllCheckedKeys(); + dataScope(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.openDataScope = false; + this.getList(); + }); + } + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const roleIds = row.roleId || this.ids; + this.$modal.confirm('鏄惁纭鍒犻櫎瑙掕壊缂栧彿涓�"' + roleIds + '"鐨勬暟鎹」锛�').then(function() { + return delRole(roleIds); + }).then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download('system/role/export', { + ...this.queryParams + }, `role_${new Date().getTime()}.xlsx`) + } + } +}; +</script> -- Gitblit v1.9.1