|
@@ -0,0 +1,121 @@
|
|
|
+import React, { Component } from 'react';
|
|
|
+import { connect } from 'umi';
|
|
|
+import { Checkbox, Form, Select, Input, Button } from 'antd';
|
|
|
+import { queryDepList } from '@/Project/services/user';
|
|
|
+const { Option } = Select;
|
|
|
+
|
|
|
+class LoginPage extends Component {
|
|
|
+ formRef = null;
|
|
|
+ state = {
|
|
|
+ type: 'account',
|
|
|
+ depList: [],
|
|
|
+ hasName: false,
|
|
|
+ };
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+ this.formRef = React.createRef();
|
|
|
+ }
|
|
|
+ componentDidMount = () => {
|
|
|
+ console.log(this.props);
|
|
|
+ this.props.params.callback('123213213')
|
|
|
+ };
|
|
|
+ onHandleChange = async (name) => {
|
|
|
+ var res = await queryDepList(name);
|
|
|
+ this.setState({
|
|
|
+ depList: res.data,
|
|
|
+ hasName: true,
|
|
|
+ });
|
|
|
+ this.formRef.current.setFieldsValue({
|
|
|
+ DepId: res.data[0]?.ID + '',
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ handleSubmit = (values) => {
|
|
|
+ const { type } = this.state;
|
|
|
+ const { dispatch } = this.props;
|
|
|
+ dispatch({
|
|
|
+ type: 'login/login',
|
|
|
+ payload: {
|
|
|
+ ...values,
|
|
|
+ // 防止浏览器自动填充
|
|
|
+ password: values.password2,
|
|
|
+ type,
|
|
|
+ },
|
|
|
+ callback: () => {
|
|
|
+ this.props.params.gotoA()
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ render() {
|
|
|
+ const { depList, hasName } = this.state;
|
|
|
+ const { submitting, form } = this.props;
|
|
|
+ return (
|
|
|
+ <div style={{ margin: '200px auto', width: '40%' }}>
|
|
|
+ <Form
|
|
|
+ name="basic"
|
|
|
+ labelCol={{ span: 8 }}
|
|
|
+ wrapperCol={{ span: 16 }}
|
|
|
+ onFinish={this.handleSubmit}
|
|
|
+ autoComplete="new-password"
|
|
|
+ ref={this.formRef}
|
|
|
+ >
|
|
|
+ <Form.Item
|
|
|
+ label="用户名"
|
|
|
+ name="username"
|
|
|
+ autoComplete="off"
|
|
|
+ rules={[{ required: true, message: '请输入用户名' }]}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ autoComplete="new-password"
|
|
|
+ onBlur={(e) => this.onHandleChange(e.target.value)}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ {hasName && (
|
|
|
+ <Form.Item
|
|
|
+ label="部门"
|
|
|
+ name="DepId"
|
|
|
+ rules={[{ required: true, message: '请输入用户名' }]}
|
|
|
+ >
|
|
|
+ <Select placeholder="请选择部门">
|
|
|
+ {depList.map((item) => (
|
|
|
+ <Option value={item.ID + ''} key={item.ID}>
|
|
|
+ {item.Name}
|
|
|
+ </Option>
|
|
|
+ ))}
|
|
|
+ </Select>
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
+
|
|
|
+ <Form.Item
|
|
|
+ label="密码"
|
|
|
+ // 不使用password,防止浏览器自动填充表单
|
|
|
+ name="password2"
|
|
|
+ rules={[{ required: true, message: '请输入密码' }]}
|
|
|
+ >
|
|
|
+ <Input.Password autoComplete="new-password" />
|
|
|
+ </Form.Item>
|
|
|
+
|
|
|
+ {/* <Form.Item
|
|
|
+ name="remember"
|
|
|
+ valuePropName="checked"
|
|
|
+ wrapperCol={{ offset: 8, span: 16 }}
|
|
|
+ >
|
|
|
+ <Checkbox>自动登录</Checkbox>
|
|
|
+ </Form.Item> */}
|
|
|
+
|
|
|
+ <Form.Item wrapperCol={{ offset: 8, span: 16 }}>
|
|
|
+ <Button loading={submitting} type="primary" htmlType="submit">
|
|
|
+ 登录
|
|
|
+ </Button>
|
|
|
+ </Form.Item>
|
|
|
+ </Form>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export default connect(({ login, loading }) => ({
|
|
|
+ login,
|
|
|
+ submitting: loading.effects['login/login'],
|
|
|
+}))(LoginPage);
|