Optimize file name

This commit is contained in:
2024-01-05 13:51:38 +08:00
parent 3d8e55cbea
commit 6c8c6088d1
41 changed files with 177 additions and 162 deletions

View File

@@ -6,7 +6,7 @@ import { useUpdatedEffect } from '@/util/hooks'
import { getAvatar, getLoginStatus, getNickname, removeToken } from '@/util/auth' import { getAvatar, getLoginStatus, getNickname, removeToken } from '@/util/auth'
import { r_auth_logout } from '@/services/auth' import { r_auth_logout } from '@/services/auth'
const SidebarFooter: React.FC = () => { const Footer: React.FC = () => {
const matches = useMatches() const matches = useMatches()
const lastMatch = matches.reduce((_, second) => second) const lastMatch = matches.reduce((_, second) => second)
const location = useLocation() const location = useLocation()
@@ -94,4 +94,4 @@ const SidebarFooter: React.FC = () => {
) )
} }
export default SidebarFooter export default Footer

View File

@@ -1,6 +1,6 @@
import React from 'react' import React from 'react'
import Icon from '@ant-design/icons' import Icon from '@ant-design/icons'
import SidebarSubmenu from '@/components/common/sidebar_/SidebarSubmenu' import Submenu from '@/components/common/Sidebar/Submenu'
type ItemProps = { type ItemProps = {
icon?: IconComponent icon?: IconComponent
@@ -10,7 +10,7 @@ type ItemProps = {
end?: boolean end?: boolean
} }
const SidebarItem: React.FC<ItemProps> = (props) => { const Item: React.FC<ItemProps> = (props) => {
const [submenuTop, setSubmenuTop] = useState(0) const [submenuTop, setSubmenuTop] = useState(0)
const [submenuLeft, setSubmenuLeft] = useState(0) const [submenuLeft, setSubmenuLeft] = useState(0)
@@ -50,12 +50,12 @@ const SidebarItem: React.FC<ItemProps> = (props) => {
</NavLink> </NavLink>
</div> </div>
{props.children ? ( {props.children ? (
<SidebarSubmenu submenuTop={submenuTop} submenuLeft={submenuLeft}> <Submenu submenuTop={submenuTop} submenuLeft={submenuLeft}>
{props.children} {props.children}
</SidebarSubmenu> </Submenu>
) : undefined} ) : undefined}
</li> </li>
) )
} }
export default SidebarItem export default Item

View File

@@ -0,0 +1,7 @@
import React from 'react'
const ItemList: React.FC<React.PropsWithChildren> = (props) => {
return <ul>{props.children}</ul>
}
export default ItemList

View File

