weapps-plugin-jingtong-verify 1.4.1-dev → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/weapps-plugin-jingtong-verify/components/gsd-ui/g-input/index.js +0 -1
- package/weapps-plugin-jingtong-verify/i18n/rules.js +61 -1
- package/weapps-plugin-jingtong-verify/pages/face-verify/face-verify.js +1 -1
- package/weapps-plugin-jingtong-verify/pages/passport-verify/passport-verify.js +242 -38
- package/weapps-plugin-jingtong-verify/pages/passport-verify/passport-verify.json +1 -0
- package/weapps-plugin-jingtong-verify/pages/passport-verify/passport-verify.wxml +11 -2
- package/weapps-plugin-jingtong-verify/pages/passport-verify/passport-verify.wxss +17 -0
- package/weapps-plugin-jingtong-verify/utils/rules.js +44 -0
package/package.json
CHANGED
|
@@ -131,6 +131,64 @@ const rules = {
|
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
|
|
134
|
+
// 外国护照(人脸识别)
|
|
135
|
+
foreignerRulesFace: {
|
|
136
|
+
id_card_number: {
|
|
137
|
+
required: {
|
|
138
|
+
zh_CN: '请输入护照号码',
|
|
139
|
+
en: 'Please enter your passport No.'
|
|
140
|
+
},
|
|
141
|
+
validate: {
|
|
142
|
+
zh_CN: '证件号码不允许汉字、全角字符、特殊字符',
|
|
143
|
+
en: 'Please enter your passport No.'
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
nation: {
|
|
147
|
+
required: {
|
|
148
|
+
zh_CN: '请选择国籍',
|
|
149
|
+
en: 'Please select your nationality'
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
sur_name: {
|
|
153
|
+
required: {
|
|
154
|
+
zh_CN: '请输入姓',
|
|
155
|
+
en: 'Please enter your surname'
|
|
156
|
+
},
|
|
157
|
+
validate: {
|
|
158
|
+
zh_CN: '不能输入小写字母',
|
|
159
|
+
en: 'Please enter capital letters'
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
first_name: {
|
|
163
|
+
required: {
|
|
164
|
+
zh_CN: '请输入名',
|
|
165
|
+
en: 'Please enter your given names'
|
|
166
|
+
},
|
|
167
|
+
validate: {
|
|
168
|
+
zh_CN: '不能输入小写字母',
|
|
169
|
+
en: 'Please enter capital letters'
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
sex: {
|
|
173
|
+
zh_CN: '请选择性别',
|
|
174
|
+
en: 'Please select your gender information'
|
|
175
|
+
},
|
|
176
|
+
birthday: {
|
|
177
|
+
zh_CN: '请选择出生日期',
|
|
178
|
+
en: 'Please select your date of birth'
|
|
179
|
+
},
|
|
180
|
+
cid_expire_date: {
|
|
181
|
+
zh_CN: '请选择护照有效期',
|
|
182
|
+
en: 'Please select the expiration date of your passport'
|
|
183
|
+
},
|
|
184
|
+
phone: {
|
|
185
|
+
required: {
|
|
186
|
+
zh_CN: '请输入手机号码',
|
|
187
|
+
en: 'Please enter your mobile phone number'
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
|
|
134
192
|
// 银行卡
|
|
135
193
|
cardRules: {
|
|
136
194
|
id_card_number: {
|
|
@@ -200,4 +258,6 @@ const rules = {
|
|
|
200
258
|
}
|
|
201
259
|
}
|
|
202
260
|
|
|
203
|
-
module.exports = {
|
|
261
|
+
module.exports = {
|
|
262
|
+
rules
|
|
263
|
+
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
// weapps-plugin-jingtong-verify/pages/face-verify/index.js
|
|
2
2
|
const jingtongVerifyRequest = require('../../utils/request')
|
|
3
3
|
const utils = require("../../utils/index")
|
|
4
|
-
const {
|
|
4
|
+
const {
|
|
5
|
+
flow
|
|
6
|
+
} = require("@wecity/weda-plugin-utils");
|
|
5
7
|
const rulesConfig = require("../../utils/rules")
|
|
6
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
SDKTrack,
|
|
10
|
+
setAccountInfo
|
|
11
|
+
} from '../../utils/QDTrackerNew/QDTrackerMain'
|
|
7
12
|
let cidType = '700'
|
|
8
13
|
|
|
9
14
|
Page({
|
|
@@ -14,7 +19,7 @@ Page({
|
|
|
14
19
|
language: 'en', // 语言环境:英文
|
|
15
20
|
formData: {
|
|
16
21
|
cid_type: '700', // 证件类型
|
|
17
|
-
id_card_number: '',
|
|
22
|
+
id_card_number: '',
|
|
18
23
|
nation: '', // 国籍
|
|
19
24
|
nation_name: '',
|
|
20
25
|
sur_name: '', // 姓
|
|
@@ -28,28 +33,43 @@ Page({
|
|
|
28
33
|
isbind: 1
|
|
29
34
|
},
|
|
30
35
|
needUnite: '', // 是否需要串联起来
|
|
31
|
-
cidTypeRange: [
|
|
32
|
-
|
|
36
|
+
cidTypeRange: [{
|
|
37
|
+
name: 'International passport',
|
|
38
|
+
value: '700'
|
|
39
|
+
} // 外国护照
|
|
33
40
|
],
|
|
34
|
-
sexRange: [
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
sexRange: [{
|
|
42
|
+
name: 'Male',
|
|
43
|
+
value: 1
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Female',
|
|
47
|
+
value: 2
|
|
48
|
+
}
|
|
37
49
|
],
|
|
38
|
-
loginTimeRangeEn: [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
loginTimeRangeEn: [{
|
|
51
|
+
name: 'Keep me logged in for 1 day',
|
|
52
|
+
value: 24
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Keep me logged in for 7 days',
|
|
56
|
+
value: 168
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Keep me logged in for 30 days',
|
|
60
|
+
value: 720
|
|
61
|
+
}
|
|
42
62
|
],
|
|
43
63
|
validateType: {
|
|
44
64
|
id_card_number(value) {
|
|
45
65
|
return utils.validate.checkCid(value, cidType).data
|
|
46
66
|
},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
67
|
+
// surName(value) {
|
|
68
|
+
// return utils.validate.checkName(value, cidType).data
|
|
69
|
+
// },
|
|
70
|
+
// firstName(value) {
|
|
71
|
+
// return utils.validate.checkName(value, cidType).data
|
|
72
|
+
// }
|
|
53
73
|
},
|
|
54
74
|
rules: rulesConfig.ForeignPassortRules('en'),
|
|
55
75
|
// 打开文档的防抖操作
|
|
@@ -79,7 +99,127 @@ Page({
|
|
|
79
99
|
// 记录是否已经登录成功
|
|
80
100
|
hadSuccessLogin: false,
|
|
81
101
|
// 该操作会触发小程序的销毁回调
|
|
82
|
-
exitedState: true
|
|
102
|
+
exitedState: true,
|
|
103
|
+
// surname自定义校验状态,傻逼数广傻逼组件逼的
|
|
104
|
+
sur_name_state: {
|
|
105
|
+
valid: true,
|
|
106
|
+
msg: ''
|
|
107
|
+
},
|
|
108
|
+
// givenName自定义校验状态,傻逼数广傻逼组件逼的
|
|
109
|
+
first_name_state: {
|
|
110
|
+
valid: true,
|
|
111
|
+
msg: ''
|
|
112
|
+
},
|
|
113
|
+
showCustomTips: false,
|
|
114
|
+
customTipsMsg: ''
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
// 验证sur_name和first_name
|
|
118
|
+
validateFullname() {
|
|
119
|
+
const {
|
|
120
|
+
sur_name,
|
|
121
|
+
first_name
|
|
122
|
+
} = this.data.formData
|
|
123
|
+
// 两个都没填
|
|
124
|
+
if ((sur_name == null || sur_name === '') && (first_name == null || first_name === '')) {
|
|
125
|
+
const msgEmpty = 'Please fill in surname or given name';
|
|
126
|
+
this.setData({
|
|
127
|
+
sur_name_state: {
|
|
128
|
+
valid: false,
|
|
129
|
+
msg: msgEmpty
|
|
130
|
+
},
|
|
131
|
+
first_name_state: {
|
|
132
|
+
valid: false,
|
|
133
|
+
msg: msgEmpty
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
return {
|
|
137
|
+
valid: false,
|
|
138
|
+
msg: msgEmpty
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
this.setData({
|
|
142
|
+
sur_name_state: {
|
|
143
|
+
valid: true,
|
|
144
|
+
msg: ''
|
|
145
|
+
},
|
|
146
|
+
first_name_state: {
|
|
147
|
+
valid: false,
|
|
148
|
+
msg: ''
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
// 其中一个填了,或者两个都填了
|
|
152
|
+
let sur_name_flag = true
|
|
153
|
+
let msg = 'Please enter capital letters'
|
|
154
|
+
if (sur_name != null && sur_name !== '') {
|
|
155
|
+
const valid = utils.validate.checkName(sur_name, cidType)
|
|
156
|
+
if (valid.data) {
|
|
157
|
+
sur_name_flag = true
|
|
158
|
+
} else {
|
|
159
|
+
this.setData({
|
|
160
|
+
sur_name_state: {
|
|
161
|
+
valid: false,
|
|
162
|
+
msg
|
|
163
|
+
}
|
|
164
|
+
})
|
|
165
|
+
sur_name_flag = false
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
let first_name_flag = true
|
|
169
|
+
if (first_name != null && first_name !== '') {
|
|
170
|
+
const valid = utils.validate.checkName(first_name, cidType)
|
|
171
|
+
if (valid.data) {
|
|
172
|
+
first_name_flag = true
|
|
173
|
+
} else {
|
|
174
|
+
this.setData({
|
|
175
|
+
first_name_state: {
|
|
176
|
+
valid: false,
|
|
177
|
+
msg
|
|
178
|
+
}
|
|
179
|
+
})
|
|
180
|
+
first_name_flag = false
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (sur_name_flag && first_name_flag) {
|
|
184
|
+
this.setData({
|
|
185
|
+
sur_name_state: {
|
|
186
|
+
valid: true,
|
|
187
|
+
msg: ''
|
|
188
|
+
},
|
|
189
|
+
first_name_state: {
|
|
190
|
+
valid: false,
|
|
191
|
+
msg: ''
|
|
192
|
+
}
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
const valid = sur_name_flag && first_name_flag
|
|
196
|
+
return {
|
|
197
|
+
valid,
|
|
198
|
+
msg: valid ? '' : msg
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
|
|
202
|
+
// 自定义change事件,sur_name和first_name专用
|
|
203
|
+
handleCustomChange(e) {
|
|
204
|
+
let value = e.detail.value
|
|
205
|
+
let field = e.target.id
|
|
206
|
+
// 删除前后空格
|
|
207
|
+
if (typeof value === 'string') {
|
|
208
|
+
value = value.trim()
|
|
209
|
+
}
|
|
210
|
+
this.setData({
|
|
211
|
+
[`formData.${field}`]: value,
|
|
212
|
+
})
|
|
213
|
+
// 临时存储表单数据
|
|
214
|
+
this.saveFormDataTemp()
|
|
215
|
+
this.validateFullname()
|
|
216
|
+
},
|
|
217
|
+
|
|
218
|
+
// 关闭提示条
|
|
219
|
+
handleTipsClose(e) {
|
|
220
|
+
this.setData({
|
|
221
|
+
showCustomTips: e.detail.isShow
|
|
222
|
+
});
|
|
83
223
|
},
|
|
84
224
|
|
|
85
225
|
/**
|
|
@@ -93,6 +233,7 @@ Page({
|
|
|
93
233
|
this.setData({
|
|
94
234
|
needUnite: options.needUnite || 'true'
|
|
95
235
|
})
|
|
236
|
+
|
|
96
237
|
// 清空本地Temp数据
|
|
97
238
|
wx.setStorageSync('tif.formDataTemp', '')
|
|
98
239
|
|
|
@@ -103,7 +244,7 @@ Page({
|
|
|
103
244
|
// 生命周期函数--监听页面显示
|
|
104
245
|
onShow: function () {
|
|
105
246
|
wx.hideShareMenu()
|
|
106
|
-
|
|
247
|
+
|
|
107
248
|
// 获取国籍
|
|
108
249
|
let pages = getCurrentPages()
|
|
109
250
|
let currentPage = pages[pages.length - 1]
|
|
@@ -145,7 +286,10 @@ Page({
|
|
|
145
286
|
this.setData({
|
|
146
287
|
canOpenPdf: false
|
|
147
288
|
})
|
|
148
|
-
let {
|
|
289
|
+
let {
|
|
290
|
+
name,
|
|
291
|
+
file
|
|
292
|
+
} = e.currentTarget.dataset
|
|
149
293
|
console.log('文件地址', `https://js.jt.beijing.gov.cn/jt/tiffile/${file}.pdf`)
|
|
150
294
|
utils.openDoc({
|
|
151
295
|
url: `https://js.jt.beijing.gov.cn/jt/tiffile/${file}.pdf`,
|
|
@@ -177,7 +321,6 @@ Page({
|
|
|
177
321
|
// 删除前后空格
|
|
178
322
|
if (typeof value === 'string' && formId !== 'cid_type') {
|
|
179
323
|
value = value.trim()
|
|
180
|
-
console.log('==删除前后空格==', value, '==删除前后空格==')
|
|
181
324
|
}
|
|
182
325
|
|
|
183
326
|
this.setData({
|
|
@@ -189,7 +332,6 @@ Page({
|
|
|
189
332
|
|
|
190
333
|
// 临时存储用户填写的表单信息
|
|
191
334
|
saveFormDataTemp() {
|
|
192
|
-
console.log('临时存储用户填写的表单信息')
|
|
193
335
|
let {
|
|
194
336
|
formData
|
|
195
337
|
} = this.data
|
|
@@ -249,7 +391,9 @@ Page({
|
|
|
249
391
|
},
|
|
250
392
|
fail: err => {
|
|
251
393
|
console.log('外国人护照核验接口获取失败', err)
|
|
252
|
-
let {
|
|
394
|
+
let {
|
|
395
|
+
errmsg
|
|
396
|
+
} = JSON.parse(err)
|
|
253
397
|
wx.showToast({
|
|
254
398
|
title: errmsg || '获取核验信息接口失败',
|
|
255
399
|
icon: 'none',
|
|
@@ -270,20 +414,70 @@ Page({
|
|
|
270
414
|
},
|
|
271
415
|
|
|
272
416
|
async handleFormSubmit(e) {
|
|
273
|
-
|
|
417
|
+
const vid1 = this.validateFullname()
|
|
418
|
+
if (!e.detail.validStatus || !vid1.valid) {
|
|
419
|
+
// 如果自定义校验字段没问题,则跳过
|
|
420
|
+
if (vid1.valid) {
|
|
421
|
+
return
|
|
422
|
+
}
|
|
423
|
+
// 自定义校验字段没问题,获取表单错误列表
|
|
424
|
+
const formErrList = e.detail.value
|
|
425
|
+
// 计算是否单独弹出错误提示
|
|
426
|
+
let showCustomTips = false
|
|
427
|
+
if (formErrList && formErrList.length) {
|
|
428
|
+
showCustomTips = !formErrList.some(i => ["id_card_number", "nation"].includes(i.name))
|
|
429
|
+
} else {
|
|
430
|
+
showCustomTips = true
|
|
431
|
+
}
|
|
432
|
+
// 如果需要弹出,则弹出
|
|
433
|
+
if (showCustomTips) {
|
|
434
|
+
this.setData({
|
|
435
|
+
showCustomTips: true,
|
|
436
|
+
customTipsMsg: vid1.msg
|
|
437
|
+
}, () => {
|
|
438
|
+
// 3秒后关闭
|
|
439
|
+
setTimeout(() => {
|
|
440
|
+
this.setData({
|
|
441
|
+
showCustomTips: false,
|
|
442
|
+
customTipsMsg: ''
|
|
443
|
+
});
|
|
444
|
+
}, 3500);
|
|
445
|
+
})
|
|
446
|
+
}
|
|
274
447
|
return
|
|
275
448
|
}
|
|
449
|
+
this.setData({
|
|
450
|
+
showCustomTips: false,
|
|
451
|
+
customTipsMsg: ''
|
|
452
|
+
})
|
|
276
453
|
wx.showLoading({
|
|
277
454
|
title: '加载中…',
|
|
278
455
|
mask: true
|
|
279
456
|
})
|
|
280
457
|
|
|
281
458
|
console.log('删除“姓名、证件号码、护照号码、手机号码”的前后空格')
|
|
282
|
-
let {
|
|
283
|
-
|
|
459
|
+
let {
|
|
460
|
+
id_card_number,
|
|
461
|
+
sur_name,
|
|
462
|
+
first_name,
|
|
463
|
+
phone,
|
|
464
|
+
cid_type
|
|
465
|
+
} = this.data.formData
|
|
466
|
+
// sur_name值为空,增加空格
|
|
467
|
+
if (sur_name == null || sur_name === '') {
|
|
468
|
+
sur_name = ' '
|
|
469
|
+
} else {
|
|
470
|
+
sur_name = sur_name.trim()
|
|
471
|
+
}
|
|
472
|
+
// first_name值为空,增加空格
|
|
473
|
+
if (first_name == null || first_name === '') {
|
|
474
|
+
first_name = ' '
|
|
475
|
+
} else {
|
|
476
|
+
first_name = first_name.trim()
|
|
477
|
+
}
|
|
284
478
|
this.setData({
|
|
285
|
-
['formData.sur_name']: sur_name
|
|
286
|
-
['formData.first_name']: first_name
|
|
479
|
+
['formData.sur_name']: sur_name,
|
|
480
|
+
['formData.first_name']: first_name,
|
|
287
481
|
['formData.phone']: phone.trim()
|
|
288
482
|
})
|
|
289
483
|
|
|
@@ -294,7 +488,7 @@ Page({
|
|
|
294
488
|
})
|
|
295
489
|
}
|
|
296
490
|
console.log('入参', this.data.formData)
|
|
297
|
-
|
|
491
|
+
|
|
298
492
|
console.log('外国人护照核验')
|
|
299
493
|
// 外国人护照核验
|
|
300
494
|
this.handlePassortAuth()
|
|
@@ -391,11 +585,13 @@ Page({
|
|
|
391
585
|
})
|
|
392
586
|
return
|
|
393
587
|
}
|
|
394
|
-
|
|
588
|
+
|
|
395
589
|
const [err, res] = await utils.awaitTo(jingtongVerifyRequest.passportAuth(formData))
|
|
396
590
|
if (err) {
|
|
397
591
|
console.log('外国人护照核验接口认证失败', err)
|
|
398
|
-
let {
|
|
592
|
+
let {
|
|
593
|
+
errmsg
|
|
594
|
+
} = JSON.parse(err)
|
|
399
595
|
wx.showToast({
|
|
400
596
|
title: errmsg || '认证失败',
|
|
401
597
|
icon: 'none',
|
|
@@ -435,7 +631,9 @@ Page({
|
|
|
435
631
|
// 埋点上报事件:自然人登录
|
|
436
632
|
this.loginTracker(2, this.data.formData.cid_type)
|
|
437
633
|
|
|
438
|
-
let {
|
|
634
|
+
let {
|
|
635
|
+
errmsg
|
|
636
|
+
} = JSON.parse(err)
|
|
439
637
|
wx.showToast({
|
|
440
638
|
title: errmsg || 'auth fail',
|
|
441
639
|
icon: 'none',
|
|
@@ -457,7 +655,13 @@ Page({
|
|
|
457
655
|
return
|
|
458
656
|
}
|
|
459
657
|
|
|
460
|
-
const {
|
|
658
|
+
const {
|
|
659
|
+
face_time,
|
|
660
|
+
realname_time,
|
|
661
|
+
cid,
|
|
662
|
+
has_phone,
|
|
663
|
+
certType
|
|
664
|
+
} = session
|
|
461
665
|
if ((!face_time && !realname_time) || !cid) {
|
|
462
666
|
wx.showToast({
|
|
463
667
|
title: `Login has expired, please log in again: ${this.data.formData.cid_type}`,
|
|
@@ -468,7 +672,7 @@ Page({
|
|
|
468
672
|
}
|
|
469
673
|
|
|
470
674
|
wx.showToast({
|
|
471
|
-
title: isEn ? 'Verification successful, redirecting...': '验证成功, 跳转中…',
|
|
675
|
+
title: isEn ? 'Verification successful, redirecting...' : '验证成功, 跳转中…',
|
|
472
676
|
icon: 'none',
|
|
473
677
|
duration: 5000,
|
|
474
678
|
mask: true
|
|
@@ -598,7 +802,7 @@ Page({
|
|
|
598
802
|
this.setData({
|
|
599
803
|
modalStatus,
|
|
600
804
|
showModal: true
|
|
601
|
-
},() => {
|
|
805
|
+
}, () => {
|
|
602
806
|
wx.hideLoading()
|
|
603
807
|
})
|
|
604
808
|
},
|
|
@@ -610,7 +814,7 @@ Page({
|
|
|
610
814
|
})
|
|
611
815
|
},
|
|
612
816
|
|
|
613
|
-
onUnload: function() {
|
|
817
|
+
onUnload: function () {
|
|
614
818
|
// 页面卸载时的逻辑处理
|
|
615
819
|
console.log('======页面即将卸载======', this.data.hadSuccessLogin);
|
|
616
820
|
if (!this.data.hadSuccessLogin) {
|
|
@@ -631,7 +835,7 @@ Page({
|
|
|
631
835
|
}, 2000)
|
|
632
836
|
},
|
|
633
837
|
|
|
634
|
-
onSaveExitState: function() {
|
|
838
|
+
onSaveExitState: function () {
|
|
635
839
|
// 小程序可能被销毁之前的逻辑处理
|
|
636
840
|
if (!this.data.hadSuccessLogin && this.data.exitedState) {
|
|
637
841
|
console.log('======小程序可能被销毁======')
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<view class="en-page">
|
|
2
|
+
<view wx:if="showCustomTips" class="custom-tips">
|
|
3
|
+
<g-tips position="fixed" is-show="{{showCustomTips}}" status="warn" closeable catch:close="handleTipsClose">
|
|
4
|
+
{{customTipsMsg}}
|
|
5
|
+
</g-tips>
|
|
6
|
+
</view>
|
|
2
7
|
<view class="top-box">
|
|
3
8
|
<view class="img-box">
|
|
4
9
|
<image src="../../images/Frame.png" mode="aspectFit" class="img"></image>
|
|
@@ -58,8 +63,10 @@
|
|
|
58
63
|
placeholder=""
|
|
59
64
|
value="{{ formData.sur_name }}"
|
|
60
65
|
clearable="true"
|
|
61
|
-
|
|
66
|
+
_required="{{ false }}"
|
|
67
|
+
bind:input="handleCustomChange"
|
|
62
68
|
/>
|
|
69
|
+
<view wx:if="!sur_name_state.valid" class="form-item__status-message--warn">{{ sur_name_state.msg }}</view>
|
|
63
70
|
</view>
|
|
64
71
|
|
|
65
72
|
<view class="form-item-wrap">
|
|
@@ -69,8 +76,10 @@
|
|
|
69
76
|
placeholder=""
|
|
70
77
|
value="{{ formData.first_name }}"
|
|
71
78
|
clearable="true"
|
|
72
|
-
|
|
79
|
+
_required="{{ false }}"
|
|
80
|
+
bind:input="handleCustomChange"
|
|
73
81
|
/>
|
|
82
|
+
<view wx:if="!first_name_state.valid" class="form-item__status-message--warn">{{ first_name_state.msg }}</view>
|
|
74
83
|
</view>
|
|
75
84
|
|
|
76
85
|
<view class="form-item-wrap">
|
|
@@ -45,4 +45,21 @@
|
|
|
45
45
|
|
|
46
46
|
.content-box {
|
|
47
47
|
padding-bottom: 60rpx;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.form-item__status-message--warn {
|
|
51
|
+
color: #f13939;
|
|
52
|
+
font-size: 30rpx;
|
|
53
|
+
line-height: 40rpx;
|
|
54
|
+
margin-top: 10rpx;
|
|
55
|
+
padding-left: 40rpx;
|
|
56
|
+
padding-right: 40rpx;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.custom-tips {
|
|
60
|
+
position: fixed;
|
|
61
|
+
z-index: 905;
|
|
62
|
+
box-sizing: border-box;
|
|
63
|
+
top: 0rpx;
|
|
64
|
+
width: 100%;
|
|
48
65
|
}
|
|
@@ -207,6 +207,49 @@ const cardRules = (language) => {
|
|
|
207
207
|
const ForeignPassortRules = (language) => {
|
|
208
208
|
const rules = dict.rules.foreignerRules
|
|
209
209
|
const { id_card_number, sur_name, first_name } = rules
|
|
210
|
+
return {
|
|
211
|
+
id_card_number: [
|
|
212
|
+
{ type: 'required', message: `${id_card_number.required[language]}` },
|
|
213
|
+
{ type: 'id_card_number', message: `${id_card_number.validate[language]}` }
|
|
214
|
+
],
|
|
215
|
+
nation: [
|
|
216
|
+
{ type: 'required', message: `${rules.nation.required[language]}` }
|
|
217
|
+
],
|
|
218
|
+
// sur_name: [
|
|
219
|
+
// { type: 'required', message: `${sur_name.required[language]}` },
|
|
220
|
+
// { type: 'surName', message: `${sur_name.validate[language]}` }
|
|
221
|
+
// ],
|
|
222
|
+
// first_name: [
|
|
223
|
+
// { type: 'required', message: `${first_name.required[language]}` },
|
|
224
|
+
// { type: 'firstName', message: `${first_name.validate[language]}` }
|
|
225
|
+
// ],
|
|
226
|
+
sex: [
|
|
227
|
+
{ type: 'required', message: `${rules.sex[language]}` }
|
|
228
|
+
],
|
|
229
|
+
birthday: [
|
|
230
|
+
{ type: 'required', message: `${rules.birthday[language]}` }
|
|
231
|
+
],
|
|
232
|
+
cid_expire_date: [
|
|
233
|
+
{ type: 'required', message: `${rules.cid_expire_date[language]}` }
|
|
234
|
+
],
|
|
235
|
+
phone: [
|
|
236
|
+
{ type: 'required', message: `${rules.phone.required[language]}` }
|
|
237
|
+
],
|
|
238
|
+
verify_expire_time: [
|
|
239
|
+
{ type: 'required', message: `${verify_expire_time.required[language]}` },
|
|
240
|
+
{ type: 'verify_expire_time', message: `${verify_expire_time.required[language]}` }
|
|
241
|
+
],
|
|
242
|
+
agree: [
|
|
243
|
+
{ type: 'required', message: `${agree.required[language]}` },
|
|
244
|
+
{ type: 'agree', message: `${agree.required[language]}` }
|
|
245
|
+
]
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// 外国人护照(人脸识别用)
|
|
250
|
+
const ForeignPassortRulesFace = (language) => {
|
|
251
|
+
const rules = dict.rules.foreignerRulesFace
|
|
252
|
+
const { id_card_number, sur_name, first_name } = rules
|
|
210
253
|
return {
|
|
211
254
|
id_card_number: [
|
|
212
255
|
{ type: 'required', message: `${id_card_number.required[language]}` },
|
|
@@ -252,6 +295,7 @@ module.exports = {
|
|
|
252
295
|
residenceAuthRules,
|
|
253
296
|
cardRules,
|
|
254
297
|
ForeignPassortRules,
|
|
298
|
+
ForeignPassortRulesFace,
|
|
255
299
|
HMPassRulesForeign,
|
|
256
300
|
HMORulesMore,
|
|
257
301
|
residenceRules
|