From 4b605424c769f0ef5f02eb1abdf8bd5b7d558161 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 28 十一月 2025 15:19:50 +0800
Subject: [PATCH] fix: s

---
 src/views/Permission/RoleManage.vue |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/src/views/Permission/RoleManage.vue b/src/views/Permission/RoleManage.vue
index 887b4f1..2e32a69 100644
--- a/src/views/Permission/RoleManage.vue
+++ b/src/views/Permission/RoleManage.vue
@@ -52,27 +52,44 @@
 import { EnumUserType } from '@/constants';
 import DialogAuthorizeV2 from './components/dialogAuthorizeV2.vue';
 import * as roleServices from '@/services/api/role';
+import { useQueryClient } from '@tanstack/vue-query';
 
 defineOptions({
   name: 'RoleManage',
 });
 
 const operationBtnMap: Record<string, OperationBtnType> = {
-  editBtn: { emits: { onClick: (role) => openDialog(role) } },
-  delBtn: { emits: { onClick: (role) => handleDeleteRole(role) }, props: { type: 'danger' } },
-  authorize: { emits: { onClick: (role) => openAuthorizeDialog(role) } },
+  editBtn: {
+    emits: { onClick: (role) => openDialog(role) },
+    extraProps: {
+      hide: (role: API.GetRolesQueryResultItem) => role.isPublic,
+    },
+  },
+  delBtn: {
+    emits: { onClick: (role) => handleDeleteRole(role) },
+    props: { type: 'danger' },
+    extraProps: {
+      hide: (role: API.GetRolesQueryResultItem) => role.isPublic,
+    },
+  },
+  authorize: {
+    emits: { onClick: (role) => openAuthorizeDialog(role) },
+    extraProps: {
+      hide: (role: API.GetRolesQueryResultItem) => role.isPublic,
+    },
+  },
   // member: { emits: { onClick: (role) => openMemberDialog(role) } },
   disabledBtn: {
     emits: { onClick: (role) => roleEnableOrForbid(role) },
     props: { type: 'danger' },
     extraProps: {
-      hide: (row) => row.isDisabled,
+      hide: (row: API.GetRolesQueryResultItem) => !(!row.isPublic && !row.isDisabled),
     },
   },
   enableBtn: {
     emits: { onClick: (role) => roleEnableOrForbid(role) },
     extraProps: {
-      hide: (row) => !row.isDisabled,
+      hide: (row: API.GetRolesQueryResultItem) => !(row.isDisabled && !row.isPublic),
     },
   },
 };
@@ -169,6 +186,8 @@
   },
 });
 
+const queryClient = useQueryClient();
+
 async function handleAddOrEdit() {
   try {
     const isEdit = editForm.id;
@@ -193,6 +212,7 @@
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(isEdit ? paginationState.pageIndex : 1);
+      queryClient.invalidateQueries(['userServices/getUserInfoRoles']);
     }
   } catch (error) {}
 }
@@ -207,6 +227,7 @@
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(paginationState.pageIndex);
+      queryClient.invalidateQueries(['userServices/getUserInfoRoles']);
     }
   } catch (error) {}
 }
@@ -221,6 +242,7 @@
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(paginationState.pageIndex);
+      queryClient.invalidateQueries(['userServices/getUserInfoRoles']);
       return !!res;
     }
   } catch (error) {}

--
Gitblit v1.9.1