From abfd26bb700d93a92da6a04703b0187d4acaaeb5 Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期三, 22 十二月 2021 10:13:02 +0800 Subject: [PATCH] refactor: move ts folder to shared folder --- PAMapp/pages/myConsultantList.vue | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 110 insertions(+), 0 deletions(-) diff --git a/PAMapp/pages/myConsultantList.vue b/PAMapp/pages/myConsultantList.vue new file mode 100644 index 0000000..687547c --- /dev/null +++ b/PAMapp/pages/myConsultantList.vue @@ -0,0 +1,110 @@ +<template> + <div> + <div class="pam-cus-tabs mb-30"> + <div + class="cus-tab-item" + :class="{'is-active': activeTabName === 'consultantList'}" + @click="clickTab('consultantList')" + >憿批�� + <span class="p">({{consultantList.length}})</span> + </div> + <div + class="cus-tab-item" + :class="{'is-active': activeTabName === 'contactedList'}" + @click="clickTab('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, ConsultantWithAppointmentId } from '~/shared/models/consultant.model'; + +@Component +export default class myConsultantList extends Vue { + + activeTabName = 'consultantList'; + consultantList: Consultant[] = []; + contactedList: ConsultantWithAppointmentId[] = []; + + @State('myConsultantList') + myConsultantList!: Consultant[]; + + @Action + storeConsultantList!: any; + + ////////////////////////////////////////////////////////////////////// + + beforeRouteEnter(to: any, from: any, next: any) { + next((vm: any) => { + if (to.name === 'myConsultantList') { + vm.$router.push('myConsultantList/consultantList'); + return; + } + }) + } + + mounted() { + this.storeConsultantList(); + + if (this.$route.name) { + this.activeTabName = this.$route.name.split('-')[1] + } + } + + ////////////////////////////////////////////////////////////////////// + + @Watch('myConsultantList') + onMyConsultantListChange() { + this.setList(); + } + + clickTab(path: string) { + this.activeTabName = path; + this.$router.push('/myConsultantList/' + this.activeTabName) + } + + ////////////////////////////////////////////////////////////////////// + + private setList() { + // reset contacted list + this.contactedList = []; + + // format consultant list + this.consultantList = (this.myConsultantList || []) + .filter(item => item.contactStatus !== 'contacted') + .map((item) => ({ ...item, formatDate: new Date(item.updateTime || item.createTime)})) + .sort((preItem, nextItem) => +nextItem.formatDate - +preItem.formatDate ); + + // format contacted list + this.myConsultantList.filter((consultant) => consultant.appointments!.length) + .forEach((consultant) => { + consultant.appointments!.forEach((appointment) => { + const consultantWithAppointmentId: ConsultantWithAppointmentId = { + ...consultant, + appointmentId: appointment.id, + appointmentDate: appointment.appointmentDate, + appointmentScore: appointment.satisfactionScore, + appointmentStatus: appointment.communicateStatus, + }; + this.contactedList.push(consultantWithAppointmentId); + }) + }); + + this.contactedList = this.contactedList + .filter((appointment) => appointment['appointmentStatus'] === 'contacted') + .map((appointment) => ({ ...appointment, sortTime: new Date(appointment.appointmentDate)})) + .sort((preAppointment, nextAppointment) => +nextAppointment.sortTime - +preAppointment.sortTime); + } + +} +</script> + -- Gitblit v1.8.0