sinking-antd 1.0.7 → 1.0.9

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/icon/index.tsx","../src/breadcrumb/index.tsx","../src/antd/index.tsx","../src/theme/index.tsx","../src/animation/index.tsx","../src/title/index.tsx","../src/layout/body/index.tsx","../src/layout/footer/index.tsx","../src/layout/header/index.tsx","../src/layout/sider/index.tsx","../src/layout/sinking/index.tsx","../src/layout/index.tsx","../src/pro-table/index.tsx","../src/pro-modal/index.tsx"],"names":["createContext","jsx","createStyles","React","useContext","useMemo","createFromIconfontCN","AntdIcons","Breadcrumb","Message","Notification","Modal","App","theme","useState","jsxs","ThemeProvider","useStyles","Fragment","Spin","Layout","Space","useResponsive","useTheme","useEffect","useCallback","ConfigProvider","Menu","forwardRef","useImperativeHandle","Watermark","Drawer","Button","MenuUnfoldOutlined","MenuFoldOutlined","useRef","Form","dayjs","title","props","Select","DatePicker","TimePicker","InputNumber","Rate","Switch","Input","Col","DownOutlined","UpOutlined","Row","Tag","Progress","Typography","Tooltip","QuestionCircleOutlined","RedoOutlined","selectedRows","selectedRowKeys","Card","Affix","Pagination","total","page","pageSize","Table"],"mappings":"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","file":"index.js","sourcesContent":["// noinspection TypeScriptValidateTypes,HtmlUnknownAttribute,JSUnusedGlobalSymbols\n\n/**\n * Icon 组件 - 支持 Ant Design 图标和 iconfont 图标\n * \n * 使用方式:\n * \n * 1. 全局配置(推荐,应用启动时设置一次)\n * ```tsx\n * import { setIconfontUrl } from '@/components/icon';\n * \n * // 设置单个 iconfont 地址\n * setIconfontUrl('//at.alicdn.com/t/c/font_xxx.js');\n * \n * // 设置多个 iconfont 地址(支持多个图标库)\n * setIconfontUrl([\n * '//at.alicdn.com/t/c/font_xxx1.js',\n * '//at.alicdn.com/t/c/font_xxx2.js'\n * ]);\n * ```\n * \n * 2. 使用 Provider 局部配置(适用于特定区域需要不同图标库)\n * ```tsx\n * import { Icon, IconFontProvider } from '@/components/icon';\n * \n * <IconFontProvider iconfontUrl=\"//at.alicdn.com/t/c/font_xxx.js\">\n * <Icon type=\"icon-xxx\" />\n * </IconFontProvider>\n * ```\n * \n * 3. 直接在组件上配置(优先级最高,适用于个别图标需要特殊处理)\n * ```tsx\n * import { Icon } from '@/components/icon';\n * \n * <Icon type=\"icon-xxx\" iconfontUrl=\"//at.alicdn.com/t/c/font_xxx.js\" />\n * ```\n * \n * 优先级:组件 props > IconFontProvider > 全局配置 > 默认值\n */\n\nimport React, {createContext, useContext, useMemo} from 'react';\nimport {createFromIconfontCN} from '@ant-design/icons';\nimport * as AntdIcons from '@ant-design/icons';\nimport {createStyles} from 'antd-style';\n\n/**\n * 全局 iconfont 地址配置\n */\nlet globalIconfontUrl: string | string[] | undefined = undefined;\n\n/**\n * 设置全局 iconfont 地址\n * @param url iconfont 脚本地址(单个或多个)\n */\nexport const setIconfontUrl = (url: string | string[]): void => {\n globalIconfontUrl = url;\n // 清除缓存,使新地址生效\n iconfontCache = null;\n};\n\n/**\n * 获取当前 iconfont 地址\n * @returns 当前配置的 iconfont 地址(未配置时返回 undefined)\n */\nexport const getIconfontUrl = (): string | string[] | undefined => {\n return globalIconfontUrl;\n};\n\n/**\n * IconFont 配置上下文\n */\ninterface IconFontContextType {\n iconfontUrl?: string | string[];\n}\n\nconst IconFontContext = createContext<IconFontContextType>({});\n\n/**\n * IconFont 配置 Provider 组件属性\n */\nexport interface IconFontProviderProps {\n iconfontUrl?: string | string[]; // iconfont 脚本地址(可以是单个地址或多个地址数组)\n children: React.ReactNode; // 子组件\n}\n\n/**\n * IconFont 配置 Provider 组件\n * 用于为子组件提供自定义的 iconfont 地址\n */\nexport const IconFontProvider: React.FC<IconFontProviderProps> = ({iconfontUrl, children}) => {\n return (\n <IconFontContext.Provider value={{iconfontUrl}}>\n {children}\n </IconFontContext.Provider>\n );\n};\n\n/**\n * 样式\n */\nconst useStyles: any = createStyles(() => ({\n iconWrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n }\n}));\n\n/**\n * Icon 组件属性\n */\ninterface IconProps extends React.HTMLAttributes<HTMLSpanElement> {\n type: string; // 图标类型(Antd 图标名 或 iconfont 图标名)\n iconfontUrl?: string | string[]; // 自定义 iconfont 地址(可选,优先级最高)\n ref?: any; // 组件引用\n className?: any; // 自定义样式类名\n style?: any; // 自定义样式\n onClick?: any; // 点击事件\n}\n\n/**\n * Icon 组件\n * 支持 Ant Design 图标和 iconfont 图标\n */\nexport const Icon = React.forwardRef<HTMLSpanElement, IconProps>(\n ({type, iconfontUrl, className, style, onClick, ...rest}, ref) => {\n const {styles, cx} = useStyles();\n const context = useContext(IconFontContext);\n \n // 优先级:props > context > 全局配置\n const currentIconfontUrl = iconfontUrl || context.iconfontUrl || globalIconfontUrl;\n \n // 使用 useMemo 缓存 iconfont 组件实例,避免重复创建\n const IconfontIcon = useMemo(() => {\n if (!currentIconfontUrl) {\n return null;\n }\n return createFromIconfontCN({\n scriptUrl: currentIconfontUrl,\n });\n }, [currentIconfontUrl]);\n \n // 优先渲染 Antd 图标\n const AntdIconComponent: any = (AntdIcons as any)[type];\n if (AntdIconComponent) {\n return (\n <AntdIconComponent ref={ref} className={cx(styles.iconWrapper, className)} style={style}\n onClick={onClick} {...rest}/>\n );\n }\n \n // 渲染 iconfont 图标\n if (type.startsWith('icon-')) {\n if (!IconfontIcon) {\n // 渲染占位符\n return (\n <span ref={ref} className={cx(styles.iconWrapper, className)} style={style} onClick={onClick} {...rest}>\n {type}\n </span>\n );\n }\n return (\n <IconfontIcon type={type} ref={ref} className={cx(styles.iconWrapper, className)} style={style}\n onClick={onClick} {...rest}/>\n );\n }\n \n // 兜底渲染文本\n return (\n <span ref={ref} className={cx(styles.iconWrapper, className)} style={style} onClick={onClick} {...rest}>\n {type}\n </span>\n );\n }\n);\n\n/**\n * 获取所有 Antd 图标名称\n */\nexport const getAntdIconNames = (): string[] => {\n return Object.keys(AntdIcons).filter(key => {\n return !key.startsWith('create') &&\n !key.startsWith('set') &&\n !key.startsWith('get') &&\n key !== 'default';\n });\n};\n\n/**\n * Iconfont 图标缓存\n */\nlet iconfontCache: string[] | null = null;\n\n/**\n * 地址转换(规范化 URL)\n * @param url 原始 URL\n * @returns 规范化后的 URL\n */\nconst normalizeUrl = (url: string): string => {\n if (url.startsWith('//')) {\n return `https:${url}`;\n }\n if (url.startsWith('http://') || url.startsWith('https://')) {\n return url;\n }\n // 相对路径直接返回(以 / 开头)\n return url.startsWith('/') ? url : `/${url}`;\n};\n\n/**\n * 获取所有 iconfont 图标名称\n * @param url 可选的 iconfont 地址(不传则使用全局配置)\n * @returns iconfont 图标名称数组\n */\nexport const getIconfontIconNames = async (url?: string | string[]): Promise<string[]> => {\n const targetUrl = url || globalIconfontUrl;\n \n // 如果未配置 iconfont 地址,返回空数组\n if (!targetUrl) {\n return [];\n }\n \n // 如果传入了新的 URL,清除缓存\n if (url && iconfontCache) {\n iconfontCache = null;\n }\n \n if (iconfontCache) return iconfontCache;\n \n try {\n // 支持多个 iconfont 地址\n const urls = Array.isArray(targetUrl) ? targetUrl : [targetUrl];\n const iconSets = await Promise.all(\n urls.map(async (scriptUrl) => {\n try {\n const response = await fetch(normalizeUrl(scriptUrl));\n const scriptText = await response.text();\n return [...scriptText.matchAll(/id=\"(icon-[^\"]+)\"/g)].map(m => m[1]);\n } catch (_) {\n return [];\n }\n })\n );\n \n // 合并所有图标名称并去重\n const allIcons = [...new Set(iconSets.flat())];\n iconfontCache = allIcons;\n return allIcons;\n } catch (_) {\n return [];\n }\n};\n\n/**\n * 获取所有图标名称(Antd + Iconfont)\n * @param iconfontUrl 可选的 iconfont 地址(不传则使用全局配置)\n * @returns 所有图标名称数组\n */\nexport const getAllIconNames = async (iconfontUrl?: string | string[]): Promise<string[]> => {\n const [antdIcons, iconfontIcons] = await Promise.all([\n Promise.resolve(getAntdIconNames()),\n getIconfontIconNames(iconfontUrl)\n ]);\n return [...antdIcons, ...iconfontIcons];\n};","import React from \"react\";\nimport {Breadcrumb} from \"antd\";\nimport {createStyles} from \"antd-style\";\n\nconst useBreadCrumbStyles = createStyles(({token}) => {\n return {\n bread: {\n backgroundColor: token?.colorBgContainer,\n padding: \"5px 15px 5px 15px\",\n fontSize: \"12px\",\n },\n breadStyle: {\n color: \"rgb(156, 156, 156)\",\n cursor: \"pointer\"\n },\n };\n});\n\n/**\n * 面包屑项目类型\n */\nexport type BreadCrumbItem = {\n title: string; // 面包屑项标题\n path?: string; // 路径(可选,用于记录但不直接使用)\n onClick?: () => void; // 点击回调函数\n};\n\n/**\n * 面包屑组件属性\n */\nexport type BreadCrumbProps = {\n style?: React.CSSProperties; // 自定义样式\n className?: string; // 自定义样式类名\n enabled?: boolean; // 是否启用面包屑(默认 true)\n items?: BreadCrumbItem[]; // 面包屑项目列表(由外部传入)\n hideBreadCrumb?: boolean; // 是否隐藏面包屑(通常由路由配置决定)\n};\n\n/**\n * 面包屑组件\n * @param props\n * @constructor\n */\nconst BreadCrumb: React.FC<BreadCrumbProps> = React.memo((props) => {\n const {\n style,\n className,\n enabled = true,\n items = [],\n hideBreadCrumb = false\n } = props;\n\n const {styles: {bread, breadStyle}} = useBreadCrumbStyles();\n\n // 如果禁用、隐藏或没有数据,则不渲染\n if (!enabled || hideBreadCrumb || items.length === 0) {\n return null;\n }\n\n // 将传入的 items 转换为 Ant Design Breadcrumb 需要的格式\n const breadCrumbData = items.map(item => ({\n title: item.title,\n onClick: item.onClick,\n className: breadStyle,\n }));\n\n return (\n <Breadcrumb\n className={`${bread} ${className || ''}`}\n style={style}\n items={breadCrumbData}\n />\n );\n});\n\nexport default BreadCrumb;","import { App } from 'antd';\nimport type { MessageInstance } from 'antd/es/message/interface';\nimport type { ModalStaticFunctions } from 'antd/es/modal/confirm';\nimport type { NotificationInstance } from 'antd/es/notification/interface';\n\nlet Message: MessageInstance;\nlet Notification: NotificationInstance;\nlet Modal: Omit<ModalStaticFunctions, 'warn'>;\n\nexport default () => {\n const staticFunction = App.useApp();\n Message = staticFunction.message;\n Modal = staticFunction.modal;\n Notification = staticFunction.notification;\n return null;\n};\n\nexport { Message, Notification, Modal };","import React, {createContext, useContext, useState, ReactNode} from 'react';\nimport {ThemeProvider, ThemeMode} from 'antd-style';\nimport {theme} from 'antd';\nimport Antd from \"../antd\";\n\n// 获取风格\nconst getDefaultTheme = (color: string, radius: number): any => {\n return {\n token: {\n colorPrimary: color,\n colorInfo: color,\n borderRadius: radius\n },\n }\n}\n\n// 获取紧凑风格\nconst getCompactTheme = (color: string, radius: number): any => {\n let temp = getDefaultTheme(color, radius);\n temp.algorithm = [theme.compactAlgorithm];\n return temp;\n}\n\n/**\n * 获取主题模式\n */\nconst getMode = (): ThemeMode => {\n const mode = localStorage?.getItem(\"theme\")\n if (mode == \"light\" || mode == \"dark\") {\n return mode as ThemeMode;\n }\n return \"auto\" as ThemeMode;\n}\n\n/**\n * 设置主题模式到 localStorage\n * @param mode 模式\n */\nconst setModeToStorage = (mode: string): void => {\n localStorage?.setItem(\"theme\", mode);\n}\n\n/**\n * 主题上下文类型\n * 提供主题管理的所有方法和状态\n */\nexport interface ThemeContextType {\n themes: any; // 当前主题配置对象\n setColor: (color: string) => void; // 设置主题颜色\n setRadius: (radius: number) => void; // 设置主题圆角\n setThemes: (theme: any) => void; // 设置完整主题配置\n setDefaultTheme: () => void; // 设置默认主题(非紧凑)\n setCompactTheme: () => void; // 设置紧凑主题\n appearance: any; // 当前外观(亮色/暗色)\n setAppearance: (appearance: any) => void; // 设置外观\n mode: ThemeMode; // 当前主题模式\n getModeName: (mode: ThemeMode) => string; // 获取模式名称\n lightMode: ThemeMode; // 亮色模式常量\n darkMode: ThemeMode; // 暗色模式常量\n autoMode: ThemeMode; // 自动模式常量\n setLightMode: () => void; // 切换到亮色模式\n setDarkMode: () => void; // 切换到暗色模式\n setAutoMode: () => void; // 切换到跟随系统模式\n isLightMode: () => boolean; // 判断是否为亮色模式\n isDarkMode: () => boolean; // 判断是否为暗色模式\n isAutoMode: () => boolean; // 判断是否为跟随系统模式\n isLightTheme: () => boolean; // 判断当前是否为亮色主题\n isDarkTheme: () => boolean; // 判断当前是否为暗色主题\n isCompactTheme: () => boolean; // 判断当前是否为紧凑主题\n toggle: () => void; // 切换主题模式(自动 -> 亮色 -> 暗色 -> 自动)\n}\n\n// 创建主题上下文\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\n// 导出 useTheme hook\nexport const useTheme = (): ThemeContextType | undefined => {\n const context = useContext(ThemeContext);\n if (!context) {\n return undefined;\n }\n return context;\n};\n\n/**\n * 主题组件属性\n */\nexport type ThemeProps = {\n theme?: any; // 自定义主题配置对象(可选,覆盖默认主题)\n mode?: ThemeMode; // 自定义主题模式(可选,覆盖默认模式)\n appearance?: any; // 自定义外观(可选,控制亮色/暗色)\n onAppearanceChange?: (appearance: any) => void; // 外观变化回调函数(可选)\n children?: ReactNode; // 子组件\n};\n\n// 主题 Provider 组件(合并后的统一组件)\nconst Theme: React.FC<ThemeProps> = ({\n children,\n theme: customTheme,\n mode: customMode,\n appearance: customAppearance,\n onAppearanceChange\n }) => {\n const existingContext = useContext(ThemeContext);\n if (existingContext && !customTheme && !customMode && !customAppearance && !onAppearanceChange) {\n return children;\n }\n return <ThemeProviderInner\n theme={customTheme}\n mode={customMode}\n appearance={customAppearance}\n onAppearanceChange={onAppearanceChange}>\n {children}\n </ThemeProviderInner>;\n};\n\nconst ThemeProviderInner: React.FC<ThemeProps> = ({\n children,\n theme: customTheme,\n mode: customMode,\n appearance: customAppearance,\n onAppearanceChange\n }) => {\n const [themes, setThemes] = useState<any>(customTheme || getDefaultTheme(\"#1890ff\", 6));\n const [mode, setMode2] = useState<ThemeMode>(customMode || getMode());\n const [appearance, setAppearance] = useState<any>(customAppearance !== undefined ? customAppearance : null);\n\n const lightMode: ThemeMode = \"light\";\n const darkMode: ThemeMode = \"dark\";\n const autoMode: ThemeMode = \"auto\";\n\n /**\n * 设置默认主题\n */\n const setDefaultTheme = () => {\n setThemes(getDefaultTheme(themes?.token?.colorPrimary, themes?.token?.borderRadius))\n }\n\n /**\n * 设置紧凑主题\n */\n const setCompactTheme = () => {\n setThemes(getCompactTheme(themes?.token?.colorPrimary, themes?.token?.borderRadius))\n }\n\n /**\n * 设置主题颜色\n */\n const setColor = (color: string) => {\n let temp = {...themes}\n temp.token.colorPrimary = color;\n temp.token.colorInfo = color;\n setThemes(temp);\n }\n\n /**\n * 设置主题圆角\n */\n const setRadius = (radius: number) => {\n let temp = {...themes}\n temp.token.borderRadius = radius;\n setThemes(temp);\n }\n\n /**\n * 获取模式名称\n */\n const getModeName = (modeValue: string) => {\n if (modeValue == lightMode) {\n return \"亮色风格\";\n }\n if (modeValue == darkMode) {\n return \"暗色风格\";\n }\n return \"跟随系统\";\n }\n\n /**\n * 设置亮色模式\n */\n const setLightMode = () => {\n setModeToStorage(lightMode);\n setMode2(lightMode)\n setAppearance(lightMode);\n }\n\n /**\n * 设置暗色模式\n */\n const setDarkMode = () => {\n setModeToStorage(darkMode);\n setMode2(darkMode);\n setAppearance(darkMode);\n }\n\n /**\n * 设置跟随系统模式\n */\n const setAutoMode = () => {\n setModeToStorage(autoMode);\n setMode2(autoMode);\n setAppearance(null);\n }\n\n /**\n * 是否为亮色模式\n */\n const isLightMode = () => {\n return mode == lightMode;\n }\n\n /**\n * 是否为暗色模式\n */\n const isDarkMode = () => {\n return mode == darkMode;\n }\n\n /**\n * 是否为跟随系统模式\n */\n const isAutoMode = () => {\n return mode == autoMode;\n }\n\n /**\n * 当前是否为亮色风格\n */\n const isLightTheme = () => {\n return appearance == lightMode;\n }\n\n /**\n * 当前是否为暗色风格\n */\n const isDarkTheme = () => {\n return appearance == darkMode;\n }\n\n /**\n * 当前是否为紧凑主题\n */\n const isCompactTheme = () => {\n return themes?.algorithm && Array.isArray(themes.algorithm) && themes.algorithm.includes(theme.compactAlgorithm);\n }\n\n /**\n * 模式切换\n */\n const toggle = () => {\n if (isAutoMode()) {\n setLightMode();\n } else if (isLightMode()) {\n setDarkMode();\n } else {\n setAutoMode();\n }\n }\n\n const value: ThemeContextType = {\n themes,\n setColor,\n setRadius,\n setThemes,\n setDefaultTheme,\n setCompactTheme,\n appearance,\n setAppearance,\n mode,\n getModeName,\n lightMode,\n darkMode,\n autoMode,\n setLightMode,\n setDarkMode,\n setAutoMode,\n isLightMode,\n isDarkMode,\n isAutoMode,\n isLightTheme,\n isDarkTheme,\n isCompactTheme,\n toggle\n };\n\n return (\n <ThemeContext.Provider value={value}>\n <ThemeProvider\n theme={themes}\n themeMode={mode}\n appearance={appearance}\n onAppearanceChange={(newAppearance) => {\n onAppearanceChange?.(newAppearance);\n setAppearance(newAppearance);\n }}>\n <Antd/>\n {children}\n </ThemeProvider>\n </ThemeContext.Provider>\n );\n};\n\nexport default Theme;\n","import React, {useMemo} from 'react';\nimport {createStyles} from \"antd-style\";\n\nexport type AnimationProps = {\n animate?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nexport const Animate = {\n None: \"\",\n FadeUp: \"fadeInUp\",\n FadeDown: \"fadeInDown\",\n} as const;\n\nconst useStyles = createStyles(({css}): any => ({\n fadeInUp: css`\n @keyframes fadeInUp {\n 0% {\n opacity: 0;\n transform: translateY(20px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n }\n animation-name: fadeInUp;\n animation-duration: 0.5s;\n `,\n fadeInDown: css`\n @keyframes fadeInDown {\n 0% {\n opacity: 0;\n transform: translateY(-20px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n }\n animation-name: fadeInDown;\n animation-duration: 0.5s;\n `,\n}));\n\nconst Animation: React.FC<AnimationProps> = React.memo(({animate, style, children}) => {\n const {styles} = useStyles();\n \n const animationClass = useMemo(() => {\n return animate && animate !== Animate.None ? styles?.[animate] : null;\n }, [animate, styles]);\n \n return (\n <div className={animationClass} style={style}>\n {children}\n </div>\n );\n});\n\nexport default Animation;","import React from 'react';\nimport {createStyles} from \"antd-style\";\nimport {useTheme} from \"../theme\";\n\n/**\n * 标题条位置类型\n */\nexport type TitlePlacement = 'left' | 'right';\n\n/**\n * 标题条大小类型\n */\nexport type TitleSize = 'small' | 'normal' | 'larger';\n\n/**\n * 标题条组件属性\n */\nexport type TitleProps = {\n children?: any; // 子内容(标题文本)\n placement?: TitlePlacement; // 标题条位置:'left' | 'right'(默认 'left')\n size?: TitleSize; // 标题条大小:'small' | 'normal' | 'larger'(默认 'normal')\n open?: boolean; // 是否显示标题条(默认 true)\n width?: number; // 标题条宽度(默认 5)\n height?: number; // 标题条高度(默认根据 size 自动计算)\n radius?: number; // 标题条圆角(默认 -1,跟随主题圆角设置)\n space?: number; // 标题条与文本的间距(默认 7)\n};\n\nconst Title: React.FC<TitleProps> = ({...props}) => {\n const {\n placement = \"left\",\n size = \"normal\" as TitleSize,\n open = true,\n width = 5,\n height = 0,\n radius = -1,\n space = 7,\n } = props;\n\n const theme = useTheme();\n\n const getHeight = (h: number, s: TitleSize) => {\n if (h > 0) {\n return h;\n }\n const sizeMap: Record<TitleSize, number> = {\n small: 15,\n normal: 20,\n larger: 25\n }\n return sizeMap[s] || 20;\n }\n\n const useStyles = createStyles(({token}): any => {\n const isCompact = theme?.isCompactTheme() || false;\n const barRadius = radius < 0 ? (token?.borderRadius > 3 ? token?.borderRadius : 0) : radius;\n const barHeight = isCompact ? getHeight(height, size) - 5 : (barRadius > 0 ? getHeight(height, size) : getHeight(height, size) - 3);\n const barWidth = isCompact || (!isCompact && barRadius <= 0) ? width - 1 : width;\n return {\n center: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\"\n },\n leftBar: {\n width: barWidth,\n height: barHeight,\n borderTopRightRadius: barRadius,\n borderBottomRightRadius: barRadius,\n marginRight: space,\n backgroundColor: token?.colorPrimary,\n },\n rightBar: {\n width: barWidth,\n height: barHeight,\n borderTopLeftRadius: barRadius,\n borderBottomLeftRadius: barRadius,\n marginLeft: space,\n backgroundColor: token?.colorPrimary,\n }\n };\n });\n\n const {styles: {center, leftBar, rightBar}} = useStyles();\n\n const left = <div className={center}>\n {open && <span className={leftBar}/>}\n {props?.children}\n </div>;\n\n const right = <div className={center}>\n {props?.children}\n {open && <span className={rightBar}/>}\n </div>;\n\n return (\n <>\n {placement == 'left' && left}\n {placement == 'right' && right}\n </>\n );\n};\n\nexport default Title;","import React from \"react\";\nimport {Layout} from \"antd\";\nimport {createStyles} from \"antd-style\";\nimport {Spin, Space, App} from \"antd\";\nimport Animation from \"../../animation\";\nimport {Animate} from \"../../animation\";\n\nconst useStyles = createStyles(({css}): any => {\n return {\n body: css`\n padding: 10px;\n `,\n load: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"80vh\",\n },\n gutter: {\n display: \"flex\"\n },\n };\n});\n\nexport type BodyProps = {\n loading?: boolean;//是否加载状态\n space?: boolean;//是否开启间距\n animation?: boolean;//动画\n style?: any;//样式\n className?: any;//样式名\n children?: any;//子内容\n};\n/**\n * 页面主体部分\n * @param props\n * @constructor\n */\nconst Body: React.FC<BodyProps> = React.memo((props) => {\n const {\n children,\n loading,\n style,\n className,\n space = true,\n animation = true,\n } = props;\n const {styles: {body, load, gutter}, cx} = useStyles();\n\n /**\n * 页面容器\n */\n return <App>\n {loading ? (\n <Spin spinning={true} size=\"large\" className={load}></Spin>\n ) : (\n <Layout style={style}>\n <div className={cx(\"ant-layout-body\", className || body)}>\n <Animation animate={animation ? Animate.FadeUp : Animate.None}>\n {space ? (\n <Space orientation=\"vertical\" size=\"middle\" className={gutter}>\n {children}\n </Space>\n ) : children}\n </Animation>\n </div>\n </Layout>\n )}\n </App>;\n});\n\nexport default Body;","import React from \"react\";\n\nexport type FooterProps = {\n children?: any;//子内容\n};\n\nconst Footer: React.FC<FooterProps> = React.memo(({children}) => {\n return <>{children}</>\n});\n\nexport default Footer;","import React from \"react\";\nimport {createStyles} from \"antd-style\";\n\nconst useStyles = createStyles(({css}): any => {\n return {\n box: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n right: css`\n z-index: 2;\n `,\n left: css`\n z-index: 2;\n `\n };\n});\nexport type HeaderProps = {\n right?: any;//右侧\n left?: any;//左侧\n};\n\nconst Header: React.FC<HeaderProps> = React.memo((props) => {\n const {styles: {box, right, left}} = useStyles();\n return <div className={box}>\n {props?.left && <div className={left}>\n {props.left}\n </div>}\n {props?.right && <div className={right}>\n {props.right}\n </div>}\n </div>\n});\n\nexport default Header;","import React, {useEffect, useState, useMemo, useCallback} from 'react';\nimport {ConfigProvider, Menu, Layout} from 'antd';\nimport {createStyles, useResponsive, useTheme} from \"antd-style\";\nimport {Icon} from \"../../icon\";\n\nconst useStyles = createStyles(({token, isDarkMode}): any => {\n return {\n left: {\n position: \"relative\",\n background: token?.colorBgContainer,\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n content: {\n flex: 1,\n overflowY: \"auto\"\n },\n menu: {\n zIndex: 1,\n overflow: \"auto\",\n overflowX: \"hidden\",\n borderRight: \"none !important\",\n fontWeight: \"600\",\n userSelect: \"none\",\n \":focus-visible\": {\n outline: \"none !important\"\n },\n \"::-webkit-scrollbar\": {\n width: 0\n },\n \".ant-menu-item-selected::after\": {\n borderRadius: (token?.borderRadius || 0) > 3 ? `${token.borderRadius}px 0 0 ${token.borderRadius}px` : \"0\",\n borderRightWidth: \"4px !important\",\n ...(token?.borderRadius > 3 && {\n right: \"5px !important\",\n top: \"19% !important\",\n height: \"60% !important\"\n })\n },\n \".ant-menu-item,.ant-menu-submenu-title\": {\n transition: \"border-color 0.3s,background 0.3s !important\"\n },\n },\n menuTop: {\n zIndex: 2,\n userSelect: \"none\",\n height: \"100px\",\n lineHeight: \"100px !important\",\n width: \"100%\",\n padding: \"10px !important\",\n overflow: \"hidden\",\n cursor: \"pointer\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background: token?.colorBgContainer + \" !important\",\n },\n menuBottom: {\n background: token?.colorBgContainer,\n userSelect: \"none\",\n padding: \"0px !important\",\n borderRadius: \"0px\",\n height: \"50px\",\n lineHeight: \"50px !important\",\n borderTop: \"0.5px solid \" + token?.colorBorder + \" !important\",\n borderBottom: \"0.5px solid \" + token?.colorBorder + \" !important\",\n fontWeight: \"bolder\",\n fontSize: 14,\n color: isDarkMode ? \"rgb(255,255,255,0.65)\" : \"rgba(122,122,122)\",\n cursor: \"pointer\",\n overflow: \"hidden\",\n width: \"100%\",\n zIndex: 2,\n transition: \"background 0.3s !important\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n whiteSpace: \"nowrap\",\n },\n logoClose: {\n margin: \"0px -10px\",\n },\n menu2: {\n fontWeight: \"bolder\",\n userSelect: \"none\",\n fontSize: \"13px\",\n flex: \"auto\",\n height: \"55px\",\n borderBottom: \"none !important\",\n },\n darkColor: {\n background: \"#001529 !important\",\n backgroundColor: \"#001529 !important\",\n },\n darkBorderTop: {\n borderTop: '0.5px solid #202020 !important',\n color: \"white\"\n }\n };\n});\n\n/**\n * 侧边栏菜单组件属性\n */\nexport type SiderProps = {\n collapsed?: boolean; // 菜单是否折叠\n menus?: any; // 菜单列表数据\n classNames?: any; // 菜单自定义样式类名\n pathname?: string; // 当前路由路径\n matchedRoutes?: string[]; // 匹配的路由路径列表\n onNavigate?: (path: string) => void; // 路由导航回调函数\n onMenuClick?: (item: any) => void; // 菜单项点击回调函数\n onLogoClick?: () => void; // Logo 点击回调函数\n collapsedLogo?: (isLight: boolean | undefined) => any; // 菜单折叠时的 Logo 渲染函数\n unCollapsedLogo?: (isLight: boolean | undefined) => any; // 菜单展开时的 Logo 渲染函数\n menuBottomBtnIcon?: string; // 菜单底部按钮图标\n menuBottomBtnText?: any; // 菜单底部按钮文字\n onMenuBottomBtnClick?: () => void; // 菜单底部按钮点击回调函数\n layout?: string; // 布局模式:'inline' | 'horizontal'\n theme?: string; // 菜单主题:'light' | 'dark'\n};\n\nconst Sider: React.FC<SiderProps> = React.memo((props) => {\n const {\n collapsed,\n pathname,\n matchedRoutes = [],\n onNavigate,\n onMenuClick,\n menus,\n onLogoClick,\n collapsedLogo,\n unCollapsedLogo,\n menuBottomBtnIcon = null,\n menuBottomBtnText = null,\n onMenuBottomBtnClick,\n classNames,\n layout = \"inline\",\n theme = \"light\"\n } = props;\n const {mobile} = useResponsive();\n const token = useTheme();\n const {styles: {left, content, menu, menuTop, menuBottom, menu2, darkColor, darkBorderTop}, cx} = useStyles();\n const [selectedKeys, setSelectedKeys] = useState<any>([]);\n const [stateOpenKeys, setStateOpenKeys] = useState<any>([]);\n\n useEffect(() => {\n if (pathname) {\n setSelectedKeys([pathname]);\n setStateOpenKeys(matchedRoutes);\n }\n }, [pathname, matchedRoutes]);\n\n /**\n * 只展开一个子集\n */\n const levelKeys = useMemo(() => {\n const key: Record<string, number> = {};\n const func = (items2: any, level = 1) => {\n items2.forEach((item: any) => {\n if (item?.key) {\n key[item.key] = level;\n }\n if (item?.children) {\n return func(item.children, level + 1);\n }\n });\n };\n func(menus);\n return key;\n }, [menus]);\n\n const onOpenChange = useCallback((openKeys: any[]) => {\n const currentOpenKey = openKeys.find((key) => stateOpenKeys.indexOf(key) === -1);\n if (currentOpenKey !== undefined) {\n const repeatIndex = openKeys.filter((key) => key !== currentOpenKey).findIndex((key) => levelKeys[key] === levelKeys[currentOpenKey]);\n setStateOpenKeys(\n openKeys.filter((_, index) => index !== repeatIndex).filter((key) => levelKeys[key] <= levelKeys[currentOpenKey]),\n );\n } else {\n setStateOpenKeys(openKeys);\n }\n }, [stateOpenKeys, levelKeys]);\n\n /**\n * 获取菜单主题\n */\n const menuTheme = useMemo(() => {\n if (token?.isDarkMode) return \"light\";\n return theme === \"dark\" ? theme : \"light\";\n }, [token?.isDarkMode, theme]);\n\n const getColor = useMemo(() => {\n return !token?.isDarkMode && menuTheme === \"dark\" ? ' ' + darkColor : '';\n }, [token?.isDarkMode, menuTheme, darkColor]);\n\n const getBorderColor = useMemo(() => {\n return !token?.isDarkMode && menuTheme === \"dark\" ? ' ' + darkBorderTop : '';\n }, [token?.isDarkMode, menuTheme, darkBorderTop]);\n const menuConfig = useMemo(() => ({\n components: {\n Menu: {\n itemSelectedColor: token?.colorPrimaryText || \"\",\n itemColor: token?.colorTextSecondary || \"\",\n itemHoverColor: token?.colorTextSecondary || \"\",\n fontSize: 13,\n itemMarginBlock: 0,\n itemMarginInline: 0,\n itemBorderRadius: 0,\n subMenuItemBorderRadius: 0,\n activeBarWidth: 4,\n itemHeight: 45,\n subMenuItemBg: \"rgba(255, 255, 255, 0)\",\n }\n }\n }), [token?.colorPrimaryText, token?.colorTextSecondary]);\n\n const handleMenuClick = useCallback((item: any) => {\n if (onNavigate) {\n onNavigate(item?.key);\n }\n setSelectedKeys([item?.key]);\n onMenuClick?.(item);\n }, [onNavigate, onMenuClick]);\n\n const handleLogoClick = useCallback(() => {\n onLogoClick?.();\n }, [onLogoClick]);\n\n return (\n <>\n {layout === \"inline\" ? (\n <Layout className={cx(left, getColor)}>\n <Layout.Header className={cx(menuTop, getColor)} onClick={handleLogoClick}>\n {(mobile || (!mobile && !collapsed)) && unCollapsedLogo?.(!token?.isDarkMode)}\n {!mobile && collapsed && collapsedLogo?.(token?.isDarkMode)}\n </Layout.Header>\n <Layout.Content className={cx(content, getColor)}>\n <ConfigProvider theme={menuConfig}>\n <Menu\n selectedKeys={selectedKeys}\n theme={menuTheme}\n mode=\"inline\"\n items={menus}\n className={cx(menu, classNames)}\n openKeys={!collapsed ? stateOpenKeys : undefined}\n onOpenChange={onOpenChange}\n onClick={handleMenuClick}\n />\n </ConfigProvider>\n </Layout.Content>\n {(menuBottomBtnIcon || menuBottomBtnText) && (\n <Layout.Footer className={cx(menuBottom, getColor, getBorderColor)}\n onClick={onMenuBottomBtnClick}>\n {menuBottomBtnIcon && (typeof menuBottomBtnIcon === \"string\" ?\n <Icon type={menuBottomBtnIcon}/> : menuBottomBtnIcon)}\n {(mobile || (!mobile && !collapsed)) && menuBottomBtnText}\n </Layout.Footer>\n )}\n </Layout>\n ) : (\n <ConfigProvider theme={menuConfig}>\n <Menu\n theme={menuTheme}\n mode=\"horizontal\"\n selectedKeys={selectedKeys}\n items={menus}\n className={cx(menu2, classNames)}\n onClick={handleMenuClick}\n />\n </ConfigProvider>\n )}\n </>\n );\n});\n\nexport default Sider;","import Footer from \"../footer\";\nimport Header from \"../header\";\nimport Sider from \"../sider\";\nimport BreadCrumb from \"../../breadcrumb\";\nimport {createStyles, useResponsive, useTheme} from \"antd-style\";\nimport React, {forwardRef, useImperativeHandle, useState} from \"react\";\nimport {MenuFoldOutlined, MenuUnfoldOutlined} from \"@ant-design/icons\";\nimport {App, Button, Drawer, Layout, Watermark, Spin} from \"antd\";\n\n/**\n * Loading 加载样式\n */\nconst useLoadingStyles = createStyles((): any => {\n return {\n body: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"80vh\",\n },\n };\n});\n\n/**\n * Loading 加载组件\n */\nconst Loading: React.FC = () => {\n const {styles: {body}} = useLoadingStyles();\n return <Spin size=\"large\" className={body}/>;\n};\n\nconst useLayoutStyles = createStyles(({isDarkMode, token, css, responsive}): any => {\n return {\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n },\n sider: {\n zIndex: 2,\n boxShadow: \"2px 0 8px 0 rgba(29,35,41,.05)\",\n background: \"none !important\",\n height: '100vh',\n overflowY: \"auto\",\n position: \"sticky\",\n left: 0,\n top: 0,\n bottom: 0,\n transition: \"all 0.3s,background 0s,height 0s\",\n \".ant-layout-header\": {\n backgroundColor: token?.colorBgContainer\n },\n },\n menuBtn: {\n width: \"55px !important\",\n height: \"55px\",\n lineHeight: \"55px\",\n fontSize: \"15px !important\",\n cursor: \"pointer\",\n float: \"left\",\n \":hover\": {\n background: \"none !important\",\n }\n },\n drawMenu: {\n padding: \"0px !important\",\n },\n body: css`\n transition: margin-left 0.3s !important;\n background-color: ${isDarkMode ? \"black\" : \"transparent\"};\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n `,\n sticky: {\n position: \"sticky\",\n top: 0,\n left: 0,\n },\n header: css`\n padding: 0;\n height: 55px;\n line-height: 55px;\n width: 100%;\n z-index: 3;\n box-shadow: 0 2px 8px 0 ${isDarkMode ? \"rgba(0, 0, 0, 0.25)\" : \"rgba(29, 35, 41, 0.05)\"};\n user-select: none;\n background: ${token?.colorBgContainer} !important;\n flex-shrink: 0;\n\n .ant-menu-item-icon {\n color: ${isDarkMode ? \"rgb(255,255,255,0.85)\" : \"\"};\n }\n `,\n horizontalContent: css`\n width: 100%;\n flex: 1 0 auto;\n `,\n inlineContent: css`\n width: 100%;\n flex: 1 0 auto;\n `,\n flowContent: css`\n .ant-layout-body {\n width: 80%;\n margin-left: 10%;\n }\n\n ${responsive.md} {\n .ant-layout-body {\n width: 100%;\n margin-left: 0;\n }\n }\n `,\n footer: css`\n text-align: center;\n flex-shrink: 0;\n `,\n flow: {\n display: \"flex\",\n justifyContent: \"space-between\",\n height: \"55px\",\n },\n logo: {\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"220px\",\n height: \"55px\",\n },\n darkColor: {\n backgroundColor: \"#001529 !important\"\n },\n layoutNormal: css`\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n `,\n };\n});\n\n/**\n * 面包屑项目类型\n */\nexport type BreadCrumbItem = {\n title: string; // 面包屑项标题\n path?: string; // 路径(可选)\n onClick?: () => void; // 点击回调函数\n};\n\n/**\n * 布局组件属性\n */\nexport type LayoutProps = {\n ref?: React.Ref<SinKingRef>; // 组件引用\n loading?: boolean; // 是否显示加载状态\n breadCrumb?: boolean; // 是否启用面包屑\n breadCrumbItems?: BreadCrumbItem[]; // 面包屑项目列表\n hideBreadCrumb?: boolean; // 是否隐藏面包屑\n menuCollapsedWidth?: number; // 菜单折叠时的宽度(默认60)\n menuUnCollapsedWidth?: number; // 菜单展开时的宽度(默认220)\n menus?: any; // 菜单列表数据\n menuClassNames?: any; // 菜单自定义样式类名\n pathname?: string; // 当前路由路径\n matchedRoutes?: any; // 匹配的路由列表(可以是 string[] 或完整的路由对象数组)\n onNavigate?: (path: string) => void; // 路由导航回调函数\n onMenuClick?: (item: any) => void; // 菜单项点击回调函数\n onMenuBtnClick?: (state: boolean) => void; // 菜单折叠/展开按钮点击回调函数\n footer?: any; // 页脚内容\n headerRight?: any; // Header 右侧内容\n headerLeft?: any; // Header 左侧内容\n headerHidden?: boolean; // 是否隐藏 Header\n headerFixed?: boolean; // Header 是否固定定位\n onLogoClick?: () => void; // Logo 点击回调函数\n collapsedLogo?: (isLight: boolean) => any; // 菜单折叠时的 Logo 渲染函数\n unCollapsedLogo?: (isLight: boolean) => any; // 菜单展开时的 Logo 渲染函数\n menuBottomBtnIcon?: any; // 菜单底部按钮图标\n menuBottomBtnText?: any; // 菜单底部按钮文字\n onMenuBottomBtnClick?: () => void; // 菜单底部按钮点击回调函数\n layout?: string; // 布局模式:'inline'(左右布局)| 'horizontal'(上下布局)\n flowLayout?: boolean; // 是否使用流式布局(内容居中)\n menuTheme?: string; // 菜单主题:'light' | 'dark'\n waterMark?: any; // 水印内容\n children?: React.ReactNode; // 子组件内容\n};\n\n/**\n * 布局组件引用接口\n * 用于父组件通过 ref 调用布局组件的方法\n */\nexport interface SinKingRef {\n collapsedMenu?: () => void; // 折叠菜单\n unCollapsedMenu?: () => void; // 展开菜单\n toggleCollapsedMenu?: () => void; // 切换菜单折叠/展开状态\n}\n\nconst SinKing: React.FC<LayoutProps> = forwardRef<SinKingRef>((props: any, ref): any => {\n let {\n loading = false,\n breadCrumb = true,\n breadCrumbItems = [],\n hideBreadCrumb = false,\n menus,\n menuClassNames,\n pathname,\n matchedRoutes,\n onNavigate,\n onMenuClick,\n onMenuBtnClick,\n onLogoClick,\n collapsedLogo,\n unCollapsedLogo,\n headerRight,\n headerLeft,\n headerFixed,\n headerHidden = false,\n menuCollapsedWidth = 60,\n menuUnCollapsedWidth = 220,\n menuBottomBtnIcon = undefined,\n menuBottomBtnText = undefined,\n onMenuBottomBtnClick,\n layout = 'inline',\n flowLayout = false,\n menuTheme = \"light\",\n waterMark = undefined,\n children\n } = props;\n const systemTheme = useTheme();\n /*\n * 样式\n */\n const [collapsed, setCollapsed] = useState(false);\n const [open, setOpen] = useState(false);\n const {\n styles: {\n container,\n sider,\n inlineContent,\n sticky,\n header,\n horizontalContent,\n footer,\n body,\n drawMenu,\n menuBtn,\n flow,\n logo,\n darkColor,\n flowContent,\n layoutNormal\n },\n cx\n } = useLayoutStyles();\n const {mobile, md} = useResponsive();\n const menuBtnOnClick = () => {\n let status: boolean;\n if ((layout === 'inline' && mobile) || (layout === 'horizontal' && !md)) {\n if (collapsed) {\n setCollapsed(false);\n }\n status = !open\n setOpen(status);\n } else {\n status = !collapsed\n setCollapsed(status);\n }\n onMenuBtnClick?.(status);\n }\n\n /**\n * 方法挂载\n */\n useImperativeHandle(ref, () => ({\n collapsedMenu: () => {\n setCollapsed(true);\n setOpen(false);\n },\n unCollapsedMenu: () => {\n setCollapsed(false);\n setOpen(false);\n },\n toggleCollapsedMenu: () => {\n const status = !collapsed;\n setCollapsed(status);\n setOpen(false);\n onMenuBtnClick?.(status);\n }\n }));\n\n /**\n * 获取菜单主题颜色\n */\n const getColor = () => {\n const mode = systemTheme?.isDarkMode ? \"light\" : (menuTheme === \"dark\" ? menuTheme : \"light\");\n return !systemTheme?.isDarkMode && mode === \"dark\" ? ' ' + darkColor : '';\n }\n\n /**\n * 获取水印字体\n */\n const getWaterMaskFont = () => {\n return {\n color: systemTheme?.isDarkMode ? \"rgba(255, 255, 255, 0.03)\" : \"rgba(0, 0, 0, 0.07)\"\n };\n }\n\n /**\n * 获取菜单\n * @param mode 布局模式\n */\n const getSider = (mode: string) => {\n const layoutMode = mode === \"horizontal\" ? mode : \"inline\";\n const theme = menuTheme === \"dark\" ? menuTheme : \"light\";\n // 转换 matchedRoutes 为 string[] 格式(如果不是的话)\n const routePaths = Array.isArray(matchedRoutes)\n ? (typeof matchedRoutes[0] === 'string'\n ? matchedRoutes\n : matchedRoutes.map((route: any) => route?.pathname || route))\n : [];\n\n return <Sider classNames={menuClassNames}\n layout={layoutMode}\n theme={theme}\n collapsed={collapsed}\n pathname={pathname}\n matchedRoutes={routePaths}\n onNavigate={onNavigate}\n onLogoClick={onLogoClick}\n collapsedLogo={collapsedLogo}\n unCollapsedLogo={unCollapsedLogo}\n menuBottomBtnIcon={menuBottomBtnIcon}\n menuBottomBtnText={menuBottomBtnText}\n onMenuBottomBtnClick={onMenuBottomBtnClick}\n menus={menus}\n onMenuClick={(item) => {\n setOpen(false);\n onMenuClick?.(item);\n }}/>;\n }\n\n /**\n * 获取内容\n */\n const getOutlet = () => {\n return <Watermark gap={[200, 200]} font={getWaterMaskFont()} content={waterMark}>\n {children}\n </Watermark>;\n }\n\n /**\n * 移动端抽屉\n */\n const drawer = <Drawer placement=\"left\" closable={false} open={open} size={menuUnCollapsedWidth}\n classNames={{body: drawMenu}}\n onClose={() => {\n setOpen(false)\n }}>\n {getSider(\"inline\")}\n </Drawer>;\n\n /**\n * 左右模式\n */\n const LayoutNormal = <Layout className={container}>\n {mobile && drawer}\n <Layout.Sider className={sider} trigger={null} collapsible collapsed={collapsed}\n width={menuUnCollapsedWidth} collapsedWidth={menuCollapsedWidth}\n hidden={mobile}>\n {getSider(layout)}\n </Layout.Sider>\n <Layout className={body}>\n {!headerHidden && <Layout.Header className={cx(header, headerFixed && sticky)}>\n <Header left={<div><Button type=\"text\" size={\"large\"}\n icon={collapsed ? <MenuUnfoldOutlined/> : <MenuFoldOutlined/>}\n onClick={menuBtnOnClick} className={menuBtn}/>{headerLeft}</div>}\n right={headerRight}/>\n </Layout.Header>}\n <Layout.Content className={cx(inlineContent, flowLayout && flowContent)}>\n <BreadCrumb\n enabled={breadCrumb}\n items={breadCrumbItems}\n hideBreadCrumb={hideBreadCrumb}\n />\n {getOutlet()}\n </Layout.Content>\n {props?.footer && <Layout.Footer className={footer}>\n <Footer> {props?.footer}</Footer>\n </Layout.Footer>}\n </Layout>\n </Layout>;\n\n /**\n * 上下模式\n */\n const LayoutFlow = <Layout className={layoutNormal}>\n <Layout.Header className={cx(header, headerFixed && sticky)}>\n {!md && <Header left={<div>\n <Button type=\"text\" size={\"large\"} icon={collapsed ? <MenuUnfoldOutlined/> : <MenuFoldOutlined/>}\n onClick={menuBtnOnClick} className={menuBtn}/>\n {headerLeft}\n </div>} right={headerRight}/>}\n {(!md && drawer) ||\n <div className={cx(flow, getColor())}>\n <div className={logo}>\n {unCollapsedLogo?.(!systemTheme?.isDarkMode)}\n </div>\n {getSider(layout)}\n <div>{headerRight}</div>\n </div>\n }\n </Layout.Header>\n <Layout.Content className={cx(horizontalContent, flowLayout && flowContent)}>\n <BreadCrumb\n enabled={breadCrumb}\n items={breadCrumbItems}\n hideBreadCrumb={hideBreadCrumb}\n />\n {getOutlet()}\n </Layout.Content>\n {props?.footer && <Layout.Footer className={footer}>\n <Footer> {props?.footer}</Footer>\n </Layout.Footer>}\n </Layout>;\n\n return (\n <App>\n {(loading && <Loading/>) || (layout !== \"horizontal\" ? LayoutNormal : LayoutFlow)}\n </App>\n );\n});\nexport default SinKing;","import React, {forwardRef} from \"react\";\nimport Body from \"./body\";\nimport Footer from \"./footer\";\nimport Header from \"./header\";\nimport Sider from \"./sider\";\nimport 'dayjs/locale/zh-cn';\n\nimport SkLayout, {LayoutProps, SinKingRef} from \"./sinking\";\n\nconst Layout: React.FC<LayoutProps> = forwardRef<SinKingRef>((props: any, ref) => {\n return <SkLayout ref={ref} {...props}/>;\n});\n\nexport {\n Body,\n Footer,\n Header,\n Sider,\n}\n\nexport default Layout;","// noinspection TypeScriptValidateTypes,JSAnnotator\n\nimport React, {forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from \"react\";\nimport {createStyles} from \"antd-style\";\nimport {\n Button,\n Card,\n Col,\n Form,\n Input,\n Pagination,\n PaginationProps,\n TableProps,\n TableColumnProps,\n FormInstance,\n Row,\n Space,\n Table,\n Affix,\n Select,\n DatePicker,\n TimePicker,\n InputNumber,\n Rate,\n Progress,\n Switch,\n Tag,\n Tooltip, Typography\n} from \"antd\";\nimport {DownOutlined, RedoOutlined, UpOutlined, QuestionCircleOutlined} from \"@ant-design/icons\";\nimport dayjs from 'dayjs';\n\n/**\n * ProTable 列配置接口\n * 扩展自 Ant Design 的 TableColumnProps,添加了更多功能\n */\nexport interface ProColumns<T = any> extends TableColumnProps<T> {\n hideInSearch?: boolean; // 是否在搜索表单中隐藏该列\n hideInTable?: boolean; // 是否在表格中隐藏该列\n valueType?: 'text' | 'time' | 'date' | 'dateTime' | 'dateRange' | 'dateTimeRange' | 'timeRange' | 'rate' | 'digit' | 'progress' | 'percent' | 'switch' | 'select'; // 列的值类型(决定渲染和表单组件)\n copyable?: boolean; // 是否可复制(显示复制图标)\n tip?: string; // 列标题的提示信息\n valueEnum?: Record<string, { text: string; color?: string }>; // 枚举值映射(用于 select 类型)\n transform?: (value: any) => any; // 搜索值转换函数(提交前转换表单值)\n fieldProps?: any; // 表单项的属性(传递给表单组件)\n formItemProps?: any; // Form.Item 的属性\n props?: any; // 传递给渲染组件的额外属性\n}\n\n/**\n * ProTable 搜索表单配置接口\n */\nexport interface ProTableSearch<T = any> {\n layout?: \"horizontal\" | \"vertical\"; // 搜索表单布局方式(默认 \"horizontal\")\n}\n\n/**\n * ProTable 组件属性\n */\nexport type ProTableProps = {\n title?: any; // 表格标题\n extra?: any; // 表格额外操作区域(显示在标题右侧)\n extraRefreshBtn?: boolean; // 是否显示刷新按钮(默认 true)\n rowKey?: string; // 表格行的唯一标识字段名(默认 \"id\")\n columns?: ProColumns[]; // 列配置数组\n tableProps?: TableProps<any> & undefined; // Ant Design Table 原生属性\n search?: ProTableSearch | boolean; // 搜索表单配置(false 表示禁用搜索)\n pageHidden?: boolean; // 是否隐藏分页(默认 false)\n pageInTable?: boolean; // 是否在表格内显示分页(默认 false,在表格外显示)\n paginationProps?: PaginationProps; // Ant Design Pagination 原生属性\n defaultPage?: number; // 默认页码(默认 1)\n defaultPageSize?: number; // 默认每页条数(默认 10)\n request?: (params: any, sort: any) => Promise<any>; // 数据请求函数(必须返回 Promise)\n virtual?: boolean; // 是否启用虚拟滚动(大数据量时推荐开启)\n // 多选配置\n rowSelection?: {\n selectedRowKeys?: React.Key[]; // 选中的行 key 数组\n onChange?: (selectedRowKeys: React.Key[], selectedRows: any[]) => void; // 选择变化时的回调\n onSelect?: (record: any, selected: boolean, selectedRows: any[]) => void; // 选择单行时的回调\n onSelectAll?: (selected: boolean, selectedRows: any[], changeRows: any[]) => void; // 全选时的回调\n onSelectInvert?: (selectedRowKeys: React.Key[]) => void; // 反选时的回调\n align?: string; // 选择列对齐方式\n columnWidth?: number; // 选择列宽度\n fixed?: boolean; // 是否固定选择列在左侧\n leftExtra?: any; // 选择操作栏左侧额外内容\n rightExtra?: any; // 选择操作栏右侧额外内容\n hideExtra?: boolean; // 是否隐藏选择操作栏\n } | false | true; // 多选配置(true 表示启用默认配置,false 表示禁用)\n // 固钉配置\n selectionAffix?: boolean; // 是否固定多选操作栏(滚动时悬浮)\n paginationAffix?: boolean; // 是否固定底部分页栏(滚动时悬浮)\n};\n\n/**\n * ProTable 组件引用接口\n * 用于父组件通过 ref 调用表格的方法\n */\nexport interface ProTableRef {\n searchForm: FormInstance | any; // 搜索表单实例(可用于获取/设置表单值)\n refreshTableData: () => void | any; // 刷新表格数据(保持当前页码和搜索条件)\n resetTableData: () => void | any; // 重置表格数据(重置到第一页和默认搜索条件)\n getTableData: () => any; // 获取当前表格数据\n getSelectedRowKeys: () => React.Key[]; // 获取选中的行 keys\n getSelectedRows: () => any[]; // 获取选中的行数据\n setSelectedRowKeys: (keys: React.Key[]) => void; // 设置选中的行 keys\n clearSelectedRows: () => void; // 清空所有选中行\n invertSelectedRow: () => void; // 反选选中行\n allSelectedRow: () => void; // 全选所有行\n}\n\n/**\n * 样式配置\n */\nconst useStyles: any = createStyles(({token, isDarkMode}: any): any => {\n const fontColor = isDarkMode ? \"rgba(255,255,255,0.65)\" : \"rgba(0,0,0,0.65)\";\n const backgroundColor = isDarkMode ? \"rgba(255, 255, 255, 0.1) !important\" : \"rgba(0, 0, 0, 0.05) !important\";\n const fontSize = 12;\n const pagination = {\n color: fontColor,\n fontSize: fontSize,\n \".ant-pagination-item-active\": {\n backgroundColor: \"transparent !important\"\n },\n \".ant-pagination-item\": {\n backgroundColor: \"transparent !important\",\n \"a\": {\n color: fontColor,\n }\n },\n \".ant-pagination-options\": {\n display: \"block\"\n },\n \".ant-select\": {\n \".ant-select-selector\": {\n fontSize: fontSize,\n transition: \"background-color 0.3s ease\",\n color: fontColor,\n borderColor: \"transparent !important\",\n borderRadius: token?.borderRadius + \"px !important\",\n backgroundColor: backgroundColor\n },\n },\n \".ant-pagination-options-quick-jumper\": {\n \"input\": {\n color: fontColor,\n borderColor: \"transparent\",\n borderRadius: token?.borderRadius + \"px !important\",\n backgroundColor: backgroundColor,\n },\n }\n }\n const btn = {\n fontSize: fontSize + \"px\",\n height: \"auto\",\n padding: \"5px 10px\",\n borderRadius: token?.borderRadius + \"px\",\n }\n return {\n formItem: {\n marginBottom: \"0 !important\",\n },\n formItemLabel: {\n \".ant-form-item-label\": {\n flex: \"0 0 80px\",\n }\n },\n formItemBtn: {\n \".ant-space-item>div\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n },\n \".ant-space-item>a\": {\n textDecoration: \"none\",\n },\n },\n formButton: {\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"end\",\n },\n filter: {\n boxShadow: \"0 0px 10px 4px rgba(0, 0, 0, 0.05) !important\",\n backgroundColor: isDarkMode ? \"rgba(255, 255, 255, 0.05)\" : \"rgba(255, 255, 255, 0.6)\",\n backdropFilter: \"blur(8px)\",\n },\n pageCard: {\n \".ant-card-body\": {\n padding: 15,\n },\n \".ant-pagination \": pagination,\n },\n toolCard: {\n fontSize: token?.fontSizeSM,\n color: fontColor,\n \".ant-card-body\": {\n padding: \"12px 17px\",\n \".ant-col\": {\n fontSize: fontSize,\n \"a\": {\n opacity: isDarkMode ? \"1\" : \"0.8\"\n }\n }\n },\n \"button\": btn\n },\n tableCard: {\n \".ant-card-head\": {\n padding: \"10px 15px 0 15px\",\n minHeight: \"42px\",\n borderBottom: \"none\",\n \".ant-card-extra\": {\n \"button\": btn,\n }\n },\n \".ant-card-body\": {\n padding: \"10px\"\n }\n },\n table: {\n \".ant-table-thead\": {\n \".ant-table-cell\": {\n padding: \"10px !important\",\n fontSize: token?.fontSize,\n color: fontColor\n },\n },\n \".ant-table-tbody\": {\n \".ant-table-cell\": {\n padding: \"10px !important\",\n fontSize: token?.fontSizeSM + 1,\n color: fontColor,\n \".ant-btn\": {\n height: \"25px\",\n padding: \"10px \",\n fontSize: token?.fontSizeSM,\n }\n },\n \".ant-typography\": {\n fontSize: token?.fontSizeSM + 1,\n color: fontColor\n },\n },\n \".ant-pagination \": {\n ...pagination, ...{\n margin: \"15px 15px 5px 15px !important\"\n }\n },\n }\n };\n});\n\nconst useContainerResponsive = (containerRef: React.RefObject<HTMLDivElement | null>) => {\n const [responsive, setResponsive] = useState({\n xs: false,\n sm: false,\n md: false,\n lg: false,\n xl: false,\n xxl: false,\n mobile: false\n });\n\n // 防抖函数,避免频繁更新\n const debounce = useCallback((func: Function, wait: number) => {\n let timeout: ReturnType<typeof setTimeout>;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(null, args), wait);\n };\n }, []);\n\n const updateResponsive = useCallback((width: number) => {\n const newResponsive = {\n xs: width < 576,\n sm: width >= 576 && width < 768,\n md: width >= 768 && width < 992,\n lg: width >= 992 && width < 1200,\n xl: width >= 1200 && width < 1600,\n xxl: width >= 1600,\n mobile: width < 992\n };\n\n // 只有当响应式状态真正发生变化时才更新\n setResponsive(prev => {\n const hasChanged = Object.keys(newResponsive).some(\n key => prev[key as keyof typeof prev] !== newResponsive[key as keyof typeof newResponsive]\n );\n return hasChanged ? newResponsive : prev;\n });\n }, []);\n\n // 防抖的更新函数\n const debouncedUpdate = useMemo(\n () => debounce((width: number) => updateResponsive(width), 10),\n [debounce, updateResponsive]\n );\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleResize = () => {\n const width = container.clientWidth;\n debouncedUpdate(width);\n };\n\n // 初始化时立即更新\n updateResponsive(container.clientWidth);\n\n const resizeObserver = new ResizeObserver(handleResize);\n resizeObserver.observe(container);\n\n return () => {\n resizeObserver.unobserve(container);\n };\n }, [containerRef, debouncedUpdate, updateResponsive]);\n\n return responsive;\n};\n\nconst ProTableComponent = forwardRef<ProTableRef, ProTableProps>((props, ref): any => {\n const {styles} = useStyles();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const device = useContainerResponsive(containerRef);\n const requestRef = useRef<any>(null);\n const {\n title = undefined, // 表格标题\n extra = undefined, // 表格额外内容\n extraRefreshBtn, // 是否显示刷新按钮\n rowKey = \"id\", // 行的唯一标识\n columns = [] as ProColumns[], // 列配置\n tableProps = {}, // 表格属性\n pageHidden = false, // 是否隐藏分页\n pageInTable = false, // 是否在表格中显示分页\n paginationProps = {}, // 分页属性\n defaultPage = 1,//默认分页\n defaultPageSize = 10,//默认分页容量\n search = {} as any, // 搜索表单配置\n request = undefined, // 请求函数\n rowSelection = false as any, // 多选配置\n selectionAffix = false, // 是否固定多选操作栏\n paginationAffix = false, // 是否固定底部分页栏\n virtual = false, // 是否启用虚拟滚动\n } = props;\n\n const [form] = Form.useForm();\n const [collapsed, setCollapsed] = useState(true);\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(true);\n const [params, setParams] = useState({});\n const [sort, setSort] = useState({});\n const [page, setPage] = useState(defaultPage);\n const [pageSize, setPageSize] = useState(defaultPageSize);\n const [total, setTotal] = useState(0);\n\n const formatValues = useCallback((values: any) => {\n const transformedValues: any = {...values};\n Object.keys(transformedValues).forEach((key) => {\n if (!transformedValues[key]) {\n delete transformedValues[key]\n }\n });\n columns.forEach((column: ProColumns) => {\n const {dataIndex, transform, valueType} = column;\n const value = values[dataIndex as string];\n if (value !== undefined && value !== null && value !== '') {\n if (transform) {\n const transformed = transform?.(value);\n if (typeof transformed === 'object' && transformed !== null) {\n Object.assign(transformedValues, transformed);\n delete transformedValues[column?.dataIndex]\n } else {\n transformedValues[dataIndex as string] = transformed;\n }\n } else {\n // 根据 valueType 进行默认转换\n switch (valueType) {\n case 'dateRange':\n case 'dateTimeRange':\n case 'timeRange':\n if (Array.isArray(value) && value.length === 2) {\n // 统一使用 YYYY-MM-DD HH:mm:ss 格式\n const formatStr = 'YYYY-MM-DD HH:mm:ss';\n transformedValues[`${dataIndex}_start`] = value[0]?.format ? value[0].format(formatStr) : value[0];\n transformedValues[`${dataIndex}_end`] = value[1]?.format ? value[1].format(formatStr) : value[1];\n }\n break;\n case 'date':\n // 日期类型也使用完整的时间格式,时分秒为 00:00:00\n transformedValues[dataIndex as string] = value?.format ? value.format('YYYY-MM-DD 00:00:00') : value;\n break;\n case 'dateTime':\n transformedValues[dataIndex as string] = value?.format ? value.format('YYYY-MM-DD HH:mm:ss') : value;\n break;\n case 'time':\n // 时间类型使用当天日期 + 时间\n if (value?.format) {\n const today = dayjs().format('YYYY-MM-DD');\n transformedValues[dataIndex as string] = `${today} ${value.format('HH:mm:ss')}`;\n } else {\n transformedValues[dataIndex as string] = value;\n }\n break;\n case 'switch':\n // Switch 组件返回 boolean,可能需要转换为 0/1\n transformedValues[dataIndex as string] = value;\n break;\n default:\n transformedValues[dataIndex as string] = value;\n }\n }\n } else if (value === false && valueType === 'switch') {\n // 特殊处理 switch 类型的 false 值\n if (transform) {\n const transformed = transform(value);\n if (typeof transformed === 'object' && transformed !== null) {\n Object.assign(transformedValues, transformed);\n } else {\n transformedValues[dataIndex as string] = transformed;\n }\n } else {\n transformedValues[dataIndex as string] = value;\n }\n }\n });\n return transformedValues;\n }, [columns]);\n\n const onFinish = useCallback((values: any) => {\n setPage(1);\n setParams(formatValues(values));\n }, [formatValues]);\n\n const onReset = useCallback(() => {\n if ((params && Object.keys(params).length > 0) || page > 1) {\n form?.resetFields();\n setPage(1);\n setParams({});\n }\n }, [params, page, form]);\n\n const getSearchFormItem = useMemo(() => {\n let elements: any[] = [];\n let sum = 0;\n let sumAll = 0;\n let skip = 1;\n let span = 24;\n if (device.xl || device.xxl || device.lg) {\n skip = 3;\n span = 6;\n } else if (device.md) {\n skip = 2;\n span = 8;\n } else if (device.sm) {\n skip = 1;\n span = 12;\n }\n // 根据 valueType 渲染不同的表单组件\n const renderFormField = (column: ProColumns) => {\n const {valueType, valueEnum, dataIndex, title, props = {}} = column;\n const placeholder = `请输入${title || dataIndex}`;\n\n // 如果有枚举值,渲染 Select\n if (valueEnum) {\n return (\n <Select placeholder={`请选择${title || dataIndex}`} allowClear {...props}>\n {Object.entries(valueEnum).map(([key, value]) => (\n <Select.Option key={key} value={key}>\n {value.text}\n </Select.Option>\n ))}\n </Select>\n );\n }\n switch (valueType) {\n case 'date':\n return <DatePicker style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'dateTime':\n return <DatePicker showTime style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'dateRange':\n return <DatePicker.RangePicker style={{width: '100%'}} {...props} />;\n case 'dateTimeRange':\n return <DatePicker.RangePicker showTime style={{width: '100%'}} {...props} />;\n case 'time':\n return <TimePicker style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'timeRange':\n return <TimePicker.RangePicker style={{width: '100%'}} {...props} />;\n case 'digit':\n return <InputNumber style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'rate':\n return <Rate allowHalf {...props} />;\n case 'switch':\n return <Switch {...props} />;\n case 'percent':\n return (\n <InputNumber\n style={{width: '100%'}}\n placeholder={placeholder}\n formatter={value => `${value}%`}\n parser={value => value!.replace('%', '')}\n {...props}\n />\n );\n case 'progress':\n return (\n <InputNumber\n style={{width: '100%'}}\n placeholder={placeholder}\n min={0}\n max={100}\n {...props}\n />\n );\n case 'select':\n return <Select placeholder={`请选择${title || dataIndex}`} allowClear {...props} />;\n default:\n return <Input placeholder={placeholder} {...props} />;\n }\n };\n let hide = false;\n columns.forEach((column: ProColumns, index) => {\n if (column?.hideInSearch === true) {\n return;\n }\n if (!hide) {\n sumAll++;\n }\n if (skip > 0 && collapsed && sum >= skip) {\n hide = true\n }\n if (!hide) {\n sum++;\n }\n const {formItemProps = {}} = column;\n elements.push(<Col span={span} style={{display: hide ? \"none\" : \"block\"}} key={column?.dataIndex + index}\n className={search?.layout && search?.layout != \"vertical\" ? \" \" + styles.formItemLabel : \"\"}>\n <Form.Item\n className={styles.formItem}\n label={column?.title || column?.dataIndex}\n labelAlign={\"right\"}\n colon={true}\n tooltip={column?.tip || undefined}\n name={column?.dataIndex}\n {...formItemProps}>\n {renderFormField(column)}\n </Form.Item>\n </Col>)\n })\n let offset = 0;\n if (device.xl || device.xxl || device.lg) {\n if (sum <= 3) {\n offset = (4 - sum - 1) * 6;\n } else {\n offset = sum % 4;\n if (offset <= 0) {\n offset = 18\n } else {\n offset = 24 - (offset + 1) * 6;\n }\n }\n } else if (device.md) {\n if (sum <= 2) {\n offset = (3 - sum - 1) * 8;\n } else {\n offset = sum % 3;\n if (offset <= 0) {\n offset = 16\n } else {\n offset = 24 - (offset + 1) * 8;\n }\n }\n } else if (device.sm) {\n if (sum <= 1) {\n offset = (2 - sum - 1) * 12;\n } else {\n offset = sum % 2;\n if (offset <= 0) {\n offset = 12\n } else {\n offset = 24 - (offset + 1) * 12;\n }\n }\n } else if (device.xs) {\n offset = 0\n }\n if (offset <= 0) {\n offset = 0\n }\n elements.push(<Col span={span} key={\"action\" + (sum + 2)} offset={offset}\n className={styles.formButton}>\n <Form.Item className={styles.formItem}>\n <Space align={\"center\"} size={16} className={styles.formItemBtn}>\n <div>\n <Button htmlType=\"reset\">\n 重置\n </Button>\n <Button type=\"primary\" htmlType=\"submit\" loading={loading}>\n 查询\n </Button>\n </div>\n {sumAll > skip &&\n <a onClick={() => setCollapsed(!collapsed)}>\n {collapsed ? <>展开 <DownOutlined/></> : <>收起 <UpOutlined/></>}\n </a>}\n </Space>\n </Form.Item>\n </Col>)\n return <Row gutter={[20, 20]}>\n {elements}\n </Row>;\n }, [columns, collapsed, device, loading, search, styles, form]);\n\n // 使用 useCallback 缓存 renderTableCell 函数\n const renderTableCell = useCallback((text: any, record: any, column: ProColumns) => {\n const {valueType, valueEnum, copyable, props = {}} = column;\n if (valueEnum && text !== undefined && text !== null) {\n const enumItem = valueEnum[text];\n if (enumItem) {\n const {text: label, color} = enumItem;\n if (color) {\n const colorMap: Record<string, string> = {\n success: 'success',\n warning: 'warning',\n error: 'error',\n default: 'default',\n processing: 'processing'\n };\n return <Tag color={colorMap[color] || color || \"default\"}\n variant={\"filled\"} {...props}>{label}</Tag>;\n }\n return label;\n }\n }\n let content: React.ReactNode;\n switch (valueType) {\n case 'date':\n content = text ? dayjs(text).format('YYYY-MM-DD') : '-';\n break;\n case 'dateTime':\n content = text ? dayjs(text).format('YYYY-MM-DD HH:mm:ss') : '-';\n break;\n case 'time':\n content = text ? dayjs(text).format('HH:mm:ss') : '-';\n break;\n case 'percent':\n content = <Progress percent={Number(text) || 0} size=\"small\" {...props} />;\n break;\n case 'progress':\n content = <Progress percent={Number(text) || 0} size=\"small\" {...props} />;\n break;\n case 'rate':\n content = <Rate disabled value={Number(text) || 0} {...props} />;\n break;\n case 'switch':\n content = <Switch checked={!!text} disabled {...props} />;\n break;\n case 'digit':\n content = typeof text === 'number' ? text.toLocaleString() : text;\n break;\n default:\n content = text || '-';\n }\n if (copyable && text) {\n return <Typography.Text copyable>\n {content}\n </Typography.Text>;\n }\n return content;\n }, []);\n\n const getTableColumns = useMemo(() => {\n const list: any[] = [];\n columns.forEach((column: ProColumns) => {\n if (column?.hideInTable === true) return;\n const newColumn: ProColumns = {\n ...column,\n // 使用稳定的 render 函数引用\n render: column.render || ((text: any, record: any) => {\n return renderTableCell(text, record, column);\n })\n };\n if (column.tip && typeof column.title === 'string') {\n const originalTitle = column.title;\n newColumn.title = () => (\n <Space size={\"small\"}>\n {originalTitle}\n <Tooltip title={column.tip}>\n <QuestionCircleOutlined/>\n </Tooltip>\n </Space>\n );\n }\n list.push(newColumn);\n });\n return list;\n }, [columns, renderTableCell]);\n\n requestRef.current = request;\n\n const requestData = useCallback(() => {\n const currentRequest = requestRef.current;\n if (!currentRequest) {\n setLoading(false);\n return;\n }\n setLoading(true);\n const param: any = {...params};\n param.current = page;\n param.pageSize = pageSize;\n const sorter = {...sort};\n currentRequest(param, sorter).then((res: any) => {\n if (res?.success) {\n setData(res?.data || []);\n setTotal(res?.total || 0);\n }\n }).finally(() => {\n setLoading(false);\n });\n }, [params, page, pageSize, sort]);\n\n useEffect(() => {\n requestData();\n }, [requestData]);\n\n const getTableExtra = useMemo(() => {\n if (!extraRefreshBtn && !extra) {\n return false;\n }\n return <Space>\n {extra}\n {extraRefreshBtn &&\n <Button color=\"default\" style={{\n fontSize: \"15px\",\n opacity: \"0.7\",\n }} variant=\"link\"\n icon={<RedoOutlined rotate={260}/>}\n onClick={requestData}/>}\n </Space>\n }, [extraRefreshBtn, extra, requestData]);\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);\n const [selectedRows, setSelectedRows] = useState<any[]>([]);\n\n const clearSelectedRow = useCallback(() => {\n setSelectedRowKeys([]);\n setSelectedRows([]);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange([], []);\n }\n }, [rowSelection]);\n\n const invertSelectedRow = useCallback(() => {\n const allKeys = data.map(item => item[rowKey]);\n const newSelectedKeys = allKeys.filter(key => !selectedRowKeys.includes(key));\n setSelectedRowKeys(newSelectedKeys);\n const newSelectedRows = data.filter(item => newSelectedKeys.includes(item[rowKey]));\n setSelectedRows(newSelectedRows);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange(newSelectedKeys, newSelectedRows);\n }\n }, [data, rowKey, selectedRowKeys, rowSelection]);\n\n const allSelectedRow = useCallback(() => {\n const allKeys = data.map(item => item[rowKey]);\n setSelectedRowKeys(allKeys);\n setSelectedRows(data);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange(allKeys, data);\n }\n }, [data, rowKey, rowSelection]);\n\n const handleSelectChange = useCallback((newSelectedRowKeys: React.Key[], newSelectedRows: any[]) => {\n setSelectedRowKeys(newSelectedRowKeys);\n setSelectedRows(newSelectedRows);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onChange) {\n rowSelection?.onChange(newSelectedRowKeys, newSelectedRows);\n }\n }, [rowSelection]);\n\n const handleSelect = useCallback((record: any, selected: boolean, selectedRows: any[]) => {\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onSelect) {\n rowSelection?.onSelect(record, selected, selectedRows);\n }\n }, [rowSelection]);\n\n const handleSelectAll = useCallback((selected: boolean, selectedRows: any[], changeRows: any[]) => {\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onSelectAll) {\n rowSelection?.onSelectAll(selected, selectedRows, changeRows);\n }\n }, [rowSelection]);\n\n const handleSelectInvert = useCallback((selectedRowKeys: React.Key[]) => {\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onSelectInvert) {\n rowSelection?.onSelectInvert(selectedRowKeys);\n }\n }, [rowSelection]);\n\n const getRowSelection = useMemo((): any => {\n if (rowSelection === false) {\n return undefined;\n }\n const select = {\n selectedRowKeys: rowSelection?.selectedRowKeys || selectedRowKeys,\n onChange: handleSelectChange,\n onSelect: handleSelect,\n onSelectAll: handleSelectAll,\n onSelectInvert: handleSelectInvert,\n }\n return {\n ...{\n align: rowSelection?.align || \"center\",\n columnWidth: rowSelection?.columnWidth || 50,\n fixed: rowSelection?.fixed || false,\n selections: [\n {\n key: 'all',\n text: '全部选中',\n onSelect: allSelectedRow\n },\n {\n key: 'invert',\n text: '反向选中',\n onSelect: invertSelectedRow\n },\n {\n key: 'clear',\n text: '清空选中',\n onSelect: clearSelectedRow\n }\n ]\n }, ...rowSelection, ...select\n }\n }, [rowSelection, selectedRowKeys, handleSelectChange, handleSelect, handleSelectAll, handleSelectInvert, allSelectedRow, invertSelectedRow, clearSelectedRow]);\n\n const setSelectedRowKey = useCallback((keys: React.Key[]) => {\n setSelectedRowKeys(keys);\n const rows = data.filter(item => keys.includes(item[rowKey]));\n setSelectedRows(rows);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange(keys, rows);\n }\n }, [data, rowKey, rowSelection]);\n /**\n * 方法挂载\n */\n useImperativeHandle(ref, () => ({\n searchForm: form,\n refreshTableData: requestData,\n resetTableData: onReset,\n getTableData: () => {\n return {\n data, page, pageSize, sort, total\n }\n },\n getSelectedRowKeys: () => selectedRowKeys,\n getSelectedRows: () => selectedRows,\n setSelectedRowKeys: setSelectedRowKey,\n clearSelectedRows: clearSelectedRow,\n invertSelectedRow: invertSelectedRow,\n allSelectedRow: allSelectedRow\n }));\n\n const [selectionBarAffix, setSelectionBarAffix] = useState(false);\n const renderSelectionBar = useCallback(() => {\n if ((selectedRowKeys?.length || 0) <= 0) return null;\n const content = (\n <Card\n className={styles.toolCard + (selectionBarAffix ? \" \" + styles.filter : \"\")}\n variant={\"borderless\"}>\n <Row justify=\"space-between\" align=\"middle\">\n <Col>\n {(typeof rowSelection?.leftExtra === \"function\" && rowSelection?.leftExtra?.(selectedRowKeys, selectedRows)) || rowSelection?.leftExtra || <>已选择 {selectedRowKeys?.length} 项 <a\n onClick={clearSelectedRow}>取消选择</a></>}\n </Col>\n <Col>\n <Space>\n {(typeof rowSelection?.rightExtra === \"function\" && rowSelection?.rightExtra?.(selectedRowKeys, selectedRows)) || rowSelection?.rightExtra}\n </Space>\n </Col>\n </Row>\n </Card>\n );\n if (rowSelection?.hideExtra === true) {\n return false;\n }\n return <Col span={(selectedRowKeys?.length || 0) <= 0 ? 0 : 24}>\n {selectionAffix ? (\n <Affix offsetTop={5} onChange={(affixed) => setSelectionBarAffix(affixed || false)}>{content}</Affix>\n ) : content}\n </Col>;\n }, [selectedRowKeys, selectedRows, rowSelection, selectionAffix, selectionBarAffix, styles, clearSelectedRow]);\n\n const [pageAffix, setPageAffix] = useState(false);\n const renderPagination = useCallback(() => {\n if (pageHidden || pageInTable || total <= 0) return null;\n const content = (\n <Card\n className={styles.pageCard + (pageAffix ? \" \" + styles.filter : \"\")}\n variant={\"borderless\"}>\n <Pagination\n align=\"center\"\n showTotal={(total: any, range: any) => device?.xs || device?.sm ? false : `第 ${range[0]}-${range[1]} 条 / 共 ${total} 条`}\n showQuickJumper={!(device?.xs || device?.sm)}\n pageSizeOptions={[10, 20, 50, 100]}\n {...paginationProps}\n showSizeChanger={{\n showSearch: false,\n variant: \"filled\",\n size: \"small\",\n }}\n showLessItems={true}\n size={\"small\"}\n current={page}\n pageSize={pageSize}\n total={total}\n onChange={(page: any, pageSize: any) => {\n setPage(page);\n setPageSize(pageSize);\n }}\n />\n </Card>\n );\n\n return paginationAffix ? (\n <Affix offsetBottom={5} onChange={(affixed) => setPageAffix(affixed || false)}>{content}</Affix>\n ) : content;\n }, [pageHidden, pageInTable, total, page, pageSize, paginationProps, device, pageAffix, paginationAffix, styles]);\n\n return (\n <Row gutter={[15, 15]} ref={containerRef}>\n <Col span={!search ? 0 : 24}>\n <Card variant={\"borderless\"}>\n <Form layout={search?.layout || \"vertical\"} form={form} onReset={onReset}\n onFinish={onFinish}>\n {getSearchFormItem}\n </Form>\n </Card>\n </Col>\n\n {renderSelectionBar()}\n <Col span={24}>\n <Card title={title} extra={getTableExtra} className={styles.tableCard} variant={\"borderless\"}>\n <Table\n rowKey={rowKey}\n className={styles.table}\n style={{whiteSpace: \"nowrap\"}}\n scroll={{x: true, y: virtual ? 500 : undefined}}\n virtual={virtual}\n {...tableProps}\n rowSelection={getRowSelection}\n pagination={!pageHidden && pageInTable ? {\n ...{\n pageSizeOptions: [10, 20, 50, 100],\n }, ...paginationProps, ...{\n current: page,\n pageSize: pageSize,\n total: total,\n size: \"small\",\n showSizeChanger: {\n showSearch: false,\n variant: \"filled\",\n size: \"small\",\n },\n showQuickJumper: !(device?.xs || device?.sm),\n showLessItems: true,\n showTotal: (total: any, range: any) => device?.xs || device?.sm ? false : `第 ${range[0]}-${range[1]} 条 / 共 ${total} 条`,\n onChange: (page: any, pageSize: any) => {\n setPage(page);\n setPageSize(pageSize);\n }\n } as any\n } : false}\n size={\"small\"}\n columns={getTableColumns as any}\n dataSource={data}\n loading={loading}\n onChange={useCallback((_: any, filters: any, sorter: any) => {\n if (Object.keys(filters).length > 0) {\n setParams(prev => ({...prev, ...filters}));\n }\n if (Object.keys(sorter).length > 0 && sorter?.field) {\n let temp: any = {};\n temp[sorter?.field] = sorter?.order;\n setSort(temp);\n }\n }, [])}/>\n </Card>\n </Col>\n {!pageHidden && !pageInTable && total > 0 && <Col span={24}>\n {renderPagination()}\n </Col>}\n </Row>\n );\n});\n\nexport default ProTableComponent;\n","// noinspection TypeScriptValidateTypes\nimport React, {forwardRef, useImperativeHandle, useState} from \"react\";\nimport {Modal, ModalProps} from \"antd\";\nimport {useTheme} from \"../theme\";\n\n/**\n * ProModal 组件属性\n */\nexport type ProModalProps = {\n modalProps?: ModalProps & any & undefined; // Ant Design Modal 原生属性(可选)\n title?: any; // 模态框标题\n onOk?: () => void | any; // 确认按钮点击回调函数\n onCancel?: () => void | any; // 取消按钮点击回调函数\n afterClose?: () => void | any; // 模态框关闭后的回调函数\n okText?: string; // 确认按钮文本(默认\"确定\")\n okType?: \"primary\" | \"default\" | \"dashed\" | \"link\" | \"text\"; // 确认按钮类型(默认 \"primary\")\n width?: number | string; // 模态框宽度(默认 520,紧凑模式下自动调整为 87%)\n afterOpenChange?: (open: boolean) => void | any; // 模态框打开/关闭状态变化回调(可选)\n children?: React.ReactNode; // 模态框内容\n};\n\n/**\n * ProModal 组件引用接口\n * 用于父组件通过 ref 调用模态框的方法\n */\nexport interface ProModalRef {\n show: () => void; // 显示模态框\n hide: () => void; // 隐藏模态框\n}\n\nconst ProModal = forwardRef<ProModalRef, ProModalProps>((props, ref): any => {\n const {\n modalProps = {},\n title,\n onOk,\n onCancel,\n afterClose,\n okText,\n okType,\n width = 520,\n afterOpenChange,\n children,\n } = props;\n\n const theme = useTheme();\n const [internalOpen, setInternalOpen] = useState<boolean>(false);\n\n // 判断是否为受控模式\n const isControlled = (modalProps as any)?.open !== undefined;\n const open = isControlled ? (modalProps as any)?.open : internalOpen;\n\n // 根据紧凑模式调整宽度(紧凑模式下减少 20% 宽度)\n const adjustedWidth = theme?.isCompactTheme?.()\n ? (typeof width === 'number' ? Math.floor(width * 0.87) : width)\n : width;\n\n /**\n * 处理确认按钮点击事件\n */\n const handleOk = async () => {\n await onOk?.();\n };\n\n /**\n * 处理取消按钮点击事件\n */\n const handleCancel = () => {\n if (onCancel) {\n onCancel();\n } else if (!isControlled) {\n setInternalOpen(false);\n afterOpenChange?.(false);\n }\n };\n\n /**\n * 处理模态框关闭后的事件\n */\n const handleAfterClose = () => {\n afterClose?.();\n };\n\n /**\n * 暴露给父组件的方法\n */\n useImperativeHandle(ref, () => ({\n show: () => {\n if (!isControlled) {\n setInternalOpen(true);\n }\n afterOpenChange?.(true);\n },\n hide: () => {\n if (!isControlled) {\n setInternalOpen(false);\n }\n afterOpenChange?.(false);\n }\n }));\n\n return (\n <Modal\n title={title}\n open={open}\n onOk={handleOk}\n onCancel={handleCancel}\n afterClose={handleAfterClose}\n okText={okText}\n okType={okType}\n width={adjustedWidth}\n maskClosable={false}\n {...modalProps}\n >\n {children}\n </Modal>\n );\n});\n\nexport default ProModal;"]}
1
+ {"version":3,"sources":["../src/icon/index.tsx","../src/breadcrumb/index.tsx","../src/antd/index.tsx","../src/theme/index.tsx","../src/animation/index.tsx","../src/title/index.tsx","../src/layout/body/index.tsx","../src/layout/footer/index.tsx","../src/layout/header/index.tsx","../src/layout/sider/index.tsx","../src/layout/sinking/index.tsx","../src/layout/index.tsx","../src/pro-table/index.tsx","../src/pro-modal/index.tsx"],"names":["createContext","jsx","createStyles","React","useContext","useMemo","createFromIconfontCN","AntdIcons","Breadcrumb","Message","Notification","Modal","App","theme","useState","jsxs","ThemeProvider","useStyles","Fragment","Spin","Layout","Space","useResponsive","useTheme","useEffect","useCallback","ConfigProvider","Menu","forwardRef","useImperativeHandle","Watermark","Drawer","Button","MenuUnfoldOutlined","MenuFoldOutlined","useRef","Form","dayjs","title","props","Select","DatePicker","TimePicker","InputNumber","Rate","Switch","Input","Col","DownOutlined","UpOutlined","Row","Tag","Progress","Typography","Tooltip","QuestionCircleOutlined","RedoOutlined","selectedRows","selectedRowKeys","Card","Affix","Pagination","total","page","pageSize","Table"],"mappings":"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","file":"index.js","sourcesContent":["// noinspection TypeScriptValidateTypes,HtmlUnknownAttribute,JSUnusedGlobalSymbols\n\n/**\n * Icon 组件 - 支持 Ant Design 图标和 iconfont 图标\n * \n * 使用方式:\n * \n * 1. 全局配置(推荐,应用启动时设置一次)\n * ```tsx\n * import { setIconfontUrl } from '@/components/icon';\n * \n * // 设置单个 iconfont 地址\n * setIconfontUrl('//at.alicdn.com/t/c/font_xxx.js');\n * \n * // 设置多个 iconfont 地址(支持多个图标库)\n * setIconfontUrl([\n * '//at.alicdn.com/t/c/font_xxx1.js',\n * '//at.alicdn.com/t/c/font_xxx2.js'\n * ]);\n * ```\n * \n * 2. 使用 Provider 局部配置(适用于特定区域需要不同图标库)\n * ```tsx\n * import { Icon, IconFontProvider } from '@/components/icon';\n * \n * <IconFontProvider iconfontUrl=\"//at.alicdn.com/t/c/font_xxx.js\">\n * <Icon type=\"icon-xxx\" />\n * </IconFontProvider>\n * ```\n * \n * 3. 直接在组件上配置(优先级最高,适用于个别图标需要特殊处理)\n * ```tsx\n * import { Icon } from '@/components/icon';\n * \n * <Icon type=\"icon-xxx\" iconfontUrl=\"//at.alicdn.com/t/c/font_xxx.js\" />\n * ```\n * \n * 优先级:组件 props > IconFontProvider > 全局配置 > 默认值\n */\n\nimport React, {createContext, useContext, useMemo} from 'react';\nimport {createFromIconfontCN} from '@ant-design/icons';\nimport * as AntdIcons from '@ant-design/icons';\nimport {createStyles} from 'antd-style';\n\n/**\n * 全局 iconfont 地址配置\n */\nlet globalIconfontUrl: string | string[] | undefined = undefined;\n\n/**\n * 设置全局 iconfont 地址\n * @param url iconfont 脚本地址(单个或多个)\n */\nexport const setIconfontUrl = (url: string | string[]): void => {\n globalIconfontUrl = url;\n // 清除缓存,使新地址生效\n iconfontCache = null;\n};\n\n/**\n * 获取当前 iconfont 地址\n * @returns 当前配置的 iconfont 地址(未配置时返回 undefined)\n */\nexport const getIconfontUrl = (): string | string[] | undefined => {\n return globalIconfontUrl;\n};\n\n/**\n * IconFont 配置上下文\n */\ninterface IconFontContextType {\n iconfontUrl?: string | string[];\n}\n\nconst IconFontContext = createContext<IconFontContextType>({});\n\n/**\n * IconFont 配置 Provider 组件属性\n */\nexport interface IconFontProviderProps {\n iconfontUrl?: string | string[]; // iconfont 脚本地址(可以是单个地址或多个地址数组)\n children: React.ReactNode; // 子组件\n}\n\n/**\n * IconFont 配置 Provider 组件\n * 用于为子组件提供自定义的 iconfont 地址\n */\nexport const IconFontProvider: React.FC<IconFontProviderProps> = ({iconfontUrl, children}) => {\n return (\n <IconFontContext.Provider value={{iconfontUrl}}>\n {children}\n </IconFontContext.Provider>\n );\n};\n\n/**\n * 样式\n */\nconst useStyles: any = createStyles(() => ({\n iconWrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n }\n}));\n\n/**\n * Icon 组件属性\n */\ninterface IconProps extends React.HTMLAttributes<HTMLSpanElement> {\n type: string; // 图标类型(Antd 图标名 或 iconfont 图标名)\n iconfontUrl?: string | string[]; // 自定义 iconfont 地址(可选,优先级最高)\n ref?: any; // 组件引用\n className?: any; // 自定义样式类名\n style?: any; // 自定义样式\n onClick?: any; // 点击事件\n}\n\n/**\n * Icon 组件\n * 支持 Ant Design 图标和 iconfont 图标\n */\nexport const Icon = React.forwardRef<HTMLSpanElement, IconProps>(\n ({type, iconfontUrl, className, style, onClick, ...rest}, ref) => {\n const {styles, cx} = useStyles();\n const context = useContext(IconFontContext);\n \n // 优先级:props > context > 全局配置\n const currentIconfontUrl = iconfontUrl || context.iconfontUrl || globalIconfontUrl;\n \n // 使用 useMemo 缓存 iconfont 组件实例,避免重复创建\n const IconfontIcon = useMemo(() => {\n if (!currentIconfontUrl) {\n return null;\n }\n return createFromIconfontCN({\n scriptUrl: currentIconfontUrl,\n });\n }, [currentIconfontUrl]);\n \n // 优先渲染 Antd 图标\n const AntdIconComponent: any = (AntdIcons as any)[type];\n if (AntdIconComponent) {\n return (\n <AntdIconComponent ref={ref} className={cx(styles.iconWrapper, className)} style={style}\n onClick={onClick} {...rest}/>\n );\n }\n \n // 渲染 iconfont 图标\n if (type.startsWith('icon-')) {\n if (!IconfontIcon) {\n // 渲染占位符\n return (\n <span ref={ref} className={cx(styles.iconWrapper, className)} style={style} onClick={onClick} {...rest}>\n {type}\n </span>\n );\n }\n return (\n <IconfontIcon type={type} ref={ref} className={cx(styles.iconWrapper, className)} style={style}\n onClick={onClick} {...rest}/>\n );\n }\n \n // 兜底渲染文本\n return (\n <span ref={ref} className={cx(styles.iconWrapper, className)} style={style} onClick={onClick} {...rest}>\n {type}\n </span>\n );\n }\n);\n\n/**\n * 获取所有 Antd 图标名称\n */\nexport const getAntdIconNames = (): string[] => {\n return Object.keys(AntdIcons).filter(key => {\n return !key.startsWith('create') &&\n !key.startsWith('set') &&\n !key.startsWith('get') &&\n key !== 'default';\n });\n};\n\n/**\n * Iconfont 图标缓存\n */\nlet iconfontCache: string[] | null = null;\n\n/**\n * 地址转换(规范化 URL)\n * @param url 原始 URL\n * @returns 规范化后的 URL\n */\nconst normalizeUrl = (url: string): string => {\n if (url.startsWith('//')) {\n return `https:${url}`;\n }\n if (url.startsWith('http://') || url.startsWith('https://')) {\n return url;\n }\n // 相对路径直接返回(以 / 开头)\n return url.startsWith('/') ? url : `/${url}`;\n};\n\n/**\n * 获取所有 iconfont 图标名称\n * @param url 可选的 iconfont 地址(不传则使用全局配置)\n * @returns iconfont 图标名称数组\n */\nexport const getIconfontIconNames = async (url?: string | string[]): Promise<string[]> => {\n const targetUrl = url || globalIconfontUrl;\n \n // 如果未配置 iconfont 地址,返回空数组\n if (!targetUrl) {\n return [];\n }\n \n // 如果传入了新的 URL,清除缓存\n if (url && iconfontCache) {\n iconfontCache = null;\n }\n \n if (iconfontCache) return iconfontCache;\n \n try {\n // 支持多个 iconfont 地址\n const urls = Array.isArray(targetUrl) ? targetUrl : [targetUrl];\n const iconSets = await Promise.all(\n urls.map(async (scriptUrl) => {\n try {\n const response = await fetch(normalizeUrl(scriptUrl));\n const scriptText = await response.text();\n return [...scriptText.matchAll(/id=\"(icon-[^\"]+)\"/g)].map(m => m[1]);\n } catch (_) {\n return [];\n }\n })\n );\n \n // 合并所有图标名称并去重\n const allIcons = [...new Set(iconSets.flat())];\n iconfontCache = allIcons;\n return allIcons;\n } catch (_) {\n return [];\n }\n};\n\n/**\n * 获取所有图标名称(Antd + Iconfont)\n * @param iconfontUrl 可选的 iconfont 地址(不传则使用全局配置)\n * @returns 所有图标名称数组\n */\nexport const getAllIconNames = async (iconfontUrl?: string | string[]): Promise<string[]> => {\n const [antdIcons, iconfontIcons] = await Promise.all([\n Promise.resolve(getAntdIconNames()),\n getIconfontIconNames(iconfontUrl)\n ]);\n return [...antdIcons, ...iconfontIcons];\n};","import React from \"react\";\nimport {Breadcrumb} from \"antd\";\nimport {createStyles} from \"antd-style\";\n\nconst useBreadCrumbStyles = createStyles(({token}) => {\n return {\n bread: {\n backgroundColor: token?.colorBgContainer,\n padding: \"5px 15px 5px 15px\",\n fontSize: \"12px\",\n },\n breadStyle: {\n color: \"rgb(156, 156, 156)\",\n cursor: \"pointer\"\n },\n };\n});\n\n/**\n * 面包屑项目类型\n */\nexport type BreadCrumbItem = {\n title: string; // 面包屑项标题\n path?: string; // 路径(可选,用于记录但不直接使用)\n onClick?: () => void; // 点击回调函数\n};\n\n/**\n * 面包屑组件属性\n */\nexport type BreadCrumbProps = {\n style?: React.CSSProperties; // 自定义样式\n className?: string; // 自定义样式类名\n enabled?: boolean; // 是否启用面包屑(默认 true)\n items?: BreadCrumbItem[]; // 面包屑项目列表(由外部传入)\n hideBreadCrumb?: boolean; // 是否隐藏面包屑(通常由路由配置决定)\n};\n\n/**\n * 面包屑组件\n * @param props\n * @constructor\n */\nconst BreadCrumb: React.FC<BreadCrumbProps> = React.memo((props) => {\n const {\n style,\n className,\n enabled = true,\n items = [],\n hideBreadCrumb = false\n } = props;\n\n const {styles: {bread, breadStyle}} = useBreadCrumbStyles();\n\n // 如果禁用、隐藏或没有数据,则不渲染\n if (!enabled || hideBreadCrumb || items.length === 0) {\n return null;\n }\n\n // 将传入的 items 转换为 Ant Design Breadcrumb 需要的格式\n const breadCrumbData = items.map(item => ({\n title: item.title,\n onClick: item.onClick,\n className: breadStyle,\n }));\n\n return (\n <Breadcrumb\n className={`${bread} ${className || ''}`}\n style={style}\n items={breadCrumbData}\n />\n );\n});\n\nexport default BreadCrumb;","import { App } from 'antd';\nimport type { MessageInstance } from 'antd/es/message/interface';\nimport type { ModalStaticFunctions } from 'antd/es/modal/confirm';\nimport type { NotificationInstance } from 'antd/es/notification/interface';\n\nlet Message: MessageInstance;\nlet Notification: NotificationInstance;\nlet Modal: Omit<ModalStaticFunctions, 'warn'>;\n\nexport default () => {\n const staticFunction = App.useApp();\n Message = staticFunction.message;\n Modal = staticFunction.modal;\n Notification = staticFunction.notification;\n return null;\n};\n\nexport { Message, Notification, Modal };","import React, {createContext, useContext, useState, ReactNode} from 'react';\nimport {ThemeProvider, ThemeMode} from 'antd-style';\nimport {theme} from 'antd';\nimport Antd from \"../antd\";\n\n// 获取风格\nconst getDefaultTheme = (color: string, radius: number): any => {\n return {\n token: {\n colorPrimary: color,\n colorInfo: color,\n borderRadius: radius\n },\n }\n}\n\n// 获取紧凑风格\nconst getCompactTheme = (color: string, radius: number): any => {\n let temp = getDefaultTheme(color, radius);\n temp.algorithm = [theme.compactAlgorithm];\n return temp;\n}\n\n/**\n * 获取主题模式\n */\nconst getMode = (): ThemeMode => {\n const mode = localStorage?.getItem(\"theme\")\n if (mode == \"light\" || mode == \"dark\") {\n return mode as ThemeMode;\n }\n return \"auto\" as ThemeMode;\n}\n\n/**\n * 设置主题模式到 localStorage\n * @param mode 模式\n */\nconst setModeToStorage = (mode: string): void => {\n localStorage?.setItem(\"theme\", mode);\n}\n\n/**\n * 主题上下文类型\n * 提供主题管理的所有方法和状态\n */\nexport interface ThemeContextType {\n themes: any; // 当前主题配置对象\n setColor: (color: string) => void; // 设置主题颜色\n setRadius: (radius: number) => void; // 设置主题圆角\n setThemes: (theme: any) => void; // 设置完整主题配置\n setDefaultTheme: () => void; // 设置默认主题(非紧凑)\n setCompactTheme: () => void; // 设置紧凑主题\n appearance: any; // 当前外观(亮色/暗色)\n setAppearance: (appearance: any) => void; // 设置外观\n mode: ThemeMode; // 当前主题模式\n getModeName: (mode: ThemeMode) => string; // 获取模式名称\n lightMode: ThemeMode; // 亮色模式常量\n darkMode: ThemeMode; // 暗色模式常量\n autoMode: ThemeMode; // 自动模式常量\n setLightMode: () => void; // 切换到亮色模式\n setDarkMode: () => void; // 切换到暗色模式\n setAutoMode: () => void; // 切换到跟随系统模式\n isLightMode: () => boolean; // 判断是否为亮色模式\n isDarkMode: () => boolean; // 判断是否为暗色模式\n isAutoMode: () => boolean; // 判断是否为跟随系统模式\n isLightTheme: () => boolean; // 判断当前是否为亮色主题\n isDarkTheme: () => boolean; // 判断当前是否为暗色主题\n isCompactTheme: () => boolean; // 判断当前是否为紧凑主题\n toggle: () => void; // 切换主题模式(自动 -> 亮色 -> 暗色 -> 自动)\n}\n\n// 创建主题上下文\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\n// 导出 useTheme hook\nexport const useTheme = (): ThemeContextType | undefined => {\n const context = useContext(ThemeContext);\n if (!context) {\n return undefined;\n }\n return context;\n};\n\n/**\n * 主题组件属性\n */\nexport type ThemeProps = {\n theme?: any; // 自定义主题配置对象(可选,覆盖默认主题)\n mode?: ThemeMode; // 自定义主题模式(可选,覆盖默认模式)\n appearance?: any; // 自定义外观(可选,控制亮色/暗色)\n onAppearanceChange?: (appearance: any) => void; // 外观变化回调函数(可选)\n children?: ReactNode; // 子组件\n};\n\n// 主题 Provider 组件(合并后的统一组件)\nconst Theme: React.FC<ThemeProps> = ({\n children,\n theme: customTheme,\n mode: customMode,\n appearance: customAppearance,\n onAppearanceChange\n }) => {\n const existingContext = useContext(ThemeContext);\n if (existingContext && !customTheme && !customMode && !customAppearance && !onAppearanceChange) {\n return children;\n }\n return <ThemeProviderInner\n theme={customTheme}\n mode={customMode}\n appearance={customAppearance}\n onAppearanceChange={onAppearanceChange}>\n {children}\n </ThemeProviderInner>;\n};\n\nconst ThemeProviderInner: React.FC<ThemeProps> = ({\n children,\n theme: customTheme,\n mode: customMode,\n appearance: customAppearance,\n onAppearanceChange\n }) => {\n const [themes, setThemes] = useState<any>(customTheme || getDefaultTheme(\"#1890ff\", 6));\n const [mode, setMode2] = useState<ThemeMode>(customMode || getMode());\n const [appearance, setAppearance] = useState<any>(customAppearance !== undefined ? customAppearance : null);\n\n const lightMode: ThemeMode = \"light\";\n const darkMode: ThemeMode = \"dark\";\n const autoMode: ThemeMode = \"auto\";\n\n /**\n * 设置默认主题\n */\n const setDefaultTheme = () => {\n setThemes(getDefaultTheme(themes?.token?.colorPrimary, themes?.token?.borderRadius))\n }\n\n /**\n * 设置紧凑主题\n */\n const setCompactTheme = () => {\n setThemes(getCompactTheme(themes?.token?.colorPrimary, themes?.token?.borderRadius))\n }\n\n /**\n * 设置主题颜色\n */\n const setColor = (color: string) => {\n let temp = {...themes}\n temp.token.colorPrimary = color;\n temp.token.colorInfo = color;\n setThemes(temp);\n }\n\n /**\n * 设置主题圆角\n */\n const setRadius = (radius: number) => {\n let temp = {...themes}\n temp.token.borderRadius = radius;\n setThemes(temp);\n }\n\n /**\n * 获取模式名称\n */\n const getModeName = (modeValue: string) => {\n if (modeValue == lightMode) {\n return \"亮色风格\";\n }\n if (modeValue == darkMode) {\n return \"暗色风格\";\n }\n return \"跟随系统\";\n }\n\n /**\n * 设置亮色模式\n */\n const setLightMode = () => {\n setModeToStorage(lightMode);\n setMode2(lightMode)\n setAppearance(lightMode);\n }\n\n /**\n * 设置暗色模式\n */\n const setDarkMode = () => {\n setModeToStorage(darkMode);\n setMode2(darkMode);\n setAppearance(darkMode);\n }\n\n /**\n * 设置跟随系统模式\n */\n const setAutoMode = () => {\n setModeToStorage(autoMode);\n setMode2(autoMode);\n setAppearance(null);\n }\n\n /**\n * 是否为亮色模式\n */\n const isLightMode = () => {\n return mode == lightMode;\n }\n\n /**\n * 是否为暗色模式\n */\n const isDarkMode = () => {\n return mode == darkMode;\n }\n\n /**\n * 是否为跟随系统模式\n */\n const isAutoMode = () => {\n return mode == autoMode;\n }\n\n /**\n * 当前是否为亮色风格\n */\n const isLightTheme = () => {\n return appearance == lightMode;\n }\n\n /**\n * 当前是否为暗色风格\n */\n const isDarkTheme = () => {\n return appearance == darkMode;\n }\n\n /**\n * 当前是否为紧凑主题\n */\n const isCompactTheme = () => {\n return themes?.algorithm && Array.isArray(themes.algorithm) && themes.algorithm.includes(theme.compactAlgorithm);\n }\n\n /**\n * 模式切换\n */\n const toggle = () => {\n if (isAutoMode()) {\n setLightMode();\n } else if (isLightMode()) {\n setDarkMode();\n } else {\n setAutoMode();\n }\n }\n\n const value: ThemeContextType = {\n themes,\n setColor,\n setRadius,\n setThemes,\n setDefaultTheme,\n setCompactTheme,\n appearance,\n setAppearance,\n mode,\n getModeName,\n lightMode,\n darkMode,\n autoMode,\n setLightMode,\n setDarkMode,\n setAutoMode,\n isLightMode,\n isDarkMode,\n isAutoMode,\n isLightTheme,\n isDarkTheme,\n isCompactTheme,\n toggle\n };\n\n return (\n <ThemeContext.Provider value={value}>\n <ThemeProvider\n theme={themes}\n themeMode={mode}\n appearance={appearance}\n onAppearanceChange={(newAppearance) => {\n onAppearanceChange?.(newAppearance);\n setAppearance(newAppearance);\n }}>\n <Antd/>\n {children}\n </ThemeProvider>\n </ThemeContext.Provider>\n );\n};\n\nexport default Theme;\n","import React, {useMemo} from 'react';\nimport {createStyles} from \"antd-style\";\n\nexport type AnimationProps = {\n animate?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n};\n\nexport const Animate = {\n None: \"\",\n FadeUp: \"fadeInUp\",\n FadeDown: \"fadeInDown\",\n} as const;\n\nconst useStyles = createStyles(({css}): any => ({\n fadeInUp: css`\n @keyframes fadeInUp {\n 0% {\n opacity: 0;\n transform: translateY(20px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n }\n animation-name: fadeInUp;\n animation-duration: 0.5s;\n `,\n fadeInDown: css`\n @keyframes fadeInDown {\n 0% {\n opacity: 0;\n transform: translateY(-20px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n }\n animation-name: fadeInDown;\n animation-duration: 0.5s;\n `,\n}));\n\nconst Animation: React.FC<AnimationProps> = React.memo(({animate, style, children}) => {\n const {styles} = useStyles();\n \n const animationClass = useMemo(() => {\n return animate && animate !== Animate.None ? styles?.[animate] : null;\n }, [animate, styles]);\n \n return (\n <div className={animationClass} style={style}>\n {children}\n </div>\n );\n});\n\nexport default Animation;","import React from 'react';\nimport {createStyles} from \"antd-style\";\nimport {useTheme} from \"../theme\";\n\n/**\n * 标题条位置类型\n */\nexport type TitlePlacement = 'left' | 'right';\n\n/**\n * 标题条大小类型\n */\nexport type TitleSize = 'small' | 'normal' | 'larger';\n\n/**\n * 标题条组件属性\n */\nexport type TitleProps = {\n children?: any; // 子内容(标题文本)\n placement?: TitlePlacement; // 标题条位置:'left' | 'right'(默认 'left')\n size?: TitleSize; // 标题条大小:'small' | 'normal' | 'larger'(默认 'normal')\n open?: boolean; // 是否显示标题条(默认 true)\n width?: number; // 标题条宽度(默认 5)\n height?: number; // 标题条高度(默认根据 size 自动计算)\n radius?: number; // 标题条圆角(默认 -1,跟随主题圆角设置)\n space?: number; // 标题条与文本的间距(默认 7)\n};\n\nconst Title: React.FC<TitleProps> = ({...props}) => {\n const {\n placement = \"left\",\n size = \"normal\" as TitleSize,\n open = true,\n width = 5,\n height = 0,\n radius = -1,\n space = 7,\n } = props;\n\n const theme = useTheme();\n\n const getHeight = (h: number, s: TitleSize) => {\n if (h > 0) {\n return h;\n }\n const sizeMap: Record<TitleSize, number> = {\n small: 15,\n normal: 20,\n larger: 25\n }\n return sizeMap[s] || 20;\n }\n\n const useStyles = createStyles(({token}): any => {\n const isCompact = theme?.isCompactTheme() || false;\n const barRadius = radius < 0 ? (token?.borderRadius > 3 ? token?.borderRadius : 0) : radius;\n const barHeight = isCompact ? getHeight(height, size) - 5 : (barRadius > 0 ? getHeight(height, size) : getHeight(height, size) - 3);\n const barWidth = isCompact || (!isCompact && barRadius <= 0) ? width - 1 : width;\n return {\n center: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\"\n },\n leftBar: {\n width: barWidth,\n height: barHeight,\n borderTopRightRadius: barRadius,\n borderBottomRightRadius: barRadius,\n marginRight: space,\n backgroundColor: token?.colorPrimary,\n },\n rightBar: {\n width: barWidth,\n height: barHeight,\n borderTopLeftRadius: barRadius,\n borderBottomLeftRadius: barRadius,\n marginLeft: space,\n backgroundColor: token?.colorPrimary,\n }\n };\n });\n\n const {styles: {center, leftBar, rightBar}} = useStyles();\n\n const left = <div className={center}>\n {open && <span className={leftBar}/>}\n {props?.children}\n </div>;\n\n const right = <div className={center}>\n {props?.children}\n {open && <span className={rightBar}/>}\n </div>;\n\n return (\n <>\n {placement == 'left' && left}\n {placement == 'right' && right}\n </>\n );\n};\n\nexport default Title;","import React from \"react\";\nimport {Layout} from \"antd\";\nimport {createStyles} from \"antd-style\";\nimport {Spin, Space, App} from \"antd\";\nimport Animation from \"../../animation\";\nimport {Animate} from \"../../animation\";\n\nconst useStyles = createStyles(({css}): any => {\n return {\n body: css`\n padding: 10px;\n `,\n load: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"80vh\",\n },\n gutter: {\n display: \"flex\"\n },\n };\n});\n\nexport type BodyProps = {\n loading?: boolean;//是否加载状态\n space?: boolean;//是否开启间距\n animation?: boolean;//动画\n style?: any;//样式\n className?: any;//样式名\n children?: any;//子内容\n};\n/**\n * 页面主体部分\n * @param props\n * @constructor\n */\nconst Body: React.FC<BodyProps> = React.memo((props) => {\n const {\n children,\n loading,\n style,\n className,\n space = true,\n animation = true,\n } = props;\n const {styles: {body, load, gutter}, cx} = useStyles();\n\n /**\n * 页面容器\n */\n return <App>\n {loading ? (\n <Spin spinning={true} size=\"large\" className={load}></Spin>\n ) : (\n <Layout style={style}>\n <div className={cx(\"ant-layout-body\", className || body)}>\n <Animation animate={animation ? Animate.FadeUp : Animate.None}>\n {space ? (\n <Space orientation=\"vertical\" size=\"middle\" className={gutter}>\n {children}\n </Space>\n ) : children}\n </Animation>\n </div>\n </Layout>\n )}\n </App>;\n});\n\nexport default Body;","import React from \"react\";\n\nexport type FooterProps = {\n children?: any;//子内容\n};\n\nconst Footer: React.FC<FooterProps> = React.memo(({children}) => {\n return <>{children}</>\n});\n\nexport default Footer;","import React from \"react\";\nimport {createStyles} from \"antd-style\";\n\nconst useStyles = createStyles(({css}): any => {\n return {\n box: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n right: css`\n z-index: 2;\n `,\n left: css`\n z-index: 2;\n `\n };\n});\nexport type HeaderProps = {\n right?: any;//右侧\n left?: any;//左侧\n};\n\nconst Header: React.FC<HeaderProps> = React.memo((props) => {\n const {styles: {box, right, left}} = useStyles();\n return <div className={box}>\n {props?.left && <div className={left}>\n {props.left}\n </div>}\n {props?.right && <div className={right}>\n {props.right}\n </div>}\n </div>\n});\n\nexport default Header;","import React, {useEffect, useState, useMemo, useCallback} from 'react';\nimport {ConfigProvider, Menu, Layout} from 'antd';\nimport {createStyles, useResponsive, useTheme} from \"antd-style\";\nimport {Icon} from \"../../icon\";\n\nconst useStyles = createStyles(({token, isDarkMode}): any => {\n return {\n left: {\n position: \"relative\",\n background: token?.colorBgContainer,\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n content: {\n flex: 1,\n overflowY: \"auto\"\n },\n menu: {\n zIndex: 1,\n overflow: \"auto\",\n overflowX: \"hidden\",\n borderRight: \"none !important\",\n fontWeight: \"600\",\n userSelect: \"none\",\n \":focus-visible\": {\n outline: \"none !important\"\n },\n \"::-webkit-scrollbar\": {\n width: 0\n },\n \".ant-menu-item-selected::after\": {\n borderRadius: (token?.borderRadius || 0) > 3 ? `${token.borderRadius}px 0 0 ${token.borderRadius}px` : \"0\",\n borderRightWidth: \"4px !important\",\n ...(token?.borderRadius > 3 && {\n right: \"5px !important\",\n top: \"19% !important\",\n height: \"60% !important\"\n })\n },\n \".ant-menu-item,.ant-menu-submenu-title\": {\n transition: \"border-color 0.3s,background 0.3s !important\"\n },\n },\n menuTop: {\n zIndex: 2,\n userSelect: \"none\",\n height: \"100px\",\n lineHeight: \"100px !important\",\n width: \"100%\",\n padding: \"10px !important\",\n overflow: \"hidden\",\n cursor: \"pointer\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n background: token?.colorBgContainer + \" !important\",\n },\n menuBottom: {\n background: token?.colorBgContainer,\n userSelect: \"none\",\n padding: \"0px !important\",\n borderRadius: \"0px\",\n height: \"50px\",\n lineHeight: \"50px !important\",\n borderTop: \"0.5px solid \" + token?.colorBorder + \" !important\",\n borderBottom: \"0.5px solid \" + token?.colorBorder + \" !important\",\n fontWeight: \"bolder\",\n fontSize: 14,\n color: isDarkMode ? \"rgb(255,255,255,0.65)\" : \"rgba(122,122,122)\",\n cursor: \"pointer\",\n overflow: \"hidden\",\n width: \"100%\",\n zIndex: 2,\n transition: \"background 0.3s !important\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n whiteSpace: \"nowrap\",\n },\n logoClose: {\n margin: \"0px -10px\",\n },\n menu2: {\n fontWeight: \"bolder\",\n userSelect: \"none\",\n fontSize: \"13px\",\n flex: \"auto\",\n height: \"55px\",\n borderBottom: \"none !important\",\n },\n darkColor: {\n background: \"#001529 !important\",\n backgroundColor: \"#001529 !important\",\n },\n darkBorderTop: {\n borderTop: '0.5px solid #202020 !important',\n color: \"white\"\n }\n };\n});\n\n/**\n * 侧边栏菜单组件属性\n */\nexport type SiderProps = {\n collapsed?: boolean; // 菜单是否折叠\n menus?: any; // 菜单列表数据\n classNames?: any; // 菜单自定义样式类名\n pathname?: string; // 当前路由路径\n matchedRoutes?: string[]; // 匹配的路由路径列表\n onNavigate?: (path: string) => void; // 路由导航回调函数\n onMenuClick?: (item: any) => void; // 菜单项点击回调函数\n onLogoClick?: () => void; // Logo 点击回调函数\n collapsedLogo?: (isLight: boolean | undefined) => any; // 菜单折叠时的 Logo 渲染函数\n unCollapsedLogo?: (isLight: boolean | undefined) => any; // 菜单展开时的 Logo 渲染函数\n menuBottomBtnIcon?: string; // 菜单底部按钮图标\n menuBottomBtnText?: any; // 菜单底部按钮文字\n onMenuBottomBtnClick?: () => void; // 菜单底部按钮点击回调函数\n layout?: string; // 布局模式:'inline' | 'horizontal'\n theme?: string; // 菜单主题:'light' | 'dark'\n};\n\nconst Sider: React.FC<SiderProps> = React.memo((props) => {\n const {\n collapsed,\n pathname,\n matchedRoutes = [],\n onNavigate,\n onMenuClick,\n menus,\n onLogoClick,\n collapsedLogo,\n unCollapsedLogo,\n menuBottomBtnIcon = null,\n menuBottomBtnText = null,\n onMenuBottomBtnClick,\n classNames,\n layout = \"inline\",\n theme = \"light\"\n } = props;\n const {mobile} = useResponsive();\n const token = useTheme();\n const {styles: {left, content, menu, menuTop, menuBottom, menu2, darkColor, darkBorderTop}, cx} = useStyles();\n const [selectedKeys, setSelectedKeys] = useState<any>([]);\n const [stateOpenKeys, setStateOpenKeys] = useState<any>([]);\n\n useEffect(() => {\n if (pathname) {\n setSelectedKeys([pathname]);\n setStateOpenKeys(matchedRoutes);\n }\n }, [pathname, matchedRoutes]);\n\n /**\n * 只展开一个子集\n */\n const levelKeys = useMemo(() => {\n const key: Record<string, number> = {};\n const func = (items2: any, level = 1) => {\n items2.forEach((item: any) => {\n if (item?.key) {\n key[item.key] = level;\n }\n if (item?.children) {\n return func(item.children, level + 1);\n }\n });\n };\n func(menus);\n return key;\n }, [menus]);\n\n const onOpenChange = useCallback((openKeys: any[]) => {\n const currentOpenKey = openKeys.find((key) => stateOpenKeys.indexOf(key) === -1);\n if (currentOpenKey !== undefined) {\n const repeatIndex = openKeys.filter((key) => key !== currentOpenKey).findIndex((key) => levelKeys[key] === levelKeys[currentOpenKey]);\n setStateOpenKeys(\n openKeys.filter((_, index) => index !== repeatIndex).filter((key) => levelKeys[key] <= levelKeys[currentOpenKey]),\n );\n } else {\n setStateOpenKeys(openKeys);\n }\n }, [stateOpenKeys, levelKeys]);\n\n /**\n * 获取菜单主题\n */\n const menuTheme = useMemo(() => {\n if (token?.isDarkMode) return \"light\";\n return theme === \"dark\" ? theme : \"light\";\n }, [token?.isDarkMode, theme]);\n\n const getColor = useMemo(() => {\n return !token?.isDarkMode && menuTheme === \"dark\" ? ' ' + darkColor : '';\n }, [token?.isDarkMode, menuTheme, darkColor]);\n\n const getBorderColor = useMemo(() => {\n return !token?.isDarkMode && menuTheme === \"dark\" ? ' ' + darkBorderTop : '';\n }, [token?.isDarkMode, menuTheme, darkBorderTop]);\n const menuConfig = useMemo(() => ({\n components: {\n Menu: {\n itemSelectedColor: token?.colorPrimaryText || \"\",\n itemColor: token?.colorTextSecondary || \"\",\n itemHoverColor: token?.colorTextSecondary || \"\",\n fontSize: 13,\n itemMarginBlock: 0,\n itemMarginInline: 0,\n itemBorderRadius: 0,\n subMenuItemBorderRadius: 0,\n activeBarWidth: 4,\n itemHeight: 45,\n subMenuItemBg: \"rgba(255, 255, 255, 0)\",\n }\n }\n }), [token?.colorPrimaryText, token?.colorTextSecondary]);\n\n const handleMenuClick = useCallback((item: any) => {\n if (onNavigate) {\n onNavigate(item?.key);\n }\n setSelectedKeys([item?.key]);\n onMenuClick?.(item);\n }, [onNavigate, onMenuClick]);\n\n const handleLogoClick = useCallback(() => {\n onLogoClick?.();\n }, [onLogoClick]);\n\n return (\n <>\n {layout === \"inline\" ? (\n <Layout className={cx(left, getColor)}>\n <Layout.Header className={cx(menuTop, getColor)} onClick={handleLogoClick}>\n {(mobile || (!mobile && !collapsed)) && unCollapsedLogo?.(!token?.isDarkMode)}\n {!mobile && collapsed && collapsedLogo?.(token?.isDarkMode)}\n </Layout.Header>\n <Layout.Content className={cx(content, getColor)}>\n <ConfigProvider theme={menuConfig}>\n <Menu\n selectedKeys={selectedKeys}\n theme={menuTheme}\n mode=\"inline\"\n items={menus}\n className={cx(menu, classNames)}\n openKeys={!collapsed ? stateOpenKeys : undefined}\n onOpenChange={onOpenChange}\n onClick={handleMenuClick}\n />\n </ConfigProvider>\n </Layout.Content>\n {(menuBottomBtnIcon || menuBottomBtnText) && (\n <Layout.Footer className={cx(menuBottom, getColor, getBorderColor)}\n onClick={onMenuBottomBtnClick}>\n {menuBottomBtnIcon && (typeof menuBottomBtnIcon === \"string\" ?\n <Icon type={menuBottomBtnIcon}/> : menuBottomBtnIcon)}\n {(mobile || (!mobile && !collapsed)) && menuBottomBtnText}\n </Layout.Footer>\n )}\n </Layout>\n ) : (\n <ConfigProvider theme={menuConfig}>\n <Menu\n theme={menuTheme}\n mode=\"horizontal\"\n selectedKeys={selectedKeys}\n items={menus}\n className={cx(menu2, classNames)}\n onClick={handleMenuClick}\n />\n </ConfigProvider>\n )}\n </>\n );\n});\n\nexport default Sider;","import Footer from \"../footer\";\nimport Header from \"../header\";\nimport Sider from \"../sider\";\nimport BreadCrumb from \"../../breadcrumb\";\nimport {createStyles, useResponsive, useTheme} from \"antd-style\";\nimport React, {forwardRef, useImperativeHandle, useState} from \"react\";\nimport {MenuFoldOutlined, MenuUnfoldOutlined} from \"@ant-design/icons\";\nimport {App, Button, Drawer, Layout, Watermark, Spin} from \"antd\";\n\n/**\n * Loading 加载样式\n */\nconst useLoadingStyles = createStyles((): any => {\n return {\n body: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"80vh\",\n },\n };\n});\n\n/**\n * Loading 加载组件\n */\nconst Loading: React.FC = () => {\n const {styles: {body}} = useLoadingStyles();\n return <Spin size=\"large\" className={body}/>;\n};\n\nconst useLayoutStyles = createStyles(({isDarkMode, token, css, responsive}): any => {\n return {\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n },\n sider: {\n zIndex: 2,\n boxShadow: \"2px 0 8px 0 rgba(29,35,41,.05)\",\n background: \"none !important\",\n height: '100vh',\n overflowY: \"auto\",\n position: \"sticky\",\n left: 0,\n top: 0,\n bottom: 0,\n transition: \"all 0.3s,background 0s,height 0s\",\n \".ant-layout-header\": {\n backgroundColor: token?.colorBgContainer\n },\n },\n menuBtn: {\n width: \"55px !important\",\n height: \"55px\",\n lineHeight: \"55px\",\n fontSize: \"15px !important\",\n cursor: \"pointer\",\n float: \"left\",\n \":hover\": {\n background: \"none !important\",\n }\n },\n drawMenu: {\n padding: \"0px !important\",\n },\n body: css`\n transition: margin-left 0.3s !important;\n background-color: ${isDarkMode ? \"black\" : \"transparent\"};\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n `,\n sticky: {\n position: \"sticky\",\n top: 0,\n left: 0,\n },\n header: css`\n padding: 0;\n height: 55px;\n line-height: 55px;\n width: 100%;\n z-index: 3;\n box-shadow: 0 2px 8px 0 ${isDarkMode ? \"rgba(0, 0, 0, 0.25)\" : \"rgba(29, 35, 41, 0.05)\"};\n user-select: none;\n background: ${token?.colorBgContainer} !important;\n flex-shrink: 0;\n\n .ant-menu-item-icon {\n color: ${isDarkMode ? \"rgb(255,255,255,0.85)\" : \"\"};\n }\n `,\n horizontalContent: css`\n width: 100%;\n flex: 1 0 auto;\n `,\n inlineContent: css`\n width: 100%;\n flex: 1 0 auto;\n `,\n flowContent: css`\n .ant-layout-body {\n width: 80%;\n margin-left: 10%;\n }\n\n ${responsive.md} {\n .ant-layout-body {\n width: 100%;\n margin-left: 0;\n }\n }\n `,\n footer: css`\n text-align: center;\n flex-shrink: 0;\n `,\n flow: {\n display: \"flex\",\n justifyContent: \"space-between\",\n height: \"55px\",\n },\n logo: {\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"220px\",\n height: \"55px\",\n },\n darkColor: {\n backgroundColor: \"#001529 !important\"\n },\n layoutNormal: css`\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n `,\n };\n});\n\n/**\n * 面包屑项目类型\n */\nexport type BreadCrumbItem = {\n title: string; // 面包屑项标题\n path?: string; // 路径(可选)\n onClick?: () => void; // 点击回调函数\n};\n\n/**\n * 布局组件属性\n */\nexport type LayoutProps = {\n ref?: React.Ref<SinKingRef>; // 组件引用\n loading?: boolean; // 是否显示加载状态\n breadCrumb?: boolean; // 是否启用面包屑\n breadCrumbItems?: BreadCrumbItem[]; // 面包屑项目列表\n hideBreadCrumb?: boolean; // 是否隐藏面包屑\n menuCollapsedWidth?: number; // 菜单折叠时的宽度(默认60)\n menuUnCollapsedWidth?: number; // 菜单展开时的宽度(默认220)\n menus?: any; // 菜单列表数据\n menuClassNames?: any; // 菜单自定义样式类名\n pathname?: string; // 当前路由路径\n matchedRoutes?: any; // 匹配的路由列表(可以是 string[] 或完整的路由对象数组)\n onNavigate?: (path: string) => void; // 路由导航回调函数\n onMenuClick?: (item: any) => void; // 菜单项点击回调函数\n onMenuBtnClick?: (state: boolean) => void; // 菜单折叠/展开按钮点击回调函数\n footer?: any; // 页脚内容\n headerRight?: any; // Header 右侧内容\n headerLeft?: any; // Header 左侧内容\n headerHidden?: boolean; // 是否隐藏 Header\n headerFixed?: boolean; // Header 是否固定定位\n onLogoClick?: () => void; // Logo 点击回调函数\n collapsedLogo?: (isLight: boolean) => any; // 菜单折叠时的 Logo 渲染函数\n unCollapsedLogo?: (isLight: boolean) => any; // 菜单展开时的 Logo 渲染函数\n menuBottomBtnIcon?: any; // 菜单底部按钮图标\n menuBottomBtnText?: any; // 菜单底部按钮文字\n onMenuBottomBtnClick?: () => void; // 菜单底部按钮点击回调函数\n layout?: string; // 布局模式:'inline'(左右布局)| 'horizontal'(上下布局)\n flowLayout?: boolean; // 是否使用流式布局(内容居中)\n menuTheme?: string; // 菜单主题:'light' | 'dark'\n waterMark?: any; // 水印内容\n children?: React.ReactNode; // 子组件内容\n};\n\n/**\n * 布局组件引用接口\n * 用于父组件通过 ref 调用布局组件的方法\n */\nexport interface SinKingRef {\n collapsedMenu?: () => void; // 折叠菜单\n unCollapsedMenu?: () => void; // 展开菜单\n toggleCollapsedMenu?: () => void; // 切换菜单折叠/展开状态\n}\n\nconst SinKing: React.FC<LayoutProps> = forwardRef<SinKingRef>((props: any, ref): any => {\n let {\n loading = false,\n breadCrumb = true,\n breadCrumbItems = [],\n hideBreadCrumb = false,\n menus,\n menuClassNames,\n pathname,\n matchedRoutes,\n onNavigate,\n onMenuClick,\n onMenuBtnClick,\n onLogoClick,\n collapsedLogo,\n unCollapsedLogo,\n headerRight,\n headerLeft,\n headerFixed,\n headerHidden = false,\n menuCollapsedWidth = 60,\n menuUnCollapsedWidth = 220,\n menuBottomBtnIcon = undefined,\n menuBottomBtnText = undefined,\n onMenuBottomBtnClick,\n layout = 'inline',\n flowLayout = false,\n menuTheme = \"light\",\n waterMark = undefined,\n children\n } = props;\n const systemTheme = useTheme();\n /*\n * 样式\n */\n const [collapsed, setCollapsed] = useState(false);\n const [open, setOpen] = useState(false);\n const {\n styles: {\n container,\n sider,\n inlineContent,\n sticky,\n header,\n horizontalContent,\n footer,\n body,\n drawMenu,\n menuBtn,\n flow,\n logo,\n darkColor,\n flowContent,\n layoutNormal\n },\n cx\n } = useLayoutStyles();\n const {mobile, md} = useResponsive();\n const menuBtnOnClick = () => {\n let status: boolean;\n if ((layout === 'inline' && mobile) || (layout === 'horizontal' && !md)) {\n if (collapsed) {\n setCollapsed(false);\n }\n status = !open\n setOpen(status);\n } else {\n status = !collapsed\n setCollapsed(status);\n }\n onMenuBtnClick?.(status);\n }\n\n /**\n * 方法挂载\n */\n useImperativeHandle(ref, () => ({\n collapsedMenu: () => {\n setCollapsed(true);\n setOpen(false);\n },\n unCollapsedMenu: () => {\n setCollapsed(false);\n setOpen(false);\n },\n toggleCollapsedMenu: () => {\n const status = !collapsed;\n setCollapsed(status);\n setOpen(false);\n onMenuBtnClick?.(status);\n }\n }));\n\n /**\n * 获取菜单主题颜色\n */\n const getColor = () => {\n const mode = systemTheme?.isDarkMode ? \"light\" : (menuTheme === \"dark\" ? menuTheme : \"light\");\n return !systemTheme?.isDarkMode && mode === \"dark\" ? ' ' + darkColor : '';\n }\n\n /**\n * 获取水印字体\n */\n const getWaterMaskFont = () => {\n return {\n color: systemTheme?.isDarkMode ? \"rgba(255, 255, 255, 0.03)\" : \"rgba(0, 0, 0, 0.07)\"\n };\n }\n\n /**\n * 获取菜单\n * @param mode 布局模式\n */\n const getSider = (mode: string) => {\n const layoutMode = mode === \"horizontal\" ? mode : \"inline\";\n const theme = menuTheme === \"dark\" ? menuTheme : \"light\";\n // 转换 matchedRoutes 为 string[] 格式(如果不是的话)\n const routePaths = Array.isArray(matchedRoutes)\n ? (typeof matchedRoutes[0] === 'string'\n ? matchedRoutes\n : matchedRoutes.map((route: any) => route?.pathname || route))\n : [];\n\n return <Sider classNames={menuClassNames}\n layout={layoutMode}\n theme={theme}\n collapsed={collapsed}\n pathname={pathname}\n matchedRoutes={routePaths}\n onNavigate={onNavigate}\n onLogoClick={onLogoClick}\n collapsedLogo={collapsedLogo}\n unCollapsedLogo={unCollapsedLogo}\n menuBottomBtnIcon={menuBottomBtnIcon}\n menuBottomBtnText={menuBottomBtnText}\n onMenuBottomBtnClick={onMenuBottomBtnClick}\n menus={menus}\n onMenuClick={(item) => {\n setOpen(false);\n onMenuClick?.(item);\n }}/>;\n }\n\n /**\n * 获取内容\n */\n const getOutlet = () => {\n return <Watermark gap={[200, 200]} font={getWaterMaskFont()} content={waterMark}>\n {children}\n </Watermark>;\n }\n\n /**\n * 移动端抽屉\n */\n const drawer = <Drawer placement=\"left\" closable={false} open={open} size={menuUnCollapsedWidth}\n classNames={{body: drawMenu}}\n onClose={() => {\n setOpen(false)\n }}>\n {getSider(\"inline\")}\n </Drawer>;\n\n /**\n * 左右模式\n */\n const LayoutNormal = <Layout className={container}>\n {mobile && drawer}\n <Layout.Sider className={sider} trigger={null} collapsible collapsed={collapsed}\n width={menuUnCollapsedWidth} collapsedWidth={menuCollapsedWidth}\n hidden={mobile}>\n {getSider(layout)}\n </Layout.Sider>\n <Layout className={body}>\n {!headerHidden && <Layout.Header className={cx(header, headerFixed && sticky)}>\n <Header left={<div><Button type=\"text\" size={\"large\"}\n icon={collapsed ? <MenuUnfoldOutlined/> : <MenuFoldOutlined/>}\n onClick={menuBtnOnClick} className={menuBtn}/>{headerLeft}</div>}\n right={headerRight}/>\n </Layout.Header>}\n <Layout.Content className={cx(inlineContent, flowLayout && flowContent)}>\n <BreadCrumb\n enabled={breadCrumb}\n items={breadCrumbItems}\n hideBreadCrumb={hideBreadCrumb}\n />\n {getOutlet()}\n </Layout.Content>\n {props?.footer && <Layout.Footer className={footer}>\n <Footer> {props?.footer}</Footer>\n </Layout.Footer>}\n </Layout>\n </Layout>;\n\n /**\n * 上下模式\n */\n const LayoutFlow = <Layout className={layoutNormal}>\n <Layout.Header className={cx(header, headerFixed && sticky)}>\n {!md && <Header left={<div>\n <Button type=\"text\" size={\"large\"} icon={collapsed ? <MenuUnfoldOutlined/> : <MenuFoldOutlined/>}\n onClick={menuBtnOnClick} className={menuBtn}/>\n {headerLeft}\n </div>} right={headerRight}/>}\n {(!md && drawer) ||\n <div className={cx(flow, getColor())}>\n <div className={logo}>\n {unCollapsedLogo?.(!systemTheme?.isDarkMode)}\n </div>\n {getSider(layout)}\n <div>{headerRight}</div>\n </div>\n }\n </Layout.Header>\n <Layout.Content className={cx(horizontalContent, flowLayout && flowContent)}>\n <BreadCrumb\n enabled={breadCrumb}\n items={breadCrumbItems}\n hideBreadCrumb={hideBreadCrumb}\n />\n {getOutlet()}\n </Layout.Content>\n {props?.footer && <Layout.Footer className={footer}>\n <Footer> {props?.footer}</Footer>\n </Layout.Footer>}\n </Layout>;\n\n return (\n <App>\n {(loading && <Loading/>) || (layout !== \"horizontal\" ? LayoutNormal : LayoutFlow)}\n </App>\n );\n});\nexport default SinKing;","import React, {forwardRef} from \"react\";\nimport Body from \"./body\";\nimport Footer from \"./footer\";\nimport Header from \"./header\";\nimport Sider from \"./sider\";\nimport 'dayjs/locale/zh-cn';\n\nimport SkLayout, {LayoutProps, SinKingRef} from \"./sinking\";\n\nconst Layout: React.FC<LayoutProps> = forwardRef<SinKingRef>((props: any, ref) => {\n return <SkLayout ref={ref} {...props}/>;\n});\n\nexport {\n Body,\n Footer,\n Header,\n Sider,\n}\n\nexport default Layout;","// noinspection TypeScriptValidateTypes,JSAnnotator\n\nimport React, {forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from \"react\";\nimport {createStyles} from \"antd-style\";\nimport {\n Button,\n Card,\n Col,\n Form,\n Input,\n Pagination,\n PaginationProps,\n TableProps,\n TableColumnProps,\n FormInstance,\n Row,\n Space,\n Table,\n Affix,\n Select,\n DatePicker,\n TimePicker,\n InputNumber,\n Rate,\n Progress,\n Switch,\n Tag,\n Tooltip, Typography\n} from \"antd\";\nimport {DownOutlined, RedoOutlined, UpOutlined, QuestionCircleOutlined} from \"@ant-design/icons\";\nimport dayjs from 'dayjs';\n\n/**\n * ProTable 列配置接口\n * 扩展自 Ant Design 的 TableColumnProps,添加了更多功能\n */\nexport interface ProColumns<T = any> extends TableColumnProps<T> {\n hideInSearch?: boolean; // 是否在搜索表单中隐藏该列\n hideInTable?: boolean; // 是否在表格中隐藏该列\n valueType?: 'text' | 'time' | 'date' | 'dateTime' | 'dateRange' | 'dateTimeRange' | 'timeRange' | 'rate' | 'digit' | 'progress' | 'percent' | 'switch' | 'select'; // 列的值类型(决定渲染和表单组件)\n copyable?: boolean; // 是否可复制(显示复制图标)\n tip?: string; // 列标题的提示信息\n valueEnum?: Record<string, { text: string; color?: string }>; // 枚举值映射(用于 select 类型)\n transform?: (value: any) => any; // 搜索值转换函数(提交前转换表单值)\n fieldProps?: any; // 表单项的属性(传递给表单组件)\n formItemProps?: any; // Form.Item 的属性\n props?: any; // 传递给渲染组件的额外属性\n}\n\n/**\n * ProTable 搜索表单配置接口\n */\nexport interface ProTableSearch<T = any> {\n layout?: \"horizontal\" | \"vertical\"; // 搜索表单布局方式(默认 \"horizontal\")\n}\n\n/**\n * ProTable 组件属性\n */\nexport type ProTableProps = {\n title?: any; // 表格标题\n extra?: any; // 表格额外操作区域(显示在标题右侧)\n extraRefreshBtn?: boolean; // 是否显示刷新按钮(默认 true)\n rowKey?: string; // 表格行的唯一标识字段名(默认 \"id\")\n columns?: ProColumns[]; // 列配置数组\n tableProps?: TableProps<any> & undefined; // Ant Design Table 原生属性\n search?: ProTableSearch | boolean; // 搜索表单配置(false 表示禁用搜索)\n pageHidden?: boolean; // 是否隐藏分页(默认 false)\n pageInTable?: boolean; // 是否在表格内显示分页(默认 false,在表格外显示)\n paginationProps?: PaginationProps; // Ant Design Pagination 原生属性\n defaultPage?: number; // 默认页码(默认 1)\n defaultPageSize?: number; // 默认每页条数(默认 10)\n request?: (params: any, sort: any) => Promise<any>; // 数据请求函数(必须返回 Promise)\n virtual?: boolean; // 是否启用虚拟滚动(大数据量时推荐开启)\n // 多选配置\n rowSelection?: {\n selectedRowKeys?: React.Key[]; // 选中的行 key 数组\n onChange?: (selectedRowKeys: React.Key[], selectedRows: any[]) => void; // 选择变化时的回调\n onSelect?: (record: any, selected: boolean, selectedRows: any[]) => void; // 选择单行时的回调\n onSelectAll?: (selected: boolean, selectedRows: any[], changeRows: any[]) => void; // 全选时的回调\n onSelectInvert?: (selectedRowKeys: React.Key[]) => void; // 反选时的回调\n align?: string; // 选择列对齐方式\n columnWidth?: number; // 选择列宽度\n fixed?: boolean; // 是否固定选择列在左侧\n leftExtra?: any; // 选择操作栏左侧额外内容\n rightExtra?: any; // 选择操作栏右侧额外内容\n hideExtra?: boolean; // 是否隐藏选择操作栏\n } | false | true; // 多选配置(true 表示启用默认配置,false 表示禁用)\n // 固钉配置\n selectionAffix?: boolean; // 是否固定多选操作栏(滚动时悬浮)\n paginationAffix?: boolean; // 是否固定底部分页栏(滚动时悬浮)\n};\n\n/**\n * ProTable 组件引用接口\n * 用于父组件通过 ref 调用表格的方法\n */\nexport interface ProTableRef {\n searchForm: FormInstance | any; // 搜索表单实例(可用于获取/设置表单值)\n refreshTableData: () => void | any; // 刷新表格数据(保持当前页码和搜索条件)\n resetTableData: () => void | any; // 重置表格数据(重置到第一页和默认搜索条件)\n getTableData: () => any; // 获取当前表格数据\n getSelectedRowKeys: () => React.Key[]; // 获取选中的行 keys\n getSelectedRows: () => any[]; // 获取选中的行数据\n setSelectedRowKeys: (keys: React.Key[]) => void; // 设置选中的行 keys\n clearSelectedRows: () => void; // 清空所有选中行\n invertSelectedRow: () => void; // 反选选中行\n allSelectedRow: () => void; // 全选所有行\n}\n\n/**\n * 样式配置\n */\nconst useStyles: any = createStyles(({token, isDarkMode}: any): any => {\n const fontColor = isDarkMode ? \"rgba(255,255,255,0.65)\" : \"rgba(0,0,0,0.65)\";\n const backgroundColor = isDarkMode ? \"rgba(255, 255, 255, 0.1) !important\" : \"rgba(0, 0, 0, 0.05) !important\";\n const fontSize = 12;\n const pagination = {\n color: fontColor,\n fontSize: fontSize,\n \".ant-pagination-item-active\": {\n backgroundColor: \"transparent !important\"\n },\n \".ant-pagination-item\": {\n backgroundColor: \"transparent !important\",\n \"a\": {\n color: fontColor,\n }\n },\n \".ant-pagination-options\": {\n display: \"block\"\n },\n \".ant-select\": {\n \".ant-select\": {\n lineHeight: \"calc(var(--ant-pagination-item-size-actual) - 2px)\",\n height: \"var(--ant-pagination-item-size-actual)\",\n \".ant-select-content\": {\n fontSize: fontSize,\n transition: \"background-color 0.3s ease\",\n color: fontColor,\n borderColor: \"transparent !important\",\n borderRadius: token?.borderRadius + \"px !important\",\n },\n },\n },\n \".ant-pagination-options-quick-jumper\": {\n \"input\": {\n fontSize: fontSize,\n color: fontColor,\n borderColor: \"transparent\",\n borderRadius: token?.borderRadius + \"px !important\",\n backgroundColor: backgroundColor,\n },\n }\n }\n const btn = {\n fontSize: fontSize + \"px\",\n height: \"auto\",\n padding: \"5px 10px\",\n borderRadius: token?.borderRadius + \"px\",\n }\n return {\n formItem: {\n marginBottom: \"0 !important\",\n },\n formItemLabel: {\n \".ant-form-item-label\": {\n flex: \"0 0 80px\",\n }\n },\n formItemBtn: {\n \".ant-space-item>div\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n },\n \".ant-space-item>a\": {\n textDecoration: \"none\",\n },\n },\n formButton: {\n display: \"flex\",\n justifyContent: \"end\",\n alignItems: \"end\",\n },\n filter: {\n boxShadow: \"0 0px 10px 4px rgba(0, 0, 0, 0.05) !important\",\n backgroundColor: isDarkMode ? \"rgba(255, 255, 255, 0.05)\" : \"rgba(255, 255, 255, 0.6)\",\n backdropFilter: \"blur(8px)\",\n },\n pageCard: {\n \".ant-card-body\": {\n padding: 15,\n },\n \".ant-pagination \": pagination,\n },\n toolCard: {\n fontSize: token?.fontSizeSM,\n color: fontColor,\n \".ant-card-body\": {\n padding: \"12px 17px\",\n \".ant-col\": {\n fontSize: fontSize,\n \"a\": {\n opacity: isDarkMode ? \"1\" : \"0.8\"\n }\n }\n },\n \"button\": btn\n },\n tableCard: {\n \".ant-card-head\": {\n padding: \"10px 15px 0 15px\",\n minHeight: \"42px\",\n borderBottom: \"none\",\n \".ant-card-extra\": {\n \"button\": btn,\n }\n },\n \".ant-card-body\": {\n padding: \"10px\"\n }\n },\n table: {\n \".ant-table-thead\": {\n \".ant-table-cell\": {\n padding: \"10px !important\",\n fontSize: token?.fontSize,\n color: fontColor\n },\n },\n \".ant-table-tbody\": {\n \".ant-table-cell\": {\n padding: \"10px !important\",\n fontSize: token?.fontSizeSM + 1,\n color: fontColor,\n \".ant-btn\": {\n height: \"25px\",\n padding: \"10px \",\n fontSize: token?.fontSizeSM,\n }\n },\n \".ant-typography\": {\n fontSize: token?.fontSizeSM + 1,\n color: fontColor\n },\n },\n \".ant-pagination \": {\n ...pagination, ...{\n margin: \"15px 15px 5px 15px !important\"\n }\n },\n }\n };\n});\n\nconst useContainerResponsive = (containerRef: React.RefObject<HTMLDivElement | null>) => {\n const [responsive, setResponsive] = useState({\n xs: false,\n sm: false,\n md: false,\n lg: false,\n xl: false,\n xxl: false,\n mobile: false\n });\n\n // 防抖函数,避免频繁更新\n const debounce = useCallback((func: Function, wait: number) => {\n let timeout: ReturnType<typeof setTimeout>;\n return (...args: any[]) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func.apply(null, args), wait);\n };\n }, []);\n\n const updateResponsive = useCallback((width: number) => {\n const newResponsive = {\n xs: width < 576,\n sm: width >= 576 && width < 768,\n md: width >= 768 && width < 992,\n lg: width >= 992 && width < 1200,\n xl: width >= 1200 && width < 1600,\n xxl: width >= 1600,\n mobile: width < 992\n };\n\n // 只有当响应式状态真正发生变化时才更新\n setResponsive(prev => {\n const hasChanged = Object.keys(newResponsive).some(\n key => prev[key as keyof typeof prev] !== newResponsive[key as keyof typeof newResponsive]\n );\n return hasChanged ? newResponsive : prev;\n });\n }, []);\n\n // 防抖的更新函数\n const debouncedUpdate = useMemo(\n () => debounce((width: number) => updateResponsive(width), 10),\n [debounce, updateResponsive]\n );\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleResize = () => {\n const width = container.clientWidth;\n debouncedUpdate(width);\n };\n\n // 初始化时立即更新\n updateResponsive(container.clientWidth);\n\n const resizeObserver = new ResizeObserver(handleResize);\n resizeObserver.observe(container);\n\n return () => {\n resizeObserver.unobserve(container);\n };\n }, [containerRef, debouncedUpdate, updateResponsive]);\n\n return responsive;\n};\n\nconst ProTableComponent = forwardRef<ProTableRef, ProTableProps>((props, ref): any => {\n const {styles} = useStyles();\n\n const containerRef = useRef<HTMLDivElement>(null);\n const device = useContainerResponsive(containerRef);\n const requestRef = useRef<any>(null);\n const {\n title = undefined, // 表格标题\n extra = undefined, // 表格额外内容\n extraRefreshBtn, // 是否显示刷新按钮\n rowKey = \"id\", // 行的唯一标识\n columns = [] as ProColumns[], // 列配置\n tableProps = {}, // 表格属性\n pageHidden = false, // 是否隐藏分页\n pageInTable = false, // 是否在表格中显示分页\n paginationProps = {}, // 分页属性\n defaultPage = 1,//默认分页\n defaultPageSize = 10,//默认分页容量\n search = {} as any, // 搜索表单配置\n request = undefined, // 请求函数\n rowSelection = false as any, // 多选配置\n selectionAffix = false, // 是否固定多选操作栏\n paginationAffix = false, // 是否固定底部分页栏\n virtual = false, // 是否启用虚拟滚动\n } = props;\n\n const [form] = Form.useForm();\n const [collapsed, setCollapsed] = useState(true);\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(true);\n const [params, setParams] = useState({});\n const [sort, setSort] = useState({});\n const [page, setPage] = useState(defaultPage);\n const [pageSize, setPageSize] = useState(defaultPageSize);\n const [total, setTotal] = useState(0);\n\n const formatValues = useCallback((values: any) => {\n const transformedValues: any = {...values};\n Object.keys(transformedValues).forEach((key) => {\n if (!transformedValues[key]) {\n delete transformedValues[key]\n }\n });\n columns.forEach((column: ProColumns) => {\n const {dataIndex, transform, valueType} = column;\n const value = values[dataIndex as string];\n if (value !== undefined && value !== null && value !== '') {\n if (transform) {\n const transformed = transform?.(value);\n if (typeof transformed === 'object' && transformed !== null) {\n Object.assign(transformedValues, transformed);\n delete transformedValues[column?.dataIndex]\n } else {\n transformedValues[dataIndex as string] = transformed;\n }\n } else {\n // 根据 valueType 进行默认转换\n switch (valueType) {\n case 'dateRange':\n case 'dateTimeRange':\n case 'timeRange':\n if (Array.isArray(value) && value.length === 2) {\n // 统一使用 YYYY-MM-DD HH:mm:ss 格式\n const formatStr = 'YYYY-MM-DD HH:mm:ss';\n transformedValues[`${dataIndex}_start`] = value[0]?.format ? value[0].format(formatStr) : value[0];\n transformedValues[`${dataIndex}_end`] = value[1]?.format ? value[1].format(formatStr) : value[1];\n }\n break;\n case 'date':\n // 日期类型也使用完整的时间格式,时分秒为 00:00:00\n transformedValues[dataIndex as string] = value?.format ? value.format('YYYY-MM-DD 00:00:00') : value;\n break;\n case 'dateTime':\n transformedValues[dataIndex as string] = value?.format ? value.format('YYYY-MM-DD HH:mm:ss') : value;\n break;\n case 'time':\n // 时间类型使用当天日期 + 时间\n if (value?.format) {\n const today = dayjs().format('YYYY-MM-DD');\n transformedValues[dataIndex as string] = `${today} ${value.format('HH:mm:ss')}`;\n } else {\n transformedValues[dataIndex as string] = value;\n }\n break;\n case 'switch':\n // Switch 组件返回 boolean,可能需要转换为 0/1\n transformedValues[dataIndex as string] = value;\n break;\n default:\n transformedValues[dataIndex as string] = value;\n }\n }\n } else if (value === false && valueType === 'switch') {\n // 特殊处理 switch 类型的 false 值\n if (transform) {\n const transformed = transform(value);\n if (typeof transformed === 'object' && transformed !== null) {\n Object.assign(transformedValues, transformed);\n } else {\n transformedValues[dataIndex as string] = transformed;\n }\n } else {\n transformedValues[dataIndex as string] = value;\n }\n }\n });\n return transformedValues;\n }, [columns]);\n\n const onFinish = useCallback((values: any) => {\n setPage(1);\n setParams(formatValues(values));\n }, [formatValues]);\n\n const onReset = useCallback(() => {\n if ((params && Object.keys(params).length > 0) || page > 1) {\n form?.resetFields();\n setPage(1);\n setParams({});\n }\n }, [params, page, form]);\n\n const getSearchFormItem = useMemo(() => {\n let elements: any[] = [];\n let sum = 0;\n let sumAll = 0;\n let skip = 1;\n let span = 24;\n if (device.xl || device.xxl || device.lg) {\n skip = 3;\n span = 6;\n } else if (device.md) {\n skip = 2;\n span = 8;\n } else if (device.sm) {\n skip = 1;\n span = 12;\n }\n // 根据 valueType 渲染不同的表单组件\n const renderFormField = (column: ProColumns) => {\n const {valueType, valueEnum, dataIndex, title, props = {}} = column;\n const placeholder = `请输入${title || dataIndex}`;\n\n // 如果有枚举值,渲染 Select\n if (valueEnum) {\n return (\n <Select placeholder={`请选择${title || dataIndex}`} allowClear {...props}>\n {Object.entries(valueEnum).map(([key, value]) => (\n <Select.Option key={key} value={key}>\n {value.text}\n </Select.Option>\n ))}\n </Select>\n );\n }\n switch (valueType) {\n case 'date':\n return <DatePicker style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'dateTime':\n return <DatePicker showTime style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'dateRange':\n return <DatePicker.RangePicker style={{width: '100%'}} {...props} />;\n case 'dateTimeRange':\n return <DatePicker.RangePicker showTime style={{width: '100%'}} {...props} />;\n case 'time':\n return <TimePicker style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'timeRange':\n return <TimePicker.RangePicker style={{width: '100%'}} {...props} />;\n case 'digit':\n return <InputNumber style={{width: '100%'}} placeholder={placeholder} {...props} />;\n case 'rate':\n return <Rate allowHalf {...props} />;\n case 'switch':\n return <Switch {...props} />;\n case 'percent':\n return (\n <InputNumber\n style={{width: '100%'}}\n placeholder={placeholder}\n formatter={value => `${value}%`}\n parser={value => value!.replace('%', '')}\n {...props}\n />\n );\n case 'progress':\n return (\n <InputNumber\n style={{width: '100%'}}\n placeholder={placeholder}\n min={0}\n max={100}\n {...props}\n />\n );\n case 'select':\n return <Select placeholder={`请选择${title || dataIndex}`} allowClear {...props} />;\n default:\n return <Input placeholder={placeholder} {...props} />;\n }\n };\n let hide = false;\n columns.forEach((column: ProColumns, index) => {\n if (column?.hideInSearch === true) {\n return;\n }\n if (!hide) {\n sumAll++;\n }\n if (skip > 0 && collapsed && sum >= skip) {\n hide = true\n }\n if (!hide) {\n sum++;\n }\n const {formItemProps = {}} = column;\n elements.push(<Col span={span} style={{display: hide ? \"none\" : \"block\"}} key={column?.dataIndex + index}\n className={search?.layout && search?.layout != \"vertical\" ? \" \" + styles.formItemLabel : \"\"}>\n <Form.Item\n className={styles.formItem}\n label={column?.title || column?.dataIndex}\n labelAlign={\"right\"}\n colon={true}\n tooltip={column?.tip || undefined}\n name={column?.dataIndex}\n {...formItemProps}>\n {renderFormField(column)}\n </Form.Item>\n </Col>)\n })\n let offset = 0;\n if (device.xl || device.xxl || device.lg) {\n if (sum <= 3) {\n offset = (4 - sum - 1) * 6;\n } else {\n offset = sum % 4;\n if (offset <= 0) {\n offset = 18\n } else {\n offset = 24 - (offset + 1) * 6;\n }\n }\n } else if (device.md) {\n if (sum <= 2) {\n offset = (3 - sum - 1) * 8;\n } else {\n offset = sum % 3;\n if (offset <= 0) {\n offset = 16\n } else {\n offset = 24 - (offset + 1) * 8;\n }\n }\n } else if (device.sm) {\n if (sum <= 1) {\n offset = (2 - sum - 1) * 12;\n } else {\n offset = sum % 2;\n if (offset <= 0) {\n offset = 12\n } else {\n offset = 24 - (offset + 1) * 12;\n }\n }\n } else if (device.xs) {\n offset = 0\n }\n if (offset <= 0) {\n offset = 0\n }\n elements.push(<Col span={span} key={\"action\" + (sum + 2)} offset={offset}\n className={styles.formButton}>\n <Form.Item className={styles.formItem}>\n <Space align={\"center\"} size={16} className={styles.formItemBtn}>\n <div>\n <Button htmlType=\"reset\">\n 重置\n </Button>\n <Button type=\"primary\" htmlType=\"submit\" loading={loading}>\n 查询\n </Button>\n </div>\n {sumAll > skip &&\n <a onClick={() => setCollapsed(!collapsed)}>\n {collapsed ? <>展开 <DownOutlined/></> : <>收起 <UpOutlined/></>}\n </a>}\n </Space>\n </Form.Item>\n </Col>)\n return <Row gutter={[20, 20]}>\n {elements}\n </Row>;\n }, [columns, collapsed, device, loading, search, styles, form]);\n\n // 使用 useCallback 缓存 renderTableCell 函数\n const renderTableCell = useCallback((text: any, record: any, column: ProColumns) => {\n const {valueType, valueEnum, copyable, props = {}} = column;\n if (valueEnum && text !== undefined && text !== null) {\n const enumItem = valueEnum[text];\n if (enumItem) {\n const {text: label, color} = enumItem;\n if (color) {\n const colorMap: Record<string, string> = {\n success: 'success',\n warning: 'warning',\n error: 'error',\n default: 'default',\n processing: 'processing'\n };\n return <Tag color={colorMap[color] || color || \"default\"}\n variant={\"filled\"} {...props}>{label}</Tag>;\n }\n return label;\n }\n }\n let content: React.ReactNode;\n switch (valueType) {\n case 'date':\n content = text ? dayjs(text).format('YYYY-MM-DD') : '-';\n break;\n case 'dateTime':\n content = text ? dayjs(text).format('YYYY-MM-DD HH:mm:ss') : '-';\n break;\n case 'time':\n content = text ? dayjs(text).format('HH:mm:ss') : '-';\n break;\n case 'percent':\n content = <Progress percent={Number(text) || 0} size=\"small\" {...props} />;\n break;\n case 'progress':\n content = <Progress percent={Number(text) || 0} size=\"small\" {...props} />;\n break;\n case 'rate':\n content = <Rate disabled value={Number(text) || 0} {...props} />;\n break;\n case 'switch':\n content = <Switch checked={!!text} disabled {...props} />;\n break;\n case 'digit':\n content = typeof text === 'number' ? text.toLocaleString() : text;\n break;\n default:\n content = text || '-';\n }\n if (copyable && text) {\n return <Typography.Text copyable>\n {content}\n </Typography.Text>;\n }\n return content;\n }, []);\n\n const getTableColumns = useMemo(() => {\n const list: any[] = [];\n columns.forEach((column: ProColumns) => {\n if (column?.hideInTable === true) return;\n const newColumn: ProColumns = {\n ...column,\n // 使用稳定的 render 函数引用\n render: column.render || ((text: any, record: any) => {\n return renderTableCell(text, record, column);\n })\n };\n if (column.tip && typeof column.title === 'string') {\n const originalTitle = column.title;\n newColumn.title = () => (\n <Space size={\"small\"}>\n {originalTitle}\n <Tooltip title={column.tip}>\n <QuestionCircleOutlined/>\n </Tooltip>\n </Space>\n );\n }\n list.push(newColumn);\n });\n return list;\n }, [columns, renderTableCell]);\n\n requestRef.current = request;\n\n const requestData = useCallback(() => {\n const currentRequest = requestRef.current;\n if (!currentRequest) {\n setLoading(false);\n return;\n }\n setLoading(true);\n const param: any = {...params};\n param.current = page;\n param.pageSize = pageSize;\n const sorter = {...sort};\n currentRequest(param, sorter).then((res: any) => {\n if (res?.success) {\n setData(res?.data || []);\n setTotal(res?.total || 0);\n }\n }).finally(() => {\n setLoading(false);\n });\n }, [params, page, pageSize, sort]);\n\n useEffect(() => {\n requestData();\n }, [requestData]);\n\n const getTableExtra = useMemo(() => {\n if (!extraRefreshBtn && !extra) {\n return false;\n }\n return <Space>\n {extra}\n {extraRefreshBtn &&\n <Button color=\"default\" style={{\n fontSize: \"15px\",\n opacity: \"0.7\",\n }} variant=\"link\"\n icon={<RedoOutlined rotate={260}/>}\n onClick={requestData}/>}\n </Space>\n }, [extraRefreshBtn, extra, requestData]);\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);\n const [selectedRows, setSelectedRows] = useState<any[]>([]);\n\n const clearSelectedRow = useCallback(() => {\n setSelectedRowKeys([]);\n setSelectedRows([]);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange([], []);\n }\n }, [rowSelection]);\n\n const invertSelectedRow = useCallback(() => {\n const allKeys = data.map(item => item[rowKey]);\n const newSelectedKeys = allKeys.filter(key => !selectedRowKeys.includes(key));\n setSelectedRowKeys(newSelectedKeys);\n const newSelectedRows = data.filter(item => newSelectedKeys.includes(item[rowKey]));\n setSelectedRows(newSelectedRows);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange(newSelectedKeys, newSelectedRows);\n }\n }, [data, rowKey, selectedRowKeys, rowSelection]);\n\n const allSelectedRow = useCallback(() => {\n const allKeys = data.map(item => item[rowKey]);\n setSelectedRowKeys(allKeys);\n setSelectedRows(data);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange(allKeys, data);\n }\n }, [data, rowKey, rowSelection]);\n\n const handleSelectChange = useCallback((newSelectedRowKeys: React.Key[], newSelectedRows: any[]) => {\n setSelectedRowKeys(newSelectedRowKeys);\n setSelectedRows(newSelectedRows);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onChange) {\n rowSelection?.onChange(newSelectedRowKeys, newSelectedRows);\n }\n }, [rowSelection]);\n\n const handleSelect = useCallback((record: any, selected: boolean, selectedRows: any[]) => {\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onSelect) {\n rowSelection?.onSelect(record, selected, selectedRows);\n }\n }, [rowSelection]);\n\n const handleSelectAll = useCallback((selected: boolean, selectedRows: any[], changeRows: any[]) => {\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onSelectAll) {\n rowSelection?.onSelectAll(selected, selectedRows, changeRows);\n }\n }, [rowSelection]);\n\n const handleSelectInvert = useCallback((selectedRowKeys: React.Key[]) => {\n if (rowSelection && typeof rowSelection === 'object' && rowSelection?.onSelectInvert) {\n rowSelection?.onSelectInvert(selectedRowKeys);\n }\n }, [rowSelection]);\n\n const getRowSelection = useMemo((): any => {\n if (rowSelection === false) {\n return undefined;\n }\n const select = {\n selectedRowKeys: rowSelection?.selectedRowKeys || selectedRowKeys,\n onChange: handleSelectChange,\n onSelect: handleSelect,\n onSelectAll: handleSelectAll,\n onSelectInvert: handleSelectInvert,\n }\n return {\n ...{\n align: rowSelection?.align || \"center\",\n columnWidth: rowSelection?.columnWidth || 50,\n fixed: rowSelection?.fixed || false,\n selections: [\n {\n key: 'all',\n text: '全部选中',\n onSelect: allSelectedRow\n },\n {\n key: 'invert',\n text: '反向选中',\n onSelect: invertSelectedRow\n },\n {\n key: 'clear',\n text: '清空选中',\n onSelect: clearSelectedRow\n }\n ]\n }, ...rowSelection, ...select\n }\n }, [rowSelection, selectedRowKeys, handleSelectChange, handleSelect, handleSelectAll, handleSelectInvert, allSelectedRow, invertSelectedRow, clearSelectedRow]);\n\n const setSelectedRowKey = useCallback((keys: React.Key[]) => {\n setSelectedRowKeys(keys);\n const rows = data.filter(item => keys.includes(item[rowKey]));\n setSelectedRows(rows);\n if (rowSelection && typeof rowSelection === 'object' && rowSelection.onChange) {\n rowSelection.onChange(keys, rows);\n }\n }, [data, rowKey, rowSelection]);\n /**\n * 方法挂载\n */\n useImperativeHandle(ref, () => ({\n searchForm: form,\n refreshTableData: requestData,\n resetTableData: onReset,\n getTableData: () => {\n return {\n data, page, pageSize, sort, total\n }\n },\n getSelectedRowKeys: () => selectedRowKeys,\n getSelectedRows: () => selectedRows,\n setSelectedRowKeys: setSelectedRowKey,\n clearSelectedRows: clearSelectedRow,\n invertSelectedRow: invertSelectedRow,\n allSelectedRow: allSelectedRow\n }));\n\n const [selectionBarAffix, setSelectionBarAffix] = useState(false);\n const renderSelectionBar = useCallback(() => {\n if ((selectedRowKeys?.length || 0) <= 0) return null;\n const content = (\n <Card\n className={styles.toolCard + (selectionBarAffix ? \" \" + styles.filter : \"\")}\n variant={\"borderless\"}>\n <Row justify=\"space-between\" align=\"middle\">\n <Col>\n {(typeof rowSelection?.leftExtra === \"function\" && rowSelection?.leftExtra?.(selectedRowKeys, selectedRows)) || rowSelection?.leftExtra || <>已选择 {selectedRowKeys?.length} 项 <a\n onClick={clearSelectedRow}>取消选择</a></>}\n </Col>\n <Col>\n <Space>\n {(typeof rowSelection?.rightExtra === \"function\" && rowSelection?.rightExtra?.(selectedRowKeys, selectedRows)) || rowSelection?.rightExtra}\n </Space>\n </Col>\n </Row>\n </Card>\n );\n if (rowSelection?.hideExtra === true) {\n return false;\n }\n return <Col span={(selectedRowKeys?.length || 0) <= 0 ? 0 : 24}>\n {selectionAffix ? (\n <Affix offsetTop={5} onChange={(affixed) => setSelectionBarAffix(affixed || false)}>{content}</Affix>\n ) : content}\n </Col>;\n }, [selectedRowKeys, selectedRows, rowSelection, selectionAffix, selectionBarAffix, styles, clearSelectedRow]);\n\n const [pageAffix, setPageAffix] = useState(false);\n const renderPagination = useCallback(() => {\n if (pageHidden || pageInTable || total <= 0) return null;\n const content = (\n <Card\n className={styles.pageCard + (pageAffix ? \" \" + styles.filter : \"\")}\n variant={\"borderless\"}>\n <Pagination\n align=\"center\"\n showTotal={(total: any, range: any) => device?.xs || device?.sm ? false : `第 ${range[0]}-${range[1]} 条 / 共 ${total} 条`}\n showQuickJumper={!(device?.xs || device?.sm)}\n pageSizeOptions={[10, 20, 50, 100]}\n {...paginationProps}\n showSizeChanger={{\n showSearch: false,\n variant: \"filled\",\n size: \"small\",\n }}\n showLessItems={true}\n size={\"small\"}\n current={page}\n pageSize={pageSize}\n total={total}\n onChange={(page: any, pageSize: any) => {\n setPage(page);\n setPageSize(pageSize);\n }}\n />\n </Card>\n );\n\n return paginationAffix ? (\n <Affix offsetBottom={5} onChange={(affixed) => setPageAffix(affixed || false)}>{content}</Affix>\n ) : content;\n }, [pageHidden, pageInTable, total, page, pageSize, paginationProps, device, pageAffix, paginationAffix, styles]);\n\n return (\n <Row gutter={[15, 15]} ref={containerRef}>\n <Col span={!search ? 0 : 24}>\n <Card variant={\"borderless\"}>\n <Form layout={search?.layout || \"vertical\"} form={form} onReset={onReset}\n onFinish={onFinish}>\n {getSearchFormItem}\n </Form>\n </Card>\n </Col>\n\n {renderSelectionBar()}\n <Col span={24}>\n <Card title={title} extra={getTableExtra} className={styles.tableCard} variant={\"borderless\"}>\n <Table\n rowKey={rowKey}\n className={styles.table}\n style={{whiteSpace: \"nowrap\"}}\n scroll={{x: true, y: virtual ? 500 : undefined}}\n virtual={virtual}\n {...tableProps}\n rowSelection={getRowSelection}\n pagination={!pageHidden && pageInTable ? {\n ...{\n pageSizeOptions: [10, 20, 50, 100],\n }, ...paginationProps, ...{\n current: page,\n pageSize: pageSize,\n total: total,\n size: \"small\",\n showSizeChanger: {\n showSearch: false,\n variant: \"filled\",\n size: \"small\",\n },\n showQuickJumper: !(device?.xs || device?.sm),\n showLessItems: true,\n showTotal: (total: any, range: any) => device?.xs || device?.sm ? false : `第 ${range[0]}-${range[1]} 条 / 共 ${total} 条`,\n onChange: (page: any, pageSize: any) => {\n setPage(page);\n setPageSize(pageSize);\n }\n } as any\n } : false}\n size={\"small\"}\n columns={getTableColumns as any}\n dataSource={data}\n loading={loading}\n onChange={useCallback((_: any, filters: any, sorter: any) => {\n if (Object.keys(filters).length > 0) {\n setParams(prev => ({...prev, ...filters}));\n }\n if (Object.keys(sorter).length > 0 && sorter?.field) {\n let temp: any = {};\n temp[sorter?.field] = sorter?.order;\n setSort(temp);\n }\n }, [])}/>\n </Card>\n </Col>\n {!pageHidden && !pageInTable && total > 0 && <Col span={24}>\n {renderPagination()}\n </Col>}\n </Row>\n );\n});\n\nexport default ProTableComponent;\n","// noinspection TypeScriptValidateTypes\nimport React, {forwardRef, useImperativeHandle, useState} from \"react\";\nimport {Modal, ModalProps} from \"antd\";\nimport {useTheme} from \"../theme\";\n\n/**\n * ProModal 组件属性\n */\nexport type ProModalProps = {\n modalProps?: ModalProps & any & undefined; // Ant Design Modal 原生属性(可选)\n title?: any; // 模态框标题\n onOk?: () => void | any; // 确认按钮点击回调函数\n onCancel?: () => void | any; // 取消按钮点击回调函数\n afterClose?: () => void | any; // 模态框关闭后的回调函数\n okText?: string; // 确认按钮文本(默认\"确定\")\n okType?: \"primary\" | \"default\" | \"dashed\" | \"link\" | \"text\"; // 确认按钮类型(默认 \"primary\")\n width?: number | string; // 模态框宽度(默认 520,紧凑模式下自动调整为 87%)\n afterOpenChange?: (open: boolean) => void | any; // 模态框打开/关闭状态变化回调(可选)\n children?: React.ReactNode; // 模态框内容\n};\n\n/**\n * ProModal 组件引用接口\n * 用于父组件通过 ref 调用模态框的方法\n */\nexport interface ProModalRef {\n show: () => void; // 显示模态框\n hide: () => void; // 隐藏模态框\n}\n\nconst ProModal = forwardRef<ProModalRef, ProModalProps>((props, ref): any => {\n const {\n modalProps = {},\n title,\n onOk,\n onCancel,\n afterClose,\n okText,\n okType,\n width = 520,\n afterOpenChange,\n children,\n } = props;\n\n const theme = useTheme();\n const [internalOpen, setInternalOpen] = useState<boolean>(false);\n\n // 判断是否为受控模式\n const isControlled = (modalProps as any)?.open !== undefined;\n const open = isControlled ? (modalProps as any)?.open : internalOpen;\n\n // 根据紧凑模式调整宽度(紧凑模式下减少 20% 宽度)\n const adjustedWidth = theme?.isCompactTheme?.()\n ? (typeof width === 'number' ? Math.floor(width * 0.87) : width)\n : width;\n\n /**\n * 处理确认按钮点击事件\n */\n const handleOk = async () => {\n await onOk?.();\n };\n\n /**\n * 处理取消按钮点击事件\n */\n const handleCancel = () => {\n if (onCancel) {\n onCancel();\n } else if (!isControlled) {\n setInternalOpen(false);\n afterOpenChange?.(false);\n }\n };\n\n /**\n * 处理模态框关闭后的事件\n */\n const handleAfterClose = () => {\n afterClose?.();\n };\n\n /**\n * 暴露给父组件的方法\n */\n useImperativeHandle(ref, () => ({\n show: () => {\n if (!isControlled) {\n setInternalOpen(true);\n }\n afterOpenChange?.(true);\n },\n hide: () => {\n if (!isControlled) {\n setInternalOpen(false);\n }\n afterOpenChange?.(false);\n }\n }));\n\n return (\n <Modal\n title={title}\n open={open}\n onOk={handleOk}\n onCancel={handleCancel}\n afterClose={handleAfterClose}\n okText={okText}\n okType={okType}\n width={adjustedWidth}\n maskClosable={false}\n {...modalProps}\n >\n {children}\n </Modal>\n );\n});\n\nexport default ProModal;"]}