|  |  |  | 
|---|
|  |  |  | useAccess as useBoleAccess, | 
|---|
|  |  |  | useGroupColumns as useBoleGroupColumns, | 
|---|
|  |  |  | useGroupOperationBtns as useBoleGroupOperationBtns, | 
|---|
|  |  |  | DaPengAccessAdapter, | 
|---|
|  |  |  | } from '@bole-core/components'; | 
|---|
|  |  |  | import type { Ref, ComputedRef } from 'vue'; | 
|---|
|  |  |  | import { myClient } from '@/constants/query'; | 
|---|
|  |  |  | import * as menuServices from '@/services/api/menu'; | 
|---|
|  |  |  | import * as authServices from '@/services/api/auth'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | type UseAccessOptions = { | 
|---|
|  |  |  | operationBtnMap?: Record<string, OperationBtnType>; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const moduleId = route.meta.moduleId; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const groupName = 'default'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return useBoleAccess({ | 
|---|
|  |  |  | queryKey: ['menuServices/getMenu', { moduleId }], | 
|---|
|  |  |  | queryKey: ['baseModuleServices/getCurrentSubModuleList', { moduleId }], | 
|---|
|  |  |  | service: async () => { | 
|---|
|  |  |  | 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 res = await authServices.getCurrentLogierMenu( | 
|---|
|  |  |  | { id: moduleId }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | 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 ?? []), | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | return DaPengAccessAdapter.menuAdapter({ groups: res.groups, moduleId }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ...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: ['menuServices/getMenu'] }); | 
|---|
|  |  |  | myClient.removeQueries({ queryKey: ['baseModuleServices/getCurrentSubModuleList'] }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return { clearSubModule }; | 
|---|