@@ -5,7 +5,7 @@ export interface SidebarScrollElement {
refreshLayout(): void refreshLayout(): void
} }
const SidebarScroll = forwardRef<SidebarScrollElement, React.PropsWithChildren>((props, ref) => { const Scroll = forwardRef<SidebarScrollElement, React.PropsWithChildren>((props, ref) => {
useImperativeHandle<SidebarScrollElement, SidebarScrollElement>(ref, () => { useImperativeHandle<SidebarScrollElement, SidebarScrollElement>(ref, () => {
return { return {
refreshLayout() { refreshLayout() {
@@ -30,4 +30,4 @@ const SidebarScroll = forwardRef<SidebarScrollElement, React.PropsWithChildren>(
) )
}) })
export default SidebarScroll export default Scroll

View File

@@ -1,9 +1,9 @@
import React from 'react' import React from 'react'
const SidebarSeparate: React.FC< const Separate: React.FC<
React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>
> = ({ className, ...props }) => { > = ({ className, ...props }) => {
return <div className={`separate ${className ? ` ${className}` : ''}`} {...props} /> return <div className={`separate ${className ? ` ${className}` : ''}`} {...props} />
} }
export default SidebarSeparate export default Separate

View File

@@ -5,7 +5,7 @@ interface SidebarSubmenuProps extends React.PropsWithChildren {
submenuLeft: number submenuLeft: number
} }
const SidebarSubmenu: React.FC<SidebarSubmenuProps> = (props) => { const Submenu: React.FC<SidebarSubmenuProps> = (props) => {
return ( return (
<ul <ul
className={'submenu'} className={'submenu'}
@@ -19,4 +19,4 @@ const SidebarSubmenu: React.FC<SidebarSubmenuProps> = (props) => {
) )
} }
export default SidebarSubmenu export default Submenu

View File

@@ -2,8 +2,12 @@ import React from 'react'
import Icon from '@ant-design/icons' import Icon from '@ant-design/icons'
import '@/assets/css/components/common/sidebar.scss' import '@/assets/css/components/common/sidebar.scss'
import { getLocalStorage, setLocalStorage } from '@/util/browser' import { getLocalStorage, setLocalStorage } from '@/util/browser'
import SidebarSeparate from '@/components/common/sidebar_/SidebarSeparate' import Item from '@/components/common/Sidebar/Item'
import SidebarFooter from '@/components/common/sidebar_/SidebarFooter' import ItemList from '@/components/common/Sidebar/ItemList'
import Scroll from '@/components/common/Sidebar/Scroll'
import Separate from '@/components/common/Sidebar/Separate'
import Submenu from '@/components/common/Sidebar/Submenu'
import Footer from '@/components/common/Sidebar/Footer'
interface SidebarProps extends React.PropsWithChildren { interface SidebarProps extends React.PropsWithChildren {
title: string title: string
@@ -12,7 +16,14 @@ interface SidebarProps extends React.PropsWithChildren {
bottomFixed?: React.ReactNode bottomFixed?: React.ReactNode
} }
const Sidebar: React.FC<SidebarProps> = (props) => { const Sidebar: React.FC<SidebarProps> & {
Item: typeof Item
ItemList: typeof ItemList
Scroll: typeof Scroll
Separate: typeof Separate
Submenu: typeof Submenu
Footer: typeof Footer
} = (props) => {
const [hideSidebar, setHideSidebar] = useState(getLocalStorage('HIDE_SIDEBAR') === 'true') const [hideSidebar, setHideSidebar] = useState(getLocalStorage('HIDE_SIDEBAR') === 'true')
const switchSidebar = () => { const switchSidebar = () => {
@@ -33,16 +44,23 @@ const Sidebar: React.FC<SidebarProps> = (props) => {
</span> </span>
<span className={'text'}>{props.title}</span> <span className={'text'}>{props.title}</span>
</div> </div>
<SidebarSeparate style={{ marginTop: 0 }} /> <Separate style={{ marginTop: 0 }} />
<div className={'content'}>{props.children}</div> <div className={'content'}>{props.children}</div>
<div className={'bottom-fixed'} style={{ flex: 'none' }}> <div className={'bottom-fixed'} style={{ flex: 'none' }}>
{props.bottomFixed} {props.bottomFixed}
</div> </div>
<SidebarSeparate style={{ marginTop: 0, marginBottom: 0 }} /> <Separate style={{ marginTop: 0, marginBottom: 0 }} />
<SidebarFooter /> <Footer />
</div> </div>
</> </>
) )
} }
Sidebar.Item = Item
Sidebar.ItemList = ItemList
Sidebar.Scroll = Scroll
Sidebar.Separate = Separate
Sidebar.Submenu = Submenu
Sidebar.Footer = Footer
export default Sidebar export default Sidebar

View File

@@ -1,7 +0,0 @@
import React from 'react'
const SidebarItemList: React.FC<React.PropsWithChildren> = (props) => {
return <ul>{props.children}</ul>
}
export default SidebarItemList

View File

@@ -4,10 +4,10 @@ import { useUpdatedEffect } from '@/util/hooks'
import FitFullscreen from '@/components/common/FitFullscreen' import FitFullscreen from '@/components/common/FitFullscreen'
import FitCenter from '@/components/common/FitCenter' import FitCenter from '@/components/common/FitCenter'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
import SignUp from '@/pages/sign_/SignUp' import SignUp from '@/pages/Sign/SignUp'
import Verify from '@/pages/sign_/Verify' import Verify from '@/pages/Sign/Verify'
import Forget from '@/pages/sign_/Forget' import Forget from '@/pages/Sign/Forget'
import SignIn from '@/pages/sign_/SignIn' import SignIn from '@/pages/Sign/SignIn'
const Sign: React.FC = () => { const Sign: React.FC = () => {
const lastPage = useRef('none') const lastPage = useRef('none')

View File

@@ -2,9 +2,9 @@ import React from 'react'
import { useUpdatedEffect } from '@/util/hooks' import { useUpdatedEffect } from '@/util/hooks'
import { hasPermission } from '@/util/auth' import { hasPermission } from '@/util/auth'
import { r_sys_settings_base_get, r_sys_settings_base_update } from '@/services/system' import { r_sys_settings_base_get, r_sys_settings_base_update } from '@/services/system'
import { SettingsCard } from '@/pages/system_/settings_' import { SettingsCard } from '@/pages/System/Settings'
const BaseSettings: React.FC = () => { const Base: React.FC = () => {
const [baseForm] = AntdForm.useForm<BaseSettingsParam>() const [baseForm] = AntdForm.useForm<BaseSettingsParam>()
const baseFormValues = AntdForm.useWatch([], baseForm) const baseFormValues = AntdForm.useWatch([], baseForm)
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
@@ -78,4 +78,4 @@ const BaseSettings: React.FC = () => {
) )
} }
export default BaseSettings export default Base

View File

@@ -7,9 +7,9 @@ import {
r_sys_settings_mail_send, r_sys_settings_mail_send,
r_sys_settings_mail_update r_sys_settings_mail_update
} from '@/services/system' } from '@/services/system'
import { SettingsCard } from '@/pages/system_/settings_' import { SettingsCard } from '@/pages/System/Settings'
const MailSettings: React.FC = () => { const Mail: React.FC = () => {
const [modal, contextHolder] = AntdModal.useModal() const [modal, contextHolder] = AntdModal.useModal()
const [mailForm] = AntdForm.useForm<MailSettingsParam>() const [mailForm] = AntdForm.useForm<MailSettingsParam>()
const mailFormValues = AntdForm.useWatch([], mailForm) const mailFormValues = AntdForm.useWatch([], mailForm)
@@ -152,4 +152,4 @@ const MailSettings: React.FC = () => {
) )
} }
export default MailSettings export default Mail

View File

@@ -8,9 +8,9 @@ import {
r_sys_settings_sensitive_get, r_sys_settings_sensitive_get,
r_sys_settings_sensitive_update r_sys_settings_sensitive_update
} from '@/services/system' } from '@/services/system'
import { SettingsCard } from '@/pages/system_/settings_' import { SettingsCard } from '@/pages/System/Settings'
const SensitiveWordSettings: React.FC = () => { const SensitiveWord: React.FC = () => {
const [dataSource, setDataSource] = useState<SensitiveWordVo[]>() const [dataSource, setDataSource] = useState<SensitiveWordVo[]>()
const [targetKeys, setTargetKeys] = useState<string[]>([]) const [targetKeys, setTargetKeys] = useState<string[]>([])
const [selectedKeys, setSelectedKeys] = useState<string[]>([]) const [selectedKeys, setSelectedKeys] = useState<string[]>([])
@@ -160,4 +160,4 @@ const SensitiveWordSettings: React.FC = () => {
) )
} }
export default SensitiveWordSettings export default SensitiveWord

View File

@@ -7,9 +7,9 @@ import Card from '@/components/common/Card'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
import LoadingMask from '@/components/common/LoadingMask' import LoadingMask from '@/components/common/LoadingMask'
import Permission from '@/components/common/Permission' import Permission from '@/components/common/Permission'
import BaseSettings from '@/pages/system_/settings_/BaseSettings' import Base from '@/pages/System/Settings/Base'
import MailSettings from '@/pages/system_/settings_/MailSettings' import Mail from '@/pages/System/Settings/Mail'
import SensitiveWordSettings from '@/pages/system_/settings_/SensitiveWordSettings' import SensitiveWord from '@/pages/System/Settings/SensitiveWord'
interface SettingsCardProps extends React.PropsWithChildren { interface SettingsCardProps extends React.PropsWithChildren {
icon: IconComponent icon: IconComponent
@@ -58,15 +58,15 @@ const Settings: React.FC = () => {
<FlexBox direction={'horizontal'} className={'root-content'}> <FlexBox direction={'horizontal'} className={'root-content'}>
<FlexBox className={'root-col'}> <FlexBox className={'root-col'}>
<Permission operationCode={'system:settings:query:base'}> <Permission operationCode={'system:settings:query:base'}>
<BaseSettings /> <Base />
</Permission> </Permission>
<Permission operationCode={'system:settings:query:sensitive'}> <Permission operationCode={'system:settings:query:sensitive'}>
<SensitiveWordSettings /> <SensitiveWord />
</Permission> </Permission>
</FlexBox> </FlexBox>
<FlexBox className={'root-col'}> <FlexBox className={'root-col'}>
<Permission operationCode={'system:settings:query:mail'}> <Permission operationCode={'system:settings:query:mail'}>
<MailSettings /> <Mail />
</Permission> </Permission>
</FlexBox> </FlexBox>
</FlexBox> </FlexBox>

View File

@@ -5,8 +5,8 @@ import { useUpdatedEffect } from '@/util/hooks'
import { getTimesBetweenTwoTimes } from '@/util/datetime' import { getTimesBetweenTwoTimes } from '@/util/datetime'
import { r_sys_statistics_active } from '@/services/system' import { r_sys_statistics_active } from '@/services/system'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
import { getTooltipTimeFormatter, lineEChartsBaseOption } from '@/pages/system_/statistics_/shared' import { getTooltipTimeFormatter, lineEChartsBaseOption } from '@/pages/System/Statistics/shared'
import { CommonCard } from '@/pages/system_/statistics_' import { CommonCard } from '@/pages/System/Statistics'
const ActiveInfo: React.FC = () => { const ActiveInfo: React.FC = () => {
const activeInfoDivRef = useRef<HTMLDivElement>(null) const activeInfoDivRef = useRef<HTMLDivElement>(null)

View File

@@ -8,8 +8,8 @@ import {
barDefaultSeriesOption, barDefaultSeriesOption,
barEChartsBaseOption, barEChartsBaseOption,
EChartsOption EChartsOption
} from '@/pages/system_/statistics_/shared' } from '@/pages/System/Statistics/shared'
import { CommonCard } from '@/pages/system_/statistics_' import { CommonCard } from '@/pages/System/Statistics'
const CPUInfo: React.FC = () => { const CPUInfo: React.FC = () => {
const keyDivRef = useRef<HTMLDivElement>(null) const keyDivRef = useRef<HTMLDivElement>(null)

View File

@@ -2,7 +2,7 @@ import React from 'react'
import { useUpdatedEffect } from '@/util/hooks' import { useUpdatedEffect } from '@/util/hooks'
import { r_sys_statistics_hardware } from '@/services/system' import { r_sys_statistics_hardware } from '@/services/system'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
import { CommonCard } from '@/pages/system_/statistics_' import { CommonCard } from '@/pages/System/Statistics'
const HardwareInfo: React.FC = () => { const HardwareInfo: React.FC = () => {
const [hardwareInfoData, setHardwareInfoData] = useState<HardwareInfoVo>() const [hardwareInfoData, setHardwareInfoData] = useState<HardwareInfoVo>()

View File

@@ -5,8 +5,8 @@ import { useUpdatedEffect } from '@/util/hooks'
import { getTimesBetweenTwoTimes } from '@/util/datetime' import { getTimesBetweenTwoTimes } from '@/util/datetime'
import { r_sys_statistics_online } from '@/services/system' import { r_sys_statistics_online } from '@/services/system'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
import { getTooltipTimeFormatter, lineEChartsBaseOption } from '@/pages/system_/statistics_/shared' import { getTooltipTimeFormatter, lineEChartsBaseOption } from '@/pages/System/Statistics/shared'
import { CommonCard } from '@/pages/system_/statistics_' import { CommonCard } from '@/pages/System/Statistics'
const OnlineInfo: React.FC = () => { const OnlineInfo: React.FC = () => {
const onlineInfoDivRef = useRef<HTMLDivElement>(null) const onlineInfoDivRef = useRef<HTMLDivElement>(null)

View File

@@ -3,7 +3,7 @@ import { useUpdatedEffect } from '@/util/hooks'
import { utcToLocalTime } from '@/util/datetime' import { utcToLocalTime } from '@/util/datetime'
import { r_sys_statistics_software } from '@/services/system' import { r_sys_statistics_software } from '@/services/system'
import FlexBox from '@/components/common/FlexBox' import FlexBox from '@/components/common/FlexBox'
import { CommonCard } from '@/pages/system_/statistics_' import { CommonCard } from '@/pages/System/Statistics'
const SoftwareInfo: React.FC = () => { const SoftwareInfo: React.FC = () => {
const [softwareInfoData, setSoftwareInfoData] = useState<SoftwareInfoVo>() const [softwareInfoData, setSoftwareInfoData] = useState<SoftwareInfoVo>()

View File

@@ -9,8 +9,8 @@ import {
barDefaultSeriesOption, barDefaultSeriesOption,
barEChartsBaseOption, barEChartsBaseOption,
EChartsOption EChartsOption
} from '@/pages/system_/statistics_/shared' } from '@/pages/System/Statistics/shared'
import { CommonCard } from '@/pages/system_/statistics_' import { CommonCard } from '@/pages/System/Statistics'
const StorageInfo: React.FC = () => { const StorageInfo: React.FC = () => {
const keyDivRef = useRef<HTMLDivElement>(null) const keyDivRef = useRef<HTMLDivElement>(null)

View File

@@ -7,12 +7,12 @@ import FitFullscreen from '@/components/common/FitFullscreen'
import HideScrollbar from '@/components/common/HideScrollbar' import HideScrollbar from '@/components/common/HideScrollbar'
import LoadingMask from '@/components/common/LoadingMask' import LoadingMask from '@/components/common/LoadingMask'
import Permission from '@/components/common/Permission' import Permission from '@/components/common/Permission'
import OnlineInfo from '@/pages/system_/statistics_/OnlineInfo' import OnlineInfo from '@/pages/System/Statistics/OnlineInfo'
import ActiveInfo from '@/pages/system_/statistics_/ActiveInfo' import ActiveInfo from '@/pages/System/Statistics/ActiveInfo'
import SoftwareInfo from '@/pages/system_/statistics_/SoftwareInfo' import SoftwareInfo from '@/pages/System/Statistics/SoftwareInfo'
import HardwareInfo from '@/pages/system_/statistics_/HardwareInfo' import HardwareInfo from '@/pages/System/Statistics/HardwareInfo'
import CPUInfo from '@/pages/system_/statistics_/CPUInfo' import CPUInfo from '@/pages/System/Statistics/CPUInfo'
import StorageInfo from '@/pages/system_/statistics_/StorageInfo' import StorageInfo from '@/pages/System/Statistics/StorageInfo'
interface CommonCardProps extends React.PropsWithChildren { interface CommonCardProps extends React.PropsWithChildren {
icon: IconComponent icon: IconComponent

View File

@@ -2,9 +2,7 @@ import React from 'react'
import '@/assets/css/pages/system-framework.scss' import '@/assets/css/pages/system-framework.scss'
import { getSystemRouteJson } from '@/router/system' import { getSystemRouteJson } from '@/router/system'
import FitFullscreen from '@/components/common/FitFullscreen' import FitFullscreen from '@/components/common/FitFullscreen'
import Sidebar from 'src/components/common/sidebar_' import Sidebar from '@/components/common/Sidebar'
import SidebarItemList from '@/components/common/sidebar_/SidebarItemList'
import SidebarItem from '@/components/common/sidebar_/SidebarItem'
import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask' import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask'
const SystemFramework: React.FC = () => { const SystemFramework: React.FC = () => {
@@ -13,10 +11,10 @@ const SystemFramework: React.FC = () => {
<FitFullscreen data-component={'system-framework'} className={'flex-horizontal'}> <FitFullscreen data-component={'system-framework'} className={'flex-horizontal'}>
<div className={'left-panel'}> <div className={'left-panel'}>
<Sidebar title={'系统配置'}> <Sidebar title={'系统配置'}>
<SidebarItemList> <Sidebar.ItemList>
{getSystemRouteJson().map((value) => { {getSystemRouteJson().map((value) => {
return value.menu ? ( return value.menu ? (
<SidebarItem <Sidebar.Item
end={value.id === 'system' ? true : undefined} end={value.id === 'system' ? true : undefined}
path={value.absolutePath} path={value.absolutePath}
icon={value.icon} icon={value.icon}
@@ -25,7 +23,7 @@ const SystemFramework: React.FC = () => {
/> />
) : undefined ) : undefined
})} })}
</SidebarItemList> </Sidebar.ItemList>
</Sidebar> </Sidebar>
</div> </div>
<div className={'right-panel'}> <div className={'right-panel'}>

View File

@@ -2,11 +2,8 @@ import React from 'react'
import '@/assets/css/pages/tools-framework.scss' import '@/assets/css/pages/tools-framework.scss'
import { tools } from '@/router/tools' import { tools } from '@/router/tools'
import FitFullscreen from '@/components/common/FitFullscreen' import FitFullscreen from '@/components/common/FitFullscreen'
import SidebarScroll, { SidebarScrollElement } from '@/components/common/sidebar_/SidebarScroll' import Sidebar from '@/components/common/Sidebar'
import Sidebar from 'src/components/common/sidebar_' import { SidebarScrollElement } from '@/components/common/Sidebar/Scroll'
import SidebarItemList from '@/components/common/sidebar_/SidebarItemList'
import SidebarItem from '@/components/common/sidebar_/SidebarItem'
import SidebarSeparate from '@/components/common/sidebar_/SidebarSeparate'
import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask' import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask'
const ToolsFramework: React.FC = () => { const ToolsFramework: React.FC = () => {
@@ -23,23 +20,23 @@ const ToolsFramework: React.FC = () => {
<FitFullscreen data-component={'tools-framework'} className={'flex-horizontal'}> <FitFullscreen data-component={'tools-framework'} className={'flex-horizontal'}>
<div className={'left-panel'}> <div className={'left-panel'}>
<Sidebar title={'氧工具'} onSidebarSwitch={handleOnSidebarSwitch}> <Sidebar title={'氧工具'} onSidebarSwitch={handleOnSidebarSwitch}>
<SidebarItemList> <Sidebar.ItemList>
<SidebarItem end path={''} icon={tools[0].icon} text={tools[0].name} /> <Sidebar.Item end path={''} icon={tools[0].icon} text={tools[0].name} />
<SidebarItem <Sidebar.Item
end end
path={'all'} path={'all'}
icon={tools[1].icon} icon={tools[1].icon}
text={tools[1].name} text={tools[1].name}
/> />
</SidebarItemList> </Sidebar.ItemList>
<SidebarSeparate style={{ marginBottom: 0 }} /> <Sidebar.Separate style={{ marginBottom: 0 }} />
<SidebarScroll ref={sidebarScrollRef}> <Sidebar.Scroll ref={sidebarScrollRef}>
<SidebarItemList> <Sidebar.ItemList>
{tools.map((tool) => { {tools.map((tool) => {
return tool.menu && return tool.menu &&
tool.id !== 'tools' && tool.id !== 'tools' &&
tool.id !== 'tools-all' ? ( tool.id !== 'tools-all' ? (
<SidebarItem <Sidebar.Item
path={tool.absolutePath} path={tool.absolutePath}
icon={tool.icon} icon={tool.icon}
text={tool.name} text={tool.name}
@@ -48,7 +45,7 @@ const ToolsFramework: React.FC = () => {
{tool.children {tool.children
? tool.children.map((subTool) => { ? tool.children.map((subTool) => {
return ( return (
<SidebarItem <Sidebar.Item
path={subTool.absolutePath} path={subTool.absolutePath}
text={subTool.name} text={subTool.name}
key={subTool.id} key={subTool.id}
@@ -56,11 +53,11 @@ const ToolsFramework: React.FC = () => {
) )
}) })
: undefined} : undefined}
</SidebarItem> </Sidebar.Item>
) : undefined ) : undefined
})} })}
</SidebarItemList> </Sidebar.ItemList>
</SidebarScroll> </Sidebar.Scroll>
</Sidebar> </Sidebar>
</div> </div>
<div className={'right-panel'}> <div className={'right-panel'}>

View File

@@ -3,9 +3,7 @@ import '@/assets/css/pages/user-framework.scss'
import user from '@/router/user' import user from '@/router/user'
import { hasPathPermission } from '@/util/auth' import { hasPathPermission } from '@/util/auth'
import FitFullscreen from '@/components/common/FitFullscreen' import FitFullscreen from '@/components/common/FitFullscreen'
import Sidebar from 'src/components/common/sidebar_' import Sidebar from '@/components/common/Sidebar'
import SidebarItemList from '@/components/common/sidebar_/SidebarItemList'
import SidebarItem from '@/components/common/sidebar_/SidebarItem'
import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask' import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask'
const ToolsFramework: React.FC = () => { const ToolsFramework: React.FC = () => {
@@ -16,22 +14,26 @@ const ToolsFramework: React.FC = () => {
<Sidebar <Sidebar
title={'个人中心'} title={'个人中心'}
bottomFixed={ bottomFixed={
<SidebarItemList> <Sidebar.ItemList>
{hasPathPermission('/system') ? ( {hasPathPermission('/system') ? (
<SidebarItem <Sidebar.Item
path={'/system'} path={'/system'}
icon={IconOxygenSetting} icon={IconOxygenSetting}
text={'系统配置'} text={'系统配置'}
/> />
) : undefined} ) : undefined}
<SidebarItem path={'/'} icon={IconOxygenBack} text={'回到氧工具'} /> <Sidebar.Item
</SidebarItemList> path={'/'}
icon={IconOxygenBack}
text={'回到氧工具'}
/>
</Sidebar.ItemList>
} }
> >
<SidebarItemList> <Sidebar.ItemList>
{user.map((value) => { {user.map((value) => {
return value.menu ? ( return value.menu ? (
<SidebarItem <Sidebar.Item
end={value.id === 'user' ? true : undefined} end={value.id === 'user' ? true : undefined}
path={value.absolutePath} path={value.absolutePath}
icon={value.icon} icon={value.icon}
@@ -40,7 +42,7 @@ const ToolsFramework: React.FC = () => {
/> />
) : undefined ) : undefined
})} })}
</SidebarItemList> </Sidebar.ItemList>
</Sidebar> </Sidebar>
</div> </div>
<div className={'right-panel'}> <div className={'right-panel'}>

View File

@@ -5,7 +5,7 @@ import user from '@/router/user'
import tools from '@/router/tools' import tools from '@/router/tools'
import { getAuthRoute, mapJsonToRoute, setTitle } from '@/util/route' import { getAuthRoute, mapJsonToRoute, setTitle } from '@/util/route'
const lazySignPage = React.lazy(() => import('src/pages/sign_')) const lazySignPage = React.lazy(() => import('@/pages/Sign'))
const root: RouteJsonObject[] = [ const root: RouteJsonObject[] = [
{ {

View File

@@ -6,18 +6,18 @@ const system: RouteJsonObject[] = [
path: '', path: '',
absolutePath: '/system', absolutePath: '/system',
id: 'system', id: 'system',
component: React.lazy(() => import('src/pages/system_')), component: React.lazy(() => import('@/pages/System')),
name: '系统管理', name: '系统管理',
icon: React.lazy(() => import('~icons/oxygen/setting.jsx')), icon: React.lazy(() => import('~icons/oxygen/setting')),
menu: true menu: true
}, },
{ {
path: 'statistics', path: 'statistics',
absolutePath: '/system/statistics', absolutePath: '/system/statistics',
id: 'system-statistics', id: 'system-statistics',
component: React.lazy(() => import('@/pages/system_/statistics_')), component: React.lazy(() => import('@/pages/System/Statistics')),
name: '系统概况', name: '系统概况',
icon: React.lazy(() => import('~icons/oxygen/chart.jsx')), icon: React.lazy(() => import('~icons/oxygen/chart')),
menu: true, menu: true,
autoHide: true autoHide: true
}, },
@@ -25,9 +25,9 @@ const system: RouteJsonObject[] = [
path: 'settings', path: 'settings',
absolutePath: '/system/settings', absolutePath: '/system/settings',
id: 'system-settings', id: 'system-settings',
component: React.lazy(() => import('@/pages/system_/settings_')), component: React.lazy(() => import('@/pages/System/Settings')),
name: '系统设置', name: '系统设置',
icon: React.lazy(() => import('~icons/oxygen/option.jsx')), icon: React.lazy(() => import('~icons/oxygen/option')),
menu: true, menu: true,
autoHide: true autoHide: true
}, },
@@ -35,9 +35,9 @@ const system: RouteJsonObject[] = [
path: 'user', path: 'user',
absolutePath: '/system/user', absolutePath: '/system/user',
id: 'system-user', id: 'system-user',
component: React.lazy(() => import('@/pages/system_/User')), component: React.lazy(() => import('@/pages/System/User')),
name: '用户管理', name: '用户管理',
icon: React.lazy(() => import('~icons/oxygen/user.jsx')), icon: React.lazy(() => import('~icons/oxygen/user')),
menu: true, menu: true,
autoHide: true autoHide: true
}, },
@@ -45,9 +45,9 @@ const system: RouteJsonObject[] = [
path: 'role', path: 'role',
absolutePath: '/system/role', absolutePath: '/system/role',
id: 'system-role', id: 'system-role',
component: React.lazy(() => import('@/pages/system_/Role')), component: React.lazy(() => import('@/pages/System/Role')),
name: '角色管理', name: '角色管理',
icon: React.lazy(() => import('~icons/oxygen/role.jsx')), icon: React.lazy(() => import('~icons/oxygen/role')),
menu: true, menu: true,
autoHide: true autoHide: true
}, },
@@ -55,9 +55,9 @@ const system: RouteJsonObject[] = [
path: 'group', path: 'group',
absolutePath: '/system/group', absolutePath: '/system/group',
id: 'system-group', id: 'system-group',
component: React.lazy(() => import('@/pages/system_/Group')), component: React.lazy(() => import('@/pages/System/Group')),
name: '群组管理', name: '群组管理',
icon: React.lazy(() => import('~icons/oxygen/group.jsx')), icon: React.lazy(() => import('~icons/oxygen/group')),
menu: true, menu: true,
autoHide: true autoHide: true
}, },
@@ -65,9 +65,9 @@ const system: RouteJsonObject[] = [
path: 'log', path: 'log',
absolutePath: '/system/log', absolutePath: '/system/log',
id: 'system-log', id: 'system-log',
component: React.lazy(() => import('@/pages/system_/Log')), component: React.lazy(() => import('@/pages/System/Log')),
name: '系统日志', name: '系统日志',
icon: React.lazy(() => import('~icons/oxygen/log.jsx')), icon: React.lazy(() => import('~icons/oxygen/log')),
menu: true, menu: true,
autoHide: true autoHide: true
}, },

View File

@@ -5,9 +5,9 @@ export const tools: RouteJsonObject[] = [
path: '', path: '',
absolutePath: '/', absolutePath: '/',
id: 'tools', id: 'tools',
component: React.lazy(() => import('src/pages/tools_')), component: React.lazy(() => import('@/pages/Tools')),
name: '主页', name: '主页',
icon: React.lazy(() => import('~icons/oxygen/home.jsx')), icon: React.lazy(() => import('~icons/oxygen/home')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -15,10 +15,10 @@ export const tools: RouteJsonObject[] = [
path: 'all', path: 'all',
absolutePath: '/all', absolutePath: '/all',
id: 'tools-all', id: 'tools-all',
component: React.lazy(() => import('src/pages/tools_')), component: React.lazy(() => import('@/pages/Tools')),
name: '全部工具', name: '全部工具',
titlePostfix: ' - 全部工具', titlePostfix: ' - 全部工具',
icon: React.lazy(() => import('~icons/oxygen/tool.jsx')), icon: React.lazy(() => import('~icons/oxygen/tool')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -26,9 +26,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation', path: 'translation',
absolutePath: '/translation', absolutePath: '/translation',
id: 'tools-translation', id: 'tools-translation',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译', name: '翻译',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false, auth: false,
children: [ children: [
@@ -37,7 +37,7 @@ export const tools: RouteJsonObject[] = [
absolutePath: '/translation/1', absolutePath: '/translation/1',
id: '1', id: '1',
name: '翻译1', name: '翻译1',
icon: React.lazy(() => import('~icons/oxygen/logo.jsx')), icon: React.lazy(() => import('~icons/oxygen/logo')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -55,9 +55,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation-', path: 'translation-',
absolutePath: '/translation-', absolutePath: '/translation-',
id: 'tools-translation-', id: 'tools-translation-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译-', name: '翻译-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false, auth: false,
children: [ children: [
@@ -83,9 +83,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--', path: 'translation--',
absolutePath: '/translation--', absolutePath: '/translation--',
id: 'tools-translation--', id: 'tools-translation--',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--', name: '翻译--',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -93,9 +93,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--1', path: 'translation--1',
absolutePath: '/translation--1', absolutePath: '/translation--1',
id: 'tools-translation--1', id: 'tools-translation--1',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--1', name: '翻译--1',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -103,9 +103,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--2', path: 'translation--2',
absolutePath: '/translation--2', absolutePath: '/translation--2',
id: 'tools-translation--2', id: 'tools-translation--2',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--2', name: '翻译--2',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -113,9 +113,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--3', path: 'translation--3',
absolutePath: '/translation--3', absolutePath: '/translation--3',
id: 'tools-translation--3', id: 'tools-translation--3',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--3', name: '翻译--3',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -123,9 +123,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--4', path: 'translation--4',
absolutePath: '/translation--4', absolutePath: '/translation--4',
id: 'tools-translation--4', id: 'tools-translation--4',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--4', name: '翻译--4',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -133,9 +133,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--5', path: 'translation--5',
absolutePath: '/translation--5', absolutePath: '/translation--5',
id: 'tools-translation--5', id: 'tools-translation--5',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--5', name: '翻译--5',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -143,9 +143,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--6', path: 'translation--6',
absolutePath: '/translation--6', absolutePath: '/translation--6',
id: 'tools-translation--6', id: 'tools-translation--6',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--6', name: '翻译--6',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -153,9 +153,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--7', path: 'translation--7',
absolutePath: '/translation--7', absolutePath: '/translation--7',
id: 'tools-translation--7', id: 'tools-translation--7',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--7', name: '翻译--7',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -163,9 +163,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--8', path: 'translation--8',
absolutePath: '/translation--8', absolutePath: '/translation--8',
id: 'tools-translation--8', id: 'tools-translation--8',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--8', name: '翻译--8',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -173,9 +173,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--9', path: 'translation--9',
absolutePath: '/translation--9', absolutePath: '/translation--9',
id: 'tools-translation--9', id: 'tools-translation--9',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--9', name: '翻译--9',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -183,9 +183,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--10', path: 'translation--10',
absolutePath: '/translation--10', absolutePath: '/translation--10',
id: 'tools-translation--10', id: 'tools-translation--10',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--10', name: '翻译--10',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -193,9 +193,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--1-', path: 'translation--1-',
absolutePath: '/translation--1-', absolutePath: '/translation--1-',
id: 'tools-translation--1-', id: 'tools-translation--1-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--1-', name: '翻译--1-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -203,9 +203,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--2-', path: 'translation--2-',
absolutePath: '/translation--2-', absolutePath: '/translation--2-',
id: 'tools-translation--2-', id: 'tools-translation--2-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--2-', name: '翻译--2-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -213,9 +213,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--3-', path: 'translation--3-',
absolutePath: '/translation--3-', absolutePath: '/translation--3-',
id: 'tools-translation--3-', id: 'tools-translation--3-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--3-', name: '翻译--3-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -223,9 +223,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--4-', path: 'translation--4-',
absolutePath: '/translation--4-', absolutePath: '/translation--4-',
id: 'tools-translation--4-', id: 'tools-translation--4-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--4-', name: '翻译--4-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -233,9 +233,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--5-', path: 'translation--5-',
absolutePath: '/translation--5-', absolutePath: '/translation--5-',
id: 'tools-translation--5-', id: 'tools-translation--5-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--5-', name: '翻译--5-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -243,9 +243,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--6-', path: 'translation--6-',
absolutePath: '/translation--6-', absolutePath: '/translation--6-',
id: 'tools-translation--6-', id: 'tools-translation--6-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--6-', name: '翻译--6-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -253,9 +253,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--7-', path: 'translation--7-',
absolutePath: '/translation--7-', absolutePath: '/translation--7-',
id: 'tools-translation--7-', id: 'tools-translation--7-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--7-', name: '翻译--7-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -263,9 +263,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--8-', path: 'translation--8-',
absolutePath: '/translation--8-', absolutePath: '/translation--8-',
id: 'tools-translation--8-', id: 'tools-translation--8-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--8-', name: '翻译--8-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -273,9 +273,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--9-', path: 'translation--9-',
absolutePath: '/translation--9-', absolutePath: '/translation--9-',
id: 'tools-translation--9-', id: 'tools-translation--9-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--9-', name: '翻译--9-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false auth: false
}, },
@@ -283,9 +283,9 @@ export const tools: RouteJsonObject[] = [
path: 'translation--10-', path: 'translation--10-',
absolutePath: '/translation--10-', absolutePath: '/translation--10-',
id: 'tools-translation--10-', id: 'tools-translation--10-',
component: React.lazy(() => import('@/pages/tools_/Translation')), component: React.lazy(() => import('@/pages/Tools/Translation')),
name: '翻译--10-', name: '翻译--10-',
icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')), icon: React.lazy(() => import('~icons/oxygen/jenkins')),
menu: true, menu: true,
auth: false, auth: false,
children: [ children: [

View File

@@ -5,9 +5,9 @@ const user: RouteJsonObject[] = [
path: '', path: '',
absolutePath: '/user', absolutePath: '/user',
id: 'user', id: 'user',
component: React.lazy(() => import('src/pages/user_')), component: React.lazy(() => import('@/pages/User')),
name: '个人档案', name: '个人档案',
icon: React.lazy(() => import('~icons/oxygen/user.jsx')), icon: React.lazy(() => import('~icons/oxygen/user')),
menu: true menu: true
}, },
{ {