From 65bceeecd461806e360970d7035f23bacbcc58b7 Mon Sep 17 00:00:00 2001
From: Mila <Mila@pollex.com.tw>
Date: 星期四, 20 一月 2022 16:08:45 +0800
Subject: [PATCH] Merge branch 'Phase3' of https://192.168.0.10:8443/r/pcalife/PAM into Phase3

---
 PAMapp/pages/myAppointmentList/contactedList.vue |   49 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/PAMapp/pages/myAppointmentList/contactedList.vue b/PAMapp/pages/myAppointmentList/contactedList.vue
index f815994..5c4cd59 100644
--- a/PAMapp/pages/myAppointmentList/contactedList.vue
+++ b/PAMapp/pages/myAppointmentList/contactedList.vue
@@ -14,12 +14,17 @@
             ></i>
         </el-input>
 
+        <div class="sort-indicator mb-10 text--primary text--underline cursor--pointer" @click="changeSortType">
+          {{ this.sortType === 'DESC' ? '�->���' : '���->�' }}
+        </div>
+
         <ClientList
             :clients="pageList"
             :title="'contactedList'"
         ></ClientList>
 
         <UiPagination
+            v-if="togglePagination"
             :totalList="filterList"
             :currentPage="currentPage"
             @changePage="changePage"
@@ -28,7 +33,7 @@
 </template>
 
 <script lang="ts">
-import { Vue, Component, Watch, State, namespace } from 'nuxt-property-decorator';
+import { Vue, Component, Watch, namespace } from 'nuxt-property-decorator';
 
 import { Appointment } from '~/shared/models/appointment.model';
 
@@ -45,11 +50,13 @@
     @localStorage.Getter
     currentAppointmentIdFromMsg!: string;
 
-    contactedList: Appointment[] = [];
-    filterList   : Appointment[] = [];
-    keyWord      : string       = '';
-    pageList     : Appointment[] = [];
-    currentPage  : number = 1;
+    contactedList   : Appointment[]  = [];
+    currentPage      : number        = 1;
+    filterList       : Appointment[] = [];
+    keyWord          : string        = '';
+    pageList         : Appointment[] = [];
+    sortType        : 'ASC' | 'DESC' = 'DESC';
+    togglePagination: boolean        = true;
 
     //////////////////////////////////////////////////////////////////////
 
@@ -61,16 +68,32 @@
 
     @Watch('myAppointmentList')
     onMyAppointmentListChange() {
+      this.setContactedList();
+    }
+
+    @Watch('sortType')
+    onSortTypeChange() {
+      this.togglePagination = false;
+      setTimeout(() => {
+      this.togglePagination = true;
+        this.currentPage = 1;
+        this.setContactedList();
+      }, 0)
+    }
+
+    private setContactedList(): void {
         this.contactedList = (this.myAppointmentList || [])
             .filter(item => item.communicateStatus === 'contacted')
-            .map((item) => ({...item, sortTime: new Date(item.contactTime)}))
-            .sort((prevItem, nextItem) => +nextItem.sortTime - +prevItem.sortTime);
+            .map((item) => ({...item, sortTime: new Date(item.lastModifiedDate)}))
+            .sort((prevItem, nextItem) => {
+              return this.sortType === 'DESC' ? +nextItem.sortTime - +prevItem.sortTime : +prevItem.sortTime - +nextItem.sortTime
+            });
         this.filterList = this.contactedList;
 
         this.getCurrentPage();
     }
 
-    private getCurrentPage() {
+    private getCurrentPage(): void {
         const currentIndex = this.filterList.findIndex(item => item.id === +this.currentAppointmentIdFromMsg);
         const pageSize = 5;
         if (currentIndex > -1) {
@@ -90,5 +113,13 @@
         this.pageList = pageList;
     }
 
+    changeSortType(): void {
+      if (this.sortType === 'DESC') {
+        this.sortType = 'ASC';
+      } else {
+        this.sortType = 'DESC';
+      }
+    }
+
 }
 </script>

--
Gitblit v1.8.0