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