feat:global-tenant

pull/1474/head
吹泡泡的团子 2 years ago
parent 189bd5b45a
commit 91de5f4986

@ -0,0 +1,32 @@
import request from '@/utils';
import { useContext, useEffect } from 'react';
import { MyContext } from '@/context';
const getTenantList = async () => {
return await request('/tenant/query/page', {
method: 'POST',
})
.then(response => {
console.log('租户列表返回', response);
const { setTenantInfo } = useContext<any>(MyContext);
useEffect(() => {
setTenantInfo(response.data);
});
})
.catch(err => {
console.log('租户列表获取出错:', err);
});
};
const updataTenant = async (formData: { size: number }) => {
return await request('/tenant/update', {
method: 'POST',
params: {
...formData,
},
}).catch(err => {
console.log('租户列表获取出错:', err);
});
};
export { getTenantList, updataTenant };

@ -1,14 +1,16 @@
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import style from './index.module.less'; import style from './index.module.less';
import { UserOutlined } from '@ant-design/icons'; import { UserOutlined } from '@ant-design/icons';
import { Avatar, Button, Col, Dropdown, Row, Switch } from 'antd'; import { Avatar, Button, Col, Dropdown, Row, Switch, Select, Space } from 'antd';
import { useThemeMode } from '@/hooks'; import { getTenantList } from '../../api/tenant';
import { useThemeMode } from '@/hooks/useThemeMode';
import { MyContext } from '@/context'; import { MyContext } from '@/context';
import IconFont from '@/components/icon'; import IconFont from '@/components/icon';
const HeaderChild = () => { const HeaderChild = () => {
const { isDark, setIsDark } = useThemeMode(); const { isDark, setIsDark } = useThemeMode();
const { lang, setLang } = useContext<any>(MyContext); const { lang, setLang } = useContext<any>(MyContext);
const { setTenantInfo } = useContext<any>(MyContext);
const items = [ const items = [
{ {
@ -37,6 +39,36 @@ const HeaderChild = () => {
}, },
]; ];
const tenantList = [
{
value: 'option1',
key: 1,
id: undefined,
tenantId: '',
tenantName: '',
owner: '',
tenantDesc: '',
},
{
value: 'option2',
key: 2,
id: undefined,
tenantId: '',
tenantName: '',
owner: '',
tenantDesc: '',
},
];
const handleTenantChange = (value: string) => {
setTenantInfo(tenantList[0]);
};
getTenantList().then((resolve: any) => {
console.log('tenantList', resolve);
// this.tenantList = resolve;
});
return ( return (
<div className={style['header-wrapper']}> <div className={style['header-wrapper']}>
<div className={style['logo']}> <div className={style['logo']}>
@ -44,7 +76,16 @@ const HeaderChild = () => {
</div> </div>
<div className={style['edit-container']}> <div className={style['edit-container']}>
<Row gutter={[16, 16]}> <Row gutter={[16, 16]}>
<Col></Col> <Col>
<Space wrap>
<Select
defaultValue={tenantList[0].value}
style={{ width: 120 }}
onChange={handleTenantChange}
options={tenantList.map(tenant => ({ label: tenant.value, value: tenant.value }))}
/>
</Space>
</Col>
<Col> <Col>
<Dropdown menu={{ items }} placement="bottomRight" trigger={['click']}> <Dropdown menu={{ items }} placement="bottomRight" trigger={['click']}>
<Avatar size={30} icon={<UserOutlined />} style={{ cursor: 'pointer' }} /> <Avatar size={30} icon={<UserOutlined />} style={{ cursor: 'pointer' }} />

@ -24,13 +24,23 @@ export type USER_INFO = {
rememberMe?: number; rememberMe?: number;
}; };
export type TENANT_INFO = {
id: undefined;
tenantId: '';
tenantName: '';
owner: '';
tenantDesc: '';
};
export const MyContext = createContext<{ export const MyContext = createContext<{
themeName: string; themeName: string;
lang: LANG_NAME; lang: LANG_NAME;
userInfo: object; userInfo: object;
tenantInfo: object;
setThemeName: (name: THEME_NAME) => void; setThemeName: (name: THEME_NAME) => void;
setLang: (lang: LANG_NAME) => void; setLang: (lang: LANG_NAME) => void;
setUserInfo: (userInfo: USER_INFO) => void; setUserInfo: (userInfo: USER_INFO) => void;
setTenantInfo: (tenantInfo: TENANT_INFO) => void;
} | null>(null); } | null>(null);
export const MyStore: React.FC<{ export const MyStore: React.FC<{
@ -43,6 +53,13 @@ export const MyStore: React.FC<{
passWord: '', passWord: '',
rememberMe: 1, rememberMe: 1,
}); });
const [tenantInfo, setTenantInfo] = useState<TENANT_INFO>({
id: undefined,
tenantId: '',
tenantName: '',
owner: '',
tenantDesc: '',
});
const [themes, setThemes] = useState(defaultAlgorithm); const [themes, setThemes] = useState(defaultAlgorithm);
const [myThemes, setMyThemes] = useState<DefaultTheme>(lightDefaultTheme); const [myThemes, setMyThemes] = useState<DefaultTheme>(lightDefaultTheme);
const { i18n } = useTranslation(); const { i18n } = useTranslation();
@ -65,6 +82,10 @@ export const MyStore: React.FC<{
setUserInfo(userInfo); setUserInfo(userInfo);
}; };
const changeTenantInfo = (tenantInfo: TENANT_INFO) => {
setTenantInfo(tenantInfo);
};
useEffect(() => { useEffect(() => {
changeMode(themeName); changeMode(themeName);
}, [themeName]); }, [themeName]);
@ -78,8 +99,14 @@ export const MyStore: React.FC<{
changeUserInfo(userInfo); changeUserInfo(userInfo);
}, [userInfo]); }, [userInfo]);
useEffect(() => {
changeTenantInfo(tenantInfo);
}, [tenantInfo]);
return ( return (
<MyContext.Provider value={{ themeName, lang, userInfo, setThemeName, setLang, setUserInfo }}> <MyContext.Provider
value={{ themeName, lang, userInfo, tenantInfo, setThemeName, setLang, setUserInfo, setTenantInfo }}
>
<ConfigProvider locale={lang === LANG_NAME.ZH ? zhCN : enUS} theme={themes}> <ConfigProvider locale={lang === LANG_NAME.ZH ? zhCN : enUS} theme={themes}>
<ThemeProvider theme={myThemes}>{children}</ThemeProvider> <ThemeProvider theme={myThemes}>{children}</ThemeProvider>
</ConfigProvider> </ConfigProvider>

Loading…
Cancel
Save