refactor: 用户管理重构优化

This commit is contained in:
2024-10-26 16:47:07 +08:00
parent b064c4cb87
commit 0283e018de
19 changed files with 1390 additions and 1248 deletions

View File

@@ -1,101 +1,103 @@
import './style/global.less';
import React, { useEffect } from 'react';
import React, {useEffect} from 'react';
import ReactDOM from 'react-dom';
import { ConfigProvider } from '@arco-design/web-react';
import {ConfigProvider} from '@arco-design/web-react';
import zhCN from '@arco-design/web-react/es/locale/zh-CN';
import enUS from '@arco-design/web-react/es/locale/en-US';
import { BrowserRouter, Switch, Route } from 'react-router-dom';
import {BrowserRouter, Switch, Route} from 'react-router-dom';
import PageLayout from './layout';
import { GlobalContext } from './context';
import {GlobalContext} from './context';
import Login from './pages/login';
import checkLogin from './utils/checkLogin';
import changeTheme from './utils/changeTheme';
import useStorage from './utils/useStorage';
import { QueryClientProvider, QueryClient } from 'react-query';
import { useStore } from '@/store';
import {QueryClientProvider, QueryClient} from 'react-query';
import {useStore} from '@/store';
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: 0
}
}
defaultOptions: {
queries: {
retry: 0,
refetchOnWindowFocus: false,
keepPreviousData: true
},
}
});
function Index() {
const [lang, setLang] = useStorage('arco-lang', 'zh-CN');
const [theme, setTheme] = useStorage('arco-theme', 'light');
const { fetchUserInfo, init } = useStore();
const [lang, setLang] = useStorage('arco-lang', 'zh-CN');
const [theme, setTheme] = useStorage('arco-theme', 'light');
const {fetchUserInfo, init} = useStore();
function getArcoLocale() {
switch (lang) {
case 'zh-CN':
return zhCN;
case 'en-US':
return enUS;
default:
return zhCN;
}
}
function getArcoLocale() {
switch (lang) {
case 'zh-CN':
return zhCN;
case 'en-US':
return enUS;
default:
return zhCN;
}
}
useEffect(() => {
init();
if (checkLogin()) {
fetchUserInfo();
} else if (window.location.pathname.replace(/\//g, '') !== 'login') {
window.location.pathname = '/login';
}
}, []);
useEffect(() => {
init();
if (checkLogin()) {
fetchUserInfo();
} else if (window.location.pathname.replace(/\//g, '') !== 'login') {
window.location.pathname = '/login';
}
}, []);
useEffect(() => {
changeTheme(theme);
}, [theme]);
useEffect(() => {
changeTheme(theme);
}, [theme]);
const contextValue = {
lang,
setLang,
theme,
setTheme
};
const contextValue = {
lang,
setLang,
theme,
setTheme
};
return (
<BrowserRouter>
<ConfigProvider
locale={getArcoLocale()}
componentConfig={{
Card: {
bordered: false
},
List: {
bordered: false
},
Table: {
border: { headerCell: true, bodyCell: true, wrapper: true }
},
Form: {
labelCol: { span: 5 },
wrapperCol: { span: 18 },
},
Modal: {
style: { width: '550px' },
autoFocus: false,
focusLock: false,
escToExit:false
}
}}
>
<GlobalContext.Provider value={contextValue}>
<Switch>
<Route path="/login" component={Login} />
<QueryClientProvider client={queryClient}>
<Route path="/" component={PageLayout} />
</QueryClientProvider>
</Switch>
</GlobalContext.Provider>
</ConfigProvider>
</BrowserRouter>
);
return (
<BrowserRouter>
<ConfigProvider
locale={getArcoLocale()}
componentConfig={{
Card: {
bordered: false
},
List: {
bordered: false
},
Table: {
border: {wrapper: true}
},
Form: {
labelCol: {span: 5},
wrapperCol: {span: 18},
},
Modal: {
style: {width: '550px'},
autoFocus: false,
focusLock: false,
escToExit: false
}
}}
>
<GlobalContext.Provider value={contextValue}>
<Switch>
<Route path="/login" component={Login}/>
<QueryClientProvider client={queryClient}>
<Route path="/" component={PageLayout}/>
</QueryClientProvider>
</Switch>
</GlobalContext.Provider>
</ConfigProvider>
</BrowserRouter>
);
}
ReactDOM.render(<Index />, document.getElementById('root'));
ReactDOM.render(<Index/>, document.getElementById('root'));