react-toolkits 2.4.11 → 2.4.13
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.
- package/CHANGELOG.md +12 -0
- package/lib/index.css +1 -1
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +53 -53
- package/lib/index.js +15 -15
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/locale/context.ts","../src/components/locale/zh_CN.ts","../src/components/locale/hooks.ts","../src/components/locale/index.tsx","../src/components/contextProvider/constants.ts","../src/components/contextProvider/context.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/filterFormWrapper/index.tsx","../src/components/logo/Logo.tsx","../src/components/logo/index.tsx","../src/pages/signIn/index.tsx","../src/hooks/token.ts","../src/utils/request.ts","../src/utils/storage.ts","../src/components/gameSelect/store.ts","../src/components/gameSelect/GameSelect.tsx","../src/components/gameSelect/index.ts","../src/components/highlight/index.tsx","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.tsx","../src/components/queryList/store.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/hooks/modal.tsx","../src/hooks/formModal.tsx","../src/features/permission/hooks/index.ts","../src/features/permission/components/permissionCollapse/index.tsx","../src/features/permission/components/permissionListV1/index.tsx","../src/features/permission/components/permissionListV2/index.tsx","../src/features/permission/components/permissionList/index.tsx","../src/features/permission/types/index.ts","../src/features/permission/index.ts","../src/pages/permission/userList/index.tsx","../src/pages/permission/roleList/index.tsx","../src/pages/permission/roleDetail/index.tsx","../src/index.ts","../src/components/dynamicTags/index.tsx","../src/components/expandableParagraph/index.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/layout/Layout.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/store.ts","../src/components/navMenu/utils.tsx","../src/components/userWidget/index.tsx","../src/components/layout/ContentWrapper.tsx","../src/components/layout/store.ts","../src/components/permissionGuard/index.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx"],"names":["LocaleContext","context_default","init_context","__esmMin","createContext","locale","zh_CN_default","init_zh_CN","useTranslation","localeFromContext","useContext","useMemo","key","data","has","template","get","init_hooks","LocaleProvider","locale_default","init_locale","props","children","memoizedContextValue","jsx","defaultState","init_constants","ToolkitsContext","useToolkitsContext","contextStore","ContextProvider","Provider_default","init_Provider","createStore","rest","config","childNode","useEffect","init_contextProvider","FilterFormWrapper","filterFormWrapper_default","init_filterFormWrapper","extras","isConfirming","onConfirm","onReset","buttonsAlign","hideResetButton","t","colorFillAlter","lineWidth","lineType","colorBorder","borderRadiusLG","theme","jsxs","Space","Button","item","Fragment","Logo","Logo_default","init_Logo","logoUrl","init_logo","NotRegisteredFlag","SSO_URL","useRedirectToSignIn","SignIn","signIn_default","init_signIn","init_token","init_request","init_background","clearToken","useTokenStore","state","navigate","useNavigate","signInUrl","notRegistered","location","useLocation","queryParams","token","setToken","signInPageTitle","localeDropdownMenu","signInSuccessRedirectUrl","idaasRedirectUrl","isLoading","useSWRImmutable","url","request","Spin","hashMode","path","Navigate","background_default","Alert","Typography","Form","Input","Divider","useTokenValidation","skip","usePermissionApiV2","redirectToSignIn","error","RequestError","create","persist","set","store","jwtDecode","opts","_opts","body","params","responseType","isGlobal","parsed","qs","options","queryString","headers","game","useGameStore","isJsonBody","requestOpts","response","responseInterceptor","json","pick","init_gameSelect","__publicField","mixedStorage","init_storage","name","value","init_store","id","initialized","refetchGames","matchedGame","switching","createJSONStorage","Text","GameSelect","GameSelect_default","init_GameSelect","filter","games","setGame","onGameChange","Select","renderToString","node","container","root","createRoot","resolve","flushSync","splitByTags","Highlight","highlight_default","init_highlight","str","regex","part","texts","htmlString","setHtmlString","useState","result","text","index","usePermissions","codes","isValidating","useSWR","acc","curr","usePermission","code","init_permission","PermissionButton","PermissionButton_default","init_PermissionButton","showLoading","disabled","restProps","Tooltip","init_permissionButton","useQueryListStore","route","payload","force","prevKey","nextPayload","nextKey","unstable_serialize","mutate","page","QueryListAction","InternalQueryList","QueryList","QueryList_default","init_QueryList","ref","internalProps","onePage","method","defaultSize","refreshInterval","tableExtra","form","extra","renderForm","afterSuccess","getTotal","getDataSource","tableProps","notification","App","_form","accessible","action","useRef","originalData","isValid","setIsValid","keyMap","getPayload","refetch","size","formValue","_body","_params","_headers","newHeaders","serializedKey","shouldPoll","dataSource","total","pagination","currentPage","currentSize","timer","useImperativeHandle","Result","formRenderer","cloneElement","e","extraRenderer","Table","forwardRef","init_queryList","useModal","content","modalProps","uuid","modalStore","useModalStore","open","confirmLoading","setConfirmLoading","isRenderFunction","show","hide","internalModal","Modal","init_modal","useFormModal","formProps","internalExtraValues","setInternalExtraValues","internalForm","hanldeConfirm","values","afterClose","modal","operation","initialValues","extraValues","init_formModal","useAllPermissions","useAllPermissionsV2","useAllRoles","useRole","useCreateRole","useSWRMutation","arg","useUpdateRole","useRemoveRole","useCreateUser","useUpdateUser","useRemoveUser","PermissionCollapse","permissionCollapse_default","init_permissionCollapse","permissions","readonly","expand","onChange","activeKey","setActiveKey","checkedMap","setCheckedMap","internalValue","setInternalValue","onCollapseChange","useCallback","getCheckedValue","checkedValue","tempValue","onCheckChange","category","Collapse","Checkbox","permission","Row","Col","PermissionListV1","permissionListV1_default","init_permissionListV1","Skeleton","Option","PermissionListV2","permissionListV2_default","init_permissionListV2","gameList","setGameList","globalPermissions","gamePermissions","list","addGame","prev","removeGame","_","i","newValue","Card","selectedValue","pev","temp","gameId","Empty","PermissionList","permissionList_default","init_permissionList","init_types","userList_exports","__export","userList_default","UserList","init_userList","isCreate","message","jump","roles","update","title","role","produce","draft","remove","showCreateModal","createModal","showUpdateModal","updateModal","columns","Tag","Link","UserAddOutlined","roleList_exports","roleList_default","RoleList","init_roleList","match","viewable","handleUpdateBtnClick","record","UsergroupAddOutlined","roleDetail_exports","roleDetail_default","RoleDetail","init_roleDetail","useParams","Breadcrumb","Descriptions","DynamicTags","initialTags","addable","removable","addCallback","removeCallback","tags","setTags","inputVisible","setInputVisible","inputValue","setInputValue","editInputIndex","setEditInputIndex","editInputValue","setEditInputValue","inputRef","editInputRef","handleClose","removedTag","newTags","tag","showInput","handleInputChange","handleInputConfirm","handleEditInputChange","handleEditInputConfirm","tagInputStyle","tagPlusStyle","PlusOutlined","dynamicTags_default","ExpandableParagraph","expanded","setExpanded","info","expandableParagraph_default","InfiniteList","getRowKey","hasMore","transformArg","formValues","setFormValues","getKey","pageIndex","previousPageData","rowKey","args","setSize","isListValidating","useSWRInfinite","isLoadingMore","isReachingEnd","isEmpty","loadMore","InfiniteList_default","useNavStore","keys","withLink","label","checkChildren","child","transformItems","items","isPass","flatItems","keypath","NavMenu","memo","flattenItems","internalItems","openKeys","selectedKeys","setOpenKeys","setSelectedKeys","onOpenChange","lastOpenKey","Menu","NavMenu_default","UserWidget","getUser","user","LogoutOutlined","Dropdown","UserOutlined","userWidget_default","Antd","ContentWrapper","hideGameSelect","ContentWrapper_default","useLayoutStore","collapsed","Header","Sider","Content","Layout","headerExtra","colorBgContainer","appTitle","setCollapsed","MenuUnfoldOutlined","MenuFoldOutlined","Suspense","Layout_default","PermissionGuard","permissionGuard_default","NotFound","notFoundRedirectUrl","notFound_default","OperationLogList","dayjs","operationLogList_default","lazy","PermissionRoutes","Routes","Route","permission_default"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext } from 'react'\nimport type { Locale } from '.'\n\nexport type LocaleContextProps = Locale\n\nconst LocaleContext = createContext<LocaleContextProps | undefined>(undefined)\n\nexport default LocaleContext\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: '无权限,请联系管理员。',\n name: '名称',\n creationTime: '创建时间',\n operation: '操作',\n update: '更新',\n edit: '编辑',\n delete: '删除',\n selectAll: '全选',\n game: '游戏',\n user: '用户',\n role: '角色',\n username: '用户名',\n password: '密码',\n label: '标签',\n method: '方法',\n route: '路由',\n request: '请求',\n response: '响应',\n add: '添加',\n signIn: '登录',\n },\n SignIn: {\n title: '登录方式',\n thirdParty: '第三方登录',\n signInWithIDass: 'IDass 登录',\n notRegistered: '您还未在平台注册,请联系管理员',\n welcome: '欢迎',\n },\n NotFound: {\n subTitle: '访问的页面不存在',\n buttonText: '返回首页',\n },\n FilterFormWrapper: {\n confirmText: '查询',\n resetText: '重置',\n },\n FormModal: {\n confirmText: '确认',\n cancelText: '取消',\n },\n GameSelect: {\n label: '当前游戏',\n placeholder: '请选择游戏',\n },\n RequireGame: {\n description: '请选择游戏',\n },\n UserWidget: {\n signOutText: '登出',\n },\n UserList: {\n createTitle: '创建用户',\n createSuccessfully: '用户创建成功',\n updateTitle: '更新用户',\n updateSuccessfully: '用户更新成功',\n deleteTitle: '删除用户',\n deleteContent: '确定要删除用户 <%= user %> 吗?',\n deleteSuccessfully: '用户删除成功',\n },\n RoleList: {\n createTitle: '创建角色',\n createSuccessfully: '角色创建成功',\n updateTitle: '更新角色',\n updateSuccessfully: '角色更新成功',\n deleteTitle: '删除角色',\n deleteContent: '确定要删除角色 <%= role %> 吗?',\n deleteSuccessfully: '角色删除成功',\n },\n PermissionList: {\n failedDescription: '获取权限列表失败',\n baseSectionTitle: '平台基础权限',\n gameSectionTitle: '游戏权限',\n gameSectionDescription: '请先选择游戏',\n gameSelectPlaceholder: '请先选择游戏',\n removeText: '移除',\n addText: '添加游戏权限',\n },\n RoleDetail: {\n title: '角色详情',\n },\n InfiniteList: {\n loadingText: '加载中',\n reachEndText: '已经到底了',\n loadMoreText: '加载更多',\n },\n}\n\nexport default locale\n","import { get, has, template } from 'lodash-es'\nimport { useContext, useMemo } from 'react'\nimport type { Locale } from '.'\nimport type { LocaleContextProps } from './context'\nimport LocaleContext from './context'\nimport defaultLocale from './zh_CN'\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 localeFromContext = useContext<LocaleContextProps | undefined>(LocaleContext)\n\n const locale = {\n ...defaultLocale,\n ...localeFromContext,\n }\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","import type { FC, PropsWithChildren } from 'react'\nimport { useMemo } from 'react'\nimport LocaleContext from './context'\n\nexport 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 }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n notRegistered: 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 UserList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n RoleList: {\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\nexport interface LocaleProviderProps {\n locale: Locale\n}\n\nconst LocaleProvider: FC<PropsWithChildren<LocaleProviderProps>> = props => {\n const { locale = {} as Locale, children } = props\n const memoizedContextValue = useMemo(() => ({ ...locale }), [locale])\n\n return <LocaleContext.Provider value={memoizedContextValue}>{children}</LocaleContext.Provider>\n}\n\nexport default LocaleProvider\n","import type { ContextState } from './context'\n\nexport const defaultState: ContextState = {\n appTitle: '',\n usePermissionApiV2: false,\n signInUrl: '',\n signInSuccessRedirectUrl: '/',\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ReactNode } from 'react'\nimport { createContext } from 'react'\nimport type { RequestOptions } from '../../utils/request'\nimport type { Locale } from '../locale'\nimport { defaultState } from './constants'\n\nexport interface ContextState {\n appTitle: ReactNode\n signInPageTitle?: ReactNode\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n locale?: Locale\n localeDropdownMenu?: ReactNode\n signInUrl: string // 登录地址\n signInSuccessRedirectUrl: string // 登录成功后的重定向地址\n notFoundRedirectUrl?: string // 404 重定向地址\n responseInterceptor?: (response: Response, opts: RequestOptions) => Promise<any>\n}\n\nconst ToolkitsContext = createContext<ContextState>(defaultState)\n\nexport default ToolkitsContext\n","import type { FC, PropsWithChildren } from 'react'\nimport { useContext, useEffect } from 'react'\nimport { createStore } from 'zustand'\nimport LocaleProvider from '../locale'\nimport { defaultState } from './constants'\nimport type { ContextState } from './context'\nimport ToolkitsContext from './context'\n\nexport const contextStore = createStore<ContextState>(() => defaultState)\n\n// 最接近的祖先 ContextProvider 内包含的上下文。\nexport function useToolkitsContext() {\n return useContext(ToolkitsContext)\n}\n\nconst ContextProvider: FC<PropsWithChildren<Partial<ContextState>>> = props => {\n const { children, locale, ...rest } = props\n const parentConfig = useToolkitsContext()\n\n const config = {\n ...parentConfig,\n ...rest,\n }\n\n const childNode = locale ? <LocaleProvider locale={locale}>{children}</LocaleProvider> : children\n\n useEffect(() => {\n contextStore.setState(config)\n }, [config])\n\n return <ToolkitsContext.Provider value={config}>{childNode}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","import type { ContextState } from './context'\nimport ContextProvider, { contextStore, useToolkitsContext } from './Provider'\n\nexport { ContextProvider, contextStore, useToolkitsContext }\nexport type { ContextState }\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\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 hideResetButton?: boolean\n}\n\nconst FilterFormWrapper = (props: FilterFormWrapperProps) => {\n const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = 'left', hideResetButton } = 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\" loading={isConfirming} onClick={onConfirm}>\n {t('FilterFormWrapper.confirmText')}\n </Button>\n {extras?.map(item => <Fragment key={item.key}>{item.children}</Fragment>)}\n {!hideResetButton && <Button onClick={onReset}>{t('FilterFormWrapper.resetText')}</Button>}\n </Space>\n </div>\n </div>\n </div>\n )\n}\n\nexport default FilterFormWrapper\n","import type { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react'\nimport logoUrl from './logo.png'\n\nexport type LogoProps = Omit<DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src' | 'alt'>\n\nconst Logo: FC<LogoProps> = props => {\n return <img src={logoUrl} alt=\"logo\" {...props} />\n}\n\nexport default Logo\n","export { default as Logo } from './Logo'\nexport type { LogoProps } from './Logo'\n","import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport { type FC } from 'react'\nimport { Navigate, useLocation, useNavigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\nconst NotRegisteredFlag = 'notRegistered'\n\nconst SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const useRedirectToSignIn = () => {\n const clearToken = useTokenStore(state => state.clearToken)\n const navigate = useNavigate()\n const { signInUrl } = useToolkitsContext()\n\n return (notRegistered?: boolean) => {\n clearToken()\n navigate(signInUrl, { state: { [NotRegisteredFlag]: notRegistered } })\n }\n}\n\nconst SignIn: FC = () => {\n const location = useLocation()\n // 当路由模式为 hash 模式时,Idaas 重定向会忽略 hash 部分,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken } = useTokenStore()\n const { t } = useTranslation()\n const { signInPageTitle, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\n const idaasRedirectUrl = encodeURIComponent(window.location.href)\n\n const { isLoading } = useSWRImmutable(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => request<{ token: string }>(url),\n {\n onSuccess: data => {\n setToken(data.data.token)\n },\n },\n )\n\n if (isLoading) {\n return (\n <div className=\"w-screen h-screen flex justify-center items-center\">\n <Spin />\n </div>\n )\n }\n\n if (token) {\n const hashMode = !!window.location.hash\n const path = signInSuccessRedirectUrl\n\n if (!hashMode) {\n return <Navigate replace to={path} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n {localeDropdownMenu && <div className=\"absolute top-16 right-16 z-10\">{localeDropdownMenu}</div>}\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {signInPageTitle}\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {location.state?.[NotRegisteredFlag] && (\n <Alert banner closable message={t('SignIn.notRegistered')} type=\"error\" />\n )}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button block shape=\"round\" href={`${SSO_URL}/login?service=${idaasRedirectUrl}`} target=\"_self\">\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n","import { jwtDecode } from 'jwt-decode'\nimport useSWRImmutable from 'swr/immutable'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { useRedirectToSignIn } from '../pages/signIn'\nimport { request, RequestError } from '../utils/request'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenState {\n token: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n clearToken: () => void\n}\n\nexport const useTokenStore = create<TokenState>()(\n persist(\n (set, get, store) => ({\n token: '',\n getUser: () => {\n try {\n return jwtDecode(get().token) as UserInfo\n } catch (_) {\n return null\n }\n },\n setToken: token => set({ token }),\n clearToken: () => {\n get().setToken('')\n store.persist.clearStorage()\n },\n }),\n {\n name: 'token',\n partialize: state => ({ token: state.token }),\n },\n ),\n)\n\nexport function useTokenValidation(skip = false) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const redirectToSignIn = useRedirectToSignIn()\n\n return useSWRImmutable(\n !skip ? (usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check') : null,\n (url: string) =>\n request(url, {\n method: 'POST',\n body: {\n permissions: ['100001'],\n },\n isGlobal: true,\n }),\n {\n onError: error => {\n if (error instanceof RequestError) {\n if (error.status === 401) {\n redirectToSignIn()\n } else if (error.status === 412) {\n redirectToSignIn(true)\n }\n }\n },\n },\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { pick } from 'lodash-es'\nimport type { StringifyOptions } from 'query-string'\nimport qs from 'query-string'\nimport { contextStore } from '../components/contextProvider'\nimport { useGameStore } from '../components/gameSelect'\nimport { useTokenStore } from '../hooks/token'\n\nexport class RequestError extends Error {\n status!: number\n code?: number\n\n constructor(opts: { message?: string; status: number; code?: number }) {\n super(opts?.message)\n this.status = opts.status\n this.code = opts.code\n }\n}\n\ntype JsonResponse<T> = (\n | {\n code: number\n status?: never\n }\n | {\n code?: never\n status: number\n }\n) & {\n data: T\n msg: string\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n body?: Record<string | number, any> | FormData | null\n params?: Record<string | number, any> | URLSearchParams | null\n responseType?: 'json' | 'blob' | 'text'\n isGlobal?: boolean\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any>(url: string, opts: RequestOptions = {}): Promise<RequestResponse<T>> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, isGlobal, ...rest } = _opts\n\n // 处理查询参数,如果 url 中已经有查询参数,需要合并。\n const parsed = qs.parseUrl(url)\n const queryParams = Object.assign({}, parsed.query, params)\n const options: StringifyOptions = {\n skipNull: true,\n skipEmptyString: true,\n strict: true,\n encode: true,\n }\n const queryString = qs.stringify(queryParams, options)\n url = queryString ? `${parsed.url}?${queryString}` : url\n\n const headers = new Headers(_opts.headers)\n\n const token = useTokenStore?.getState()?.token\n\n if (token) {\n headers.set('Authorization', `Bearer ${token}`)\n }\n\n // TODO: 把自动注入 App-ID 移除掉。\n if (contextStore.getState().usePermissionApiV2) {\n if (isGlobal) {\n headers.set('App-ID', 'global')\n } else {\n const game = useGameStore.getState().game\n if (game) {\n headers.set('App-ID', String(game.game_id))\n }\n }\n }\n\n if (responseType === 'blob') {\n headers.append('Accept', 'application/octet-stream')\n } else if (responseType === 'json') {\n headers.append('Accept', 'application/json')\n }\n\n const isJsonBody = !!(body && typeof body === 'object' && !(body instanceof FormData))\n\n if (isJsonBody) {\n headers.set('Content-Type', 'application/json')\n }\n\n const requestOpts = Object.assign(rest, {\n headers,\n body: isJsonBody ? JSON.stringify(body) : body,\n }) as RequestInit\n\n const response = await fetch(url, requestOpts)\n\n if (!response.ok) {\n throw new RequestError({ status: response.status })\n }\n\n const responseInterceptor = contextStore.getState().responseInterceptor\n\n if (typeof responseInterceptor === 'function') {\n return await responseInterceptor(response, _opts)\n } else {\n let data: T\n\n if (responseType === 'blob') {\n data = (await response.blob()) as T\n } else if (responseType === 'json') {\n const json = (await response.json()) as JsonResponse<T>\n if (json.code === 0 || json.code === 200 || json.status === 0) {\n data = json.data\n } else {\n throw new RequestError({\n code: json.code,\n status: response.status,\n message: json.msg,\n })\n }\n } else {\n data = (await response.text()) as T\n }\n\n return {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n }\n }\n}\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: async (name: string) => {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { request } from '../../utils/request'\nimport { mixedStorage } from '../../utils/storage'\nimport type { Game, GameState } from './types'\n\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n switching: false,\n game: null,\n games: [],\n async setGame(id) {\n const { initialized, refetchGames } = get()\n\n if (!initialized) {\n await refetchGames()\n }\n\n const matchedGame = (get().games ?? []).find(item => item.game_id === id)\n set({ game: matchedGame ?? null })\n },\n async refetchGames() {\n if (!get().isLoading) {\n try {\n set({ isLoading: true })\n const response = await request<{ list: Game[] }>('/api/game/list')\n set({ games: response.data?.list ?? [] })\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n }\n },\n setSwitching: (switching: boolean) => set({ switching }),\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './store'\nimport type { Game } from './types'\n\nconst { Text } = Typography\n\nexport interface GameSelectProps {\n filter?: (game: Game) => boolean\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { filter } = props\n const { t } = useTranslation()\n const { game, games, isLoading, refetchGames, setGame } = useGameStore()\n\n useEffect(() => {\n refetchGames()\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: item.game_id,\n }))\n\n const onGameChange = async (id: number) => {\n setGame(id)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<number>\n showSearch\n optionFilterProp=\"label\"\n value={game?.game_id}\n placeholder={t('GameSelect.placeholder')}\n loading={isLoading}\n style={{ width: '200px' }}\n options={options}\n onChange={onGameChange}\n />\n </Space>\n )\n}\n\nexport default GameSelect\n","export { default as GameSelect } from './GameSelect'\nexport type { GameSelectProps } from './GameSelect'\nexport { useGameStore } from './store'\nexport type { Game, GameState } from './types'\n","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 HighlightTextsProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightTextsProps) => {\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","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], isGlobal?: boolean) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const { data, isValidating, isLoading } = useSWR(\n codes.length > 0 ? [usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check', codes] : null,\n ([url]) =>\n request<PermissionCheckResult>(url, {\n method: 'POST',\n body: {\n permissions: codes,\n },\n isGlobal,\n }).then(response => {\n if (response.data?.has_all) {\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = true\n return acc\n },\n {} as Record<string, boolean>,\n )\n }\n\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = (response.data as Record<string, boolean>)?.[curr] ?? false\n return acc\n },\n {} as Record<string, boolean>,\n )\n }),\n {\n revalidateOnFocus: false,\n },\n )\n\n return { data, isValidating, isLoading }\n}\n\nexport function usePermission(code: string | undefined, isGlobal?: boolean) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], isGlobal)\n\n if (code === undefined) {\n return {\n accessible: true,\n isValidating: false,\n isLoading: false,\n }\n }\n\n return {\n accessible: data?.[code] ?? false,\n isValidating,\n isLoading,\n }\n}\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { useTranslation } from '../locale'\nimport { usePermissions } from '../../hooks/permission'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code: string | string[]\n showLoading?: boolean\n isGlobal?: boolean\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, isGlobal, disabled, ...restProps } = props\n const { data, isLoading } = usePermissions(Array.isArray(code) ? code : [code], isGlobal)\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 if (!Object.values(data ?? {})?.some(Boolean)) {\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n }\n\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n}\n\nexport default PermissionButton\n","export { default as PermissionButton } from './PermissionButton'\nexport type { PermissionButtonProps } from './PermissionButton'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate, unstable_serialize } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\n\ninterface QueryListState {\n keyMap: Map<string, string | null>\n payloadMap: Map<string, QueryListPayload>\n getPayload(route: string): QueryListPayload\n setPayload(route: string, payload: QueryListPayload): void\n refetch(route: string, payload: QueryListPayload, force?: boolean): void\n mutate<Data = any, T = Data>(\n route: string,\n data?: T | Promise<T> | MutatorCallback<T>,\n opts?: boolean | MutatorOptions<Data, T>,\n ): Promise<T | undefined>\n jump(route: string, page?: number, force?: boolean): void\n}\n\nexport const useQueryListStore = create<QueryListState>((set, get) => ({\n keyMap: new Map(),\n payloadMap: new Map(),\n getPayload(route) {\n return get().payloadMap.get(route) ?? { page: 1 }\n },\n setPayload(route, payload) {\n set(state => ({\n payloadMap: new Map(state.payloadMap).set(route, payload),\n }))\n },\n refetch(route, payload, force = true) {\n const prevKey = get().keyMap.get(route)\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n const nextKey = unstable_serialize(nextPayload)\n\n if (prevKey === nextKey) {\n get().mutate(route, force)\n } else {\n get().setPayload(route, nextPayload)\n }\n },\n mutate(route, data, opts) {\n const key = get().keyMap.get(route)\n return mutate(key, data, opts)\n },\n // 不传 page 参数时,刷新当前页\n jump(route, page, force = true) {\n get().refetch(route, { page: page ?? get().getPayload(route).page }, force)\n },\n}))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { App, Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport useSWR, { unstable_serialize } from 'swr'\nimport { usePermission } from '../../hooks/permission'\nimport type { RequestOptions } from '../../utils/request'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport FilterFormWrapper from '../filterFormWrapper'\nimport { useGameStore } from '../gameSelect'\nimport { useTranslation } from '../locale'\nimport { useQueryListStore } from './store'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<FormValues = any> {\n page?: number\n size?: number\n formValue?: FormValues\n}\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, Value, Response> {\n response: Response | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Response = any>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'hideResetButton'> {\n code?: string\n isGlobal?: boolean\n route: string\n method?: 'GET' | 'POST'\n refreshInterval?: number\n // 无分页\n onePage?: boolean\n defaultSize?: number\n headers?: RequestOptions['headers']\n body?: RequestOptions['body'] | ((payload: QueryListPayload<Value>) => RequestOptions['body'])\n params?: RequestOptions['params'] | ((payload: QueryListPayload<Value>) => RequestOptions['params'])\n tableExtra?: ReactNode | ((form: FormInstance<Value>) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n extra?: (opts: { form: FormInstance<Value>; data: Response | undefined }) => ReactNode\n afterSuccess?: (action: QueryListAction, response: Response) => void\n getTotal?: (response: Response | undefined) => number | undefined\n getDataSource?: (response: Response | undefined, form: FormInstance<Value>) => Item[] | undefined\n}\n\nconst InternalQueryList = <\n Item extends AnyObject = AnyObject,\n Value = any,\n // 默认接口返回值类型为 ListResponse<Item>,当符合时无需设置 getTotal、getDataSource 就可以让组件正确获取 total 与 dataSource。\n Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response>,\n ref: Ref<QueryListRef<Item, Value, Response>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (response: Response | undefined) => (response as ListResponse<Item>)?.total,\n getDataSource: (response: Response | undefined) => (response as ListResponse<Item>)?.list,\n ...props,\n }\n\n const {\n route,\n code,\n headers,\n isGlobal,\n onePage,\n method,\n buttonsAlign,\n hideResetButton,\n defaultSize,\n refreshInterval,\n tableExtra,\n form,\n extra,\n renderForm,\n afterSuccess,\n body,\n params,\n getTotal,\n getDataSource,\n ...tableProps\n } = internalProps\n\n const { notification } = App.useApp()\n const { t } = useTranslation()\n const [_form] = Form.useForm<Value>(form)\n const { accessible, isLoading } = usePermission(code, isGlobal)\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const originalData = useRef<Response>()\n const { game } = useGameStore()\n const { usePermissionApiV2 } = useToolkitsContext()\n const [isValid, setIsValid] = useState(false)\n const { keyMap, getPayload, refetch } = useQueryListStore()\n const { page, size = defaultSize, formValue } = getPayload(route)\n const payload = { page, size, formValue }\n\n const _body = useMemo(() => {\n return typeof body === 'function'\n ? body(payload)\n : method === 'POST'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...body,\n }\n : undefined\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...params,\n }\n : undefined,\n [onePage, method, page, size, formValue, params],\n )\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set('App-ID', 'global')\n } else if (game) {\n newHeaders.set('App-ID', String(game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const key = useMemo(() => {\n if (!accessible || !isValid) {\n return null\n }\n\n const httpOption = {\n route,\n method,\n body: _body,\n params: _params,\n headers: _headers,\n }\n\n const serializedKey = unstable_serialize(httpOption)\n keyMap.set(route, serializedKey)\n return serializedKey\n }, [method, route, _body, _params, _headers, isValid, accessible])\n\n const shouldPoll = useRef(false)\n\n const { data, isValidating } = useSWR(\n key,\n async () => {\n const response = await request<Response>(route, {\n method,\n body: _body,\n params: _params,\n headers: _headers,\n })\n\n return response.data\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n refreshInterval: shouldPoll.current ? refreshInterval : 0,\n onSuccess(response) {\n shouldPoll.current = true\n afterSuccess?.(action.current, response)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n notification.error({\n message: '请求出错',\n description: error.message,\n })\n },\n },\n )\n\n const dataSource = useMemo(() => getDataSource(data, _form), [data, form, getDataSource])\n const total = useMemo(() => getTotal(data), [data, getTotal])\n\n const pagination = useMemo(\n () =>\n !onePage && {\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 refetch(route, {\n page: currentPage,\n size: currentSize,\n })\n },\n },\n [page, size, onePage, total],\n )\n\n const onConfirm = async () => {\n action.current = QueryListAction.Confirm\n try {\n await _form.validateFields()\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n const onReset = async () => {\n action.current = QueryListAction.Reset\n _form.resetFields()\n\n try {\n await _form.validateFields({ validateOnly: true })\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n useEffect(() => {\n // 在表单字段注册到 Form 实例前调用 validateFields 会得到错误的结果,所以需要延迟调用。\n const timer = setTimeout(async () => {\n try {\n _form.resetFields()\n const value = await _form.validateFields({ validateOnly: true })\n refetch(route, {\n page: 1,\n formValue: value,\n })\n setIsValid(true)\n } catch (err) {\n setIsValid(false)\n }\n }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [form, game])\n\n useImperativeHandle(ref, () => ({\n response: data,\n dataSource,\n form: _form,\n }))\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n const formRenderer = typeof renderForm === 'function' && (\n <FilterFormWrapper\n hideResetButton\n buttonsAlign={buttonsAlign}\n isConfirming={isValidating}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {cloneElement(renderForm(_form), {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onConfirm()\n }\n },\n })}\n </FilterFormWrapper>\n )\n\n const extraRenderer = extra && <div className=\"mt-2 mb-4\">{extra({ form: _form, data: originalData.current })}</div>\n\n return (\n <div>\n {formRenderer}\n {extraRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form) : tableExtra}\n <Table {...tableProps} dataSource={dataSource} loading={isValidating} pagination={pagination} />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Value extends object | undefined = undefined,\n Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response> & { ref?: Ref<QueryListRef<Item, Value, Response>> },\n) => ReactElement\n\nexport default QueryList\n","export { default as QueryList, QueryListAction } from './QueryList'\nexport type { QueryListProps, QueryListRef } from './QueryList'\nexport { useQueryListStore } from './store'\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n getOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n}\n\nexport const useModalStore = create<ModalState>((set, get) => ({\n open: new Map(),\n getOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({ open: new Map(get().open).set(uuid, true) })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n}))\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}\n\nlet id = 0\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, ...modalProps } = props\n const uuid = useMemo(() => ++id, [])\n const modalStore = useModalStore()\n const open = modalStore.getOpen(uuid)\n const [confirmLoading, setConfirmLoading] = useState(false)\n\n const isRenderFunction = typeof content === 'function'\n\n const show = () => {\n modalStore.show(uuid)\n }\n\n const hide = () => {\n modalStore.hide(uuid)\n }\n\n const onCancel: ModalProps['onCancel'] = () => {\n hide()\n }\n\n const onOk = async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n } finally {\n setConfirmLoading(false)\n }\n }\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide }) : content}\n </Modal>\n )\n\n return {\n uuid,\n show,\n 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 { useState } from 'react'\nimport type { UseModalOperation, UseModalProps } from './modal'\nimport { useModal } from './modal'\n\ntype RecursivePartial<T> =\n NonNullable<T> extends object\n ? {\n [P in keyof T]?: NonNullable<T[P]> extends (infer U)[]\n ? RecursivePartial<U>[]\n : NonNullable<T[P]> extends object\n ? RecursivePartial<T[P]>\n : T[P]\n }\n : T\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = any>\n extends Omit<UseModalProps, 'afterClose' | 'onConfirm' | 'content'> {\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}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, ...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 hanldeConfirm = async () => {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues as ExtraValues)\n hide()\n }\n\n const afterClose = () => {\n internalForm.resetFields()\n }\n\n const { uuid, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues as ExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: hanldeConfirm,\n afterClose,\n })\n\n const onShow = ({\n initialValues,\n extraValues,\n }: {\n initialValues?: RecursivePartial<Values>\n extraValues?: ExtraValues\n } = {}) => {\n if (extraValues) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n }\n\n return {\n uuid,\n show: onShow,\n hide,\n modal,\n }\n}\n","import useSWR from 'swr'\nimport useSWRMutation from 'swr/mutation'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport type { Game } from '../../../components/gameSelect'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllPermissions() {\n return useSWR('/api/usystem/user/allPermssions', url =>\n request<PermissionEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllPermissionsV2() {\n return useSWR('/api/usystem/user/allPermissionsV2', url =>\n request<{\n game: Game[]\n permission: PermissionEnumItem[]\n }>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', true)\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const { usePermissionApiV2 } = useToolkitsContext()\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/createV2' : '/api/usystem/role/create',\n (\n url: string,\n {\n arg,\n }: {\n arg: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/updateV2' : '/api/usystem/role/update',\n (\n url: string,\n {\n arg,\n }: {\n arg: { id: number; name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useRemoveRole() {\n return useSWRMutation(\n '/api/usystem/role/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: number; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useCreateUser() {\n return useSWRMutation(\n '/api/usystem/user/create',\n (\n url,\n {\n arg,\n }: {\n arg: { name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateUser() {\n return useSWRMutation(\n '/api/usystem/user/update',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useRemoveUser() {\n return useSWRMutation(\n '/api/usystem/user/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\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 } from 'react'\nimport { useTranslation } from '../../../../components/locale'\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\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 setActiveKey((permissions ?? []).map(({ category }) => category))\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 return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n 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 onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissions } from '../../hooks'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\n\ninterface PermissionListV1Props extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionListV1: FC<PermissionListV1Props> = 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 PermissionListV1\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissionsV2 } from '../../hooks'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionListV2Props extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionListV2: FC<PermissionListV2Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2()\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 { 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 => 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 key={game.id} value={game.id} disabled={gameList.some(({ gameId }) => gameId === game.id)}>\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 PermissionListV2\n","import type { FC } from 'react'\nimport { useToolkitsContext } from '../../../../components/contextProvider'\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionListV1 from '../permissionListV1'\nimport PermissionListV2 from '../permissionListV2'\n\nexport interface PermissionListPropsBase {\n expand?: boolean\n readonly?: boolean\n}\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 const { usePermissionApiV2 } = useToolkitsContext()\n\n return (\n <>\n {usePermissionApiV2 ? (\n <PermissionListV2 {...props} value={value as RoleV2['permissions']} />\n ) : (\n <PermissionListV1 {...props} value={value as RoleV1['permissions']} />\n )}\n </>\n )\n}\n\nexport default PermissionList\n","export interface PermissionEnumItem {\n category: string\n is_common?: boolean\n permissions: {\n label: string\n value: string\n route: string\n }[]\n}\n\nexport interface RoleEnumItem {\n id: string\n name: string\n}\n\nexport type RoleListItem = RoleV1 | RoleV2\n\nexport interface RoleV1 {\n id: number\n name: string\n ctime: string\n permissions: string[]\n}\n\nexport interface RoleV2 {\n id: number\n name: string\n ctime: string\n permissions: Record<string, string[]>\n}\n\nexport interface UserListItem {\n id: string\n name: string\n ctime: string\n roles: string[]\n}\n","export { default as PermissionList } from './components/permissionList'\nexport * from './hooks'\nexport * from './types'\n","import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Select, Space, Tag } from 'antd'\nimport { produce } from 'immer'\nimport type { FC } from 'react'\nimport { Link } from 'react-router-dom'\nimport Highlight from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/store'\nimport type { UserListItem } from '../../../features/permission'\nimport { useAllRoles, useCreateUser, useRemoveUser, useUpdateUser } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\n\nconst { Option } = Select\n\nexport const route = '/api/usystem/user/list'\n\ninterface FormSchema {\n id: string\n name: string\n roles: string[]\n}\n\ninterface ExtraValues {\n id: string\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { jump, mutate } = useQueryListStore()\n const { data: roles, isLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const title = isCreate ? t('UserList.createTitle') : t('UserList.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select allowClear mode=\"multiple\" loading={isLoading}>\n {(roles ?? []).map(role => (\n <Option value={role.name} key={role.id}>\n {role.name}\n </Option>\n ))}\n </Select>\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, ExtraValues>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger(values)\n jump(route, 1)\n message.success(t('UserList.createSuccessfully'))\n } else {\n await update.trigger(values)\n mutate<{ List: UserListItem[]; Total: number }>(\n route,\n prev => {\n return produce(prev, draft => {\n if (draft?.List) {\n const index = draft.List?.findIndex(item => item.id === extraValues?.id)\n if (index !== -1) {\n draft.List[index].roles = values.roles\n }\n }\n })\n },\n { revalidate: false },\n )\n message.success(t('UserList.updateSuccessfully'))\n }\n }\n\n return useFormModal({\n title,\n formProps: {\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const remove = useRemoveUser()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const { t } = useTranslation()\n\n const columns: TableColumnsType<UserListItem> = [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\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: (value: UserListItem) => (\n <Space>\n <PermissionButton\n isGlobal\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n showUpdateModal({\n initialValues: {\n name: value.name,\n roles: value.roles,\n },\n extraValues: {\n id: value.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('UserList.deleteTitle'),\n content: (\n <Highlight texts={[value.name]}>{t('UserList.deleteContent', { user: value.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: value.id,\n name: value.name,\n })\n mutate<{ List: UserListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === value.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('UserList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n ),\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('UserList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, undefined, { List: UserListItem[]; Total: number }>\n isGlobal\n code=\"100001\"\n route={route}\n rowKey=\"id\"\n columns={columns}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default UserList\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { FormProps, TableColumnsType } from 'antd'\nimport { App, Card, Form, Input, Space } from 'antd'\nimport { produce } from 'immer'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport Highlight from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/store'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../../features/permission'\nimport { PermissionList, useCreateRole, useRemoveRole, useUpdateRole } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\n\nconst route = '/api/usystem/role/list'\n\ninterface FormSchema {\n name: string\n permissions: RoleListItem['permissions']\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { jump, mutate } = useQueryListStore()\n const create = useCreateRole()\n const update = useUpdateRole()\n\n const title = isCreate ? t('RoleList.createTitle') : t('RoleList.updateTitle')\n\n const formProps: FormProps = {\n layout: 'vertical',\n }\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, { id: number }>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger({\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n jump(route, 1)\n message.success(t('RoleList.createSuccessfully'))\n } else {\n await update.trigger({\n id: extraValues?.id as number,\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(\n route,\n prev =>\n produce(prev, draft => {\n const match = draft?.List?.find(item => item.id === extraValues?.id)\n\n if (match) {\n match.permissions = values.permissions\n }\n }),\n { revalidate: false },\n )\n message.success(t('RoleList.updateSuccessfully'))\n }\n }\n\n return useFormModal<{\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }>({\n title,\n width: '50vw',\n formProps,\n content,\n onConfirm,\n })\n}\n\nconst RoleList = () => {\n const { accessible: viewable } = usePermission('200005', true)\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const { usePermissionApiV2 } = useToolkitsContext()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const { data: role } = await request<RoleV1 | RoleV2>(\n `/api/usystem/role/info${usePermissionApiV2 ? 'V2' : ''}?name=${record.name}`,\n { isGlobal: true },\n )\n showUpdateModal({\n initialValues: {\n permissions: role?.permissions,\n name: role?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: role?.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 isGlobal\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.edit')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('RoleList.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('RoleList.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: record.id,\n name: record.name,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === record.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('RoleList.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 isGlobal\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('RoleList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n isGlobal\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n route={route}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default RoleList\n","import { Breadcrumb, Card, Descriptions, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionList, useRole } from '../../../features/permission'\n\nconst RoleDetail = () => {\n const params = useParams()\n const { data, isLoading } = useRole(params.name as string)\n const { t } = useTranslation()\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: 24 }}\n items={[\n {\n key: '1',\n title: <Link to=\"..\">{t('global.role')}</Link>,\n },\n {\n key: '2',\n title: params.name,\n },\n ]}\n />\n <Card title={t('RoleDetail.title')}>\n <Skeleton loading={isLoading}>\n <Descriptions column={3} layout=\"vertical\">\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 <PermissionList readonly value={data?.permissions} />\n </Skeleton>\n </Card>\n </>\n )\n}\n\nexport default RoleDetail\n","import type { ContextState } from './components/contextProvider'\nimport { ContextProvider, contextStore, useToolkitsContext } from './components/contextProvider'\nimport type { DynamicTagsProps } from './components/dynamicTags'\nimport DynamicTags from './components/dynamicTags'\nimport ExpandableParagraph from './components/expandableParagraph'\nimport type { FilterFormWrapperProps } from './components/filterFormWrapper'\nimport FilterFormWrapper from './components/filterFormWrapper'\nimport type { Game, GameState } from './components/gameSelect'\nimport { GameSelect, useGameStore } from './components/gameSelect'\nimport type { HighlightTextsProps } from './components/highlight'\nimport Highlight from './components/highlight'\nimport type { InfiniteListProps } from './components/infiniteList'\nimport { InfiniteList } from './components/infiniteList'\nimport { Layout } from './components/layout'\nimport type { NavMenuItem } from './components/navMenu'\nimport { NavMenu } from './components/navMenu'\nimport type { PermissionButtonProps } from './components/permissionButton'\nimport { PermissionButton } from './components/permissionButton'\nimport type { PermissionGuardProps } from './components/permissionGuard'\nimport PermissionGuard from './components/permissionGuard'\nimport type { QueryListProps, QueryListRef } from './components/queryList'\nimport { QueryList, QueryListAction, useQueryListStore } from './components/queryList'\nimport UserWidget from './components/userWidget'\nimport type { UseFormModalProps } from './hooks/formModal'\nimport { useFormModal } from './hooks/formModal'\nimport { useModal, useModalStore } from './hooks/modal'\nimport { usePermission, usePermissions } from './hooks/permission'\nimport type { TokenState } from './hooks/token'\nimport { useTokenStore, useTokenValidation } from './hooks/token'\nimport NotFound from './pages/notFound'\nimport OperationLogList from './pages/operationLogList'\nimport PermissionRoutes from './pages/permission'\nimport SignIn, { useRedirectToSignIn } from './pages/signIn'\nimport './styles/index.css'\nimport type { RequestOptions, RequestResponse } from './utils/request'\nimport { RequestError, request } from './utils/request'\nimport { mixedStorage } from './utils/storage'\n\nexport {\n ContextProvider,\n DynamicTags,\n ExpandableParagraph,\n FilterFormWrapper,\n GameSelect,\n Highlight,\n InfiniteList,\n Layout,\n NavMenu,\n NotFound,\n OperationLogList,\n PermissionButton,\n PermissionGuard,\n PermissionRoutes,\n QueryList,\n QueryListAction,\n RequestError,\n SignIn,\n UserWidget,\n contextStore,\n mixedStorage,\n request,\n useFormModal,\n useGameStore,\n useModal,\n useModalStore,\n usePermission,\n usePermissions,\n useQueryListStore,\n useRedirectToSignIn,\n useTokenStore,\n useTokenValidation,\n useToolkitsContext,\n type ContextState,\n type DynamicTagsProps,\n type FilterFormWrapperProps,\n type Game,\n type GameState,\n type HighlightTextsProps,\n type InfiniteListProps,\n type NavMenuItem,\n type PermissionButtonProps,\n type PermissionGuardProps,\n type QueryListProps,\n type QueryListRef,\n type RequestOptions,\n type RequestResponse,\n type TokenState,\n type UseFormModalProps,\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport type { InputRef } from 'antd'\nimport { Input, Space, Tag, theme } from 'antd'\nimport type { CSSProperties, ChangeEvent, FC } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface DynamicTagsProps {\n initialTags?: string[]\n addable?: boolean\n removable?: boolean\n // 返回 Promise。如果返回 Promise.resolve(true),则添加; 如果返回 Promise.resolve(false) 或 Promise.reject,则不添加\n addCallback?: (addedTag: string) => Promise<boolean>\n // 返回 Promise。如果返回 Promise.resolve(true),则删除; 如果返回 Promise.resolve(false) 或 Promise.reject,则不删除\n removeCallback?: (removedTag: string) => Promise<boolean>\n}\n\nconst DynamicTags: FC<DynamicTagsProps> = props => {\n const { initialTags, addable, removable, addCallback, removeCallback } = props\n const { t } = useTranslation()\n const { token } = theme.useToken()\n const [tags, setTags] = useState<string[]>([])\n const [inputVisible, setInputVisible] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [editInputIndex, setEditInputIndex] = useState(-1)\n const [editInputValue, setEditInputValue] = useState<string>('')\n const inputRef = useRef<InputRef>(null)\n const editInputRef = useRef<InputRef>(null)\n\n useEffect(() => {\n setTags(initialTags ?? [])\n }, [initialTags])\n\n useEffect(() => {\n if (inputVisible) {\n inputRef.current?.focus()\n }\n }, [inputVisible])\n\n useEffect(() => {\n editInputRef.current?.focus()\n }, [inputValue])\n\n const handleClose = async (removedTag: string) => {\n const success = await removeCallback?.(removedTag)\n\n if (success) {\n const newTags = tags.filter(tag => tag !== removedTag)\n setTags(newTags)\n }\n }\n\n const showInput = () => {\n setInputVisible(true)\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputConfirm = async () => {\n if (inputValue && tags.indexOf(inputValue) === -1) {\n const success = await addCallback?.(inputValue)\n\n if (success) {\n setTags([...tags, inputValue])\n }\n }\n\n setInputVisible(false)\n setInputValue('')\n }\n\n const handleEditInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setEditInputValue(e.target.value)\n }\n\n const handleEditInputConfirm = () => {\n const newTags = [...tags]\n newTags[editInputIndex] = editInputValue\n setTags(newTags)\n setEditInputIndex(-1)\n setInputValue('')\n }\n\n const tagInputStyle: CSSProperties = {\n width: 78,\n verticalAlign: 'top',\n }\n\n const tagPlusStyle: CSSProperties = {\n background: token.colorBgContainer,\n borderStyle: 'dashed',\n }\n\n return (\n <Space wrap size={[0, 8]}>\n <Space wrap size={[0, 8]}>\n {tags.map((tag, index) => {\n if (editInputIndex === index) {\n return (\n <Input\n ref={editInputRef}\n key={tag}\n size=\"small\"\n style={tagInputStyle}\n value={editInputValue}\n onChange={handleEditInputChange}\n onBlur={handleEditInputConfirm}\n onPressEnter={handleEditInputConfirm}\n />\n )\n }\n\n return (\n <Tag\n key={tag}\n closable={removable}\n style={{ userSelect: 'none' }}\n onClose={async e => {\n e.preventDefault()\n await handleClose(tag)\n }}\n >\n <span\n onDoubleClick={e => {\n if (index !== 0) {\n setEditInputIndex(index)\n setEditInputValue(tag)\n e.preventDefault()\n }\n }}\n >\n {tag}\n </span>\n </Tag>\n )\n })}\n </Space>\n {addable &&\n (inputVisible ? (\n <Input\n ref={inputRef}\n type=\"text\"\n size=\"small\"\n style={tagInputStyle}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputConfirm}\n onPressEnter={handleInputConfirm}\n />\n ) : (\n <Tag style={tagPlusStyle} onClick={showInput}>\n <PlusOutlined />\n {t('global.add')}\n </Tag>\n ))}\n </Space>\n )\n}\n\nexport default DynamicTags\n","import { Typography } from 'antd'\nimport type { ParagraphProps } from 'antd/es/typography/Paragraph'\nimport type { FC } from 'react'\nimport { useState } from 'react'\n\ntype ExpandableParagraphProps = Omit<ParagraphProps, 'ellipsis' | 'className'>\n\nconst ExpandableParagraph: FC<ExpandableParagraphProps> = props => {\n const { children, ...restProps } = props\n const [expanded, setExpanded] = useState(false)\n\n return (\n <Typography.Paragraph\n {...restProps}\n className=\"mb-0\"\n ellipsis={{\n rows: 2,\n expandable: 'collapsible',\n expanded,\n onExpand: (_, info) => {\n setExpanded(info.expanded)\n },\n }}\n >\n {children}\n </Typography.Paragraph>\n )\n}\n\nexport default ExpandableParagraph\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Button, Form, Result, Spin, Table } from 'antd'\nimport type { TableProps } from 'antd/es/table'\nimport qs from 'query-string'\nimport type { Key, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport FilterFormWrapper from '../filterFormWrapper'\nimport { useTranslation } from '../locale'\n\ninterface InfiniteListExtra<Values> {\n key: Key\n children: ReactNode | ((form: FormInstance<Values>) => ReactNode)\n}\n\nexport interface InfiniteListProps<Item, Values, Response>\n extends Pick<TableProps<Item>, 'columns' | 'rowKey' | 'tableLayout' | 'expandable' | 'rowSelection' | 'bordered'> {\n action: string\n getRowKey: (response: Response) => any\n getDataSource: (data: Response[] | undefined) => Item[]\n code?: string\n headers?: Record<string, string> | ((form: FormInstance<Values>) => Record<string, string>)\n renderForm?: (form: FormInstance<Values>) => ReactNode\n transformArg: (values: Values, rowKey?: string) => Record<any, any>\n hasMore?: (data: Response[] | undefined) => boolean\n isGlobal?: boolean\n extras?: InfiniteListExtra<Values>[]\n}\n\nconst InfiniteList = <Item extends object, Values extends object | undefined = undefined, Response = any>(\n props: InfiniteListProps<Item, Values, Response>,\n) => {\n const {\n code,\n action,\n extras,\n headers,\n isGlobal,\n getRowKey,\n getDataSource,\n hasMore,\n renderForm,\n transformArg,\n ...tableProps\n } = props\n const { t } = useTranslation()\n const [form] = Form.useForm<Values>()\n const { accessible, isLoading } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const [formValues, setFormValues] = useState<Values>()\n\n const getKey = (pageIndex: number, previousPageData: Response) => {\n if (!isValid) return null\n\n const rowKey = pageIndex !== 0 ? getRowKey(previousPageData) : undefined\n const args = transformArg(formValues as Values, rowKey)\n const queryString = qs.stringify(args)\n\n return queryString ? `${action}?${qs.stringify(args)}` : action\n }\n\n const {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: typeof headers === 'function' ? headers(form) : headers,\n isGlobal,\n }).then(response => response.data)\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n },\n )\n\n const dataSource = getDataSource(data)\n const isLoadingMore = isListValidating || (size > 0 && data && typeof data[size - 1] === 'undefined')\n const isReachingEnd = typeof hasMore !== 'undefined' ? !hasMore(data) : true\n const isEmpty = !dataSource || dataSource.length === 0\n\n const onConfirm = async () => {\n const values = await form.getFieldsValue()\n setFormValues(values)\n\n try {\n await form.validateFields()\n setSize(1)\n setIsValid(true)\n } catch (_) {\n setSize(0)\n setIsValid(false)\n }\n }\n\n const loadMore = () => {\n setSize(size + 1)\n }\n\n const onReset = async () => {\n try {\n form.resetFields()\n await form.validateFields({ validateOnly: true })\n setSize(1)\n } catch (_) {\n setSize(0)\n }\n }\n\n useEffect(() => {\n if (accessible) {\n form\n .validateFields({ validateOnly: true })\n .then(values => {\n setFormValues(values)\n setIsValid(true)\n })\n .catch(() => {\n setIsValid(false)\n })\n }\n }, [accessible])\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n return (\n <>\n {renderForm ? (\n <FilterFormWrapper\n extras={extras?.map(extra => ({\n key: extra.key,\n children: typeof extra.children === 'function' ? extra.children(form) : extra.children,\n }))}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {renderForm(form)}\n </FilterFormWrapper>\n ) : (\n <Form form={form} />\n )}\n <Table {...tableProps} dataSource={dataSource} loading={isLoadingMore} pagination={false} />\n {!isEmpty && (\n <Button\n block\n loading={isLoadingMore}\n type=\"link\"\n htmlType=\"button\"\n disabled={isLoadingMore || isReachingEnd}\n onClick={loadMore}\n >\n {isLoadingMore\n ? t('InfiniteList.loadingText')\n : isReachingEnd\n ? t('InfiniteList.reachEndText')\n : t('InfiniteList.loadMoreText')}\n </Button>\n )}\n </>\n )\n}\n\nexport default InfiniteList\n","import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'\nimport * as Antd from 'antd'\nimport { Button, Divider, Space } from 'antd'\nimport type { FC, Key, PropsWithChildren, ReactNode } from 'react'\nimport { Suspense } from 'react'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { GameSelectProps } from '../gameSelect'\nimport { GameSelect } from '../gameSelect'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport UserWidget from '../userWidget'\nimport ContentWrapper from './ContentWrapper'\nimport { useLayoutStore } from './store'\nimport './style.css'\n\nconst { Spin, theme } = Antd\nconst { Header, Sider, Content } = Antd.Layout\n\ntype HeaderExtra = { key: Key; children: ReactNode }\n\nexport interface LayoutProps extends PropsWithChildren {\n items?: NavMenuItem[]\n hideGameSelect?: boolean\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n filter?: GameSelectProps['filter']\n}\n\nconst Layout: FC<LayoutProps> = props => {\n const { items, headerExtra, hideGameSelect, children, filter } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const { appTitle, usePermissionApiV2, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\n const { collapsed, setCollapsed } = useLayoutStore()\n\n const onCollapse = async () => {\n setCollapsed(!collapsed)\n }\n\n return (\n <Antd.Layout>\n <Sider\n collapsible\n theme=\"light\"\n trigger={null}\n collapsed={collapsed}\n width={256}\n style={{\n height: '100vh',\n overflow: 'auto',\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colorBorder,\n }}\n >\n <Link to={signInSuccessRedirectUrl} className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {!collapsed && <div className=\"h-8 flex items-center expand\">{appTitle}</div>}\n </Link>\n <NavMenu items={items} />\n </Sider>\n <Antd.Layout>\n <Header\n style={{\n padding: '0 24px',\n background: colorBgContainer,\n }}\n >\n <div className=\"flex justify-between items-center h-full\">\n <Space size=\"small\" split={<Divider type=\"vertical\" />} className=\"mr-6\">\n <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\n />\n {usePermissionApiV2 && !hideGameSelect && <GameSelect filter={filter} />}\n {headerExtra?.left?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n </Space>\n <Space size=\"small\" split={<Divider type=\"vertical\" />}>\n {headerExtra?.right?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n {localeDropdownMenu}\n <UserWidget />\n </Space>\n </div>\n </Header>\n <Content\n style={{\n overflow: 'auto',\n padding: '24px 16px',\n maxHeight: 'calc(100vh - 64px)',\n }}\n >\n <Suspense\n fallback={\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '200px',\n }}\n />\n }\n >\n <ContentWrapper>{children}</ContentWrapper>\n </Suspense>\n </Content>\n </Antd.Layout>\n </Antd.Layout>\n )\n}\n\nexport default Layout\n","import { Menu, Spin } from 'antd'\nimport { memo, useCallback, useEffect, useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { usePermissions } from '../../hooks/permission'\nimport { useNavStore } from './store'\nimport type { NavMenuItem } from './types'\nimport { flatItems, transformItems } from './utils'\n\nexport interface NavMenuProps {\n items?: NavMenuItem[]\n}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items } = props\n const location = useLocation()\n const flattenItems = useMemo(() => flatItems(items ?? []), [items])\n const codes = useMemo(() => flattenItems.map(item => item.code).filter(Boolean) as string[], [flattenItems])\n const { data: permissions, isLoading } = usePermissions(codes, true)\n const internalItems = useMemo(() => transformItems(items ?? [], permissions), [items, permissions])\n const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore()\n\n const onOpenChange = useCallback(\n (keys: string[]) => {\n const lastOpenKey = keys?.find(key => openKeys?.indexOf(key) === -1)\n const match = flattenItems.find(item => lastOpenKey === item.key)\n setOpenKeys((match?.keypath ?? [lastOpenKey]) as string[])\n },\n [flattenItems, openKeys, setOpenKeys],\n )\n\n useEffect(() => {\n const match = flattenItems.find(item => location.pathname === item.route)\n\n if (match) {\n const key = match.key as string\n const keypath = match.keypath as string[]\n setSelectedKeys([key])\n setOpenKeys(keypath)\n }\n }, [flattenItems, location])\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center items-center\" style={{ height: 'calc(100vh - 64px)' }}>\n <Spin />\n </div>\n )\n }\n\n return (\n <Menu\n style={{ borderRight: 'none' }}\n items={internalItems}\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n onOpenChange={onOpenChange}\n />\n )\n})\n\nif (process.env.NODE_ENV === 'development') {\n NavMenu.displayName = 'NavMenu'\n}\n\nexport default NavMenu\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nexport interface NavState {\n openKeys: string[]\n selectedKeys: string[]\n setOpenKeys: (keys: string[]) => void\n setSelectedKeys: (keys: string[]) => void\n}\n\nexport const useNavStore = create<NavState>()(\n persist(\n set => ({\n openKeys: [],\n setOpenKeys: keys => set({ openKeys: keys }),\n selectedKeys: [],\n setSelectedKeys: keys => set({ selectedKeys: keys }),\n }),\n {\n name: 'nav',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n }),\n },\n ),\n)\n","import type { ItemType, MenuDividerType, MenuItemGroupType, MenuItemType, SubMenuType } from 'antd/es/menu/interface'\nimport type { ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\nconst withLink = (label?: ReactNode, route?: string): ReactNode => {\n if (route) {\n return <Link to={route}>{label}</Link>\n }\n\n return label\n}\n\nexport function checkChildren(children: NavMenuItem[], permissions?: Record<string, boolean>): boolean {\n return (children ?? []).some(child => {\n if (child === null) {\n return false\n } else if ((child as MenuDividerType).type === 'divider') {\n return true\n } else {\n if ((child as SubMenuType2 | MenuItemGroupType2).children) {\n return checkChildren((child as SubMenuType2 | MenuItemGroupType2).children ?? [], permissions)\n } else {\n return !permissions || !(child as MenuItemType2).code || permissions[(child as MenuItemType2).code as string]\n }\n }\n })\n}\n\nexport function transformItems(items: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null) {\n result[i] = null\n } else if ((items[i] as MenuDividerType).type === 'divider') {\n result[i] = { ...items[i] } as MenuDividerType\n } else {\n if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...restProps } = items[i] as SubMenuType2 | MenuItemGroupType2\n\n result[i] = checkChildren(children ?? [], permissions)\n ? ({\n ...restProps,\n children: transformItems(children ?? [], permissions),\n } as SubMenuType | MenuItemGroupType)\n : null\n } else {\n const { route, label, code, ...restProps } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n\n result[i] = isPass\n ? ({\n ...restProps,\n label: withLink(label, route),\n } as MenuItemType)\n : null\n }\n }\n }\n\n return result\n}\n\n// 拍平导航配置,并且注入 keypath 字段\nexport function flatItems(\n items: NavMenuItem[],\n result: Merge<MenuItemType2, { keypath?: string[] }>[] = [],\n keypath: string[] = [],\n) {\n for (const item of items) {\n const children = (item as SubMenuType2 | MenuItemGroupType2)?.children as NavMenuItem[]\n\n if (Array.isArray(children)) {\n const keys =\n (item as MenuItemGroupType2)!.type !== 'group' && item!.key ? [...keypath, item!.key as string] : keypath\n flatItems(children, result, keys)\n } else if (item) {\n result.push(Object.assign(item as MenuItemType2, { keypath }))\n }\n }\n\n return result\n}\n","import { LogoutOutlined, UserOutlined } from '@ant-design/icons'\nimport type { MenuProps } from 'antd'\nimport { Dropdown, Space } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../locale'\nimport { useTokenStore } from '../../hooks/token'\nimport { useToolkitsContext } from '../contextProvider'\n\nconst UserWidget: FC = () => {\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n const { t } = useTranslation()\n const { signInUrl } = useToolkitsContext()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n label: (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid\n <a\n data-cy=\"user-widget-logout\"\n onClick={() => {\n clearToken()\n if (signInUrl) {\n navigate(signInUrl)\n }\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n icon: <LogoutOutlined />,\n },\n ]\n\n return (\n <div data-cy=\"user-widget\">\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */}\n <a\n onClick={e => {\n e.preventDefault()\n }}\n >\n <Space align=\"center\">\n <span>{user?.authorityId}</span>\n <UserOutlined style={{ fontSize: '16px' }} />\n </Space>\n </a>\n </Dropdown>\n </div>\n )\n}\n\nexport default UserWidget\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useGameStore } from '../gameSelect'\nimport { useTranslation } from '../locale'\n\nconst { Spin } = Antd\n\ninterface ContentWrapperProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst ContentWrapper: FC<ContentWrapperProps> = props => {\n const { hideGameSelect, children } = props\n const { usePermissionApiV2 } = useToolkitsContext()\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default ContentWrapper\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nexport interface LayoutState {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nexport const useLayoutStore = create<LayoutState>()(\n persist(\n set => ({\n collapsed: false,\n setCollapsed: collapsed => set({ collapsed }),\n }),\n {\n name: 'layout',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({ collapsed: state.collapsed }),\n },\n ),\n)\n","import { Result, Spin } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { useTranslation } from '../locale'\nimport { usePermission } from '../../hooks/permission'\n\nexport interface PermissionGuardProps {\n code: string\n isGlobal?: boolean\n}\n\nconst PermissionGuard: FC<PropsWithChildren<PermissionGuardProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(code, isGlobal)\n const { t } = useTranslation()\n\n if (isValidating) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status=\"403\" subTitle={t('global.noEntitlement')} />\n }\n\n return <>{children}</>\n}\n\nexport default PermissionGuard\n","import { Button, Result } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\n\nconst NotFound = () => {\n const navigate = useNavigate()\n const { t } = useTranslation()\n const { notFoundRedirectUrl } = useToolkitsContext()\n\n return (\n <div className=\"h-screen flex justify-center items-center\">\n <Result\n status=\"404\"\n title=\"404\"\n subTitle={t('NotFound.subTitle')}\n extra={\n notFoundRedirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(notFoundRedirectUrl)\n }}\n >\n {t('NotFound.buttonText')}\n </Button>\n )\n }\n />\n </div>\n )\n}\n\nexport default NotFound\n","import { Card, Form, Input, Select } from 'antd'\nimport type { ColumnsType } from 'antd/es/table'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\nimport ExpandableParagraph from '../../components/expandableParagraph'\nimport { useTranslation } from '../../components/locale'\nimport { QueryList } from '../../components/queryList'\nimport type { OperationLogListItem } from './types'\n\nconst { Option } = Select\n\nconst OperationLogList: FC = () => {\n const { t } = useTranslation()\n\n const columns: ColumnsType<OperationLogListItem> = [\n {\n key: 'username',\n title: t('global.username'),\n dataIndex: 'uname',\n width: 100,\n },\n {\n key: 'label',\n title: t('global.label'),\n dataIndex: 'label',\n width: 150,\n },\n {\n key: 'method',\n title: t('global.method'),\n dataIndex: 'method',\n width: 100,\n },\n {\n key: 'route',\n title: t('global.route'),\n dataIndex: 'route',\n width: 200,\n },\n {\n key: 'request',\n title: t('global.request'),\n dataIndex: 'request',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'response',\n title: t('global.response'),\n dataIndex: 'response',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'creation_time',\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n width: 200,\n render(value: string) {\n return dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n },\n },\n ]\n\n return (\n <Card title=\"操作日志\">\n <QueryList<\n OperationLogListItem,\n {\n uname?: string\n route?: string\n method?: 'get' | 'post'\n label?: string\n },\n {\n List: OperationLogListItem[]\n Total: number\n }\n >\n rowKey=\"id\"\n columns={columns}\n tableLayout=\"fixed\"\n route=\"/api/usystem/log/list\"\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n renderForm={form => (\n <Form form={form} layout=\"inline\">\n <Form.Item label={t('global.username')} name=\"uname\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.route')} name=\"route\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.method')} name=\"method\">\n <Select allowClear style={{ width: '100px' }}>\n <Option value=\"get\">GET</Option>\n <Option value=\"post\">POST</Option>\n </Select>\n </Form.Item>\n <Form.Item label={t('global.label')} name=\"label\">\n <Input allowClear />\n </Form.Item>\n </Form>\n )}\n />\n </Card>\n )\n}\n\nexport default OperationLogList\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./userList'))\nconst RoleList = lazy(() => import('./roleList'))\nconst RoleDetail = lazy(() => import('./roleDetail'))\n\nconst PermissionRoutes = () => {\n return (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n )\n}\n\nexport default PermissionRoutes\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/locale/context.ts","../src/components/locale/zh_CN.ts","../src/components/locale/hooks.ts","../src/components/locale/index.tsx","../src/components/contextProvider/constants.ts","../src/components/contextProvider/context.ts","../src/components/contextProvider/Provider.tsx","../src/components/contextProvider/index.ts","../src/components/filterFormWrapper/index.tsx","../src/components/highlight/index.tsx","../src/components/logo/Logo.tsx","../src/components/logo/index.tsx","../src/components/navMenu/stores.ts","../src/components/navMenu/utils.tsx","../src/components/navMenu/NavMenu.tsx","../src/components/navMenu/index.ts","../src/pages/signIn/index.tsx","../src/hooks/token.ts","../src/components/userWidget/index.tsx","../src/utils/storage.ts","../src/components/layout/stores.ts","../src/components/layout/ContentWrapper.tsx","../src/components/layout/GameSelect.tsx","../src/components/layout/style.css","../src/components/layout/Layout.tsx","../src/components/layout/index.tsx","../src/utils/request.ts","../src/hooks/permission.ts","../src/components/permissionButton/PermissionButton.tsx","../src/components/permissionButton/index.tsx","../src/components/queryList/stores.ts","../src/components/queryList/QueryList.tsx","../src/components/queryList/index.ts","../src/hooks/modal.tsx","../src/hooks/formModal.tsx","../src/features/permission/hooks/index.ts","../src/features/permission/components/permissionCollapse/index.tsx","../src/features/permission/components/permissionListV1/index.tsx","../src/features/permission/components/permissionListV2/index.tsx","../src/features/permission/components/permissionList/index.tsx","../src/features/permission/types/index.ts","../src/features/permission/index.ts","../src/pages/permission/userList/index.tsx","../src/pages/permission/roleList/index.tsx","../src/pages/permission/roleDetail/index.tsx","../src/index.ts","../src/components/dynamicTags/index.tsx","../src/components/expandableParagraph/index.tsx","../src/components/infiniteList/InfiniteList.tsx","../src/components/permissionGuard/index.tsx","../src/pages/notFound/index.tsx","../src/pages/operationLogList/index.tsx","../src/pages/permission/index.tsx"],"names":["LocaleContext","context_default","init_context","__esmMin","createContext","locale","zh_CN_default","init_zh_CN","useTranslation","localeFromContext","useContext","useMemo","key","data","has","template","get","init_hooks","LocaleProvider","locale_default","init_locale","props","children","memoizedContextValue","jsx","defaultState","init_constants","ToolkitsContext","useToolkitsContext","contextStore","ContextProvider","Provider_default","init_Provider","createStore","rest","config","childNode","useEffect","init_contextProvider","FilterFormWrapper","filterFormWrapper_default","init_filterFormWrapper","extras","isConfirming","onConfirm","onReset","buttonsAlign","showReset","t","colorFillAlter","lineWidth","lineType","colorBorder","borderRadiusLG","theme","jsxs","Space","Button","item","Fragment","renderToString","node","container","root","createRoot","resolve","flushSync","splitByTags","Highlight","highlight_default","init_highlight","str","regex","part","texts","htmlString","setHtmlString","useState","result","text","index","Logo","Logo_default","init_Logo","logoUrl","init_logo","useNavStore","init_stores","create","persist","set","keys","createJSONStorage","state","checkChildren","permissions","child","transformItems","items","i","restProps","route","label","code","isPass","withLink","flatItems","keypath","init_utils","Link","NavMenu","NavMenu_default","init_NavMenu","init_permission","memo","location","useLocation","flattenItems","codes","isLoading","usePermissions","internalItems","openKeys","selectedKeys","setOpenKeys","setSelectedKeys","onOpenChange","useCallback","lastOpenKey","match","Spin","Menu","init_navMenu","NotRegisteredFlag","SSO_URL","useRedirectToSignIn","SignIn","signIn_default","init_signIn","init_token","init_request","init_background","clearToken","useTokenStore","navigate","useNavigate","signInUrl","notRegistered","queryParams","token","setToken","signInPageTitle","localeDropdownMenu","signInSuccessRedirectUrl","idaasRedirectUrl","useSWRImmutable","url","request","hashMode","path","Navigate","background_default","Alert","Typography","Form","Input","Divider","useTokenValidation","skip","usePermissionApiV2","redirectToSignIn","error","RequestError","store","jwtDecode","UserWidget","userWidget_default","init_userWidget","getUser","user","LogoutOutlined","Dropdown","e","UserOutlined","mixedStorage","init_storage","name","value","useLayoutStore","useGameStore","collapsed","id","initialized","refetchGames","matchedGame","response","switching","ContentWrapper","ContentWrapper_default","init_ContentWrapper","Antd","hideGameSelect","game","Empty","Text","GameSelect","GameSelect_default","init_GameSelect","filter","onGameChange","games","setGame","options","onChange","Select","init_style","Header","Sider","Content","Layout","Layout_default","init_Layout","headerExtra","navWidth","colorBgContainer","appTitle","setCollapsed","MenuUnfoldOutlined","MenuFoldOutlined","extra","Suspense","init_layout","opts","_opts","body","params","responseType","isGlobal","parsed","qs","queryString","headers","isJsonBody","requestOpts","responseInterceptor","json","pick","__publicField","isValidating","useSWR","acc","curr","usePermission","PermissionButton","PermissionButton_default","init_PermissionButton","showLoading","disabled","Tooltip","init_permissionButton","useQueryListStore","payload","force","prevPayload","nextPayload","isEqual","mutate","page","QueryListAction","InternalQueryList","QueryList","QueryList_default","init_QueryList","ref","internalProps","onePage","method","defaultSize","refreshInterval","tableExtra","form","renderForm","afterSuccess","getTotal","getDataSource","tableProps","notification","App","_form","accessible","action","useRef","originalData","isValid","setIsValid","keyMap","getPayload","refetch","size","formValue","_body","_params","_headers","newHeaders","serializedKey","unstable_serialize","shouldPoll","dataSource","total","pagination","currentPage","currentSize","timer","useImperativeHandle","Result","formRenderer","cloneElement","extraRenderer","Table","forwardRef","init_queryList","useModal","content","modalProps","uuid","modalStore","useModalStore","open","confirmLoading","setConfirmLoading","isRenderFunction","show","hide","internalModal","Modal","init_modal","useFormModal","formProps","internalExtraValues","setInternalExtraValues","internalForm","hanldeConfirm","values","afterClose","modal","operation","initialValues","extraValues","init_formModal","useAllPermissions","useAllPermissionsV2","useAllRoles","useRole","useCreateRole","useSWRMutation","arg","useUpdateRole","useRemoveRole","useCreateUser","useUpdateUser","useRemoveUser","PermissionCollapse","permissionCollapse_default","init_permissionCollapse","readonly","expand","activeKey","setActiveKey","checkedMap","setCheckedMap","internalValue","setInternalValue","onCollapseChange","getCheckedValue","checkedValue","tempValue","onCheckChange","category","Collapse","Checkbox","permission","Row","Col","PermissionListV1","permissionListV1_default","init_permissionListV1","Skeleton","Option","PermissionListV2","permissionListV2_default","init_permissionListV2","gameList","setGameList","globalPermissions","gamePermissions","list","addGame","prev","removeGame","_","newValue","Card","selectedValue","pev","temp","gameId","PermissionList","permissionList_default","init_permissionList","init_types","userList_exports","__export","userList_default","UserList","init_userList","isCreate","message","jump","roles","update","title","role","produce","draft","remove","showCreateModal","createModal","showUpdateModal","updateModal","columns","Tag","UserAddOutlined","roleList_exports","roleList_default","RoleList","init_roleList","viewable","handleUpdateBtnClick","record","UsergroupAddOutlined","roleDetail_exports","roleDetail_default","RoleDetail","init_roleDetail","useParams","Breadcrumb","Descriptions","DynamicTags","initialTags","addable","removable","addCallback","removeCallback","tags","setTags","inputVisible","setInputVisible","inputValue","setInputValue","editInputIndex","setEditInputIndex","editInputValue","setEditInputValue","inputRef","editInputRef","handleClose","removedTag","newTags","tag","showInput","handleInputChange","handleInputConfirm","handleEditInputChange","handleEditInputConfirm","tagInputStyle","tagPlusStyle","PlusOutlined","dynamicTags_default","ExpandableParagraph","expanded","setExpanded","info","expandableParagraph_default","InfiniteList","getRowKey","hasMore","transformArg","formValues","setFormValues","getKey","pageIndex","previousPageData","rowKey","args","setSize","isListValidating","useSWRInfinite","isLoadingMore","isReachingEnd","isEmpty","loadMore","InfiniteList_default","PermissionGuard","permissionGuard_default","NotFound","notFoundRedirectUrl","notFound_default","OperationLogList","dayjs","operationLogList_default","lazy","PermissionRoutes","Routes","Route","permission_default"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext } from 'react'\nimport type { Locale } from '.'\n\nexport type LocaleContextProps = Locale\n\nconst LocaleContext = createContext<LocaleContextProps | undefined>(undefined)\n\nexport default LocaleContext\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: '无权限,请联系管理员。',\n name: '名称',\n creationTime: '创建时间',\n operation: '操作',\n update: '更新',\n edit: '编辑',\n delete: '删除',\n selectAll: '全选',\n game: '游戏',\n user: '用户',\n role: '角色',\n username: '用户名',\n password: '密码',\n label: '标签',\n method: '方法',\n route: '路由',\n request: '请求',\n response: '响应',\n add: '添加',\n signIn: '登录',\n },\n SignIn: {\n title: '登录方式',\n thirdParty: '第三方登录',\n signInWithIDass: 'IDass 登录',\n notRegistered: '您还未在平台注册,请联系管理员',\n welcome: '欢迎',\n },\n NotFound: {\n subTitle: '访问的页面不存在',\n buttonText: '返回首页',\n },\n FilterFormWrapper: {\n confirmText: '查询',\n resetText: '重置',\n },\n FormModal: {\n confirmText: '确认',\n cancelText: '取消',\n },\n GameSelect: {\n label: '当前游戏',\n placeholder: '请选择游戏',\n },\n RequireGame: {\n description: '请选择游戏',\n },\n UserWidget: {\n signOutText: '登出',\n },\n UserList: {\n createTitle: '创建用户',\n createSuccessfully: '用户创建成功',\n updateTitle: '更新用户',\n updateSuccessfully: '用户更新成功',\n deleteTitle: '删除用户',\n deleteContent: '确定要删除用户 <%= user %> 吗?',\n deleteSuccessfully: '用户删除成功',\n },\n RoleList: {\n createTitle: '创建角色',\n createSuccessfully: '角色创建成功',\n updateTitle: '更新角色',\n updateSuccessfully: '角色更新成功',\n deleteTitle: '删除角色',\n deleteContent: '确定要删除角色 <%= role %> 吗?',\n deleteSuccessfully: '角色删除成功',\n },\n PermissionList: {\n failedDescription: '获取权限列表失败',\n baseSectionTitle: '平台基础权限',\n gameSectionTitle: '游戏权限',\n gameSectionDescription: '请先选择游戏',\n gameSelectPlaceholder: '请先选择游戏',\n removeText: '移除',\n addText: '添加游戏权限',\n },\n RoleDetail: {\n title: '角色详情',\n },\n InfiniteList: {\n loadingText: '加载中',\n reachEndText: '已经到底了',\n loadMoreText: '加载更多',\n },\n}\n\nexport default locale\n","import { get, has, template } from 'lodash-es'\nimport { useContext, useMemo } from 'react'\nimport type { Locale } from '.'\nimport type { LocaleContextProps } from './context'\nimport LocaleContext from './context'\nimport defaultLocale from './zh_CN'\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 localeFromContext = useContext<LocaleContextProps | undefined>(LocaleContext)\n\n const locale = {\n ...defaultLocale,\n ...localeFromContext,\n }\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","import type { FC, PropsWithChildren } from 'react'\nimport { useMemo } from 'react'\nimport LocaleContext from './context'\n\nexport 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 }\n SignIn: {\n title: string\n thirdParty: string\n signInWithIDass: string\n notRegistered: 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 UserList: {\n createTitle: string\n createSuccessfully: string\n updateTitle: string\n updateSuccessfully: string\n deleteTitle: string\n deleteContent: string\n deleteSuccessfully: string\n }\n RoleList: {\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\nexport interface LocaleProviderProps {\n locale: Locale\n}\n\nconst LocaleProvider: FC<PropsWithChildren<LocaleProviderProps>> = props => {\n const { locale = {} as Locale, children } = props\n const memoizedContextValue = useMemo(() => ({ ...locale }), [locale])\n\n return <LocaleContext.Provider value={memoizedContextValue}>{children}</LocaleContext.Provider>\n}\n\nexport default LocaleProvider\n","import type { ContextState } from './context'\n\nexport const defaultState: ContextState = {\n appTitle: '',\n usePermissionApiV2: false,\n signInUrl: '',\n signInSuccessRedirectUrl: '/',\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ReactNode } from 'react'\nimport { createContext } from 'react'\nimport type { RequestOptions } from '../../utils/request'\nimport type { Locale } from '../locale'\nimport { defaultState } from './constants'\n\nexport interface ContextState {\n appTitle: ReactNode\n signInPageTitle?: ReactNode\n usePermissionApiV2: boolean // 使用 V2 版本的权限接口\n locale?: Locale\n localeDropdownMenu?: ReactNode\n signInUrl: string // 登录地址\n signInSuccessRedirectUrl: string // 登录成功后的重定向地址\n notFoundRedirectUrl?: string // 404 重定向地址\n responseInterceptor?: (response: Response, opts: RequestOptions) => Promise<any>\n}\n\nconst ToolkitsContext = createContext<ContextState>(defaultState)\n\nexport default ToolkitsContext\n","import type { FC, PropsWithChildren } from 'react'\nimport { useContext, useEffect } from 'react'\nimport { createStore } from 'zustand'\nimport LocaleProvider from '../locale'\nimport { defaultState } from './constants'\nimport type { ContextState } from './context'\nimport ToolkitsContext from './context'\n\nexport const contextStore = createStore<ContextState>(() => defaultState)\n\n// 最接近的祖先 ContextProvider 内包含的上下文。\nexport function useToolkitsContext() {\n return useContext(ToolkitsContext)\n}\n\nconst ContextProvider: FC<PropsWithChildren<Partial<ContextState>>> = props => {\n const { children, locale, ...rest } = props\n const parentConfig = useToolkitsContext()\n\n const config = {\n ...parentConfig,\n ...rest,\n }\n\n const childNode = locale ? <LocaleProvider locale={locale}>{children}</LocaleProvider> : children\n\n useEffect(() => {\n contextStore.setState(config)\n }, [config])\n\n return <ToolkitsContext.Provider value={config}>{childNode}</ToolkitsContext.Provider>\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ContextProvider.displayName = 'ContextProvider'\n}\n\nexport default ContextProvider\n","import type { ContextState } from './context'\nimport ContextProvider, { contextStore, useToolkitsContext } from './Provider'\n\nexport { ContextProvider, contextStore, useToolkitsContext }\nexport type { ContextState }\n","import { Button, Space, theme } from 'antd'\nimport type { Key, PropsWithChildren, ReactNode } from 'react'\nimport { Fragment } from 'react'\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\" loading={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","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 HighlightTextsProps extends PropsWithChildren {\n texts: Array<string | number>\n}\n\nconst Highlight = (props: HighlightTextsProps) => {\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","import type { DetailedHTMLProps, FC, ImgHTMLAttributes } from 'react'\nimport logoUrl from './logo.png'\n\nexport type LogoProps = Omit<DetailedHTMLProps<ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, 'src' | 'alt'>\n\nconst Logo: FC<LogoProps> = props => {\n return <img src={logoUrl} alt=\"logo\" {...props} />\n}\n\nexport default Logo\n","export { default as Logo } from './Logo'\nexport type { LogoProps } from './Logo'\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nexport interface NavState {\n openKeys: string[]\n selectedKeys: string[]\n setOpenKeys: (keys: string[]) => void\n setSelectedKeys: (keys: string[]) => void\n}\n\nexport const useNavStore = create<NavState>()(\n persist(\n set => ({\n openKeys: [],\n setOpenKeys: keys => set({ openKeys: keys }),\n selectedKeys: [],\n setSelectedKeys: keys => set({ selectedKeys: keys }),\n }),\n {\n name: 'nav',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n }),\n },\n ),\n)\n","import type { ItemType, MenuDividerType, MenuItemGroupType, MenuItemType, SubMenuType } from 'antd/es/menu/interface'\nimport type { ReactNode } from 'react'\nimport { Link } from 'react-router-dom'\nimport type { Merge } from 'ts-essentials'\nimport type { MenuItemGroupType2, MenuItemType2, NavMenuItem, SubMenuType2 } from './types'\n\nconst withLink = (label?: ReactNode, route?: string): ReactNode => {\n if (route) {\n return <Link to={route}>{label}</Link>\n }\n\n return label\n}\n\nexport function checkChildren(children: NavMenuItem[], permissions?: Record<string, boolean>): boolean {\n return (children ?? []).some(child => {\n if (child === null) {\n return false\n } else if ((child as MenuDividerType).type === 'divider') {\n return true\n } else {\n if ((child as SubMenuType2 | MenuItemGroupType2).children) {\n return checkChildren((child as SubMenuType2 | MenuItemGroupType2).children ?? [], permissions)\n } else {\n return !permissions || !(child as MenuItemType2).code || permissions[(child as MenuItemType2).code as string]\n }\n }\n })\n}\n\nexport function transformItems(items: NavMenuItem[], permissions?: Record<string, boolean>) {\n const result: ItemType[] = []\n\n for (let i = 0; i < items.length; i++) {\n if (items[i] === null) {\n result[i] = null\n } else if ((items[i] as MenuDividerType).type === 'divider') {\n result[i] = { ...items[i] } as MenuDividerType\n } else {\n if ((items[i] as SubMenuType2 | MenuItemGroupType2).children) {\n const { children, ...restProps } = items[i] as SubMenuType2 | MenuItemGroupType2\n\n result[i] = checkChildren(children ?? [], permissions)\n ? ({\n ...restProps,\n children: transformItems(children ?? [], permissions),\n } as SubMenuType | MenuItemGroupType)\n : null\n } else {\n const { route, label, code, ...restProps } = items[i] as MenuItemType2\n const isPass = !code || !permissions || permissions[code]\n\n result[i] = isPass\n ? ({\n ...restProps,\n label: withLink(label, route),\n } as MenuItemType)\n : null\n }\n }\n }\n\n return result\n}\n\n// 拍平导航配置,并且注入 keypath 字段\nexport function flatItems(\n items: NavMenuItem[],\n result: Merge<MenuItemType2, { keypath?: string[] }>[] = [],\n keypath: string[] = [],\n) {\n for (const item of items) {\n const children = (item as SubMenuType2 | MenuItemGroupType2)?.children as NavMenuItem[]\n\n if (Array.isArray(children)) {\n const keys =\n (item as MenuItemGroupType2)!.type !== 'group' && item!.key ? [...keypath, item!.key as string] : keypath\n flatItems(children, result, keys)\n } else if (item) {\n result.push(Object.assign(item as MenuItemType2, { keypath }))\n }\n }\n\n return result\n}\n","import { Menu, Spin } from 'antd'\nimport { memo, useCallback, useEffect, useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { usePermissions } from '../../hooks/permission'\nimport { useNavStore } from './stores'\nimport type { NavMenuItem } from './types'\nimport { flatItems, transformItems } from './utils'\n\nexport interface NavMenuProps {\n items?: NavMenuItem[]\n}\n\nconst NavMenu = memo(function NavMenu(props: NavMenuProps) {\n const { items } = props\n const location = useLocation()\n const flattenItems = useMemo(() => flatItems(items ?? []), [items])\n const codes = useMemo(() => flattenItems.map(item => item.code).filter(Boolean) as string[], [flattenItems])\n const { data: permissions, isLoading } = usePermissions(codes, true)\n const internalItems = useMemo(() => transformItems(items ?? [], permissions), [items, permissions])\n const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore()\n\n const onOpenChange = useCallback(\n (keys: string[]) => {\n const lastOpenKey = keys?.find(key => openKeys?.indexOf(key) === -1)\n const match = flattenItems.find(item => lastOpenKey === item.key)\n setOpenKeys((match?.keypath ?? [lastOpenKey]) as string[])\n },\n [flattenItems, openKeys, setOpenKeys],\n )\n\n useEffect(() => {\n const match = flattenItems.find(item => location.pathname === item.route)\n\n if (match) {\n const key = match.key as string\n const keypath = match.keypath as string[]\n setSelectedKeys([key])\n setOpenKeys(keypath)\n }\n }, [flattenItems, location])\n\n if (isLoading) {\n return (\n <div className=\"flex justify-center items-center\" style={{ height: 'calc(100vh - 64px)' }}>\n <Spin />\n </div>\n )\n }\n\n return (\n <Menu\n style={{ borderRight: 'none' }}\n items={internalItems}\n mode=\"inline\"\n openKeys={openKeys}\n selectedKeys={selectedKeys}\n onOpenChange={onOpenChange}\n />\n )\n})\n\nif (process.env.NODE_ENV === 'development') {\n NavMenu.displayName = 'NavMenu'\n}\n\nexport default NavMenu\n","export { default as NavMenu } from './NavMenu'\nexport type { NavMenuItem } from './types'\n","import { Alert, Button, Divider, Form, Input, Space, Spin, Typography } from 'antd'\nimport { type FC } from 'react'\nimport { Navigate, useLocation, useNavigate } from 'react-router-dom'\nimport useSWRImmutable from 'swr/immutable'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\nimport { Logo } from '../../components/logo'\nimport { useTokenStore } from '../../hooks/token'\nimport { request } from '../../utils/request'\nimport backgroundUrl from './background.svg'\n\nconst NotRegisteredFlag = 'notRegistered'\n\nconst SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const useRedirectToSignIn = () => {\n const clearToken = useTokenStore(state => state.clearToken)\n const navigate = useNavigate()\n const { signInUrl } = useToolkitsContext()\n\n return (notRegistered?: boolean) => {\n clearToken()\n navigate(signInUrl, { state: { [NotRegisteredFlag]: notRegistered } })\n }\n}\n\nconst SignIn: FC = () => {\n const location = useLocation()\n // 当路由模式为 hash 模式时,Idaas 重定向会忽略 hash 部分,此时的登录页的地址为标准的 URL 结构 \"/?ticket=xxx#/sign_in\"。\n // 然而 react-router-dom 无法从这种地址中获取到查询字符串,需要使用原生的 window.location.search。\n const queryParams = new URLSearchParams(window.location.search)\n const { token, setToken } = useTokenStore()\n const { t } = useTranslation()\n const { signInPageTitle, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\n const idaasRedirectUrl = encodeURIComponent(window.location.href)\n\n const { isLoading } = useSWRImmutable(\n queryParams.has('ticket') ? `/api/usystem/user/login?ticket=${queryParams.get('ticket')}` : null,\n url => request<{ token: string }>(url),\n {\n onSuccess: data => {\n setToken(data.data.token)\n },\n },\n )\n\n if (isLoading) {\n return (\n <div className=\"w-screen h-screen flex justify-center items-center\">\n <Spin />\n </div>\n )\n }\n\n if (token) {\n const hashMode = !!window.location.hash\n const path = signInSuccessRedirectUrl\n\n if (!hashMode) {\n return <Navigate replace to={path} />\n }\n\n // 移除 ticket\n window.location.href = `${window.location.origin}${window.location.pathname}#${path}`\n\n return null\n }\n\n return (\n <div className=\"w-screen h-screen relative flex overflow-hidden\">\n {localeDropdownMenu && <div className=\"absolute top-16 right-16 z-10\">{localeDropdownMenu}</div>}\n <div className=\"absolute left-14 top-6\">\n <Space align=\"center\">\n <Logo width={48} />\n {signInPageTitle}\n </Space>\n </div>\n <div className=\"flex-1 flex justify-center items-center bg-slate-50\">\n <img src={backgroundUrl} alt=\"background\" className=\"w-10/12\" />\n </div>\n <div className=\"w-[650px] relative top-0 left-0 right-0 bottom-0\">\n <div className=\"absolute top-1/2 -translate-y-1/2 left-0 right-0\">\n <div className=\"-translate-y-10 px-36\">\n <div className=\"flex flex-col justify-center\">\n <div className=\"h-10\">\n {location.state?.[NotRegisteredFlag] && (\n <Alert banner closable message={t('SignIn.notRegistered')} type=\"error\" />\n )}\n </div>\n <Typography.Title level={2}>{t('SignIn.welcome')}</Typography.Title>\n <div className=\"mt-4\">\n <Form layout=\"vertical\" autoComplete=\"off\">\n <Form.Item label={t('global.username')} name=\"username\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label={t('global.password')} name=\"password\" rules={[{ required: true }]}>\n <Input.Password />\n </Form.Item>\n <Form.Item>\n <Button block type=\"primary\" shape=\"round\" htmlType=\"submit\">\n {t('global.signIn')}\n </Button>\n </Form.Item>\n </Form>\n </div>\n <Divider plain dashed>\n {t('SignIn.thirdParty')}\n </Divider>\n <div className=\"flex justify-center items-center\">\n <Button block shape=\"round\" href={`${SSO_URL}/login?service=${idaasRedirectUrl}`} target=\"_self\">\n <Logo width={18} />\n {t('SignIn.signInWithIDass')}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default SignIn\n","import { jwtDecode } from 'jwt-decode'\nimport useSWRImmutable from 'swr/immutable'\nimport { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { useRedirectToSignIn } from '../pages/signIn'\nimport { request, RequestError } from '../utils/request'\n\ninterface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenState {\n token: string\n getUser: () => UserInfo | null\n setToken: (token: string) => void\n clearToken: () => void\n}\n\nexport const useTokenStore = create<TokenState>()(\n persist(\n (set, get, store) => ({\n token: '',\n getUser: () => {\n try {\n return jwtDecode(get().token) as UserInfo\n } catch (_) {\n return null\n }\n },\n setToken: token => set({ token }),\n clearToken: () => {\n get().setToken('')\n store.persist.clearStorage()\n },\n }),\n {\n name: 'token',\n partialize: state => ({ token: state.token }),\n },\n ),\n)\n\nexport function useTokenValidation(skip = false) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const redirectToSignIn = useRedirectToSignIn()\n\n return useSWRImmutable(\n !skip ? (usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check') : null,\n (url: string) =>\n request(url, {\n method: 'POST',\n body: {\n permissions: ['100001'],\n },\n isGlobal: true,\n }),\n {\n onError: error => {\n if (error instanceof RequestError) {\n if (error.status === 401) {\n redirectToSignIn()\n } else if (error.status === 412) {\n redirectToSignIn(true)\n }\n }\n },\n },\n )\n}\n","import { LogoutOutlined, UserOutlined } from '@ant-design/icons'\nimport type { MenuProps } from 'antd'\nimport { Dropdown, Space } from 'antd'\nimport type { FC } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from '../locale'\nimport { useTokenStore } from '../../hooks/token'\nimport { useToolkitsContext } from '../contextProvider'\n\nconst UserWidget: FC = () => {\n const navigate = useNavigate()\n const { clearToken, getUser } = useTokenStore()\n const user = getUser()\n const { t } = useTranslation()\n const { signInUrl } = useToolkitsContext()\n\n const items: MenuProps['items'] = [\n {\n key: '1',\n label: (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid\n <a\n data-cy=\"user-widget-logout\"\n onClick={() => {\n clearToken()\n if (signInUrl) {\n navigate(signInUrl)\n }\n }}\n >\n {t('UserWidget.signOutText')}\n </a>\n ),\n icon: <LogoutOutlined />,\n },\n ]\n\n return (\n <div data-cy=\"user-widget\">\n <Dropdown\n menu={{\n selectable: true,\n items,\n }}\n placement=\"bottomRight\"\n >\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/anchor-is-valid */}\n <a\n onClick={e => {\n e.preventDefault()\n }}\n >\n <Space align=\"center\">\n <span>{user?.authorityId}</span>\n <UserOutlined style={{ fontSize: '16px' }} />\n </Space>\n </a>\n </Dropdown>\n </div>\n )\n}\n\nexport default UserWidget\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: async (name: string) => {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","import { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { request } from '../../utils/request'\nimport { mixedStorage } from '../../utils/storage'\nimport type { Game, GameState } from './types'\n\nexport interface LayoutState {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n}\n\nexport const useLayoutStore = create<LayoutState>()(\n persist(\n set => ({\n collapsed: false,\n setCollapsed: collapsed => set({ collapsed }),\n }),\n {\n name: 'layout',\n storage: createJSONStorage(() => localStorage),\n partialize: state => ({ collapsed: state.collapsed }),\n },\n ),\n)\n\nexport const useGameStore = create<GameState>()(\n persist(\n (set, get) => ({\n initialized: false,\n isLoading: false,\n switching: false,\n game: null,\n games: [],\n async setGame(id) {\n const { initialized, refetchGames } = get()\n\n if (!initialized) {\n await refetchGames()\n }\n\n const matchedGame = (get().games ?? []).find(item => item.game_id === id)\n set({ game: matchedGame ?? null })\n },\n async refetchGames() {\n if (!get().isLoading) {\n try {\n set({ isLoading: true })\n const response = await request<{ list: Game[] }>('/api/game/list')\n set({ games: response.data?.list ?? [] })\n } finally {\n set({\n initialized: true,\n isLoading: false,\n })\n }\n }\n },\n setSwitching: (switching: boolean) => set({ switching }),\n }),\n {\n name: 'game',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({ game: state.game }),\n },\n ),\n)\n","import * as Antd from 'antd'\nimport { Empty } from 'antd'\nimport { type FC, type PropsWithChildren } from 'react'\nimport { useToolkitsContext } from '../contextProvider'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\n\nconst { Spin } = Antd\n\ninterface ContentWrapperProps extends PropsWithChildren {\n hideGameSelect?: boolean\n}\n\nconst ContentWrapper: FC<ContentWrapperProps> = props => {\n const { hideGameSelect, children } = props\n const { usePermissionApiV2 } = useToolkitsContext()\n const { game, isLoading } = useGameStore()\n const { t } = useTranslation()\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (usePermissionApiV2 && !hideGameSelect && !game) {\n return <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={t('RequireGame.description')} />\n }\n\n return children\n}\n\nexport default ContentWrapper\n","import { Select, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect } from 'react'\nimport { useTranslation } from '../locale'\nimport { useGameStore } from './stores'\nimport type { Game } from './types'\n\nconst { Text } = Typography\n\nexport interface GameSelectProps {\n filter?: (game: Game) => boolean\n onGameChange?: (game: Game) => void\n}\n\nconst GameSelect: FC<GameSelectProps> = props => {\n const { filter, onGameChange } = props\n const { t } = useTranslation()\n const { game, games, isLoading, refetchGames, setGame } = useGameStore()\n\n useEffect(() => {\n refetchGames()\n }, [])\n\n const options = games\n ?.filter(item => filter?.(item) ?? true)\n ?.map(item => ({\n label: item.name,\n value: item.game_id,\n }))\n\n const onChange = async (id: number) => {\n setGame(id)\n onGameChange?.(games.find(item => item.game_id === id)!)\n }\n\n return (\n <Space>\n <Text>{t('GameSelect.label')}</Text>\n <Select<number>\n showSearch\n optionFilterProp=\"label\"\n value={game?.game_id}\n placeholder={t('GameSelect.placeholder')}\n loading={isLoading}\n style={{ width: '200px' }}\n options={options}\n onChange={onChange}\n />\n </Space>\n )\n}\n\nexport default GameSelect\n","\n.expand {\n animation-duration: 0.2s;\n animation-name: expand;\n}\n\n@keyframes expand {\n 0%, 50% {\n width: 0;\n opacity: 0;\n }\n\n 75% {\n width: 100%;\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n","import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'\nimport * as Antd from 'antd'\nimport { Button, Divider, Space } from 'antd'\nimport type { FC, Key, PropsWithChildren, ReactNode } from 'react'\nimport { Suspense } from 'react'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../contextProvider'\nimport { Logo } from '../logo'\nimport type { NavMenuItem } from '../navMenu'\nimport { NavMenu } from '../navMenu'\nimport UserWidget from '../userWidget'\nimport ContentWrapper from './ContentWrapper'\nimport type { GameSelectProps } from './GameSelect'\nimport GameSelect from './GameSelect'\nimport { useLayoutStore } from './stores'\nimport './style.css'\n\nconst { Spin, theme } = Antd\nconst { Header, Sider, Content } = Antd.Layout\n\ntype HeaderExtra = { key: Key; children: ReactNode }\n\nexport interface LayoutProps extends Pick<GameSelectProps, 'filter' | 'onGameChange'> {\n items?: NavMenuItem[]\n hideGameSelect?: boolean\n headerExtra?: {\n left?: HeaderExtra[]\n right?: HeaderExtra[]\n }\n navWidth?: string | number\n}\n\nconst Layout: FC<PropsWithChildren<LayoutProps>> = props => {\n const { items, headerExtra, hideGameSelect, children, navWidth, filter, onGameChange } = props\n const {\n token: { colorBgContainer, colorBorder },\n } = theme.useToken()\n const { appTitle, usePermissionApiV2, localeDropdownMenu, signInSuccessRedirectUrl } = useToolkitsContext()\n const { collapsed, setCollapsed } = useLayoutStore()\n\n const onCollapse = async () => {\n setCollapsed(!collapsed)\n }\n\n return (\n <Antd.Layout>\n <Sider\n collapsible\n theme=\"light\"\n trigger={null}\n collapsed={collapsed}\n width={navWidth}\n style={{\n height: '100vh',\n overflow: 'auto',\n borderRightWidth: 1,\n borderRightStyle: 'solid',\n borderRightColor: colorBorder,\n }}\n >\n <Link to={signInSuccessRedirectUrl} className=\"flex gap-2 px-6 py-4 overflow-hidden\">\n <Logo width={32} height={32} />\n {!collapsed && <div className=\"h-8 flex items-center expand\">{appTitle}</div>}\n </Link>\n <NavMenu items={items} />\n </Sider>\n <Antd.Layout>\n <Header\n style={{\n padding: '0 24px',\n background: colorBgContainer,\n }}\n >\n <div className=\"flex justify-between items-center h-full\">\n <Space size=\"small\" split={<Divider type=\"vertical\" />} className=\"mr-6\">\n <Button\n type=\"text\"\n icon={collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}\n style={{ fontSize: '16px' }}\n onClick={onCollapse}\n />\n {usePermissionApiV2 && !hideGameSelect && <GameSelect filter={filter} onGameChange={onGameChange} />}\n {headerExtra?.left?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n </Space>\n <Space size=\"small\" split={<Divider type=\"vertical\" />}>\n {headerExtra?.right?.map(extra => <span key={extra.key}>{extra.children}</span>)}\n {localeDropdownMenu}\n <UserWidget />\n </Space>\n </div>\n </Header>\n <Content\n style={{\n overflow: 'auto',\n padding: '24px 16px',\n maxHeight: 'calc(100vh - 64px)',\n }}\n >\n <Suspense\n fallback={\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '200px',\n }}\n />\n }\n >\n <ContentWrapper>{children}</ContentWrapper>\n </Suspense>\n </Content>\n </Antd.Layout>\n </Antd.Layout>\n )\n}\n\nexport default Layout\n","export { default as Layout } from './Layout'\nexport * from './stores'\nexport type * from './types'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { pick } from 'lodash-es'\nimport type { StringifyOptions } from 'query-string'\nimport qs from 'query-string'\nimport { contextStore } from '../components/contextProvider'\nimport { useGameStore } from '../components/layout'\nimport { useTokenStore } from '../hooks/token'\n\nexport class RequestError extends Error {\n status!: number\n code?: number\n\n constructor(opts: { message?: string; status: number; code?: number }) {\n super(opts?.message)\n this.status = opts.status\n this.code = opts.code\n }\n}\n\ntype JsonResponse<T> = (\n | {\n code: number\n status?: never\n }\n | {\n code?: never\n status: number\n }\n) & {\n data: T\n msg: string\n}\n\nexport interface RequestOptions extends Omit<RequestInit, 'body'> {\n body?: Record<string | number, any> | FormData | null\n params?: Record<string | number, any> | URLSearchParams | null\n responseType?: 'json' | 'blob' | 'text'\n isGlobal?: boolean\n}\n\nexport type RequestResponse<T> = Pick<Response, 'headers' | 'status' | 'statusText' | 'url'> & { data: T }\n\nexport async function request<T = any>(url: string, opts: RequestOptions = {}): Promise<RequestResponse<T>> {\n const _opts = Object.assign(opts, { responseType: opts.responseType ?? 'json' })\n const { body, params, responseType, isGlobal, ...rest } = _opts\n\n if (!url) {\n throw new RequestError({\n status: 400,\n message: 'URL is required',\n })\n }\n\n // 处理查询参数,如果 url 中已经有查询参数,需要合并。\n const parsed = qs.parseUrl(url)\n const queryParams = Object.assign({}, parsed.query, params)\n const options: StringifyOptions = {\n skipNull: true,\n skipEmptyString: true,\n strict: true,\n encode: true,\n }\n const queryString = qs.stringify(queryParams, options)\n url = queryString ? `${parsed.url}?${queryString}` : url\n\n const headers = new Headers(_opts.headers)\n\n const token = useTokenStore?.getState()?.token\n\n if (token) {\n headers.set('Authorization', `Bearer ${token}`)\n }\n\n // TODO: 把自动注入 App-ID 移除掉。\n if (contextStore.getState().usePermissionApiV2) {\n if (isGlobal) {\n headers.set('App-ID', 'global')\n } else {\n const game = useGameStore.getState().game\n if (game) {\n headers.set('App-ID', String(game.game_id))\n }\n }\n }\n\n if (responseType === 'blob') {\n headers.append('Accept', 'application/octet-stream')\n } else if (responseType === 'json') {\n headers.append('Accept', 'application/json')\n }\n\n const isJsonBody = !!(body && typeof body === 'object' && !(body instanceof FormData))\n\n if (isJsonBody) {\n headers.set('Content-Type', 'application/json')\n }\n\n const requestOpts = Object.assign(rest, {\n headers,\n body: isJsonBody ? JSON.stringify(body) : body,\n }) as RequestInit\n\n const response = await fetch(url, requestOpts)\n\n if (!response.ok) {\n throw new RequestError({ status: response.status })\n }\n\n const responseInterceptor = contextStore.getState().responseInterceptor\n\n if (typeof responseInterceptor === 'function') {\n return await responseInterceptor(response, _opts)\n } else {\n let data: T\n\n if (responseType === 'blob') {\n data = (await response.blob()) as T\n } else if (responseType === 'json') {\n const json = (await response.json()) as JsonResponse<T>\n if (json.code === 0 || json.code === 200 || json.status === 0) {\n data = json.data\n } else {\n throw new RequestError({\n code: json.code,\n status: response.status,\n message: json.msg,\n })\n }\n } else {\n data = (await response.text()) as T\n }\n\n return {\n ...pick(response, ['headers', 'status', 'statusText', 'url']),\n data,\n }\n }\n}\n","import useSWR from 'swr'\nimport { useToolkitsContext } from '../components/contextProvider'\nimport { request } from '../utils/request'\n\ntype PermissionCheckResult = { has_all: true } | { [k: string]: boolean }\n\nexport function usePermissions(codes: string[], isGlobal?: boolean) {\n const { usePermissionApiV2 } = useToolkitsContext()\n const { data, isValidating, isLoading } = useSWR(\n codes.length > 0 ? [usePermissionApiV2 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check', codes] : null,\n ([url]) =>\n request<PermissionCheckResult>(url, {\n method: 'POST',\n body: {\n permissions: codes,\n },\n isGlobal,\n }).then(response => {\n if (response.data?.has_all) {\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = true\n return acc\n },\n {} as Record<string, boolean>,\n )\n }\n\n return codes.reduce(\n (acc, curr) => {\n acc[curr] = (response.data as Record<string, boolean>)?.[curr] ?? false\n return acc\n },\n {} as Record<string, boolean>,\n )\n }),\n {\n revalidateOnFocus: false,\n },\n )\n\n return { data, isValidating, isLoading }\n}\n\nexport function usePermission(code: string | undefined, isGlobal?: boolean) {\n const { data, isValidating, isLoading } = usePermissions(code ? [code] : [], isGlobal)\n\n if (code === undefined) {\n return {\n accessible: true,\n isValidating: false,\n isLoading: false,\n }\n }\n\n return {\n accessible: data?.[code] ?? false,\n isValidating,\n isLoading,\n }\n}\n","import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { useTranslation } from '../locale'\nimport { usePermissions } from '../../hooks/permission'\n\nexport interface PermissionButtonProps extends ButtonProps {\n code: string | string[]\n showLoading?: boolean\n isGlobal?: boolean\n}\n\nconst PermissionButton: FC<PropsWithChildren<PermissionButtonProps>> = props => {\n const { children, code, showLoading, isGlobal, disabled, ...restProps } = props\n const { data, isLoading } = usePermissions(Array.isArray(code) ? code : [code], isGlobal)\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 if (!Object.values(data ?? {})?.some(Boolean)) {\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n <Button disabled {...restProps}>\n {children}\n </Button>\n </Tooltip>\n )\n }\n\n return (\n <Button disabled={disabled} {...restProps}>\n {children}\n </Button>\n )\n}\n\nexport default PermissionButton\n","export { default as PermissionButton } from './PermissionButton'\nexport type { PermissionButtonProps } from './PermissionButton'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isEqual } from 'lodash-es'\nimport type { MutatorCallback, MutatorOptions } from 'swr'\nimport { mutate } from 'swr'\nimport { create } from 'zustand'\nimport type { QueryListPayload } from './QueryList'\n\ninterface QueryListState {\n keyMap: Map<string, string | null>\n payloadMap: Map<string, QueryListPayload>\n getPayload(route: string): QueryListPayload\n setPayload(route: string, payload: QueryListPayload): void\n refetch(route: string, payload: QueryListPayload, force?: boolean): void\n mutate<Data = any, T = Data>(\n route: string,\n data?: T | Promise<T> | MutatorCallback<T>,\n opts?: boolean | MutatorOptions<Data, T>,\n ): Promise<T | undefined>\n jump(route: string, page?: number, force?: boolean): void\n}\n\nexport const useQueryListStore = create<QueryListState>((set, get) => ({\n keyMap: new Map(),\n payloadMap: new Map(),\n getPayload(route) {\n return get().payloadMap.get(route) ?? { page: 1 }\n },\n setPayload(route, payload) {\n set(state => ({\n payloadMap: new Map(state.payloadMap).set(route, payload),\n }))\n },\n refetch(route, payload, force = true) {\n const prevPayload = get().getPayload(route)\n const nextPayload = { ...prevPayload, ...payload }\n\n // FIXME: 后续使用 unstable_serialize 来比较前后的 key,因为仅仅比较 payload 会有问题\n if (isEqual(prevPayload, nextPayload)) {\n get().mutate(route, force)\n } else {\n get().setPayload(route, nextPayload)\n }\n },\n mutate(route, data, opts) {\n const key = get().keyMap.get(route)\n return mutate(key, data, opts)\n },\n // 不传 page 参数时,刷新当前页\n jump(route, page, force = true) {\n get().refetch(route, { page: page ?? get().getPayload(route).page }, force)\n },\n}))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { App, Form, Result, Spin, Table } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { TableProps } from 'antd/es/table'\nimport type { ReactElement, ReactNode, Ref } from 'react'\nimport { cloneElement, forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\nimport useSWR, { unstable_serialize } from 'swr'\nimport { usePermission } from '../../hooks/permission'\nimport type { RequestOptions } from '../../utils/request'\nimport { request } from '../../utils/request'\nimport { useToolkitsContext } from '../contextProvider'\nimport type { FilterFormWrapperProps } from '../filterFormWrapper'\nimport FilterFormWrapper from '../filterFormWrapper'\nimport { useGameStore } from '../layout'\nimport { useTranslation } from '../locale'\nimport { useQueryListStore } from './stores'\n\nexport interface ListResponse<T = any> {\n list: T[]\n total: number\n}\n\nexport interface QueryListPayload<FormValues = any> {\n page?: number\n size?: number\n formValue?: FormValues\n}\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, Value, Response> {\n response: Response | undefined\n dataSource: Item[] | undefined\n form: FormInstance<Value>\n}\n\nexport interface QueryListProps<Item extends AnyObject = AnyObject, Value = any, Response = any>\n extends Omit<TableProps<Item>, 'pagination' | 'dataSource' | 'loading'>,\n Pick<FilterFormWrapperProps, 'buttonsAlign' | 'showReset'> {\n code?: string\n isGlobal?: boolean\n route: string\n method?: 'GET' | 'POST'\n refreshInterval?: number\n // 无分页\n onePage?: boolean\n defaultSize?: number\n headers?: RequestOptions['headers']\n body?: RequestOptions['body'] | ((payload: QueryListPayload<Value>) => RequestOptions['body'])\n params?: RequestOptions['params'] | ((payload: QueryListPayload<Value>) => RequestOptions['params'])\n tableExtra?: ReactNode | ((form: FormInstance<Value>) => ReactNode)\n form?: FormInstance<Value>\n renderForm?: (form: FormInstance<Value>) => ReactElement\n extra?: (opts: { form: FormInstance<Value>; data: Response | undefined }) => ReactNode\n afterSuccess?: (action: QueryListAction, response: Response) => void\n getTotal?: (response: Response | undefined) => number | undefined\n getDataSource?: (response: Response | undefined, form: FormInstance<Value>) => Item[] | undefined\n}\n\nconst InternalQueryList = <\n Item extends AnyObject = AnyObject,\n Value = any,\n // 默认接口返回值类型为 ListResponse<Item>,当符合时无需设置 getTotal、getDataSource 就可以让组件正确获取 total 与 dataSource。\n Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response>,\n ref: Ref<QueryListRef<Item, Value, Response>>,\n) => {\n const internalProps = {\n method: 'GET',\n defaultSize: 10,\n refreshInterval: 0,\n getTotal: (response: Response | undefined) => (response as ListResponse<Item>)?.total,\n getDataSource: (response: Response | undefined) => (response as ListResponse<Item>)?.list,\n ...props,\n }\n\n const {\n route,\n code,\n headers,\n isGlobal,\n onePage,\n method,\n buttonsAlign,\n showReset,\n defaultSize,\n refreshInterval,\n tableExtra,\n form,\n extra,\n renderForm,\n afterSuccess,\n body,\n params,\n getTotal,\n getDataSource,\n ...tableProps\n } = internalProps\n\n const { notification } = App.useApp()\n const { t } = useTranslation()\n const [_form] = Form.useForm<Value>(form)\n const { accessible, isLoading } = usePermission(code, isGlobal)\n const action = useRef<QueryListAction>(QueryListAction.Init)\n const originalData = useRef<Response>()\n const { game } = useGameStore()\n const { usePermissionApiV2 } = useToolkitsContext()\n const [isValid, setIsValid] = useState(false)\n const { keyMap, getPayload, refetch } = useQueryListStore()\n const { page, size = defaultSize, formValue } = getPayload(route)\n const payload = { page, size, formValue }\n\n const _body = useMemo(() => {\n return typeof body === 'function'\n ? body(payload)\n : method === 'POST'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...body,\n }\n : undefined\n }, [onePage, method, page, size, formValue, body])\n\n const _params = useMemo(\n () =>\n typeof params === 'function'\n ? params(payload)\n : method === 'GET'\n ? {\n ...formValue,\n ...(!onePage ? { page, size } : undefined),\n ...params,\n }\n : undefined,\n [onePage, method, page, size, formValue, params],\n )\n\n const _headers = useMemo(() => {\n const newHeaders = new Headers(headers)\n\n if (usePermissionApiV2) {\n if (isGlobal) {\n newHeaders.set('App-ID', 'global')\n } else if (game) {\n newHeaders.set('App-ID', String(game.id))\n }\n }\n return newHeaders\n }, [usePermissionApiV2, isGlobal, game, headers])\n\n const key = useMemo(() => {\n if (!accessible || !isValid) {\n return null\n }\n\n const httpOption = {\n route,\n method,\n body: _body,\n params: _params,\n headers: _headers,\n }\n\n const serializedKey = unstable_serialize(httpOption)\n keyMap.set(route, serializedKey)\n return serializedKey\n }, [method, route, _body, _params, _headers, isValid, accessible])\n\n const shouldPoll = useRef(false)\n\n const { data, isValidating } = useSWR(\n key,\n async () => {\n const response = await request<Response>(route, {\n method,\n body: _body,\n params: _params,\n headers: _headers,\n })\n\n return response.data\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n refreshInterval: shouldPoll.current ? refreshInterval : 0,\n onSuccess(response) {\n shouldPoll.current = true\n afterSuccess?.(action.current, response)\n },\n onError(error) {\n shouldPoll.current = false\n // FIXME: 暂时在此处处理错误,后续需要优化。\n\n notification.error({\n message: '请求出错',\n description: error.message,\n })\n },\n },\n )\n\n const dataSource = useMemo(() => getDataSource(data, _form), [data, form, getDataSource])\n const total = useMemo(() => getTotal(data), [data, getTotal])\n\n const pagination = useMemo(\n () =>\n !onePage && {\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 refetch(route, {\n page: currentPage,\n size: currentSize,\n })\n },\n },\n [page, size, onePage, total],\n )\n\n const onConfirm = async () => {\n action.current = QueryListAction.Confirm\n try {\n await _form.validateFields()\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n const onReset = async () => {\n action.current = QueryListAction.Reset\n _form.resetFields()\n\n try {\n await _form.validateFields({ validateOnly: true })\n setIsValid(true)\n refetch(route, {\n page: 1,\n formValue: _form.getFieldsValue(),\n })\n } catch (error) {\n setIsValid(false)\n }\n }\n\n useEffect(() => {\n // 在表单字段注册到 Form 实例前调用 validateFields 会得到错误的结果,所以需要延迟调用。\n const timer = setTimeout(async () => {\n try {\n _form.resetFields()\n const value = await _form.validateFields({ validateOnly: true })\n refetch(route, {\n page: 1,\n formValue: value,\n })\n setIsValid(true)\n } catch (err) {\n setIsValid(false)\n }\n }, 0)\n\n return () => {\n clearTimeout(timer)\n }\n }, [form, game])\n\n useImperativeHandle(ref, () => ({\n response: data,\n dataSource,\n form: _form,\n }))\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n const formRenderer = typeof renderForm === 'function' && (\n <FilterFormWrapper\n showReset={showReset}\n buttonsAlign={buttonsAlign}\n isConfirming={isValidating}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {cloneElement(renderForm(_form), {\n onKeyUp: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n onConfirm()\n }\n },\n })}\n </FilterFormWrapper>\n )\n\n const extraRenderer = extra && <div className=\"mt-2 mb-4\">{extra({ form: _form, data: originalData.current })}</div>\n\n return (\n <div>\n {formRenderer}\n {extraRenderer}\n {typeof tableExtra === 'function' ? tableExtra(_form) : tableExtra}\n <Table {...tableProps} dataSource={dataSource} loading={isValidating} pagination={pagination} />\n </div>\n )\n}\n\nconst QueryList = forwardRef(InternalQueryList) as <\n Item extends AnyObject = AnyObject,\n Value extends object | undefined = undefined,\n Response = ListResponse<Item>,\n>(\n props: QueryListProps<Item, Value, Response> & { ref?: Ref<QueryListRef<Item, Value, Response>> },\n) => ReactElement\n\nexport default QueryList\n","export { default as QueryList, QueryListAction } from './QueryList'\nexport type { QueryListProps, QueryListRef } from './QueryList'\nexport { useQueryListStore } from './stores'\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useMemo, useState } from 'react'\nimport { create } from 'zustand'\n\ninterface ModalState {\n open: Map<number, boolean>\n getOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n}\n\nexport const useModalStore = create<ModalState>((set, get) => ({\n open: new Map(),\n getOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({ open: new Map(get().open).set(uuid, true) })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n}))\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}\n\nlet id = 0\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, ...modalProps } = props\n const uuid = useMemo(() => ++id, [])\n const modalStore = useModalStore()\n const open = modalStore.getOpen(uuid)\n const [confirmLoading, setConfirmLoading] = useState(false)\n\n const isRenderFunction = typeof content === 'function'\n\n const show = () => {\n modalStore.show(uuid)\n }\n\n const hide = () => {\n modalStore.hide(uuid)\n }\n\n const onCancel: ModalProps['onCancel'] = () => {\n hide()\n }\n\n const onOk = async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n } finally {\n setConfirmLoading(false)\n }\n }\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide }) : content}\n </Modal>\n )\n\n return {\n uuid,\n show,\n 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 { useState } from 'react'\nimport type { UseModalOperation, UseModalProps } from './modal'\nimport { useModal } from './modal'\n\ntype RecursivePartial<T> =\n NonNullable<T> extends object\n ? {\n [P in keyof T]?: NonNullable<T[P]> extends (infer U)[]\n ? RecursivePartial<U>[]\n : NonNullable<T[P]> extends object\n ? RecursivePartial<T[P]>\n : T[P]\n }\n : T\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = any>\n extends Omit<UseModalProps, 'afterClose' | 'onConfirm' | 'content'> {\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}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = any>(\n props: UseFormModalProps<Values, ExtraValues>,\n) {\n const { content, form, formProps, onConfirm, ...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 hanldeConfirm = async () => {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues as ExtraValues)\n hide()\n }\n\n const afterClose = () => {\n internalForm.resetFields()\n }\n\n const { uuid, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues as ExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: hanldeConfirm,\n afterClose,\n })\n\n const onShow = ({\n initialValues,\n extraValues,\n }: {\n initialValues?: RecursivePartial<Values>\n extraValues?: ExtraValues\n } = {}) => {\n if (extraValues) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n }\n\n return {\n uuid,\n show: onShow,\n hide,\n modal,\n }\n}\n","import useSWR from 'swr'\nimport useSWRMutation from 'swr/mutation'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport type { Game } from '../../../components/gameSelect'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllPermissions() {\n return useSWR('/api/usystem/user/allPermssions', url =>\n request<PermissionEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllPermissionsV2() {\n return useSWR('/api/usystem/user/allPermissionsV2', url =>\n request<{\n game: Game[]\n permission: PermissionEnumItem[]\n }>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useAllRoles() {\n const { accessible } = usePermission('200005', true)\n return useSWR(accessible ? '/api/usystem/role/all' : null, url =>\n request<RoleEnumItem[]>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useRole(name: string) {\n const { usePermissionApiV2 } = useToolkitsContext()\n return useSWR(`/api/usystem/role/${usePermissionApiV2 ? 'infoV2' : 'info'}?name=${name}`, (url: string) =>\n request<RoleV1 | RoleV2>(url, { isGlobal: true }).then(response => response.data),\n )\n}\n\nexport function useCreateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/createV2' : '/api/usystem/role/create',\n (\n url: string,\n {\n arg,\n }: {\n arg: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateRole() {\n const { usePermissionApiV2 } = useToolkitsContext()\n\n return useSWRMutation(\n usePermissionApiV2 ? '/api/usystem/role/updateV2' : '/api/usystem/role/update',\n (\n url: string,\n {\n arg,\n }: {\n arg: { id: number; name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useRemoveRole() {\n return useSWRMutation(\n '/api/usystem/role/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: number; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useCreateUser() {\n return useSWRMutation(\n '/api/usystem/user/create',\n (\n url,\n {\n arg,\n }: {\n arg: { name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useUpdateUser() {\n return useSWRMutation(\n '/api/usystem/user/update',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string; roles: string[] }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\n )\n}\n\nexport function useRemoveUser() {\n return useSWRMutation(\n '/api/usystem/user/delete',\n (\n url,\n {\n arg,\n }: {\n arg: { id: string; name: string }\n },\n ) =>\n request(url, {\n method: 'post',\n body: arg,\n isGlobal: true,\n }),\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 } from 'react'\nimport { useTranslation } from '../../../../components/locale'\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\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 setActiveKey((permissions ?? []).map(({ category }) => category))\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 return (\n <Collapse\n style={{ width: '100%' }}\n collapsible=\"header\"\n activeKey={activeKey}\n 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 onChange={onCollapseChange}\n />\n )\n}\n\nexport default PermissionCollapse\n","import { Skeleton, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissions } from '../../hooks'\nimport type { RoleV1 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\n\ninterface PermissionListV1Props extends PermissionListPropsBase {\n value?: RoleV1['permissions']\n onChange?: (checkedValue: RoleV1['permissions']) => void\n}\n\nconst PermissionListV1: FC<PermissionListV1Props> = 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 PermissionListV1\n","import { Button, Card, Divider, Empty, Select, Skeleton, Space, Typography } from 'antd'\nimport type { FC } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from '../../../../components/locale'\nimport { useAllPermissionsV2 } from '../../hooks'\nimport type { RoleV2 } from '../../types'\nimport PermissionCollapse from '../permissionCollapse'\nimport type { PermissionListPropsBase } from '../permissionList'\n\nconst { Text } = Typography\nconst { Option } = Select\n\ninterface PermissionListV2Props extends PermissionListPropsBase {\n value?: RoleV2['permissions']\n onChange?: (checkedValue: RoleV2['permissions']) => void\n}\n\nconst PermissionListV2: FC<PermissionListV2Props> = props => {\n const { expand = true, value, readonly, onChange } = props\n const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2()\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 { 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 => 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 key={game.id} value={game.id} disabled={gameList.some(({ gameId }) => gameId === game.id)}>\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 PermissionListV2\n","import type { FC } from 'react'\nimport { useToolkitsContext } from '../../../../components/contextProvider'\nimport type { RoleV1, RoleV2 } from '../../types'\nimport PermissionListV1 from '../permissionListV1'\nimport PermissionListV2 from '../permissionListV2'\n\nexport interface PermissionListPropsBase {\n expand?: boolean\n readonly?: boolean\n}\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 const { usePermissionApiV2 } = useToolkitsContext()\n\n return (\n <>\n {usePermissionApiV2 ? (\n <PermissionListV2 {...props} value={value as RoleV2['permissions']} />\n ) : (\n <PermissionListV1 {...props} value={value as RoleV1['permissions']} />\n )}\n </>\n )\n}\n\nexport default PermissionList\n","export interface PermissionEnumItem {\n category: string\n is_common?: boolean\n permissions: {\n label: string\n value: string\n route: string\n }[]\n}\n\nexport interface RoleEnumItem {\n id: string\n name: string\n}\n\nexport type RoleListItem = RoleV1 | RoleV2\n\nexport interface RoleV1 {\n id: number\n name: string\n ctime: string\n permissions: string[]\n}\n\nexport interface RoleV2 {\n id: number\n name: string\n ctime: string\n permissions: Record<string, string[]>\n}\n\nexport interface UserListItem {\n id: string\n name: string\n ctime: string\n roles: string[]\n}\n","export { default as PermissionList } from './components/permissionList'\nexport * from './hooks'\nexport * from './types'\n","import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Select, Space, Tag } from 'antd'\nimport { produce } from 'immer'\nimport type { FC } from 'react'\nimport { Link } from 'react-router-dom'\nimport Highlight from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport type { UserListItem } from '../../../features/permission'\nimport { useAllRoles, useCreateUser, useRemoveUser, useUpdateUser } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\n\nconst { Option } = Select\n\nexport const route = '/api/usystem/user/list'\n\ninterface FormSchema {\n id: string\n name: string\n roles: string[]\n}\n\ninterface ExtraValues {\n id: string\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { jump, mutate } = useQueryListStore()\n const { data: roles, isLoading } = useAllRoles()\n const create = useCreateUser()\n const update = useUpdateUser()\n\n const title = isCreate ? t('UserList.createTitle') : t('UserList.updateTitle')\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} />\n </Form.Item>\n <Form.Item label={t('global.role')} name=\"roles\">\n <Select allowClear mode=\"multiple\" loading={isLoading}>\n {(roles ?? []).map(role => (\n <Option value={role.name} key={role.id}>\n {role.name}\n </Option>\n ))}\n </Select>\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, ExtraValues>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger(values)\n jump(route, 1)\n message.success(t('UserList.createSuccessfully'))\n } else {\n await update.trigger(values)\n mutate<{ List: UserListItem[]; Total: number }>(\n route,\n prev => {\n return produce(prev, draft => {\n if (draft?.List) {\n const index = draft.List?.findIndex(item => item.id === extraValues?.id)\n if (index !== -1) {\n draft.List[index].roles = values.roles\n }\n }\n })\n },\n { revalidate: false },\n )\n message.success(t('UserList.updateSuccessfully'))\n }\n }\n\n return useFormModal({\n title,\n formProps: {\n labelCol: { flex: '80px' },\n },\n content,\n onConfirm,\n })\n}\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const remove = useRemoveUser()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const { t } = useTranslation()\n\n const columns: TableColumnsType<UserListItem> = [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\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: (value: UserListItem) => (\n <Space>\n <PermissionButton\n isGlobal\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n showUpdateModal({\n initialValues: {\n name: value.name,\n roles: value.roles,\n },\n extraValues: {\n id: value.id,\n },\n })\n }}\n >\n {t('global.update')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('UserList.deleteTitle'),\n content: (\n <Highlight texts={[value.name]}>{t('UserList.deleteContent', { user: value.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: value.id,\n name: value.name,\n })\n mutate<{ List: UserListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === value.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('UserList.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </PermissionButton>\n </Space>\n ),\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <PermissionButton\n isGlobal\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('UserList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<UserListItem, undefined, { List: UserListItem[]; Total: number }>\n isGlobal\n code=\"100001\"\n route={route}\n rowKey=\"id\"\n columns={columns}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default UserList\n","import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { FormProps, TableColumnsType } from 'antd'\nimport { App, Card, Form, Input, Space } from 'antd'\nimport { produce } from 'immer'\nimport { Link } from 'react-router-dom'\nimport { useToolkitsContext } from '../../../components/contextProvider'\nimport Highlight from '../../../components/highlight'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionButton } from '../../../components/permissionButton'\nimport { QueryList } from '../../../components/queryList'\nimport { useQueryListStore } from '../../../components/queryList/stores'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../../features/permission'\nimport { PermissionList, useCreateRole, useRemoveRole, useUpdateRole } from '../../../features/permission'\nimport type { UseFormModalProps } from '../../../hooks/formModal'\nimport { useFormModal } from '../../../hooks/formModal'\nimport { usePermission } from '../../../hooks/permission'\nimport { request } from '../../../utils/request'\n\nconst route = '/api/usystem/role/list'\n\ninterface FormSchema {\n name: string\n permissions: RoleListItem['permissions']\n}\n\nconst useModal = (isCreate?: boolean) => {\n const { message } = App.useApp()\n const { t } = useTranslation()\n const { jump, mutate } = useQueryListStore()\n const create = useCreateRole()\n const update = useUpdateRole()\n\n const title = isCreate ? t('RoleList.createTitle') : t('RoleList.updateTitle')\n\n const formProps: FormProps = {\n layout: 'vertical',\n }\n\n const content = (\n <>\n <Form.Item label={t('global.name')} name=\"name\" rules={[{ required: true }]}>\n <Input disabled={!isCreate} addonBefore=\"role_\" />\n </Form.Item>\n <Form.Item name=\"permissions\">\n <PermissionList />\n </Form.Item>\n </>\n )\n\n const onConfirm: UseFormModalProps<FormSchema, { id: number }>['onConfirm'] = async (values, extraValues) => {\n if (isCreate) {\n await create.trigger({\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n jump(route, 1)\n message.success(t('RoleList.createSuccessfully'))\n } else {\n await update.trigger({\n id: extraValues?.id as number,\n name: `role_${values.name}`,\n permissions: values.permissions,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(\n route,\n prev =>\n produce(prev, draft => {\n const match = draft?.List?.find(item => item.id === extraValues?.id)\n\n if (match) {\n match.permissions = values.permissions\n }\n }),\n { revalidate: false },\n )\n message.success(t('RoleList.updateSuccessfully'))\n }\n }\n\n return useFormModal<{\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }>({\n title,\n width: '50vw',\n formProps,\n content,\n onConfirm,\n })\n}\n\nconst RoleList = () => {\n const { accessible: viewable } = usePermission('200005', true)\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const { usePermissionApiV2 } = useToolkitsContext()\n const { mutate } = useQueryListStore()\n const { show: showCreateModal, modal: createModal } = useModal(true)\n const { show: showUpdateModal, modal: updateModal } = useModal()\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const { data: role } = await request<RoleV1 | RoleV2>(\n `/api/usystem/role/info${usePermissionApiV2 ? 'V2' : ''}?name=${record.name}`,\n { isGlobal: true },\n )\n showUpdateModal({\n initialValues: {\n permissions: role?.permissions,\n name: role?.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: role?.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 isGlobal\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.edit')}\n </PermissionButton>\n <PermissionButton\n isGlobal\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('RoleList.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('RoleList.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.trigger({\n id: record.id,\n name: record.name,\n })\n mutate<{ List: RoleListItem[]; Total: number }>(route, prev => {\n return produce(prev, draft => {\n const index = draft?.List?.findIndex(item => item.id === record.id)\n if (index) {\n draft?.List?.splice(index, 1)\n }\n })\n })\n message.success(t('RoleList.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 isGlobal\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('RoleList.createTitle')}\n </PermissionButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n isGlobal\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n route={route}\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default RoleList\n","import { Breadcrumb, Card, Descriptions, Skeleton } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\nimport { useTranslation } from '../../../components/locale'\nimport { PermissionList, useRole } from '../../../features/permission'\n\nconst RoleDetail = () => {\n const params = useParams()\n const { data, isLoading } = useRole(params.name as string)\n const { t } = useTranslation()\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: 24 }}\n items={[\n {\n key: '1',\n title: <Link to=\"..\">{t('global.role')}</Link>,\n },\n {\n key: '2',\n title: params.name,\n },\n ]}\n />\n <Card title={t('RoleDetail.title')}>\n <Skeleton loading={isLoading}>\n <Descriptions column={3} layout=\"vertical\">\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 <PermissionList readonly value={data?.permissions} />\n </Skeleton>\n </Card>\n </>\n )\n}\n\nexport default RoleDetail\n","import type { ContextState } from './components/contextProvider'\nimport { ContextProvider, contextStore, useToolkitsContext } from './components/contextProvider'\nimport type { DynamicTagsProps } from './components/dynamicTags'\nimport DynamicTags from './components/dynamicTags'\nimport ExpandableParagraph from './components/expandableParagraph'\nimport type { FilterFormWrapperProps } from './components/filterFormWrapper'\nimport FilterFormWrapper from './components/filterFormWrapper'\nimport type { HighlightTextsProps } from './components/highlight'\nimport Highlight from './components/highlight'\nimport type { InfiniteListProps } from './components/infiniteList'\nimport { InfiniteList } from './components/infiniteList'\nimport type { Game } from './components/layout'\nimport { Layout, useGameStore } from './components/layout'\nimport type { NavMenuItem } from './components/navMenu'\nimport { NavMenu } from './components/navMenu'\nimport type { PermissionButtonProps } from './components/permissionButton'\nimport { PermissionButton } from './components/permissionButton'\nimport type { PermissionGuardProps } from './components/permissionGuard'\nimport PermissionGuard from './components/permissionGuard'\nimport type { QueryListProps, QueryListRef } from './components/queryList'\nimport { QueryList, QueryListAction, useQueryListStore } from './components/queryList'\nimport UserWidget from './components/userWidget'\nimport type { UseFormModalProps } from './hooks/formModal'\nimport { useFormModal } from './hooks/formModal'\nimport { useModal, useModalStore } from './hooks/modal'\nimport { usePermission, usePermissions } from './hooks/permission'\nimport type { TokenState } from './hooks/token'\nimport { useTokenStore, useTokenValidation } from './hooks/token'\nimport NotFound from './pages/notFound'\nimport OperationLogList from './pages/operationLogList'\nimport PermissionRoutes from './pages/permission'\nimport SignIn, { useRedirectToSignIn } from './pages/signIn'\nimport './styles/index.css'\nimport type { RequestOptions, RequestResponse } from './utils/request'\nimport { RequestError, request } from './utils/request'\nimport { mixedStorage } from './utils/storage'\n\nexport {\n ContextProvider,\n DynamicTags,\n ExpandableParagraph,\n FilterFormWrapper,\n Highlight,\n InfiniteList,\n Layout,\n NavMenu,\n NotFound,\n OperationLogList,\n PermissionButton,\n PermissionGuard,\n PermissionRoutes,\n QueryList,\n QueryListAction,\n RequestError,\n SignIn,\n UserWidget,\n contextStore,\n mixedStorage,\n request,\n useFormModal,\n useGameStore,\n useModal,\n useModalStore,\n usePermission,\n usePermissions,\n useQueryListStore,\n useRedirectToSignIn,\n useTokenStore,\n useTokenValidation,\n useToolkitsContext,\n type ContextState,\n type DynamicTagsProps,\n type FilterFormWrapperProps,\n type Game,\n type HighlightTextsProps,\n type InfiniteListProps,\n type NavMenuItem,\n type PermissionButtonProps,\n type PermissionGuardProps,\n type QueryListProps,\n type QueryListRef,\n type RequestOptions,\n type RequestResponse,\n type TokenState,\n type UseFormModalProps,\n}\n","import { PlusOutlined } from '@ant-design/icons'\nimport type { InputRef } from 'antd'\nimport { Input, Space, Tag, theme } from 'antd'\nimport type { CSSProperties, ChangeEvent, FC } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { useTranslation } from '../locale'\n\nexport interface DynamicTagsProps {\n initialTags?: string[]\n addable?: boolean\n removable?: boolean\n // 返回 Promise。如果返回 Promise.resolve(true),则添加; 如果返回 Promise.resolve(false) 或 Promise.reject,则不添加\n addCallback?: (addedTag: string) => Promise<boolean>\n // 返回 Promise。如果返回 Promise.resolve(true),则删除; 如果返回 Promise.resolve(false) 或 Promise.reject,则不删除\n removeCallback?: (removedTag: string) => Promise<boolean>\n}\n\nconst DynamicTags: FC<DynamicTagsProps> = props => {\n const { initialTags, addable, removable, addCallback, removeCallback } = props\n const { t } = useTranslation()\n const { token } = theme.useToken()\n const [tags, setTags] = useState<string[]>([])\n const [inputVisible, setInputVisible] = useState(false)\n const [inputValue, setInputValue] = useState('')\n const [editInputIndex, setEditInputIndex] = useState(-1)\n const [editInputValue, setEditInputValue] = useState<string>('')\n const inputRef = useRef<InputRef>(null)\n const editInputRef = useRef<InputRef>(null)\n\n useEffect(() => {\n setTags(initialTags ?? [])\n }, [initialTags])\n\n useEffect(() => {\n if (inputVisible) {\n inputRef.current?.focus()\n }\n }, [inputVisible])\n\n useEffect(() => {\n editInputRef.current?.focus()\n }, [inputValue])\n\n const handleClose = async (removedTag: string) => {\n const success = await removeCallback?.(removedTag)\n\n if (success) {\n const newTags = tags.filter(tag => tag !== removedTag)\n setTags(newTags)\n }\n }\n\n const showInput = () => {\n setInputVisible(true)\n }\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputConfirm = async () => {\n if (inputValue && tags.indexOf(inputValue) === -1) {\n const success = await addCallback?.(inputValue)\n\n if (success) {\n setTags([...tags, inputValue])\n }\n }\n\n setInputVisible(false)\n setInputValue('')\n }\n\n const handleEditInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n setEditInputValue(e.target.value)\n }\n\n const handleEditInputConfirm = () => {\n const newTags = [...tags]\n newTags[editInputIndex] = editInputValue\n setTags(newTags)\n setEditInputIndex(-1)\n setInputValue('')\n }\n\n const tagInputStyle: CSSProperties = {\n width: 78,\n verticalAlign: 'top',\n }\n\n const tagPlusStyle: CSSProperties = {\n background: token.colorBgContainer,\n borderStyle: 'dashed',\n }\n\n return (\n <Space wrap size={[0, 8]}>\n <Space wrap size={[0, 8]}>\n {tags.map((tag, index) => {\n if (editInputIndex === index) {\n return (\n <Input\n ref={editInputRef}\n key={tag}\n size=\"small\"\n style={tagInputStyle}\n value={editInputValue}\n onChange={handleEditInputChange}\n onBlur={handleEditInputConfirm}\n onPressEnter={handleEditInputConfirm}\n />\n )\n }\n\n return (\n <Tag\n key={tag}\n closable={removable}\n style={{ userSelect: 'none' }}\n onClose={async e => {\n e.preventDefault()\n await handleClose(tag)\n }}\n >\n <span\n onDoubleClick={e => {\n if (index !== 0) {\n setEditInputIndex(index)\n setEditInputValue(tag)\n e.preventDefault()\n }\n }}\n >\n {tag}\n </span>\n </Tag>\n )\n })}\n </Space>\n {addable &&\n (inputVisible ? (\n <Input\n ref={inputRef}\n type=\"text\"\n size=\"small\"\n style={tagInputStyle}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputConfirm}\n onPressEnter={handleInputConfirm}\n />\n ) : (\n <Tag style={tagPlusStyle} onClick={showInput}>\n <PlusOutlined />\n {t('global.add')}\n </Tag>\n ))}\n </Space>\n )\n}\n\nexport default DynamicTags\n","import { Typography } from 'antd'\nimport type { ParagraphProps } from 'antd/es/typography/Paragraph'\nimport type { FC } from 'react'\nimport { useState } from 'react'\n\ntype ExpandableParagraphProps = Omit<ParagraphProps, 'ellipsis' | 'className'>\n\nconst ExpandableParagraph: FC<ExpandableParagraphProps> = props => {\n const { children, ...restProps } = props\n const [expanded, setExpanded] = useState(false)\n\n return (\n <Typography.Paragraph\n {...restProps}\n className=\"mb-0\"\n ellipsis={{\n rows: 2,\n expandable: 'collapsible',\n expanded,\n onExpand: (_, info) => {\n setExpanded(info.expanded)\n },\n }}\n >\n {children}\n </Typography.Paragraph>\n )\n}\n\nexport default ExpandableParagraph\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormInstance } from 'antd'\nimport { Button, Form, Result, Spin, Table } from 'antd'\nimport type { TableProps } from 'antd/es/table'\nimport qs from 'query-string'\nimport type { Key, ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\nimport useSWRInfinite from 'swr/infinite'\nimport { usePermission } from '../../hooks/permission'\nimport { request } from '../../utils/request'\nimport FilterFormWrapper from '../filterFormWrapper'\nimport { useTranslation } from '../locale'\n\ninterface InfiniteListExtra<Values> {\n key: Key\n children: ReactNode | ((form: FormInstance<Values>) => ReactNode)\n}\n\nexport interface InfiniteListProps<Item, Values, Response>\n extends Pick<TableProps<Item>, 'columns' | 'rowKey' | 'tableLayout' | 'expandable' | 'rowSelection' | 'bordered'> {\n action: string\n getRowKey: (response: Response) => any\n getDataSource: (data: Response[] | undefined) => Item[]\n code?: string\n headers?: Record<string, string> | ((form: FormInstance<Values>) => Record<string, string>)\n renderForm?: (form: FormInstance<Values>) => ReactNode\n transformArg: (values: Values, rowKey?: string) => Record<any, any>\n hasMore?: (data: Response[] | undefined) => boolean\n isGlobal?: boolean\n extras?: InfiniteListExtra<Values>[]\n}\n\nconst InfiniteList = <Item extends object, Values extends object | undefined = undefined, Response = any>(\n props: InfiniteListProps<Item, Values, Response>,\n) => {\n const {\n code,\n action,\n extras,\n headers,\n isGlobal,\n getRowKey,\n getDataSource,\n hasMore,\n renderForm,\n transformArg,\n ...tableProps\n } = props\n const { t } = useTranslation()\n const [form] = Form.useForm<Values>()\n const { accessible, isLoading } = usePermission(code)\n const [isValid, setIsValid] = useState(false)\n const [formValues, setFormValues] = useState<Values>()\n\n const getKey = (pageIndex: number, previousPageData: Response) => {\n if (!isValid) return null\n\n const rowKey = pageIndex !== 0 ? getRowKey(previousPageData) : undefined\n const args = transformArg(formValues as Values, rowKey)\n const queryString = qs.stringify(args)\n\n return queryString ? `${action}?${qs.stringify(args)}` : action\n }\n\n const {\n data,\n size,\n setSize,\n isValidating: isListValidating,\n } = useSWRInfinite(\n getKey,\n arg => {\n return request<Response>(arg, {\n headers: typeof headers === 'function' ? headers(form) : headers,\n isGlobal,\n }).then(response => response.data)\n },\n {\n shouldRetryOnError: false,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n },\n )\n\n const dataSource = getDataSource(data)\n const isLoadingMore = isListValidating || (size > 0 && data && typeof data[size - 1] === 'undefined')\n const isReachingEnd = typeof hasMore !== 'undefined' ? !hasMore(data) : true\n const isEmpty = !dataSource || dataSource.length === 0\n\n const onConfirm = async () => {\n const values = await form.getFieldsValue()\n setFormValues(values)\n\n try {\n await form.validateFields()\n setSize(1)\n setIsValid(true)\n } catch (_) {\n setSize(0)\n setIsValid(false)\n }\n }\n\n const loadMore = () => {\n setSize(size + 1)\n }\n\n const onReset = async () => {\n try {\n form.resetFields()\n await form.validateFields({ validateOnly: true })\n setSize(1)\n } catch (_) {\n setSize(0)\n }\n }\n\n useEffect(() => {\n if (accessible) {\n form\n .validateFields({ validateOnly: true })\n .then(values => {\n setFormValues(values)\n setIsValid(true)\n })\n .catch(() => {\n setIsValid(false)\n })\n }\n }, [accessible])\n\n if (isLoading) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status={403} subTitle={t('global.noEntitlement')} />\n }\n\n return (\n <>\n {renderForm ? (\n <FilterFormWrapper\n extras={extras?.map(extra => ({\n key: extra.key,\n children: typeof extra.children === 'function' ? extra.children(form) : extra.children,\n }))}\n onReset={onReset}\n onConfirm={onConfirm}\n >\n {renderForm(form)}\n </FilterFormWrapper>\n ) : (\n <Form form={form} />\n )}\n <Table {...tableProps} dataSource={dataSource} loading={isLoadingMore} pagination={false} />\n {!isEmpty && (\n <Button\n block\n loading={isLoadingMore}\n type=\"link\"\n htmlType=\"button\"\n disabled={isLoadingMore || isReachingEnd}\n onClick={loadMore}\n >\n {isLoadingMore\n ? t('InfiniteList.loadingText')\n : isReachingEnd\n ? t('InfiniteList.reachEndText')\n : t('InfiniteList.loadMoreText')}\n </Button>\n )}\n </>\n )\n}\n\nexport default InfiniteList\n","import { Result, Spin } from 'antd'\nimport type { FC, PropsWithChildren } from 'react'\nimport { useTranslation } from '../locale'\nimport { usePermission } from '../../hooks/permission'\n\nexport interface PermissionGuardProps {\n code: string\n isGlobal?: boolean\n}\n\nconst PermissionGuard: FC<PropsWithChildren<PermissionGuardProps>> = props => {\n const { code, isGlobal, children } = props\n const { accessible, isValidating } = usePermission(code, isGlobal)\n const { t } = useTranslation()\n\n if (isValidating) {\n return (\n <Spin\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: 200,\n }}\n />\n )\n }\n\n if (!accessible) {\n return <Result status=\"403\" subTitle={t('global.noEntitlement')} />\n }\n\n return <>{children}</>\n}\n\nexport default PermissionGuard\n","import { Button, Result } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport { useToolkitsContext } from '../../components/contextProvider'\nimport { useTranslation } from '../../components/locale'\n\nconst NotFound = () => {\n const navigate = useNavigate()\n const { t } = useTranslation()\n const { notFoundRedirectUrl } = useToolkitsContext()\n\n return (\n <div className=\"h-screen flex justify-center items-center\">\n <Result\n status=\"404\"\n title=\"404\"\n subTitle={t('NotFound.subTitle')}\n extra={\n notFoundRedirectUrl && (\n <Button\n type=\"primary\"\n onClick={() => {\n navigate(notFoundRedirectUrl)\n }}\n >\n {t('NotFound.buttonText')}\n </Button>\n )\n }\n />\n </div>\n )\n}\n\nexport default NotFound\n","import { Card, Form, Input, Select } from 'antd'\nimport type { ColumnsType } from 'antd/es/table'\nimport dayjs from 'dayjs'\nimport type { FC } from 'react'\nimport ExpandableParagraph from '../../components/expandableParagraph'\nimport { useTranslation } from '../../components/locale'\nimport { QueryList } from '../../components/queryList'\nimport type { OperationLogListItem } from './types'\n\nconst { Option } = Select\n\nconst OperationLogList: FC = () => {\n const { t } = useTranslation()\n\n const columns: ColumnsType<OperationLogListItem> = [\n {\n key: 'username',\n title: t('global.username'),\n dataIndex: 'uname',\n width: 100,\n },\n {\n key: 'label',\n title: t('global.label'),\n dataIndex: 'label',\n width: 150,\n },\n {\n key: 'method',\n title: t('global.method'),\n dataIndex: 'method',\n width: 100,\n },\n {\n key: 'route',\n title: t('global.route'),\n dataIndex: 'route',\n width: 200,\n },\n {\n key: 'request',\n title: t('global.request'),\n dataIndex: 'request',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'response',\n title: t('global.response'),\n dataIndex: 'response',\n render(value: string) {\n return <ExpandableParagraph>{value}</ExpandableParagraph>\n },\n },\n {\n key: 'creation_time',\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n width: 200,\n render(value: string) {\n return dayjs(value).format('YYYY-MM-DD HH:mm:ss')\n },\n },\n ]\n\n return (\n <Card title=\"操作日志\">\n <QueryList<\n OperationLogListItem,\n {\n uname?: string\n route?: string\n method?: 'get' | 'post'\n label?: string\n },\n {\n List: OperationLogListItem[]\n Total: number\n }\n >\n rowKey=\"id\"\n columns={columns}\n tableLayout=\"fixed\"\n route=\"/api/usystem/log/list\"\n getTotal={response => response?.Total}\n getDataSource={response => response?.List}\n renderForm={form => (\n <Form form={form} layout=\"inline\">\n <Form.Item label={t('global.username')} name=\"uname\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.route')} name=\"route\">\n <Input allowClear />\n </Form.Item>\n <Form.Item label={t('global.method')} name=\"method\">\n <Select allowClear style={{ width: '100px' }}>\n <Option value=\"get\">GET</Option>\n <Option value=\"post\">POST</Option>\n </Select>\n </Form.Item>\n <Form.Item label={t('global.label')} name=\"label\">\n <Input allowClear />\n </Form.Item>\n </Form>\n )}\n />\n </Card>\n )\n}\n\nexport default OperationLogList\n","import { lazy } from 'react'\nimport { Navigate, Route, Routes } from 'react-router-dom'\n\nconst UserList = lazy(() => import('./userList'))\nconst RoleList = lazy(() => import('./roleList'))\nconst RoleDetail = lazy(() => import('./roleDetail'))\n\nconst PermissionRoutes = () => {\n return (\n <Routes>\n <Route index element={<Navigate to=\"user\" />} />\n <Route path=\"user\" element={<UserList />} />\n <Route path=\"role\" element={<RoleList />} />\n <Route path=\"role/:name\" element={<RoleDetail />} />\n </Routes>\n )\n}\n\nexport default PermissionRoutes\n"]}
|