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 style from './index.module.less';
import { UserOutlined } from '@ant-design/icons';
import { Avatar, Button, Col, Dropdown, Row, Switch } from 'antd';
import { useThemeMode } from '@/hooks';
import { Avatar, Button, Col, Dropdown, Row, Switch, Select, Space } from 'antd';
import { getTenantList } from '../../api/tenant';
import { useThemeMode } from '@/hooks/useThemeMode';
import { MyContext } from '@/context';
import IconFont from '@/components/icon';
const HeaderChild = () => {
const { isDark, setIsDark } = useThemeMode();
const { lang, setLang } = useContext<any>(MyContext);
const { setTenantInfo } = useContext<any>(MyContext);
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 (
<div className={style['header-wrapper']}>
<div className={style['logo']}>
@ -44,7 +76,16 @@ const HeaderChild = () => {
</div>
<div className={style['edit-container']}>
<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>
<Dropdown menu={{ items }} placement="bottomRight" trigger={['click']}>
<Avatar size={30} icon={<UserOutlined />} style={{ cursor: 'pointer' }} />

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

Loading…
Cancel
Save