<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"
|
></NuxtChild>
|
</div>
|
</template>
|
|
<script lang='ts'>
|
import { Vue, Component, Watch, State, Action } from 'nuxt-property-decorator';
|
import { Consultant } from '~/assets/ts/models/consultant.model';
|
|
@Component
|
export default class myConsultantList extends Vue {
|
activeTabName = 'consultantList';
|
agents: Consultant[] = [];
|
contactedList: Consultant[] = [];
|
consultantList: Consultant[] = [];
|
|
@State('myConsultantList') myConsultantList!: Consultant[];
|
@Action storeConsultantList!: any;
|
|
@Watch('myConsultantList')
|
onMyConsultantListChange() {
|
this.filterContactedList();
|
}
|
|
beforeRouteEnter(to: any, from: any, next: any) {
|
next(vm => {
|
if (to.name === 'myConsultantList') {
|
vm.$router.push('myConsultantList/consultantList');
|
return;
|
}
|
})
|
}
|
|
mounted() {
|
this.storeConsultantList();
|
|
if (this.$route.name) {
|
this.activeTabName = this.$route.name.split('-')[1]
|
}
|
}
|
|
tabClick(path: string) {
|
this.activeTabName = path;
|
this.$router.push('/myConsultantList/' + this.activeTabName)
|
}
|
|
|
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);
|
}
|
|
}
|
</script>
|