<template>
|
<div>
|
<div class="pam-cus-tabs mb-30">
|
<div
|
class="cus-tab-item"
|
:class="{'is-active': activeTabName === 'consultantList'}"
|
@click="tabClick('consultantList')"
|
>顧問清單
|
<span class="p">({{consultantList.length}})</span>
|
</div>
|
<div
|
class="cus-tab-item"
|
:class="{'is-active': activeTabName === 'contactedList'}"
|
@click="tabClick('contactedList')"
|
>已聯絡
|
<span class="p">({{contactedList.length}})</span>
|
</div>
|
</div>
|
|
<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 { Route } from 'vue-router/types/router.d'
|
import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant';
|
import { Consultants, deleteConsultant, getFavoriteConsultant } from '~/assets/ts/api/consultant';
|
import { isLogin } from '~/assets/ts/auth';
|
|
@Component
|
export default class myConsultantList extends Vue {
|
activeTabName = 'consultantList';
|
agents: Consultants[] = [];
|
contactedList: Consultants[] = [];
|
consultantList: Consultants[] = [];
|
|
tabClick(path: string) {
|
this.activeTabName = path;
|
this.$router.push('/myConsultantList/' + this.activeTabName)
|
}
|
|
async asyncData(context: Context) {
|
let agents: Consultants[] = [];
|
let contactedList: Consultants[] = [];
|
let consultantList: Consultants[] = [];
|
|
if (isLogin()) {
|
await getFavoriteConsultant().then((response) => agents = response.data);
|
} else {
|
agents = getFavoriteFromStorage();
|
}
|
|
contactedList = agents
|
.filter(item => item.contactStatus === 'contacted')
|
.sort((a, b) => a.updateTime > b.updateTime ? -1 : 1);
|
consultantList = agents
|
.filter(item => item.contactStatus !== 'contacted')
|
.sort((a, b) => a.updateTime > b.updateTime ? -1 : 1);
|
|
return {
|
agents,
|
contactedList,
|
consultantList
|
}
|
}
|
|
removeAgent(agentNo: string) {
|
if (!isLogin()) {
|
const fintIndex = this.consultantList.findIndex(item => item.agentNo === agentNo);
|
this.consultantList.splice(fintIndex, 1);
|
setFavoriteToStorage(this.consultantList);
|
} else {
|
deleteConsultant(agentNo).then(res => this.$router.go(0))
|
}
|
}
|
|
@Watch('$route') watchRouter(currentRoute: Route) {
|
const pathArray = currentRoute.fullPath.split('/');
|
this.activeTabName = pathArray[pathArray.length - 1];
|
}
|
|
}
|
</script>
|