feat:global_tenant

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

@ -2,31 +2,42 @@ import request from '@/utils';
import { useContext, useEffect } from 'react';
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', {
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 }) => {
const updataTenant = async (formData: {
id: number;
tenantId: string;
tenantName: string;
tenantDesc: string;
owner: string;
// gmtCreate: Data;
// gmtModified: Data;
}) => {
return await request('/tenant/update', {
method: 'POST',
params: {
...formData,
},
}).catch(err => {
console.log('租户列表获取出错:', err);
});
})
.then((response: any) => {
useEffect(() => {
const { setTenantInfo } = useContext<any>(MyContext);
setTenantInfo(response.data.records);
});
})
.catch(err => {
console.log('租户列表获取出错:', err);
});
};
export { getTenantList, updataTenant };

@ -1,16 +1,20 @@
import React, { useContext } from 'react';
import React, { useContext, useEffect, useState } from 'react';
import style from './index.module.less';
import { UserOutlined } from '@ant-design/icons';
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 { MyContext } from '@/context';
import IconFont from '@/components/icon';
import { useSetState } from 'ahooks';
import { useTran } from '../../hooks';
import { resolve } from 'path';
const HeaderChild = () => {
const { isDark, setIsDark } = useThemeMode();
const { lang, setLang } = useContext<any>(MyContext);
const { setTenantInfo } = useContext<any>(MyContext);
const { tenantInfo, setTenantInfo } = useContext<any>(MyContext);
const items = [
{
@ -39,35 +43,56 @@ const HeaderChild = () => {
},
];
const tenantList = [
let tenantTitle = useTran(STR_MAP.CHANGE_TENANT);
let tenantList = [
{
value: 'option1',
key: 1,
id: undefined,
tenantId: '',
tenantName: '',
owner: '',
tenantDesc: '',
gmtCreate: '2023-09-20 11:08:37',
gmtModified: '2023-09-20 21:34:40',
id: 8,
owner: 'test',
tenantDesc: 'test',
tenantId: 'test',
tenantName: 'test1',
},
{
value: 'option2',
key: 2,
id: undefined,
tenantId: '',
tenantName: '',
owner: '',
tenantDesc: '',
gmtCreate: '2023-09-20 11:08:37',
gmtModified: '2023-09-20 21:34:40',
id: 8,
owner: 'abc',
tenantDesc: 'abc',
tenantId: 'tesabct',
tenantName: 'abc',
},
];
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) => {
console.log('tenantList', resolve);
// this.tenantList = resolve;
});
useEffect(() => {
let formData = {
current: 1,
desc: true,
size: 10,
tenantId: '',
};
getTenantList(formData).then((resolve: any) => {
console.log('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 (
<div className={style['header-wrapper']}>
@ -79,10 +104,10 @@ const HeaderChild = () => {
<Col>
<Space wrap>
<Select
defaultValue={tenantList[0].value}
defaultValue={tenantList[0].tenantName}
style={{ width: 120 }}
onChange={handleTenantChange}
options={tenantList.map(tenant => ({ label: tenant.value, value: tenant.value }))}
options={tenantList.map(tenant => ({ label: tenant.tenantName, value: tenant.tenantName }))}
/>
</Space>
</Col>

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

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

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