From f6a21bf37ef56ecab88652b1449da63f73b9648a Mon Sep 17 00:00:00 2001
From: Mila <Mila@pollex.com.tw>
Date: 星期二, 16 十一月 2021 20:59:28 +0800
Subject: [PATCH] update 我的顧問清單: 使用 store 存放 consultantList 以及新增顧問、移除顧問的狀態控制

---
 PAMapp/pages/myConsultantList.vue |   49 ++++++++++++++++++++++---------------------------
 1 files changed, 22 insertions(+), 27 deletions(-)

diff --git a/PAMapp/pages/myConsultantList.vue b/PAMapp/pages/myConsultantList.vue
index d85e127..d935c8d 100644
--- a/PAMapp/pages/myConsultantList.vue
+++ b/PAMapp/pages/myConsultantList.vue
@@ -20,51 +20,46 @@
         <NuxtChild
             :contactedList="contactedList"
             :consultantList="consultantList"
-            @remove="removeAgent"
         ></NuxtChild>
     </div>
 </template>
 
 <script lang='ts'>
-import { Context } from '@nuxt/types';
-import { Vue, Component, Watch } from 'vue-property-decorator';
+import { Vue, Component, Watch, State, Action } from 'nuxt-property-decorator';
 import { Route } from 'vue-router/types/router.d'
-import { Agents } from '~/plugins/api/home';
+import { Consultants } from '~/assets/ts/api/consultant';
 
 @Component
 export default class myConsultantList extends Vue {
     activeTabName = 'consultantList';
-    agents: Agents[] = [];
-    contactedList: Agents[] = [];
-    consultantList: Agents[] = [];
+    agents: Consultants[] = [];
+    contactedList: Consultants[] = [];
+    consultantList: Consultants[] = [];
+
+    @State('myConsultantList') myConsultantList!: Consultants[];
+    @Action storeConsultantList!: any;
+
+    @Watch('myConsultantList')
+    onMyConsultantListChange() {
+        this.filterContactedList();
+    }
 
     tabClick(path: string) {
         this.activeTabName = path;
         this.$router.push('/myConsultantList/' + this.activeTabName)
     }
 
-    async asyncData(context: Context) {
-        let agents: Agents[] = [];
-        let contactedList: Agents[] = [];
-        let consultantList: Agents[] = [];
-
-        await context.$service.home.recommendConsultantList().then((result: Agents[]) => {
-            agents = result;
-        })
-
-        contactedList = agents.filter(item => item.contactStatus === 'contacted');
-        consultantList = agents.filter(item => item.contactStatus !== 'contacted');
-
-        return {
-            agents,
-            contactedList,
-            consultantList
-        }
+    mounted() {
+        this.storeConsultantList();
     }
 
-    removeAgent(agentNo: number) {
-        const fintIndex = this.consultantList.findIndex(item => item.agentNo === agentNo);
-        this.consultantList.splice(fintIndex, 1);
+    filterContactedList() {
+        this.consultantList = (this.myConsultantList || [])
+                .filter(item => item.contactStatus !== 'contacted')
+                .sort((a, b) => a.updateTime > b.updateTime ? -1 : 1);
+        this.contactedList = (this.myConsultantList || [])
+                .filter(item => item.contactStatus === 'contacted')
+                .sort((a, b) => a.updateTime > b.updateTime ? -1 : 1);
     }
 
     @Watch('$route') watchRouter(currentRoute: Route) {

--
Gitblit v1.8.0