diff --git a/src/common/router.js b/src/common/router.js index 3eac195d0fbb9320987a26d4128153203d914032..343d98ad31e56ceff01d087125cd95af150d1bae 100644 --- a/src/common/router.js +++ b/src/common/router.js @@ -54,6 +54,9 @@ export const getRouterData = (app) => { '/form/step-form': { component: dynamicWrapper(app, ['form'], () => import('../routes/Forms/StepForm')), }, + '/form/step-form/info': { + component: dynamicWrapper(app, ['form'], () => import('../routes/Forms/StepForm/Step1')), + }, '/form/step-form/confirm': { component: dynamicWrapper(app, ['form'], () => import('../routes/Forms/StepForm/Step2')), }, diff --git a/src/models/form.js b/src/models/form.js index a3a144a26313bfd8363a47559b4294a76bead098..afae2044f8fa95249d64c60f01f3be81d155b78a 100644 --- a/src/models/form.js +++ b/src/models/form.js @@ -7,6 +7,10 @@ export default { state: { step: { + payAccount: 'ant-design@alipay.com', + receiverAccount: 'test@example.com', + receiverName: 'Alex', + amount: '500', }, regularFormSubmitting: false, stepFormSubmitting: false, diff --git a/src/routes/Forms/StepForm/Step1.js b/src/routes/Forms/StepForm/Step1.js index 20379b961b33e25edd97a3eff36bb90eb5e66025..2a962fbc18accd85f83d219698cc9c1c93583302 100644 --- a/src/routes/Forms/StepForm/Step1.js +++ b/src/routes/Forms/StepForm/Step1.js @@ -1,104 +1,122 @@ import React from 'react'; +import { connect } from 'dva'; import { Form, Input, Button, Select, Divider } from 'antd'; import { routerRedux } from 'dva/router'; import styles from './style.less'; const { Option } = Select; -export default ({ formItemLayout, form, dispatch, data }) => { - const { getFieldDecorator, validateFields } = form; - const onValidateForm = () => { - validateFields((err, values) => { - if (!err) { - dispatch({ - type: 'form/saveStepFormData', - payload: values, - }); - dispatch(routerRedux.push('/form/step-form/confirm')); - } - }); - }; - return ( -
-
- - {getFieldDecorator('payAccount', { - initialValue: data.payAccount || 'ant-design@alipay.com', - rules: [{ required: true, message: '请选择付款账户' }], - })( - - )} - - - - - {getFieldDecorator('receiverAccount', { - initialValue: data.receiverAccount || 'test@example.com', +const formItemLayout = { + labelCol: { + span: 5, + }, + wrapperCol: { + span: 19, + }, +}; + +@Form.create() +class Step1 extends React.PureComponent { + render() { + const { form, dispatch, data } = this.props; + const { getFieldDecorator, validateFields } = form; + const onValidateForm = () => { + validateFields((err, values) => { + if (!err) { + dispatch({ + type: 'form/saveStepFormData', + payload: values, + }); + dispatch(routerRedux.push('/form/step-form/confirm')); + } + }); + }; + return ( +
+ + + {getFieldDecorator('payAccount', { + initialValue: data.payAccount, + rules: [{ required: true, message: '请选择付款账户' }], + })( + + )} + + + + + {getFieldDecorator('receiverAccount', { + initialValue: data.receiverAccount, + rules: [ + { required: true, message: '请输入收款人账户' }, + { type: 'email', message: '账户名应为邮箱格式' }, + ], + })( + + )} + + + + {getFieldDecorator('receiverName', { + initialValue: data.receiverName, + rules: [{ required: true, message: '请输入收款人姓名' }], + })( + + )} + + + {getFieldDecorator('amount', { + initialValue: data.amount, rules: [ - { required: true, message: '请输入收款人账户' }, - { type: 'email', message: '账户名应为邮箱格式' }, + { required: true, message: '请输入转账金额' }, + { pattern: /^(\d+)((?:\.\d+)?)$/, message: '请输入合法金额数字' }, ], })( - + )} - - - - {getFieldDecorator('receiverName', { - initialValue: data.receiverName || 'Alex', - rules: [{ required: true, message: '请输入收款人姓名' }], - })( - - )} - - - {getFieldDecorator('amount', { - initialValue: data.amount || '500', - rules: [ - { required: true, message: '请输入转账金额' }, - { pattern: /^(\d+)((?:\.\d+)?)$/, message: '请输入合法金额数字' }, - ], - })( - - )} - - - - - - -
-

说明

-

转账到支付宝账户

-

如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。

-

转账到银行卡

-

如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。

+ + + + + + +
+

说明

+

转账到支付宝账户

+

如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。

+

转账到银行卡

+

如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。

+
-
- ); -}; + ); + } +} + +export default connect(({ form }) => ({ + data: form.step, +}))(Step1); diff --git a/src/routes/Forms/StepForm/Step2.js b/src/routes/Forms/StepForm/Step2.js index 89da4a296e735abd94113eaa1d267d2ee5202613..19f60523fab44922c81b295011a5261f64ba5e7b 100644 --- a/src/routes/Forms/StepForm/Step2.js +++ b/src/routes/Forms/StepForm/Step2.js @@ -1,95 +1,114 @@ import React from 'react'; +import { connect } from 'dva'; import { Form, Input, Button, Alert, Divider } from 'antd'; import { routerRedux } from 'dva/router'; import { digitUppercase } from '../../../utils/utils'; import styles from './style.less'; -export default ({ formItemLayout, form, data, dispatch, submitting }) => { - const { getFieldDecorator, validateFields } = form; - const onPrev = () => { - dispatch(routerRedux.push('/form/step-form')); - }; - const onValidateForm = (e) => { - e.preventDefault(); - validateFields((err, values) => { - if (!err) { - dispatch({ - type: 'form/submitStepForm', - payload: { - ...data, - ...values, - }, - }); - } - }); - }; - return ( -
- - - {data.payAccount} - - - {data.receiverAccount} - - - {data.receiverName} - - - {data.amount} - ({digitUppercase(data.amount)}) - - - - {getFieldDecorator('password', { - initialValue: '123456', - rules: [{ - required: true, message: '需要支付密码才能进行支付', - }], - })( - - )} - - - - - - - ); +const formItemLayout = { + labelCol: { + span: 5, + }, + wrapperCol: { + span: 19, + }, }; + +@Form.create() +class Step2 extends React.PureComponent { + render() { + const { form, data, dispatch, submitting } = this.props; + const { getFieldDecorator, validateFields } = form; + const onPrev = () => { + dispatch(routerRedux.push('/form/step-form')); + }; + const onValidateForm = (e) => { + e.preventDefault(); + validateFields((err, values) => { + if (!err) { + dispatch({ + type: 'form/submitStepForm', + payload: { + ...data, + ...values, + }, + }); + } + }); + }; + return ( +
+ + + {data.payAccount} + + + {data.receiverAccount} + + + {data.receiverName} + + + {data.amount} + ({digitUppercase(data.amount)}) + + + + {getFieldDecorator('password', { + initialValue: '123456', + rules: [{ + required: true, message: '需要支付密码才能进行支付', + }], + })( + + )} + + + + + + + ); + } +} + +export default connect(({ form }) => ({ + submitting: form.stepFormSubmitting, + data: form.step, +}))(Step2); diff --git a/src/routes/Forms/StepForm/Step3.js b/src/routes/Forms/StepForm/Step3.js index 2de4c3a250b0e5d8e29d34121411750f41848f3c..78295ae4a2942d673ca905ddf0361ba0bc273d64 100644 --- a/src/routes/Forms/StepForm/Step3.js +++ b/src/routes/Forms/StepForm/Step3.js @@ -1,51 +1,59 @@ import React from 'react'; +import { connect } from 'dva'; import { Button, Row, Col } from 'antd'; import { routerRedux } from 'dva/router'; import Result from '../../../components/Result'; import styles from './style.less'; -export default ({ dispatch, data }) => { - const onFinish = () => { - dispatch(routerRedux.push('/form/step-form')); - }; - const information = ( -
- - 付款账户: - {data.payAccount} - - - 收款账户: - {data.receiverAccount} - - - 收款人姓名: - {data.receiverName} - - - 转账金额: - {data.amount} 元 - -
- ); - const actions = ( -
- - -
- ); - return ( - - ); -}; +class Step3 extends React.PureComponent { + render() { + const { dispatch, data } = this.props; + const onFinish = () => { + dispatch(routerRedux.push('/form/step-form')); + }; + const information = ( +
+ + 付款账户: + {data.payAccount} + + + 收款账户: + {data.receiverAccount} + + + 收款人姓名: + {data.receiverName} + + + 转账金额: + {data.amount} 元 + +
+ ); + const actions = ( +
+ + +
+ ); + return ( + + ); + } +} + +export default connect(({ form }) => ({ + data: form.step, +}))(Step3); diff --git a/src/routes/Forms/StepForm/index.js b/src/routes/Forms/StepForm/index.js index a6d4ca8dfffd83a6c5c018baaa727b9e8ed24293..de9779b9ad772b8d59d55d19ccfdade7aabc600d 100644 --- a/src/routes/Forms/StepForm/index.js +++ b/src/routes/Forms/StepForm/index.js @@ -1,46 +1,27 @@ import React, { PureComponent } from 'react'; -import { connect } from 'dva'; -import { Card, Steps, Form } from 'antd'; +import { Route, Redirect, Switch } from 'dva/router'; +import { Card, Steps } from 'antd'; import PageHeaderLayout from '../../../layouts/PageHeaderLayout'; -import Step1 from './Step1'; -import Step2 from './Step2'; -import Step3 from './Step3'; +import NotFound from '../../Exception/404'; +import { getRoutes } from '../../../utils/utils'; import styles from '../style.less'; const { Step } = Steps; -@Form.create() -class StepForm extends PureComponent { +export default class StepForm extends PureComponent { getCurrentStep() { const { location } = this.props; const { pathname } = location; const pathList = pathname.split('/'); switch (pathList[pathList.length - 1]) { - case 'step-form': return 0; + case 'info': return 0; case 'confirm': return 1; case 'result': return 2; default: return 0; } } - getCurrentComponent() { - const componentMap = { - 0: Step1, - 1: Step2, - 2: Step3, - }; - return componentMap[this.getCurrentStep()]; - } render() { - const { form, stepFormData, submitting, dispatch } = this.props; - const formItemLayout = { - labelCol: { - span: 5, - }, - wrapperCol: { - span: 19, - }, - }; - const CurrentComponent = this.getCurrentComponent(); + const { match, routerData } = this.props; return ( @@ -50,21 +31,23 @@ class StepForm extends PureComponent { - + + { + getRoutes(match.path, routerData).map(item => ( + + )) + } + + +
); } } - -export default connect(state => ({ - stepFormData: state.form.step, - submitting: state.form.stepFormSubmitting, -}))(StepForm);