feat:global_tenant

pull/1474/head
吹泡泡的团子 2 years ago
parent 16ac82c9c2
commit 08ff4cad22

@ -2,29 +2,40 @@ import request from '@/utils';
import { useContext, useEffect } from 'react'; import { useContext, useEffect } from 'react';
import { MyContext } from '@/context'; import { MyContext } from '@/context';
const getTenantList = async () => { const getTenantList = async (formData: { current: number; desc: boolean; size: number; tenantId: string }) => {
return await request('/tenant/query/page', { return await request('/tenant/query/page', {
method: 'POST', method: 'POST',
}) })
.then(response => { .then(response => {
console.log('租户列表返回', response); console.log('租户列表返回', response);
const { setTenantInfo } = useContext<any>(MyContext);
useEffect(() => {
setTenantInfo(response.data);
});
}) })
.catch(err => { .catch(err => {
console.log('租户列表获取出错:', err); console.log('租户列表获取出错:', err);
}); });
}; };
const updataTenant = async (formData: { size: number }) => { const updataTenant = async (formData: {
id: number;
tenantId: string;
tenantName: string;
tenantDesc: string;
owner: string;
// gmtCreate: Data;
// gmtModified: Data;
}) => {
return await request('/tenant/update', { return await request('/tenant/update', {
method: 'POST', method: 'POST',
params: { params: {
...formData, ...formData,
}, },
}).catch(err => { })
.then((response: any) => {
useEffect(() => {
const { setTenantInfo } = useContext<any>(MyContext);
setTenantInfo(response.data.records);
});
})
.catch(err => {
console.log('租户列表获取出错:', err); console.log('租户列表获取出错:', err);
}); });
}; };

