react-toolkits 2.22.9 → 2.22.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +63 -10
  3. package/lib/chunk-HZHE6R72.js +1 -0
  4. package/lib/{chunk-TYDTFWYK.js → chunk-JLHCYGWL.js} +1 -1
  5. package/lib/chunk-MSKNHKMD.js +1 -0
  6. package/lib/{chunk-TRRCT3ST.js → chunk-O7AQM3CB.js} +1 -1
  7. package/lib/chunk-SJK2ZPEL.js +1 -0
  8. package/lib/{chunk-P5SX5RW3.js → chunk-YIJSACFM.js} +1 -1
  9. package/lib/chunk-ZCPZYTPN.js +1 -0
  10. package/lib/components.d.ts +6 -107
  11. package/lib/components.js +1 -1
  12. package/lib/hooks.d.ts +108 -0
  13. package/lib/hooks.js +1 -0
  14. package/lib/index.d.ts +5 -4
  15. package/lib/index.js +1 -1
  16. package/lib/modules.js +1 -1
  17. package/lib/roleDetail-2QUBILZK.js +1 -0
  18. package/lib/roleList-KWWVOLWJ.js +1 -0
  19. package/lib/userDetail-TXGT2W7X.js +1 -0
  20. package/lib/userList-ELLBMK76.js +1 -0
  21. package/locale/context.js +1 -9
  22. package/locale/en_GB.js +1 -96
  23. package/locale/hooks.js +1 -29
  24. package/locale/index.js +1 -29
  25. package/locale/ja_JP.js +1 -96
  26. package/locale/ko_KR.js +1 -96
  27. package/locale/zh_CN.js +1 -96
  28. package/package.json +7 -3
  29. package/lib/chunk-3OYXD4UE.js +0 -1
  30. package/lib/chunk-K5HXGCZ4.js +0 -1
  31. package/lib/components.js.map +0 -1
  32. package/lib/constants.js.map +0 -1
  33. package/lib/index.css.map +0 -1
  34. package/lib/index.js.map +0 -1
  35. package/lib/modules.js.map +0 -1
  36. package/lib/pages.js.map +0 -1
  37. package/lib/roleDetail-PFVKUPYB.js +0 -1
  38. package/lib/roleList-AHH4PNYW.js +0 -1
  39. package/lib/services.js.map +0 -1
  40. package/lib/types.js.map +0 -1
  41. package/lib/userDetail-JJNDBV5T.js +0 -1
  42. package/lib/userList-KX3POGAU.js +0 -1
  43. package/lib/utils.js.map +0 -1
  44. package/locale/context.js.map +0 -1
  45. package/locale/en_GB.js.map +0 -1
  46. package/locale/hooks.js.map +0 -1
  47. package/locale/index.js.map +0 -1
  48. package/locale/ja_JP.js.map +0 -1
  49. package/locale/ko_KR.js.map +0 -1
  50. package/locale/zh_CN.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/highlight/Highlight.tsx","../src/components/highlight/index.ts","../src/utils/index.ts","../src/constants/index.ts","../src/locale/en_GB.ts","../src/stores/context.ts","../src/stores/game.ts","../src/stores/token.ts","../src/stores/index.ts","../src/components/toolkitsProvider/ToolkitsProvider.tsx","../src/components/toolkitsProvider/index.ts","../src/locale/hooks.ts","../src/locale/index.ts","../src/components/filterFormWrapper/FilterFormWrapper.tsx","../src/components/filterFormWrapper/index.ts","../src/libs/ky.ts","../src/libs/index.ts","../src/queryKeys.ts","../src/services/index.ts","../src/components/queryList/stores.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/modules/menu/services/index.ts","../src/modules/menu/pages/menuItemList/index.tsx","../src/modules/menu/pages/createMenuItem/index.tsx","../src/modules/menu/pages/updateMenuItem/index.tsx","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.ts","../src/components/modal/stores.ts","../src/components/modal/modal.tsx","../src/components/modal/formModal.tsx","../src/components/modal/index.ts","../src/modules/permission/services/index.ts","../src/modules/permission/components/permissionCollapse/index.tsx","../src/modules/permission/components/permissionList/PermissionWithGame.tsx","../src/modules/permission/components/permissionList/PermissionWithoutGame.tsx","../src/modules/permission/components/permissionList/index.tsx","../src/modules/permission/hooks/role-hooks.tsx","../src/modules/permission/hooks/user-hooks.tsx","../src/modules/permission/hooks/index.ts","../src/modules/permission/pages/userList/index.tsx","../src/modules/permission/pages/userDetail/index.tsx","../src/modules/permission/pages/roleList/index.tsx","../src/modules/permission/components/index.ts","../src/modules/permission/pages/roleDetail/index.tsx","../src/modules/menu/index.tsx","../src/modules/permission/index.tsx"],"names":["get","store","jsx","locale","Fragment","App","useMemo","request","options","ky","response","createStore","init_stores","newInstances","useRef","useState","useQuery","useEffect","isEqual","jsxs","init_services","Space","Button","Form","useNavigate","Card","Input","Switch","InputNumber","Editor","create","useCallback","init_modal","useQueryClient","useMutation","Text","Typography","Skeleton","Select","Row","Col","Empty","init_hooks","useParams","Tag","Link","Table","Breadcrumb","Descriptions","Divider","MenuItemList","CreateMenuItem","UserList","lazy","UserDetail","RoleList","RoleDetail","Routes","Route"],"mappings":"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","file":"modules.js","sourcesContent":["import type { PropsWithChildren, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport { createRoot } from 'react-dom/client'\n\nconst splitByTags = (str: string) => {\n const regex = /(<[^>]*>)/\n return str.split(regex).filter(part => part !== '')\n}\n\nfunction renderToString(node: ReactNode): Promise<string> {\n const container = document.createElement('div')\n const root = createRoot(container)\n\n return new Promise(resolve => {\n setTimeout(() => {\n flushSync(() => {\n root.render(node)\n })\n resolve(container.innerHTML)\n })\n })\n}\n\nexport interface HighlightProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightProps) => {\n const { texts, children } = props\n const [htmlString, setHtmlString] = useState<string>('')\n\n useEffect(() => {\n renderToString(children).then(str => {\n const result = splitByTags(str)\n\n for (const text of texts) {\n for (let index = 0; index < result.length; index++) {\n // TODO: 忽略 HTML tag\n result[index] = result[index].replace(String(text), `<span style='color: #DC143C;'>${text}</span>`)\n }\n }\n\n setHtmlString(result.join(''))\n })\n }, [children, texts])\n\n return <div dangerouslySetInnerHTML={{ __html: htmlString }}></div>\n}\n\nexport default Highlight\n","export type { HighlightProps } from './Highlight'\nexport { default as Highlight } from './Highlight'\n","import type { StateStorage } from 'zustand/middleware'\n\n// 通过 SessionStorage 隔离数据,防止多开页面时的数据冲突。\n// 当 SessionStorage 不存在时,使用 LocalStorage。\nexport const mixedStorage: StateStorage = {\n getItem: (name: string): string | null => {\n return sessionStorage.getItem(name) || localStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n sessionStorage.setItem(name, value)\n localStorage.setItem(name, value)\n },\n removeItem(name: string) {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n\n/**\n * 生成唯一 ID 的函数\n * 使用时间戳 + 随机数 + 计数器的组合来确保唯一性\n */\nlet globalCounter = 0\nexport const generateId = (): number => {\n const timestamp = Date.now()\n const random = Math.floor(Math.random() * 1000)\n const counter = ++globalCounter % 1000\n\n // 组合:时间戳(毫秒) * 1000000 + 随机数 * 1000 + 计数器\n // 这样可以确保即使在同一毫秒内生成多个ID也不会重复\n return timestamp * 1000000 + random * 1000 + counter\n}\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const APP_ID_HEADER = 'App-ID'\n\nexport const FRONTEND_ROUTE_PREFIX = '/console/'\n\nexport enum PermissionVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n\nexport const WILDCARD = '*'\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: 'No permission, please contact the administrator.',\n name: 'Name',\n creationTime: 'Creation Time',\n operation: 'Operation',\n update: 'Update',\n edit: 'Edit',\n delete: 'Delete',\n selectAll: 'Select All',\n game: 'Game',\n user: 'User',\n role: 'Role',\n username: 'Username',\n password: 'Password',\n label: 'Label',\n method: 'Method',\n route: 'Route',\n request: 'Request',\n response: 'Response',\n add: 'Add',\n signIn: 'Sign In',\n projectGroup: 'Project Group',\n view: 'View',\n },\n SignIn: {\n title: 'Sign In Method',\n thirdParty: 'Third party sign in',\n signInWithIDass: 'Sign in with IDass',\n unregistered: 'You are not yet registered on the platform, please contact the administrator',\n welcome: 'Welcome',\n },\n NotFound: {\n subTitle: 'The page you visited does not exist',\n buttonText: 'Return to homepage',\n },\n FilterFormWrapper: {\n confirmText: 'Search',\n resetText: 'Reset',\n },\n FormModal: {\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n },\n GameSelect: {\n label: 'Current Game',\n placeholder: 'Please select a game',\n },\n RequireGame: {\n description: 'Please select a game',\n },\n UserWidget: {\n signOutText: 'Sign Out',\n },\n User: {\n createTitle: 'Create User',\n createSuccessfully: 'User created successfully',\n updateTitle: 'Update User',\n updateSuccessfully: 'User updated successfully',\n deleteTitle: 'Delete User',\n deleteContent: 'Are you sure you want to delete user <%= user %>?',\n deleteSuccessfully: 'User deleted successfully',\n },\n Role: {\n createTitle: 'Create Role',\n createSuccessfully: 'Role created successfully',\n updateTitle: 'Update Role',\n updateSuccessfully: 'Role updated successfully',\n deleteTitle: 'Delete Role',\n deleteContent: 'Are you sure you want to delete role <%= role %>?',\n deleteSuccessfully: 'Role deleted successfully',\n },\n PermissionList: {\n failedDescription: 'Failed to get permission list',\n baseSectionTitle: 'Platform Basic Permissions',\n gameSectionTitle: 'Game Permissions',\n gameSectionDescription: 'Please select a game first',\n gameSelectPlaceholder: 'Please select a game first',\n removeText: 'Remove',\n addText: 'Add Game Permissions',\n },\n RoleDetail: {\n title: 'Role Details',\n },\n InfiniteList: {\n loadingText: 'Loading...',\n reachEndText: \"You've reached the end\",\n loadMoreText: 'Load more',\n },\n}\n\nexport default locale\n","// import type { AxiosInterceptorManager, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport type { StateCreator } from 'zustand'\n\nimport { PermissionVersion } from '@/constants'\nimport type { Locale } from '@/locale'\nimport enGb from '@/locale/en_GB'\n\nexport interface ContextSlice {\n locale: Locale\n permissionVersion: PermissionVersion // 权限版本\n gameApiV2: boolean\n signInPath: string // 登录页前端路由地址\n isGlobal: boolean // 为 true 时,APP-ID header 为 'global',否则为当前的游戏的 id。\n navWidth?: number // 侧边栏宽度\n collapsed?: boolean\n collapsible?: boolean // 菜单是否可折叠\n mainPagePath: string // 首页地址\n setContext(state: Partial<Omit<ContextSlice, 'setContext'>>): void\n}\n\nexport const createContextSlice: StateCreator<ContextSlice, [], [], ContextSlice> = set => ({\n locale: enGb,\n gameApiV2: false,\n isGlobal: false,\n signInPath: '/sign_in',\n mainPagePath: '/',\n permissionVersion: PermissionVersion.V1,\n setContext(state) {\n set(prev => ({ ...prev, ...state }))\n },\n})\n","import type { StateCreator } from 'zustand'\n\nexport interface GameSlice {\n gameId?: string | number\n setGameId: (id?: string | number) => void\n}\n\nexport const createGameSlice: StateCreator<GameSlice, [], [], GameSlice> = set => ({\n setGameId: id => {\n set({ gameId: id })\n },\n})\n","import { jwtDecode } from 'jwt-decode'\nimport type { StateCreator } from 'zustand'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenSlice {\n token?: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n}\n\nexport const createTokenSlice: StateCreator<TokenSlice, [], []> = (set, get) => ({\n getUser: () => {\n const token = get().token\n if (token) {\n try {\n return jwtDecode(token)\n } catch {\n return null\n }\n }\n return null\n },\n setToken: token => set({ token }),\n})\n","import { createStore } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nimport { mixedStorage } from '@/utils'\n\nimport { type ContextSlice, createContextSlice } from './context'\nimport type { GameSlice } from './game'\nimport { createGameSlice } from './game'\nimport type { TokenSlice } from './token'\nimport { createTokenSlice } from './token'\n\nexport type ToolkitsState = TokenSlice &\n GameSlice &\n ContextSlice & {\n clearToken: () => void\n }\n\nexport const createToolkitsStore = (initProps?: Partial<ContextSlice>) => {\n return createStore<ToolkitsState>()(\n persist(\n (...args) => {\n const [, get, store] = args\n\n const clearToken = () => {\n get().setToken('')\n store.persist.clearStorage()\n }\n\n return {\n ...createTokenSlice(...args),\n ...createGameSlice(...args),\n ...createContextSlice(...args),\n clearToken,\n ...initProps,\n }\n },\n {\n name: 'toolkits',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({\n token: state.token,\n gameId: state.gameId,\n collapsed: state.collapsed,\n }),\n },\n ),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport type { ComponentType, FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { useStore } from 'zustand'\n\nimport type { ToolkitsState } from '@/stores'\nimport { createToolkitsStore } from '@/stores'\nimport type { ContextSlice } from '@/stores/context'\n\ntype ToolkitsStore = ReturnType<typeof createToolkitsStore>\n\nconst ToolkitsContext = createContext<ToolkitsStore | null>(null)\n\n// 重载函数签名:支持有 selector 和无 selector 两种调用方式\nexport function useToolkitsStore(): ToolkitsState\nexport function useToolkitsStore<T>(selector: (state: ToolkitsState) => T): T\nexport function useToolkitsStore<T>(selector?: (state: ToolkitsState) => T): T | ToolkitsState {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsProvider in the tree')\n\n // 总是调用 useStore,根据是否有 selector 决定使用什么选择器\n return useStore(store, selector || ((state: ToolkitsState) => state as T))\n}\n\nexport type ToolkitsProviderProps = PropsWithChildren<Partial<Omit<ContextSlice, 'setContext'>>>\n\nconst ToolkitsProvider: FC<ToolkitsProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ToolkitsStore>()\n const parentState = useContext(ToolkitsContext)?.getState()\n\n if (!storeRef.current) {\n storeRef.current = createToolkitsStore({ ...parentState, ...restProps })\n }\n\n if (!storeRef.current.getState().signInPath) {\n throw new Error('ToolkitsProvider: 请配置 \"signInPath\"')\n }\n\n return (\n <ToolkitsContext.Provider value={storeRef.current}>\n <App>{children}</App>\n </ToolkitsContext.Provider>\n )\n}\n\nexport const withContext = (Component: ComponentType, providerProps: Omit<ToolkitsProviderProps, 'children'>) => {\n const WrappedComponent = (props: any) => {\n return (\n <ToolkitsProvider {...providerProps}>\n <Component {...props} />\n </ToolkitsProvider>\n )\n }\n\n WrappedComponent.displayName = `withContext(${Component.displayName || Component.name || 'Component'})`\n\n return WrappedComponent\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ToolkitsProvider.displayName = 'ToolkitsProvider'\n}\n\nexport default ToolkitsProvider\n","export type { ToolkitsProviderProps } from './ToolkitsProvider'\nexport { default as ToolkitsProvider, useToolkitsStore, withContext } from './ToolkitsProvider'\n","import { get, has, template } from 'lodash-es'\nimport { useMemo } from 'react'\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport type { Locale } from './index'\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Paths<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K]>> : never\n }[keyof T]\n : ''\n\nexport function useTranslation() {\n const locale = useToolkitsStore(state => state.locale)\n\n const t = useMemo(\n () => (key: Paths<Locale>, data?: Record<string, unknown>) =>\n has(locale, key) ? template(get(locale, key as string))(data) : key,\n [locale],\n )\n\n return { t }\n}\n","export type Locale = {\n global: {\n noEntitlement: string\n name: string\n creationTime: string\n operation: string\n update: string\n edit: string\n delete: string\n selectAll: string\n game: string\n user: string\n role: string\n username: string\n password: string\n label: string\n method: string\n route: string\n request: string\n response: string\n add: string\n signIn: string\n projectGroup: string\n view: string\n }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n unregistered: string\n welcome: string\n }\n NotFound: {\n subTitle: string\n buttonText: string\n }\n FilterFormWrapper: {\n confirmText: string\n resetText: string\n }\n FormModal: {\n confirmText: string\n cancelText: string\n }\n GameSelect: {\n label: string\n placeholder: string\n }\n RequireGame: {\n description: string\n }\n UserWidget: {\n signOutText: string\n }\n User: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n Role: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n PermissionList: {\n failedDescription: string\n baseSectionTitle: string\n gameSectionTitle: string\n gameSectionDescription: string\n gameSelectPlaceholder: string\n removeText: string\n addText: string\n }\n RoleDetail: {\n title: string\n }\n InfiniteList: {\n loadingText: string\n reachEndText: string\n loadMoreText: string\n }\n}\n\nexport { useTranslation } from './hooks'\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\n\nimport { useTranslation } from '@/locale'\n\nexport interface FilterFormWrapperProps extends PropsWithChildren {\n onConfirm?: () => void | Promise<void>\n onReset?: () => void\n extras?: { key: Key; children: ReactNode }[]\n isConfirming?: boolean\n buttonsAlign?: 'left' | 'right' | 'bottom'\n showReset?: boolean\n}\n\nconst FilterFormWrapper = (props: FilterFormWrapperProps) => {\n const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = 'left', showReset } = props\n const { t } = useTranslation()\n const {\n token: { colorFillAlter, lineWidth, lineType, colorBorder, borderRadiusLG },\n } = theme.useToken()\n\n const style = {\n maxWidth: 'none',\n background: colorFillAlter,\n borderWidth: lineWidth,\n borderStyle: lineType,\n borderColor: colorBorder,\n borderRadius: borderRadiusLG,\n padding: 24,\n marginBottom: 24,\n }\n\n return (\n <div style={style}>\n <div className={`flex ${buttonsAlign === 'bottom' ? 'flex-col' : 'flex-row'}`}>\n <div className={`${buttonsAlign === 'left' ? 'flex-grow-0' : 'flex-1'}`}>{children}</div>\n <div className={`${buttonsAlign === 'bottom' ? 'text-end' : 'text-start'} ml-4`}>\n <Space>\n <Button type=\"primary\" disabled={isConfirming} onClick={onConfirm}>\n {t('FilterFormWrapper.confirmText')}\n </Button>\n {extras?.map(item => <Fragment key={item.key}>{item.children}</Fragment>)}\n {showReset && <Button onClick={onReset}>{t('FilterFormWrapper.resetText')}</Button>}\n </Space>\n </div>\n </div>\n </div>\n )\n}\n\nexport default FilterFormWrapper\n","export type { FilterFormWrapperProps } from './FilterFormWrapper'\nexport { default as FilterFormWrapper } from './FilterFormWrapper'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport ky, { type KyInstance, type Options as KyOptions } from 'ky'\nimport { useMemo } from 'react'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { APP_ID_HEADER, PermissionVersion } from '@/constants'\n\n// 响应成功状态码常量\nconst SUCCESS_RESPONSE_CODES = [0, 1, 200] as const\n\n// HTTP 状态码常量\nconst HTTP_STATUS = {\n OK: 200,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n UNREGISTERED: 412,\n} as const\n\n// 请求超时时间(毫秒)\nconst REQUEST_TIMEOUT = 30000\n\n// 成功响应状态码字段类型\ntype StatusField = 'code' | 'status' | 'errno'\n\n// 状态码检查配置\ninterface StatusCheckConfig {\n field: StatusField\n value: unknown\n allowedCodes: readonly number[]\n}\n\n// 响应类型枚举\nexport enum ResponseType {\n JSON = 'json',\n BLOB = 'blob',\n TEXT = 'text',\n ARRAY_BUFFER = 'arrayBuffer',\n FORM_DATA = 'formData',\n}\n\n// 通用请求选项接口\ninterface RequestOptions extends KyOptions {\n responseType?: ResponseType\n}\n\n// HTTP客户端方法接口 - 支持泛型响应类型\ninterface KyMethods {\n get: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n post: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n put: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n delete: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n patch: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n options: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n head: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n request: <T = any>(options: RequestOptions & { url: string }) => Promise<T>\n instance: KyInstance\n}\n\n// 错误消息提取工具函数\nconst extractErrorMessage = (data: any): string => {\n if (!data || typeof data !== 'object') {\n return 'Unknown error'\n }\n\n return data.msg || data.message || data.error || 'Unknown error'\n}\n\n/**\n * 检查单个状态码字段是否成功\n * @param config 状态码检查配置\n * @returns 是否成功\n */\nconst isStatusCodeSuccess = (config: StatusCheckConfig): boolean => {\n const { value, allowedCodes } = config\n\n if (value === undefined || value === null) {\n return false\n }\n\n if (typeof value !== 'number') {\n return false\n }\n\n return allowedCodes.includes(value)\n}\n\n/**\n * 判断响应是否成功\n * @param data 响应数据\n * @param status HTTP状态码\n * @returns 是否成功\n */\nconst isSuccessResponse = (data: any, status: number): boolean => {\n // 如果HTTP状态码不在2xx范围,直接返回失败\n if (status < HTTP_STATUS.OK || status >= 300) {\n return false\n }\n\n // 如果没有响应数据或不是对象,认为成功(可能是空响应)\n if (!data || typeof data !== 'object') {\n return true\n }\n\n // 定义状态码检查配置\n const statusChecks: StatusCheckConfig[] = [\n { field: 'code', value: data.code, allowedCodes: SUCCESS_RESPONSE_CODES },\n { field: 'status', value: data.status, allowedCodes: SUCCESS_RESPONSE_CODES },\n { field: 'errno', value: data.errno, allowedCodes: SUCCESS_RESPONSE_CODES },\n ]\n\n // 检查是否有任何业务状态码字段存在且表示成功\n const hasBusinessStatusCode = statusChecks.some(config => config.value !== undefined && config.value !== null)\n\n // 如果存在业务状态码字段,则必须检查它们是否都表示成功\n if (hasBusinessStatusCode) {\n return statusChecks.every(\n config => config.value === undefined || config.value === null || isStatusCodeSuccess(config),\n )\n }\n\n // 如果没有业务状态码字段,HTTP 2xx 就认为成功\n return true\n}\n\n/**\n * 根据响应类型处理响应数据\n * @param response 响应对象\n * @param responseType 响应类型\n * @returns 处理后的响应数据\n */\nconst processResponseByType = async (response: Response, responseType?: ResponseType): Promise<any> => {\n switch (responseType) {\n case ResponseType.BLOB:\n return response.blob()\n case ResponseType.TEXT:\n return response.text()\n case ResponseType.ARRAY_BUFFER:\n return response.arrayBuffer()\n case ResponseType.FORM_DATA:\n return response.formData()\n case ResponseType.JSON:\n default:\n return response.json()\n }\n}\n\n/**\n * HTTP客户端Hook (基于 Ky) - 内部使用版本\n * @param baseURL 可选的基础URL\n * @returns HTTP客户端方法集合\n */\nexport const useKy = (baseURL?: string): KyMethods => {\n // 获取 App 实例\n const { notification } = App.useApp()\n\n // 获取工具包状态\n const toolkitsStore = useToolkitsStore()\n const { token, isGlobal, gameId, permissionVersion, signInPath, clearToken } = toolkitsStore\n\n // 处理未授权错误\n const handleUnauthorized = () => {\n clearToken()\n if (signInPath) {\n window.location.href = signInPath\n }\n }\n\n // 处理未注册错误\n const handleUnregistered = () => {\n clearToken()\n if (signInPath) {\n // 添加未注册参数到登录页 URL\n const url = new URL(signInPath, window.location.origin)\n url.searchParams.set('unregistered', 'true')\n window.location.href = url.toString()\n }\n }\n\n // 处理禁止访问错误\n const handleForbidden = () => {\n notification.error({\n message: '访问被禁止',\n description: '您没有权限访问此资源。',\n })\n }\n\n // 创建响应处理函数\n const createResponseHandler = (responseType?: ResponseType) => {\n return async (_request: any, _options: any, response: Response): Promise<Response> => {\n // 非 JSON 类型直接交由调用方按响应类型读取\n if (\n responseType === ResponseType.BLOB ||\n responseType === ResponseType.ARRAY_BUFFER ||\n responseType === ResponseType.TEXT ||\n responseType === ResponseType.FORM_DATA\n ) {\n return response\n }\n\n // 默认 JSON\n let data: any\n try {\n data = await response.clone().json()\n } catch {\n // 非 JSON 或空响应体,直接返回原响应\n return response\n }\n\n if (isSuccessResponse(data, response.status)) {\n const responseData = data.data !== undefined ? data.data : data\n return new Response(JSON.stringify(responseData), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n }\n\n const errorMessage = extractErrorMessage(data)\n notification.error({\n message: 'Request failed',\n description: errorMessage,\n })\n\n const error = new Error(errorMessage)\n ;(error as any).response = response\n ;(error as any).data = data\n throw error\n }\n }\n\n // 处理HTTP状态码错误\n const handleHttpStatusError = (status: number, data: any) => {\n switch (status) {\n case HTTP_STATUS.UNAUTHORIZED:\n handleUnauthorized()\n break\n\n case HTTP_STATUS.UNREGISTERED:\n handleUnregistered()\n break\n\n case HTTP_STATUS.FORBIDDEN:\n handleForbidden()\n break\n\n default: {\n // 安全地提取错误消息\n const errorMessage = extractErrorMessage(data) || `HTTP ${status} Error`\n notification.error({\n message: 'Request failed',\n description: errorMessage,\n })\n break\n }\n }\n }\n\n // 创建ky实例\n const instance = useMemo(() => {\n const kyInstance = ky.create({\n prefixUrl: baseURL,\n retry: 0,\n timeout: REQUEST_TIMEOUT,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n hooks: {\n beforeRequest: [\n request => {\n // 设置认证 headers\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`)\n }\n\n // 设置应用 ID headers\n if (!request.headers.has(APP_ID_HEADER) && permissionVersion !== PermissionVersion.V1) {\n if (isGlobal || !gameId) {\n request.headers.set(APP_ID_HEADER, 'global')\n } else {\n // 对 gameId 进行 URL 编码以避免非 ASCII 字符导致的 XMLHttpRequest 错误\n request.headers.set(APP_ID_HEADER, encodeURIComponent(String(gameId)))\n }\n }\n },\n ],\n beforeError: [\n async error => {\n const { response } = error\n\n if (response) {\n const status = response.status\n let data: any\n\n try {\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json') || contentType.startsWith('text/')) {\n data = await response.clone().json()\n }\n } catch {\n // 忽略 JSON 解析错误\n }\n\n handleHttpStatusError(status, data)\n } else {\n // 网络错误或请求超时等情况\n notification.error({\n message: 'Network Error',\n description: error.message || 'Network request failed',\n })\n }\n\n return error\n },\n ],\n },\n })\n\n return kyInstance\n }, [baseURL, token, isGlobal, gameId, permissionVersion])\n\n // 通用请求处理函数\n const makeRequest = async <T = any>(\n method: string,\n url: string,\n data?: any,\n requestOptions?: RequestOptions,\n ): Promise<T> => {\n const { responseType, ...kyOptions } = requestOptions || {}\n\n // 创建带有响应类型处理器的请求选项\n const finalOptions: KyOptions = {\n ...kyOptions,\n hooks: {\n ...kyOptions.hooks,\n afterResponse: [...(kyOptions.hooks?.afterResponse || []), createResponseHandler(responseType)],\n },\n }\n\n let response: Response\n\n if (data) {\n response = await instance(url, { method, json: data, ...finalOptions })\n } else {\n response = await instance(url, { method, ...finalOptions })\n }\n\n // 根据响应类型返回相应数据\n return processResponseByType(response, responseType)\n }\n\n // HTTP方法\n const get = <T = any>(url: string, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('GET', url, undefined, options)\n }\n\n const post = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('POST', url, data, options)\n }\n\n const put = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('PUT', url, data, options)\n }\n\n const del = <T = any>(url: string, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('DELETE', url, undefined, options)\n }\n\n const patch = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('PATCH', url, data, options)\n }\n\n const options = <T = any>(url: string, requestOptions?: RequestOptions): Promise<T> => {\n return makeRequest<T>('OPTIONS', url, undefined, requestOptions)\n }\n\n const head = <T = any>(url: string, requestOptions?: RequestOptions): Promise<T> => {\n return makeRequest<T>('HEAD', url, undefined, requestOptions)\n }\n\n const request = <T = any>(requestOptions: RequestOptions & { url: string }): Promise<T> => {\n const { url, ...requestOpts } = requestOptions\n return makeRequest<T>(requestOpts.method || 'GET', url, undefined, requestOpts)\n }\n\n return {\n get,\n post,\n put,\n delete: del,\n patch,\n options,\n head,\n request,\n instance,\n }\n}\n","export { useKy } from './ky'\n","// 查询键工厂 - 使用简单的对象和函数来生成查询键\nexport const queryKeys = {\n // 权限相关\n permissions: {\n check: (permissions: string[], version: 'v1' | 'v2') => ['permissions', 'check', permissions, version] as const,\n allPermissions: ['permissions', 'all'] as const,\n allPermissionsV2: ['permissions', 'allV2'] as const,\n },\n // 用户相关\n users: {\n all: ['users'] as const,\n detail: (id: string) => ['users', 'detail', id] as const,\n create: ['users', 'create'] as const,\n update: ['users', 'update'] as const,\n delete: ['users', 'delete'] as const,\n },\n // 角色相关\n roles: {\n all: ['roles'] as const,\n detail: (name: string, version: 'v1' | 'v2') => ['roles', 'detail', name, version] as const,\n create: (version: 'v1' | 'v2') => ['roles', 'create', version] as const,\n update: (version: 'v1' | 'v2') => ['roles', 'update', version] as const,\n delete: ['roles', 'delete'] as const,\n },\n // 菜单相关\n menus: {\n all: ['menus'] as const,\n navbar: (gameId?: string) => ['menus', 'navbar', gameId] as const,\n detail: (id: number) => ['menus', 'detail', id] as const,\n create: ['menus', 'create'] as const,\n update: ['menus', 'update'] as const,\n delete: ['menus', 'delete'] as const,\n },\n // 枚举相关\n enums: {\n gameGroups: ['enums', 'gameGroups'] as const,\n gameIds: (gameGroups: string[]) => ['enums', 'gameIds', gameGroups] as const,\n },\n}\n\nexport type QueryKeys = typeof queryKeys\n","import { useQuery } from '@tanstack/react-query'\nimport type { Options as KyOptions } from 'ky'\n\nimport type { Game } from '@/components/layout/types'\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { APP_ID_HEADER, PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport type { MenuListItem } from '@/types'\n\nexport function usePermission(code?: string | string[], config?: KyOptions) {\n const ky = useKy()\n const { permissionVersion } = useToolkitsStore()\n const url = permissionVersion !== PermissionVersion.V1 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check'\n const permissionCodes: string[] = typeof code !== 'undefined' ? (typeof code === 'string' ? [code] : code) : []\n const version = permissionVersion !== PermissionVersion.V1 ? 'v2' : 'v1'\n\n const { data, ...rest } = useQuery({\n queryKey:\n permissionCodes.length > 0 ? queryKeys.permissions.check(permissionCodes, version) : ['permissions', 'disabled'],\n queryFn: () =>\n ky.post<Record<string, boolean> & { has_all?: boolean }>(url, {\n json: { permissions: permissionCodes },\n ...config,\n }),\n enabled: permissionCodes.length > 0,\n })\n\n let newData: boolean | Record<string, boolean> = true\n\n if (typeof code === 'string') {\n newData = data?.has_all ? true : (data?.[code] ?? false)\n } else if (Array.isArray(code) && code.length > 0) {\n newData = permissionCodes.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr] = data?.has_all ? true : (data?.[curr] ?? false)\n return acc\n }, {})\n }\n\n return {\n ...rest,\n data: newData,\n }\n}\n\nexport function useMenuList() {\n const { signInPath, gameId } = useToolkitsStore()\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.menus.navbar(gameId ? String(gameId) : undefined),\n queryFn: () =>\n ky.get<MenuListItem[]>('/api/usystem/menu/navbar', {\n headers: { [APP_ID_HEADER]: gameId ? encodeURIComponent(String(gameId)) : 'global' },\n }),\n enabled: window.location.pathname !== signInPath,\n })\n}\n\nexport const useGames = () => {\n const { gameApiV2, permissionVersion } = useToolkitsStore()\n const ky = useKy()\n const url =\n permissionVersion !== PermissionVersion.V1 ? (gameApiV2 ? '/api/game/list' : '/api/usystem/game/all') : null\n\n return useQuery({\n queryKey: queryKeys.enums.gameGroups, // 复用现有的 key,或者可以创建专门的 games key\n queryFn: async () => {\n if (!url) return []\n\n const requestConfig = {\n headers: {\n [APP_ID_HEADER]: 'global',\n },\n }\n\n if (gameApiV2) {\n const response = await ky.get<{ list: Game[] }>(url, requestConfig)\n return response?.list ?? []\n }\n\n const response = await ky.get<Game[]>(url, requestConfig)\n return response ?? []\n },\n enabled: !!url,\n staleTime: Infinity,\n })\n}\n","import { isEqual } from 'lodash-es'\nimport { create } from 'zustand'\nimport { devtools, subscribeWithSelector } from 'zustand/middleware'\n\nimport type { QueryListPayload } from './QueryList'\n\n// Query 更新函数类型\ntype QueryRefetchFunction = () => void | Promise<unknown>\n\n// QueryList 实例信息\ninterface QueryListInstance {\n id: string\n url: string\n queryKey: readonly unknown[]\n payload: QueryListPayload\n refetch: QueryRefetchFunction\n}\n\n// 简化的状态接口\ninterface QueryListState {\n // 实例管理\n instances: Map<string, QueryListInstance>\n\n // 核心方法\n registerInstance(id: string, url: string, queryKey: readonly unknown[], refetch: QueryRefetchFunction): void\n unregisterInstance(id: string): void\n updatePayload(id: string, payload: QueryListPayload): void\n getPayload(id: string): QueryListPayload\n refetch(id: string, payload?: QueryListPayload): Promise<void>\n\n // 工具方法\n getInstance(id: string): QueryListInstance | undefined\n getAllInstances(): QueryListInstance[]\n}\n\n// 稳定的默认 payload 引用,避免未注册时每次返回新对象导致 getSnapshot 无限循环\nconst DEFAULT_PAYLOAD: QueryListPayload = Object.freeze({\n page: 1,\n size: 10,\n filters: Object.freeze({}),\n})\n\n// 创建简化的 store\nconst createStore = () =>\n create<QueryListState>()(\n devtools(\n subscribeWithSelector((set, get) => ({\n instances: new Map(),\n\n registerInstance(id, url, queryKey, refetch) {\n set(state => {\n const existingInstance = state.instances.get(id)\n\n // 如果实例已存在,只更新refetch函数\n if (existingInstance) {\n // 仅当 refetch 变更时才更新,避免无意义 setState\n if (existingInstance.refetch !== refetch) {\n const updatedInstance = {\n ...existingInstance,\n refetch,\n }\n const newInstances = new Map(state.instances)\n newInstances.set(id, updatedInstance)\n return { instances: newInstances }\n }\n return state\n }\n\n // 创建新实例\n const instance: QueryListInstance = {\n id,\n url,\n queryKey,\n payload: DEFAULT_PAYLOAD,\n refetch,\n }\n\n const newInstances = new Map(state.instances)\n newInstances.set(id, instance)\n\n return { instances: newInstances }\n })\n },\n unregisterInstance(id) {\n set(state => {\n const newInstances = new Map(state.instances)\n const existed = newInstances.delete(id)\n\n if (existed) {\n return { instances: newInstances }\n }\n return state\n })\n },\n updatePayload(id, payload) {\n set(state => {\n const instance = state.instances.get(id)\n if (!instance) return state\n\n const newPayload = { ...instance.payload, ...payload }\n\n // 只有当 payload 真正改变时才更新\n if (!isEqual(instance.payload, newPayload)) {\n const updatedInstance = {\n ...instance,\n payload: newPayload,\n }\n\n const newInstances = new Map(state.instances)\n newInstances.set(id, updatedInstance)\n\n return { instances: newInstances }\n }\n\n return state\n })\n },\n getPayload(id) {\n const instance = get().instances.get(id)\n return instance?.payload ?? DEFAULT_PAYLOAD\n },\n async refetch(id, payload) {\n const instance = get().instances.get(id)\n if (!instance) {\n console.warn(`QueryList instance with id \"${id}\" not found`)\n return\n }\n\n let payloadChanged = false\n\n // 更新 payload 如果提供且确实有变化\n if (payload) {\n const currentPayload = instance.payload\n const newPayload = { ...currentPayload, ...payload }\n\n if (!isEqual(currentPayload, newPayload)) {\n get().updatePayload(id, payload)\n payloadChanged = true\n }\n }\n\n // 若 payload 发生变化,queryKey 会变化,React Query 会自动触发请求,此处不再手动 refetch,避免重复请求\n if (payloadChanged) {\n return\n }\n\n // 否则手动触发一次请求\n try {\n await instance.refetch()\n } catch (error) {\n console.error(`Failed to refetch QueryList instance \"${id}\":`, error)\n throw error\n }\n },\n\n getInstance(id) {\n return get().instances.get(id)\n },\n\n getAllInstances() {\n return Array.from(get().instances.values())\n },\n })),\n {\n name: 'query-list-store',\n },\n ),\n )\n\n// 创建 store 实例\nconst store = createStore()\n\nexport const useQueryListStore = store\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useQuery } from '@tanstack/react-query'\nimport type { FormInstance } from 'antd'\nimport { Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { Options as KyOptions } from 'ky'\nimport { isEqual } from 'lodash-es'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\n\nimport type { FilterFormWrapperProps } from '@/components/filterFormWrapper'\nimport { FilterFormWrapper } from '@/components/filterFormWrapper'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nimport { useQueryListStore } from './stores'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<Values = any> {\n page?: number\n size?: number\n filters?: Values\n}\n\n// 缓存配置\nexport interface CacheConfig {\n cacheTime?: number // 缓存时间(毫秒)\n staleTime?: number // 数据新鲜时间(毫秒)\n}\n\n// 支持的 HTTP 请求方法类型\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD'\n\n// 简化的请求配置\nexport interface QueryListRequestConfig extends CacheConfig {\n url: string\n method?: HttpMethod\n body?: FormData | Record<string | number, any>\n searchParams?: Record<string | number, any>\n headers?: Record<string, string>\n}\n\nexport type QueryListRequestConfigType<Values = any> =\n | QueryListRequestConfig\n | ((payload: QueryListPayload<Values>) => QueryListRequestConfig)\n\nexport enum QueryListAction {\n Confirm,\n Reset,\n Jump,\n Init,\n}\n\nexport interface QueryListDataType<Item> {\n dataSource: Item[]\n total: number\n}\n\nexport interface QueryListRef<Item extends AnyObject = AnyObject, Values = AnyObject, Data = any> {\n data: Data | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Values>\n}\n\nexport interface QueryListDataAdapter<Item extends AnyObject = AnyObject> {\n total?: number\n items?: Item[]\n}\n\nexport type QueryListDataAdapterConfig<Item extends AnyObject = AnyObject, Data = any> =\n | QueryListDataAdapter<Item>\n | ((data: Data) => QueryListDataAdapter<Item>)\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Values = AnyObject, Data = any>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading' | 'footer'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n identifier?: string // 可选的标识符,用于标识和外部控制,未提供时自动生成\n code?: string\n form?: FormInstance<Values>\n refreshInterval?: number\n onePage?: boolean // 无分页\n defaultSize?: number\n pageSizeOptions?: number[]\n request: QueryListRequestConfigType<Values> // 必需的请求配置\n tableExtra?: ReactNode | ((form: FormInstance<Values>, data?: Data) => ReactNode)\n renderForm?: (form: FormInstance<Values>) => ReactElement\n afterSuccess?: (action: QueryListAction, form: FormInstance<Values>, data?: Data) => void\n afterError?: (error: Error, action: QueryListAction, form: FormInstance<Values>) => void\n dataAdapter?: QueryListDataAdapterConfig<Item, Data>\n footer?: (data: Data | undefined) => ReactNode\n}\n\n// 常量定义\nconst DEFAULT_CACHE_TIME = 5 * 60 * 1000 // 默认缓存5分钟\nconst DEFAULT_STALE_TIME = 30 * 1000 // 默认30秒内数据新鲜\n\n// 无请求体的 HTTP 方法\nconst BODYLESS_METHODS: HttpMethod[] = ['GET', 'HEAD']\n\n// 支持请求体的 HTTP 方法\nconst BODY_SUPPORTED_METHODS: HttpMethod[] = ['POST', 'PUT', 'PATCH', 'DELETE']\n\nconst SPIN_STYLE: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n}\n\n// 生成唯一 identifier 的计数器\nlet identifierCounter = 0\n\n// 生成唯一 identifier 的函数\nconst generateUniqueIdentifier = (): string => {\n return `queryList_${Date.now()}_${++identifierCounter}`\n}\n\nconst InternalQueryList = <Item extends AnyObject = AnyObject, Values extends AnyObject = any, Data = any>(\n props: QueryListProps<Item, Values, Data>,\n ref: Ref<QueryListRef<Item, Values, Data>>,\n) => {\n const { t } = useTranslation()\n\n const {\n form,\n identifier,\n code,\n onePage,\n buttonsAlign,\n showReset,\n defaultSize = 10,\n refreshInterval = 0,\n tableExtra,\n renderForm,\n afterSuccess,\n afterError,\n footer,\n pageSizeOptions,\n request,\n dataAdapter,\n ...tableProps\n } = props\n\n const [formInstance] = Form.useForm<Values>(form)\n\n // 生成或使用提供的 identifier\n const finalIdentifier = useMemo(() => {\n return identifier || generateUniqueIdentifier()\n }, [identifier])\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const { data: accessible, isLoading: isChecking } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const isInitialized = useRef(false)\n const isUpdatingFromPayload = useRef(false) // 防止循环更新的标志\n\n // 仅订阅当前 identifier 的 payload,避免因其它实例变化导致不必要重渲染\n const subscribedPayload = useQueryListStore(s => s.getPayload(finalIdentifier))\n const ky = useKy()\n\n const { page, size = defaultSize, filters } = subscribedPayload\n\n const payload = { page, size, filters }\n\n // 处理 request 配置(对象或函数)\n const resolvedRequest = typeof request === 'function' ? request(payload) : request\n\n const {\n url,\n method = 'GET',\n body,\n searchParams,\n headers,\n cacheTime = DEFAULT_CACHE_TIME,\n staleTime = DEFAULT_STALE_TIME,\n } = resolvedRequest\n\n // 验证请求方法\n const normalizedMethod = method.toUpperCase() as HttpMethod\n const allSupportedMethods: HttpMethod[] = [...BODYLESS_METHODS, ...BODY_SUPPORTED_METHODS]\n\n if (!allSupportedMethods.includes(normalizedMethod)) {\n console.warn(`QueryList: 不支持的 HTTP 请求方法 \"${method}\",将使用 GET 方法`)\n }\n\n // 根据请求方法决定参数传递方式\n const isBodylessMethod = BODYLESS_METHODS.includes(normalizedMethod)\n const supportsBody = BODY_SUPPORTED_METHODS.includes(normalizedMethod)\n\n const defaultRequestData = { ...filters, ...(!onePage && { page, size }) }\n\n // 使用用户提供的参数,否则使用默认请求数据\n const requestBody = body || (supportsBody ? defaultRequestData : undefined)\n const requestSearchParams = searchParams || defaultRequestData\n\n const requestHeaders = headers\n\n const shouldPoll = useRef(false)\n\n const queryKey = ['queryList', url, finalIdentifier, page, size, filters]\n\n const { data, isLoading, refetch } = useQuery({\n queryKey,\n queryFn: async () => {\n try {\n const kyOptions: KyOptions = {\n method: normalizedMethod,\n searchParams: requestSearchParams,\n headers: requestHeaders,\n }\n\n // 只有非无请求体方法才允许有 body\n if (requestBody && !isBodylessMethod) {\n if (requestBody instanceof FormData) {\n // FormData 使用 body 方式传递\n kyOptions.body = requestBody\n } else if (typeof requestBody === 'string') {\n // 字符串直接作为 body\n kyOptions.body = requestBody\n } else {\n // 对象类型使用 .json 方式传递\n kyOptions.json = requestBody\n }\n }\n\n const response = await ky.request<Data>({ url, ...kyOptions })\n shouldPoll.current = true\n afterSuccess?.(action.current, formInstance, response)\n return response\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error(String(err))\n afterError?.(errorObj, action.current, formInstance)\n throw errorObj\n }\n },\n retry: (failureCount, retryError) => {\n // 自定义重试逻辑\n if (failureCount >= 3) return false\n if (retryError?.message?.includes('401')) return false // 认证错误不重试\n return true\n },\n retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000), // 指数退避\n refetchOnWindowFocus: false,\n refetchInterval: shouldPoll.current ? refreshInterval : 0,\n // 缓存配置\n gcTime: cacheTime,\n staleTime,\n enabled: accessible && isValid,\n })\n\n // 处理 dataAdapter 配置\n const resolvedDataAdapter = useMemo(() => {\n const adapter = dataAdapter\n const defaultAdapter: QueryListDataAdapter<Item> = {\n total: (data as ListResponse<Item>)?.total,\n items: (data as ListResponse<Item>)?.list,\n }\n\n if (typeof adapter === 'function') {\n return {\n ...defaultAdapter,\n ...adapter(data as Data),\n }\n }\n return {\n ...defaultAdapter,\n ...adapter,\n }\n }, [dataAdapter, data])\n\n // 在组件挂载时注册实例,避免因 queryKey/refetch 身份变化反复注册\n useEffect(() => {\n useQueryListStore.getState().registerInstance(finalIdentifier, url, queryKey, refetch)\n return () => {\n useQueryListStore.getState().unregisterInstance(finalIdentifier)\n }\n }, [finalIdentifier, url])\n\n const dataSource = resolvedDataAdapter.items\n const total = resolvedDataAdapter.total\n\n const pagination = useMemo(() => {\n if (onePage) return false\n\n return {\n pageSizeOptions,\n showSizeChanger: true,\n showQuickJumper: true,\n current: page,\n pageSize: size,\n total,\n onChange: async (currentPage: number, currentSize: number) => {\n action.current = QueryListAction.Jump\n useQueryListStore.getState().refetch(finalIdentifier, {\n page: currentPage,\n size: currentSize,\n })\n },\n }\n }, [onePage, pageSizeOptions, page, size, total, finalIdentifier])\n\n const onConfirm = useCallback(async () => {\n action.current = QueryListAction.Confirm\n try {\n await formInstance.validateFields()\n setIsValid(true)\n useQueryListStore.getState().refetch(finalIdentifier, {\n page: 1,\n filters: formInstance.getFieldsValue(),\n })\n } catch {\n setIsValid(false)\n }\n }, [formInstance, finalIdentifier])\n\n const onReset = useCallback(async () => {\n action.current = QueryListAction.Reset\n formInstance.resetFields()\n\n try {\n await formInstance.validateFields({ validateOnly: true })\n setIsValid(true)\n useQueryListStore.getState().refetch(finalIdentifier, {\n page: 1,\n filters: formInstance.getFieldsValue(),\n })\n } catch {\n setIsValid(false)\n }\n }, [formInstance, finalIdentifier])\n\n const formRenderer =\n typeof renderForm === 'function' ? (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isLoading}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {cloneElement(renderForm(formInstance), {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onConfirm()\n }\n },\n })}\n </FilterFormWrapper>\n ) : (\n // 屏蔽 Form 组件的警告(Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?)\n <Form form={formInstance} />\n )\n\n const tableExtraRenderer = typeof tableExtra === 'function' ? tableExtra(formInstance, data) : tableExtra\n\n const renderFooter = footer ? () => footer(data) : undefined\n\n // 监听 payload.filters 变化并同步更新表单实例\n useEffect(() => {\n if (!isInitialized.current || isUpdatingFromPayload.current) {\n return\n }\n\n // 获取当前表单的值\n const currentFormValues = formInstance.getFieldsValue()\n\n // 如果 payload 中的 filters 与当前表单值不同,则更新表单\n if (filters && !isEqual(currentFormValues, filters)) {\n isUpdatingFromPayload.current = true\n formInstance.setFieldsValue(filters)\n // 使用 setTimeout 确保在下一个事件循环中重置标志\n setTimeout(() => {\n isUpdatingFromPayload.current = false\n }, 0)\n }\n }, [filters, formInstance])\n\n // 首次挂载时自动校验表单,校验通过则更新 payload 并允许请求\n useEffect(() => {\n if (!accessible || isInitialized.current) {\n return\n }\n\n const init = async () => {\n console.log('QueryList init starting')\n try {\n formInstance.resetFields()\n const value = await formInstance.validateFields({ validateOnly: true })\n console.log('QueryList init validation success:', value)\n useQueryListStore.getState().updatePayload(finalIdentifier, {\n page: 1,\n filters: value,\n })\n setIsValid(true)\n console.log('QueryList init completed, isValid set to true')\n } catch (error) {\n console.log('QueryList init validation failed:', error)\n setIsValid(false)\n } finally {\n isInitialized.current = true\n }\n }\n\n const rafId = requestAnimationFrame(() => {\n Promise.resolve().then(init)\n })\n\n return () => {\n if (rafId) {\n cancelAnimationFrame(rafId)\n }\n }\n }, [accessible, finalIdentifier, formInstance])\n\n useImperativeHandle(\n ref,\n () => ({\n data,\n dataSource,\n form: formInstance,\n refetch,\n }),\n [data, dataSource, formInstance, refetch],\n )\n\n if (isChecking) {\n return <Spin style={SPIN_STYLE} />\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n return (\n <div>\n {formRenderer}\n {tableExtraRenderer}\n <Table\n {...tableProps}\n dataSource={dataSource}\n loading={isLoading}\n pagination={pagination}\n footer={renderFooter}\n />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Values extends object | undefined = undefined,\n Data = any,\n>(\n props: QueryListProps<Item, Values, Data> & { ref?: Ref<QueryListRef<Item, Values, Data>> },\n) => ReactElement\n\nexport default QueryList\n","export type { QueryListPayload, QueryListProps, QueryListRef } from './QueryList'\nexport { default as QueryList, QueryListAction } from './QueryList'\nexport { useQueryListStore } from './stores'\n","import { useMutation, useQueryClient } from '@tanstack/react-query'\n\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport type { MenuListItem } from '@/types'\n\nexport function useCreateMenu() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.menus.create,\n mutationFn: (arg: Omit<MenuListItem, 'id'>) => ky.post('/api/usystem/menu/set', { ...arg, id: 0, is_model: true }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.all })\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.navbar() })\n },\n })\n}\n\nexport function useUpdateMenu() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.menus.update,\n mutationFn: (arg: MenuListItem) => ky.post('/api/usystem/menu/set', { ...arg, is_model: true }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.all })\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.navbar() })\n },\n })\n}\n\nexport function useRemoveMenu() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.menus.delete,\n mutationFn: (id: number) => ky.post('/api/usystem/menu/delete', null, { searchParams: { id } }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.all })\n queryClient.invalidateQueries({ queryKey: queryKeys.menus.navbar() })\n },\n })\n}\n","import type { TableColumnsType } from 'antd'\nimport { App, Button, Card, Popconfirm, Space } from 'antd'\nimport { useNavigate } from 'react-router-dom'\n\nimport { Highlight } from '@/components/highlight'\nimport { QueryList, useQueryListStore } from '@/components/queryList'\nimport { withContext } from '@/components/toolkitsProvider'\nimport { useTranslation } from '@/locale'\nimport { useMenuList } from '@/services'\nimport type { MenuListItem } from '@/types'\n\nimport { useRemoveMenu } from '../../services'\n\nconst MenuItemList = withContext(\n () => {\n const { t } = useTranslation()\n const { message } = App.useApp()\n const remove = useRemoveMenu()\n const { refetch } = useQueryListStore()\n const { refetch: refetchMenuList } = useMenuList()\n const navigate = useNavigate()\n\n const columns: TableColumnsType<MenuListItem> = [\n {\n title: '菜单名称',\n dataIndex: 'category',\n key: 'category',\n },\n {\n title: '前端路由',\n dataIndex: 'front_route',\n },\n {\n title: 'Order',\n dataIndex: 'order',\n },\n {\n title: 'Is Common',\n dataIndex: 'is_common',\n key: 'is_common',\n render: value => (value ? '是' : '否'),\n },\n {\n title: '模板名称',\n dataIndex: 'model_name',\n key: 'model_name',\n },\n // {\n // title: '是否预设',\n // dataIndex: 'is_model',\n // key: 'is_model',\n // render: value => (value ? '否' : '是'),\n // },\n {\n title: '操作',\n key: 'action',\n width: 150,\n align: 'center',\n render(_, record) {\n if (record.is_model) {\n return (\n <Space size=\"small\">\n <Button\n type=\"link\"\n onClick={() => {\n navigate(`./update/${record.id}`)\n }}\n >\n {t('global.update')}\n </Button>\n <Popconfirm\n title=\"删除菜单\"\n placement=\"topRight\"\n description={<Highlight texts={[record.category]}>确定要删除菜单 {record.category} 吗?</Highlight>}\n onConfirm={async () => {\n await remove.mutate(record.id)\n // 触发所有相关实例的刷新\n refetch('menu-item-list')\n refetchMenuList()\n message.success('删除成功')\n }}\n >\n <Button danger type=\"link\" size=\"small\">\n {t('global.delete')}\n </Button>\n </Popconfirm>\n </Space>\n )\n }\n\n return null\n },\n },\n ]\n\n return (\n <>\n <Card\n title=\"菜单管理\"\n extra={\n <Button\n type=\"primary\"\n onClick={() => {\n navigate('./create')\n }}\n >\n 创建菜单项\n </Button>\n }\n >\n <QueryList<MenuListItem, undefined, MenuListItem[]>\n identifier=\"menu-item-list\"\n onePage={true}\n code=\"9900001\"\n rowKey=\"id\"\n columns={columns}\n request={{\n url: '/api/usystem/menu/list',\n method: 'GET',\n }}\n dataAdapter={data => ({\n items: data,\n })}\n />\n </Card>\n </>\n )\n },\n { isGlobal: true },\n)\n\nexport default MenuItemList\n","import { Editor } from '@monaco-editor/react'\nimport { App, Button, Card, Form, Input, InputNumber, Switch } from 'antd'\nimport { useNavigate } from 'react-router-dom'\n\nimport { withContext } from '@/components/toolkitsProvider'\nimport { FRONTEND_ROUTE_PREFIX } from '@/constants'\nimport type { MenuListItem } from '@/types'\n\nimport { useCreateMenu } from '../../services'\n\ntype FormSchema = Omit<MenuListItem, 'id' | 'permissions'> & { permissions: string }\n\nconst CreateMenuItem = withContext(\n () => {\n const { message } = App.useApp()\n const [form] = Form.useForm<FormSchema>()\n const navigate = useNavigate()\n const { mutate: createMenu } = useCreateMenu()\n\n const onFinish = async (values: FormSchema) => {\n const { permissions, front_route, ...rest } = values\n await createMenu({\n ...rest,\n front_route: FRONTEND_ROUTE_PREFIX + front_route,\n permissions: permissions ? JSON.parse(permissions) : undefined,\n })\n message.success('创建成功', 0.8, () => navigate('..', { relative: 'route' }))\n }\n\n return (\n <Card title=\"创建菜单项\">\n <Form\n scrollToFirstError\n form={form}\n labelCol={{ flex: '120px' }}\n initialValues={{ is_common: false, is_model: false, order: 0 }}\n onFinish={onFinish}\n >\n <Form.Item label=\"菜单项名称\" name=\"category\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"前端路由\" name=\"front_route\" rules={[{ required: true }]}>\n <Input prefix={FRONTEND_ROUTE_PREFIX} />\n </Form.Item>\n <Form.Item label=\"模板名称\" name=\"model_name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"Is Common\" name=\"is_common\" rules={[{ required: true }]} valuePropName=\"checked\">\n <Switch />\n </Form.Item>\n <Form.Item label=\"Order\" name=\"order\">\n <InputNumber className=\"w-full\" />\n </Form.Item>\n <Form.Item label=\"接口规则\" name=\"permissions\">\n <Editor\n theme=\"vs-dark\"\n height=\"300px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Schema\" name=\"scheme\" rules={[{ required: true }]}>\n <Editor\n theme=\"vs-dark\"\n height=\"600px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Ext\" name=\"ext\">\n <Input.TextArea rows={5} />\n </Form.Item>\n <Form.Item>\n <div className=\"flex justify-center gap-8\">\n <Button type=\"primary\" htmlType=\"submit\">\n 提交\n </Button>\n <Button\n onClick={() => {\n navigate('..', { relative: 'path' })\n }}\n >\n 取消\n </Button>\n </div>\n </Form.Item>\n </Form>\n </Card>\n )\n },\n { isGlobal: true },\n)\n\nexport default CreateMenuItem\n","import { Editor } from '@monaco-editor/react'\nimport { useQuery } from '@tanstack/react-query'\nimport { App, Button, Card, Form, Input, InputNumber, Switch } from 'antd'\nimport { useEffect } from 'react'\nimport { useNavigate, useParams } from 'react-router-dom'\n\nimport { withContext } from '@/components/toolkitsProvider'\nimport { FRONTEND_ROUTE_PREFIX } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport { useMenuList } from '@/services'\nimport type { MenuListItem } from '@/types'\n\nimport { useUpdateMenu } from '../../services'\n\ntype FormSchema = Omit<MenuListItem, 'id' | 'permissions'> & { permissions: string }\n\nconst EditMenuItem = withContext(\n () => {\n const { message } = App.useApp()\n const [form] = Form.useForm<FormSchema>()\n const navigate = useNavigate()\n const { mutate } = useUpdateMenu()\n const params = useParams<'id'>()\n const { refetch } = useMenuList()\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.menus.detail(Number(params.id)),\n queryFn: () => ky.get<MenuListItem>(`/api/usystem/menu/info?id=${params.id}`),\n enabled: !!params.id,\n })\n\n const onFinish = async (values: FormSchema) => {\n const { permissions, front_route, ...rest } = values\n\n await mutate({\n ...rest,\n permissions: permissions ? JSON.parse(permissions) : undefined,\n front_route: FRONTEND_ROUTE_PREFIX + front_route,\n id: +params.id!,\n })\n refetch()\n message.success('更新成功', 0.8, () => navigate('../..', { relative: 'route' }))\n }\n\n useEffect(() => {\n const { permissions, front_route, ...rest } = data ?? {}\n const permissionsString = JSON.stringify(permissions || [], null, 2)\n const frontRoute = front_route?.replace(FRONTEND_ROUTE_PREFIX, '')\n form.setFieldsValue({\n ...rest,\n permissions: permissionsString,\n front_route: frontRoute,\n })\n }, [data, form])\n\n return (\n <Card title=\"更新菜单项\" loading={isLoading}>\n <Form\n scrollToFirstError\n form={form}\n labelCol={{ flex: '120px' }}\n initialValues={{ is_common: false, is_model: false, order: 0 }}\n onFinish={onFinish}\n >\n <Form.Item label=\"菜单项名称\" name=\"category\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"前端路由\" name=\"front_route\" rules={[{ required: true }]}>\n <Input prefix={FRONTEND_ROUTE_PREFIX} />\n </Form.Item>\n <Form.Item label=\"模板名称\" name=\"model_name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"Is Common\" name=\"is_common\" rules={[{ required: true }]} valuePropName=\"checked\">\n <Switch />\n </Form.Item>\n <Form.Item label=\"Order\" name=\"order\">\n <InputNumber className=\"w-full\" />\n </Form.Item>\n <Form.Item label=\"接口规则\" name=\"permissions\">\n <Editor\n theme=\"vs-dark\"\n height=\"300px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Schema\" name=\"scheme\" rules={[{ required: true }]}>\n <Editor\n theme=\"vs-dark\"\n height=\"600px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Ext\" name=\"ext\">\n <Input.TextArea rows={5} />\n </Form.Item>\n <Form.Item>\n <div className=\"flex justify-center gap-8\">\n <Button type=\"primary\" htmlType=\"submit\">\n 提交\n </Button>\n <Button\n onClick={() => {\n navigate('../..', { relative: 'path' })\n }}\n >\n 取消\n </Button>\n </div>\n </Form.Item>\n </Form>\n </Card>\n )\n },\n { isGlobal: true },\n)\n\nexport default EditMenuItem\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { Options as KyOptions } from 'ky'\nimport type { FC, PropsWithChildren } from 'react'\n\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code?: string | string[]\n showLoading?: boolean\n config?: KyOptions\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, disabled, config, ...restProps } = props\n const codes = code ? (Array.isArray(code) ? code : [code]) : []\n const { data, isLoading } = usePermission(codes, config)\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Button loading={showLoading} disabled={!showLoading} {...restProps}>\n {children}\n </Button>\n )\n }\n\n // 只要有一个权限即可\n if (typeof data === 'boolean' || (data && Object.values(data).some(Boolean))) {\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n }\n\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n}\n\nexport default PermissionButton\n","export type { PermissionButtonProps } from './PermissionButton'\nexport { default as PermissionButton } from './PermissionButton'\n","import { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n usedIds: Set<number>\n isOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n checkUniqueness: (uuid: number) => boolean\n registerIds: (uuid: number) => boolean\n cleanup: (uuid: number) => void\n}\n\nexport const useModalStore = create<ModalState>((set, get) => ({\n open: new Map(),\n usedIds: new Set(),\n isOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({\n open: new Map(get().open).set(uuid, true),\n })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n checkUniqueness(uuid) {\n const { usedIds } = get()\n return !usedIds.has(uuid)\n },\n registerIds(uuid) {\n const { usedIds } = get()\n if (usedIds.has(uuid)) {\n return false // ID 已被使用\n }\n set({ usedIds: new Set(usedIds).add(uuid) })\n return true // 注册成功\n },\n cleanup(uuid) {\n const { open, usedIds } = get()\n const newOpen = new Map(open)\n const newUsedIds = new Set(usedIds)\n newOpen.delete(uuid)\n newUsedIds.delete(uuid)\n set({ open: newOpen, usedIds: newUsedIds })\n },\n}))\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { generateId } from '@/utils'\n\nimport { useModalStore } from './stores'\n\nexport interface UseModalOperation {\n hide: () => void\n}\n\nexport interface UseModalProps extends Omit<ModalProps, 'open' | 'confirmLoading' | 'onOk' | 'onCancel'> {\n content?: ReactNode | ((operation: UseModalOperation) => ReactNode)\n onConfirm?: () => void | Promise<void>\n afterOpen?: () => void | Promise<void>\n afterClose?: () => void | Promise<void>\n}\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, afterOpen, afterClose, ...modalProps } = props\n\n const _id = useMemo(() => generateId(), [])\n const { show, hide, isOpen, cleanup } = useModalStore()\n\n // 组件销毁时清理 ID\n useEffect(() => {\n return () => {\n cleanup(_id)\n }\n }, [_id, cleanup])\n\n const open = isOpen(_id)\n const [confirmLoading, setConfirmLoading] = useState(false)\n const isRenderFunction = typeof content === 'function'\n\n const _show = useCallback(async () => {\n show(_id)\n await afterOpen?.()\n }, [_id, show, afterOpen])\n\n const _hide = useCallback(() => {\n hide(_id)\n }, [_id, hide])\n\n const onCancel: ModalProps['onCancel'] = useCallback(async () => {\n _hide()\n await afterClose?.()\n }, [_hide, afterClose])\n\n const onOk = useCallback(async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n _hide()\n await afterClose?.()\n } catch (error) {\n console.error('Modal confirm error:', error)\n throw error\n } finally {\n setConfirmLoading(false)\n }\n }, [onConfirm, _hide, afterClose])\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide: _hide }) : content}\n </Modal>\n )\n\n return {\n id: _id,\n show: _show,\n hide: _hide,\n modal: internalModal,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance, FormProps } from 'antd'\nimport { Form } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { ReactNode } from 'react'\nimport { useCallback, useState } from 'react'\n\nimport type { RecursivePartial } from '@/types'\n\nimport { useModal, type UseModalOperation, type UseModalProps } from './modal'\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = any>\n extends Omit<UseModalProps, 'onConfirm' | 'content' | 'onShow' | 'afterClose'> {\n formProps?: Omit<FormProps, 'form'>\n form?: FormInstance<Values>\n content?: ReactNode | ((extraValues: ExtraValues, operation: UseModalOperation) => ReactNode)\n onConfirm?: (values: Values, extraValues: ExtraValues) => void | Promise<void>\n onSuccess?: () => void\n afterClose?: (form: FormInstance<Values>) => void\n}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, onSuccess, afterClose, ...modalProps } = props\n const [internalExtraValues, setInternalExtraValues] = useState<ExtraValues>({} as ExtraValues)\n let [internalForm] = Form.useForm<Values>()\n internalForm = form || internalForm\n\n const isRenderFunction = typeof content === 'function'\n\n const { id, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: async () => {\n try {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues)\n onSuccess?.()\n hide()\n } catch (error) {\n console.error('Form validation or submission error:', error)\n throw error\n }\n },\n afterClose: () => {\n afterClose?.(internalForm)\n },\n })\n\n const showForm = useCallback(\n (options?: { initialValues?: RecursivePartial<Values>; extraValues?: ExtraValues }) => {\n const { initialValues, extraValues } = options || {}\n\n if (extraValues) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n },\n [internalForm, show],\n )\n\n return {\n id,\n show: showForm,\n hide,\n modal,\n }\n}\n","export { useFormModal, type UseFormModalProps } from './formModal'\nexport { useModal } from './modal'\nexport { useModalStore } from './stores'\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\n\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllRoles() {\n const ky = useKy()\n return useQuery({\n queryKey: queryKeys.roles.all,\n queryFn: () => ky.get<RoleEnumItem[]>('/api/usystem/role/all'),\n })\n}\n\nexport function useRole(name: string) {\n const permissionVersion = useToolkitsStore(state => state.permissionVersion)\n const ky = useKy()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useQuery({\n queryKey: queryKeys.roles.detail(name, version),\n queryFn: () => ky.get<RoleV1 | RoleV2>(`/api/usystem/role/${version === 'v2' ? 'infoV2' : 'info'}?name=${name}`),\n })\n}\n\nexport function useCreateRole() {\n const { permissionVersion } = useToolkitsStore(s => s)\n const ky = useKy()\n const queryClient = useQueryClient()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useMutation({\n mutationKey: queryKeys.roles.create(version),\n mutationFn: ({ name, permissions }: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }) =>\n ky.post(version === 'v2' ? '/api/usystem/role/createV2' : '/api/usystem/role/create', { name, permissions }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useUpdateRole() {\n const { permissionVersion } = useToolkitsStore(s => s)\n const ky = useKy()\n const queryClient = useQueryClient()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useMutation({\n mutationKey: queryKeys.roles.update(version),\n mutationFn: ({\n id,\n name,\n permissions,\n }: {\n id: number\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }) =>\n ky.post(version === 'v2' ? '/api/usystem/role/updateV2' : '/api/usystem/role/update', { id, name, permissions }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useRemoveRole() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.roles.delete,\n mutationFn: ({ id, name }: { id: number; name: string }) => ky.post('/api/usystem/role/delete', { id, name }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useCreateUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.create,\n mutationFn: (\n arg:\n | { name: string; roles: string[] }\n | {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n },\n ) => ky.post('/api/usystem/user/create', arg),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useUpdateUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.update,\n mutationFn: (\n arg:\n | { id: string; name: string; roles: string[] }\n | {\n id: string\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n },\n ) => ky.post('/api/usystem/user/update', arg),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useRemoveUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.delete,\n mutationFn: ({ id, name }: { id: string; name: string }) => ky.post('/api/usystem/user/delete', { id, name }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useAllPermissions() {\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.permissions.allPermissions,\n queryFn: () => ky.get<PermissionEnumItem[]>('/api/usystem/user/allPermssions'),\n staleTime: Infinity,\n })\n}\n\nexport function useAllPermissionsV2() {\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.permissions.allPermissionsV2,\n queryFn: () => ky.get<PermissionEnumItem[]>('/api/usystem/user/allPermssionsV2'),\n staleTime: Infinity,\n })\n}\n","import { Checkbox, Col, Collapse, Row } from 'antd'\nimport type { CheckboxChangeEvent } from 'antd/es/checkbox'\nimport type { FC } from 'react'\nimport { useCallback, useEffect, useState, useTransition } from 'react'\n\nimport { useTranslation } from '@/locale'\n\nimport type { PermissionEnumItem } from '../../types'\n\ninterface PermissionCollapseProps {\n expand?: boolean\n permissions?: PermissionEnumItem[]\n readonly?: boolean\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst PermissionCollapse: FC<PermissionCollapseProps> = props => {\n const { permissions, readonly, expand, value, onChange } = props\n const [activeKey, setActiveKey] = useState<string[]>([])\n const [checkedMap, setCheckedMap] = useState<Record<string, boolean>>({})\n const [internalValue, setInternalValue] = useState<string[]>(value ?? [])\n const { t } = useTranslation()\n const [, startTransition] = useTransition()\n\n const onCollapseChange = useCallback((key: string | string[]) => {\n setActiveKey(key as string[])\n }, [])\n\n const getCheckedValue = (checkedValue: boolean, codes: string[]) => {\n let tempValue: string[] = []\n\n if (checkedValue) {\n tempValue = [...new Set(internalValue.concat(codes))]\n } else {\n tempValue = internalValue.slice()\n\n codes.forEach(code => {\n const index = tempValue.findIndex(item => item === code)\n if (index > -1) {\n tempValue.splice(index, 1)\n }\n })\n }\n\n return tempValue\n }\n\n const onCheckChange = (e: CheckboxChangeEvent, codes: string[]) => {\n const checkedValue = getCheckedValue(e.target.checked, codes)\n setInternalValue(checkedValue)\n onChange?.(checkedValue)\n }\n\n useEffect(() => {\n setInternalValue(value ?? [])\n }, [value])\n\n useEffect(() => {\n if (expand) {\n startTransition(() => {\n // 改变展开状态\n setActiveKey((permissions ?? []).map(({ category }) => category))\n })\n }\n }, [expand, permissions])\n\n useEffect(() => {\n const checkedValue = (permissions ?? []).reduce(\n (acc, curr) => {\n acc[curr.category] = curr.permissions.every(item => internalValue?.includes(item.value))\n return acc\n },\n {} as Record<string, boolean>,\n )\n\n setCheckedMap(checkedValue)\n }, [internalValue, permissions])\n\n const items = (permissions ?? []).map(item => ({\n key: item.category,\n label: item.category,\n extra: !readonly && (\n <Checkbox\n checked={checkedMap[item.category]}\n onChange={e => {\n onCheckChange(\n e,\n item.permissions?.map(permission => permission.value),\n )\n }}\n >\n {t('global.selectAll')}\n </Checkbox>\n ),\n children: (\n <Checkbox.Group style={{ width: '100%' }} value={internalValue} disabled={readonly}>\n <Row gutter={[10, 10]} style={{ width: '100%' }}>\n {item.permissions?.map(permission => (\n <Col key={permission.value} span={6}>\n <Checkbox\n value={permission.value}\n onChange={e => {\n onCheckChange(e, [permission.value])\n }}\n >\n {permission.label}\n </Checkbox>\n </Col>\n ))}\n </Row>\n </Checkbox.Group>\n ),\n }))\n\n return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n items={items}\n onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\n\nimport { useTranslation } from '@/locale'\nimport { useGames } from '@/services'\n\nimport { useAllPermissionsV2 } from '../../services'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from './types'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionWithGameProps extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionWithGame: FC<PermissionWithGameProps> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: permission, isLoading: isPermissionLoading, error } = useAllPermissionsV2()\n const { data: games, isLoading: isGamesLoading } = useGames()\n const [gameList, setGameList] = useState<{ gameId: string; permissions: string[] }[]>([])\n const globalPermissions = permission?.filter(item => item.is_common)\n const gamePermissions = permission?.filter(item => !item.is_common)\n const isLoading = isPermissionLoading || isGamesLoading\n const { t } = useTranslation()\n\n useEffect(() => {\n const list: { gameId: string; permissions: string[] }[] = []\n\n Object.keys(value ?? {}).forEach(key => {\n if (key !== 'global') {\n list.push({ gameId: key, permissions: value?.[key] ?? [] })\n }\n })\n\n setGameList(list)\n }, [value])\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n const addGame = () => {\n setGameList(prev => [...prev, { gameId: '', permissions: [] }])\n }\n\n const removeGame = (index: number) => {\n setGameList(prev => prev.filter((_, i) => i !== index))\n }\n\n return (\n <div className=\"flex flex-col w-full\">\n <div className=\"mb-12\">\n <Divider dashed>{t('PermissionList.baseSectionTitle')}</Divider>\n </div>\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.global}\n readonly={readonly}\n permissions={globalPermissions}\n expand={expand}\n onChange={newValue => {\n onChange?.({\n ...value,\n global: newValue,\n })\n }}\n />\n </Skeleton>\n <div className=\"my-12\">\n <Divider dashed>{t('PermissionList.gameSectionTitle')}</Divider>\n </div>\n {gameList.map((item, index) => (\n <Card\n title={\n <Space>\n <Text>{t('global.game')}</Text>\n {readonly ? (\n <Text>{games?.find(game => String(game.id) === item.gameId)?.name}</Text>\n ) : (\n <Select\n disabled={readonly}\n value={gameList[index].gameId || undefined}\n style={{ width: '160px' }}\n placeholder={t('PermissionList.gameSelectPlaceholder')}\n onChange={selectedValue => {\n setGameList(pev => {\n const temp = pev.slice()\n temp[index].gameId = selectedValue\n return temp\n })\n }}\n >\n {games?.map(game => (\n <Option\n key={game.id}\n value={game.id}\n disabled={gameList.some(({ gameId }) => gameId === String(game.id))}\n >\n {game.name}\n </Option>\n ))}\n </Select>\n )}\n </Space>\n }\n key={index}\n className=\"mb-6\"\n extra={\n !readonly && (\n <Button\n type=\"link\"\n onClick={() => {\n removeGame(index)\n }}\n >\n {t('PermissionList.removeText')}\n </Button>\n )\n }\n >\n {gameList[index].gameId ? (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value?.[gameList[index].gameId]}\n readonly={readonly}\n expand={expand}\n permissions={gamePermissions}\n onChange={newValue => {\n onChange?.({\n ...value,\n [gameList[index].gameId]: newValue,\n })\n }}\n />\n </Skeleton>\n ) : (\n <Empty description={t('PermissionList.gameSectionDescription')} />\n )}\n </Card>\n ))}\n {!readonly && (\n <Button block type=\"dashed\" onClick={addGame}>\n {t('PermissionList.addText')}\n </Button>\n )}\n </div>\n )\n}\n\nexport default PermissionWithGame\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\n\nimport { useTranslation } from '@/locale'\n\nimport { useAllPermissions } from '../../services'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from './types'\n\nconst { Text } = Typography\n\ninterface PermissionWithoutGameProps extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionWithoutGame: FC<PermissionWithoutGameProps> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: permissions, isLoading, error } = useAllPermissions()\n const { t } = useTranslation()\n\n if (error) {\n return (\n <div className=\"flex justify-center\">\n <Text type=\"danger\">{t('PermissionList.failedDescription')}</Text>\n </div>\n )\n }\n\n return (\n <Skeleton active loading={isLoading}>\n <PermissionCollapse\n value={value}\n permissions={permissions}\n readonly={readonly}\n expand={expand}\n onChange={onChange}\n />\n </Skeleton>\n )\n}\n\nexport default PermissionWithoutGame\n","import type { FC } from 'react'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { PermissionVersion } from '@/constants'\n\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionWithGame from './PermissionWithGame'\nimport PermissionWithoutGame from './PermissionWithoutGame'\nimport type { PermissionListPropsBase } from './types'\n\ninterface PermissionListProps extends PermissionListPropsBase {\n value?: RoleV1['permissions'] | RoleV2['permissions']\n onChange?: (checkedValue: RoleV1['permissions'] | RoleV2['permissions']) => void\n}\n\nconst PermissionList: FC<PermissionListProps> = (props: PermissionListProps) => {\n const { value } = props\n console.log('value', typeof value, value === null, JSON.stringify(value))\n const { permissionVersion } = useToolkitsStore()\n\n if (permissionVersion === PermissionVersion.V2) {\n return <PermissionWithGame {...props} value={value as RoleV2['permissions']} />\n }\n\n return <PermissionWithoutGame {...props} value={value as RoleV1['permissions']} />\n}\n\nexport default PermissionList\n","import { App, Form, Input } from 'antd'\n\nimport { useFormModal } from '@/components/modal'\nimport { useTranslation } from '@/locale'\n\nimport PermissionList from '../components/permissionList'\nimport { useCreateRole, useUpdateRole } from '../services'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../types'\n\nexport const useRoleModal = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const create = useCreateRole()\n const update = useUpdateRole()\n\n const isCreateMode = mode === 'create'\n\n const title = isCreateMode ? t('Role.createTitle') : t('Role.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n )\n\n const onConfirm = async (\n values: { name: string; permissions: RoleListItem['permissions'] },\n extraValues: { id: number },\n ) => {\n const name = `role_${values.name}`\n const permissions = values.permissions\n\n if (isCreateMode) {\n await create.mutateAsync({ name, permissions })\n message.success(t('Role.createSuccessfully'))\n } else {\n await update.mutateAsync({ id: extraValues?.id, name, permissions })\n message.success(t('Role.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<\n {\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n },\n { id: number }\n >({\n title,\n width: '1000px',\n formProps: {\n layout: 'vertical',\n },\n content,\n onConfirm,\n })\n}\n","import { MinusCircleOutlined } from '@ant-design/icons'\nimport { useQuery } from '@tanstack/react-query'\nimport { App, Button, Col, Empty, Form, Input, Row, Select, Typography } from 'antd'\nimport { first, last } from 'lodash-es'\nimport { Fragment } from 'react'\nimport { type FC } from 'react'\n\nimport { useFormModal } from '@/components/modal'\nimport { WILDCARD } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\n\nimport { useAllRoles, useCreateUser, useUpdateUser } from '../services'\n\nconst { Text } = Typography\n\ninterface GroupSelectProps {\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst GroupSelect: FC<GroupSelectProps> = props => {\n const { onChange, ...rest } = props\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.enums.gameGroups,\n queryFn: () => ky.get<string[]>('/api/enum/get?enum=game_group&type=all'),\n })\n\n const options = [{ label: '通用', value: WILDCARD }].concat(\n data?.map(group => ({ label: group, value: group })) ?? [],\n )\n\n const onValueChange = (value: string[]) => {\n if (last(value) === WILDCARD) {\n onChange?.([WILDCARD])\n } else if (first(value) === WILDCARD) {\n onChange?.(value.slice(1))\n } else {\n onChange?.(value)\n }\n }\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n mode=\"tags\"\n optionFilterProp=\"label\"\n loading={isLoading}\n options={options}\n onChange={onValueChange}\n />\n )\n}\n\ninterface GameSelectProps {\n groups?: string[]\n value?: string[]\n onChange?: (value: string[]) => void\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { groups, onChange, ...rest } = props\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.enums.gameIds(groups || []),\n queryFn: () =>\n ky\n .get<{\n list: {\n id: string\n name: string\n }[]\n }>(`/api/enum/game_group/get_game_ids?game_groups=${groups?.join(',')}`)\n .then(response => response?.list),\n enabled: !!groups?.length,\n })\n\n const options = data?.map((group: { id: string; name: string }) => ({ label: group.name, value: group.id }))\n\n const onValueChange = (value: string[]) => {\n if (last(value) === WILDCARD) {\n onChange?.([WILDCARD])\n } else if (first(value) === WILDCARD) {\n onChange?.(value.slice(1))\n } else {\n onChange?.(value)\n }\n }\n\n return (\n <Select\n {...rest}\n allowClear\n showSearch\n optionFilterProp=\"label\"\n mode=\"tags\"\n loading={isLoading}\n options={options}\n onChange={onValueChange}\n />\n )\n}\n\nexport const useUserModal = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const isCreateMode = mode === 'create'\n\n const title = isCreateMode ? t('User.createTitle') : t('User.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select\n allowClear\n showSearch\n mode=\"multiple\"\n loading={isRolesLoading}\n optionFilterProp=\"label\"\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </>\n )\n\n interface FormSchema {\n name: string\n roles: string[]\n }\n\n const onConfirm = async (values: FormSchema, extraValues: { id: string }) => {\n if (isCreateMode) {\n await create.mutateAsync(values)\n message.success(t('User.createSuccessfully'))\n } else {\n await update.mutateAsync({ ...values, id: extraValues?.id })\n message.success(t('User.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<FormSchema, { id: string }>({\n title,\n width: '50vw',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\nexport const useUserModalV2 = ({ mode, onSuccess }: { mode: 'create' | 'update'; onSuccess?: () => void }) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { data: roles, isLoading: isRolesLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const isCreateMode = mode === 'create'\n\n const title = isCreateMode ? t('User.createTitle') : t('User.updateTitle')\n\n interface FormSchema {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n }\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreateMode} />\n </Form.Item>\n <Form.List name=\"permissions\">\n {(fields, { add, remove }) => (\n <Row gutter={8}>\n <Col span={8} className=\"text-center mb-4\">\n <Text strong>{t('global.projectGroup')}</Text>\n </Col>\n <Col span={10} className=\"text-center mb-4\">\n <Text strong>{t('global.game')}</Text>\n </Col>\n <Col span={6} className=\"text-center mb-4\">\n <Text strong>{t('global.role')}</Text>\n </Col>\n {fields.map(field => (\n <Fragment key={field.key}>\n <Col span={8}>\n <Form.Item noStyle shouldUpdate>\n {({ setFieldValue }) => (\n <Form.Item name={[field.name, 'game_group']}>\n <GroupSelect\n onChange={() => {\n setFieldValue(['permissions', field.name, 'game_ids'], [])\n }}\n />\n </Form.Item>\n )}\n </Form.Item>\n </Col>\n <Col span={10}>\n <Form.Item\n noStyle\n shouldUpdate={(prevValues, nextValues) =>\n prevValues.permissions[field.name]?.game_group !== nextValues.permissions[field.name]?.game_group\n }\n >\n {({ getFieldValue }) => {\n const _groups = getFieldValue(['permissions', field.name, 'game_group'])\n\n return (\n <Form.Item\n name={[field.name, 'game_ids']}\n dependencies={[['permissions', field.name, 'game_group']]}\n rules={[{ required: _groups?.length, message: '请选择游戏' }]}\n >\n <GameSelect groups={_groups} />\n </Form.Item>\n )\n }}\n </Form.Item>\n </Col>\n <Col span={6}>\n <div className=\"flex\">\n <div className=\"flex-1\">\n <Form.Item\n name={[field.name, 'role']}\n rules={[\n { required: true, message: '请选择角色' },\n ({ getFieldValue }) => ({\n validator(_rule, value) {\n const items = getFieldValue('permissions') as FormSchema['permissions']\n const otherItems = items.filter((item, index) => !!item && index !== field.name)\n if (otherItems.some(item => item.role === value)) {\n return Promise.reject(new Error('请勿重复选择角色'))\n }\n return Promise.resolve()\n },\n }),\n ]}\n >\n <Select\n allowClear\n showSearch\n optionFilterProp=\"label\"\n loading={isRolesLoading}\n options={roles?.map(role => ({ label: role.name, value: role.name }))}\n />\n </Form.Item>\n </div>\n <div className=\"w-8 text-center\">\n <Form.Item>\n <MinusCircleOutlined\n onClick={() => {\n remove(field.name)\n }}\n />\n </Form.Item>\n </div>\n </div>\n </Col>\n </Fragment>\n ))}\n {fields.length === 0 && (\n <Col span={24}>\n <Empty className=\"mb-6\" />\n </Col>\n )}\n <Col span={24}>\n <Button block type=\"dashed\" onClick={() => add()}>\n {t('global.add')}\n </Button>\n </Col>\n </Row>\n )}\n </Form.List>\n </>\n )\n\n const onConfirm = async (values: FormSchema, extraValues: { id: string }) => {\n if (isCreateMode) {\n await create.mutateAsync(values)\n message.success(t('User.createSuccessfully'))\n } else {\n await update.mutateAsync({ ...values, id: extraValues?.id })\n message.success(t('User.updateSuccessfully'))\n }\n onSuccess?.()\n }\n\n return useFormModal<FormSchema, { id: string }>({\n title,\n width: '50vw',\n formProps: {\n autoComplete: 'off',\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n","export * from './role-hooks'\nexport * from './user-hooks'\n","import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Space, Tag } from 'antd'\nimport { type FC } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { Highlight } from '@/components/highlight'\nimport { PermissionButton } from '@/components/permissionButton'\nimport { QueryList, useQueryListStore } from '@/components/queryList'\nimport { useToolkitsStore, withContext } from '@/components/toolkitsProvider'\nimport { PermissionVersion } from '@/constants'\nimport { useTranslation } from '@/locale'\n\nimport { useUserModal, useUserModalV2 } from '../../hooks'\nimport { useRemoveUser } from '../../services'\nimport type { UserListItem } from '../../types'\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const remove = useRemoveUser()\n const { refetch } = useQueryListStore()\n const { permissionVersion } = useToolkitsStore(s => s)\n const isV1 = permissionVersion === PermissionVersion.V1\n const isV3 = permissionVersion === PermissionVersion.V3\n\n const { show: showCreateModal, modal: createModal } = useUserModal({\n mode: 'create',\n onSuccess() {\n refetch('user-list', { page: 1 })\n },\n })\n\n const { show: showUpdateModal, modal: updateModal } = useUserModal({\n mode: 'update',\n onSuccess() {\n refetch('user-list')\n },\n })\n\n const { show: showCreateModalV2, modal: createModalV2 } = useUserModalV2({\n mode: 'create',\n onSuccess() {\n refetch('user-list', { page: 1 })\n },\n })\n\n const { show: showUpdateModalV2, modal: updateModalV2 } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch('user-list')\n },\n })\n\n const columns = (\n [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n render(value: string, record) {\n if (isV3) {\n return <Link to={`./${record.id}`}>{value}</Link>\n }\n return value\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n (isV1 || isV3) && {\n title: t('global.role'),\n dataIndex: 'roles',\n key: 'roles',\n width: '40%',\n render(value: string[]) {\n return (\n <Row gutter={[4, 4]}>\n {(value || []).map((item: string) => (\n <Col key={item}>\n {item === 'root' ? (\n <Tag color=\"#f50\">{item}</Tag>\n ) : (\n <Tag color=\"#ff5a00\">\n <Link to={`../role/${item}`}>{item}</Link>\n </Tag>\n )}\n </Col>\n ))}\n </Row>\n )\n },\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'Ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n const { name, permissions, roles, id } = record\n return (\n <Space>\n <PermissionButton\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n if (isV3) {\n showUpdateModalV2({\n initialValues: {\n name,\n permissions,\n },\n extraValues: {\n id,\n },\n })\n } else {\n showUpdateModal({\n initialValues: {\n name,\n roles,\n },\n extraValues: {\n id,\n },\n })\n }\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('User.deleteTitle'),\n content: <Highlight texts={[name]}>{t('User.deleteContent', { user: name })}</Highlight>,\n async onOk() {\n await remove.mutateAsync({\n id,\n name,\n })\n refetch('user-list')\n message.success(t('User.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n )\n },\n },\n ] as TableColumnsType<UserListItem>\n ).filter(Boolean)\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n if (isV3) {\n showCreateModalV2()\n } else {\n showCreateModal()\n }\n }}\n >\n {t('User.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, { name?: string }, { List: UserListItem[]; Total: number }>\n identifier=\"user-list\"\n code=\"100001\"\n request={{\n url: '/api/usystem/user/list',\n method: 'GET',\n }}\n rowKey=\"id\"\n columns={columns}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n renderForm={\n isV3\n ? form => (\n <Form form={form}>\n <Form.Item label=\"名称\" name=\"name\">\n <Input />\n </Form.Item>\n </Form>\n )\n : undefined\n }\n />\n </Card>\n {createModal}\n {updateModal}\n {createModalV2}\n {updateModalV2}\n </>\n )\n}\n\nexport default withContext(UserList, { isGlobal: true })\n","import { useQuery } from '@tanstack/react-query'\nimport { App, Breadcrumb, Card, Descriptions, Table, Tag } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\n\nimport { PermissionButton } from '@/components/permissionButton'\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { WILDCARD } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\nimport { useGames, usePermission } from '@/services'\n\nimport { useUserModalV2 } from '../../hooks'\nimport type { UserListItem } from '../../types'\n\nconst UserDetail = () => {\n const params = useParams<'id'>()\n const { t } = useTranslation()\n const { gameApiV2 } = useToolkitsStore()\n const ky = useKy()\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: queryKeys.users.detail(params.id || ''),\n queryFn: () => ky.get<UserListItem>(`/api/usystem/user/info?id=${params.id}`),\n enabled: !!params.id,\n })\n const { data: games } = useGames()\n const { data: roleViewable } = usePermission('200005')\n\n const { show, modal } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch()\n },\n })\n\n const columns = [\n {\n key: 'group',\n title: t('global.projectGroup'),\n dataIndex: 'game_group',\n render(value: string[]) {\n return value.map(item => {\n return <Tag key={item}>{item === WILDCARD ? '通用' : item}</Tag>\n })\n },\n },\n {\n key: 'game',\n title: t('global.game'),\n dataIndex: 'game_ids',\n render(value: string[]) {\n return value.map(item => {\n const matchedGame = games?.find(game => String(gameApiV2 ? game.game_id : game.id) === item)\n return <Tag key={item}>{matchedGame?.name ?? (item === WILDCARD ? '通用' : item)}</Tag>\n })\n },\n },\n {\n key: 'role',\n title: t('global.role'),\n dataIndex: 'role',\n render(value: string) {\n return roleViewable ? (\n <Link to={`../../role/${value}`} relative=\"path\">\n {value}\n </Link>\n ) : (\n value\n )\n },\n },\n ]\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: '1.5rem' }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.user')}\n </Link>\n ),\n },\n {\n key: '2',\n title: '用户详情',\n },\n ]}\n />\n <Card\n title=\"用户详情\"\n loading={isLoading}\n extra={\n <PermissionButton\n code=\"100003\"\n onClick={() => {\n show({\n initialValues: {\n name: data?.name,\n permissions: data?.permissions,\n },\n extraValues: {\n id: data!.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n }\n >\n <Descriptions bordered column={1}>\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.role')}>\n <Table rowKey=\"role\" columns={columns} dataSource={data?.permissions} pagination={false} />\n </Descriptions.Item>\n </Descriptions>\n </Card>\n {modal}\n </>\n )\n}\n\nexport default UserDetail\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Space } from 'antd'\nimport { Link } from 'react-router-dom'\n\nimport { Highlight } from '@/components/highlight'\nimport { PermissionButton } from '@/components/permissionButton'\nimport { QueryList } from '@/components/queryList'\nimport { useQueryListStore } from '@/components/queryList/stores'\nimport { useToolkitsStore, withContext } from '@/components/toolkitsProvider'\nimport { PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nimport { useRoleModal } from '../../hooks'\nimport { useRemoveRole } from '../../services'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../types'\n\nconst RoleList = () => {\n const { modal, message } = App.useApp()\n const { data: viewable } = usePermission('200005')\n const { t } = useTranslation()\n const { permissionVersion } = useToolkitsStore(s => s)\n const { refetch } = useQueryListStore()\n const ky = useKy()\n\n const { show: showCreateModal, modal: createModal } = useRoleModal({\n mode: 'create',\n onSuccess() {\n refetch('role-list', { page: 1 })\n },\n })\n const { show: showUpdateModal, modal: updateModal } = useRoleModal({\n mode: 'update',\n onSuccess() {\n refetch('role-list')\n },\n })\n\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const data = await ky.get<RoleV1 | RoleV2>(\n `/api/usystem/role/info${permissionVersion === PermissionVersion.V2 ? 'V2' : ''}?name=${record.name}`,\n )\n\n showUpdateModal({\n initialValues: {\n permissions: data.permissions,\n name: data.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <PermissionButton\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('Role.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('Role.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.mutate({\n id: record.id,\n name: record.name,\n })\n\n refetch('role-list')\n\n message.success(t('Role.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <PermissionButton\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('Role.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n identifier=\"role-list\"\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n request={{\n url: '/api/usystem/role/list',\n method: 'GET',\n }}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default withContext(RoleList, {\n isGlobal: true,\n})\n","export { default as PermissionList } from './permissionList'\n","import { App, Breadcrumb, Card, Descriptions, Divider, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\n\nimport { PermissionButton } from '@/components/permissionButton'\nimport { withContext } from '@/components/toolkitsProvider'\nimport { useTranslation } from '@/locale'\n\nimport { PermissionList } from '../../components'\nimport { useRoleModal } from '../../hooks'\nimport { useRole } from '../../services'\n\nconst RoleDetail = () => {\n const params = useParams()\n const { t } = useTranslation()\n const { data, isLoading, refetch } = useRole(params.name as string)\n\n const { show, modal } = useRoleModal({\n mode: 'update',\n onSuccess() {\n refetch()\n },\n })\n\n const handleUpdateBtnClick = async () => {\n show({\n initialValues: {\n permissions: data?.permissions,\n name: data?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data!.id,\n },\n })\n }\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: '1.5rem' }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.role')}\n </Link>\n ),\n },\n {\n key: '2',\n title: t('RoleDetail.title'),\n },\n ]}\n />\n <Card\n title={t('RoleDetail.title')}\n extra={\n <PermissionButton code=\"200003\" onClick={handleUpdateBtnClick}>\n {t('global.update')}\n </PermissionButton>\n }\n >\n <Skeleton loading={isLoading}>\n <Descriptions column={2} layout=\"vertical\" className=\"mb-6\">\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.creationTime')}>{data?.ctime}</Descriptions.Item>\n </Descriptions>\n <Divider />\n <PermissionList readonly value={data?.permissions} />\n </Skeleton>\n </Card>\n {modal}\n </>\n )\n}\n\nexport default withContext(RoleDetail, { isGlobal: true })\n","import { lazy } from 'react'\nimport { Route, Routes } from 'react-router-dom'\n\nconst MenuItemList = lazy(() => import('./pages/menuItemList'))\nconst CreateMenuItem = lazy(() => import('./pages/createMenuItem'))\nconst UpdateMenuItem = lazy(() => import('./pages/updateMenuItem'))\n\nexport default (\n <Routes>\n <Route index element={<MenuItemList />} />\n <Route path=\"create\" element={<CreateMenuItem />} />\n <Route path=\"update/:id\" element={<UpdateMenuItem />} />\n </Routes>\n)\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./pages/userList'))\nconst UserDetail = lazy(() => import('./pages/userDetail'))\nconst RoleList = lazy(() => import('./pages/roleList'))\nconst RoleDetail = lazy(() => import('./pages/roleDetail'))\n\nexport default (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"user/:id\" element={<UserDetail />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n)\n"]}