Преглед изворни кода

对接是否允许给角色授权,增加全部展开,全部折叠功能

yanglzh пре 3 година
родитељ
комит
09724fadb0
3 измењених фајлова са 42 додато и 15 уклоњено
  1. 3 0
      src/api/system/index.ts
  2. 22 4
      src/views/system/role/component/permission.vue
  3. 17 11
      src/views/system/role/index.vue

+ 3 - 0
src/api/system/index.ts

@@ -46,6 +46,9 @@ export default {
     editRole: (data: object) => put('/system/role/edit', data),
     auth: {
       getList: (itemsType: 'menu' | 'button' | 'column' | 'api' | string, menuIds?: number[]) => get('/system/authorize/query', { itemsType, menuIds }),
+      set: (data: object) => post('/system/authorize/Add', data),
+      // 判断是否允许给角色授权
+      isAllow: (roleId: number) => get('/system/authorize/isAllow', { roleId }),
     }
   },
   org: {

+ 22 - 4
src/views/system/role/component/permission.vue

@@ -11,8 +11,8 @@
           <el-dropdown-menu>
             <el-dropdown-item>全部勾选</el-dropdown-item>
             <el-dropdown-item>取消全选</el-dropdown-item>
-            <el-dropdown-item>展开所有</el-dropdown-item>
-            <el-dropdown-item>折叠所有</el-dropdown-item>
+            <el-dropdown-item @click.native="expand(true)">展开所有</el-dropdown-item>
+            <el-dropdown-item @click.native="expand(false)">折叠所有</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
@@ -36,6 +36,7 @@
 <script lang="ts" setup>
 import { ref } from 'vue';
 import api from '/@/api/system';
+import { ElMessage } from 'element-plus';
 const isShowDialog = ref(false);
 const btnLoading = ref(false);
 const step = ref(0);
@@ -73,6 +74,13 @@ const cancel = () => {
 	isShowDialog.value = false;
 };
 
+const expand = (expand: boolean) => {
+	const nodes = treeRef.value.store.nodesMap;
+	for (let i in nodes) {
+		nodes[i].expanded = expand;
+	}
+};
+
 const prev = async () => {
 	const currentStep = step.value;
 	const prevStep = step.value - 1;
@@ -106,10 +114,20 @@ const submit = async () => {
 		apiIds: apiIds.value,
 		roleId: roleId.value,
 	};
-	console.log(data);
+	// console.log(data);
+
+	btnLoading.value = true;
+	api.role.auth
+		.set(data)
+		.then(() => {
+			ElMessage.success('权限设置成功');
+		})
+		.finally(() => {
+			btnLoading.value = false;
+		});
 };
 
-openDialog({ name: '超级管理员', id: 3 });
+// openDialog({ name: '超级管理员', id: 3 });
 
 defineExpose({ openDialog });
 </script>

+ 17 - 11
src/views/system/role/index.vue

@@ -138,24 +138,30 @@ export default defineComponent({
 				confirmButtonText: '确认',
 				cancelButtonText: '取消',
 				type: 'warning',
-			})
-				.then(() => {
-					api.role.deleteRole(row.id).then(() => {
-						ElMessage.success('删除成功');
-						proxy.$refs['editRoleRef'].resetMenuSession();
-						roleList();
-					});
-				})
-				.catch(() => {});
+			}).then(() => {
+				api.role.deleteRole(row.id).then(() => {
+					ElMessage.success('删除成功');
+					proxy.$refs['editRoleRef'].resetMenuSession();
+					roleList();
+				});
+			});
 		};
+
 		// 设置权限
-		const permission = (row: any) => {
-			permissionRef.value.openDialog(row);
+		const permission = async (row: any) => {
+			const { isAllow } = await api.role.auth.isAllow(row.id);
+			if (isAllow) {
+				permissionRef.value.openDialog(row);
+			} else {
+				ElMessage.error('该角色禁止被授权');
+			}
 		};
+
 		// 页面加载时
 		onMounted(() => {
 			initTableData();
 		});
+
 		return {
 			addRoleRef,
 			editRoleRef,