import React, { useEffect, useState } from 'react'; import { Form, Button, Input, Row, Col, Modal, Spin, message } from 'antd'; import { UserOutlined, LockOutlined, SafetyCertificateOutlined } from '@ant-design/icons'; import './style.less'; import { changePass } from './service'; import logo from '@/images/login/logoPic.png'; import { refreshTokenApi, ZjfakeAccountLogin } from '@/services/login'; import { history } from 'umi'; import cookie from 'react-cookies'; import moment from 'moment'; const layout = { labelCol: { span: 7 }, wrapperCol: { span: 13 }, }; const Index: React.FC<{}> = () => { const [form] = Form.useForm(); const [imgUrl, setImgUrl] = useState(''); const [tmpToken, setTmpToken] = useState(''); const remainingTime = 3 //刷新token的剩余时间,单位小时 const [changeForm] = Form.useForm(); const [isModalVisible, setIsModalVisible] = useState(false) const [spinning, setSping] = useState(false);//加载遮罩 const genRandomString = (len: number) => { const text = 'abcdefghijklmnopqrstuvwxyz0123456789'; const rdmIndex = (text: string | any[]) => (Math.random() * text.length) | 0; let rdmString = ''; for (; rdmString.length < len; rdmString += text.charAt(rdmIndex(text))); return rdmString; }; const changeCaptcha = () => { let tmpToken = genRandomString(16); let url = '/api/auth/captcha?token=' + tmpToken; setTmpToken(tmpToken); setImgUrl(url); }; //登录刷新Token方法 const refreshToken = async (data: any) => { const params = { grant_type: "refresh_token", refresh_token: data?.refreshToken?.value, client_id: REACT_APP_CLIENT_KEY, client_secret: REACT_APP_CLIENT_SECRET, } const header = { clientId: REACT_APP_CLIENT_KEY, } await refreshTokenApi(params, header).then(res => { if (res?.success == true) { sessionStorage.setItem('Authorization', res?.data?.value); sessionStorage.setItem('refreshToken', res?.data?.refreshToken.value); sessionStorage.setItem('scope', res?.data?.scope); history.push('/redirect'); } }) } const handleSubmit = async (values: any) => { await ZjfakeAccountLogin({ ...values, tmpToken }).then((res) => { if (res?.success) { if (moment(res?.data?.expiration).diff(moment(), 'hours') < remainingTime) { refreshToken(res?.data) } else { sessionStorage.setItem('Authorization', res?.data?.value); sessionStorage.setItem('refreshToken', res?.data?.refreshToken.value); sessionStorage.setItem('scope', res?.data?.scope); history.push('/redirect'); } } changeCaptcha(); }); }; const handleOk = () => { // 确定修改密码 if (changeForm.getFieldValue("newPassword") !== changeForm.getFieldValue("newPassword1")) { message.warn('两次密码输入不一致,请重新输入') } else { changeForm.validateFields().then(res => { setSping(true); const date = { identityCard: changeForm.getFieldValue("identityCard"), oldPassword: changeForm.getFieldValue("oldPassword"), newPassword: changeForm.getFieldValue("newPassword"), }; changePass({ ...date }).then(res => { if (res.success) { setSping(false); setIsModalVisible(false) message.success('修改密码成功'); changeForm.resetFields() } else { setSping(false); } }).finally(() => { setSping(false); });; }) } } useEffect(() => { cookie.remove('mall3_token'); sessionStorage.clear(); changeCaptcha(); }, []); return (

中国联通智慧供应链平台 | 招标采购中心

登 录

} placeholder="请输入用户名" /> } placeholder="请输入密码" /> } placeholder="请输入验证码" /> changeCaptcha()} src={imgUrl} /> {/* 记住密码 */}
{/*
版权所有:中国联合网络通信有限公司
*/} setIsModalVisible(false)} footer={[ , ]} width={600} >
{ const oNumber = new RegExp(/\d/); const oLetter = new RegExp(/[a-zA-Z]/); const oSpecial = '.~!@#$%^&*()_+=-{}|:<>?,./[]-;\\"'; if (!value) { callback('请输入新密码'); return; } if (value.length < 6) { callback('密码不能小于六位,至少含字母、数字、特殊字符其中的2种!'); return; } try { [...value].forEach(val => { if ( !( oNumber.test(val) || oLetter.test(val) || oSpecial.indexOf(val) >= 0 ) ) { throw new Error(); } }); } catch (e) { callback('密码不能小于六位,至少含字母、数字、特殊字符其中的2种!'); } const contain: boolean[] = []; [...value].forEach(val => { if (oNumber.test(val)) { contain[0] = true; } if (oLetter.test(val)) { contain[1] = true; } if (oSpecial.indexOf(val) >= 0) { contain[2] = true; } }); if (contain.filter(item => item === true).length < 2) { callback('密码不能小于六位,至少含字母、数字、特殊字符其中的2种!'); return; } callback(); } } ]} // rules={[ // { // required: true, // message: '请输入新密码', // }, // ]} >
); }; export default Index;