diff --git a/.env.production b/.env.production
index 2e21eb8..245e99d 100644
--- a/.env.production
+++ b/.env.production
@@ -1,2 +1,2 @@
-VITE_API_URL=https://api.fatweb.top
+VITE_API_URL=${PRODUCT_API_URL}
VITE_API_TOKEN_URL=${VITE_API_URL}/token
\ No newline at end of file
diff --git a/.env.testing b/.env.testing
index 86f60f7..ecf602a 100644
--- a/.env.testing
+++ b/.env.testing
@@ -1,3 +1,3 @@
NODE_ENV=development
-VITE_API_URL=https://api-test.fatweb.top
+VITE_API_URL=${TEST_API_URL}
VITE_API_TOKEN_URL=${VITE_API_URL}/token
\ No newline at end of file
diff --git a/index.html b/index.html
index 93b7658..a51f501 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
-
FatWeb
+ Oxygen Toolbox
diff --git a/package-lock.json b/package-lock.json
index 1e3d549..971b8f1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,11 +1,11 @@
{
- "name": "fatweb-ui",
+ "name": "oxygen-ui",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "fatweb-ui",
+ "name": "oxygen-ui",
"version": "0.0.0",
"dependencies": {
"@ant-design/icons": "^5.2.6",
diff --git a/package.json b/package.json
index 2d59e37..bd89530 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "fatweb-ui",
+ "name": "oxygen-ui",
"private": true,
"version": "0.0.0",
"type": "module",
diff --git a/src/assets/css/components/home/footer.scss b/src/assets/css/components/home/footer.scss
deleted file mode 100644
index 551c276..0000000
--- a/src/assets/css/components/home/footer.scss
+++ /dev/null
@@ -1,21 +0,0 @@
-@use "@/assets/css/constants" as constants;
-
-.icons {
- display: flex;
- gap: 20px;
-
- .icon {
- font-size: 8em;
- color: constants.$origin-color;
- }
-}
-
-.links {
- font-size: 2em;
- text-decoration: underline;
- color: constants.$origin-color;
-
- > * {
- color: constants.$origin-color;
- }
-}
\ No newline at end of file
diff --git a/src/assets/css/components/home/home.scss b/src/assets/css/components/home/home.scss
deleted file mode 100644
index 5cd495e..0000000
--- a/src/assets/css/components/home/home.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-[data-component=home].indicator {
- position: fixed;
- margin: {
- right: 20px;
- };
- width: 20px;
- height: 100px;
- right: 0;
- top: 50%;
- transform: translateY(-50%);
-}
\ No newline at end of file
diff --git a/src/assets/css/components/home/slogan.scss b/src/assets/css/components/home/slogan.scss
deleted file mode 100644
index 018eec3..0000000
--- a/src/assets/css/components/home/slogan.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-@use "@/assets/css/mixins" as mixins;
-
-.center-box {
- display: flex;
- flex-direction: column;
-}
-
-.big-logo {
- font: {
- size: 5em;
- weight: bold;
- };
- color: #666;
-}
-
-.slogan {
- font: {
- size: 1.3em;
- style: italic;
- };
- color: #666;
-
- .cursor {
- font-style: normal;
- animation: 1s infinite;
-
- @include mixins.unique-keyframes {
- 0% {
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
- }
- }
-}
-
-.scroll-down {
- position: absolute;
- bottom: 10px;
- padding: 20px;
- cursor: pointer;
- animation: 1.5s infinite;
- @include mixins.unique-keyframes {
- 0%,
- 100% {
- -ms-filter: none;
- filter: none;
- opacity: 1;
- transform: translateY(10px);
- }
-
- 50% {
- -ms-filter: alpha(opacity=40);
- filter: alpha(opacity=40);
- opacity: .4;
- transform: translateY(-10px);
- }
- }
-}
\ No newline at end of file
diff --git a/src/assets/css/pages/home-framework.scss b/src/assets/css/pages/home-framework.scss
deleted file mode 100644
index 78aae96..0000000
--- a/src/assets/css/pages/home-framework.scss
+++ /dev/null
@@ -1,217 +0,0 @@
-@use "@/assets/css/mixins" as mixins;
-@use "@/assets/css/constants" as constants;
-
-[data-component=home-framework] {
- .nav {
- display: flex;
- position: fixed;
- align-items: center;
- z-index: 1;
- width: 100%;
- height: 70px;
- background-color: constants.$origin-color;
- border: {
- bottom: {
- width: 1px;
- style: solid;
- color: constants.$border-color;
- }
- }
- animation: .5s ease both;
-
- @include mixins.unique-keyframes {
- 0% {
- transform: translateY(-100%);
- }
- 100% {
- transform: translateY(0);
- }
- }
-
- .logo {
- padding: 0 40px;
-
- .title {
- font-size: 2.8em;
- font-family: century gothic, texgyreadventor, stheiti, sans-serif;
- }
- }
-
- nav {
- display: flex;
- justify-content: end;
- flex: 1;
- transition: {
- property: all;
- duration: .5s;
- };
-
- .menu {
- padding: 0 30px;
-
- .item {
- display: inline-block;
- position: relative;
- font-size: 1.5em;
- transition: {
- property: all;
- duration: .3s;
- };
-
- a {
- padding: 5px 20px;
- color: constants.$url-color;
- }
- }
-
- .active {
- border: {
- bottom: {
- width: 2px;
- style: solid;
- color: constants.$url-active-color;
- };
- };
- }
-
- .item:hover {
- transform: translateY(-5px);
- }
-
- .item:hover .submenu {
- display: block;
- border: {
- width: 1px;
- color: constants.$border-color;
- style: solid;
- };
- animation: 0.3s;
-
- @include mixins.unique-keyframes {
- 0% {
- transform: translateY(-10px);
- opacity: 0;
- }
- }
- }
-
- .submenu {
- display: none;
- position: absolute;
- width: 100%;
- text-align: center;
- background-color: constants.$origin-color;
- overflow: hidden;
-
- .item {
- display: block;
- font-size: 0.8em;
- transition: all 0s;
-
- a {
- display: block;
- padding: 8px 0;
- }
- }
-
- .item:hover {
- transform: none;
-
- a {
- background-color: constants.$focus-color !important;
- }
- }
-
- .active {
- font-weight: bold;
- border: none;
- }
- }
- }
-
- .dropdown-menu-button {
- display: none;
- margin: 0 20px;
- width: 45px;
- height: 45px;
- justify-content: center;
- align-items: center;
- border-radius: 6px;
- }
-
- .dropdown-menu-button.active {
- background-color: transparentize(constants.$focus-color, 0.8);
- border: {
- width: 1px;
- color: constants.$focus-color;
- style: solid;
- };
- }
-
- @media screen and (max-width: 900px) {
- .menu {
- display: none;
- }
-
- .dropdown-menu-button {
- display: flex;
- }
- }
- }
- }
-
- .dropdown-menu-content {
- display: none;
-
- @media screen and (max-width: 900px) {
- display: none;
- position: fixed;
- width: 100%;
- top: 70px;
- border: {
- width: 1px;
- color: constants.$border-color;
- style: solid;
- };
- background-color: constants.$origin-color;
- z-index: 1;
-
- ul {
- li {
- font-size: 1.2em;
- text-align: center;
-
- a {
- display: block;
- width: 100%;
- height: 100%;
- padding: 10px;
- }
-
- :hover {
- background-color: constants.$focus-color;
- }
- }
- }
- }
- }
-
- @media screen and (max-width: 900px) {
- .dropdown-menu-content.show {
- display: block;
- }
- }
-
- .nav.hide {
- animation: .5s ease both;
-
- @include mixins.unique-keyframes {
- 0% {
- transform: translateY(0);
- }
- 100% {
- transform: translateY(-100%);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/components/common/FullscreenLoadingMask.tsx b/src/components/common/FullscreenLoadingMask.tsx
index 749a4ce..5310b94 100644
--- a/src/components/common/FullscreenLoadingMask.tsx
+++ b/src/components/common/FullscreenLoadingMask.tsx
@@ -8,7 +8,7 @@ const FullscreenLoadingMask: React.FC = () => {
const loadingIcon = (
<>
diff --git a/src/components/common/LoadingMask.tsx b/src/components/common/LoadingMask.tsx
index 0107468..41d5854 100644
--- a/src/components/common/LoadingMask.tsx
+++ b/src/components/common/LoadingMask.tsx
@@ -11,7 +11,7 @@ const LoadingMask: React.FC = (props) => {
const loadingIcon = (
<>
diff --git a/src/components/common/sidebar/SidebarFooter.tsx b/src/components/common/sidebar/SidebarFooter.tsx
index 2afed3e..196686f 100644
--- a/src/components/common/sidebar/SidebarFooter.tsx
+++ b/src/components/common/sidebar/SidebarFooter.tsx
@@ -33,7 +33,7 @@ const SidebarFooter: React.FC = () => {
removeToken()
notification.info({
message: '已退出登录',
- icon:
+ icon:
})
setTimeout(() => {
window.location.reload()
@@ -65,7 +65,7 @@ const SidebarFooter: React.FC = () => {
{avatar ? (
) : (
-
+
)}
@@ -84,7 +84,7 @@ const SidebarFooter: React.FC = () => {
diff --git a/src/components/common/sidebar/index.tsx b/src/components/common/sidebar/index.tsx
index 5060455..d9b3266 100644
--- a/src/components/common/sidebar/index.tsx
+++ b/src/components/common/sidebar/index.tsx
@@ -29,7 +29,7 @@ const Sidebar: React.FC
= (props) => {
>
-
+
{props.title}
diff --git a/src/components/home/Footer.tsx b/src/components/home/Footer.tsx
deleted file mode 100644
index 1b2641b..0000000
--- a/src/components/home/Footer.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react'
-import Icon from '@ant-design/icons'
-import '@/assets/css/components/home/footer.scss'
-import FitCenter from '@/components/common/FitCenter'
-import FitFullscreen from '@/components/common/FitFullscreen'
-
-const Footer: React.FC = () => {
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
- Mail
-
-
-
- >
- )
-}
-
-export default Footer
diff --git a/src/components/home/OxygenToolbox.tsx b/src/components/home/OxygenToolbox.tsx
deleted file mode 100644
index 576bd5b..0000000
--- a/src/components/home/OxygenToolbox.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react'
-import FitCenter from '@/components/common/FitCenter'
-
-const OxygenToolbox: React.FC = () => {
- return (
- <>
-
-
-
Oxygen Toolbox
-
is coming soon...
-
-
- >
- )
-}
-
-export default OxygenToolbox
diff --git a/src/components/home/Slogan.tsx b/src/components/home/Slogan.tsx
deleted file mode 100644
index e0439c0..0000000
--- a/src/components/home/Slogan.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import React from 'react'
-import Icon from '@ant-design/icons'
-import '@/assets/css/components/home/slogan.scss'
-import FitCenter from '@/components/common/FitCenter'
-
-interface SloganProps {
- onClickScrollDown: (event: React.MouseEvent) => void
-}
-
-const Slogan: React.FC = (props) => {
- const [slogan, setSlogan] = useState('')
- const [sloganType, setSloganType] = useState(true)
-
- const typeText = '因为热爱 所以折腾'
- if (sloganType) {
- setTimeout(() => {
- if (slogan.length < typeText.length) {
- setSlogan(typeText.substring(0, slogan.length + 1))
- } else {
- setSloganType(false)
- }
- }, 250)
- } else {
- setTimeout(() => {
- if (slogan.length > 0) {
- setSlogan(typeText.substring(0, slogan.length - 1))
- } else {
- setSloganType(true)
- }
- }, 100)
- }
-
- return (
- <>
-
-
-
FatWeb
-
- /* {slogan || <> >} | */
-
-
-
-
-
-
- >
- )
-}
-
-export default Slogan
diff --git a/src/constants/common.constants.ts b/src/constants/common.constants.ts
index 6377058..dbc1338 100644
--- a/src/constants/common.constants.ts
+++ b/src/constants/common.constants.ts
@@ -1,4 +1,4 @@
-export const PRODUCTION_NAME = 'FatWeb'
+export const PRODUCTION_NAME = 'Oxygen Toolbox'
export const STORAGE_TOKEN_KEY = 'JWT_TOKEN'
export const STORAGE_USER_INFO_KEY = 'USER_INFO'
export const COLOR_ORIGIN = 'white'
diff --git a/src/pages/HomeFramework.tsx b/src/pages/HomeFramework.tsx
deleted file mode 100644
index 200632f..0000000
--- a/src/pages/HomeFramework.tsx
+++ /dev/null
@@ -1,223 +0,0 @@
-import React from 'react'
-import Icon from '@ant-design/icons'
-import '@/assets/css/pages/home-framework.scss'
-import { COLOR_FONT_SECONDARY } from '@/constants/common.constants'
-import { getRouter } from '@/router'
-import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask'
-import HideScrollbar, { HideScrollbarElement } from '@/components/common/HideScrollbar'
-
-export const HomeFrameworkContext = createContext<{
- navbarHiddenState: {
- navbarHidden: boolean
- setNavbarHidden: (newValue: boolean) => void
- }
- preventScrollState: {
- preventScroll: boolean
- setPreventScroll: (newValue: boolean) => void
- }
- showVerticalScrollbarState: {
- showVerticalScrollbar: boolean
- setShowVerticalScrollbar: (newValue: boolean) => void
- }
- showHorizontalScrollbarState: {
- showHorizontalScrollbar: boolean
- setShowHorizontalScrollbar: (newValue: boolean) => void
- }
- showDropdownMenuState: {
- showDropdownMenu: boolean
- setShowDropdownMenu: (newValue: boolean) => void
- }
- hideScrollbarRef: React.RefObject
-}>({
- navbarHiddenState: {
- navbarHidden: false,
- setNavbarHidden: () => undefined
- },
- preventScrollState: {
- preventScroll: false,
- setPreventScroll: () => undefined
- },
- showVerticalScrollbarState: {
- showVerticalScrollbar: false,
- setShowVerticalScrollbar: () => undefined
- },
- showHorizontalScrollbarState: {
- showHorizontalScrollbar: false,
- setShowHorizontalScrollbar: () => undefined
- },
- showDropdownMenuState: {
- showDropdownMenu: false,
- setShowDropdownMenu: () => undefined
- },
- hideScrollbarRef: createRef()
-})
-
-const HomeFramework: React.FC = () => {
- const routeId = useMatches()[1].id
- const routeChildren = getRouter().routes[0].children?.find((value) => value.id === routeId)
- ?.children
-
- const pathname = useLocation().pathname
-
- const hideScrollbarRef = useRef(null)
-
- const [navbarHidden, setNavbarHidden] = useState(true)
- const [preventScroll, setPreventScroll] = useState(false)
- const [showVerticalScrollbar, setShowVerticalScrollbar] = useState(false)
- const [showHorizontalScrollbar, setShowHorizontalScrollbar] = useState(false)
- const [showDropdownMenu, setShowDropdownMenu] = useState(false)
-
- useEffect(() => {
- setNavbarHidden(false)
- }, [pathname])
-
- const handleMenuDropdownButtonClick = () => {
- setShowDropdownMenu(!showDropdownMenu)
- }
-
- return (
- <>
-
-
-
-
-
- FatWeb
-
-
-
-
-
- {routeChildren?.map((route) => {
- return (
- -
-
- isPending ? 'pending' : isActive ? 'active' : ''
- }
- >
- {(route.handle as RouteHandle).name}
-
-
- )
- })}
-
-
-
-
-
-
-
- >
- }
- >
-
-
-
-
-
- >
- )
-}
-
-export default HomeFramework
diff --git a/src/pages/Sign.tsx b/src/pages/Sign.tsx
index ffdd5c2..131afbf 100644
--- a/src/pages/Sign.tsx
+++ b/src/pages/Sign.tsx
@@ -142,7 +142,7 @@ const SignUp: React.FC = () => {
]}
>
}
+ prefix={}
placeholder={'用户名'}
maxLength={39}
showCount={true}
@@ -158,7 +158,7 @@ const SignUp: React.FC = () => {
>
}
+ prefix={}
placeholder={'邮箱'}
disabled={isSigningUp}
/>
@@ -172,7 +172,7 @@ const SignUp: React.FC = () => {
]}
>
}
+ prefix={}
placeholder={'密码'}
disabled={isSigningUp}
/>
@@ -194,7 +194,7 @@ const SignUp: React.FC = () => {
]}
>
}
+ prefix={}
placeholder={'确认密码'}
disabled={isSigningUp}
/>
@@ -531,7 +531,7 @@ const Forget: React.FC = () => {
]}
>
}
+ prefix={}
placeholder={'邮箱'}
disabled={isSending}
/>
@@ -724,7 +724,7 @@ const SignIn: React.FC = () => {
rules={[{ required: true, message: '请输入账号' }]}
>
}
+ prefix={}
placeholder={'邮箱/用户名'}
disabled={isSigningIn}
/>
@@ -734,7 +734,7 @@ const SignIn: React.FC = () => {
rules={[{ required: true, message: '请输入密码' }]}
>
}
+ prefix={}
placeholder={'密码'}
disabled={isSigningIn}
/>
diff --git a/src/pages/UserFramework.tsx b/src/pages/UserFramework.tsx
index 5d84b56..a29c6b4 100644
--- a/src/pages/UserFramework.tsx
+++ b/src/pages/UserFramework.tsx
@@ -20,15 +20,11 @@ const ToolsFramework: React.FC = () => {
{hasPathPermission('/system') ? (
) : undefined}
-
+
}
>
diff --git a/src/pages/home/index.tsx b/src/pages/home/index.tsx
deleted file mode 100644
index 5e6a323..0000000
--- a/src/pages/home/index.tsx
+++ /dev/null
@@ -1,174 +0,0 @@
-import React from 'react'
-import '@/assets/css/components/home/home.scss'
-import { HomeFrameworkContext } from '@/pages/HomeFramework'
-import FitFullscreen from '@/components/common/FitFullscreen'
-import Slogan from '@/components/home/Slogan'
-import OxygenToolbox from '@/components/home/OxygenToolbox'
-import Indicator from '@/components/common/Indicator'
-import Footer from '@/components/home/Footer'
-
-const Home: React.FC = () => {
- const {
- hideScrollbarRef,
- navbarHiddenState: { navbarHidden, setNavbarHidden },
- showDropdownMenuState: { setShowDropdownMenu },
- preventScrollState: { setPreventScroll }
- } = useContext(HomeFrameworkContext)
-
- const fitFullScreenRef = useRef(null)
- const scrollTimeout = useRef(0)
- const clickStart = useRef(0)
-
- const [currentContent, setCurrentContent] = useState(0)
-
- useEffect(() => {
- setTimeout(() => {
- setNavbarHidden(true)
- setPreventScroll(true)
- })
- }, [setNavbarHidden, setPreventScroll])
-
- useLayoutEffect(() => {
- const handleWindowResize = () => {
- handleScrollToContent(currentContent)()
- }
- window.addEventListener('resize', handleWindowResize)
- return () => window.removeEventListener('resize', handleWindowResize)
- })
-
- const handleScrollToContent = (index: number) => {
- return () => {
- setShowDropdownMenu(false)
- if (!index) {
- setNavbarHidden(true)
- hideScrollbarRef.current?.scrollY(0)
- } else {
- hideScrollbarRef.current?.scrollY(
- (fitFullScreenRef.current?.offsetHeight ?? 0) * index
- )
- setNavbarHidden(false)
- }
- }
- }
-
- const handleScrollUp = () => {
- if (currentContent <= 0) {
- return
- }
- handleScrollToContent(currentContent - 1)()
- clearTimeout(scrollTimeout.current)
- scrollTimeout.current = setTimeout(() => {
- setCurrentContent(currentContent - 1)
- }, 500)
- }
-
- const handleScrollDown = () => {
- if (currentContent >= content.length - 1) {
- return
- }
- handleScrollToContent(currentContent + 1)()
- clearTimeout(scrollTimeout.current)
- scrollTimeout.current = setTimeout(() => {
- setCurrentContent(currentContent + 1)
- }, 500)
- }
-
- const handleWheel = (event: React.WheelEvent) => {
- if (event.altKey || event.ctrlKey || event.shiftKey || event.deltaY === 0) {
- return
- }
-
- if (event.deltaY > 0) {
- handleScrollDown()
- } else {
- handleScrollUp()
- }
- }
-
- const handleTouchStart = (event: React.TouchEvent) => {
- clickStart.current = event.touches[0].clientY
- }
-
- const handleTouchEnd = (event: React.TouchEvent) => {
- const moveLength = clickStart.current - event.changedTouches[0].clientY
- if (Math.abs(moveLength) < 100) {
- return
- }
-
- if (moveLength > 0) {
- handleScrollDown()
- } else {
- handleScrollUp()
- }
- }
-
- const handleMouseDown = (event: React.MouseEvent) => {
- clickStart.current = event.clientY
- }
-
- const handleMouseUp = (event: React.MouseEvent) => {
- const moveLength = clickStart.current - event.clientY
- if (Math.abs(moveLength) < 100) {
- return
- }
-
- if (moveLength > 0) {
- handleScrollDown()
- } else {
- handleScrollUp()
- }
- }
-
- const handleKeyDown = (event: React.KeyboardEvent) => {
- if (event.key === 'ArrowUp') {
- handleScrollUp()
- }
- if (event.key === 'ArrowDown') {
- handleScrollDown()
- }
- }
-
- const handleIndicatorSwitch = (index: number) => {
- setCurrentContent(index)
- handleScrollToContent(index)()
- }
-
- const content = [
- {
- backgroundColor: '#FBFBFB',
- ref: fitFullScreenRef,
- children:
- },
- { children: },
- { children: }
- ]
-
- return (
- <>
-
- {content.map((element, index) => {
- return
- })}
-
-
-
-
-
- >
- )
-}
-
-export default Home
diff --git a/src/pages/system/Group.tsx b/src/pages/system/Group.tsx
index d83ed33..309565f 100644
--- a/src/pages/system/Group.tsx
+++ b/src/pages/system/Group.tsx
@@ -503,7 +503,7 @@ const Group: React.FC = () => {
style={{ padding: '4px 8px' }}
onClick={handleOnAddBtnClick}
>
-
+
@@ -512,7 +512,7 @@ const Group: React.FC = () => {
style={{ overflow: 'inherit', flex: '0 0 auto' }}
>
-
+
@@ -577,7 +577,7 @@ const Group: React.FC = () => {
-
+
diff --git a/src/pages/system/Role.tsx b/src/pages/system/Role.tsx
index bfe58b0..4e2a400 100644
--- a/src/pages/system/Role.tsx
+++ b/src/pages/system/Role.tsx
@@ -512,7 +512,7 @@ const Role: React.FC = () => {
style={{ padding: '4px 8px' }}
onClick={handleOnAddBtnClick}
>
-
+
@@ -521,7 +521,7 @@ const Role: React.FC = () => {
style={{ overflow: 'inherit', flex: '0 0 auto' }}
>
-
+
@@ -586,7 +586,7 @@ const Role: React.FC = () => {
-
+
diff --git a/src/pages/system/Settings.tsx b/src/pages/system/Settings.tsx
index 9fe36d6..f78bc9c 100644
--- a/src/pages/system/Settings.tsx
+++ b/src/pages/system/Settings.tsx
@@ -37,10 +37,10 @@ const SettingsCard: React.FC = (props) => {
{props.expand}
-
+
-
+
) : undefined}
@@ -145,7 +145,7 @@ const MailSettings: React.FC = () => {
return (
<>
{
modifyOperationCode={'system:settings:modify:mail'}
expand={
-
+
}
>
@@ -238,7 +238,7 @@ const BaseSettings: React.FC = () => {
return (
<>
{
return (
@@ -298,7 +298,7 @@ const OnlineInfo: React.FC = () => {
全部
-
+
>
}
@@ -452,7 +452,7 @@ const ActiveInfo: React.FC = () => {
return (
@@ -479,7 +479,7 @@ const ActiveInfo: React.FC = () => {
全部
-
+
>
}
@@ -507,7 +507,7 @@ const SoftwareInfo: React.FC = () => {
return (
@@ -569,7 +569,7 @@ const HardwareInfo: React.FC = () => {
return (
@@ -745,7 +745,7 @@ const CPUInfo: React.FC = () => {
return (
<>
{
return (
<>
{
}}
+ preview={{ mask: }}
src={`data:image/png;base64,${value}`}
alt={'Avatar'}
/>
@@ -333,7 +333,7 @@ const User: React.FC = () => {
<>
修改用户 {value.username} 的密码
>
@@ -913,7 +913,7 @@ const User: React.FC = () => {
style={{ padding: '4px 8px' }}
onClick={handleOnAddBtnClick}
>
-
+
@@ -922,7 +922,7 @@ const User: React.FC = () => {
style={{ overflow: 'inherit', flex: '0 0 auto' }}
>
-
+
@@ -992,7 +992,7 @@ const User: React.FC = () => {
-
+
diff --git a/src/pages/system/index.tsx b/src/pages/system/index.tsx
index bf1f129..aa30561 100644
--- a/src/pages/system/index.tsx
+++ b/src/pages/system/index.tsx
@@ -66,32 +66,32 @@ const System: React.FC = () => {
-
+
系统概况
-
+
系统设置
-
+
用户管理
-
+
角色管理
-
+
群组管理
-
+
系统日志
diff --git a/src/router/home.tsx b/src/router/home.tsx
deleted file mode 100644
index 228bbaa..0000000
--- a/src/router/home.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import React from 'react'
-
-const home: RouteJsonObject[] = [
- {
- path: '',
- absolutePath: '/',
- id: 'home',
- component: React.lazy(() => import('@/pages/home')),
- name: '主页',
- menu: true,
- auth: false
- },
- {
- path: 'https://blog.fatweb.top',
- absolutePath: 'https://blog.fatweb.top',
- id: 'url-blog',
- name: '博客',
- menu: true
- },
- {
- path: '/tools',
- absolutePath: '/tools',
- id: 'url-tools',
- name: '工具',
- menu: true,
- children: [
- {
- path: 'translation',
- absolutePath: '/tools/translation',
- id: 'url-tools-translation',
- name: '翻译',
- menu: true
- }
- ]
- }
-]
-
-export default home
diff --git a/src/router/index.tsx b/src/router/index.tsx
index be7068b..84716ac 100644
--- a/src/router/index.tsx
+++ b/src/router/index.tsx
@@ -1,7 +1,6 @@
import React from 'react'
import _ from 'lodash'
import system from '@/router/system'
-import home from '@/router/home'
import user from '@/router/user'
import tools from '@/router/tools'
import { getAuthRoute, mapJsonToRoute, setTitle } from '@/util/route'
@@ -44,15 +43,6 @@ const root: RouteJsonObject[] = [
id: 'loading',
component: React.lazy(() => import('@/components/common/FullscreenLoadingMask'))
},
- {
- path: 'tools',
- absolutePath: '/tools',
- id: 'toolsFramework',
- component: React.lazy(() => import('@/pages/ToolsFramework')),
- children: setTitle(tools, '氧工具'),
- name: '工具',
- auth: false
- },
{
path: 'user',
absolutePath: '/user',
@@ -75,9 +65,11 @@ const root: RouteJsonObject[] = [
{
path: '',
absolutePath: '/',
- id: 'homeFramework',
- component: React.lazy(() => import('@/pages/HomeFramework')),
- children: home
+ id: 'toolsFramework',
+ component: React.lazy(() => import('@/pages/ToolsFramework')),
+ children: setTitle(tools, '氧工具'),
+ name: '工具',
+ auth: false
},
{
path: '*',
diff --git a/src/router/system.tsx b/src/router/system.tsx
index e36d154..9dcade6 100644
--- a/src/router/system.tsx
+++ b/src/router/system.tsx
@@ -8,7 +8,7 @@ const system: RouteJsonObject[] = [
id: 'system',
component: React.lazy(() => import('@/pages/system')),
name: '系统管理',
- icon: React.lazy(() => import('~icons/fatweb/setting.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/setting.jsx')),
menu: true
},
{
@@ -17,7 +17,7 @@ const system: RouteJsonObject[] = [
id: 'system-statistics',
component: React.lazy(() => import('@/pages/system/Statistics')),
name: '系统概况',
- icon: React.lazy(() => import('~icons/fatweb/chart.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/chart.jsx')),
menu: true,
autoHide: true
},
@@ -27,7 +27,7 @@ const system: RouteJsonObject[] = [
id: 'system-settings',
component: React.lazy(() => import('@/pages/system/Settings')),
name: '系统设置',
- icon: React.lazy(() => import('~icons/fatweb/option.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/option.jsx')),
menu: true,
autoHide: true
},
@@ -37,7 +37,7 @@ const system: RouteJsonObject[] = [
id: 'system-user',
component: React.lazy(() => import('@/pages/system/User')),
name: '用户管理',
- icon: React.lazy(() => import('~icons/fatweb/user.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/user.jsx')),
menu: true,
autoHide: true
},
@@ -47,7 +47,7 @@ const system: RouteJsonObject[] = [
id: 'system-role',
component: React.lazy(() => import('@/pages/system/Role')),
name: '角色管理',
- icon: React.lazy(() => import('~icons/fatweb/role.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/role.jsx')),
menu: true,
autoHide: true
},
@@ -57,7 +57,7 @@ const system: RouteJsonObject[] = [
id: 'system-group',
component: React.lazy(() => import('@/pages/system/Group')),
name: '群组管理',
- icon: React.lazy(() => import('~icons/fatweb/group.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/group.jsx')),
menu: true,
autoHide: true
},
@@ -67,7 +67,7 @@ const system: RouteJsonObject[] = [
id: 'system-log',
component: React.lazy(() => import('@/pages/system/Log')),
name: '系统日志',
- icon: React.lazy(() => import('~icons/fatweb/log.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/log.jsx')),
menu: true,
autoHide: true
},
diff --git a/src/router/tools.tsx b/src/router/tools.tsx
index d3dbfe3..8f1e01b 100644
--- a/src/router/tools.tsx
+++ b/src/router/tools.tsx
@@ -3,47 +3,47 @@ import React from 'react'
export const tools: RouteJsonObject[] = [
{
path: '',
- absolutePath: '/tools',
+ absolutePath: '/',
id: 'tools',
component: React.lazy(() => import('@/pages/tools')),
name: '主页',
- icon: React.lazy(() => import('~icons/fatweb/home.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/home.jsx')),
menu: true,
auth: false
},
{
path: 'all',
- absolutePath: '/tools/all',
+ absolutePath: '/all',
id: 'tools-all',
component: React.lazy(() => import('@/pages/tools')),
name: '全部工具',
titlePostfix: ' - 全部工具',
- icon: React.lazy(() => import('~icons/fatweb/tool.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/tool.jsx')),
menu: true,
auth: false
},
{
path: 'translation',
- absolutePath: '/tools/translation',
+ absolutePath: '/translation',
id: 'tools-translation',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false,
children: [
{
path: '1',
- absolutePath: '/tools/translation/1',
+ absolutePath: '/translation/1',
id: '1',
name: '翻译1',
- icon: React.lazy(() => import('~icons/fatweb/logo.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/logo.jsx')),
menu: true,
auth: false
},
{
path: '2',
- absolutePath: '/tools/translation/2',
+ absolutePath: '/translation/2',
id: '2',
name: '翻译2',
menu: true,
@@ -53,17 +53,17 @@ export const tools: RouteJsonObject[] = [
},
{
path: 'translation-',
- absolutePath: '/tools/translation-',
+ absolutePath: '/translation-',
id: 'tools-translation-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false,
children: [
{
path: '1-',
- absolutePath: '/tools/translation-/1-',
+ absolutePath: '/translation-/1-',
id: '1-',
name: '翻译1-',
menu: true,
@@ -71,7 +71,7 @@ export const tools: RouteJsonObject[] = [
},
{
path: '2-',
- absolutePath: '/tools/translation-/2-',
+ absolutePath: '/translation-/2-',
id: '2-',
name: '翻译2-',
menu: true,
@@ -81,217 +81,217 @@ export const tools: RouteJsonObject[] = [
},
{
path: 'translation--',
- absolutePath: '/tools/translation--',
+ absolutePath: '/translation--',
id: 'tools-translation--',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--1',
- absolutePath: '/tools/translation--1',
+ absolutePath: '/translation--1',
id: 'tools-translation--1',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--1',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--2',
- absolutePath: '/tools/translation--2',
+ absolutePath: '/translation--2',
id: 'tools-translation--2',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--2',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--3',
- absolutePath: '/tools/translation--3',
+ absolutePath: '/translation--3',
id: 'tools-translation--3',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--3',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--4',
- absolutePath: '/tools/translation--4',
+ absolutePath: '/translation--4',
id: 'tools-translation--4',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--4',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--5',
- absolutePath: '/tools/translation--5',
+ absolutePath: '/translation--5',
id: 'tools-translation--5',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--5',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--6',
- absolutePath: '/tools/translation--6',
+ absolutePath: '/translation--6',
id: 'tools-translation--6',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--6',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--7',
- absolutePath: '/tools/translation--7',
+ absolutePath: '/translation--7',
id: 'tools-translation--7',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--7',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--8',
- absolutePath: '/tools/translation--8',
+ absolutePath: '/translation--8',
id: 'tools-translation--8',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--8',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--9',
- absolutePath: '/tools/translation--9',
+ absolutePath: '/translation--9',
id: 'tools-translation--9',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--9',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--10',
- absolutePath: '/tools/translation--10',
+ absolutePath: '/translation--10',
id: 'tools-translation--10',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--10',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--1-',
- absolutePath: '/tools/translation--1-',
+ absolutePath: '/translation--1-',
id: 'tools-translation--1-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--1-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--2-',
- absolutePath: '/tools/translation--2-',
+ absolutePath: '/translation--2-',
id: 'tools-translation--2-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--2-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--3-',
- absolutePath: '/tools/translation--3-',
+ absolutePath: '/translation--3-',
id: 'tools-translation--3-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--3-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--4-',
- absolutePath: '/tools/translation--4-',
+ absolutePath: '/translation--4-',
id: 'tools-translation--4-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--4-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--5-',
- absolutePath: '/tools/translation--5-',
+ absolutePath: '/translation--5-',
id: 'tools-translation--5-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--5-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--6-',
- absolutePath: '/tools/translation--6-',
+ absolutePath: '/translation--6-',
id: 'tools-translation--6-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--6-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--7-',
- absolutePath: '/tools/translation--7-',
+ absolutePath: '/translation--7-',
id: 'tools-translation--7-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--7-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--8-',
- absolutePath: '/tools/translation--8-',
+ absolutePath: '/translation--8-',
id: 'tools-translation--8-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--8-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--9-',
- absolutePath: '/tools/translation--9-',
+ absolutePath: '/translation--9-',
id: 'tools-translation--9-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--9-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false
},
{
path: 'translation--10-',
- absolutePath: '/tools/translation--10-',
+ absolutePath: '/translation--10-',
id: 'tools-translation--10-',
component: React.lazy(() => import('@/pages/tools/Translation')),
name: '翻译--10-',
- icon: React.lazy(() => import('~icons/fatweb/jenkins.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/jenkins.jsx')),
menu: true,
auth: false,
children: [
{
path: '1-1',
- absolutePath: '/tools/translation--10-/1-1',
+ absolutePath: '/translation--10-/1-1',
id: '1-1',
name: '翻译1-',
menu: true,
@@ -299,7 +299,7 @@ export const tools: RouteJsonObject[] = [
},
{
path: '2-1',
- absolutePath: '/tools/translation--10-/2-1',
+ absolutePath: '/translation--10-/2-1',
id: '2-1',
name: '翻译2-',
menu: true,
@@ -310,7 +310,7 @@ export const tools: RouteJsonObject[] = [
{
path: '*',
absolutePath: '*',
- element:
+ element:
}
]
diff --git a/src/router/user.tsx b/src/router/user.tsx
index 0d993c6..dde6c59 100644
--- a/src/router/user.tsx
+++ b/src/router/user.tsx
@@ -7,7 +7,7 @@ const user: RouteJsonObject[] = [
id: 'user',
component: React.lazy(() => import('@/pages/user')),
name: '个人档案',
- icon: React.lazy(() => import('~icons/fatweb/user.jsx')),
+ icon: React.lazy(() => import('~icons/oxygen/user.jsx')),
menu: true
},
{
diff --git a/vite.config.ts b/vite.config.ts
index f95c0f6..5981025 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -49,7 +49,7 @@ export default defineConfig({
IconsResolver({
prefix: 'icon',
extension: 'jsx',
- customCollections: ['fatweb']
+ customCollections: ['oxygen']
}),
AntDesignResolver({
resolveIcons: true
@@ -69,7 +69,7 @@ export default defineConfig({
jsx: 'react',
autoInstall: true,
customCollections: {
- fatweb: FileSystemIconLoader('src/assets/svg', (svg) =>
+ oxygen: FileSystemIconLoader('src/assets/svg', (svg) =>
svg.replace(/^svg /, '