From 93393138afcda975703f8c89ae1702fb62502080 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 05 八月 2025 13:11:49 +0800
Subject: [PATCH] fix: 修改功能模块

---
 src/store/modules/permission.ts               |   21 ++++++----
 src/views/DictionaryManage/SearchSetting2.vue |   11 +++++
 .eslintrc-auto-import.json                    |    3 +
 src/hooks/useAccess.ts                        |   59 ++++++++++++++++++++++++-----
 src/views/System/ModuleManage.vue             |   18 +--------
 auto-imports.d.ts                             |    7 ++-
 6 files changed, 82 insertions(+), 37 deletions(-)

diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 5a4d108..3873f28 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -22,9 +22,10 @@
     "EnumMenuType": true,
     "EnumMenuVisitLevel": true,
     "EnumPagedListOrder": true,
+    "EnumResourceController": true,
+    "EnumResourceMethod": true,
     "EnumRoleWebApiDataPower": true,
     "EnumUserType": true,
-    "EnumWebApiMethod": true,
     "ExtractDefaultPropTypes": true,
     "ExtractPropTypes": true,
     "ExtractPublicPropTypes": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 19d3523..497e5fc 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -26,6 +26,8 @@
   const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
   const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']
   const EnumPagedListOrder: typeof import('./src/constants/apiEnum')['EnumPagedListOrder']
+  const EnumResourceController: typeof import('./src/constants/apiEnum')['EnumResourceController']
+  const EnumResourceMethod: typeof import('./src/constants/apiEnum')['EnumResourceMethod']
   const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']
   const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
   const EnumWebApiMethod: typeof import('./src/constants/apiEnum')['EnumWebApiMethod']
@@ -157,7 +159,7 @@
   export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
   import('vue')
   // @ts-ignore
-  export type { EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRoleWebApiDataPower, EnumUserType, EnumWebApiMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRoleWebApiDataPower, EnumUserType, EnumWebApiMethod } from './src/constants/apiEnum'
+  export type { EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumUserType, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumUserType } from './src/constants/apiEnum'
   import('./src/constants/apiEnum')
   // @ts-ignore
   export type { FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum, FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum } from './src/constants/cPerson'
@@ -211,9 +213,10 @@
     readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
     readonly EnumMenuVisitLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']>
     readonly EnumPagedListOrder: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPagedListOrder']>
+    readonly EnumResourceController: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumResourceController']>
+    readonly EnumResourceMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumResourceMethod']>
     readonly EnumRoleWebApiDataPower: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']>
     readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']>
-    readonly EnumWebApiMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumWebApiMethod']>
     readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
     readonly FastColumnList: UnwrapRef<typeof import('./src/constants/module')['FastColumnList']>
     readonly FastDataButtonList: UnwrapRef<typeof import('./src/constants/module')['FastDataButtonList']>
diff --git a/src/hooks/useAccess.ts b/src/hooks/useAccess.ts
index def0bd2..73ac9b2 100644
--- a/src/hooks/useAccess.ts
+++ b/src/hooks/useAccess.ts
@@ -1,5 +1,5 @@
 import { Route } from '@/router';
-import type { OperationBtnType, ColumnPropsMap } from '@bole-core/components';
+import type { OperationBtnType, ColumnPropsMap, ModuleColumnDto } from '@bole-core/components';
 import {
   useAccess as useBoleAccess,
   useGroupColumns as useBoleGroupColumns,
@@ -7,6 +7,7 @@
 } from '@bole-core/components';
 import type { Ref, ComputedRef } from 'vue';
 import { myClient } from '@/constants/query';
+import * as menuServices from '@/services/api/menu';
 
 type UseAccessOptions = {
   operationBtnMap?: Record<string, OperationBtnType>;
@@ -28,23 +29,61 @@
 
   const moduleId = route.meta.moduleId;
 
+  const groupName = 'default';
+
   return useBoleAccess({
-    queryKey: ['baseModuleServices/getCurrentSubModuleList', { moduleId }],
+    queryKey: ['menuServices/getMenu', { moduleId }],
     service: async () => {
-      // return await baseModuleServices.getCurrentSubModuleList({ moduleId }, { showLoading: false });
-      return await Promise.resolve({
-        pageButton: [],
-        dataButton: [],
-        column: [],
-      });
+      const res = await menuServices.getMenu({ id: moduleId });
+      const group = res.groups.find((g) => g.group === groupName);
+      const pageButtonLocation = group?.buttonLocations?.find?.(
+        (buttonLocation) => buttonLocation.location === SubModuleKey[SubModuleType.PageButton]
+      );
+      const dataButtonLocation = group?.buttonLocations?.find?.(
+        (buttonLocation) => buttonLocation.location === SubModuleKey[SubModuleType.DataButton]
+      );
+      return {
+        pageButton: menuButtonAdapter(pageButtonLocation, SubModuleType.PageButton),
+        dataButton: menuButtonAdapter(dataButtonLocation, SubModuleType.DataButton),
+        column: menuFieldsAdapter(group?.fields ?? []),
+      };
     },
     ...options,
   });
 }
 
