From 10e01aa71d494ece26214bd57017e045f13b2a08 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 06 八月 2025 09:12:34 +0800
Subject: [PATCH] fix: 修改功能模块

---
 src/views/Permission/RoleManage.vue |  176 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 117 insertions(+), 59 deletions(-)

diff --git a/src/views/Permission/RoleManage.vue b/src/views/Permission/RoleManage.vue
index 7b52a54..4f57eb0 100644
--- a/src/views/Permission/RoleManage.vue
+++ b/src/views/Permission/RoleManage.vue
@@ -4,6 +4,22 @@
       <ProTableQueryFilterBar @on-reset="reset">
         <template #query>
           <QueryFilterItem>
+            <FieldRadio
+              v-model="extraParamState.clientType"
+              :value-enum="EnumClientTypeText"
+              buttonStyle
+              @change="getList()"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
+            <FieldRadio
+              v-model="extraParamState.userType"
+              :value-enum="EnumUserTypeText"
+              buttonStyle
+              @change="getList()"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
             <SearchInput
               v-model="extraParamState.queryCondition"
               style="width: 200px"
@@ -28,7 +44,7 @@
       </ProTableV2>
     </AppContainer>
     <AddOrEditRoleDialog v-bind="dialogProps" />
-    <DialogAuthorize v-model:authorizeId="rowState.authorizeId" authorizeType="Role" />
+    <DialogAuthorizeV2 v-bind="dialogAuthorizeProps" authorizeType="Role" />
     <!-- <DialogMember v-model:visibleId="rowState.setMemberRoleId" /> -->
   </LoadingLayout>
 </template>
@@ -44,13 +60,14 @@
   QueryFilterItem,
   useTable,
   useFormDialog,
+  FieldRadio,
 } from '@bole-core/components';
 import { useAccess, useAllRoleList } from '@/hooks';
-import * as userServices from '@/services/api/User';
-import { Message, OrderInputType } from '@bole-core/core';
+import { Message } from '@bole-core/core';
 import AddOrEditRoleDialog from './components/AddOrEditRoleDialog.vue';
-import { DataRangeEnum, DataRangeEnumText } from '@/constants';
-import DialogAuthorize from './components/dialogAuthorize.vue';
+import { EnumClientTypeText, EnumUserTypeText } from '@/constants';
+import DialogAuthorizeV2 from './components/dialogAuthorizeV2.vue';
+import * as roleServices from '@/services/api/role';
 
 defineOptions({
   name: 'RoleManage',
@@ -79,8 +96,6 @@
   operationBtnMap,
 });
 
-const { refetch } = useAllRoleList();
-
 const BaseState = {
   loading: true,
 };
@@ -101,46 +116,52 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetRolesInput = {
+      let params: API.GetRolesQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
-          orderInput: [{ property: 'sequence', order: OrderInputType.Asc }],
+          orderInput: extraParamState.orderInput,
         },
-        queryCondition: extraParamState.queryCondition,
+        userType: extraParamState.userType,
+        clientType: extraParamState.clientType,
       };
-      let res = await userServices.getRoles(params, {
+      let res = await roleServices.getRoles(params, {
         showLoading: !state.loading,
       });
-      return {
-        data: res.data,
-        pageModel: {
-          rows: pageSize,
-          page: pageIndex,
-          totalCount: res.pageModel.totalCount,
-        },
-      };
+      return res;
     } catch (error) {}
   },
   {
     defaultExtraParams: {
       queryCondition: '',
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+      userType: EnumUserType.Operation,
+      clientType: EnumClientType.PcWeb,
     },
-    queryKey: ['userRoleServices/getRoles'],
+    queryKey: ['roleServices/getRoles'],
+    columnsRenderProps: {
+      dataPower: { type: 'enum', valueEnum: EnumRoleWebApiDataPowerText },
+    },
   }
 );
 
