正在显示
33 个修改的文件
包含
248 行增加
和
294 行删除
... | ... | @@ -18,11 +18,7 @@ const PageHeaderWrapper = ({ children, wrapperClassName, ...restProps }) => ( |
18 | 18 | return item.title; |
19 | 19 | }} |
20 | 20 | /> |
21 | - {children ? ( | |
22 | - <div className={styles.content}> | |
23 | - {children} | |
24 | - </div> | |
25 | - ) : null} | |
21 | + {children ? <div className={styles.content}>{children}</div> : null} | |
26 | 22 | </div> |
27 | 23 | ); |
28 | 24 | ... | ... |
... | ... | @@ -2,7 +2,7 @@ export default { |
2 | 2 | 'app.forms.basic.title': 'Basic form', |
3 | 3 | 'app.forms.basic.description': |
4 | 4 | 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.', |
5 | - | |
5 | + | |
6 | 6 | 'validation.email.required': 'Por favor insira seu email!', |
7 | 7 | 'validation.email.wrong-format': 'O email está errado!', |
8 | 8 | 'validation.userName.required': 'Por favor insira nome de usuário!', | ... | ... |
... | ... | @@ -2,7 +2,7 @@ export default { |
2 | 2 | 'app.forms.basic.title': '基礎表單', |
3 | 3 | 'app.forms.basic.description': |
4 | 4 | '表單頁用於向用戶收集或驗證信息,基礎表單常見於數據項較少的表單場景。', |
5 | - | |
5 | + | |
6 | 6 | 'validation.email.required': '請輸入郵箱地址!', |
7 | 7 | 'validation.email.wrong-format': '郵箱地址格式錯誤!', |
8 | 8 | 'validation.userName.required': '請輸入賬戶!', | ... | ... |
... | ... | @@ -26,11 +26,7 @@ const PageHeaderWrapper = ({ children, contentWidth, wrapperClassName, top, ...r |
26 | 26 | /> |
27 | 27 | )} |
28 | 28 | </MenuContext.Consumer> |
29 | - {children ? ( | |
30 | - <div className={styles.content}> | |
31 | - {children} | |
32 | - </div> | |
33 | - ) : null} | |
29 | + {children ? <div className={styles.content}>{children}</div> : null} | |
34 | 30 | </div> |
35 | 31 | ); |
36 | 32 | ... | ... |
... | ... | @@ -22,7 +22,6 @@ import { DescriptionList } from 'ant-design-pro'; |
22 | 22 | import PageHeaderWrapper from './components/PageHeaderWrapper'; |
23 | 23 | import styles from './style.less'; |
24 | 24 | |
25 | - | |
26 | 25 | const { Step } = Steps; |
27 | 26 | const { Description } = DescriptionList; |
28 | 27 | const ButtonGroup = Button.Group; | ... | ... |
... | ... | @@ -63,7 +63,7 @@ const cachedSave = (response, hashcode) => { |
63 | 63 | * @param {object} [option] The options we want to pass to "fetch" |
64 | 64 | * @return {object} An object containing either "data" or "err" |
65 | 65 | */ |
66 | -export default function (url, option) { | |
66 | +export default function(url, option) { | |
67 | 67 | const options = { |
68 | 68 | expirys: isAntdPro(), |
69 | 69 | ...option, | ... | ... |
... | ... | @@ -18,11 +18,7 @@ const PageHeaderWrapper = ({ children, wrapperClassName, ...restProps }) => ( |
18 | 18 | return item.title; |
19 | 19 | }} |
20 | 20 | /> |
21 | - {children ? ( | |
22 | - <div className={styles.content}> | |
23 | - {children} | |
24 | - </div> | |
25 | - ) : null} | |
21 | + {children ? <div className={styles.content}>{children}</div> : null} | |
26 | 22 | </div> |
27 | 23 | ); |
28 | 24 | ... | ... |
... | ... | @@ -2,7 +2,7 @@ export default { |
2 | 2 | 'app.forms.basic.title': 'Basic form', |
3 | 3 | 'app.forms.basic.description': |
4 | 4 | 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.', |
5 | - | |
5 | + | |
6 | 6 | 'validation.email.required': 'Por favor insira seu email!', |
7 | 7 | 'validation.email.wrong-format': 'O email está errado!', |
8 | 8 | 'validation.userName.required': 'Por favor insira nome de usuário!', | ... | ... |
... | ... | @@ -2,7 +2,7 @@ export default { |
2 | 2 | 'app.forms.basic.title': '基礎表單', |
3 | 3 | 'app.forms.basic.description': |
4 | 4 | '表單頁用於向用戶收集或驗證信息,基礎表單常見於數據項較少的表單場景。', |
5 | - | |
5 | + | |
6 | 6 | 'validation.email.required': '請輸入郵箱地址!', |
7 | 7 | 'validation.email.wrong-format': '郵箱地址格式錯誤!', |
8 | 8 | 'validation.userName.required': '請輸入賬戶!', | ... | ... |
... | ... | @@ -26,11 +26,7 @@ const PageHeaderWrapper = ({ children, contentWidth, wrapperClassName, top, ...r |
26 | 26 | /> |
27 | 27 | )} |
28 | 28 | </MenuContext.Consumer> |
29 | - {children ? ( | |
30 | - <div className={styles.content}> | |
31 | - {children} | |
32 | - </div> | |
33 | - ) : null} | |
29 | + {children ? <div className={styles.content}>{children}</div> : null} | |
34 | 30 | </div> |
35 | 31 | ); |
36 | 32 | ... | ... |
... | ... | @@ -63,7 +63,7 @@ const cachedSave = (response, hashcode) => { |
63 | 63 | * @param {object} [option] The options we want to pass to "fetch" |
64 | 64 | * @return {object} An object containing either "data" or "err" |
65 | 65 | */ |
66 | -export default function (url, option) { | |
66 | +export default function(url, option) { | |
67 | 67 | const options = { |
68 | 68 | expirys: isAntdPro(), |
69 | 69 | ...option, | ... | ... |
... | ... | @@ -18,11 +18,7 @@ const PageHeaderWrapper = ({ children, wrapperClassName, ...restProps }) => ( |
18 | 18 | return item.title; |
19 | 19 | }} |
20 | 20 | /> |
21 | - {children ? ( | |
22 | - <div className={styles.content}> | |
23 | - {children} | |
24 | - </div> | |
25 | - ) : null} | |
21 | + {children ? <div className={styles.content}>{children}</div> : null} | |
26 | 22 | </div> |
27 | 23 | ); |
28 | 24 | ... | ... |
... | ... | @@ -18,11 +18,7 @@ const PageHeaderWrapper = ({ children, wrapperClassName, ...restProps }) => ( |
18 | 18 | return item.title; |
19 | 19 | }} |
20 | 20 | /> |
21 | - {children ? ( | |
22 | - <div className={styles.content}> | |
23 | - {children} | |
24 | - </div> | |
25 | - ) : null} | |
21 | + {children ? <div className={styles.content}>{children}</div> : null} | |
26 | 22 | </div> |
27 | 23 | ); |
28 | 24 | ... | ... |
... | ... | @@ -18,11 +18,7 @@ const PageHeaderWrapper = ({ children, wrapperClassName, ...restProps }) => ( |
18 | 18 | return item.title; |
19 | 19 | }} |
20 | 20 | /> |
21 | - {children ? ( | |
22 | - <div className={styles.content}> | |
23 | - {children} | |
24 | - </div> | |
25 | - ) : null} | |
21 | + {children ? <div className={styles.content}>{children}</div> : null} | |
26 | 22 | </div> |
27 | 23 | ); |
28 | 24 | ... | ... |
... | ... | @@ -41,13 +41,13 @@ export default class StepForm extends PureComponent { |
41 | 41 | <Step title="确认转账信息" /> |
42 | 42 | <Step title="完成" /> |
43 | 43 | </Steps> |
44 | - { | |
45 | - /confirm\/?$/.test(pathname) ? | |
46 | - <Step2 /> : ( | |
47 | - /result\/?$/.test(pathname) ? | |
48 | - <Step3 /> : <Step1 /> | |
49 | - ) | |
50 | - } | |
44 | + {/confirm\/?$/.test(pathname) ? ( | |
45 | + <Step2 /> | |
46 | + ) : /result\/?$/.test(pathname) ? ( | |
47 | + <Step3 /> | |
48 | + ) : ( | |
49 | + <Step1 /> | |
50 | + )} | |
51 | 51 | </Fragment> |
52 | 52 | </Card> |
53 | 53 | </PageHeaderWrapper> | ... | ... |
... | ... | @@ -2,7 +2,7 @@ export default { |
2 | 2 | 'app.forms.basic.title': 'Basic form', |
3 | 3 | 'app.forms.basic.description': |
4 | 4 | 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.', |
5 | - | |
5 | + | |
6 | 6 | 'validation.email.required': 'Por favor insira seu email!', |
7 | 7 | 'validation.email.wrong-format': 'O email está errado!', |
8 | 8 | 'validation.userName.required': 'Por favor insira nome de usuário!', | ... | ... |
... | ... | @@ -2,7 +2,7 @@ export default { |
2 | 2 | 'app.forms.basic.title': '基礎表單', |
3 | 3 | 'app.forms.basic.description': |
4 | 4 | '表單頁用於向用戶收集或驗證信息,基礎表單常見於數據項較少的表單場景。', |
5 | - | |
5 | + | |
6 | 6 | 'validation.email.required': '請輸入郵箱地址!', |
7 | 7 | 'validation.email.wrong-format': '郵箱地址格式錯誤!', |
8 | 8 | 'validation.userName.required': '請輸入賬戶!', | ... | ... |
... | ... | @@ -69,100 +69,100 @@ class LoginPage extends Component { |
69 | 69 | const { type, autoLogin } = this.state; |
70 | 70 | return ( |
71 | 71 | <UserLayout> |
72 | - <div className={styles.main}> | |
73 | - <Login | |
74 | - defaultActiveKey={type} | |
75 | - onTabChange={this.onTabChange} | |
76 | - onSubmit={this.handleSubmit} | |
77 | - ref={form => { | |
78 | - this.loginForm = form; | |
79 | - }} | |
80 | - > | |
81 | - <Tab key="account" tab={formatMessage({ id: 'app.login.tab-login-credentials' })}> | |
82 | - {login.status === 'error' && | |
83 | - login.type === 'account' && | |
84 | - !submitting && | |
85 | - this.renderMessage(formatMessage({ id: 'app.login.message-invalid-credentials' }))} | |
86 | - <UserName | |
87 | - name="userName" | |
88 | - placeholder={`${formatMessage({ id: 'app.login.userName' })}: admin or user`} | |
89 | - rules={[ | |
90 | - { | |
91 | - required: true, | |
92 | - message: formatMessage({ id: 'validation.userName.required' }), | |
93 | - }, | |
94 | - ]} | |
95 | - /> | |
96 | - <Password | |
97 | - name="password" | |
98 | - placeholder={`${formatMessage({ id: 'app.login.password' })}: ant.design`} | |
99 | - rules={[ | |
100 | - { | |
101 | - required: true, | |
102 | - message: formatMessage({ id: 'validation.password.required' }), | |
103 | - }, | |
104 | - ]} | |
105 | - onPressEnter={() => this.loginForm.validateFields(this.handleSubmit)} | |
106 | - /> | |
107 | - </Tab> | |
108 | - <Tab key="mobile" tab={formatMessage({ id: 'app.login.tab-login-mobile' })}> | |
109 | - {login.status === 'error' && | |
110 | - login.type === 'mobile' && | |
111 | - !submitting && | |
112 | - this.renderMessage( | |
113 | - formatMessage({ id: 'app.login.message-invalid-verification-code' }) | |
114 | - )} | |
115 | - <Mobile | |
116 | - name="mobile" | |
117 | - placeholder={formatMessage({ id: 'form.phone-number.placeholder' })} | |
118 | - rules={[ | |
119 | - { | |
120 | - required: true, | |
121 | - message: formatMessage({ id: 'validation.phone-number.required' }), | |
122 | - }, | |
123 | - { | |
124 | - pattern: /^1\d{10}$/, | |
125 | - message: formatMessage({ id: 'validation.phone-number.wrong-format' }), | |
126 | - }, | |
127 | - ]} | |
128 | - /> | |
129 | - <Captcha | |
130 | - name="captcha" | |
131 | - placeholder={formatMessage({ id: 'form.verification-code.placeholder' })} | |
132 | - countDown={120} | |
133 | - onGetCaptcha={this.onGetCaptcha} | |
134 | - getCaptchaButtonText={formatMessage({ id: 'form.get-captcha' })} | |
135 | - getCaptchaSecondText={formatMessage({ id: 'form.captcha.second' })} | |
136 | - rules={[ | |
137 | - { | |
138 | - required: true, | |
139 | - message: formatMessage({ id: 'validation.verification-code.required' }), | |
140 | - }, | |
141 | - ]} | |
142 | - /> | |
143 | - </Tab> | |
144 | - <div> | |
145 | - <Checkbox checked={autoLogin} onChange={this.changeAutoLogin}> | |
146 | - <FormattedMessage id="app.login.remember-me" /> | |
147 | - </Checkbox> | |
148 | - <a style={{ float: 'right' }} href=""> | |
149 | - <FormattedMessage id="app.login.forgot-password" /> | |
150 | - </a> | |
151 | - </div> | |
152 | - <Submit loading={submitting}> | |
153 | - <FormattedMessage id="app.login.login" /> | |
154 | - </Submit> | |
155 | - <div className={styles.other}> | |
156 | - <FormattedMessage id="app.login.sign-in-with" /> | |
157 | - <Icon type="alipay-circle" className={styles.icon} theme="outlined" /> | |
158 | - <Icon type="taobao-circle" className={styles.icon} theme="outlined" /> | |
159 | - <Icon type="weibo-circle" className={styles.icon} theme="outlined" /> | |
160 | - <Link className={styles.register} to="/user/register"> | |
161 | - <FormattedMessage id="app.login.signup" /> | |
162 | - </Link> | |
163 | - </div> | |
164 | - </Login> | |
165 | - </div> | |
72 | + <div className={styles.main}> | |
73 | + <Login | |
74 | + defaultActiveKey={type} | |
75 | + onTabChange={this.onTabChange} | |
76 | + onSubmit={this.handleSubmit} | |
77 | + ref={form => { | |
78 | + this.loginForm = form; | |
79 | + }} | |
80 | + > | |
81 | + <Tab key="account" tab={formatMessage({ id: 'app.login.tab-login-credentials' })}> | |
82 | + {login.status === 'error' && | |
83 | + login.type === 'account' && | |
84 | + !submitting && | |
85 | + this.renderMessage(formatMessage({ id: 'app.login.message-invalid-credentials' }))} | |
86 | + <UserName | |
87 | + name="userName" | |
88 | + placeholder={`${formatMessage({ id: 'app.login.userName' })}: admin or user`} | |
89 | + rules={[ | |
90 | + { | |
91 | + required: true, | |
92 | + message: formatMessage({ id: 'validation.userName.required' }), | |
93 | + }, | |
94 | + ]} | |
95 | + /> | |
96 | + <Password | |
97 | + name="password" | |
98 | + placeholder={`${formatMessage({ id: 'app.login.password' })}: ant.design`} | |
99 | + rules={[ | |
100 | + { | |
101 | + required: true, | |
102 | + message: formatMessage({ id: 'validation.password.required' }), | |
103 | + }, | |
104 | + ]} | |
105 | + onPressEnter={() => this.loginForm.validateFields(this.handleSubmit)} | |
106 | + /> | |
107 | + </Tab> | |
108 | + <Tab key="mobile" tab={formatMessage({ id: 'app.login.tab-login-mobile' })}> | |
109 | + {login.status === 'error' && | |
110 | + login.type === 'mobile' && | |
111 | + !submitting && | |
112 | + this.renderMessage( | |
113 | + formatMessage({ id: 'app.login.message-invalid-verification-code' }) | |
114 | + )} | |
115 | + <Mobile | |
116 | + name="mobile" | |
117 | + placeholder={formatMessage({ id: 'form.phone-number.placeholder' })} | |
118 | + rules={[ | |
119 | + { | |
120 | + required: true, | |
121 | + message: formatMessage({ id: 'validation.phone-number.required' }), | |
122 | + }, | |
123 | + { | |
124 | + pattern: /^1\d{10}$/, | |
125 | + message: formatMessage({ id: 'validation.phone-number.wrong-format' }), | |
126 | + }, | |
127 | + ]} | |
128 | + /> | |
129 | + <Captcha | |
130 | + name="captcha" | |
131 | + placeholder={formatMessage({ id: 'form.verification-code.placeholder' })} | |
132 | + countDown={120} | |
133 | + onGetCaptcha={this.onGetCaptcha} | |
134 | + getCaptchaButtonText={formatMessage({ id: 'form.get-captcha' })} | |
135 | + getCaptchaSecondText={formatMessage({ id: 'form.captcha.second' })} | |
136 | + rules={[ | |
137 | + { | |
138 | + required: true, | |
139 | + message: formatMessage({ id: 'validation.verification-code.required' }), | |
140 | + }, | |
141 | + ]} | |
142 | + /> | |
143 | + </Tab> | |
144 | + <div> | |
145 | + <Checkbox checked={autoLogin} onChange={this.changeAutoLogin}> | |
146 | + <FormattedMessage id="app.login.remember-me" /> | |
147 | + </Checkbox> | |
148 | + <a style={{ float: 'right' }} href=""> | |
149 | + <FormattedMessage id="app.login.forgot-password" /> | |
150 | + </a> | |
151 | + </div> | |
152 | + <Submit loading={submitting}> | |
153 | + <FormattedMessage id="app.login.login" /> | |
154 | + </Submit> | |
155 | + <div className={styles.other}> | |
156 | + <FormattedMessage id="app.login.sign-in-with" /> | |
157 | + <Icon type="alipay-circle" className={styles.icon} theme="outlined" /> | |
158 | + <Icon type="taobao-circle" className={styles.icon} theme="outlined" /> | |
159 | + <Icon type="weibo-circle" className={styles.icon} theme="outlined" /> | |
160 | + <Link className={styles.register} to="/user/register"> | |
161 | + <FormattedMessage id="app.login.signup" /> | |
162 | + </Link> | |
163 | + </div> | |
164 | + </Login> | |
165 | + </div> | |
166 | 166 | </UserLayout> |
167 | 167 | ); |
168 | 168 | } | ... | ... |
... | ... | @@ -180,155 +180,155 @@ class Register extends Component { |
180 | 180 | const { count, prefix, help, visible } = this.state; |
181 | 181 | return ( |
182 | 182 | <UserLayout> |
183 | - <div className={styles.main}> | |
184 | - <h3> | |
185 | - <FormattedMessage id="app.register.register" /> | |
186 | - </h3> | |
187 | - <Form onSubmit={this.handleSubmit}> | |
188 | - <FormItem> | |
189 | - {getFieldDecorator('mail', { | |
190 | - rules: [ | |
191 | - { | |
192 | - required: true, | |
193 | - message: formatMessage({ id: 'validation.email.required' }), | |
194 | - }, | |
195 | - { | |
196 | - type: 'email', | |
197 | - message: formatMessage({ id: 'validation.email.wrong-format' }), | |
198 | - }, | |
199 | - ], | |
200 | - })( | |
201 | - <Input size="large" placeholder={formatMessage({ id: 'form.email.placeholder' })} /> | |
202 | - )} | |
203 | - </FormItem> | |
204 | - <FormItem help={help}> | |
205 | - <Popover | |
206 | - getPopupContainer={node => node.parentNode} | |
207 | - content={ | |
208 | - <div style={{ padding: '4px 0' }}> | |
209 | - {passwordStatusMap[this.getPasswordStatus()]} | |
210 | - {this.renderPasswordProgress()} | |
211 | - <div style={{ marginTop: 10 }}> | |
212 | - <FormattedMessage id="validation.password.strength.msg" /> | |
213 | - </div> | |
214 | - </div> | |
215 | - } | |
216 | - overlayStyle={{ width: 240 }} | |
217 | - placement="right" | |
218 | - visible={visible} | |
219 | - > | |
220 | - {getFieldDecorator('password', { | |
183 | + <div className={styles.main}> | |
184 | + <h3> | |
185 | + <FormattedMessage id="app.register.register" /> | |
186 | + </h3> | |
187 | + <Form onSubmit={this.handleSubmit}> | |
188 | + <FormItem> | |
189 | + {getFieldDecorator('mail', { | |
221 | 190 | rules: [ |
222 | 191 | { |
223 | - validator: this.checkPassword, | |
192 | + required: true, | |
193 | + message: formatMessage({ id: 'validation.email.required' }), | |
194 | + }, | |
195 | + { | |
196 | + type: 'email', | |
197 | + message: formatMessage({ id: 'validation.email.wrong-format' }), | |
224 | 198 | }, |
225 | 199 | ], |
226 | 200 | })( |
227 | - <Input | |
228 | - size="large" | |
229 | - type="password" | |
230 | - placeholder={formatMessage({ id: 'form.password.placeholder' })} | |
231 | - /> | |
201 | + <Input size="large" placeholder={formatMessage({ id: 'form.email.placeholder' })} /> | |
232 | 202 | )} |
233 | - </Popover> | |
234 | - </FormItem> | |
235 | - <FormItem> | |
236 | - {getFieldDecorator('confirm', { | |
237 | - rules: [ | |
238 | - { | |
239 | - required: true, | |
240 | - message: formatMessage({ id: 'validation.confirm-password.required' }), | |
241 | - }, | |
242 | - { | |
243 | - validator: this.checkConfirm, | |
244 | - }, | |
245 | - ], | |
246 | - })( | |
247 | - <Input | |
248 | - size="large" | |
249 | - type="password" | |
250 | - placeholder={formatMessage({ id: 'form.confirm-password.placeholder' })} | |
251 | - /> | |
252 | - )} | |
253 | - </FormItem> | |
254 | - <FormItem> | |
255 | - <InputGroup compact> | |
256 | - <Select | |
257 | - size="large" | |
258 | - value={prefix} | |
259 | - onChange={this.changePrefix} | |
260 | - style={{ width: '20%' }} | |
203 | + </FormItem> | |
204 | + <FormItem help={help}> | |
205 | + <Popover | |
206 | + getPopupContainer={node => node.parentNode} | |
207 | + content={ | |
208 | + <div style={{ padding: '4px 0' }}> | |
209 | + {passwordStatusMap[this.getPasswordStatus()]} | |
210 | + {this.renderPasswordProgress()} | |
211 | + <div style={{ marginTop: 10 }}> | |
212 | + <FormattedMessage id="validation.password.strength.msg" /> | |
213 | + </div> | |
214 | + </div> | |
215 | + } | |
216 | + overlayStyle={{ width: 240 }} | |
217 | + placement="right" | |
218 | + visible={visible} | |
261 | 219 | > |
262 | - <Option value="86">+86</Option> | |
263 | - <Option value="87">+87</Option> | |
264 | - </Select> | |
265 | - {getFieldDecorator('mobile', { | |
220 | + {getFieldDecorator('password', { | |
221 | + rules: [ | |
222 | + { | |
223 | + validator: this.checkPassword, | |
224 | + }, | |
225 | + ], | |
226 | + })( | |
227 | + <Input | |
228 | + size="large" | |
229 | + type="password" | |
230 | + placeholder={formatMessage({ id: 'form.password.placeholder' })} | |
231 | + /> | |
232 | + )} | |
233 | + </Popover> | |
234 | + </FormItem> | |
235 | + <FormItem> | |
236 | + {getFieldDecorator('confirm', { | |
266 | 237 | rules: [ |
267 | 238 | { |
268 | 239 | required: true, |
269 | - message: formatMessage({ id: 'validation.phone-number.required' }), | |
240 | + message: formatMessage({ id: 'validation.confirm-password.required' }), | |
270 | 241 | }, |
271 | 242 | { |
272 | - pattern: /^\d{11}$/, | |
273 | - message: formatMessage({ id: 'validation.phone-number.wrong-format' }), | |
243 | + validator: this.checkConfirm, | |
274 | 244 | }, |
275 | 245 | ], |
276 | 246 | })( |
277 | 247 | <Input |
278 | 248 | size="large" |
279 | - style={{ width: '80%' }} | |
280 | - placeholder={formatMessage({ id: 'form.phone-number.placeholder' })} | |
249 | + type="password" | |
250 | + placeholder={formatMessage({ id: 'form.confirm-password.placeholder' })} | |
281 | 251 | /> |
282 | 252 | )} |
283 | - </InputGroup> | |
284 | - </FormItem> | |
285 | - <FormItem> | |
286 | - <Row gutter={8}> | |
287 | - <Col span={16}> | |
288 | - {getFieldDecorator('captcha', { | |
253 | + </FormItem> | |
254 | + <FormItem> | |
255 | + <InputGroup compact> | |
256 | + <Select | |
257 | + size="large" | |
258 | + value={prefix} | |
259 | + onChange={this.changePrefix} | |
260 | + style={{ width: '20%' }} | |
261 | + > | |
262 | + <Option value="86">+86</Option> | |
263 | + <Option value="87">+87</Option> | |
264 | + </Select> | |
265 | + {getFieldDecorator('mobile', { | |
289 | 266 | rules: [ |
290 | 267 | { |
291 | 268 | required: true, |
292 | - message: formatMessage({ id: 'validation.verification-code.required' }), | |
269 | + message: formatMessage({ id: 'validation.phone-number.required' }), | |
270 | + }, | |
271 | + { | |
272 | + pattern: /^\d{11}$/, | |
273 | + message: formatMessage({ id: 'validation.phone-number.wrong-format' }), | |
293 | 274 | }, |
294 | 275 | ], |
295 | 276 | })( |
296 | 277 | <Input |
297 | 278 | size="large" |
298 | - placeholder={formatMessage({ id: 'form.verification-code.placeholder' })} | |
279 | + style={{ width: '80%' }} | |
280 | + placeholder={formatMessage({ id: 'form.phone-number.placeholder' })} | |
299 | 281 | /> |
300 | 282 | )} |
301 | - </Col> | |
302 | - <Col span={8}> | |
303 | - <Button | |
304 | - size="large" | |
305 | - disabled={count} | |
306 | - className={styles.getCaptcha} | |
307 | - onClick={this.onGetCaptcha} | |
308 | - > | |
309 | - {count | |
310 | - ? `${count} s` | |
311 | - : formatMessage({ id: 'app.register.get-verification-code' })} | |
312 | - </Button> | |
313 | - </Col> | |
314 | - </Row> | |
315 | - </FormItem> | |
316 | - <FormItem> | |
317 | - <Button | |
318 | - size="large" | |
319 | - loading={submitting} | |
320 | - className={styles.submit} | |
321 | - type="primary" | |
322 | - htmlType="submit" | |
323 | - > | |
324 | - <FormattedMessage id="app.register.register" /> | |
325 | - </Button> | |
326 | - <Link className={styles.login} to="/User/Login"> | |
327 | - <FormattedMessage id="app.register.sign-in" /> | |
328 | - </Link> | |
329 | - </FormItem> | |
330 | - </Form> | |
331 | - </div> | |
283 | + </InputGroup> | |
284 | + </FormItem> | |
285 | + <FormItem> | |
286 | + <Row gutter={8}> | |
287 | + <Col span={16}> | |
288 | + {getFieldDecorator('captcha', { | |
289 | + rules: [ | |
290 | + { | |
291 | + required: true, | |
292 | + message: formatMessage({ id: 'validation.verification-code.required' }), | |
293 | + }, | |
294 | + ], | |
295 | + })( | |
296 | + <Input | |
297 | + size="large" | |
298 | + placeholder={formatMessage({ id: 'form.verification-code.placeholder' })} | |
299 | + /> | |
300 | + )} | |
301 | + </Col> | |
302 | + <Col span={8}> | |
303 | + <Button | |
304 | + size="large" | |
305 | + disabled={count} | |
306 | + className={styles.getCaptcha} | |
307 | + onClick={this.onGetCaptcha} | |
308 | + > | |
309 | + {count | |
310 | + ? `${count} s` | |
311 | + : formatMessage({ id: 'app.register.get-verification-code' })} | |
312 | + </Button> | |
313 | + </Col> | |
314 | + </Row> | |
315 | + </FormItem> | |
316 | + <FormItem> | |
317 | + <Button | |
318 | + size="large" | |
319 | + loading={submitting} | |
320 | + className={styles.submit} | |
321 | + type="primary" | |
322 | + htmlType="submit" | |
323 | + > | |
324 | + <FormattedMessage id="app.register.register" /> | |
325 | + </Button> | |
326 | + <Link className={styles.login} to="/User/Login"> | |
327 | + <FormattedMessage id="app.register.sign-in" /> | |
328 | + </Link> | |
329 | + </FormItem> | |
330 | + </Form> | |
331 | + </div> | |
332 | 332 | </UserLayout> |
333 | 333 | ); |
334 | 334 | } | ... | ... |
... | ... | @@ -20,11 +20,7 @@ const PageHeaderWrapper = ({ children, contentWidth, wrapperClassName, top, ...r |
20 | 20 | return item.title; |
21 | 21 | }} |
22 | 22 | /> |
23 | - {children ? ( | |
24 | - <div className={styles.content}> | |
25 | - { children } | |
26 | - </div> | |
27 | - ) : null} | |
23 | + {children ? <div className={styles.content}>{children}</div> : null} | |
28 | 24 | </div> |
29 | 25 | ); |
30 | 26 | ... | ... |
请
注册
或
登录
后发表评论