+function menuButtonAdapter(buttonLocation: API.GetMenuQueryResultButtonLocation, buttonType) {
+  const buttons = buttonLocation?.buttons ?? [];
+  return buttons.map((x) => ({
+    id: x.id,
+    moduleId: '',
+    parentId: '',
+    enCode: x.code,
+    name: x.name,
+    sortCode: x.sort,
+    buttonType: buttonType,
+    hasCheck: x.isChecked,
+  }));
+}
+
+function menuFieldsAdapter(fields: API.GetMenuQueryResultField[]) {
+  return fields.map((x) => ({
+    id: x.id,
+    moduleId: '',
+    parentId: '',
+    enCode: x.code,
+    name: x.name,
+    sortCode: x.sort,
+    width: Number(x.width),
+    hasCheck: x.isChecked,
+    fixed: false,
+    isShow: true,
+  }));
+}
+
 export function useClearSubModule() {
   function clearSubModule() {
-    myClient.removeQueries({ queryKey: ['baseModuleServices/getCurrentSubModuleList'] });
+    myClient.removeQueries({ queryKey: ['menuServices/getMenu'] });
   }
 
   return { clearSubModule };
@@ -53,7 +92,7 @@
 /**
  * 瀵筩olumns杩涜鍒嗙粍
  */
-export function useGroupColumns(columns: Ref<API.ModuleColumnDto[]>, groups: string[]) {
+export function useGroupColumns(columns: Ref<ModuleColumnDto[]>, groups: string[]) {
   //@ts-ignore
   return useBoleGroupColumns(columns, groups);
 }
diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
index fa8e73a..f3aa96d 100644
--- a/src/store/modules/permission.ts
+++ b/src/store/modules/permission.ts
@@ -4,6 +4,7 @@
 import { constantRoutes, Route } from '@/router';
 import { addAsyncRoutes, ascending } from '@/router/utils';
 import * as menuServices from '@/services/api/menu';
+import { myClient } from '@/constants/query';
 
 export interface PermissonState {
   routes: Route[];
@@ -27,15 +28,19 @@
     getModuleList() {
       return new Promise<Route[]>(async (resolve, reject) => {
         try {
-          const res = await menuServices.getMenus(
-            {
-              userType: EnumUserType.Operation,
-              clientType: EnumClientType.PcWeb,
+          const params: API.APIgetMenusParams = {
+            userType: EnumUserType.Operation,
+            clientType: EnumClientType.PcWeb,
+          };
+          const res = await myClient.fetchQuery({
+            queryKey: ['menuServices/getMenus', params],
+            queryFn: async () => {
+              return await menuServices.getMenus(params, {
+                showLoading: false,
+              });
             },
-            {
-              showLoading: false,
-            }
-          );
+            staleTime: Infinity,
+          });
           const accessedRoutes = ascending(addAsyncRoutes(formatModuleList(res))); // createAccessedRoutes(userMenuList, userInfo)
           //@ts-ignore
           accessedRoutes.push({ path: '/:pathMatch(.*)*', redirect: '/404', hidden: true });
diff --git a/src/views/DictionaryManage/SearchSetting2.vue b/src/views/DictionaryManage/SearchSetting2.vue
new file mode 100644
index 0000000..623ba91
--- /dev/null
+++ b/src/views/DictionaryManage/SearchSetting2.vue
@@ -0,0 +1,11 @@
+<template>
+  <div>adasdads</div>
+</template>
+
+<script lang="ts" setup>
+import { useAccess } from '@/hooks';
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({});
+console.log('operationBtns: ', operationBtns);
+console.log('column: ', column);
+</script>
diff --git a/src/views/System/ModuleManage.vue b/src/views/System/ModuleManage.vue
index d07ec24..6e6cfcf 100644
--- a/src/views/System/ModuleManage.vue
+++ b/src/views/System/ModuleManage.vue
@@ -399,12 +399,7 @@
 async function saveMenu(params: API.SaveMenuCommand) {
   try {
     const res = await menuServices.saveMenu(params);
-    if (res) {
-      Message.successMessage('淇濆瓨鎴愬姛');
-      getAllModule();
-      editDialogFormVisible.value = false;
-      return res;
-    }
+    return res;
   } catch (error) {}
 }
 
@@ -512,15 +507,6 @@
       params.id = subModule.id;
     }
     if (drawerState.type === SubModuleType.Column) {
-      // const _subModule = subModule;
-      // params = {
-      //   ...params,
-      //   //@ts-ignore
-      //   width: _subModule.width,
-      //   // apiName: _subModule.apiName,
-      //   // realColumn: _subModule.realColumn,
-      //   // isShow: _subModule.isShow,
-      // };
     } else {
       params.location = SubModuleKey[drawerState.type];
     }
@@ -557,7 +543,7 @@
           ...currentDrawerModule.value,
           groups: groups,
         };
-        const res = await menuServices.saveMenu(params);
+        const res = await saveMenu(params);
         if (res) {
           getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type);
           Message.successMessage('淇濆瓨鎴愬姛');

--
Gitblit v1.9.1