afc44feb by joe

密码找回

1 parent 0d4ba490
1 module.exports = { 1 module.exports = {
2 logout : "/pingan_hklife_webapi/logout", 2 logout : "/pingan_hklife_webapi/user/logout",
3 // 是否显示图形验证码接口 3 // 是否显示图形验证码接口
4 stdIsShowImageVcode : "/pingan_hklife_webapi/auth/stdIsShowImageVcode", 4 stdIsShowImageVcode : "/pingan_hklife_webapi/auth/stdIsShowImageVcode",
5 // 刷新图形验证码接口 5 // 刷新图形验证码接口
...@@ -14,13 +14,16 @@ module.exports = { ...@@ -14,13 +14,16 @@ module.exports = {
14 gsLogin : "/pingan_hklife_webapi/auth/gsLogin", 14 gsLogin : "/pingan_hklife_webapi/auth/gsLogin",
15 // 注册接口 15 // 注册接口
16 stdRegister : "/pingan_hklife_webapi/auth/stdRegister", 16 stdRegister : "/pingan_hklife_webapi/auth/stdRegister",
17 // 找回密码定位用户信息 17 // 修改密码
18 gsLocateUserV2 : "/pingan_hklife_webapi/auth/gsLocateUserV2", 18 changePassword : "/pingan_hklife_webapi/password/change",
19 // 账户整合忘记密码重置用户密码
20 gsResetPwd : "/pingan_hklife_webapi/auth/gsResetPwd",
21 // 账户整合修改密码接口
22 gsModifyPwd : "/pingan_hklife_webapi/auth/gsModifyPwd",
23 // 短信验证码登录 19 // 短信验证码登录
24 otpLogin : "/pingan_hklife_webapi/otpLogin", 20 otpLogin : "/pingan_hklife_webapi/otpLogin",
25 21 // 找回密码:定位用户信息
22 locateUserInfo : "/pingan_hklife_webapi/reset/locateUserInfo",
23 // 找回密码:发送验证码
24 sendOtp : "/pingan_hklife_webapi/reset/sendOtp",
25 // 找回密码:校验验证码
26 checkOtp : "/pingan_hklife_webapi/reset/checkOtp",
27 // 找回密码:重置密码
28 resetPwd : "/pingan_hklife_webapi/reset/resetPwd",
26 } 29 }
...\ No newline at end of file ...\ No newline at end of file
......
1 import axiosIns from 'axios'; 1 import axiosIns from 'axios';
2 import state from '@/store/state.js';
2 // import { 3 // import {
3 // Toast 4 // Toast
4 // } from 'vant'; 5 // } from 'vant';
...@@ -15,7 +16,8 @@ function Toast(msg) { ...@@ -15,7 +16,8 @@ function Toast(msg) {
15 // let base = COM.baseUrl; 16 // let base = COM.baseUrl;
16 let base = ""; 17 let base = "";
17 const axios = axiosIns.create({ 18 const axios = axiosIns.create({
18 baseURL: process.env.VUE_APP_BASE_URL || "http://localhost:9101", 19 // baseURL: process.env.VUE_APP_BASE_URL || "http://localhost:9101",
20 baseURL: "http://localhost:9101",
19 timeout: 5000 21 timeout: 5000
20 }) 22 })
21 23
...@@ -61,10 +63,10 @@ axios.interceptors.response.use( ...@@ -61,10 +63,10 @@ axios.interceptors.response.use(
61 } 63 }
62 }); 64 });
63 break; 65 break;
64 // 403 token过期 66 // 403 token过期
65 // 登录过期对用户进行提示 67 // 登录过期对用户进行提示
66 // 清除本地token和清空vuex中token对象 68 // 清除本地token和清空vuex中token对象
67 // 跳转登录页面 69 // 跳转登录页面
68 case 403: 70 case 403:
69 Toast({ 71 Toast({
70 message: '登录过期,请重新登录', 72 message: '登录过期,请重新登录',
...@@ -84,7 +86,7 @@ axios.interceptors.response.use( ...@@ -84,7 +86,7 @@ axios.interceptors.response.use(
84 }); 86 });
85 }, 1000); 87 }, 1000);
86 break; 88 break;
87 // 404请求不存在 89 // 404请求不存在
88 case 404: 90 case 404:
89 Toast({ 91 Toast({
90 message: '网络请求不存在', 92 message: '网络请求不存在',
...@@ -92,7 +94,7 @@ axios.interceptors.response.use( ...@@ -92,7 +94,7 @@ axios.interceptors.response.use(
92 forbidClick: true 94 forbidClick: true
93 }); 95 });
94 break; 96 break;
95 // 其他错误,直接抛出错误提示 97 // 其他错误,直接抛出错误提示
96 default: 98 default:
97 Toast({ 99 Toast({
98 message: error.response.data.message, 100 message: error.response.data.message,
...@@ -119,11 +121,20 @@ let formDataHeaders = { ...@@ -119,11 +121,20 @@ let formDataHeaders = {
119 export const httpGet = params => { 121 export const httpGet = params => {
120 let { 122 let {
121 url, 123 url,
122 data 124 data,
125 sid
123 } = params; 126 } = params;
127 let headers = {};
128 if (sid) {
129 headers = {
130 headers : {
131 sid : state.userInfo.sid
132 }
133 }
134 }
124 return axios.get(`${base}${url}`, { 135 return axios.get(`${base}${url}`, {
125 params: data 136 params: data
126 }).then(res => res.data.content); 137 }, headers).then(res => res.data.content);
127 } 138 }
128 139
129 /** 140 /**
...@@ -133,9 +144,18 @@ export const httpGet = params => { ...@@ -133,9 +144,18 @@ export const httpGet = params => {
133 export const httpPost = params => { 144 export const httpPost = params => {
134 let { 145 let {
135 url, 146 url,
136 data 147 data,
148 sid
137 } = params; 149 } = params;
138 return axios.post(`${base}${url}`, data).then(res => res.data.content); 150 let headers = {};
151 if (sid) {
152 headers = {
153 headers : {
154 sid : state.userInfo.sid
155 }
156 }
157 }
158 return axios.post(`${base}${url}`, data, headers).then(res => res.data.content);
139 } 159 }
140 160
141 161
......
...@@ -13,90 +13,90 @@ module.exports = { ...@@ -13,90 +13,90 @@ module.exports = {
13 name: "login", 13 name: "login",
14 path: "", 14 path: "",
15 list: [{ 15 list: [{
16 name: "register", 16 name: "register",
17 path: "/register", 17 path: "/register",
18 type: "noAuth", 18 type: "noAuth",
19 value: "" 19 value: ""
20 }, { 20 }, {
21 name: "login", 21 name: "login",
22 path: "/login", 22 path: "/login",
23 type: "noAuth", 23 type: "noAuth",
24 value: "" 24 value: ""
25 }, 25 },
26 { 26 {
27 name: "modify password", 27 name: "modify password",
28 path: "", 28 path: "/password/reset",
29 type: "auth", 29 type: "auth",
30 value: "" 30 value: ""
31 }, 31 },
32 { 32 {
33 name: "logout", 33 name: "logout",
34 path: "", 34 path: "",
35 type: "auth", 35 type: "auth",
36 value: "logout" 36 value: "logout"
37 }, 37 },
38 ] 38 ]
39 }, 39 },
40 navList: [{ 40 navList: [{
41 name: "Product description", 41 name: "Product description",
42 path: "/product", 42 path: "/product",
43 list: [] 43 list: []
44 },
45 {
46 name: "Customer service",
47 path: "/custom/product",
48 list: [{
49 name: "Contact us",
50 path: "/custom/service?q=m1"
44 }, 51 },
45 { 52 {
46 name: "Customer service", 53 name: "Pay premium",
47 path: "/custom/product", 54 path: "/custom/service?q=m2"
48 list: [{
49 name: "Contact us",
50 path: "/custom/service?q=m1"
51 },
52 {
53 name: "Pay premium",
54 path: "/custom/service?q=m2"
55 },
56 {
57 name: "Query policy",
58 path: "/custom/service?q=m3"
59 },
60 {
61 name: "Change policy",
62 path: "/custom/service?q=m4"
63 },
64 {
65 name: "Claim report",
66 path: "/custom/service?q=m5"
67 },
68 {
69 name: "Reservation service",
70 path: "/custom/service?q=m6"
71 },
72 {
73 name: "Suggestions",
74 path: "/custom/service?q=m7"
75 },
76 {
77 name: "Common form",
78 path: "/custom/service?q=m8"
79 },
80 ]
81 }, 55 },
82 { 56 {
83 name: "News", 57 name: "Query policy",
84 path: "/news/list", 58 path: "/custom/service?q=m3"
85 list: []
86 }, 59 },
87 { 60 {
88 name: "About", 61 name: "Change policy",
89 path: "", 62 path: "/custom/service?q=m4"
90 list: [{
91 name: "Company",
92 path: "/profile"
93 },
94 {
95 name: "Leaders",
96 path: ""
97 },
98 ]
99 }, 63 },
64 {
65 name: "Claim report",
66 path: "/custom/service?q=m5"
67 },
68 {
69 name: "Reservation service",
70 path: "/custom/service?q=m6"
71 },
72 {
73 name: "Suggestions",
74 path: "/custom/service?q=m7"
75 },
76 {
77 name: "Common form",
78 path: "/custom/service?q=m8"
79 },
80 ]
81 },
82 {
83 name: "News",
84 path: "/news/list",
85 list: []
86 },
87 {
88 name: "About",
89 path: "",
90 list: [{
91 name: "Company",
92 path: "/profile"
93 },
94 {
95 name: "Leaders",
96 path: ""
97 },
98 ]
99 },
100 ] 100 ]
101 }, 101 },
102 footer: { 102 footer: {
...@@ -136,6 +136,9 @@ module.exports = { ...@@ -136,6 +136,9 @@ module.exports = {
136 verifyCodePlaceholder: "驗證碼", 136 verifyCodePlaceholder: "驗證碼",
137 verifyCodeGet: "獲取驗證碼", 137 verifyCodeGet: "獲取驗證碼",
138 }, 138 },
139 session: {
140 sidExpire: "長時間未操作,為了您賬戶的安全,請登錄後再操作",
141 },
139 register: { 142 register: {
140 mobileOptions: [{ 143 mobileOptions: [{
141 type: "hk", 144 type: "hk",
...@@ -163,18 +166,33 @@ module.exports = { ...@@ -163,18 +166,33 @@ module.exports = {
163 newPasswordSurePlaceholder: "輸入登錄密碼", 166 newPasswordSurePlaceholder: "輸入登錄密碼",
164 sure: "確認", 167 sure: "確認",
165 }, 168 },
169 passwordCheck: {
170 error1: "密碼長度不少於8位",
171 error2: "密碼中必須包含數字、字符以及特殊號碼",
172 error3: "两次密码不一致,请确认后重新输入",
173 error4: "密碼修改失敗,請稍後再試,或拨打客服电话95511解决",
174 error5: "舊密碼不正確,請重新輸入",
175 success: "密码修改成功"
176 },
166 passwordReset: { 177 passwordReset: {
178 oldPwd: "旧密码",
179 oldPwdPlaceholde: "請輸入舊密碼",
180 cidExpire: "長時間未操作,為了您賬戶的安全,請重新開始",
167 type1: { 181 type1: {
168 title: "密碼找回", 182 title: "密碼找回",
169 t1: "用戶輸入信息", 183 t1: "用戶輸入信息",
170 t1Placeholder: "手機號/一賬通用戶名", 184 t1Placeholder: "手機號/一賬通用戶名",
171 submit: "確認", 185 submit: "確認",
186 error: "您的手機號或證件號輸入錯誤,請核對后重新輸入",
172 }, 187 },
173 type2: { 188 type2: {
174 title: "密碼找回", 189 title: "密碼找回",
175 t1: "手機短信驗證碼", 190 t1: "手機短信驗證碼",
176 t1Placeholder: "請輸入驗證碼", 191 t1Placeholder: "請輸入驗證碼",
177 submit: "確認", 192 submit: "確認",
193 error1: "短信驗證碼輸入錯誤,請核對後重新輸入",
194 error2: "短信驗證碼已經過期,請重新獲取驗證碼",
195 error3: "短信验证码发放时间少于1分钟,请稍后再试",
178 }, 196 },
179 type3: { 197 type3: {
180 title: "密碼找回", 198 title: "密碼找回",
...@@ -189,6 +207,8 @@ module.exports = { ...@@ -189,6 +207,8 @@ module.exports = {
189 t2: "確認密碼", 207 t2: "確認密碼",
190 t2Placeholder: "請重新輸入新密碼", 208 t2Placeholder: "請重新輸入新密碼",
191 submit: "確認", 209 submit: "確認",
210 error1: "密碼長度不少於8位",
211 error2: "密碼中必須包含數字、字符以及特殊號碼",
192 } 212 }
193 }, 213 },
194 infomationImprove: { 214 infomationImprove: {
...@@ -203,8 +223,8 @@ module.exports = { ...@@ -203,8 +223,8 @@ module.exports = {
203 t4Placeholder: "", 223 t4Placeholder: "",
204 t5: "證件號碼", 224 t5: "證件號碼",
205 t5Placeholder: "", 225 t5Placeholder: "",
206 submit:"確認", 226 submit: "確認",
207 cancel:"跳過", 227 cancel: "跳過",
208 }, 228 },
209 index: { 229 index: {
210 news: "新聞資訊", 230 news: "新聞資訊",
...@@ -287,71 +307,71 @@ module.exports = { ...@@ -287,71 +307,71 @@ module.exports = {
287 head4: "附件", 307 head4: "附件",
288 download: "下載文檔", 308 download: "下載文檔",
289 form: [{ 309 form: [{
290 type: "繳費類", 310 type: "繳費類",
291 list: [{ 311 list: [{
292 name: "「電子入賬服務」及銀行戶口<br>直接付款授權申請", 312 name: "「電子入賬服務」及銀行戶口<br>直接付款授權申請",
293 desc: "申請設立「 電子入賬服務」 及銀行戶口<br>直接付款授權時須提供", 313 desc: "申請設立「 電子入賬服務」 及銀行戶口<br>直接付款授權時須提供",
294 download: "", 314 download: "",
295 },
296 {
297 name: "信用卡戶口直接付款授權書",
298 desc: "申請信用卡戶口直接付款授權時須提供",
299 download: "",
300 }
301 ]
302 }, 315 },
303 { 316 {
304 type: "保單變更類", 317 name: "信用卡戶口直接付款授權書",
305 list: [{ 318 desc: "申請信用卡戶口直接付款授權時須提供",
306 name: "保險合同解除申請書", 319 download: "",
307 desc: "退保、猶豫期退保業務適用", 320 }
308 download: "", 321 ]
309 }, 322 },
310 { 323 {
311 name: "保險合同變更申請書( 保單貸款還款類)", 324 type: "保單變更類",
312 desc: "保單貸款、還款業務適用", 325 list: [{
313 download: "", 326 name: "保險合同解除申請書",
314 }, 327 desc: "退保、猶豫期退保業務適用",
315 { 328 download: "",
316 name: "保險合同變更申請書( 保險合同計劃變更類)", 329 },
317 desc: "加保、減保、新增附險、復效等業務適用", 330 {
318 download: "", 331 name: "保險合同變更申請書( 保單貸款還款類)",
319 }, 332 desc: "保單貸款、還款業務適用",
320 { 333 download: "",
321 name: "保險合同變更申請書( 客戶信息變更類)",
322 desc: "基本信息變更業務適用",
323 download: "",
324 },
325 {
326 name: "保險合同變更申請書( 客戶權益變更類)",
327 desc: "交費方式、自墊選擇權變更、補發等業務適用",
328 download: "",
329 },
330 {
331 name: "授權委托書",
332 desc: "委托他人代辦時須提供",
333 download: "",
334 },
335 {
336 name: "稅收聲明",
337 desc: "CRS要求",
338 download: "",
339 },
340 {
341 name: "健康告知",
342 desc: "須二次核保的業務須提供",
343 download: "",
344 }
345 ]
346 }, 334 },
347 { 335 {
348 type: "理賠類", 336 name: "保險合同變更申請書( 保險合同計劃變更類)",
349 list: [{ 337 desc: "加保、減保、新增附險、復效等業務適用",
350 name: "理賠申請書", 338 download: "",
351 desc: "紙質申請的應備文件",
352 download: "",
353 }]
354 }, 339 },
340 {
341 name: "保險合同變更申請書( 客戶信息變更類)",
342 desc: "基本信息變更業務適用",
343 download: "",
344 },
345 {
346 name: "保險合同變更申請書( 客戶權益變更類)",
347 desc: "交費方式、自墊選擇權變更、補發等業務適用",
348 download: "",
349 },
350 {
351 name: "授權委托書",
352 desc: "委托他人代辦時須提供",
353 download: "",
354 },
355 {
356 name: "稅收聲明",
357 desc: "CRS要求",
358 download: "",
359 },
360 {
361 name: "健康告知",
362 desc: "須二次核保的業務須提供",
363 download: "",
364 }
365 ]
366 },
367 {
368 type: "理賠類",
369 list: [{
370 name: "理賠申請書",
371 desc: "紙質申請的應備文件",
372 download: "",
373 }]
374 },
355 ] 375 ]
356 }, 376 },
357 policyChangeGuide: { 377 policyChangeGuide: {
...@@ -363,100 +383,100 @@ module.exports = { ...@@ -363,100 +383,100 @@ module.exports = {
363 head5: "應備材料", 383 head5: "應備材料",
364 download: "下載文檔", 384 download: "下載文檔",
365 form: [{ 385 form: [{
366 project: "退保", 386 project: "退保",
367 content: "在猶豫期後解除合同,公司將退還保單現金價值或未滿期凈保費。(待產品精算確認)", 387 content: "在猶豫期後解除合同,公司將退還保單現金價值或未滿期凈保費。(待產品精算確認)",
368 applicant: "投保人", 388 applicant: "投保人",
369 receptionTime: "保單效力終止前", 389 receptionTime: "保單效力終止前",
370 materialList: [{ 390 materialList: [{
371 name: "保險單", 391 name: "保險單",
372 }, 392 },
373 { 393 {
374 name: "申請書", 394 name: "申請書",
375 type: 1, 395 type: 1,
376 }, 396 },
377 { 397 {
378 name: "投保人有效身份證件", 398 name: "投保人有效身份證件",
379 }, 399 },
380 { 400 {
381 name: "存折银行卡相关", 401 name: "存折银行卡相关",
382 } 402 }
383 ], 403 ],
404 },
405 {
406 project: "猶豫期退保",
407 content: "在猶豫期內提出解除合同,公司會無息退還全部保費",
408 applicant: "投保人",
409 receptionTime: "猶豫期結束前",
410 materialList: [{
411 name: "保險單",
412 },
413 {
414 name: "申請書",
415 type: 1,
384 }, 416 },
385 { 417 {
386 project: "猶豫期退保", 418 name: "投保人有效身份證件",
387 content: "在猶豫期內提出解除合同,公司會無息退還全部保費",
388 applicant: "投保人",
389 receptionTime: "猶豫期結束前",
390 materialList: [{
391 name: "保險單",
392 },
393 {
394 name: "申請書",
395 type: 1,
396 },
397 {
398 name: "投保人有效身份證件",
399 },
400 {
401 name: "存折银行卡相关",
402 },
403 {
404 name: "首期保費發票",
405 }
406 ],
407 }, 419 },
408 { 420 {
409 project: "客戶資料變更", 421 name: "存折银行卡相关",
410 projectType: 1, 422 },
411 path: "/custom/service", 423 {
412 query: { 424 name: "首期保費發票",
413 q: "m42" 425 }
414 }, 426 ],
415 content: "投保人、受保人、受益人的個人信息變更", 427 },
416 applicant: "投保人", 428 {
417 receptionTime: "不限", 429 project: "客戶資料變更",
418 materialList: [{ 430 projectType: 1,
419 name: "申請書", 431 path: "/custom/service",
420 type: 1, 432 query: {
421 }, 433 q: "m42"
422 { 434 },
423 name: "必要的證明材料", 435 content: "投保人、受保人、受益人的個人信息變更",
424 } 436 applicant: "投保人",
425 ], 437 receptionTime: "不限",
438 materialList: [{
439 name: "申請書",
440 type: 1,
426 }, 441 },
427 { 442 {
428 project: "聯系方式變更", 443 name: "必要的證明材料",
429 projectType: 1, 444 }
430 path: "/custom/service", 445 ],
431 query: { 446 },
432 q: "m43" 447 {
433 }, 448 project: "聯系方式變更",
434 content: "地址、電話等信息的變更", 449 projectType: 1,
435 applicant: "投保人", 450 path: "/custom/service",
436 receptionTime: "不限", 451 query: {
437 materialList: [{ 452 q: "m43"
438 name: "申請書", 453 },
439 type: 1, 454 content: "地址、電話等信息的變更",
440 }, 455 applicant: "投保人",
441 { 456 receptionTime: "不限",
442 name: "投保人有效身份證件", 457 materialList: [{
443 } 458 name: "申請書",
444 ], 459 type: 1,
445 }, 460 },
446 { 461 {
447 project: "交費方式變更", 462 name: "投保人有效身份證件",
448 content: "更改保單的續期交費方式或交費賬號", 463 }
449 applicant: "投保人", 464 ],
450 receptionTime: "保單交費期滿前", 465 },
451 materialList: [{ 466 {
452 name: "申請書", 467 project: "交費方式變更",
453 type: 1, 468 content: "更改保單的續期交費方式或交費賬號",
454 }, 469 applicant: "投保人",
455 { 470 receptionTime: "保單交費期滿前",
456 name: "保險單", 471 materialList: [{
457 } 472 name: "申請書",
458 ], 473 type: 1,
459 }, 474 },
475 {
476 name: "保險單",
477 }
478 ],
479 },
460 ] 480 ]
461 }, 481 },
462 policyChangeContact: { 482 policyChangeContact: {
......
...@@ -13,90 +13,90 @@ module.exports = { ...@@ -13,90 +13,90 @@ module.exports = {
13 name: "登入", 13 name: "登入",
14 path: "", 14 path: "",
15 list: [{ 15 list: [{
16 name: "註冊", 16 name: "註冊",
17 path: "/register", 17 path: "/register",
18 type: "noAuth", 18 type: "noAuth",
19 value: "" 19 value: ""
20 }, { 20 }, {
21 name: "登入", 21 name: "登入",
22 path: "/login", 22 path: "/login",
23 type: "noAuth", 23 type: "noAuth",
24 value: "" 24 value: ""
25 }, 25 },
26 { 26 {
27 name: "修改密碼", 27 name: "修改密碼",
28 path: "", 28 path: "/password/reset",
29 type: "auth", 29 type: "auth",
30 value: "" 30 value: ""
31 }, 31 },
32 { 32 {
33 name: "登出", 33 name: "登出",
34 path: "", 34 path: "",
35 type: "auth", 35 type: "auth",
36 value: "logout" 36 value: "logout"
37 } 37 }
38 ] 38 ]
39 }, 39 },
40 navList: [{ 40 navList: [{
41 name: "產品介紹", 41 name: "產品介紹",
42 path: "/product", 42 path: "/product",
43 list: [] 43 list: []
44 },
45 {
46 name: "客戶服務",
47 path: "/custom/product",
48 list: [{
49 name: "聯系我們",
50 path: "/custom/service?q=m1"
44 }, 51 },
45 { 52 {
46 name: "客戶服務", 53 name: "繳付保費",
47 path: "/custom/product", 54 path: "/custom/service?q=m2"
48 list: [{
49 name: "聯系我們",
50 path: "/custom/service?q=m1"
51 },
52 {
53 name: "繳付保費",
54 path: "/custom/service?q=m2"
55 },
56 {
57 name: "保單查詢",
58 path: "/custom/service?q=m3"
59 },
60 {
61 name: "保單變更",
62 path: "/custom/service?q=m4"
63 },
64 {
65 name: "理賠申請",
66 path: "/custom/service?q=m5"
67 },
68 {
69 name: "預約服務",
70 path: "/custom/service?q=m6"
71 },
72 {
73 name: "投訴受理",
74 path: "/custom/service?q=m7"
75 },
76 {
77 name: "常用表格",
78 path: "/custom/service?q=m8"
79 },
80 ]
81 }, 55 },
82 { 56 {
83 name: "新聞資訊", 57 name: "保單查詢",
84 path: "/news/list", 58 path: "/custom/service?q=m3"
85 list: []
86 }, 59 },
87 { 60 {
88 name: "關於平安人壽", 61 name: "保單變更",
89 path: "", 62 path: "/custom/service?q=m4"
90 list: [{
91 name: "公司簡介",
92 path: "/profile"
93 },
94 {
95 name: "領導人概況",
96 path: ""
97 },
98 ]
99 }, 63 },
64 {
65 name: "理賠申請",
66 path: "/custom/service?q=m5"
67 },
68 {
69 name: "預約服務",
70 path: "/custom/service?q=m6"
71 },
72 {
73 name: "投訴受理",
74 path: "/custom/service?q=m7"
75 },
76 {
77 name: "常用表格",
78 path: "/custom/service?q=m8"
79 },
80 ]
81 },
82 {
83 name: "新聞資訊",
84 path: "/news/list",
85 list: []
86 },
87 {
88 name: "關於平安人壽",
89 path: "",
90 list: [{
91 name: "公司簡介",
92 path: "/profile"
93 },
94 {
95 name: "領導人概況",
96 path: ""
97 },
98 ]
99 },
100 ] 100 ]
101 }, 101 },
102 footer: { 102 footer: {
...@@ -163,18 +163,36 @@ module.exports = { ...@@ -163,18 +163,36 @@ module.exports = {
163 newPasswordSurePlaceholder: "輸入登錄密碼", 163 newPasswordSurePlaceholder: "輸入登錄密碼",
164 sure: "確認", 164 sure: "確認",
165 }, 165 },
166 session: {
167 sidExpire: "長時間未操作,為了您賬戶的安全,請登錄後再操作",
168 },
169 passwordCheck: {
170 error1: "密碼長度不少於8位",
171 error2: "密碼中必須包含數字、字符以及特殊號碼",
172 error3: "兩次密碼不一致,請確認後重新輸入",
173 error4 : "密碼修改失敗,請稍後再試,或撥打客服電話95511解決",
174 error5 : "舊密碼不正確,請重新輸入",
175 success: "密碼修改成功"
176 },
166 passwordReset: { 177 passwordReset: {
178 oldPwd : "舊密碼",
179 oldPwdPlaceholde : "請輸入舊密碼",
180 cidExpire: "長時間未操作,為了您賬戶的安全,請重新開始",
167 type1: { 181 type1: {
168 title: "密碼找回", 182 title: "密碼找回",
169 t1: "用戶輸入信息", 183 t1: "用戶輸入信息",
170 t1Placeholder: "手機號/一賬通用戶名", 184 t1Placeholder: "手機號/證件號",
171 submit: "確認", 185 submit: "確認",
186 error: "您的手機號或證件號輸入錯誤,請核對后重新輸入",
172 }, 187 },
173 type2: { 188 type2: {
174 title: "密碼找回", 189 title: "密碼找回",
175 t1: "手機短信驗證碼", 190 t1: "手機短信驗證碼",
176 t1Placeholder: "請輸入驗證碼", 191 t1Placeholder: "請輸入驗證碼",
177 submit: "確認", 192 submit: "確認",
193 error1: "短信驗證碼輸入錯誤,請核對後重新輸入",
194 error2: "短信驗證碼已經過期,請重新獲取驗證碼",
195 error3: "短信驗證碼發放時間少於1分鐘,請稍後再試",
178 }, 196 },
179 type3: { 197 type3: {
180 title: "密碼找回", 198 title: "密碼找回",
...@@ -203,8 +221,8 @@ module.exports = { ...@@ -203,8 +221,8 @@ module.exports = {
203 t4Placeholder: "", 221 t4Placeholder: "",
204 t5: "證件號碼", 222 t5: "證件號碼",
205 t5Placeholder: "", 223 t5Placeholder: "",
206 submit:"確認", 224 submit: "確認",
207 cancel:"跳過", 225 cancel: "跳過",
208 }, 226 },
209 index: { 227 index: {
210 news: "新聞資訊", 228 news: "新聞資訊",
...@@ -287,71 +305,71 @@ module.exports = { ...@@ -287,71 +305,71 @@ module.exports = {
287 head4: "附件", 305 head4: "附件",
288 download: "下載文檔", 306 download: "下載文檔",
289 form: [{ 307 form: [{
290 type: "繳費類", 308 type: "繳費類",
291 list: [{ 309 list: [{
292 name: "「電子入賬服務」及銀行戶口<br>直接付款授權申請", 310 name: "「電子入賬服務」及銀行戶口<br>直接付款授權申請",
293 desc: "申請設立「 電子入賬服務」 及銀行戶口<br>直接付款授權時須提供", 311 desc: "申請設立「 電子入賬服務」 及銀行戶口<br>直接付款授權時須提供",
294 download: "", 312 download: "",
295 },
296 {
297 name: "信用卡戶口直接付款授權書",
298 desc: "申請信用卡戶口直接付款授權時須提供",
299 download: "",
300 }
301 ]
302 }, 313 },
303 { 314 {
304 type: "保單變更類", 315 name: "信用卡戶口直接付款授權書",
305 list: [{ 316 desc: "申請信用卡戶口直接付款授權時須提供",
306 name: "保險合同解除申請書", 317 download: "",
307 desc: "退保、猶豫期退保業務適用", 318 }
308 download: "", 319 ]
309 }, 320 },
310 { 321 {
311 name: "保險合同變更申請書( 保單貸款還款類)", 322 type: "保單變更類",
312 desc: "保單貸款、還款業務適用", 323 list: [{
313 download: "", 324 name: "保險合同解除申請書",
314 }, 325 desc: "退保、猶豫期退保業務適用",
315 { 326 download: "",
316 name: "保險合同變更申請書( 保險合同計劃變更類)", 327 },
317 desc: "加保、減保、新增附險、復效等業務適用", 328 {
318 download: "", 329 name: "保險合同變更申請書( 保單貸款還款類)",
319 }, 330 desc: "保單貸款、還款業務適用",
320 { 331 download: "",
321 name: "保險合同變更申請書( 客戶信息變更類)",
322 desc: "基本信息變更業務適用",
323 download: "",
324 },
325 {
326 name: "保險合同變更申請書( 客戶權益變更類)",
327 desc: "交費方式、自墊選擇權變更、補發等業務適用",
328 download: "",
329 },
330 {
331 name: "授權委托書",
332 desc: "委托他人代辦時須提供",
333 download: "",
334 },
335 {
336 name: "稅收聲明",
337 desc: "CRS要求",
338 download: "",
339 },
340 {
341 name: "健康告知",
342 desc: "須二次核保的業務須提供",
343 download: "",
344 }
345 ]
346 }, 332 },
347 { 333 {
348 type: "理賠類", 334 name: "保險合同變更申請書( 保險合同計劃變更類)",
349 list: [{ 335 desc: "加保、減保、新增附險、復效等業務適用",
350 name: "理賠申請書", 336 download: "",
351 desc: "紙質申請的應備文件",
352 download: "",
353 }]
354 }, 337 },
338 {
339 name: "保險合同變更申請書( 客戶信息變更類)",
340 desc: "基本信息變更業務適用",
341 download: "",
342 },
343 {
344 name: "保險合同變更申請書( 客戶權益變更類)",
345 desc: "交費方式、自墊選擇權變更、補發等業務適用",
346 download: "",
347 },
348 {
349 name: "授權委托書",
350 desc: "委托他人代辦時須提供",
351 download: "",
352 },
353 {
354 name: "稅收聲明",
355 desc: "CRS要求",
356 download: "",
357 },
358 {
359 name: "健康告知",
360 desc: "須二次核保的業務須提供",
361 download: "",
362 }
363 ]
364 },
365 {
366 type: "理賠類",
367 list: [{
368 name: "理賠申請書",
369 desc: "紙質申請的應備文件",
370 download: "",
371 }]
372 },
355 ] 373 ]
356 }, 374 },
357 policyChangeGuide: { 375 policyChangeGuide: {
...@@ -363,100 +381,100 @@ module.exports = { ...@@ -363,100 +381,100 @@ module.exports = {
363 head5: "應備材料", 381 head5: "應備材料",
364 download: "下載文檔", 382 download: "下載文檔",
365 form: [{ 383 form: [{
366 project: "退保", 384 project: "退保",
367 content: "在猶豫期後解除合同,公司將退還保單現金價值或未滿期凈保費。(待產品精算確認)", 385 content: "在猶豫期後解除合同,公司將退還保單現金價值或未滿期凈保費。(待產品精算確認)",
368 applicant: "投保人", 386 applicant: "投保人",
369 receptionTime: "保單效力終止前", 387 receptionTime: "保單效力終止前",
370 materialList: [{ 388 materialList: [{
371 name: "保險單", 389 name: "保險單",
372 }, 390 },
373 { 391 {
374 name: "申請書", 392 name: "申請書",
375 type: 1, 393 type: 1,
376 }, 394 },
377 { 395 {
378 name: "投保人有效身份證件", 396 name: "投保人有效身份證件",
379 }, 397 },
380 { 398 {
381 name: "存折银行卡相关", 399 name: "存折银行卡相关",
382 } 400 }
383 ], 401 ],
402 },
403 {
404 project: "猶豫期退保",
405 content: "在猶豫期內提出解除合同,公司會無息退還全部保費",
406 applicant: "投保人",
407 receptionTime: "猶豫期結束前",
408 materialList: [{
409 name: "保險單",
410 },
411 {
412 name: "申請書",
413 type: 1,
384 }, 414 },
385 { 415 {
386 project: "猶豫期退保", 416 name: "投保人有效身份證件",
387 content: "在猶豫期內提出解除合同,公司會無息退還全部保費",
388 applicant: "投保人",
389 receptionTime: "猶豫期結束前",
390 materialList: [{
391 name: "保險單",
392 },
393 {
394 name: "申請書",
395 type: 1,
396 },
397 {
398 name: "投保人有效身份證件",
399 },
400 {
401 name: "存折银行卡相关",
402 },
403 {
404 name: "首期保費發票",
405 }
406 ],
407 }, 417 },
408 { 418 {
409 project: "客戶資料變更", 419 name: "存折银行卡相关",
410 projectType: 1, 420 },
411 path: "/custom/service", 421 {
412 query: { 422 name: "首期保費發票",
413 q: "m42" 423 }
414 }, 424 ],
415 content: "投保人、受保人、受益人的個人信息變更", 425 },
416 applicant: "投保人", 426 {
417 receptionTime: "不限", 427 project: "客戶資料變更",
418 materialList: [{ 428 projectType: 1,
419 name: "申請書", 429 path: "/custom/service",
420 type: 1, 430 query: {
421 }, 431 q: "m42"
422 { 432 },
423 name: "必要的證明材料", 433 content: "投保人、受保人、受益人的個人信息變更",
424 } 434 applicant: "投保人",
425 ], 435 receptionTime: "不限",
436 materialList: [{
437 name: "申請書",
438 type: 1,
426 }, 439 },
427 { 440 {
428 project: "聯系方式變更", 441 name: "必要的證明材料",
429 projectType: 1, 442 }
430 path: "/custom/service", 443 ],
431 query: { 444 },
432 q: "m43" 445 {
433 }, 446 project: "聯系方式變更",
434 content: "地址、電話等信息的變更", 447 projectType: 1,
435 applicant: "投保人", 448 path: "/custom/service",
436 receptionTime: "不限", 449 query: {
437 materialList: [{ 450 q: "m43"
438 name: "申請書", 451 },
439 type: 1, 452 content: "地址、電話等信息的變更",
440 }, 453 applicant: "投保人",
441 { 454 receptionTime: "不限",
442 name: "投保人有效身份證件", 455 materialList: [{
443 } 456 name: "申請書",
444 ], 457 type: 1,
445 }, 458 },
446 { 459 {
447 project: "交費方式變更", 460 name: "投保人有效身份證件",
448 content: "更改保單的續期交費方式或交費賬號", 461 }
449 applicant: "投保人", 462 ],
450 receptionTime: "保單交費期滿前", 463 },
451 materialList: [{ 464 {
452 name: "申請書", 465 project: "交費方式變更",
453 type: 1, 466 content: "更改保單的續期交費方式或交費賬號",
454 }, 467 applicant: "投保人",
455 { 468 receptionTime: "保單交費期滿前",
456 name: "保險單", 469 materialList: [{
457 } 470 name: "申請書",
458 ], 471 type: 1,
459 }, 472 },
473 {
474 name: "保險單",
475 }
476 ],
477 },
460 ] 478 ]
461 }, 479 },
462 policyChangeContact: { 480 policyChangeContact: {
......
...@@ -13,90 +13,90 @@ module.exports = { ...@@ -13,90 +13,90 @@ module.exports = {
13 name: "登陆", 13 name: "登陆",
14 path: "", 14 path: "",
15 list: [{ 15 list: [{
16 name: "注册", 16 name: "注册",
17 path: "/register", 17 path: "/register",
18 type: "noAuth", 18 type: "noAuth",
19 value: "" 19 value: ""
20 }, { 20 }, {
21 name: "登陆", 21 name: "登陆",
22 path: "/login", 22 path: "/login",
23 type: "noAuth", 23 type: "noAuth",
24 value: "" 24 value: ""
25 }, 25 },
26 { 26 {
27 name: "修改密码", 27 name: "修改密码",
28 path: "", 28 path: "/password/reset",
29 type: "auth", 29 type: "auth",
30 value: "" 30 value: ""
31 }, 31 },
32 { 32 {
33 name: "登出", 33 name: "登出",
34 path: "", 34 path: "",
35 type: "auth", 35 type: "auth",
36 value: "logout" 36 value: "logout"
37 } 37 }
38 ] 38 ]
39 }, 39 },
40 navList: [{ 40 navList: [{
41 name: "产品介绍", 41 name: "产品介绍",
42 path: "/product", 42 path: "/product",
43 list: [] 43 list: []
44 },
45 {
46 name: "客户服务",
47 path: "/custom/product",
48 list: [{
49 name: "联系我们",
50 path: "/custom/service?q=m1"
44 }, 51 },
45 { 52 {
46 name: "客户服务", 53 name: "缴付保费",
47 path: "/custom/product", 54 path: "/custom/service?q=m2"
48 list: [{
49 name: "联系我们",
50 path: "/custom/service?q=m1"
51 },
52 {
53 name: "缴付保费",
54 path: "/custom/service?q=m2"
55 },
56 {
57 name: "保单查询",
58 path: "/custom/service?q=m3"
59 },
60 {
61 name: "保单变更",
62 path: "/custom/service?q=m4"
63 },
64 {
65 name: "理赔申请",
66 path: "/custom/service?q=m5"
67 },
68 {
69 name: "预约服务",
70 path: "/custom/service?q=m6"
71 },
72 {
73 name: "投诉受理",
74 path: "/custom/service?q=m7"
75 },
76 {
77 name: "常用表格",
78 path: "/custom/service?q=m8"
79 },
80 ]
81 }, 55 },
82 { 56 {
83 name: "新闻资讯", 57 name: "保单查询",
84 path: "/news/list", 58 path: "/custom/service?q=m3"
85 list: []
86 }, 59 },
87 { 60 {
88 name: "关于平安人寿", 61 name: "保单变更",
89 path: "", 62 path: "/custom/service?q=m4"
90 list: [{ 63 },
91 name: "公司简介", 64 {
92 path: "/profile" 65 name: "理赔申请",
93 }, 66 path: "/custom/service?q=m5"
94 { 67 },
95 name: "领导人概况", 68 {
96 path: "" 69 name: "预约服务",
97 }, 70 path: "/custom/service?q=m6"
98 ] 71 },
72 {
73 name: "投诉受理",
74 path: "/custom/service?q=m7"
75 },
76 {
77 name: "常用表格",
78 path: "/custom/service?q=m8"
79 },
80 ]
81 },
82 {
83 name: "新闻资讯",
84 path: "/news/list",
85 list: []
86 },
87 {
88 name: "关于平安人寿",
89 path: "",
90 list: [{
91 name: "公司简介",
92 path: "/profile"
93 },
94 {
95 name: "领导人概况",
96 path: ""
99 }, 97 },
98 ]
99 },
100 ] 100 ]
101 }, 101 },
102 footer: { 102 footer: {
...@@ -136,6 +136,9 @@ module.exports = { ...@@ -136,6 +136,9 @@ module.exports = {
136 verifyCodePlaceholder: "验证码", 136 verifyCodePlaceholder: "验证码",
137 verifyCodeGet: "获取验证码", 137 verifyCodeGet: "获取验证码",
138 }, 138 },
139 session: {
140 sidExpire: "长时间未操作,为了您的账户安全,请登录后再操作",
141 },
139 register: { 142 register: {
140 mobileOptions: [{ 143 mobileOptions: [{
141 type: "hk", 144 type: "hk",
...@@ -163,18 +166,33 @@ module.exports = { ...@@ -163,18 +166,33 @@ module.exports = {
163 newPasswordSurePlaceholder: "输入登录密码", 166 newPasswordSurePlaceholder: "输入登录密码",
164 sure: "确认", 167 sure: "确认",
165 }, 168 },
169 passwordCheck: {
170 error1: "密码长度不少于8位",
171 error2: "密码中必须包含数字、字符以及特殊号码",
172 error3: "两次密码不一致,请确认后重新输入",
173 error4: "密码修改失败,请稍后再试,或拨打客服电话95511解决",
174 error5 : "旧密码不正确,请重新输入",
175 success: "密码修改成功"
176 },
166 passwordReset: { 177 passwordReset: {
178 oldPwd : "旧密码",
179 oldPwdPlaceholde : "请输入旧密码",
180 cidExpire: "长时间未操作,为了您的账户安全,请重新开始",
167 type1: { 181 type1: {
168 title: "密码找回", 182 title: "密码找回",
169 t1: "用户输入信息", 183 t1: "用户输入信息",
170 t1Placeholder: "手机号/一账通用户名", 184 t1Placeholder: "手机号/证件号",
171 submit: "确认", 185 submit: "确认",
186 error: "您的手机号或证件号输入错误,请核对后重新输入",
172 }, 187 },
173 type2: { 188 type2: {
174 title: "密码找回", 189 title: "密码找回",
175 t1: "手机短信验证码", 190 t1: "手机短信验证码",
176 t1Placeholder: "请输入验证码", 191 t1Placeholder: "请输入验证码",
177 submit: "确认", 192 submit: "确认",
193 error1: "短信验证码输入错误,请核对后重新输入",
194 error2: "短信验证码已经过期,请重新获取验证码",
195 error3: "短信验证码发放时间少于1分钟,请稍后再试",
178 }, 196 },
179 type3: { 197 type3: {
180 title: "密码找回", 198 title: "密码找回",
...@@ -203,8 +221,8 @@ module.exports = { ...@@ -203,8 +221,8 @@ module.exports = {
203 t4Placeholder: "", 221 t4Placeholder: "",
204 t5: "证件号码", 222 t5: "证件号码",
205 t5Placeholder: "", 223 t5Placeholder: "",
206 submit:"确认", 224 submit: "确认",
207 cancel:"跳过", 225 cancel: "跳过",
208 }, 226 },
209 index: { 227 index: {
210 news: "新闻资讯", 228 news: "新闻资讯",
...@@ -287,72 +305,72 @@ module.exports = { ...@@ -287,72 +305,72 @@ module.exports = {
287 head4: "附件", 305 head4: "附件",
288 download: "下载文档", 306 download: "下载文档",
289 form: [{ 307 form: [{
290 type: "缴费类", 308 type: "缴费类",
291 list: [{ 309 list: [{
292 name: "「电子入账服务」及银行户口<br>直接付款授权申请", 310 name: "「电子入账服务」及银行户口<br>直接付款授权申请",
293 desc: "申请设立「电子入账服务」及银行户口<br>直接付款授权时须提供", 311 desc: "申请设立「电子入账服务」及银行户口<br>直接付款授权时须提供",
294 download: "", 312 download: "",
295 },
296 {
297 name: "信用卡户口直接付款授权书",
298 desc: "申请信用卡户口直接付款授权时须提供",
299 download: "",
300 }
301 ]
302 }, 313 },
303 { 314 {
304 type: "保单变更类", 315 name: "信用卡户口直接付款授权书",
305 list: [{ 316 desc: "申请信用卡户口直接付款授权时须提供",
306 name: "保险合同解除申请书", 317 download: "",
307 desc: "退保、犹豫期退保业务适用", 318 }
308 download: "", 319 ]
309 }, 320 },
310 { 321 {
311 name: "保险合同变更申请书(保单贷款还款类)", 322 type: "保单变更类",
312 desc: "保单贷款、还款业务适用", 323 list: [{
313 download: "", 324 name: "保险合同解除申请书",
314 }, 325 desc: "退保、犹豫期退保业务适用",
315 { 326 download: "",
316 name: "保险合同变更申请书(保险合同计划变更类)", 327 },
317 desc: "加保、减保、新增附险、复效等业务适用", 328 {
318 download: "", 329 name: "保险合同变更申请书(保单贷款还款类)",
319 }, 330 desc: "保单贷款、还款业务适用",
320 { 331 download: "",
321 name: "保险合同变更申请书(客户信息变更类)",
322 desc: "基本信息变更业务适用",
323 download: "",
324 },
325 {
326 name: "保险合同变更申请书(客户权益变更类)",
327 desc: "交费方式、自垫选择权变更、补发等业务适用",
328 download: "",
329 },
330 {
331 name: "授权委托书",
332 desc: "委托他人代办时须提供",
333 download: "",
334 },
335 {
336 name: "税收声明",
337 desc: "CRS要求",
338 download: "",
339 },
340 {
341 name: "健康告知",
342 desc: "须二次核保的业务须提供",
343 download: "",
344 }
345
346 ]
347 }, 332 },
348 { 333 {
349 type: "理赔类", 334 name: "保险合同变更申请书(保险合同计划变更类)",
350 list: [{ 335 desc: "加保、减保、新增附险、复效等业务适用",
351 name: "理赔申请书", 336 download: "",
352 desc: "纸质申请的应备文件",
353 download: "",
354 }]
355 }, 337 },
338 {
339 name: "保险合同变更申请书(客户信息变更类)",
340 desc: "基本信息变更业务适用",
341 download: "",
342 },
343 {
344 name: "保险合同变更申请书(客户权益变更类)",
345 desc: "交费方式、自垫选择权变更、补发等业务适用",
346 download: "",
347 },
348 {
349 name: "授权委托书",
350 desc: "委托他人代办时须提供",
351 download: "",
352 },
353 {
354 name: "税收声明",
355 desc: "CRS要求",
356 download: "",
357 },
358 {
359 name: "健康告知",
360 desc: "须二次核保的业务须提供",
361 download: "",
362 }
363
364 ]
365 },
366 {
367 type: "理赔类",
368 list: [{
369 name: "理赔申请书",
370 desc: "纸质申请的应备文件",
371 download: "",
372 }]
373 },
356 ] 374 ]
357 }, 375 },
358 policyChangeGuide: { 376 policyChangeGuide: {
...@@ -364,100 +382,100 @@ module.exports = { ...@@ -364,100 +382,100 @@ module.exports = {
364 head5: "应备材料", 382 head5: "应备材料",
365 download: "下载文档", 383 download: "下载文档",
366 form: [{ 384 form: [{
367 project: "退保", 385 project: "退保",
368 content: "在犹豫期后解除合同,公司将退还保单现金价值或未满期净保费。(待产品精算确认)", 386 content: "在犹豫期后解除合同,公司将退还保单现金价值或未满期净保费。(待产品精算确认)",
369 applicant: "投保人", 387 applicant: "投保人",
370 receptionTime: "保单效力终止前", 388 receptionTime: "保单效力终止前",
371 materialList: [{ 389 materialList: [{
372 name: "保险单", 390 name: "保险单",
373 },
374 {
375 name: "申请书",
376 type: 1,
377 },
378 {
379 name: "投保人有效身份证件",
380 },
381 {
382 name: "存折银行卡相关",
383 }
384 ],
385 }, 391 },
386 { 392 {
387 project: "犹豫期退保", 393 name: "申请书",
388 content: "在犹豫期内提出解除合同,公司会无息退还全部保费", 394 type: 1,
389 applicant: "投保人",
390 receptionTime: "犹豫期结束前",
391 materialList: [{
392 name: "保险单",
393 },
394 {
395 name: "申请书",
396 type: 1,
397 },
398 {
399 name: "投保人有效身份证件",
400 },
401 {
402 name: "存折银行卡相关",
403 },
404 {
405 name: "首期保费发票",
406 }
407 ],
408 }, 395 },
409 { 396 {
410 project: "客户资料变更", 397 name: "投保人有效身份证件",
411 projectType: 1,
412 path: "/custom/service",
413 query: {
414 q: "m42"
415 },
416 content: "投保人、受保人、受益人的个人信息变更",
417 applicant: "投保人",
418 receptionTime: "不限",
419 materialList: [{
420 name: "申请书",
421 type: 1,
422 },
423 {
424 name: "必要的证明材料",
425 }
426 ],
427 }, 398 },
428 { 399 {
429 project: "联系信息变更", 400 name: "存折银行卡相关",
430 projectType: 1, 401 }
431 path: "/custom/service", 402 ],
432 query: { 403 },
433 q: "m43" 404 {
434 }, 405 project: "犹豫期退保",
435 content: "地址、电话等信息的变更", 406 content: "在犹豫期内提出解除合同,公司会无息退还全部保费",
436 applicant: "投保人", 407 applicant: "投保人",
437 receptionTime: "不限", 408 receptionTime: "犹豫期结束前",
438 materialList: [{ 409 materialList: [{
439 name: "申请书", 410 name: "保险单",
440 type: 1, 411 },
441 }, 412 {
442 { 413 name: "申请书",
443 name: "投保人有效身份证件", 414 type: 1,
444 }
445 ],
446 }, 415 },
447 { 416 {
448 project: "交费方式变更", 417 name: "投保人有效身份证件",
449 content: "更改保单的续期交费方式或交费账号",
450 applicant: "投保人",
451 receptionTime: "保单交费期满前",
452 materialList: [{
453 name: "申请书",
454 type: 1,
455 },
456 {
457 name: "保险单",
458 }
459 ],
460 }, 418 },
419 {
420 name: "存折银行卡相关",
421 },
422 {
423 name: "首期保费发票",
424 }
425 ],
426 },
427 {
428 project: "客户资料变更",
429 projectType: 1,
430 path: "/custom/service",
431 query: {
432 q: "m42"
433 },
434 content: "投保人、受保人、受益人的个人信息变更",
435 applicant: "投保人",
436 receptionTime: "不限",
437 materialList: [{
438 name: "申请书",
439 type: 1,
440 },
441 {
442 name: "必要的证明材料",
443 }
444 ],
445 },
446 {
447 project: "联系信息变更",
448 projectType: 1,
449 path: "/custom/service",
450 query: {
451 q: "m43"
452 },
453 content: "地址、电话等信息的变更",
454 applicant: "投保人",
455 receptionTime: "不限",
456 materialList: [{
457 name: "申请书",
458 type: 1,
459 },
460 {
461 name: "投保人有效身份证件",
462 }
463 ],
464 },
465 {
466 project: "交费方式变更",
467 content: "更改保单的续期交费方式或交费账号",
468 applicant: "投保人",
469 receptionTime: "保单交费期满前",
470 materialList: [{
471 name: "申请书",
472 type: 1,
473 },
474 {
475 name: "保险单",
476 }
477 ],
478 },
461 ] 479 ]
462 }, 480 },
463 policyChangeContact: { 481 policyChangeContact: {
......
...@@ -45,7 +45,7 @@ export default { ...@@ -45,7 +45,7 @@ export default {
45 // 是否显示取消按钮 45 // 是否显示取消按钮
46 showCancel: { 46 showCancel: {
47 type: Boolean, 47 type: Boolean,
48 default: true, 48 default: false,
49 }, 49 },
50 // 是否显示遮罩层 50 // 是否显示遮罩层
51 overlayShow: { 51 overlayShow: {
......
...@@ -7,8 +7,9 @@ import { ...@@ -7,8 +7,9 @@ import {
7 httpPost 7 httpPost
8 } from '@/api/fetch-api.js' 8 } from '@/api/fetch-api.js'
9 9
10 let PK = 'B5FE03847F02046C47292AF0FF2DE88977241483DD40C123046EB39CBE4C48167B120096CFF12CD16559322884A3C56FA92B07B89AB51FC8C91A75127622151DDD730DFF1F993D5A290CEAC0BBA7FC88285D8994ACBAFF50101EDE9A0925AD5DFFAFE96D53C370E9C5B37DF2F871F81C4D7CA6B7EC37FF459C07975AD9A74A95'; 10
11 let E = '10001'; 11 import { passwordEncrypt } from '@/utils/encrypt.js';
12
12 13
13 export default { 14 export default {
14 data() { 15 data() {
...@@ -45,8 +46,6 @@ export default { ...@@ -45,8 +46,6 @@ export default {
45 showImageCode: false, 46 showImageCode: false,
46 agreeProtocol: false 47 agreeProtocol: false
47 }, 48 },
48 PK: process.env.VUE_APP_RSA_PUBLIC_KEY || PK,
49 E: process.env.VUE_APP_RSA_KEY_INDEX || E,
50 } 49 }
51 }, 50 },
52 components: {}, 51 components: {},
...@@ -76,10 +75,12 @@ export default { ...@@ -76,10 +75,12 @@ export default {
76 onRegisterHandler() { 75 onRegisterHandler() {
77 this.$router.push({ 76 this.$router.push({
78 path: "/register" 77 path: "/register"
79 }) 78 });
80 }, 79 },
81 onForgetHandler() { 80 onForgetHandler() {
82 81 this.$router.push({
82 path: "/password/find"
83 });
83 }, 84 },
84 onLoginTypeHandler(val) { 85 onLoginTypeHandler(val) {
85 this.type = val; 86 this.type = val;
...@@ -131,7 +132,7 @@ export default { ...@@ -131,7 +132,7 @@ export default {
131 data: { 132 data: {
132 deviceId: this.values.deviceId, 133 deviceId: this.values.deviceId,
133 loginName: this.loginForm.userId, 134 loginName: this.loginForm.userId,
134 loginPwd: this._passwordEncrypt(this.loginForm.password) 135 loginPwd: passwordEncrypt(this.loginForm.password)
135 } 136 }
136 }).then(response => { 137 }).then(response => {
137 this._handlerLoginResponse(response); 138 this._handlerLoginResponse(response);
...@@ -316,13 +317,6 @@ export default { ...@@ -316,13 +317,6 @@ export default {
316 } 317 }
317 return this.values.deviceId 318 return this.values.deviceId
318 }, 319 },
319 _passwordEncrypt(rawPwd) {
320 let rsa = new RSAKey();
321 rsa.setPublic(this.PK, this.E);
322 let res = rsa.encrypt(rawPwd);
323 if (res == null) return rawPwd;
324 return res;
325 }
326 }, 320 },
327 watch: { 321 watch: {
328 type() { 322 type() {
......
1 import api from '@/api/api'
2 import {
3 httpGet,
4 httpPost
5 } from '@/api/fetch-api.js'
6
7 import modalComp from '@/components/modal-comp/modal-comp.vue';
8 import { passwordEncrypt } from '@/utils/encrypt.js';
9
10 export default {
11 data() {
12 return {
13 key: 'value',
14 type: 1, // 1:输入用户信息 2:找回密码 3:核对信息 4.重置密码
15 values: {
16 cid: "",
17 },
18 times: {
19 interval: 0, // 索引
20 remain: 0, // 剩余时间
21 tip: "" // 显示的文字
22 },
23 modalVisiable: false,
24 modal: {
25 icon: "succ",
26 content: "",
27 },
28 step1: {
29 userId: "",
30 error: ""
31 },
32 step2: {
33 idNo: ""
34 },
35 step3: {
36 otp: "",
37 error: ""
38 },
39 step4: {
40 pwd: "",
41 error1: "",
42 pwdRepeat: "",
43 error2: "",
44 success: false
45 }
46 }
47 },
48 components: {},
49 methods: {
50 initData() { },
51 i18n() {
52 let i18n = this.$i18n.messages[this.$i18n.locale] || {};
53 return i18n;
54 },
55 showModal(content, icon) {
56 icon = !icon || typeof icon === "undefined" ? "succ" : "succ";
57 this.modalIcon = icon;
58 this.modalContent = content;
59 this.modalVisiable = true;
60 },
61 locateUserInfo() {
62 // 定位用户信息
63 if (!this.step1.userId) {
64 this.step1.error = this.i18n().passwordReset.type1.error;
65 return;
66 }
67 httpPost({
68 url: api.locateUserInfo,
69 data: {
70 uid: this.step1.userId
71 }
72 }).then(response => {
73 if (response.resultCode !== "0") {
74 this.step1.error = this.i18n().passwordReset.type1.error;
75 } else {
76 this.values.cid = response.data.cid;
77 this.step2.idNo = response.data.idNo;
78 if (typeof this.step2.idNo == "undefined") {
79 this.type = 3;
80 } else {
81 this.type = 2;
82 }
83 }
84 });
85 },
86 sureIdNo() {
87 this.type = 3;
88 },
89 sendOtp() {
90 if (this.times.remain > 0) {
91 return;
92 }
93 // 定位用户
94 httpPost({
95 url: api.sendOtp,
96 data: {
97 cid: this.values.cid
98 }
99 }).then(response => {
100 if (this.responseHandler(response)) {
101 switch (response.resultCode) {
102 case "COMMON_ERROR_E3":
103 this.step2.error = this.i18n().passwordReset.type2.error3;
104 return;
105 default:
106 this.startTimeClick();
107 return;
108 }
109 }
110 })
111 },
112 checkOtp() {
113 // 发送验证码
114 if (!this.step3.otp) {
115 this.step3.error = this.i18n().passwordReset.type2.error1;
116 return;
117 }
118 // 定位用户
119 httpPost({
120 url: api.checkOtp,
121 data: {
122 cid: this.values.cid,
123 otp: this.step3.otp
124 }
125 }).then(response => {
126 if (this.responseHandler(response)) {
127 switch (response.resultCode) {
128 case "0":
129 this.type = 4;
130 return;
131 default:
132 // 提示驗證碼錯誤
133 this.step3.error = this.i18n().passwordReset.type2.error1;
134 return;
135 }
136 }
137 })
138 },
139 resetPwd() {
140 let c1 = this.checkPassword(this.step4.pwd);
141 if (c1) {
142 this.$set(this.step, 'error1', c1);
143 return;
144 }
145 if (this.step4.pwdRepeat != this.step4.pwd) {
146 this.step4.error2 = this.i18n().passwordCheck.error3;
147 return;
148 }
149 let pwd = passwordEncrypt(this.step4.pwd);
150 // 定位用户
151 httpPost({
152 url: api.resetPwd,
153 data: {
154 cid: this.values.cid,
155 password: pwd
156 }
157 }).then(response => {
158 if (this.responseHandler(response)) {
159 let message = this.i18n().passwordCheck.success;
160 this.step4.success = true;
161 switch (response.resultCode) {
162 case "0":
163 this.showModal(message, "succ");
164 break
165 default:
166 message = this.i18n().passwordCheck.error4;
167 this.showModal(message, "succ");
168 break;
169 }
170 }
171 })
172 },
173 checkPassword(password) {
174 if (password.length < 8) {
175 return this.i18n().passwordCheck.error1;
176 }
177 // 匹配字母
178 let m1 = /([a-z])+/.test(password);
179 let m2 = /([A-Z])+/.test(password);
180 // 匹配数字
181 let m3 = /([0-9])+/.test(password);
182 // 匹配特殊字符
183 let m4 = /[^a-zA-Z0-9]+/.test(password);
184 console.log(m1, m2, m3, m4)
185 if ((m1 | m2) & m3 & m4) {
186 return "";
187 } else {
188 return this.i18n().passwordCheck.error2
189 }
190 },
191 startTimeClick() {
192 // 開始倒計時
193 this.times.remain = 120;
194 let _this = this;
195 let i18n = this.$i18n.messages[this.$i18n.locale] || {};
196 let msg = i18n.register.coutTips;
197 _this.times.tip = msg.replace("{second}", _this.times.remain);
198 this.times.interval = setInterval(function () {
199 if (_this.times.remain <= 0) {
200 clearInterval(_this.times.interval);
201 _this.times.interval = 0;
202 _this.times.remain = 0;
203 return;
204 }
205 _this.times.remain--;
206 _this.times.tip = msg.replace("{second}", _this.times.remain);
207 _this.$set(_this, 'times', _this.times);
208 }, 1000);
209 },
210 responseHandler(response) {
211 switch (response.resultCode) {
212 case "COMMON_ERROR_E2":
213 // 身份过期了,请重新登录
214 this.values.cid = "";
215 this.showModal(this.i18n().passwordReset.cidExpire);
216 this.step2.idNo = "";
217 this.step3.otp = "";
218 this.step3.error = "";
219 this.step4.pwd = "";
220 this.step4.pwdRepeat = "";
221 this.step4.error1 = "";
222 this.step4.error2 = "";
223 this.step4.success = false;
224 this.type = 1;
225 return false;
226 default:
227 return true;
228 }
229 },
230 modalCallback() {
231 this.modalVisiable = false;
232 if (this.step4.success) {
233 this.$router.push({
234 path: "/login"
235 })
236 } else {
237
238 }
239 }
240 },
241 watch: {
242 'step1.userId': function () {
243 this.step1.error = "";
244 },
245 'step3.otp': function () {
246 this.step3.error = "";
247 },
248 'step4.pwd': function () {
249 console.log(this.checkPassword(this.step4.pwd));
250 this.$set(this.step4, 'error1', this.checkPassword(this.step4.pwd));
251 },
252 'step4.pwdRepeat': function () {
253 if (this.step4.pwdRepeat != this.step4.pwd) {
254 this.$set(this.step4, 'error2', this.i18n().passwordCheck.error3);
255 } else {
256 this.$set(this.step4, 'error2', '');
257 }
258 },
259 },
260 mounted() { },
261 created() { },
262 components: {
263 modalComp
264 }
265 }
1 @import '@/styles/_support';
2
3 .content {
4 position: relative;
5 padding-bottom: 2.25rem;
6 }
7
8 .top-space {
9 height: 2.25rem;
10 }
11
12 .box {
13 position: relative;
14 }
15
16 .ebg {
17 position: absolute;
18 bottom: 0;
19 left: 0;
20 right: 0;
21
22 img {
23 max-width: 100%;
24 }
25 }
26
27 .step {
28 @extend .fcc;
29 margin-bottom: 3rem;
30 }
31
32 .login {
33 color: #4c4948;
34 @extend .bb;
35 padding: 1.416667rem 5rem 0;
36 border-bottom: solid .666667rem #006441;
37
38 margin: auto;
39 max-width: 40.25rem;
40 height: 31rem;
41
42 border-radius: .75rem;
43 box-shadow: 0 0 1.5rem 0 rgba(255, 87, 0, 0.15);
44 background-color: #ffffff;
45
46 &-tit {
47 color: #f05a23;
48 text-align: center;
49 font-size: 18px;
50 font-weight: bold;
51 letter-spacing: .2rem;
52 text-shadow: 3px 5.2px 9px rgba(236, 100, 41, 0.27);
53 }
54
55 &-tit-space-1 {
56 height: 5.25rem;
57 }
58
59 &-tit-space-4 {
60 height: 3rem;
61 }
62
63 &-nav {
64 margin: 2.25rem 0 auto;
65 display: flex;
66 justify-content: center;
67 align-items: center;
68
69 &-v-line {
70 width: .2rem;
71 height: 1.25rem;
72 background-color: #4c4948;
73 margin: 0 2.25rem;
74 }
75
76 &-tit {
77 flex: 1;
78 font-size: 18px;
79 font-weight: bold;
80 color: #4c4948;
81 }
82
83 .active {
84 color: #f05a23;
85 text-shadow: 3px 5.2px 9px rgba(236, 100, 41, 0.27);
86 }
87 }
88
89 &-protocol {
90 margin: 2.5rem auto 0;
91 display: flex;
92 align-items: center;
93 padding-left: 1rem;
94
95 .check {
96 height: 1rem;
97 margin-right: .6rem;
98 }
99
100 .protocol {
101 color: #f05a23;
102 }
103 }
104
105 &-submit {
106 @include btc2(13.5rem, 4rem, 16px);
107 margin: 4.166667rem auto 0;
108 letter-spacing: 1.6px;
109 position: absolute;
110 left: 0;
111 right: 0;
112 margin: 0 auto;
113 bottom: 2.25rem;
114 }
115
116 &-func {
117 margin: 1.5rem auto 0;
118 display: flex;
119 justify-content: center;
120
121 &-btn {
122 margin: 0 1.25rem;
123 text-decoration: underline;
124 }
125 }
126 }
127
128 .form {
129 display: flex;
130 justify-content: space-between;
131 flex-wrap: wrap;
132
133 .vcode {
134 background-color: transparent !important;
135 padding: 0 !important;
136 overflow: hidden;
137
138 img {
139 width: 100%;
140 height: 100%;
141 }
142 }
143
144 input {
145 font-size: 1.166667rem;
146 letter-spacing: .1rem;
147 }
148
149 &-item {
150 position: relative;
151 margin-bottom: 2.25rem;
152
153 .label {
154 font-size: 18px;
155 font-weight: bold;
156 color: #f05a23;
157 display: flex;
158 align-items: center;
159 margin-bottom: 1.25rem;
160
161 img {
162 height: 1.5rem;
163 margin-right: .8rem;
164 }
165 }
166
167 .ipt-wrap {
168 position: relative;
169 display: flex;
170 justify-content: space-between;
171
172 // input和下拉
173 .ipt {
174 @extend .bb;
175 width: 100%;
176 height: 3.5rem;
177 border: solid 1px #dcdddd;
178 background-color: #ffffff;
179 border-radius: 3.5rem;
180 padding: 0 1.75rem;
181 flex: 1;
182 }
183
184 // 长文本
185 .textarea {
186 min-height: 8.75rem;
187 border-radius: 1rem;
188 }
189
190 .down-arrow {
191 position: absolute;
192 top: 1.6rem;
193 right: 2rem;
194 }
195
196
197 .verify-btn {
198 @extend .fcc;
199 // font-family: Arial;
200 font-size: 18px;
201 width: 8.5rem;
202 border: solid 1px #dcdddd;
203 background-color: #f2f2f2;
204 flex: none;
205 margin-left: 1.5rem;
206 color: #4c4948;
207 }
208
209 // 框内按钮
210 .ipt2 {
211 display: flex;
212 justify-content: space-between;
213 align-items: center;
214
215 .ipt-tel {
216 flex: 1;
217 padding-left: 1.75rem;
218 }
219
220 .ipt-code {
221 flex: 1;
222 padding-right: 1.75rem;
223 }
224
225 .region-tel {}
226
227 .veri-btn {
228 color: #f05a23;
229 text-decoration: underline;
230 }
231
232 .veri-btn-default {
233 color: #aaaaaa;
234 }
235 }
236
237 }
238
239 .validator {
240 color: $cOrange;
241 margin-top: 0.5rem;
242 position: absolute;
243 right: .5rem;
244 display: flex;
245 align-items: center;
246
247 img {
248 display: inline-block;
249 margin-right: 0.4rem;
250 }
251 }
252 }
253 }
254
255 @media (max-width: 950px) {
256 .box {
257 width: 96%;
258 }
259
260 .login {
261 padding: 2rem 1rem 3.5rem;
262 }
263 }
264
265 .disable {
266 background-color: #dcdddd !important;
267 // color: $cFontGray;
268 color: #4c4948;
269 }
1
2 <template>
3 <div class="content">
4 <modal-comp :visible="modalVisiable" :show-confirm="false" :icon="modalIcon" :content="modalContent" :confirm="modalCallback" :overlay="modalCallback"></modal-comp>
5 <div class="ebg">
6 <img src="@/assets/images/password-reset/password-reset-bg.png">
7 </div>
8 <div class="top-space"></div>
9 <div class="box">
10
11 <!-- 输入用户信息 -->
12 <div v-if="type == 1" class="login">
13 <div class="login-tit">{{$t('passwordReset.type1.title')}}</div>
14 <div class="login-tit-space-1"></div>
15 <div class="gird-g form">
16 <div class="pure-u-1 form-item">
17 <div class="label">
18 <img src="@/assets/images/register/icon-register-phone.png"> {{$t('passwordReset.type1.t1')}}
19 </div>
20 <div class="ipt-wrap">
21 <input :placeholder="$t('passwordReset.type1.t1Placeholder')" class="ipt" type="text" v-model="step1.userId">
22 </div>
23 <div class="validator" v-if="step1.error.length > 0 ">
24 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step1.error}}
25 </div>
26 </div>
27 </div>
28 <div @click="locateUserInfo()" class="login-submit pointer">{{$t('passwordReset.type1.submit')}}</div>
29 </div>
30
31
32 <!-- 核对信息 -->
33 <div v-if="type == 2" class="login">
34 <div class="login-tit">{{$t('passwordReset.type3.title')}}</div>
35 <div class="login-tit-space-1"></div>
36 <div class="gird-g form">
37 <div class="pure-u-1 form-item">
38 <div class="label">
39 <img src="@/assets/images/register/icon-register-phone.png"> {{$t('passwordReset.type3.t1')}}
40 </div>
41 <div class="ipt-wrap">
42 <input class="ipt disable" type="text" v-model="step2.idNo">
43 </div>
44 </div>
45 </div>
46 <div @click="sureIdNo()" class="login-submit pointer">{{$t('passwordReset.type3.submit')}}</div>
47 </div>
48
49 <!-- 找回密码 -->
50 <div v-if="type == 3" class="login">
51 <div class="login-tit">{{$t('passwordReset.type2.title')}}</div>
52 <div class="login-tit-space-1"></div>
53 <div class="gird-g form">
54 <div class="pure-u-1 form-item">
55 <div class="label">
56 <img src="@/assets/images/register/icon-register-phone.png"> {{$t('passwordReset.type2.t1Placeholder')}}
57 </div>
58 <div class="ipt-wrap">
59 <div class="ipt ipt2">
60 <input :placeholder="$t('passwordReset.type2.t1Placeholder')" type="text" v-model="step3.otp">
61 <div v-if="times.remain == 0" class="veri-btn pointer" @click="sendOtp" >{{$t('register.verifyCodeGet')}}</div>
62 <div v-else class="veri-btn-default">{{times.tip}}</div>
63 </div>
64 </div>
65 <div class="validator" v-if="step3.error.length > 0 ">
66 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step3.error}}
67 </div>
68 </div>
69 </div>
70 <div @click="checkOtp()" class="login-submit pointer">{{$t('passwordReset.type2.submit')}}</div>
71 </div>
72
73 <!-- 重置密码 -->
74 <div v-if="type == 4" class="login">
75 <div class="login-tit">{{$t('passwordReset.type4.title')}}</div>
76 <div class="login-tit-space-4"></div>
77 <div class="gird-g form">
78 <div class="pure-u-1 form-item">
79 <div class="label">
80 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.type4.t1')}}
81 </div>
82 <div class="ipt-wrap">
83 <input :placeholder="$t('passwordReset.type4.t1Placeholder')" class="ipt" type="password" v-model="step4.pwd">
84 </div>
85 <div class="validator" v-if="step4.error1.length > 0 ">
86 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step4.error1}}
87 </div>
88 </div>
89 <div class="pure-u-1 form-item">
90 <div class="label">
91 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.type4.t2')}}
92 </div>
93 <div class="ipt-wrap">
94 <input :placeholder="$t('passwordReset.type4.t2Placeholder')" class="ipt" type="password" v-model="step4.pwdRepeat">
95 </div>
96 <div class="validator" v-if="step4.error2.length > 0 ">
97 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step4.error2}}
98 </div>
99 </div>
100 </div>
101 <div @click="resetPwd()" class="login-submit pointer">{{$t('passwordReset.type4.submit')}}</div>
102 </div>
103 </div>
104 </div>
105 </template>
106
107 <script src="./password-find.js"></script>
108 <style lang="scss" scoped>
109 @import "./password-find.scss";
110 </style>
1
2 import { mapGetters, mapActions, mapState } from "vuex";
3
1 import api from '@/api/api' 4 import api from '@/api/api'
2 import { 5 import {
3 httpGet, 6 httpGet,
4 httpPost 7 httpPost
5 } from '@/api/fetch-api.js' 8 } from '@/api/fetch-api.js'
6 9
10 import modalComp from '@/components/modal-comp/modal-comp.vue';
11 import { passwordEncrypt } from '@/utils/encrypt.js';
12
7 export default { 13 export default {
8 data() { 14 data() {
9 return { 15 return {
10 key: 'value', 16 key: 'value',
11 type: 4, // 1:输入用户信息 2:找回密码 3:核对信息 4.重置密码 17 type: 4, // 1:输入用户信息 2:找回密码 3:核对信息 4.重置密码
12 values: { 18 values: {
13 // 返回的token,串连整个流程,后台安全校验使用 19 cid: "",
14 vcodeuuid: "", 20 oldPwd: "",
15 token: "", 21 pwd: "",
16 deviceId: "", 22 pwdRepeat: ""
17 imageBase64: "", 23 },
18 password: "", 24 step: {
19 passwordRepeat: "" 25 error0: "",
26 error1: "",
27 error2: "",
28 },
29 times: {
30 interval: 0, // 索引
31 remain: 0, // 剩余时间
32 tip: "" // 显示的文字
20 }, 33 },
34 modalVisiable: false,
35 targetPath: "",
36 modalIcon: "succ",
37 modalContent: ""
21 } 38 }
22 }, 39 },
23 components: {}, 40 methods: {
24 computed: { 41 initData() { },
25 locale() {
26 return this.$i18n.locale || 'tc';
27 },
28 i18n() { 42 i18n() {
29 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {}; 43 let i18n = this.$i18n.messages[this.$i18n.locale] || {};
44 return i18n;
45 },
46 showModal(content, icon) {
47 icon = !icon || typeof icon === "undefined" ? "succ" : "succ";
48 this.modalIcon = icon;
49 this.modalContent = content;
50 this.modalVisiable = true;
51 },
52 resetPwd() {
53 if (!this.values.oldPwd) {
54 this.step.error0 = this.i18n().passwordReset.oldPwdPlaceholde;
55 return;
56 }
57 let c1 = this.checkPassword(this.values.pwd);
58 if (c1) {
59 this.$set(this.step, 'error1', c1);
60 return;
61 }
62 if (this.values.pwdRepeat != this.values.pwd) {
63 this.step.error2 = this.i18n().passwordCheck.error3;
64 return;
65 }
66 let newPwd = passwordEncrypt(this.values.pwd);
67 let oldPwd = passwordEncrypt(this.values.oldPwd);
68
69 httpPost({
70 url: api.changePassword,
71 data: {
72 oldPwd: oldPwd,
73 newPwd: newPwd
74 },
75 sid: true
76 }).then(response => {
77 this.targetPath = "";
78 let message = this.i18n().passwordCheck.success;
79 switch (response.resultCode) {
80 case "0":
81 this.targetPath = "";
82 this.showModal(message, "succ");
83 break
84 case "COMMON_ERROR_E0":
85 message = this.i18n().session.sidExpire;
86 this.targetPath = "/login?callback=/password/reset";
87 this.showModal(message, "info");
88 break;
89 default:
90 this.step.error0 = this.i18n().passwordCheck.error5;
91 break;
92 }
93
94 }).catch(err => {
95 let message = this.i18n().session.sidExpire;
96 this.targetPath = "/login?callback=/password/reset";
97 this.showModal(message, "info");
98 });
99 },
100
101 checkPassword(password) {
102 if (password.length < 8) {
103 return this.i18n().passwordCheck.error1;
104 }
105 // 匹配字母
106 let m1 = /([a-z])+/.test(password);
107 let m2 = /([A-Z])+/.test(password);
108 // 匹配数字
109 let m3 = /([0-9])+/.test(password);
110 // 匹配特殊字符
111 let m4 = /[^a-zA-Z0-9]+/.test(password);
112 if ((m1 | m2) & m3 & m4) {
113 return "";
114 } else {
115 return this.i18n().passwordCheck.error2
116 }
117 },
118 modalCallback() {
119 this.modalVisiable = false;
120 if (this.targetPath) {
121 this.$router.push({
122 "path": this.targetPath
123 });
124 }
30 } 125 }
31 }, 126 },
32 methods: { 127 watch: {
33 initData() {} 128 'values.oldPwd': function () {
129 this.$set(this.step, 'error0', '');
130 },
131 'values.pwd': function () {
132 this.$set(this.step, 'error1', this.checkPassword(this.values.pwd));
133 },
134 'values.pwdRepeat': function () {
135 if (this.values.pwdRepeat != this.values.pwd) {
136 this.$set(this.step, 'error2', this.i18n().passwordCheck.error3);
137 } else {
138 this.$set(this.step, 'error2', '');
139 }
140 },
34 }, 141 },
35 mounted() {}, 142 mounted() { },
36 created() {} 143 created() { },
144 components: {
145 modalComp
146 }
37 } 147 }
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
37 37
38 margin: auto; 38 margin: auto;
39 max-width: 40.25rem; 39 max-width: 40.25rem;
40 height: 31rem; 40 height: 41rem;
41 41
42 border-radius: .75rem; 42 border-radius: .75rem;
43 box-shadow: 0 0 1.5rem 0 rgba(255, 87, 0, 0.15); 43 box-shadow: 0 0 1.5rem 0 rgba(255, 87, 0, 0.15);
......
1 1
2 <template> 2 <template>
3 <div class="content"> 3 <div class="content">
4 <modal-comp :visible="modalVisiable" :show-confirm="false" :icon="modalIcon" :content="modalContent" :confirm="modalCallback" :overlay="modalCallback"></modal-comp>
4 <div class="ebg"> 5 <div class="ebg">
5 <img src="@/assets/images/password-reset/password-reset-bg.png"> 6 <img src="@/assets/images/password-reset/password-reset-bg.png">
6 </div> 7 </div>
7 <div class="top-space"></div> 8 <div class="top-space"></div>
8 <div class="box"> 9 <div class="box">
9 10 <div class="login">
10 <!-- 输入用户信息 --> 11 <div class="login-tit">{{$t('passwordReset.type4.title')}}</div>
11 <div v-if="type == 1" class="login"> 12 <div class="login-tit-space-4"></div>
12 <div class="login-tit">{{$t('passwordReset.type1.title')}}</div>
13 <div class="login-tit-space-1"></div>
14 <div class="gird-g form">
15 <div class="pure-u-1 form-item">
16 <div class="label">
17 <img src="@/assets/images/register/icon-register-phone.png"> {{$t('passwordReset.type1.t1')}}
18 </div>
19 <div class="ipt-wrap">
20 <input :placeholder="$t('passwordReset.type1.t1Placeholder')" class="ipt" type="password" v-model="values.password">
21 </div>
22 <div class="validator">
23 <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示
24 </div>
25 </div>
26 </div>
27 <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('passwordReset.type1.submit')}}</div>
28 </div>
29
30 <!-- 找回密码 -->
31 <div v-if="type == 2" class="login">
32 <div class="login-tit">{{$t('passwordReset.type2.title')}}</div>
33 <div class="login-tit-space-1"></div>
34 <div class="gird-g form"> 13 <div class="gird-g form">
35 <div class="pure-u-1 form-item"> 14 <div class="pure-u-1 form-item">
36 <div class="label"> 15 <div class="label">
37 <img src="@/assets/images/register/icon-register-phone.png"> {{$t('passwordReset.type2.t1Placeholder')}} 16 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.oldPwd')}}
38 </div> 17 </div>
39 <div class="ipt-wrap"> 18 <div class="ipt-wrap">
40 <input :placeholder="$t('passwordReset.type2.t1Placeholder')" class="ipt" type="password" v-model="values.password"> 19 <input :placeholder="$t('passwordReset.oldPwdPlaceholde')" class="ipt" type="password" v-model="values.oldPwd">
41 </div>
42 <div class="validator">
43 <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示
44 </div> 20 </div>
45 </div> 21 <div class="validator" v-if="step.error0.length > 0 ">
46 </div> 22 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step.error0}}
47 <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('passwordReset.type2.submit')}}</div>
48 </div>
49
50 <!-- 核对信息 -->
51 <div v-if="type == 3" class="login">
52 <div class="login-tit">{{$t('passwordReset.type3.title')}}</div>
53 <div class="login-tit-space-1"></div>
54 <div class="gird-g form">
55 <div class="pure-u-1 form-item">
56 <div class="label">
57 <img src="@/assets/images/register/icon-register-phone.png"> {{$t('passwordReset.type3.t1')}}
58 </div>
59 <div class="ipt-wrap">
60 <input class="ipt disable" type="password" v-model="values.password">
61 </div> 23 </div>
62 </div> 24 </div>
63 </div>
64 <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('passwordReset.type3.submit')}}</div>
65 </div>
66
67 <!-- 重置密码 -->
68 <div v-if="type == 4" class="login">
69 <div class="login-tit">{{$t('passwordReset.type4.title')}}</div>
70 <div class="login-tit-space-4"></div>
71 <div class="gird-g form">
72 <div class="pure-u-1 form-item"> 25 <div class="pure-u-1 form-item">
73 <div class="label"> 26 <div class="label">
74 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.type4.t1')}} 27 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.type4.t1')}}
75 </div> 28 </div>
76 <div class="ipt-wrap"> 29 <div class="ipt-wrap">
77 <input :placeholder="$t('passwordReset.type4.t1Placeholder')" class="ipt" type="password" v-model="values.password"> 30 <input :placeholder="$t('passwordReset.type4.t1Placeholder')" class="ipt" type="password" v-model="values.pwd">
78 </div> 31 </div>
79 <div class="validator"> 32 <div class="validator" v-if="step.error1.length > 0 ">
80 <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 33 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step.error1}}
81 </div> 34 </div>
82 </div> 35 </div>
83 <div class="pure-u-1 form-item"> 36 <div class="pure-u-1 form-item">
...@@ -85,14 +38,14 @@ ...@@ -85,14 +38,14 @@
85 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.type4.t2')}} 38 <img src="@/assets/images/register/icon-register-lock.png"> {{$t('passwordReset.type4.t2')}}
86 </div> 39 </div>
87 <div class="ipt-wrap"> 40 <div class="ipt-wrap">
88 <input :placeholder="$t('passwordReset.type4.t2Placeholder')" class="ipt" type="password" v-model="values.passwordRepeat"> 41 <input :placeholder="$t('passwordReset.type4.t2Placeholder')" class="ipt" type="password" v-model="values.pwdRepeat">
89 </div> 42 </div>
90 <div class="validator"> 43 <div class="validator" v-if="step.error2.length > 0 ">
91 <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 44 <img src="@/assets/images/common/icon-notice.png" alt=""> {{step.error2}}
92 </div> 45 </div>
93 </div> 46 </div>
94 </div> 47 </div>
95 <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('passwordReset.type4.submit')}}</div> 48 <div @click="resetPwd()" class="login-submit pointer">{{$t('passwordReset.type4.submit')}}</div>
96 </div> 49 </div>
97 </div> 50 </div>
98 </div> 51 </div>
......
...@@ -4,14 +4,13 @@ import { ...@@ -4,14 +4,13 @@ import {
4 httpPost 4 httpPost
5 } from '@/api/fetch-api.js' 5 } from '@/api/fetch-api.js'
6 6
7 let PK = 'B5FE03847F02046C47292AF0FF2DE88977241483DD40C123046EB39CBE4C48167B120096CFF12CD16559322884A3C56FA92B07B89AB51FC8C91A75127622151DDD730DFF1F993D5A290CEAC0BBA7FC88285D8994ACBAFF50101EDE9A0925AD5DFFAFE96D53C370E9C5B37DF2F871F81C4D7CA6B7EC37FF459C07975AD9A74A95'; 7 import { passwordEncrypt } from '@/utils/encrypt.js';
8 let E = '10001';
9 8
10 export default { 9 export default {
11 data() { 10 data() {
12 return { 11 return {
13 key: 'value', 12 key: 'value',
14 type: 2, // 1:手机验证 2:输入密码 13 type: 1, // 1:手机验证 2:输入密码
15 mobileNoType: "hk",// 选择的手机好类型 14 mobileNoType: "hk",// 选择的手机好类型
16 mobileTip: {}, 15 mobileTip: {},
17 mobileOptions: [], 16 mobileOptions: [],
...@@ -39,8 +38,6 @@ export default { ...@@ -39,8 +38,6 @@ export default {
39 remain: 0, // 剩余时间 38 remain: 0, // 剩余时间
40 tip: "" // 显示的文字 39 tip: "" // 显示的文字
41 }, 40 },
42 PK: process.env.VUE_APP_RSA_PUBLIC_KEY || PK,
43 E: process.env.VUE_APP_RSA_KEY_INDEX || E,
44 } 41 }
45 }, 42 },
46 components: {}, 43 components: {},
...@@ -271,7 +268,7 @@ export default { ...@@ -271,7 +268,7 @@ export default {
271 let data = { 268 let data = {
272 token: this.values.token, 269 token: this.values.token,
273 mobileNo: this.registerForm.mobileNo, 270 mobileNo: this.registerForm.mobileNo,
274 loginPwd: this._passwordEncrypt(this.values.password) 271 loginPwd: passwordEncrypt(this.values.password)
275 }; 272 };
276 httpPost({ 273 httpPost({
277 url: api.stdRegister, 274 url: api.stdRegister,
...@@ -378,13 +375,6 @@ export default { ...@@ -378,13 +375,6 @@ export default {
378 onLoginTypeHandler(val) { 375 onLoginTypeHandler(val) {
379 376
380 }, 377 },
381 _passwordEncrypt(rawPwd) {
382 let rsa = new RSAKey();
383 rsa.setPublic(this.PK, this.E);
384 let res = rsa.encrypt(rawPwd);
385 if (res == null) return rawPwd;
386 return res;
387 },
388 initData() { 378 initData() {
389 let i18n = this.$i18n.messages[this.$i18n.locale] || {}; 379 let i18n = this.$i18n.messages[this.$i18n.locale] || {};
390 let mobileOptions = JSON.parse(JSON.stringify(i18n.register.mobileOptions)); 380 let mobileOptions = JSON.parse(JSON.stringify(i18n.register.mobileOptions));
......
...@@ -39,6 +39,14 @@ const routes = [ ...@@ -39,6 +39,14 @@ const routes = [
39 } 39 }
40 }, 40 },
41 { 41 {
42 path: '/password/find',
43 name: 'passwordFind',
44 component: () => import('./pages/password-find/password-find.vue'),
45 meta: {
46 title: ''
47 }
48 },
49 {
42 path: '/password/reset', 50 path: '/password/reset',
43 name: 'passwordReset', 51 name: 'passwordReset',
44 component: () => import('./pages/password-reset/password-reset.vue'), 52 component: () => import('./pages/password-reset/password-reset.vue'),
......
1
2
3
4 let PK = 'B5FE03847F02046C47292AF0FF2DE88977241483DD40C123046EB39CBE4C48167B120096CFF12CD16559322884A3C56FA92B07B89AB51FC8C91A75127622151DDD730DFF1F993D5A290CEAC0BBA7FC88285D8994ACBAFF50101EDE9A0925AD5DFFAFE96D53C370E9C5B37DF2F871F81C4D7CA6B7EC37FF459C07975AD9A74A95';
5 let E = '10001';
6 PK = process.env.VUE_APP_RSA_PUBLIC_KEY || PK;
7 E = process.env.VUE_APP_RSA_KEY_INDEX || E;
8
9 function passwordEncrypt(rawPwd) {
10 let rsa = new RSAKey();
11 // console.log("rsa === ", rsa);
12 rsa.setPublic(PK, E);
13 let res = rsa.encrypt(rawPwd);
14 // console.log("res === ", res);
15 if (res == null) return rawPwd;
16 return res;
17 }
18
19 module.exports = {
20 passwordEncrypt: passwordEncrypt
21 }
...\ No newline at end of file ...\ No newline at end of file