完成大部分功能
Showing
24 changed files
with
991 additions
and
225 deletions
| ... | @@ -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; | ... | ... | 
This diff is collapsed.
Click to expand it.
| ... | @@ -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 | } | ... | ... | 
| 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 | } | ... | ... | 
- 
Please register or sign in to post a comment