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