From e32ada5186e1090927301706c2d65144926d26c3 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 28 二月 2024 08:39:38 +0800
Subject: [PATCH] Merge branch 'master' of http://47.97.1.152:5880/r/zy-asrs-master
---
zy-asrs-flow/src/pages/User/Login/index.jsx | 114 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 94 insertions(+), 20 deletions(-)
diff --git a/zy-asrs-flow/src/pages/User/Login/index.jsx b/zy-asrs-flow/src/pages/User/Login/index.jsx
index f9e5ff1..de71cd0 100644
--- a/zy-asrs-flow/src/pages/User/Login/index.jsx
+++ b/zy-asrs-flow/src/pages/User/Login/index.jsx
@@ -9,16 +9,19 @@
ProFormCaptcha,
ProFormCheckbox,
ProFormText,
+ ProFormSelect
} from '@ant-design/pro-components';
-import { Button, Divider, Alert, Tabs, message, theme } from 'antd';
-import { useState } from 'react';
+import { Button, Divider, Alert, Tabs, message, theme, Form } from 'antd';
+import { useState, useEffect } from 'react';
import { FormattedMessage, history, SelectLang, useIntl, useModel, Helmet } from '@umijs/max';
import { flushSync } from 'react-dom';
import { request } from '@umijs/max';
import { setToken } from '@/utils/token-util'
import { PROJECT_NAME } from '@/config/setting'
+import Http from '@/utils/http';
-import logo from './logo.png'
+import logo from '/public/img/logo.png'
+import logoBg from '/public/login-bg.mp4'
const LoginMessage = ({ content }) => {
return (
@@ -38,11 +41,50 @@
const { initialState, setInitialState } = useModel('@@initialState');
const { token } = theme.useToken();
+ const [form] = Form.useForm();
const [loginType, setLoginType] = useState('account');
- const [userLoginState, setUserLoginState] = useState({});
const [status, setStatus] = useState(200);
+ const [rememberMe, setRememberMe] = useState(() => {
+ const storedValue = localStorage.getItem('rememberMe');
+ return storedValue !== null ? JSON.parse(storedValue) : true;
+ });
+ const [rememberData, setRememberData] = useState(() => {
+ const storedValue = localStorage.getItem('rememberData');
+ return storedValue !== null ? JSON.parse(storedValue) : true;
+ });
+ const [hostList, setHostList] = useState([]);
- console.log(initialState.memo);
+ useEffect(() => {
+ form.setFieldsValue({
+ autoLogin: rememberMe
+ });
+ localStorage.setItem('rememberMe', JSON.stringify(rememberMe));
+ }, [rememberMe])
+
+ useEffect(() => {
+ form.setFieldsValue({
+ username: rememberData.username,
+ password: rememberData.password
+ });
+ localStorage.setItem('rememberData', JSON.stringify(rememberData));
+ }, [rememberData])
+
+ useEffect(() => {
+ const fetchHostList = async () => {
+ const resp = await Http.doGet('api/auth/host');
+ const list = resp.data.map(item => ({
+ label: item.name,
+ value: item.id
+ }));
+ setHostList(list);
+ if (list && list.length > 0) {
+ form.setFieldsValue({
+ hostId: list[0].value
+ });
+ }
+ }
+ fetchHostList();
+ }, []);
const fetchUserInfo = async () => {
const userInfo = await initialState?.fetchUserInfo?.();
@@ -56,6 +98,7 @@
}
};
+
const handleSubmit = async (values) => {
try {
const r = await request('/api/login', {
@@ -67,6 +110,13 @@
})
if (r.code === 200) {
+ localStorage.removeItem("rememberData");
+ if (rememberMe) {
+ setRememberData({
+ username: values.username,
+ password: values.password
+ })
+ }
message.success(intl.formatMessage({
id: 'pages.login.success',
defaultMessage: '鐧诲綍鎴愬姛锛�',
@@ -77,10 +127,7 @@
history.push(urlParams.get('redirect') || '/');
return;
}
- setUserLoginState({
- status: r.code,
- type: type,
- })
+ setStatus(r.code);
} catch (error) {
console.log(error);
message.error(intl.formatMessage({
@@ -98,22 +145,19 @@
}}
>
<LoginFormPage
- backgroundImageUrl="https://mdn.alipayobjects.com/huamei_gcee1x/afts/img/A*y0ZTS6WLwvgAAAAAAAAAAAAADml6AQ/fmt.webp"
+ form={form}
logo={logo}
- backgroundVideoUrl="https://gw.alipayobjects.com/v/huamei_gcee1x/afts/video/jXRBRK_VAwoAAAAAAAAAAAAAK4eUAQBr"
+ backgroundVideoUrl={logoBg}
// title="闄嗘檽娑�"
// subTitle="闄嗘檽娑�..."
containerStyle={{
backgroundColor: 'rgba(0, 0, 0,0.65)',
backdropFilter: 'blur(4px)',
}}
- initialValues={{
- username: 'root',
- password: '123456',
- autoLogin: true,
- }}
onFinish={async (values) => {
await handleSubmit(values);
+ }}
+ initialValue={{
}}
>
<Tabs
@@ -126,6 +170,18 @@
</Tabs>
{loginType === 'account' && (
<>
+ <ProFormSelect
+ className="centered-select"
+ name="hostId"
+ placeholder="鏈烘瀯锛�"
+ rules={[
+ {
+ required: true,
+ message: '璇烽�夋嫨鏈烘瀯!',
+ },
+ ]}
+ options={hostList}
+ />
<ProFormText
name="username"
fieldProps={{
@@ -139,7 +195,7 @@
/>
),
}}
- placeholder={'鐢ㄦ埛鍚�: root'}
+ placeholder={'鐢ㄦ埛鍚�: '}
rules={[
{
required: true,
@@ -160,7 +216,7 @@
/>
),
}}
- placeholder={'瀵嗙爜: 123456'}
+ placeholder={'瀵嗙爜: '}
rules={[
{
required: true,
@@ -177,6 +233,18 @@
)}
{loginType === 'phone' && (
<>
+ <ProFormSelect
+ className="centered-select"
+ name="hostId"
+ placeholder="鏈烘瀯锛�"
+ rules={[
+ {
+ required: true,
+ message: '璇烽�夋嫨鏈烘瀯!',
+ },
+ ]}
+ options={hostList}
+ />
<ProFormText
fieldProps={{
size: 'large',
@@ -243,7 +311,13 @@
marginBlockEnd: 24,
}}
>
- <ProFormCheckbox noStyle name="autoLogin">
+ <ProFormCheckbox
+ noStyle
+ name="autoLogin"
+ onChange={(e) => {
+ setRememberMe(e.target.checked);
+ }}
+ >
鑷姩鐧诲綍
</ProFormCheckbox>
</div>
@@ -258,4 +332,4 @@
<Page />
</ProConfigProvider>
);
-};
\ No newline at end of file
+};
--
Gitblit v1.9.1