-function openDialog(row?: API.RoleInfo) {
-  if (row) {
-    handleEdit({
-      id: row.id,
-      name: row.name,
-      remark: row.remark,
-      dataRange: row.dataRange,
-    });
-  } else {
-    handleAdd();
-  }
+async function openDialog(row?: API.GetRolesQueryResultItem) {
+  try {
+    if (row) {
+      const detail = await roleServices.getRole({ id: row.id });
+      handleEdit({
+        id: row.id,
+        name: row.name,
+        remark: row.remark,
+        userType: row.userType,
+        clientType: row.clientType,
+        dataRange: row.dataPower,
+        detail: detail,
+      });
+    } else {
+      handleAdd();
+    }
+  } catch (error) {}
 }
 
 const { dialogProps, handleAdd, handleEdit, editForm, dialogState } = useFormDialog({
@@ -149,61 +170,64 @@
     id: '',
     name: '',
     remark: '',
-    dataRange: DataRangeEnum.All,
+    userType: EnumUserType.Operation,
+    clientType: EnumClientType.PcWeb,
+    dataRange: EnumRoleWebApiDataPower.All,
+    detail: null as API.GetRoleQueryResult,
   },
 });
 
 async function handleAddOrEdit() {
   try {
     const isEdit = editForm.id;
-    let params: API.CreateOrUpdateRoleInput = {
+    let params: API.SaveRoleCommand = {
       name: editForm.name,
       remark: editForm.remark,
-      dataRange: editForm.dataRange,
+      dataPower: editForm.dataRange,
+      userType: editForm.userType,
+      clientType: editForm.clientType,
     };
-    let res;
     if (isEdit) {
-      params.id = editForm.id;
-      res = await userServices.updateRole(params);
-    } else {
-      res = await userServices.createRole(params);
+      params = {
+        ...editForm.detail,
+        ...params,
+      };
     }
+    let res = await roleServices.saveRole(params);
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(isEdit ? paginationState.pageIndex : 1);
-      refetch({ type: 'inactive' });
     }
   } catch (error) {}
 }
 
-async function handleDeleteRole(row: API.RoleInfo) {
+async function handleDeleteRole(row: API.GetRolesQueryResultItem) {
   try {
     await Message.deleteMessage();
-    let params = {
-      id: row.id,
+    let params: API.DeleteRoleCommand = {
+      ids: [row.id],
     };
-    let res = await userServices.deleteRole(params);
+    let res = await roleServices.deleteRole(params);
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(paginationState.pageIndex);
-      refetch({ type: 'inactive' });
     }
   } catch (error) {}
 }
 
-async function roleEnableOrForbid(row: API.RoleInfo) {
+async function roleEnableOrForbid(row: API.GetRolesQueryResultItem) {
   try {
-    await Message.tipMessage(`鏄惁${!row.isEnable ? '鍚敤' : '绂佺敤'}瑙掕壊`);
-    let res = await userServices.roleEnableOrForbid({
-      id: row.id,
-      isEnable: !row.isEnable,
-    });
-    if (res) {
-      Message.successMessage('鎿嶄綔鎴愬姛');
-      getList(paginationState.pageIndex);
-      refetch({ type: 'inactive' });
-      return !!res;
-    }
+    // await Message.tipMessage(`鏄惁${!row.isEnable ? '鍚敤' : '绂佺敤'}瑙掕壊`);
+    // let res = await userServices.roleEnableOrForbid({
+    //   id: row.id,
+    //   isEnable: !row.isEnable,
+    // });
+    // if (res) {
+    //   Message.successMessage('鎿嶄綔鎴愬姛');
+    //   getList(paginationState.pageIndex);
+    //   refetch({ type: 'inactive' });
+    //   return !!res;
+    // }
   } catch (error) {}
 }
 
@@ -212,8 +236,42 @@
   setMemberRoleId: '',
 });
 
-function openAuthorizeDialog(row: API.IdentityRoleDto) {
-  rowState.authorizeId = row.id;
+const {
+  dialogProps: dialogAuthorizeProps,
+  handleAdd: handleAuthorizeAdd,
+  editForm: authorizeForm,
+} = useFormDialog({
+  onConfirm: handleAuthorize,
+  defaultFormParams: {
+    detail: null as API.GetRoleQueryResult,
+  },
+});
+
+async function openAuthorizeDialog(row: API.GetRolesQueryResultItem) {
+  try {
+    const detail = await roleServices.getRole({ id: row.id });
+    handleAuthorizeAdd({
+      detail: detail,
+    });
+  } catch (error) {}
+}
+
+async function handleAuthorize(selectedMenuIds: string[], resourceIds: string[]) {
+  try {
+    let params: API.SaveRoleCommand = {
+      ...authorizeForm.detail,
+      menuIds: selectedMenuIds,
+      // resources: resourceIds.map((x) => ({
+      //   resourceId: x,
+      //   dataPower: EnumRoleWebApiDataPower.All,
+      // })),
+    };
+    let res = await roleServices.saveRole(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
 }
 
 // function openMemberDialog(row: API.IdentityRoleDto) {

--
Gitblit v1.9.1