From 936541fe8054c08fac161ba81f05a765fa0be793 Mon Sep 17 00:00:00 2001
From: Tomas <tomasysh@gmail.com>
Date: 星期三, 01 十二月 2021 11:10:14 +0800
Subject: [PATCH] fixed#131386: 客戶登入後進行顧問(預約單填寫後,馬上進行另一個顧問的預約,此時預約到的顧問都會是第一個預約的顧問; fixed#131387: 填寫預約單自動帶入前一次預約單資料時,如果是填寫全天和全時段顯示會有問題

---
 PAMapp/components/phoneContactTimePicker.vue |   37 +++++++++---------
 PAMapp/pages/questionnaire/_agentNo.vue      |   26 +++++++++---
 PAMapp/store/localStorage.ts                 |    3 +
 3 files changed, 40 insertions(+), 26 deletions(-)

diff --git a/PAMapp/components/phoneContactTimePicker.vue b/PAMapp/components/phoneContactTimePicker.vue
index 32a2991..973eacb 100644
--- a/PAMapp/components/phoneContactTimePicker.vue
+++ b/PAMapp/components/phoneContactTimePicker.vue
@@ -11,12 +11,12 @@
             <p>{{optionsFormat(scheduleDto.selectTimesOptions,timesOfDayOptions)}}</p>
           </template>
           <template v-else>
-            隢��� 
+            隢���
           </template>
         </div>
         <div class="pam-contact-schedule__icon">
-          <i v-if="checkFormHasDone(scheduleDto)" 
-            class="icon-delet" 
+          <i v-if="checkFormHasDone(scheduleDto)"
+            class="icon-delet"
             :class="{'disable':syncScheduleList.length===1}"
             @click.stop="deleteScheduleItem(index)">
           </i>
@@ -25,44 +25,44 @@
       </div>
     </div>
     <div class="pam-add-schedule cursor--pointer"
-      :class="{'disable':!checkFormHasDone(syncScheduleList[syncScheduleList.length-1])|| syncScheduleList.length ===7}" 
+      :class="{'disable':!checkFormHasDone(syncScheduleList[syncScheduleList && syncScheduleList.length && syncScheduleList.length - 1])|| syncScheduleList.length ===7}"
       @click="addNewSchedule">
       <i class="icon-add"></i>
       �憓�挾
     </div>
 
-    <PopUpFrame class="pam-popUpFrame" 
+    <PopUpFrame class="pam-popUpFrame"
       :isOpen.sync="isOpenByStep_1"
       :drawerSize="drawerSize"
       :dialogWidth="dialogWidth">
         <div class="pam-popUp-title">{{popUpTitle}}</div>
-          <MultiSelectBtn class="mt-30" 
-            :mutiSelect.sync="initPickerControl.selectWeekOptions" 
-            :options="weekOptions.options" 
+          <MultiSelectBtn class="mt-30"
+            :mutiSelect.sync="initPickerControl.selectWeekOptions"
+            :options="weekOptions.options"
             :nameOfSelectAll="weekOptions.selectAll">
           </MultiSelectBtn>
           <div class="pam-popUp-confirm-bolck pam-paragraph">
-            <button class="pam-select-confirm" 
-              :class="[initPickerControl.selectWeekOptions.length?'el-button--primary' :'is-disabled']"  
+            <button class="pam-select-confirm"
+              :class="[initPickerControl.selectWeekOptions.length?'el-button--primary' :'is-disabled']"
               @click="confirmByStep_1">
               蝣箏��
             </button>
           </div>
     </PopUpFrame>
 
-    <PopUpFrame class="pam-popUpFrame" 
+    <PopUpFrame class="pam-popUpFrame"
       :isOpen.sync="isOpenByStep_2"
       :drawerSize="drawerSize"
       :dialogWidth="dialogWidth">
         <div class="pam-popUp-title">{{popUpTitle}}</div>
-        <MultiSelectBtn class="mt-30" 
-          :mutiSelect.sync="initPickerControl.selectTimesOptions" 
-          :options="timesOfDayOptions.options" 
+        <MultiSelectBtn class="mt-30"
+          :mutiSelect.sync="initPickerControl.selectTimesOptions"
+          :options="timesOfDayOptions.options"
           :nameOfSelectAll="timesOfDayOptions.selectAll">
         </MultiSelectBtn>
         <div class="pam-popUp-confirm-bolck pam-paragraph">
