| | |
| | | <template> |
| | | <div> |
| | | <div class="pam-cus-tabs mb-30"> |
| | | <div |
| | | class="cus-tab-item" |
| | | :class="{'is-active': activeTabName === 'appointmentList'}" |
| | | @click="tabClick('appointmentList')" |
| | | >客戶預約 |
| | | <span class="p">({{appointmentList.length}})</span> |
| | | <div class="pam-myAppointment-banner"></div> |
| | | <div class="pam-container"> |
| | | <div class="pam-cus-tabs mb-30"> |
| | | <div |
| | | class="cus-tab-item" |
| | | :class="{'is-active': activeTabName === 'appointmentList'}" |
| | | @click="tabClick('appointmentList')" |
| | | >客戶預約 |
| | | <span class="p">({{appointmentList.length}})</span> |
| | | </div> |
| | | <div |
| | | class="cus-tab-item" |
| | | :class="{'is-active': activeTabName === 'contactedList'}" |
| | | @click="tabClick('contactedList')" |
| | | >已聯絡 |
| | | <span class="p">({{contactedList.length}})</span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="cus-tab-item" |
| | | :class="{'is-active': activeTabName === 'contactedList'}" |
| | | @click="tabClick('contactedList')" |
| | | >已聯絡 |
| | | <span class="p">({{contactedList.length}})</span> |
| | | </div> |
| | | |
| | | <NuxtChild></NuxtChild> |
| | | </div> |
| | | |
| | | <NuxtChild></NuxtChild> |
| | | |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import { Vue, Component, State, Action, Watch } from 'nuxt-property-decorator'; |
| | | import { ClientInfo } from '~/assets/ts/api/appointment'; |
| | | import * as _ from 'lodash'; |
| | | |
| | | @Component |
| | | @Component({ |
| | | layout: 'home' |
| | | }) |
| | | export default class ClientReservedList extends Vue { |
| | | activeTabName = 'appointmentList'; |
| | | appointmentList: ClientInfo[] = []; |
| | |
| | | this.$router.push('/myAppointmentList/' + this.activeTabName) |
| | | } |
| | | |
| | | get route(): string{ |
| | | const routeName = this.$route.name; |
| | | return routeName ? routeName:''; |
| | | }; |
| | | |
| | | get bannerClassName() { |
| | | return this.routeFormatBannerClass(this.route); |
| | | }; |
| | | |
| | | // format to {page}-banner or pam-no-banner tag |
| | | private routeFormatBannerClass(route: string): string { |
| | | const needBannerTags = ['myAppointmentList-appointmentList', 'myAppointmentList-contactedList']; |
| | | return _.includes(needBannerTags, route) ? route + '-banner' : 'pam-no-banner'; |
| | | }; |
| | | |
| | | } |
| | | </script> |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .pam-myAppointment-banner { |
| | | width: 100%; |
| | | height: 120px; |
| | | background-size: cover; |
| | | background-repeat: no-repeat; |
| | | background-position: center; |
| | | position: relative; |
| | | background-image: url('~/assets/images/myAppointmentList/agent_banner_mob.svg'); |
| | | } |
| | | |
| | | @media (min-width: 768px) { |
| | | .pam-myAppointment-banner { |
| | | background-image: url('~/assets/images/myAppointmentList/agent_banner_web.svg'); |
| | | } |
| | | } |
| | | |
| | | .pam-container { |
| | | padding: 30px 20px; |
| | | } |
| | | </style> |