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