1
1
<template >
2
2
<div class =" main user-layout-register" >
3
3
<h3 ><span >注册</span ></h3 >
4
- <a-form ref =" formRegister" :autoFormCreate =" (form)=>{this.form = form}" id =" formRegister" >
5
- <a-form-item
6
- fieldDecoratorId =" email"
7
- :fieldDecoratorOptions =" {rules: [{ required: true, type: 'email', message: '请输入邮箱地址' }], validateTrigger: ['change', 'blur']}" >
8
-
9
- <a-input size =" large" type =" text" placeholder =" 邮箱" ></a-input >
4
+ <a-form ref =" formRegister" :form =" form" id =" formRegister" >
5
+ <a-form-item >
6
+ <a-input
7
+ size =" large"
8
+ type =" text"
9
+ placeholder =" 邮箱"
10
+ v-decorator =" ['email', {rules: [{ required: true, type: 'email', message: '请输入邮箱地址' }], validateTrigger: ['change', 'blur']}]"
11
+ ></a-input >
10
12
</a-form-item >
11
13
12
14
<a-popover placement =" rightTop" trigger =" click" :visible =" state.passwordLevelChecked" >
19
21
</div >
20
22
</div >
21
23
</template >
22
- <a-form-item
23
- fieldDecoratorId =" password"
24
- :fieldDecoratorOptions =" {rules: [{ required: true, message: '至少6位密码,区分大小写'}, { validator: this.handlePasswordLevel }], validateTrigger: ['change', 'blur']}" >
25
- <a-input size =" large" type =" password" @click =" handlePasswordInputClick" autocomplete =" false" placeholder =" 至少6位密码,区分大小写" ></a-input >
24
+ <a-form-item >
25
+ <a-input
26
+ size =" large"
27
+ type =" password"
28
+ @click =" handlePasswordInputClick"
29
+ autocomplete =" false"
30
+ placeholder =" 至少6位密码,区分大小写"
31
+ v-decorator =" ['password', {rules: [{ required: true, message: '至少6位密码,区分大小写'}, { validator: this.handlePasswordLevel }], validateTrigger: ['change', 'blur']}]"
32
+ ></a-input >
26
33
</a-form-item >
27
34
</a-popover >
28
35
29
- <a-form-item
30
- fieldDecoratorId =" password2"
31
- :fieldDecoratorOptions =" {rules: [{ required: true, message: '至少6位密码,区分大小写' }, { validator: this.handlePasswordCheck }], validateTrigger: ['change', 'blur']}" >
32
-
33
- <a-input size =" large" type =" password" autocomplete =" false" placeholder =" 确认密码" ></a-input >
36
+ <a-form-item >
37
+ <a-input
38
+ size =" large"
39
+ type =" password"
40
+ autocomplete =" false"
41
+ placeholder =" 确认密码"
42
+ v-decorator =" ['password2', {rules: [{ required: true, message: '至少6位密码,区分大小写' }, { validator: this.handlePasswordCheck }], validateTrigger: ['change', 'blur']}]"
43
+ ></a-input >
34
44
</a-form-item >
35
45
36
- <a-form-item
37
- fieldDecoratorId =" mobile"
38
- :fieldDecoratorOptions =" {rules: [{ required: true, message: '请输入正确的手机号', pattern: /^1[3456789]\d{9}$/ }, { validator: this.handlePhoneCheck } ], validateTrigger: ['change', 'blur'] }" >
39
- <a-input size =" large" placeholder =" 11 位手机号" >
46
+ <a-form-item >
47
+ <a-input size =" large" placeholder =" 11 位手机号" v-decorator =" ['mobile', {rules: [{ required: true, message: '请输入正确的手机号', pattern: /^1[3456789]\d{9}$/ }, { validator: this.handlePhoneCheck } ], validateTrigger: ['change', 'blur'] }]" >
40
48
<a-select slot =" addonBefore" size =" large" defaultValue =" +86" >
41
49
<a-select-option value =" +86" >+86</a-select-option >
42
50
<a-select-option value =" +87" >+87</a-select-option >
53
61
54
62
<a-row :gutter =" 16" >
55
63
<a-col class =" gutter-row" :span =" 16" >
56
- <a-form-item
57
- fieldDecoratorId =" captcha"
58
- :fieldDecoratorOptions =" {rules: [{ required: true, message: '请输入验证码' }], validateTrigger: 'blur'}" >
59
- <a-input size =" large" type =" text" placeholder =" 验证码" >
64
+ <a-form-item >
65
+ <a-input size =" large" type =" text" placeholder =" 验证码" v-decorator =" ['captcha', {rules: [{ required: true, message: '请输入验证码' }], validateTrigger: 'blur'}]" >
60
66
<a-icon slot =" prefix" type =" mail" :style =" { color: 'rgba(0,0,0,.25)' }" />
61
67
</a-input >
62
68
</a-form-item >
@@ -117,7 +123,7 @@ export default {
117
123
mixins: [mixinDevice],
118
124
data () {
119
125
return {
120
- form: null ,
126
+ form: this . $form . createForm ( this ) ,
121
127
122
128
state: {
123
129
time: 60 ,
@@ -143,7 +149,7 @@ export default {
143
149
},
144
150
methods: {
145
151
146
- handlePasswordLevel (rule , value , callback ) {
152
+ handlePasswordLevel (rule , value , callback ) {
147
153
let level = 0
148
154
149
155
// 判断这个字符串中有没有数字
@@ -202,44 +208,45 @@ export default {
202
208
},
203
209
204
210
handleSubmit () {
205
- this .form .validateFields ((err , values ) => {
211
+ const { form: { validateFields }, $router } = this
212
+ validateFields ((err , values ) => {
206
213
if (! err) {
207
- this . $router .push ({ name: ' registerResult' , params: { ... values } })
214
+ $router .push ({ name: ' registerResult' , params: { ... values } })
208
215
}
209
216
})
210
217
},
211
218
212
219
getCaptcha (e ) {
213
220
e .preventDefault ()
214
- const that = this
221
+ const { form : { validateFields }, state , $message , $notification } = this
215
222
216
- this . form . validateFields ([' mobile' ], { force: true },
223
+ validateFields ([' mobile' ], { force: true },
217
224
(err , values ) => {
218
225
if (! err) {
219
- this . state .smsSendBtn = true
226
+ state .smsSendBtn = true
220
227
221
228
const interval = window .setInterval (() => {
222
- if (that . state .time -- <= 0 ) {
223
- that . state .time = 60
224
- that . state .smsSendBtn = false
229
+ if (state .time -- <= 0 ) {
230
+ state .time = 60
231
+ state .smsSendBtn = false
225
232
window .clearInterval (interval)
226
233
}
227
234
}, 1000 )
228
235
229
- const hide = this . $message .loading (' 验证码发送中..' , 0 )
236
+ const hide = $message .loading (' 验证码发送中..' , 0 )
230
237
231
238
getSmsCaptcha ({ mobile: values .mobile }).then (res => {
232
239
setTimeout (hide, 2500 )
233
- this . $notification [' success' ]({
240
+ $notification[' success' ]({
234
241
message: ' 提示' ,
235
242
description: ' 验证码获取成功,您的验证码为:' + res .result .captcha ,
236
243
duration: 8
237
244
})
238
245
}).catch (err => {
239
246
setTimeout (hide, 1 )
240
247
clearInterval (interval)
241
- that . state .time = 60
242
- that . state .smsSendBtn = false
248
+ state .time = 60
249
+ state .smsSendBtn = false
243
250
this .requestFailed (err)
244
251
})
245
252
}
@@ -257,7 +264,7 @@ export default {
257
264
},
258
265
watch: {
259
266
' state.passwordLevel' (val) {
260
- console .log (val)
267
+ console .log (val)
261
268
}
262
269
}
263
270
}
@@ -308,4 +315,4 @@ export default {
308
315
line-height : 40px ;
309
316
}
310
317
}
311
- </style >
318
+ </style >
0 commit comments