UNPKG

onnet-portal

Version:

Ant Design Pro based test2

260 lines (237 loc) 7.14 kB
import React, { useState, useEffect, Fragment } from 'react'; import { connect } from 'dva'; import { formatMessage } from 'umi'; import { kzUsers } from '@/pages/onnet-portal/core/services/kazoo'; import { UserAddOutlined } from '@ant-design/icons'; import { Form, Tooltip, Button, Modal, Input, Row, Col } from 'antd'; const UserCreateForm = props => { const [, forceUpdate] = useState(); const { formRef, visible, onCancel, onCreate } = props; useEffect(() => { forceUpdate({}); }, []); const inputStyle = { maxWidth: '15em' }; return ( <Modal visible={visible} title={formatMessage({ id: 'core.Create_new_user', defaultMessage: 'Create New User', })} okText={formatMessage({ id: 'reseller_portal.create_account_button', defaultMessage: 'Create', })} onOk={onCreate} onCancel={onCancel} > <Form layout="vertical" ref={formRef}> <Row gutter={24}> <Col span={12}> <Form.Item name="first_name" rules={[ { required: true, message: 'Please input your Name!', }, ]} hasFeedback > <Input style={inputStyle} placeholder={formatMessage({ id: 'Name', defaultMessage: 'Name' })} /> </Form.Item> </Col> <Col span={12}> <Form.Item name="last_name" rules={[ { required: true, message: 'Please input your Surname!', }, ]} hasFeedback > <Input style={inputStyle} placeholder={formatMessage({ id: 'Surname', defaultMessage: 'Surname' })} /> </Form.Item> </Col> <Col span={12}> <Form.Item name="email" rules={[ { type: 'email', message: 'The input is not valid E-mail!', }, { required: true, message: 'Please input your email!', }, ]} hasFeedback > <Input style={inputStyle} placeholder={formatMessage({ id: 'core.email_address', defaultMessage: 'Email address', })} /> </Form.Item> </Col> <Col span={12}> <Form.Item name="confirm_email" dependencies={['email']} hasFeedback rules={[ { type: 'email', message: 'The input is not valid E-mail!', }, { required: true, message: 'Please confirm your E-mail!', }, ({ getFieldValue }) => ({ validator(rule, value) { if (!value || getFieldValue('email') === value) { return Promise.resolve(); } return Promise.reject(new Error('No match!')); }, }), ]} > <Input style={inputStyle} placeholder={formatMessage({ id: 'core.confirm_email_address', defaultMessage: 'Confirm email', })} /> </Form.Item> </Col> <Col span={12}> <Form.Item name="password" rules={[ { required: true, message: 'Please input your password!', }, ]} hasFeedback > <Input.Password style={inputStyle} placeholder={formatMessage({ id: 'Password', defaultMessage: 'Password' })} /> </Form.Item> </Col> <Col span={12}> <Form.Item name="confirm" dependencies={['password']} hasFeedback rules={[ { required: true, message: 'Please confirm your password!', }, ({ getFieldValue }) => ({ validator(rule, value) { if (!value || getFieldValue('password') === value) { return Promise.resolve(); } return Promise.reject(new Error('No match!')); }, }), ]} > <Input.Password style={inputStyle} placeholder={formatMessage({ id: 'Confirm_password', defaultMessage: 'Confirm password', })} /> </Form.Item> </Col> </Row> </Form> </Modal> ); }; const ResellerCreateUser = props => { const [visible, setVisible] = useState(false); const { dispatch, child_account } = props; const formRef = React.createRef(); const showModal = () => { setVisible(true); }; const handleCancel = () => { setVisible(false); }; // handleCreate = () => { const handleCreate = prps => { console.log('Handle Create: '); console.log(prps); console.log('formRef: ', formRef); formRef.current.validateFields().then(values => { console.log('Validate OK:', values); const userDataBag = { username: values.email, first_name: values.first_name, last_name: values.last_name, enaled: 'true', priv_level: 'admin', email: values.email, password: values.password, }; console.log('userDataBag: ', userDataBag); kzUsers({ method: 'PUT', account_id: child_account.data.id, data: userDataBag, }).then(uRes => { console.log(uRes); dispatch({ type: 'child_brief_users/refresh', payload: { account_id: child_account.data.id }, }); }); formRef.current.resetFields(); setVisible(false); }); }; const { btnstyle } = props; return ( <Fragment> <Tooltip placement="leftTop" title={formatMessage({ id: 'core.Create_new_user', defaultMessage: 'Create new user!' })} > <Button key="ResellerCreateUserIconKey" type="link" onClick={showModal} style={btnstyle}> <UserAddOutlined /> </Button> </Tooltip> <UserCreateForm key="ResellerCreateChildFormKey2" formRef={formRef} visible={visible} onCancel={handleCancel} onCreate={handleCreate} /> </Fragment> ); }; export default connect(({ child_account }) => ({ child_account, }))(ResellerCreateUser);