@ -1,16 +1,20 @@
import React, { useContext } from 'react'; import React, { useContext, useEffect, useState } 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, Select, Space } from 'antd'; import { Avatar, Button, Col, Dropdown, Row, Switch, Select, Space } from 'antd';
import { getTenantList } from '../../api/tenant'; import { getTenantList, updataTenant } from '../../api/tenant';
import { STR_MAP } from '../../config/i18n/locales/constants';
import { useThemeMode } from '@/hooks/useThemeMode'; import { useThemeMode } from '@/hooks/useThemeMode';
import { MyContext } from '@/context'; import { MyContext } from '@/context';
import IconFont from '@/components/icon'; import IconFont from '@/components/icon';
import { useSetState } from 'ahooks';
import { useTran } from '../../hooks';
import { resolve } from 'path';
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 { tenantInfo, setTenantInfo } = useContext<any>(MyContext);
const items = [ const items = [
{ {
@ -39,35 +43,56 @@ const HeaderChild = () => {
}, },
]; ];
const tenantList = [ let tenantTitle = useTran(STR_MAP.CHANGE_TENANT);
let tenantList = [
{ {
value: 'option1', gmtCreate: '2023-09-20 11:08:37',
key: 1, gmtModified: '2023-09-20 21:34:40',
id: undefined, id: 8,
tenantId: '', owner: 'test',
tenantName: '', tenantDesc: 'test',
owner: '', tenantId: 'test',
tenantDesc: '', tenantName: 'test1',
}, },
{ {
value: 'option2', gmtCreate: '2023-09-20 11:08:37',
key: 2, gmtModified: '2023-09-20 21:34:40',
id: undefined, id: 8,
tenantId: '', owner: 'abc',
tenantName: '', tenantDesc: 'abc',
owner: '', tenantId: 'tesabct',
tenantDesc: '', tenantName: 'abc',
}, },
]; ];
const handleTenantChange = (value: string) => { const handleTenantChange = (value: string) => {
setTenantInfo(tenantList[0]); let formData = {
id: tenantInfo.id,
tenantId: tenantInfo.tenantId,
tenantName: value,
tenantDesc: tenantInfo.tenantDesc,
owner: tenantInfo.owner,
};
updataTenant(formData).then((resolve: any) => {
console.log('tenantList', resolve);
setTenantInfo(formData);
});
}; };
getTenantList().then((resolve: any) => { useEffect(() => {
let formData = {
current: 1,
desc: true,
size: 10,
tenantId: '',
};
getTenantList(formData).then((resolve: any) => {
console.log('tenantList', resolve); console.log('tenantList', resolve);
// this.tenantList = resolve; // eslint-disable-next-line react-hooks/exhaustive-deps, react-hooks/rules-of-hooks
tenantList = useSetState(resolve.records);
}); });
console.log('use effect');
}, [setTenantInfo, tenantList]);
return ( return (
<div className={style['header-wrapper']}> <div className={style['header-wrapper']}>
@ -79,10 +104,10 @@ const HeaderChild = () => {
<Col> <Col>
<Space wrap> <Space wrap>
<Select <Select
defaultValue={tenantList[0].value} defaultValue={tenantList[0].tenantName}
style={{ width: 120 }} style={{ width: 120 }}
onChange={handleTenantChange} onChange={handleTenantChange}
options={tenantList.map(tenant => ({ label: tenant.value, value: tenant.value }))} options={tenantList.map(tenant => ({ label: tenant.tenantName, value: tenant.tenantName }))}
/> />
</Space> </Space>
</Col> </Col>

@ -17,4 +17,5 @@ export enum STR_MAP {
CREATION_TIME = 'creationTime', CREATION_TIME = 'creationTime',
UPDATE_TIME = 'update time', UPDATE_TIME = 'update time',
EDIT = 'edit', EDIT = 'edit',
CHANGE_TENANT = 'changeTenant',
} }

@ -19,6 +19,7 @@ const enTranslationMap: { [key: string]: string } = {
[STR_MAP.CREATION_TIME]: 'creation time', [STR_MAP.CREATION_TIME]: 'creation time',
[STR_MAP.UPDATE_TIME]: 'update time', [STR_MAP.UPDATE_TIME]: 'update time',
[STR_MAP.EDIT]: 'edit', [STR_MAP.EDIT]: 'edit',
[STR_MAP.CHANGE_TENANT]: 'Select Tenant',
}; };
export default enTranslationMap; export default enTranslationMap;

@ -19,6 +19,7 @@ const zhTranslationMap: { [key: string]: string } = {
[STR_MAP.CREATION_TIME]: '创建时间', [STR_MAP.CREATION_TIME]: '创建时间',
[STR_MAP.UPDATE_TIME]: '更新时间', [STR_MAP.UPDATE_TIME]: '更新时间',
[STR_MAP.EDIT]: '操作', [STR_MAP.EDIT]: '操作',
[STR_MAP.CHANGE_TENANT]: '选择租户',
}; };
export default zhTranslationMap; export default zhTranslationMap;

@ -1,84 +0,0 @@
import { Form, Input, Button } from 'antd';
import React, { useContext } from 'react';
import { getLogin } from './service';
import { MyContext } from '@/context';
const Login = (props: any) => {
const { setUserInfo } = useContext<any>(MyContext);
const data = {
passwordType: 'password',
capsTooltip: false,
loading: false,
showDialog: false,
redirect: undefined,
otherQuery: {},
loginForm: {
username: '',
password: '',
rememberMe: 1,
},
// loginRules: {
// // username: [{ required: true, trigger: 'blur', validator: validateUsername }],
// // password: [{ required: true, trigger: 'blur', validator: this.validatePassword }],
// },
};
const validatePassword = (_: any, value: any) => {
if (value.length < 6) {
return Promise.reject(new Error('The password can not be less than 6 digits'));
} else if (value.length > 72) {
return Promise.reject(new Error('The password can not be greater than 72 digits'));
}
return Promise.resolve();
};
const [form] = Form.useForm();
const onFinish = () => {
data.loginForm.username = form.getFieldValue('username');
data.loginForm.password = form.getFieldValue('password');
data.loginForm.rememberMe = 1;
data.loading = true;
getLogin(data.loginForm)
.then((resolve: any) => {
console.log(resolve);
setUserInfo(data.loginForm);
//登录成功后将当前登录用户写入cookie
// this.$cookie.set('userName', this.loginForm.username);
// console.log('success submit.');
// this.$router.push({ path: this.redirect || '/', query: this.otherQuery });
data.loading = false;
})
.catch((e: any) => {
console.log('login error.', e);
data.loading = false;
});
};
return (
<div className="login-container">
<Form name="loginForm" form={form} onFinish={onFinish} style={{ maxWidth: 600 }}>
<div className="title-container">
<h3 className="title"></h3>
{/* <h3 className="title">{{ $t('system.login') }}</h3> */}
</div>
<Form.Item name="username" label="用户名" rules={[{ required: true, message: 'Username is required' }]}>
<Input placeholder="用户名" />
</Form.Item>
<Form.Item
name="password"
label="密码"
rules={[{ validator: validatePassword }, { required: true, message: 'Street is required' }]}
>
<Input placeholder="密码" />
</Form.Item>
<Form.Item name="submit">
<Button type="primary" htmlType="submit" className="login-button">
</Button>
</Form.Item>
</Form>
</div>
);
};
export default Login;
Loading…
Cancel
Save