-          <button class="pam-select-confirm" 
-            :class="[initPickerControl.selectTimesOptions.length ?'el-button--primary' :'is-disabled']"  
+          <button class="pam-select-confirm"
+            :class="[initPickerControl.selectTimesOptions.length ?'el-button--primary' :'is-disabled']"
             @click="confirmByStep_2">
             蝣箏��
           </button>
@@ -163,7 +163,7 @@
     }
     getOptionsBySort(options:OptionBtnDto[],selectedOptions:string[]):string[]{
       return options.map( o => _.includes(selectedOptions,o.title) ? o.title :'').filter(String);
-      // return 
+      // return
     }
     addNewSchedule():void{
       const newScheduleDto={
@@ -178,7 +178,8 @@
     }
 
     checkFormHasDone(item:scheduleDto):boolean{
-      return item.selectWeekOptions.length>0 && item.selectTimesOptions.length>0;
+      if (!item) return false;
+      return item.selectWeekOptions?.length>0 && item.selectTimesOptions?.length>0;
     }
 
     titleFormatByIndex(index:number):string{
diff --git a/PAMapp/pages/questionnaire/_agentNo.vue b/PAMapp/pages/questionnaire/_agentNo.vue
index 94298a4..08b426d 100644
--- a/PAMapp/pages/questionnaire/_agentNo.vue
+++ b/PAMapp/pages/questionnaire/_agentNo.vue
@@ -51,7 +51,7 @@
                 <span v-show="!phoneValid">����Ⅳ�撘�炊</span>
               </div>
           </div>
-          <div class="mt-30" v-if="phoneValid">
+          <div class="mt-30" v-if="myRequest.phone && phoneValid">
               <div class="datepicker">
                   <span class="mdTxt">�����蝯∠�靘踵���</span>
                   <PhoneContactTimePicker
@@ -249,7 +249,7 @@
         selectWeekOptions: [],
         selectTimesOptions: [],
       }],
-      agentNo: this.$route.params.agentNo,
+      agentNo: '',
     };
 
     showDrawer= false;
@@ -258,13 +258,23 @@
     mounted() {
       const storageMyRequest = getRequestsFromStorage();
       if (storageMyRequest) {
-        this.myRequest = storageMyRequest;
+        this.myRequest = {
+          ...storageMyRequest,
+          hopeContactTime: storageMyRequest.hopeContactTime?.length
+                            ? storageMyRequest.hopeContactTime
+                            : [{
+                                selectWeekOptions: [],
+                                selectTimesOptions: [],
+                              }],
+        };
       }
     }
 
     get phoneValid(): boolean {
       const rule = /^09[0-9]{8}$/;
-      return this.myRequest.phone ? rule.test(this.myRequest.phone) && _.isEqual(this.myRequest.phone.length,10) : true;
+      return this.myRequest.phone
+            ? rule.test(this.myRequest.phone) && _.isEqual(this.myRequest.phone.length,10)
+            : true;
     }
 
     get userInfo(): RegisterInfo {
@@ -279,22 +289,24 @@
     }
 
     private isHopeContactTimeDone():boolean{
-      return this.myRequest.hopeContactTime[0].selectWeekOptions.length >0 && this.myRequest.hopeContactTime[0].selectTimesOptions.length >0;
+      return this.myRequest.hopeContactTime[0]?.selectWeekOptions.length >0 && this.myRequest.hopeContactTime[0]?.selectTimesOptions.length >0;
     }
 
     sentDemand() {
-      addFavoriteConsultant([this.myRequest.agentNo]).then(res => this.sentAppointmentDemand());
+      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.phoneValid ? this.getHopeContactTime() :'',
+          hopeContactTime: this.myRequest.phone && this.phoneValid ? this.getHopeContactTime() :'',
+          agentNo: this.$route.params.agentNo
         };
 
         appointmentDemand(data).then(res => {
             this.sendReserve = true;
+            this.myRequest.hopeContactTime = [];
             setRequestsToStorage(this.myRequest);
         });
     }
diff --git a/PAMapp/store/localStorage.ts b/PAMapp/store/localStorage.ts
index b8db5d8..d820735 100644
--- a/PAMapp/store/localStorage.ts
+++ b/PAMapp/store/localStorage.ts
@@ -40,7 +40,8 @@
   }
 
   @Mutation storageClear(): void {
-    localStorage.removeItem('userInfo')
+    localStorage.removeItem('myRequests');
+    localStorage.removeItem('userInfo');
     localStorage.removeItem('id_token');
     localStorage.removeItem('current_role');
     this.id_token = localStorage.getItem('id_token');

--
Gitblit v1.8.0