From 1d6d2d14200ed9432347ef8013e3fc117fa2161b Mon Sep 17 00:00:00 2001
From: Mila <Mila@pollex.com.tw>
Date: 星期四, 20 一月 2022 14:57:27 +0800
Subject: [PATCH] Merge branch 'master' into Phase3

---
 PAMapp/pages/questionnaire/_agentNo.vue |  256 ++++++++++++++++++++++++++-------------------------
 1 files changed, 131 insertions(+), 125 deletions(-)

diff --git a/PAMapp/pages/questionnaire/_agentNo.vue b/PAMapp/pages/questionnaire/_agentNo.vue
index 7599a69..6593094 100644
--- a/PAMapp/pages/questionnaire/_agentNo.vue
+++ b/PAMapp/pages/questionnaire/_agentNo.vue
@@ -155,10 +155,17 @@
   const roleStorage = namespace('localStorage');
   @Component
   export default class Questionnaire extends Vue {
-    @State('myConsultantList') myConsultantList!: Consultant[];
-    @Action storeConsultantList!: () => Promise<number>;
-    @roleStorage.Getter isUserLogin!:boolean;
-    @roleStorage.State recommendConsultantItem!:string;
+    @State('myConsultantList')
+    myConsultantList!: Consultant[];
+
+    @Action
+    storeConsultantList!: () => Promise<number>;
+
+    @roleStorage.Getter
+    isUserLogin!:boolean;
+
+    @roleStorage.State
+    recommendConsultantItem!:string;
 
     genderOptions=[
       {
@@ -279,6 +286,8 @@
     appointmentId = 0;
     appointmentTime = '';
 
+    ////////////////////////////////////////////////////////////////////////////
+
     beforeRouteEnter(to: any, from: any, next: any) {
       next(vm => {
         const isUserLogin = authService.isUserLogin();
@@ -293,13 +302,10 @@
       })
     }
 
-    async fetch() {
-      if (authService.isUserLogin()) {
-        await this.storeConsultantList();
-      };
-    }
-
     mounted(): void {
+      if (authService.isUserLogin()) {
+        this.storeConsultantList();
+      };
       this.setMyRequest();
     }
 
@@ -328,6 +334,121 @@
       }
     }
 
+    ////////////////////////////////////////////////////////////////////////////
+
+    @Watch('myConsultantList')
+    onMyConsultantListChange() {
+      if (authService.isUserLogin() && this.myConsultantList.length > 0) {
+          const editAppointment = this.getLatestReserved(this.$route.params.agentNo);
+
+          if (editAppointment && editAppointment.agentNo) {
+            this.myRequest = JSON.parse(JSON.stringify(editAppointment));
+            if (!this.$route.query || this.$route.query.edit !== 'true') {
+              this.isEditPopup = true;
+            }
+            this.isEditBtn = true;
+          }
+      }
+    }
+
+    private getLatestReserved(agentNo) {
+      const agentInfo = this.myConsultantList.filter(item => item.agentNo === agentNo);
+
+      const appointmentInfo = agentInfo.length > 0 && agentInfo[0].appointments
+        ? agentInfo[0].appointments!
+              .filter((appointment) => appointment.communicateStatus !== 'contacted')
+              .map((reversedAppointment) => (
+                { ...reversedAppointment,
+                  sortDate: new Date(reversedAppointment.appointmentDate)
+                }))
+              .sort((preAppointment, nextAppointment) => +nextAppointment.sortDate - +preAppointment.sortDate)[0]
+        : null;
+      return this.getReservedData(appointmentInfo);
+    }
+
+    private getReservedData(appointmentInfo) {
+      if (appointmentInfo) {
+        const hopeContactTime = appointmentInfo!.hopeContactTime.split("'")
+              .filter(item => item && item !== ',');
+        this.getAppointmentId(appointmentInfo);
+
+        return {
+            ...appointmentInfo,
+            hopeContactTime: hopeContactTime.map(item => {
+                const info = item.split('��');
+                return {
+                    selectWeekOptions: info[0].split(','),
+                    selectTimesOptions: info[1].split(',')
+                }
+            }),
+            requirement: appointmentInfo.requirement.split(',')
+          }
+      } else {
+        return null;
+      }
+    }
+
+    private getAppointmentId(appointmentInfo) {
+      this.appointmentId = appointmentInfo.id;
+      this.appointmentTime = appointmentInfo.lastModifiedDate
+                  ? appointmentInfo.lastModifiedDate
+                  : appointmentInfo.appointmentDate;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
+    sentDemand() {
+      if (this.isEditBtn) {
+        this.editAppointmentDemand();
+      } else {
+        queryConsultantService.addFavoriteConsultant([this.$route.params.agentNo]).then(res => this.sentAppointmentDemand());
+      }
+    }
+
+    private editAppointmentDemand() {
+      const info = {
+          ...this.myRequest,
+          requirement: _.map(this.myRequest.requirement,o=>o).toString(),
+          hopeContactTime: this.myRequest.phone && this.phoneValid ? this.getHopeContactTime() :'',
+          id: this.appointmentId,
+          otherRequirement: null
+        }
+      appointmentService.editAppointment(info).then(res => {
+        this.sendReserve = true;
+        this.myRequest.hopeContactTime = [];
+        setRequestsToStorage(this.myRequest);
+      });
+    }
+
+    private sentAppointmentDemand() {
+        const data: AppointmentParams = {
+          ...this.myRequest,
+          requirement: _.map(this.myRequest.requirement,o=>o).toString(),
+          hopeContactTime: this.myRequest.phone && this.phoneValid ? this.getHopeContactTime() :'',
+          agentNo: this.$route.params.agentNo
+        };
+
+        queryConsultantService.appointmentDemand(data).then(res => {
+            this.sendReserve = true;
+            this.myRequest.hopeContactTime = [];
+            setRequestsToStorage(this.myRequest);
+        });
+    }
+
+    private getHopeContactTime() {
+        const selectedHopeContactTime = this.myRequest.hopeContactTime.filter((i) => i.selectWeekOptions?.length && i.selectTimesOptions?.length);
+        return selectedHopeContactTime.map(i => {
+            return `'${i.selectWeekOptions}��${i.selectTimesOptions}'`}
+        ).toString();
+    }
+
+    closeReservePopUp() {
+        this.sendReserve = false;
+        this.$router.push('/')
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+
     get phoneValid(): boolean {
       const rule = /^09[0-9]{8}$/;
       return this.myRequest.phone
@@ -350,121 +471,6 @@
       return this.myRequest.hopeContactTime[0]?.selectWeekOptions.length >0 && this.myRequest.hopeContactTime[0]?.selectTimesOptions.length >0;
     }
 
-    sentDemand() {
-      if (this.isEditBtn) {
-        this.sentEditAppointmentDemand();
-      } else {
-        queryConsultantService.addFavoriteConsultant([this.$route.params.agentNo]).then(res => this.sentAppointmentDemand());
-      }
-
-    }
-
-    private sentAppointmentDemand() {
-        const data: AppointmentParams = {
-          ...this.myRequest,
-          requirement: _.map(this.myRequest.requirement,o=>o).toString(),
-          hopeContactTime: this.myRequest.phone && this.phoneValid ? this.getHopeContactTime() :'',
-          agentNo: this.$route.params.agentNo
-        };
-
-        queryConsultantService.appointmentDemand(data).then(res => {
-            this.sendReserve = true;
-            this.myRequest.hopeContactTime = [];
-            setRequestsToStorage(this.myRequest);
-        });
-    }
-
-    private sentEditAppointmentDemand() {
-      const info = {
-          ...this.myRequest,
-          requirement: _.map(this.myRequest.requirement,o=>o).toString(),
-          hopeContactTime: this.myRequest.phone && this.phoneValid ? this.getHopeContactTime() :'',
-          id: this.appointmentId,
-          otherRequirement: null
-        }
-        appointmentService.editAppointment(info).then(res => {
-          this.sendReserve = true;
-          this.myRequest.hopeContactTime = [];
-          setRequestsToStorage(this.myRequest);
-        });
-    }
-
-    getHopeContactTime() {
-        const selectedHopeContactTime = this.myRequest.hopeContactTime.filter((i) => i.selectWeekOptions?.length && i.selectTimesOptions?.length);
-        return selectedHopeContactTime.map(i => {
-            return `'${i.selectWeekOptions}��${i.selectTimesOptions}'`}
-        ).toString();
-    }
-
-    closeReservePopUp() {
-        this.sendReserve = false;
-        this.$router.push('/')
-    }
-
-    private getLatestReserved(agentNo) {
-      const agentInfo = this.myConsultantList.filter(item => item.agentNo === agentNo);
-
-      const appointmentInfo = agentInfo.length > 0 && agentInfo[0].appointments
-        ? agentInfo[0].appointments!
-              .filter((appointment) => appointment.communicateStatus !== 'contacted')
-              .map((reversedAppointment) => {
-                return {
-                  ...reversedAppointment,
-                  sortDate: new Date(reversedAppointment.appointmentDate)
-                }
-              })
-              .sort((preAppointment, nextAppointment) => +nextAppointment.sortDate - +preAppointment.sortDate)[0]
-        : null;
-      return this.getReservedData(appointmentInfo);
-    }
-
-    private getReservedData(appointmentInfo) {
-      if (appointmentInfo) {
-        const hopeContactTime = appointmentInfo!.hopeContactTime.split("'")
-              .filter(item => item && item !== ',');
-        this.getAppointmentId(appointmentInfo);
-        return {
-            age: appointmentInfo.age,
-            agentNo: appointmentInfo.agentNo,
-            contactType: appointmentInfo.contactType,
-            email: appointmentInfo.email || '',
-            gender: appointmentInfo.gender,
-            hopeContactTime: hopeContactTime.map(item => {
-                const info = item.split('��');
-                return {
-                    selectWeekOptions: info[0].split(','),
-                    selectTimesOptions: info[1].split(',')
-                }
-            }),
-            job: appointmentInfo.job,
-            phone: appointmentInfo.phone || '',
-            requirement: appointmentInfo.requirement.split(',')
-          }
-      } else {
-        return null;
-      }
-    }
-
-    private getAppointmentId(appointmentInfo) {
-      this.appointmentId = appointmentInfo.id;
-      this.appointmentTime = appointmentInfo.lastModifiedDate
-                  ? appointmentInfo.lastModifiedDate
-                  : appointmentInfo.appointmentDate;
-    }
-    @Watch('myConsultantList') onMyConsultantListChange() {
-      if (authService.isUserLogin() && this.myConsultantList.length > 0) {
-          const editAppointment = this.getLatestReserved(this.$route.params.agentNo);
-
-          if (editAppointment && editAppointment.agentNo) {
-            this.myRequest = JSON.parse(JSON.stringify(editAppointment));
-            if (!this.$route.query || this.$route.query.edit !== 'true') {
-              this.isEditPopup = true;
-            }
-            this.isEditBtn = true;
-            return;
-          }
-      }
-    }
   }
 </script>
 

--
Gitblit v1.8.0