08eea576 by joe

完成大部分功能

1 parent 8dc0ea2c
...@@ -42,6 +42,14 @@ module.exports = { ...@@ -42,6 +42,14 @@ module.exports = {
42 // 保存預約服務 42 // 保存預約服務
43 saveReservation: "/pingan_hklife_webapi/customService/reservation/save", 43 saveReservation: "/pingan_hklife_webapi/customService/reservation/save",
44 // 保存投訴建議 44 // 保存投訴建議
45 saveComplain: "/pingan_hklife_webapi/customService/complain/save" 45 saveComplain: "/pingan_hklife_webapi/customService/complain/save",
46 46
47 // 保单接口
48 policyList : "/pingan_hklife_webapi/policy/list",
49 // 保单接口
50 policyDetail : "/pingan_hklife_webapi/policy/detail",
51 // 保单聯系方式變更
52 updatePolicyContanct : "/pingan_hklife_webapi/policy/updateContacts",
53 // 保单客戶資料變更
54 updatePolicyInfo : "/pingan_hklife_webapi/policy/updateInfo",
47 } 55 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -617,20 +617,20 @@ module.exports = { ...@@ -617,20 +617,20 @@ module.exports = {
617 checkTips: "I do not agree to receive promotional information", 617 checkTips: "I do not agree to receive promotional information",
618 submit: "Save", 618 submit: "Save",
619 errorTips: { 619 errorTips: {
620 e1: "請填寫正確的聯繫電話", 620 e1: "Please enter the collect mobile no",
621 e2: "請填寫聯繫地址", 621 e2: "請填寫聯繫地址",
622 e3: "請填寫正確的E-Mail地址" 622 e3: "Please enter the collect E-mail"
623 } 623 },
624 success : "Success",
624 }, 625 },
625 policyChangeInformation: { 626 policyChangeInformation: {
626 title: "Change of Customer Information", 627 title: "Change of Customer Information",
627 hkClient: "HK Customer", 628 owner: "Policy Owner",
628 yes: "是", 629 insured: "Insured",
629 no: "否",
630 obj: "Select for change", 630 obj: "Select for change",
631 name: "Name", 631 name: "Name",
632 sex: "Sex", 632 sex: "Sex",
633 birth: "出生日期", 633 birth: "Date of Birth",
634 type: "Type of Identification Document", 634 type: "Type of Identification Document",
635 NO: "ID No.", 635 NO: "ID No.",
636 validityPeriod: "ID Validation Date", 636 validityPeriod: "ID Validation Date",
...@@ -639,8 +639,9 @@ module.exports = { ...@@ -639,8 +639,9 @@ module.exports = {
639 maritalStatus: "Marital Status", 639 maritalStatus: "Marital Status",
640 submit: "Save", 640 submit: "Save",
641 upload: "Upload Attachment", 641 upload: "Upload Attachment",
642 modifyTips1: "如需修改請", 642 modifyTips1: "If you need to modify please",
643 modifyTips2: "聯繫客服", 643 modifyTips2: " contact customer service",
644 success : "Success",
644 }, 645 },
645 contactUs: { 646 contactUs: {
646 service: { 647 service: {
...@@ -683,6 +684,8 @@ module.exports = { ...@@ -683,6 +684,8 @@ module.exports = {
683 menu7: "Complaints", 684 menu7: "Complaints",
684 menu8: "Useful Forms", 685 menu8: "Useful Forms",
685 insuranceQuery: { 686 insuranceQuery: {
687 modify: "modify",
688
686 InsurantNumber: "Policy Number", 689 InsurantNumber: "Policy Number",
687 Insurant: "Insured", 690 Insurant: "Insured",
688 InsurantName: "Policy Type", 691 InsurantName: "Policy Type",
...@@ -690,42 +693,51 @@ module.exports = { ...@@ -690,42 +693,51 @@ module.exports = {
690 effectiveDate: "Premium Due Date", 693 effectiveDate: "Premium Due Date",
691 period: "Protection Duration", 694 period: "Protection Duration",
692 695
693 t2Title: "Guarantee information",
694 t2InsurantClassify: "Name of insurance",
695 t2InsurantAmount: "Insured amount",
696 696
697 t3Title: "Customer information", 697 t2Title: "Policy Information",
698 t3InsurantNameCn: "Name of applicant (Cn)", 698 t2n1: "Policy Type",
699 t3InsurantNameEn: "Name of applicant (En)", 699 t2n2: "Sum Insured",
700 t3InsurantIdNumber: "ID Number", 700 t2n3: "Effective Date",
701 t3InsurantContactAddress: "Contact address", 701 t2n4: "Protection Duration",
702 t3InsurantAddress: "Address", 702 t2n5: "Name of Insured(Chinese)",
703 t3InsurantMobile: "mobile", 703 t2n6: "Name of Insured (English) ",
704 t3InsurantEmail: "email", 704 t2n7: "Date of Birth",
705 t3InsuredNameCn: "Name of insured (Cn)", 705 t2n8: "ID No",
706 t3InsuredNameEn: "Name of insured (En)", 706
707 t3InsuredBirthday: "Birthday", 707
708 t3InsuredIdNumber: "ID Number", 708 t3Title: "Customer Information",
709 t3n1: "Name of Policy Owner(Chinese)",
710 t3n2: "Name of Policy Owner(English)",
711 t3n3: "Date of Birth",
712 t3n4: "ID No",
713 t3n5: "Postal Address",
714 t3n6: "Residential Address",
715 t3n7: "Mobile No.",
716 t3n8: "Email",
709 717
710 t4Title: "Beneficiary information", 718 t4Title: "Beneficiary information",
711 t4NameCn: "Name (Cn)", 719 t4NameCn: "Name(Chinese)",
712 t4NameEn: "Name (En)", 720 t4NameEn: "Name (English)",
713 t4Relation: "與受保人關係", 721 t4Relation: "Relationship with Insured",
714 t4Allocation: "Distribution ratio", 722 t4Allocation: "Distribution ratio",
715 723
716 t5Title: "Payment information", 724 t5Title: "Payment information",
717 t5PaymentPeriod: "Payment period", 725 t5PaymentPeriod: "Payment period",
718 t5PaymentMethod: "Payment method", 726 t5PaymentMethod: "Mode of Payment",
719 t5PaymentCurrency: "Payment currency", 727 t5PaymentCurrency: "Currency",
720 t5CurrentPremium: "Current premium", 728 t5CurrentPremium: "Current premium",
721 t5PaymentBank: "Payment bank", 729 t5PaymentBank: "Bank",
722 t5PaymentAccount: "Payment account", 730 t5PaymentAccount: "Payment Account",
731
732 t6Title: "Payment History",
733 t6PaymentPeriod: "Installment",
734 t6PaymentMethod: "Mode of Payment",
735 t6ClosingDate: "Received Date",
736 t6PaymentAmount: "Amount",
723 737
724 t6Title: "Payment record", 738 showMore: "Show All Policies",
725 t6PaymentPeriod: "Payment period", 739 noPolicy: "You haven't bought any policy, if you have any questions please",
726 t6PaymentMethod: "Payment method", 740 customService: " contact customer service",
727 t6ClosingDate: "Closing date",
728 t6PaymentAmount: "Payment amount",
729 }, 741 },
730 reservation: { 742 reservation: {
731 submitBtn: '確認', 743 submitBtn: '確認',
...@@ -741,8 +753,8 @@ module.exports = { ...@@ -741,8 +753,8 @@ module.exports = {
741 or: "or", 753 or: "or",
742 login: " login", 754 login: " login",
743 register: " register", 755 register: " register",
744 baseInfoTip : "Your complete information can help us to provide you with complete services", 756 baseInfoTip: "Your complete information can help us to provide you with complete services",
745 infoBtn : " Go to perfection" 757 infoBtn: " Go to perfection"
746 } 758 }
747 } 759 }
748 } 760 }
......
...@@ -620,13 +620,13 @@ module.exports = { ...@@ -620,13 +620,13 @@ module.exports = {
620 e1: "請填寫正確的聯繫電話", 620 e1: "請填寫正確的聯繫電話",
621 e2: "請填寫聯繫地址", 621 e2: "請填寫聯繫地址",
622 e3: "請填寫正確的E-Mail地址" 622 e3: "請填寫正確的E-Mail地址"
623 } 623 },
624 success : "更新成功",
624 }, 625 },
625 policyChangeInformation: { 626 policyChangeInformation: {
626 title : "客戶資料變更", 627 title : "客戶資料變更",
627 hkClient: "是否平安香港客戶", 628 owner: "投保人",
628 yes: "是", 629 insured: "受保人",
629 no: "否",
630 obj: "變更對象", 630 obj: "變更對象",
631 name: "姓名", 631 name: "姓名",
632 sex: "性别", 632 sex: "性别",
...@@ -641,6 +641,7 @@ module.exports = { ...@@ -641,6 +641,7 @@ module.exports = {
641 upload: "附件上傳", 641 upload: "附件上傳",
642 modifyTips1: "如需修改請", 642 modifyTips1: "如需修改請",
643 modifyTips2: "聯繫客服", 643 modifyTips2: "聯繫客服",
644 success : "更新成功",
644 }, 645 },
645 contactUs: { 646 contactUs: {
646 service: { 647 service: {
...@@ -683,6 +684,8 @@ module.exports = { ...@@ -683,6 +684,8 @@ module.exports = {
683 menu7: "投訴受理", 684 menu7: "投訴受理",
684 menu8: "常用表格", 685 menu8: "常用表格",
685 insuranceQuery: { 686 insuranceQuery: {
687 modify : "修改",
688
686 InsurantNumber: "保單號碼", 689 InsurantNumber: "保單號碼",
687 Insurant: "受保人", 690 Insurant: "受保人",
688 InsurantName: "險種名稱", 691 InsurantName: "險種名稱",
...@@ -690,22 +693,26 @@ module.exports = { ...@@ -690,22 +693,26 @@ module.exports = {
690 effectiveDate: "保費到期日", 693 effectiveDate: "保費到期日",
691 period: "保障年期", 694 period: "保障年期",
692 695
693 t2Title: "保障內容", 696 t2Title: "保單信息",
694 t2InsurantClassify: "險種名稱", 697 t2n1: "險種名稱",
695 t2InsurantAmount: "保額", 698 t2n2: "保額",
699 t2n3: "生效日期",
700 t2n4: "保障年期",
701 t2n5: "受保人姓名(中文)",
702 t2n6: "受保人姓名(英文)",
703 t2n7: "出生日期",
704 t2n8: "證件號碼",
705
696 706
697 t3Title: "客戶資料", 707 t3Title: "客戶資料",
698 t3InsurantNameCn: "投保人姓名(中文)", 708 t3n1: "投保人姓名(中文)",
699 t3InsurantNameEn: "投保人姓名(英文)", 709 t3n2: "投保人姓名(英文)",
700 t3InsurantIdNumber: "證件號碼", 710 t3n3: "出生日期",
701 t3InsurantContactAddress: "聯繫地址", 711 t3n4: "證件號碼",
702 t3InsurantAddress: "居住地址", 712 t3n5: "聯繫地址",
703 t3InsurantMobile: "手提電話", 713 t3n6: "居住地址",
704 t3InsurantEmail: "電子郵箱", 714 t3n7: "手提電話",
705 t3InsuredNameCn: "受保人姓名(中文)", 715 t3n8: "電子郵箱",
706 t3InsuredNameEn: "受保人姓名(英文)",
707 t3InsuredBirthday: "出生日期",
708 t3InsuredIdNumber: "證件號碼",
709 716
710 t4Title: "受益人資料", // t4BeneficiaryInformation 717 t4Title: "受益人資料", // t4BeneficiaryInformation
711 t4NameCn: "姓名(中文)", 718 t4NameCn: "姓名(中文)",
...@@ -726,6 +733,10 @@ module.exports = { ...@@ -726,6 +733,10 @@ module.exports = {
726 t6PaymentMethod: "繳費方式", 733 t6PaymentMethod: "繳費方式",
727 t6ClosingDate: "實收日期", 734 t6ClosingDate: "實收日期",
728 t6PaymentAmount: "繳費金額", 735 t6PaymentAmount: "繳費金額",
736
737 showMore : "顯示所有保單",
738 noPolicy: "您還未購買保單,如有疑問請",
739 customService : "聯繫客服",
729 }, 740 },
730 reservation: { 741 reservation: {
731 submitBtn: '確認', 742 submitBtn: '確認',
......
...@@ -621,13 +621,13 @@ module.exports = { ...@@ -621,13 +621,13 @@ module.exports = {
621 e1: "請填寫正確的聯繫電話", 621 e1: "請填寫正確的聯繫電話",
622 e2: "請填寫聯繫地址", 622 e2: "請填寫聯繫地址",
623 e3: "請填寫正確的E-Mail地址" 623 e3: "請填寫正確的E-Mail地址"
624 } 624 },
625 success : "更新成功",
625 }, 626 },
626 policyChangeInformation: { 627 policyChangeInformation: {
627 title: "客户资料变更", 628 title: "客户资料变更",
628 hkClient: "是否平安香港客戶", 629 owner: "投保人",
629 yes: "是", 630 insured: "受保人",
630 no: "否",
631 obj: "变更对象", 631 obj: "变更对象",
632 name: "姓名", 632 name: "姓名",
633 sex: "性别", 633 sex: "性别",
...@@ -642,6 +642,7 @@ module.exports = { ...@@ -642,6 +642,7 @@ module.exports = {
642 upload: "附件上传", 642 upload: "附件上传",
643 modifyTips1: "如需修改请", 643 modifyTips1: "如需修改请",
644 modifyTips2: "联系客服", 644 modifyTips2: "联系客服",
645 success : "更新成功",
645 }, 646 },
646 contactUs: { 647 contactUs: {
647 service: { 648 service: {
...@@ -691,22 +692,26 @@ module.exports = { ...@@ -691,22 +692,26 @@ module.exports = {
691 effectiveDate: "保费到期日", 692 effectiveDate: "保费到期日",
692 period: "保障年期", 693 period: "保障年期",
693 694
694 t2Title: "保障内容", 695
695 t2InsurantClassify: "险种名称", 696 t2Title: "保單信息",
696 t2InsurantAmount: "保额", 697 t2n1: "险种名称",
698 t2n2: "保额",
699 t2n3: "生效日期",
700 t2n4: "保障年期",
701 t2n5: "受保人姓名(中文)",
702 t2n6: "受保人姓名(英文)",
703 t2n7: "出生日期",
704 t2n8: "证件号码",
697 705
698 t3Title: "客户资料", 706 t3Title: "客户资料",
699 t3InsurantNameCn: "投保人姓名(中文)", 707 t3n1: "投保人姓名(中文)",
700 t3InsurantNameEn: "投保人姓名(英文)", 708 t3n2: "投保人姓名(英文)",
701 t3InsurantIdNumber: "证件号码", 709 t3n3: "出生日期",
702 t3InsurantContactAddress: "联系地址", 710 t3n4: "证件号码",
703 t3InsurantAddress: "居住地址", 711 t3n5: "联系地址",
704 t3InsurantMobile: "手提电话", 712 t3n6: "居住地址",
705 t3InsurantEmail: "电子邮箱", 713 t3n7: "手提电话",
706 t3InsuredNameCn: "受保人姓名(中文)", 714 t3n8: "电子邮箱",
707 t3InsuredNameEn: "受保人姓名(英文)",
708 t3InsuredBirthday: "出生日期",
709 t3InsuredIdNumber: "证件号码",
710 715
711 t4Title: "受益人资料", // t4BeneficiaryInformation 716 t4Title: "受益人资料", // t4BeneficiaryInformation
712 t4NameCn: "姓名(中文)", 717 t4NameCn: "姓名(中文)",
...@@ -727,6 +732,10 @@ module.exports = { ...@@ -727,6 +732,10 @@ module.exports = {
727 t6PaymentMethod: "缴费方式", 732 t6PaymentMethod: "缴费方式",
728 t6ClosingDate: "实收日期", 733 t6ClosingDate: "实收日期",
729 t6PaymentAmount: "缴费金额", 734 t6PaymentAmount: "缴费金额",
735
736 showMore : "显示所有保单",
737 noPolicy: "您还未购买保单,如有疑问请",
738 customService : "联系客服",
730 }, 739 },
731 reservation: { 740 reservation: {
732 submitBtn: '确认', 741 submitBtn: '确认',
......
...@@ -24,7 +24,7 @@ export default { ...@@ -24,7 +24,7 @@ export default {
24 i18n() { 24 i18n() {
25 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {}; 25 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {};
26 }, 26 },
27 showPanel(){ 27 showPanel() {
28 return this.showProfileInfo || this.showUnAuth; 28 return this.showProfileInfo || this.showUnAuth;
29 } 29 }
30 }, 30 },
...@@ -50,16 +50,28 @@ export default { ...@@ -50,16 +50,28 @@ export default {
50 }, 50 },
51 logoutAction() { 51 logoutAction() {
52 this.showUnAuth = true; 52 this.showUnAuth = true;
53 this.showProfileInfo = false;
53 this.$emit("onLogout", {}); 54 this.$emit("onLogout", {});
54 }, 55 },
55 gotoLoginPage() { 56 gotoLoginPage() {
56 this.$router.push({ path: "/login" }); 57 let callback = this.$route.path;
58 let separator = "?";
59 for (let key in this.$route.query) {
60 callback += separator + key + "=" + this.$route.query[key];
61 separator = "&";
62 }
63 this.$router.push({ path: "/login?callback=" + callback });
57 }, 64 },
58 gotoRegisterPage() { 65 gotoRegisterPage() {
59 this.$router.push({ path: "/register" }); 66 this.$router.push({ path: "/register" });
60 }, 67 },
61 gotoInformationPage(){ 68 gotoInformationPage() {
62 this.$router.push({ path: "/infomation/improve" }); 69 this.$router.push({ path: "/infomation/improve" });
70 },
71 noAuth() {
72 this.$store.commit("SET_USER_INFO", null);
73 this.initData();
74 this.$emit("onLogout", {});
63 } 75 }
64 }, 76 },
65 mounted() { 77 mounted() {
......
...@@ -19,10 +19,21 @@ export default { ...@@ -19,10 +19,21 @@ export default {
19 type: Boolean, 19 type: Boolean,
20 default: false 20 default: false
21 }, 21 },
22 // 过滤类型,含这些模型
23 // history : 历史不可选择
24 // future : 未来不可选择
25 // weekend : 周末不可选择
26 // today : 当日不可选择
27 filtModel: {
28 type: Array,
29 default() {
30 return ["history", "weekend", "today"]
31 }
32 },
22 // 需要过滤的日期列表 格式 ["yyyy-MM-dd","yyyy-MM-dd"] 33 // 需要过滤的日期列表 格式 ["yyyy-MM-dd","yyyy-MM-dd"]
23 filterDates: { 34 filterDates: {
24 type: Array, 35 type: Array,
25 default () { 36 default() {
26 return [] // ["2019-11-26", "2019-11-28"] 37 return [] // ["2019-11-26", "2019-11-28"]
27 } 38 }
28 }, 39 },
...@@ -95,6 +106,10 @@ export default { ...@@ -95,6 +106,10 @@ export default {
95 } 106 }
96 }, 107 },
97 methods: { 108 methods: {
109 activity(item) {
110 let ymd = item.year + "-" + (item.month > 9 ? item.month : "0" + item.month) + "-" + (item.date > 9 ? item.date : "0" + item.date);
111 return ymd == this.dateValue;
112 },
98 /** 113 /**
99 * 画月历图 114 * 画月历图
100 * 所需数据 115 * 所需数据
...@@ -122,10 +137,28 @@ export default { ...@@ -122,10 +137,28 @@ export default {
122 let curData = {} 137 let curData = {}
123 curData.standards = 0; 138 curData.standards = 0;
124 let date = index + 1; 139 let date = index + 1;
125 let day = Date.parse(`${year}.${month}.${date}`).getDay(); 140 let buildDate = Date.parse(`${year}.${month}.${date}`);
141 let nowDate = new Date();
142 let day = buildDate.getDay();
126 let isWeekend = day == 0 || day == 6; 143 let isWeekend = day == 0 || day == 6;
127 let disable = false; // 判断是否不可选 144 let disable = false; // 判断是否不可选
128 disable = isWeekend && !this.weekend; // 判断周末不可选 145 if (this.filtModel.indexOf("weekend") >= 0) {
146 disable = isWeekend;
147 }
148 if (!disable && this.filtModel.indexOf("future") >= 0) {
149 buildDate.setHours(23, 59, 59, 999);
150 disable = buildDate.getTime() > nowDate.getTime()
151 }
152 if (!disable && this.filtModel.indexOf("history") >= 0) {
153 buildDate.setHours(0, 0, 0, 0);
154 disable = buildDate.getTime() < nowDate.getTime()
155 }
156 if (!disable && this.filtModel.indexOf("today") >= 0) {
157 buildDate.setHours(0, 0, 0, 0);
158 nowDate.setHours(0, 0, 0, 0);
159 disable = buildDate.getTime() == nowDate.getTime();
160 }
161 // disable = isWeekend && !this.weekend; // 判断周末不可选
129 let filterDates = this.filterDates; 162 let filterDates = this.filterDates;
130 filterDates.forEach(element => { 163 filterDates.forEach(element => {
131 let curDate = `${year}-${month}-${date}`; 164 let curDate = `${year}-${month}-${date}`;
...@@ -243,7 +276,7 @@ export default { ...@@ -243,7 +276,7 @@ export default {
243 disable: index == 0 || index == 11 276 disable: index == 0 || index == 11
244 }); 277 });
245 } 278 }
246 this.yearRange = `${yearPage * 10 + 0 }-${yearPage * 10 + 9 }` 279 this.yearRange = `${yearPage * 10 + 0}-${yearPage * 10 + 9}`
247 this.yearList = yearList; 280 this.yearList = yearList;
248 }, 281 },
249 // 显示日历 282 // 显示日历
...@@ -289,7 +322,6 @@ export default { ...@@ -289,7 +322,6 @@ export default {
289 } 322 }
290 }, 323 },
291 onNextHandler() { 324 onNextHandler() {
292 console.log("this.dateType:", this.dateType);
293 if (this.dateType == 1) { 325 if (this.dateType == 1) {
294 this.nextMonth(); 326 this.nextMonth();
295 return; 327 return;
...@@ -313,20 +345,60 @@ export default { ...@@ -313,20 +345,60 @@ export default {
313 } 345 }
314 this.dateValue = `${year}-${month}-${date}`; 346 this.dateValue = `${year}-${month}-${date}`;
315 }, 347 },
316 initData() {} 348 initData() {
317 },
318 mounted() {},
319 created() {
320 // 设置今天日期 349 // 设置今天日期
350 let isInit = false;
351 if (this.value) {
352 let ymd = this.value.split("-");
353 if (ymd.length == 3) {
354 try {
355 this.year = Number(ymd[0]);
356 this.month = Number(ymd[1]);
357 this.date = Number(ymd[2]);
358 isInit = true;
359 } catch (e) {
360 }
361 }
362 }
363 if (!isInit) {
321 let today = Date.today(); 364 let today = Date.today();
365 try {
366 if (this.filtModel.indexOf("today") >= 0) {
367 if (this.filtModel.indexOf("future") >= 0) {
368 today.setDate(today.getDate() - 1);
369 if (this.filtModel.indexOf("weekend") >= 0) {
370 let day = today.getDay();
371 let m = day == 0 ? -2 : day == 6 ? -1 : 0;
372 today.setDate(today.getDate() + m);
373 }
374 } else if (this.filtModel.indexOf("history") >= 0) {
375 today.setDate(today.getDate() + 1);
376 if (this.filtModel.indexOf("weekend") >= 0) {
377 let day = today.getDay();
378 let m = day == 0 ? 1 : day == 6 ? 2 : 0;
379 today.setDate(today.getDate() + m);
380 }
381 }
382 }
383 } catch (e) {
384 console.error(e);
385 }
322 this.year = today.getFullYear(); 386 this.year = today.getFullYear();
323 this.month = today.getMonth() + 1; 387 this.month = today.getMonth() + 1;
324 this.date = today.getDate(); 388 this.date = today.getDate();
389 }
325 this.formatDate(); 390 this.formatDate();
391 }
392 },
393 mounted() {
394 },
395 created() {
396 this.initData();
326 }, 397 },
327 watch: { 398 watch: {
328 value(val) { 399 value(val) {
329 this.dateValue = val; 400 this.dateValue = val;
401 this.initData();
330 }, 402 },
331 dateValue(val) { 403 dateValue(val) {
332 this.$emit('input', val) 404 this.$emit('input', val)
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
47 <!-- 日历主体 --> 47 <!-- 日历主体 -->
48 <div class="tr"> 48 <div class="tr">
49 <div class="td" v-for="(item,index) in fortmatMonthData" :key="index"> 49 <div class="td" v-for="(item,index) in fortmatMonthData" :key="index">
50 <div @click="selectDay(item.disable ? null : item)" v-if="item && item.date" class="pointer point" :class="{'sel':item && item.date && item.date == date,'disable':item.disable}"> 50 <div @click="selectDay(item.disable ? null : item)" v-if="item && item.date" class="pointer point" :class="{'sel':item && activity(item),'disable':item.disable}">
51 <div>{{item && item.date || ""}}</div> 51 <div>{{item && item.date || ""}}</div>
52 </div> 52 </div>
53 </div> 53 </div>
......
...@@ -5,52 +5,70 @@ import { ...@@ -5,52 +5,70 @@ import {
5 } from '@/api/fetch-api.js' 5 } from '@/api/fetch-api.js'
6 6
7 import Auth from '@components/auth/auth.vue'; 7 import Auth from '@components/auth/auth.vue';
8 import PolicyHeadList from "./policy-head-list.vue";
8 9
9 export default { 10 export default {
10 name: "InsuranceQuery", 11 name: "InsuranceQuery",
11 data() { 12 data() {
12 return { 13 return {
13 showForm: false, 14 showForm: false,
14 dataForm: { 15 dataForm: null,
15
16 },
17 insuranceForm: { 16 insuranceForm: {
18 f1: true, 17 f1: true,
19 f2: true, 18 f2: true,
20 f3: true, 19 f3: true,
21 f4: true, 20 f4: true,
22 f5: true, 21 f5: true,
23 } 22 },
23 policy: null,
24 } 24 }
25 }, 25 },
26 methods: { 26 methods: {
27 test() { 27 handlePolicySelect(data) {
28 let i18n = this.$i18n.locale; 28 let submitData = {
29 let data = {}; 29 policyId: data[0].id,
30 if (i18n == 'zh') { 30 policyCode: data[0].code
31 data.v1 = "分红重疾"; 31 }
32 data.v2 = "终身"; 32 this.policy = submitData;
33 data.v3 = "深圳市益田路5033号"; 33 this.dataForm = null;
34 data.v4 = "张三"; 34 httpPost({ url: api.policyDetail, sid: true, data: submitData }).then(res => {
35 data.v4_2 = "父母"; 35 this.dataForm = res;
36 data.v4_3 = "子女"; 36 }).catch(err => {
37 data.v5 = "银行转账"; 37 if (err.code == 404) {
38 data.v6 = "港币"; 38 this.$refs.auth.noAuth();
39 data.v7 = "平安银行"; 39 }
40 data.v8 = "现金"; 40 });
41 // console.log(data);
42 },
43
44 toMoneyCode(moneyCode) {
45 switch (moneyCode) {
46 case "USD":
47 return "$";
48 default:
49 return "HK$";
50 }
51 },
52 toMoneyCodeName(moneyCode) {
53 switch (moneyCode) {
54 case "USD":
55 return "美元";
56 default:
57 return "港币";
58 }
59 },
60 toModifyPage(type) {
61 // 1=受保人;2=投保人
62 if (!this.policy || !this.dataForm) {
63 return;
64 }
65 let data = encodeURIComponent(JSON.stringify({ id: this.policy.policyId, code: this.policy.policyCode }));
66 sessionStorage.setItem("_hklife_policy", data);
67 if (type == 1) {
68 this.$router.push({ path: "/custom/service", query: { q: "m43", u: 1 } });
41 } else { 69 } else {
42 data.v1 = "分紅重疾"; 70 this.$router.push({ path: "/custom/service", query: { q: "m43", u: 2 } });
43 data.v2 = "終身";
44 data.v3 = "深圳市益田路5033號";
45 data.v4 = "張三";
46 data.v4_2 = "父母";
47 data.v4_3 = "子女";
48 data.v5 = "銀行轉帳";
49 data.v6 = "港幣";
50 data.v7 = "平安銀行";
51 data.v8 = "現金";
52 } 71 }
53 this.$set(this, 'dataForm', data);
54 }, 72 },
55 userLogout() { 73 userLogout() {
56 this.showForm = false; 74 this.showForm = false;
...@@ -60,9 +78,9 @@ export default { ...@@ -60,9 +78,9 @@ export default {
60 } 78 }
61 }, 79 },
62 components: { 80 components: {
63 Auth 81 Auth,
82 PolicyHeadList
64 }, 83 },
65 mounted() { 84 mounted() {
66 this.test();
67 }, 85 },
68 } 86 }
......
...@@ -96,6 +96,15 @@ ...@@ -96,6 +96,15 @@
96 display: flex; 96 display: flex;
97 justify-content: space-between; 97 justify-content: space-between;
98 margin: auto; 98 margin: auto;
99
100 div:first-child{
101 text-align: left;
102 min-width: 6.666667rem !important;
103 }
104 }
105
106 .cell1:nth-child(1){
107 text-align: right !important;
99 } 108 }
100 109
101 .separator-v { 110 .separator-v {
...@@ -106,6 +115,7 @@ ...@@ -106,6 +115,7 @@
106 } 115 }
107 } 116 }
108 117
118
109 .label span { 119 .label span {
110 color: #f05a23; 120 color: #f05a23;
111 margin-left: .583333rem; 121 margin-left: .583333rem;
......
...@@ -5,33 +5,43 @@ import { ...@@ -5,33 +5,43 @@ import {
5 } from '@/api/fetch-api.js' 5 } from '@/api/fetch-api.js'
6 6
7 import Auth from '@components/auth/auth.vue'; 7 import Auth from '@components/auth/auth.vue';
8 import modalComp from '@/components/modal-comp/modal-comp.vue';
9 import PolicyHeadList from "./policy-head-list.vue";
8 10
9 export default { 11 export default {
10 data() { 12 data() {
11 return { 13 return {
14 loading: false,
12 showForm: false, 15 showForm: false,
13 key: 'value', 16 key: 'value',
14 checked1: false, 17 checked1: false,
15 checked2: false, 18 checked2: false,
16 checked3: false, 19 checked3: false,
20 dataInit: false,
21 selectedPolicies: [],
17 data: { 22 data: {
18 mobileAreaCode: "", 23 mobileAreaCode: "",
19 mobile: "", 24 mobile: "",
20 mobileAcceptMessage: 0,
21 email: "", 25 email: "",
22 emailAcceptMessage: 0,
23 address: "", 26 address: "",
24 addressAcceptMessage: 0
25 }, 27 },
26 errorTips: { 28 errorTips: {
27 e1: "", 29 e1: "",
28 e2: "", 30 e2: "",
29 e3: "" 31 e3: ""
30 }, 32 },
33
34 modalSimpleVisiable: false,
35 modalVisiable: false,
36 targetPath: "",
37 modalIcon: "succ",
38 modalContent: "",
31 } 39 }
32 }, 40 },
33 components: { 41 components: {
34 Auth 42 Auth,
43 PolicyHeadList,
44 modalComp
35 }, 45 },
36 computed: { 46 computed: {
37 locale() { 47 locale() {
...@@ -39,50 +49,73 @@ export default { ...@@ -39,50 +49,73 @@ export default {
39 }, 49 },
40 i18n() { 50 i18n() {
41 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {}; 51 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {};
52 },
53 submitBtnDisabled() {
54 let b1 = !this.selectedPolicies || this.selectedPolicies.length == 0;
55 let b2 = !this.data.address && !this.data.email && !this.data.mobile;
56 return b1 || b2;
42 } 57 }
43 }, 58 },
44 methods: { 59 methods: {
60 showModal(content, icon) {
61 icon = !icon || typeof icon === "undefined" ? "succ" : icon;
62 this.modalIcon = icon;
63 this.modalContent = content;
64 this.modalVisiable = true;
65 },
45 modalCallback() { 66 modalCallback() {
46 this.modalVisiable = false; 67 this.modalVisiable = false;
47 }, 68 },
48 sessionLost() {
49 // let message = this.i18n.glbalTips.sessionLost;
50 // alert(message);
51 // let targetPath = "/login?callback=" + this.buildCallbackPath();
52 // this.$router.push({
53 // path: targetPath
54 // });
55 },
56 showSuccess() { 69 showSuccess() {
57 alert("更新成功") 70 this.showModal(this.i18n.policyChangeContact.success);
58 }, 71 },
59 updateContactsHandler() { 72 updateContactsHandler() {
73 if (this.submitBtnDisabled) {
74 return;
75 }
76
60 let b1 = this.checkMobile(); 77 let b1 = this.checkMobile();
61 let b2 = this.checkEmail(); 78 let b2 = this.checkEmail();
62 let b3 = this.checkAddress(); 79 let b3 = this.checkAddress();
63 let b = b1 & b2 & b3; 80 let b = b1 & b2 & b3;
64 if (b) { 81 if (b) {
65 this.data.mobileAcceptMessage = this.checked1 ? 1 : 0; 82 if (this.loading) {
66 this.data.addressAcceptMessage = this.checked2 ? 1 : 0; 83 return;
67 this.data.emailAcceptMessage = this.checked3 ? 1 : 0; 84 }
68 85 let policies = [];
86 this.selectedPolicies.forEach(element => {
87 policies.push({ policyId: element.id, policyCode: element.code });
88 });
89 let data = {
90 mobileNo: this.data.mobile,
91 address: this.data.address,
92 email: this.data.email,
93 mobileNoAcceptMsg: this.checked1 ? 1 : 0,
94 addressAcceptMsg: this.checked2 ? 1 : 0,
95 emailAcceptMsg: this.checked3 ? 1 : 0,
96 policies: policies
97 }
98 this.loading = true;
69 httpPost({ 99 httpPost({
70 url: api.updateContacts, 100 url: api.updatePolicyContanct,
71 data: this.data, 101 data: data,
72 sid: true 102 sid: true
73 }).then(() => { 103 }).then(() => {
104 this.loading = false;
74 this.showSuccess(); 105 this.showSuccess();
75 }).catch(() => { 106 }).catch(err => {
76 this.sessionLost(); 107 this.loading = false;
108 if (err.code == 404) {
109 this.$refs.auth.noAuth();
110 }
77 }) 111 })
78 } 112 }
79 }, 113 },
80 checkMobile() { 114 checkMobile() {
81 if (!this.data.mobile) { 115 if (this.data.mobile) {
82 this.errorTips.e1 = this.i18n.policyChangeContact.errorTips.e1; 116 let hkMobile = /^[5689]{1}\d{7}$/.test(this.data.mobile);
83 return false; 117 let zhMobile = /^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0-9])|(18[0-9])|(19[0-9]))\d{8}$/.test(this.data.mobile);
84 } else { 118 if (!hkMobile && !zhMobile) {
85 if (this.data.mobile.length != 8 && this.data.mobile.length != 11) {
86 this.errorTips.e1 = this.i18n.policyChangeContact.errorTips.e1; 119 this.errorTips.e1 = this.i18n.policyChangeContact.errorTips.e1;
87 return false; 120 return false;
88 } 121 }
...@@ -90,49 +123,53 @@ export default { ...@@ -90,49 +123,53 @@ export default {
90 return true; 123 return true;
91 }, 124 },
92 checkAddress() { 125 checkAddress() {
93 if (!this.data.address) {
94 this.errorTips.e2 = this.i18n.policyChangeContact.errorTips.e2;
95 return false;
96 }
97 return true; 126 return true;
98 }, 127 },
99 checkEmail() { 128 checkEmail() {
100 if (!/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(this.data.email)) { 129 if (this.data.email && !/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(this.data.email)) {
101 this.errorTips.e3 = this.i18n.policyChangeContact.errorTips.e3; 130 this.errorTips.e3 = this.i18n.policyChangeContact.errorTips.e3;
102 return false; 131 return false;
103 } 132 }
104 return true; 133 return true;
105 }, 134 },
106 initData() { 135 initData() {
136 if (this.dataInit) {
137 return;
138 }
139 if (this.loading) {
140 return;
141 }
142 this.data = null;
143 this.loading = true;
144 let param = {
145 policyId: this.selectedPolicies[0].id,
146 policyCode: this.selectedPolicies[0].code
147 };
107 httpPost({ 148 httpPost({
108 url: api.getContacts, 149 url: api.policyDetail,
150 data: param,
109 sid: true 151 sid: true
110 }).then(response => { 152 }).then(response => {
153 this.data = {};
111 if (response) { 154 if (response) {
112 this.data.mobile = response.mobile; 155 this.loading = false;
113 this.data.mobileAcceptMessage = response.mobileAcceptMessage; 156 this.dataInit = true;
114 this.data.email = response.email; 157 this.data.mobile = response.clientMobileNo;
115 this.data.emailAcceptMessage = response.emailAcceptMessage; 158 this.checked1 = "1" == response.clientMobileAcceptMessage;
116 this.data.address = response.address; 159 this.data.address = response.clientContactAddress;
117 this.data.addressAcceptMessage = response.addressAcceptMessage; 160 this.checked2 = "1" == response.clientAddressAcceptMessage;
118 } 161 this.data.email = response.clientEmail;
119 this.checked1 = this.data.mobileAcceptMessage == 1 ? true : false; 162 this.checked3 = "1" == response.clientEmailAcceptMessage;
120 this.checked2 = this.data.addressAcceptMessage == 1 ? true : false; 163 }
121 this.checked3 = this.data.emailAcceptMessage == 1 ? true : false;
122 }).catch(res => { 164 }).catch(res => {
123 if (res.code == "404") { 165 if (res.code == "404") {
124 this.sessionLost(); 166 this.$refs.auth.noAuth();
125 } 167 }
126 }); 168 });
127 }, 169 },
128 buildCallbackPath() { 170 handlePolicySelect(data) {
129 let path = this.$route.path; 171 this.selectedPolicies = data;
130 let sep = "?" 172 this.initData();
131 for (let key in this.$route.query) {
132 path += sep + key + "=" + this.$route.query[key];
133 sep = "&";
134 }
135 return path;
136 }, 173 },
137 userLogout() { 174 userLogout() {
138 this.showForm = false; 175 this.showForm = false;
...@@ -153,7 +190,5 @@ export default { ...@@ -153,7 +190,5 @@ export default {
153 } 190 }
154 }, 191 },
155 mounted() { 192 mounted() {
156 this.initData(); 193 }
157 },
158 created() {}
159 } 194 }
......
...@@ -52,7 +52,9 @@ ...@@ -52,7 +52,9 @@
52 flex: 1; 52 flex: 1;
53 } 53 }
54 54
55 .agree {} 55 .agree {
56 cursor: pointer;
57 }
56 58
57 .name-ipt { 59 .name-ipt {
58 width: 13.666667rem; 60 width: 13.666667rem;
......
1 1
2 <template> 2 <template>
3 <div> 3 <div>
4 <auth @onLogin="userLogin" @onLogout="userLogout" :checkProfile="true"></auth> 4 <auth @onLogin="userLogin" @onLogout="userLogout" :checkProfile="true" ref="auth"></auth>
5 <div class="container border" v-if="showForm"> 5 <modal-comp :visible="modalVisiable" :show-confirm="false" :icon="modalIcon" :content="modalContent" :confirm="modalCallback" :overlay="modalCallback"></modal-comp>
6 <template v-if="showForm">
7 <policy-head-list :multiSelectable="true" @onSelect="handlePolicySelect"></policy-head-list>
8 <div class="container border" v-if="selectedPolicies.length > 0 && data">
6 <div class="form"> 9 <div class="form">
7 <div class="form-item"> 10 <div class="form-item">
8 <div class="label"> 11 <div class="label">
...@@ -55,10 +58,12 @@ ...@@ -55,10 +58,12 @@
55 </div> 58 </div>
56 </div> 59 </div>
57 </div> 60 </div>
58 <div class="submit-btn" @click="updateContactsHandler"> 61 <div class="submit-btn" @click="updateContactsHandler" :class="{disabled: submitBtnDisabled}">
59 {{$t("policyChangeContact.submit")}} 62 {{$t("policyChangeContact.submit")}}
60 </div> 63 </div>
61 </div> 64 </div>
65 <div v-else style="height:400px"></div>
66 </template>
62 </div> 67 </div>
63 </template> 68 </template>
64 69
......
...@@ -5,21 +5,39 @@ import { ...@@ -5,21 +5,39 @@ import {
5 } from '@/api/fetch-api.js' 5 } from '@/api/fetch-api.js'
6 6
7 import Auth from '@components/auth/auth.vue'; 7 import Auth from '@components/auth/auth.vue';
8 import PolicyHeadList from "./policy-head-list.vue";
9 import DatePicker from '@/components/date-picker/date-picker.vue'
10 import modalComp from '@/components/modal-comp/modal-comp.vue';
8 import modalUploadCardComp from '@/components/modal-upload-card-comp/modal-upload-card-comp.vue'; 11 import modalUploadCardComp from '@/components/modal-upload-card-comp/modal-upload-card-comp.vue';
9 12
10 export default { 13 export default {
11 data() { 14 data() {
12 return { 15 return {
16 loading: false,
13 showForm: false, 17 showForm: false,
14 key: 'value', 18 key: 'value',
15 isHkCus: true, 19 isOwner: true,
16 checked: false, 20 checked: false,
17 modalUploadCardVisiable: false, 21 modalUploadCardVisiable: false,
22 selectedPolicies: [],
23 data: null,
24 // 保单信息
25 policy: null,
26
27 // 模态窗
28 modalSimpleVisiable: false,
29 modalVisiable: false,
30 targetPath: "",
31 modalIcon: "succ",
32 modalContent: "",
18 } 33 }
19 }, 34 },
20 components: { 35 components: {
21 modalUploadCardComp, 36 modalUploadCardComp,
22 Auth 37 PolicyHeadList,
38 Auth,
39 DatePicker,
40 modalComp
23 }, 41 },
24 computed: { 42 computed: {
25 locale() { 43 locale() {
...@@ -27,10 +45,107 @@ export default { ...@@ -27,10 +45,107 @@ export default {
27 }, 45 },
28 i18n() { 46 i18n() {
29 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {}; 47 return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {};
30 } 48 },
49 sexCandidates() {
50 let i18n = this.$i18n.messages[this.$i18n.locale];
51 return i18n.infomationImprove.candidates.sex;
52 },
53 idTypeCandidates() {
54 let i18n = this.$i18n.messages[this.$i18n.locale];
55 return i18n.infomationImprove.candidates.idType;
56 },
31 }, 57 },
32 methods: { 58 methods: {
33 initData() {}, 59 showModal(content, icon) {
60 icon = !icon || typeof icon === "undefined" ? "succ" : icon;
61 this.modalIcon = icon;
62 this.modalContent = content;
63 this.modalVisiable = true;
64 },
65 modalCallback() {
66 this.modalVisiable = false;
67 },
68 loadData() {
69 if (this.loading) {
70 return;
71 }
72 this.loading = true;
73 this.data = null;
74 let param = {
75 policyId: this.selectedPolicies[0].id,
76 policyCode: this.selectedPolicies[0].code
77 };
78 httpPost({
79 url: api.policyDetail,
80 data: param,
81 sid: true
82 }).then(response => {
83 this.loading = false;
84 if (response) {
85 this.policy = response;
86 this.initData();
87 }
88 }).catch(res => {
89 this.loading = false;
90 if (res.code == "404") {
91 this.$refs.auth.noAuth();
92 }
93 });
94 },
95 initData() {
96 let res = this.policy;
97 let name = "";
98 let isOwner = this.isOwner;
99 if (isOwner) {
100 name = res.clientNameCn ? res.clientNameCn : res.clientNameEn;
101 } else {
102 name = res.insuredNameCn ? res.insuredNameCn : res.insuredNameEn;
103 }
104 let data = {
105 name: name,
106 idType: isOwner ? res.clientIdType : res.insuredIdType,
107 idNumber: isOwner ? res.clientIdNumber : res.insuredIdNumber,
108 idExpireAt: isOwner ? res.clientExpireAt : res.insurantExpireAt,
109 nature: isOwner ? res.clientNationality : res.insurantNationality,
110 company: isOwner ? res.clientCompany : res.insurantCompany,
111 marriage: isOwner ? res.clientMarriage : res.insurantMarriage,
112 sex: isOwner ? res.clientSex : res.insuredSex,
113 birthday: isOwner ? res.clientBirthday : res.insuredBirthday
114 };
115 data.sex = data.sex ? data.sex : "M";
116 console.log("data ===", data);
117 this.$set(this, 'data', data);
118 },
119 handlePolicySelect(data) {
120 this.selectedPolicies = data;
121 this.loadData();
122 },
123 updatePolicyInfo() {
124 console.log(1, this.loading);
125 if (this.loading) {
126 return;
127 }
128 this.loading = true;
129 let param = JSON.parse(JSON.stringify(this.data));
130 delete param.birthday;
131 delete param.sex;
132 param.modifyObj = this.isOwner ? 1 : 2;
133 param.policyId = this.selectedPolicies[0].id;
134 param.policyCode = this.selectedPolicies[0].code;
135
136 console.log("2,", param);
137 httpPost({ url: api.updatePolicyInfo, data: param, sid: true }).then(res => {
138 console.log("3,", res);
139 this.loading = false;
140 this.showModal(this.i18n.policyChangeInformation.success);
141 }).catch(err => {
142 this.loading = false;
143 if (err.code == 404) {
144 this.$refs.auth.noAuth();
145 }
146 });
147
148 },
34 userLogout() { 149 userLogout() {
35 this.showForm = false; 150 this.showForm = false;
36 }, 151 },
...@@ -38,6 +153,8 @@ export default { ...@@ -38,6 +153,8 @@ export default {
38 this.showForm = true; 153 this.showForm = true;
39 } 154 }
40 }, 155 },
41 mounted() {}, 156 mounted() {
42 created() {} 157 this.isOwner = this.$route.query.u == 1 ? true : false;
158 },
159 created() { }
43 } 160 }
......
1 1
2 <template> 2 <template>
3 <div> 3 <div>
4 <auth @onLogin="userLogin" @onLogout="userLogout" :checkProfile="true"></auth> 4 <auth @onLogin="userLogin" @onLogout="userLogout" :checkProfile="true" ref="auth"></auth>
5 <modal-upload-card-comp :visible="modalUploadCardVisiable" :show-confirm="true" ></modal-upload-card-comp> 5 <template v-if="showForm">
6 <div class="container border" v-if="showForm">
7 <div class="table">
8 <div class="table-header orange">
9 <div class="table-header-item">{{$t('policyChangeInformation.title')}}</div>
10 </div>
11 <div class="gird-g form">
12 6
13 <!-- 變更對象 checkbox -->
14 <div class="pure-u-1 form-item form-item2"> 7 <div class="pure-u-1 form-item form-item2">
15 <div class="label"> 8 <div class="label">
16 {{$t('policyChangeInformation.hkClient')}} 9 {{$t('policyChangeInformation.obj')}}
17 </div> 10 </div>
18 <div class="cont"> 11 <div class="cont">
19 <div class="boo-btn pointer" :class="{active:isHkCus}" @click="isHkCus=true">{{$t('policyChangeInformation.yes')}}</div> 12 <div class="boo-btn pointer" :class="{active:isOwner}" @click="isOwner=true">{{$t('policyChangeInformation.owner')}}</div>
20 <div class="boo-btn pointer" :class="{active:!isHkCus}" @click="isHkCus=false">{{$t('policyChangeInformation.no')}}</div> 13 <div class="boo-btn pointer" :class="{active:!isOwner}" @click="isOwner=false">{{$t('policyChangeInformation.insured')}}</div>
21 </div> 14 </div>
22 </div> 15 </div>
23 16
24 <!-- start --> 17 <policy-head-list :multiSelectable="false" @onSelect="handlePolicySelect" :model="'checkbox'"></policy-head-list>
18 <modal-upload-card-comp :visible="modalUploadCardVisiable" :show-confirm="true" ></modal-upload-card-comp>
19 <div class="container border" v-if="selectedPolicies.length > 0 && data">
20 <div class="table">
21 <div class="table-header orange">
22 <div class="table-header-item">{{$t('policyChangeInformation.title')}}</div>
23 </div>
24 <div class="gird-g form">
25 <!-- 1 --> 25 <!-- 1 -->
26 <div class="pure-u-1 pure-u-md-1-2 form-item"> 26 <div class="pure-u-1 pure-u-md-1-2 form-item">
27 <div class="label"> 27 <div class="label">
28 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-info.png"></div> {{$t('policyChangeInformation.obj')}} 28 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-info.png"></div> {{$t('policyChangeInformation.name')}}
29 </div> 29 </div>
30 <div class="ipt-wrap"> 30 <div class="ipt-wrap">
31 <input class="ipt" type="text"> 31 <input class="ipt" type="text" v-model="data.name">
32 </div> 32 </div>
33 </div> 33 </div>
34 34
...@@ -46,9 +46,11 @@ ...@@ -46,9 +46,11 @@
46 </div> 46 </div>
47 <div class="ipt-wrap"> 47 <div class="ipt-wrap">
48 <div class="down-arrow"></div> 48 <div class="down-arrow"></div>
49 <select disabled class="ipt disable"> 49
50 <option v-if="locale !='zh'"></option> 50 <select disabled class="ipt disable" v-model="data.sex">
51 <option v-else></option> 51 <template v-if="sexCandidates">
52 <option v-for="(item,index) in sexCandidates" :key="index" :value="item.value">{{item.name}}</option>
53 </template>
52 </select> 54 </select>
53 </div> 55 </div>
54 </div> 56 </div>
...@@ -66,7 +68,7 @@ ...@@ -66,7 +68,7 @@
66 </div> 68 </div>
67 </div> 69 </div>
68 <div class="ipt-wrap"> 70 <div class="ipt-wrap">
69 <input disabled placeholder="1999-1-1" class="ipt disable" type="text"> 71 <input disabled class="ipt disable" type="text" v-model="data.birthday">
70 </div> 72 </div>
71 </div> 73 </div>
72 74
...@@ -77,12 +79,9 @@ ...@@ -77,12 +79,9 @@
77 </div> 79 </div>
78 <div class="ipt-wrap"> 80 <div class="ipt-wrap">
79 <div class="down-arrow"></div> 81 <div class="down-arrow"></div>
80 <select class="ipt"> 82 <select class="ipt" v-model="data.idType">
81 <template v-if="locale =='zh'"> 83 <template v-if="idTypeCandidates">
82 <option>身份证</option> 84 <option v-for="(item,index) in idTypeCandidates" :key="index" :value="item.value">{{item.name}}</option>
83 </template>
84 <template v-else>
85 <option>身份證</option>
86 </template> 85 </template>
87 </select> 86 </select>
88 </div> 87 </div>
...@@ -97,7 +96,7 @@ ...@@ -97,7 +96,7 @@
97 <div class="eye"></div> 96 <div class="eye"></div>
98 <!-- --> 97 <!-- -->
99 <!-- <div class="eye eye-act"></div> --> 98 <!-- <div class="eye eye-act"></div> -->
100 <input class="ipt" type="text"> 99 <input class="ipt" type="text" v-model="data.idNumber">
101 </div> 100 </div>
102 </div> 101 </div>
103 102
...@@ -107,7 +106,7 @@ ...@@ -107,7 +106,7 @@
107 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-card.png"></div> {{$t('policyChangeInformation.validityPeriod')}} 106 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-card.png"></div> {{$t('policyChangeInformation.validityPeriod')}}
108 </div> 107 </div>
109 <div class="ipt-wrap"> 108 <div class="ipt-wrap">
110 <input class="ipt" type="text"> 109 <date-picker class="date" v-model="data.idExpireAt" :filtModel="['history', 'today']"></date-picker>
111 </div> 110 </div>
112 </div> 111 </div>
113 112
...@@ -117,7 +116,7 @@ ...@@ -117,7 +116,7 @@
117 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-earth.png"></div> {{$t('policyChangeInformation.nationality')}} 116 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-earth.png"></div> {{$t('policyChangeInformation.nationality')}}
118 </div> 117 </div>
119 <div class="ipt-wrap"> 118 <div class="ipt-wrap">
120 <input class="ipt" type="text"> 119 <input class="ipt" type="text" v-model="data.nature">
121 </div> 120 </div>
122 </div> 121 </div>
123 122
...@@ -127,7 +126,7 @@ ...@@ -127,7 +126,7 @@
127 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-build.png"></div> {{$t('policyChangeInformation.employer')}} 126 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-build.png"></div> {{$t('policyChangeInformation.employer')}}
128 </div> 127 </div>
129 <div class="ipt-wrap"> 128 <div class="ipt-wrap">
130 <input class="ipt" type="text"> 129 <input class="ipt" type="text" v-model="data.company">
131 </div> 130 </div>
132 </div> 131 </div>
133 132
...@@ -137,7 +136,7 @@ ...@@ -137,7 +136,7 @@
137 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-love.png"></div> {{$t('policyChangeInformation.maritalStatus')}} 136 <div class="icon"><img src="@/assets/images/policy-change-information/icon-pci-love.png"></div> {{$t('policyChangeInformation.maritalStatus')}}
138 </div> 137 </div>
139 <div class="ipt-wrap"> 138 <div class="ipt-wrap">
140 <input class="ipt" type="text"> 139 <input class="ipt" type="text" v-model="data.marriage">
141 </div> 140 </div>
142 </div> 141 </div>
143 142
...@@ -145,11 +144,13 @@ ...@@ -145,11 +144,13 @@
145 144
146 </div> 145 </div>
147 146
148 <div class="submit-btn"> 147 <div class="submit-btn" @click="updatePolicyInfo">
149 {{$t("policyChangeInformation.submit")}} 148 {{$t("policyChangeInformation.submit")}}
150 </div> 149 </div>
151 </div> 150 </div>
152 </div> 151 </div>
152 <div v-else style="height:400px"></div>
153 </template>
153 </div> 154 </div>
154 155
155 </template> 156 </template>
......
1 import api from '@/api/api';
2 import {
3 httpPost
4 } from '@/api/fetch-api.js';
5
6 import {
7 mapState
8 } from 'vuex';
9
10 export default {
11 props: {
12 multiSelectable: {
13 type: Boolean,
14 default: false
15 },
16 model: {
17 type: String,
18 // checkbox
19 default: "download"
20 }
21 },
22 name: "InsuranceQuery",
23 data() {
24 return {
25 myPolicyList: [],
26 maxShow: 2,
27 selectPolicyCode: "",
28 selectPolicyCodes: {},
29 }
30 },
31 computed: {
32 ...mapState({
33 policyList: state => state.policyList
34 }),
35 },
36 methods: {
37 queryList() {
38 if (this.policyList && this.policyList.length > 0) {
39 this.myPolicyList = this.policyList;
40 this.myPolicyList.forEach(element => {
41 element.activity = false;
42 })
43 this.initSelected();
44 } else {
45 httpPost({ url: api.policyList, sid: true }).then(res => {
46 if (!res || res.length == 0) {
47 this.myPolicyList = null;
48 } else {
49 res.forEach(element => {
50 element.activity = false;
51 // let len = element.policyCode.length;
52 // element.policyCodeStr = element.policyCode && len > 5 ?
53 // element.policyCode.substring(0, 2) + "**********"
54 // + element.policyCode.substring(len - 4, len) : element.policyCode;
55 });
56 this.$store.commit("CACHE_POLICY_LIST", res);
57 this.myPolicyList = res;
58 }
59 this.initSelected();
60 }).catch(e => {
61 this.myPolicyList = null;
62 switch (e.code) {
63 case "2002":
64 // 不是客户,没有购买保单
65 break;
66 }
67 })
68 }
69 },
70 initSelected() {
71 let selectPolicy = null;
72 try {
73 let data = sessionStorage.getItem("_hklife_policy");
74 if (data) {
75 sessionStorage.removeItem("_hklife_policy");
76 selectPolicy = JSON.parse(decodeURIComponent(data));
77 if (selectPolicy) {
78 if (this.multiSelectable) {
79 this.selectPolicyCodes[selectPolicy.code] = selectPolicy;
80 } else {
81 this.selectPolicyCode = selectPolicy.code;
82 }
83 this.$emit("onSelect", [selectPolicy]);
84
85 // 判断最大显示
86 let index = -1;
87 for (let i = 0; i < this.myPolicyList.length; i++) {
88 if (selectPolicy.code == this.myPolicyList[i].policyCode) {
89 this.myPolicyList[i].activity = true;
90 index = i;
91 }
92 }
93 this.$set(this, "myPolicyList", this.myPolicyList);
94 if (index > 2) {
95 this.maxShow = this.myPolicyList.length;
96 }
97 }
98 }
99 } catch (e) {
100
101 }
102 },
103 handlePolicySelect(item, index) {
104 let code = item.policyCode;
105 if (this.multiSelectable) {
106 let c = this.selectPolicyCodes[code];
107 if (!c || typeof c == "undefined") {
108 item.activity = true;
109 this.selectPolicyCodes[code] = { code: code, id: item.policyId };
110 } else {
111 item.activity = false;
112 delete this.selectPolicyCodes[code];
113 }
114 // this.$set(this, 'myPolicyList', this.myPolicyList);
115 let data = [];
116 for (let key in this.selectPolicyCodes) {
117 data.push(this.selectPolicyCodes[key]);
118 }
119 this.$emit("onSelect", data);
120 } else {
121 if (code != this.selectPolicyCode) {
122 this.selectPolicyCode = code;
123 this.$emit("onSelect", [{ code: code, id: item.policyId }]);
124 }
125 }
126 },
127 isPolicySelect(item, index) {
128 let code = item.policyCode;
129 if (this.multiSelectable) {
130 let c = this.selectPolicyCodes[code];
131 if (!c || typeof c == "undefined") {
132 return false;
133 } else {
134 return true;
135 }
136 }
137 return false;
138 }
139 },
140 components: {
141 },
142 mounted() {
143 this.queryList();
144 },
145 }
1 @import '@/styles/_support';
2 .container {
3 overflow-x: scroll;
4 }
5 .cell-group {
6 margin-bottom: 1rem;
7
8 &:last-child {
9 margin-bottom: 0;
10 }
11
12 div {
13 color: #4c4948;
14 }
15
16 .w1 {
17 // width: 10rem;
18 width: 20rem;
19 text-align: center;
20 }
21
22 .w2 {
23 // width: 6.25rem;
24 width: 12.5rem;
25 text-align: center;
26 }
27
28 .table-header {
29 // width: 64.166667rem;
30 height: 3.25rem;
31 border-top-left-radius: .666667rem;
32 border-top-right-radius: .666667rem;
33 background-color: #f2f2f2;
34 display: flex;
35 align-items: center;
36
37 .normal-header {
38 // width: 58.833333rem;
39 @extend .bb;
40 padding: 0 2.75rem;
41 width: 100%;
42 margin: auto;
43 display: flex;
44 justify-content: space-between;
45 align-items: center;
46
47 .title {
48 font-weight: bold;
49 color: #575453;
50 }
51
52 .guide {
53 transition: all 0.5s;
54 cursor: pointer;
55 width: 1rem;
56 height: .666667rem;
57 background: url("~@/assets/images/insurance-query/triangle-down.png") no-repeat center center;
58 background-size: 100% 100%;
59 }
60
61 .rotate180 {
62 transform: rotate(180deg);
63 transition: all 0.5s;
64 }
65 }
66 }
67
68 .table-content {
69 // width: 64.166667rem;
70
71 height: auto;
72 // display: inline-block;
73 border-bottom-left-radius: .666667rem;
74 border-bottom-right-radius: .666667rem;
75 border-left: solid .083333rem #f2f2f2;
76 border-right: solid .083333rem #f2f2f2;
77 border-bottom: solid .083333rem #f2f2f2;
78 padding: 0 2.75rem;
79 // max-height: 41.666667rem;
80 // transition: max-height ease-out 0.3s !important;
81 overflow: hidden;
82
83 .data-line {
84 // padding: 0 2.75rem;
85 height: 4.416667rem;
86 margin: auto;
87 display: flex;
88 justify-content: space-between;
89 align-items: center;
90
91 .td {
92 display: flex;
93 justify-content: center;
94 align-items: center;
95 }
96
97 .cell1 {
98 width: 98%;
99 display: flex;
100 justify-content: space-between;
101 margin: auto;
102 }
103
104 .separator-v {
105 height: 2.5rem;
106 width: .166667rem;
107 background-color: #f2f2f2;
108 margin: 0 .916667rem;
109 }
110 }
111
112 .label span {
113 color: #f05a23;
114 margin-left: .583333rem;
115 cursor: pointer;
116 text-decoration: underline;
117 }
118
119 .separator-h {
120 width: 100%;
121 height: 1px;
122 background-color: #f2f2f2;
123 }
124 }
125
126 .orange {
127 background-color: #f05a23 !important;
128
129 div {
130 color: #ffffff;
131 }
132 }
133
134 .hide {
135 max-height: 0;
136 border-bottom: none;
137 }
138
139 .sp {
140 text-decoration :underline;
141 padding: 0 .4rem;
142 }
143
144 .ac {
145 color: #f05a23 !important;
146 }
147 }
148
149 .show-more-btn {
150 width: 100%;
151 color: #f05a23 !important;
152 text-decoration :underline;
153 cursor: pointer;
154 justify-content: center !important;
155 }
156
157 .pointer {
158 cursor: pointer;
159 }
160
161 .activity {
162 background-color: #f05a23 !important;
163 opacity: .5;
164 div{
165 color: #FFFFFF !important;
166 }
167 }
168
169 .empty{
170 height: 41.666667rem;
171 display: flex;
172 align-items: center;
173 justify-content: center;
174
175 .tips {
176 display: flex;
177
178 .icon {
179 margin-right: 5px;
180 display: inline-block;
181 }
182
183 .btn {
184 color: #f05a23;
185 }
186 }
187 }
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <div class="container">
3 <div class="cell-group">
4 <div class="table-header orange">
5 <div class="normal-header">
6 <div class="td w1">{{$t('customService.insuranceQuery.InsurantNumber')}}</div>
7 <div class="td w2">{{$t('customService.insuranceQuery.Insurant')}}</div>
8 <div class="td w1">{{$t('customService.insuranceQuery.InsurantName')}}</div>
9 <div class="td w2">{{$t('customService.insuranceQuery.InsurantAmount')}}</div>
10 <div class="td w2">{{$t('customService.insuranceQuery.effectiveDate')}}</div>
11 <div class="td w2">{{$t('customService.insuranceQuery.period')}}</div>
12 </div>
13 </div>
14 <div class="table-content">
15 <template v-if="myPolicyList">
16 <div v-for="(item,index) in myPolicyList" :key="index">
17 <template v-if="index < maxShow">
18 <div class="data-line" @click="handlePolicySelect(item,index)">
19 <div class="td w1 pointer">
20 <template v-if="multiSelectable">
21 <img v-if="item.activity" class="icon-check pointer" src="@/assets/images/insurance-query/check.png">
22 <img v-else class="icon-check pointer" src="@/assets/images/insurance-query/un-check.png">
23 <span class="sp" :class="{ac: item.activity}">{{item.policyCode}}</span>
24 </template>
25 <template v-else>
26 <template v-if="model != 'download'">
27 <img v-if="selectPolicyCode == item.policyCode" class="icon-check pointer" src="@/assets/images/insurance-query/check.png">
28 <img v-else class="icon-check pointer" src="@/assets/images/insurance-query/un-check.png">
29 </template>
30 <span class="sp" :class="{ac: selectPolicyCode == item.policyCode}">{{item.policyCode}}</span>
31 <template v-if="model == 'download'">
32 <img class="icon-download" src="@/assets/images/insurance-query/icon-down-load.png" alt="">
33 </template>
34 </template>
35 </div>
36 <div class="td w2">{{item.insuredName}}</div>
37 <div class="td w1">{{item.productName}}</div>
38 <div class="td w2">{{item.moneyCode}}{{item.amount}}</div>
39 <div class="td w2">{{item.expireAt}}</div>
40 <div class="td w2">{{item.guaranteeAge}}</div>
41 </div>
42 <div class="separator-h" v-if="index < myPolicyList.length - 1 && index < maxShow - 1"></div>
43 </template>
44 </div>
45 <template v-if="!policyList || maxShow < policyList.length">
46 <div class="separator-h"></div>
47 <div class="data-line show-more-btn" @click="maxShow = policyList.length">{{$t('customService.insuranceQuery.showMore')}}</div>
48 </template>
49 </template>
50
51 <template v-else>
52 <div class="empty">
53 <div class="tips">
54 <img class="icon" src="@/assets/images/common/icon-alert-i.png" alt="">
55 <div class="txt">
56 {{$t('customService.insuranceQuery.noPolicy')}}
57 <span class="pointer btn">{{$t('customService.insuranceQuery.customService')}}</span>
58 </div>
59 </div>
60 </div>
61 </template>
62 </div>
63 </div>
64 </div>
65 </template>
66
67
68 <script src="./policy-head-list.js"></script>
69 <style lang="scss" scoped>
70 @import "./policy-head-list.scss";
71 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -3,6 +3,10 @@ import { ...@@ -3,6 +3,10 @@ import {
3 httpGet, 3 httpGet,
4 httpPost 4 httpPost
5 } from '@/api/fetch-api.js' 5 } from '@/api/fetch-api.js'
6 import {
7 mapState
8 } from 'vuex';
9
6 10
7 import Auth from '@components/auth/auth.vue'; 11 import Auth from '@components/auth/auth.vue';
8 import modalComp from '@/components/modal-comp/modal-comp.vue'; 12 import modalComp from '@/components/modal-comp/modal-comp.vue';
...@@ -12,6 +16,7 @@ import DatePicker from '@/components/date-picker/date-picker.vue' ...@@ -12,6 +16,7 @@ import DatePicker from '@/components/date-picker/date-picker.vue'
12 export default { 16 export default {
13 data() { 17 data() {
14 return { 18 return {
19 loading: false,
15 showForm: false, 20 showForm: false,
16 key: 'value', 21 key: 'value',
17 values: { 22 values: {
...@@ -53,6 +58,9 @@ export default { ...@@ -53,6 +58,9 @@ export default {
53 modalSimpleComp 58 modalSimpleComp
54 }, 59 },
55 computed: { 60 computed: {
61 ...mapState({
62 userInfo: state => state.userInfo
63 }),
56 locale() { 64 locale() {
57 return this.$i18n.locale || 'tc'; 65 return this.$i18n.locale || 'tc';
58 }, 66 },
...@@ -116,11 +124,17 @@ export default { ...@@ -116,11 +124,17 @@ export default {
116 // let day = y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d); 124 // let day = y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d);
117 this.information.birthDate = this.birthDate; 125 this.information.birthDate = this.birthDate;
118 this.loadIdentify().then(() => { 126 this.loadIdentify().then(() => {
127
128 if (this.loading) {
129 return;
130 }
131 this.loading = true;
119 httpPost({ 132 httpPost({
120 url: api.updateInformation, 133 url: api.updateInformation,
121 data: this.information, 134 data: this.information,
122 sid: true 135 sid: true
123 }).then(response => { 136 }).then(response => {
137 this.loading = false;
124 let message = ""; 138 let message = "";
125 switch (response.returnCode) { 139 switch (response.returnCode) {
126 case "GS_MODIFYFIVEKEYS_ERROR_IDNOERROR": 140 case "GS_MODIFYFIVEKEYS_ERROR_IDNOERROR":
...@@ -136,8 +150,12 @@ export default { ...@@ -136,8 +150,12 @@ export default {
136 this.showModal(message, "succ"); 150 this.showModal(message, "succ");
137 let path = this.$route.query.callback || "/"; 151 let path = this.$route.query.callback || "/";
138 this.targetPath = path; 152 this.targetPath = path;
153 this.userInfo.hadFullInfo = 1;
154 this.$store.commit("SET_USER_INFO", this.userInfo);
139 break; 155 break;
140 } 156 }
157 }).catch(err => {
158 this.loading = false;
141 }); 159 });
142 }); 160 });
143 } 161 }
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
63 </div> 63 </div>
64 <div class="ipt-wrap"> 64 <div class="ipt-wrap">
65 <!-- <input class="ipt" type="date" :class="{err : errorTips.e3.length > 0}" v-model="birthDate"> --> 65 <!-- <input class="ipt" type="date" :class="{err : errorTips.e3.length > 0}" v-model="birthDate"> -->
66 <date-picker class="date" v-model="information.birthDate"></date-picker> 66 <date-picker class="date" v-model="information.birthDate" :filtModel="['future','today']"></date-picker>
67 </div> 67 </div>
68 <div class="validator" v-if="errorTips.e3.length > 0 "> 68 <div class="validator" v-if="errorTips.e3.length > 0 ">
69 <img src="@/assets/images/common/icon-notice.png" alt=""> {{errorTips.e3}} 69 <img src="@/assets/images/common/icon-notice.png" alt=""> {{errorTips.e3}}
......
...@@ -22,6 +22,7 @@ import { ...@@ -22,6 +22,7 @@ import {
22 export default { 22 export default {
23 data() { 23 data() {
24 return { 24 return {
25 loading: false,
25 key: 'value', 26 key: 'value',
26 type: 1, // 1:帐密登陆 2:OTP登陆, 27 type: 1, // 1:帐密登陆 2:OTP登陆,
27 values: { 28 values: {
...@@ -41,10 +42,10 @@ export default { ...@@ -41,10 +42,10 @@ export default {
41 tip: "" // 显示的文字 42 tip: "" // 显示的文字
42 }, 43 },
43 loginForm: { 44 loginForm: {
44 // userId: "18334783910", 45 userId: "18334783910",
45 // password: "qweqwe123", 46 password: "qweqwe123",
46 userId: "18145729463", 47 // userId: "18145729463",
47 password: "ccc123!@#", 48 // password: "ccc123!@#",
48 // userId: "", 49 // userId: "",
49 // password: "", 50 // password: "",
50 51
...@@ -199,6 +200,11 @@ export default { ...@@ -199,6 +200,11 @@ export default {
199 this._showEmptyPasswordTips(); 200 this._showEmptyPasswordTips();
200 return; 201 return;
201 } 202 }
203
204 if (this.loading) {
205 return;
206 }
207 this.loading = true;
202 this.handlerIsShowImageVcode().then(() => { 208 this.handlerIsShowImageVcode().then(() => {
203 httpPost({ 209 httpPost({
204 url: api.gsLogin, 210 url: api.gsLogin,
...@@ -208,6 +214,7 @@ export default { ...@@ -208,6 +214,7 @@ export default {
208 loginPwd: passwordEncrypt(this.loginForm.password) 214 loginPwd: passwordEncrypt(this.loginForm.password)
209 } 215 }
210 }).then(response => { 216 }).then(response => {
217 this.loading = false;
211 this._handlerLoginResponse(response); 218 this._handlerLoginResponse(response);
212 }) 219 })
213 }); 220 });
...@@ -273,10 +280,16 @@ export default { ...@@ -273,10 +280,16 @@ export default {
273 otp: this.loginForm.otp, 280 otp: this.loginForm.otp,
274 deviceId: this.refreshDeviceId() 281 deviceId: this.refreshDeviceId()
275 }; 282 };
283
284 if (this.loading) {
285 return;
286 }
287 this.loading = true;
276 httpPost({ 288 httpPost({
277 url: api.otpLogin, 289 url: api.otpLogin,
278 data: data 290 data: data
279 }).then(response => { 291 }).then(response => {
292 this.loading = false;
280 this._handlerLoginResponse(response); 293 this._handlerLoginResponse(response);
281 }); 294 });
282 }); 295 });
......
...@@ -11,6 +11,7 @@ import { passwordEncrypt } from '@/utils/encrypt.js'; ...@@ -11,6 +11,7 @@ import { passwordEncrypt } from '@/utils/encrypt.js';
11 export default { 11 export default {
12 data() { 12 data() {
13 return { 13 return {
14 loading: false,
14 key: 'value', 15 key: 'value',
15 type: 1, // 1:输入用户信息 2:找回密码 3:核对信息 4.重置密码 16 type: 1, // 1:输入用户信息 2:找回密码 3:核对信息 4.重置密码
16 values: { 17 values: {
...@@ -117,6 +118,10 @@ export default { ...@@ -117,6 +118,10 @@ export default {
117 if (this.times.remain > 0) { 118 if (this.times.remain > 0) {
118 return; 119 return;
119 } 120 }
121 if (this.loading) {
122 return;
123 }
124 this.loading = true;
120 // 定位用户 125 // 定位用户
121 httpPost({ 126 httpPost({
122 url: api.sendOtp, 127 url: api.sendOtp,
...@@ -124,6 +129,7 @@ export default { ...@@ -124,6 +129,7 @@ export default {
124 cid: this.values.cid 129 cid: this.values.cid
125 } 130 }
126 }).then(response => { 131 }).then(response => {
132 this.loading = false;
127 if (this.responseHandler(response)) { 133 if (this.responseHandler(response)) {
128 switch (response.returnCode) { 134 switch (response.returnCode) {
129 case "COMMON_ERROR_E3": 135 case "COMMON_ERROR_E3":
...@@ -134,6 +140,8 @@ export default { ...@@ -134,6 +140,8 @@ export default {
134 return; 140 return;
135 } 141 }
136 } 142 }
143 }).catch(err => {
144 this.loading = false;
137 }) 145 })
138 }, 146 },
139 checkOtp() { 147 checkOtp() {
...@@ -180,7 +188,10 @@ export default { ...@@ -180,7 +188,10 @@ export default {
180 return; 188 return;
181 } 189 }
182 let pwd = passwordEncrypt(this.step4.pwd); 190 let pwd = passwordEncrypt(this.step4.pwd);
183 // 定位用户 191 if (this.loading) {
192 return;
193 }
194 this.loading = true;
184 httpPost({ 195 httpPost({
185 url: api.resetPwd, 196 url: api.resetPwd,
186 data: { 197 data: {
...@@ -188,6 +199,7 @@ export default { ...@@ -188,6 +199,7 @@ export default {
188 password: pwd 199 password: pwd
189 } 200 }
190 }).then(response => { 201 }).then(response => {
202 this.loading = false;
191 if (this.responseHandler(response)) { 203 if (this.responseHandler(response)) {
192 let message = this.i18n().passwordCheck.success; 204 let message = this.i18n().passwordCheck.success;
193 this.step4.success = true; 205 this.step4.success = true;
...@@ -201,6 +213,8 @@ export default { ...@@ -201,6 +213,8 @@ export default {
201 break; 213 break;
202 } 214 }
203 } 215 }
216 }).catch(err => {
217 this.loading = false;
204 }) 218 })
205 }, 219 },
206 checkPassword(password) { 220 checkPassword(password) {
......
...@@ -20,5 +20,10 @@ export function SET_USER_INFO(state, val) { ...@@ -20,5 +20,10 @@ export function SET_USER_INFO(state, val) {
20 } else { 20 } else {
21 setCookie("_user_profile", "", 1); 21 setCookie("_user_profile", "", 1);
22 state.userInfo = null; 22 state.userInfo = null;
23 state.policyList = null;
23 } 24 }
24 } 25 }
26
27 export function CACHE_POLICY_LIST(state, val) {
28 state.policyList = val;
29 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -3,9 +3,10 @@ export default { ...@@ -3,9 +3,10 @@ export default {
3 isMobile: false, //是否手机访问 3 isMobile: false, //是否手机访问
4 isSmallScreen: false, // 是否小屏幕 (PC时,小屏幕机导航栏会改变)) 4 isSmallScreen: false, // 是否小屏幕 (PC时,小屏幕机导航栏会改变))
5 5
6 userInfo : { 6 userInfo: {
7 sid : "", 7 sid: "",
8 name : "", 8 name: "",
9 hadFullInfo: "" 9 hadFullInfo: "",
10 } 10 },
11 policyList: []
11 } 12 }
......