From f90c94f20b5f11d3b3ce0164d619c0112d5158c9 Mon Sep 17 00:00:00 2001 From: Mila <Mila@pollex.com.tw> Date: 星期四, 20 一月 2022 18:23:56 +0800 Subject: [PATCH] update: TODO#133100 顧問端:header增加顧問頭像圖示 --- PAMapp/layouts/default.vue | 259 +++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 196 insertions(+), 63 deletions(-) diff --git a/PAMapp/layouts/default.vue b/PAMapp/layouts/default.vue index 72f1566..605a5b5 100644 --- a/PAMapp/layouts/default.vue +++ b/PAMapp/layouts/default.vue @@ -1,103 +1,236 @@ <template> - <div class="pam-background"> - <UiGoToTop></UiGoToTop> - <BackActionBar></BackActionBar> - <div class="banner" :class="bannerClassName"></div> - <Nuxt class="page-container" :style="{ height: pageHieght}" ref="pageContainer"></Nuxt> - <Footer ref="defaultLayoutFooter"></Footer> + <div class="pam-background"> + <UiGoToTop></UiGoToTop> + <NavBar></NavBar> + <BackActionBar></BackActionBar> + <div class="pam-banner" + :class="bannerClassName"> + <div class="pam-banner__text text--dark-blue"> + <div class="mt-5" + v-for="(bannerText, index) in bannerTextList" + :key="index"> + {{ bannerText }} + </div> + </div> </div> + <div + class="pam-container" + :class="[containClassName, {'mt-navBar': bannerClassName === 'pam-no-banner'} ]" + > + <Nuxt class="pam-page-container"></Nuxt> + </div> + <Footer></Footer> + </div> </template> <script lang="ts"> -import { Vue, Component } from 'vue-property-decorator'; + import { Vue, Component } from 'vue-property-decorator'; + import * as _ from 'lodash'; -@Component -export default class DefaultLayout extends Vue { - pageHieght = ''; + @Component + export default class DefaultLayout extends Vue { - get bannerClassName() { - if (this.$route.name) { - return this.noBanner(this.$route.name) ? 'noBanner' : this.$route.name.split('-')[0] - } else { - return ''; + get route(): string{ + const routeName = this.$route.name; + return routeName ? routeName : ''; + }; + + get bannerTextList(): string[] { + return this.bannerText[this.route]; + }; + + get containClassName(): string { + return this.routeFormatContainClass(this.route); + }; + + get bannerClassName() { + return this.routeFormatBannerClass(this.route); + }; + + ////////////////////////////////////////////////////////////////////// + + // format to {page}-container tag + private routeFormatContainClass(route: string): string { + const needContainBgRoutes = ['recommendConsultant', 'questionnaire-agentNo']; + return _.includes(needContainBgRoutes, route) ? route + '-container' : ''; + }; + + // format to {page}-banner or pam-no-banner tag + private routeFormatBannerClass(route: string): string { + const needBannerRoutes = ['recommendConsultant', 'quickFilter', 'myConsultantList-consultantList', 'myConsultantList-contactedList', 'myAppointmentList-appointmentList', 'myAppointmentList-contactedList', 'login', 'notification']; + return _.includes(needBannerRoutes, route) ? route + '-banner' : 'pam-no-banner'; + }; + + private bannerText: FeatureBannerTitle= { + [FeaturePage.RECOMMEND_CONSULTANT]: ['頛詨������', '靘����瘙���憿批��'], + [FeaturePage.QUICK_FILTER] : ['暺銝����', '撠���EST Match'], + [FeaturePage.MY_CONSULTANT_LIST] : [], + [FeaturePage.QUESTIONNAIRE] : [], } + } - noBanner(routerName : string) { - return routerName.match('questionnaire') || routerName.match('agentInfo'); + enum FeaturePage { + RECOMMEND_CONSULTANT = 'recommendConsultant', + QUICK_FILTER = "quickFilter", + MY_CONSULTANT_LIST = "myConsultantList", + QUESTIONNAIRE = 'questionnaire', } - mounted() { - window.addEventListener('resize', this.handleResize); - this.handleResize(); - } + interface FeatureBannerTitle { + [x:string]: string[]; + }; - handleResize(): void { - const pageContainer: any = this.$refs.pageContainer; - const footer: any = this.$refs.defaultLayoutFooter; - const pageAlignPadding = 80; - const deviceExtraHeight = 36; - if ((pageContainer.$el.clientHeight + footer.$el.clientHeight) < window.innerHeight) { - this.pageHieght = (window.innerHeight - footer.$el.clientHeight - pageAlignPadding - deviceExtraHeight) + 'px'; - } - } - -} </script> -<style lang="scss" scoped> +<style lang="scss" + scoped> .pam-background { background-color: #F8F9FA; - } - - .page-container { - padding: 30px 40px; - } - - @include desktop { - .page-container{ - width: 700px; - margin: 0 auto; - overflow-x: hidden; + display: flex; + flex-direction: column; + min-height: 100vh; + .pam-container{ + flex: 1; } } - .banner { + .pam-page-container { + margin: 30px 20px; + } + + .pam-banner { width: 100%; height: 120px; background-size: cover; background-repeat: no-repeat; background-position: center; + position: relative; + @extend .mt-navBar; } - .noBanner { + .mt-navBar { + margin-top: calc($MOB_NAV_BAR * 2); + } + + @include desktop { + .pam-banner { + height: 150px; + } + .mt-navBar { + margin-top: calc($DESKTOP_NAV_BAR + $MOB_NAV_BAR); + } + .pam-page-container { + width: 700px; + margin: 30px auto; + } + .pam-banner__text{ + width: 700px; + position: static !important; + margin: 30px auto 0px auto; + } + } + + .pam-banner__text { + font-size: 18px; + font-weight: bold; + position: absolute; + bottom: 15px; + left: 25px; + + div:first-child { + margin: 0px; + } + } + + .pam-no-banner { display: none; } - + // page .quickFilter { - background-image: url('~/assets/images/quickFilter/banner_mob.svg'); + &-banner { + background-image: url('~/assets/images/quickFilter/banner_mob.svg'); + } + + @include desktop { + &-banner { + background-image: url('~/assets/images/quickFilter/banner_web.svg'); + } + } } .recommendConsultant { - background-image: url('~/assets/images/recommendConsultant/banner_mob.svg'); - } - - .myConsultantList { - background-image: url('~/assets/images/myConsultantList/banner_mob.svg'); - } - - @media (min-width: 768px) { - - .quickFilter { - background-image: url('~/assets/images/quickFilter/banner_web.svg'); + &-banner { + background-image: url('~/assets/images/recommendConsultant/banner_mob.svg'); + background-size: cover; } - .recommendConsultant { - background-image: url('~/assets/images/recommendConsultant/banner_web.svg'); + &-container { + background-image: url('~/assets/images/recommendConsultant/bg_flower_mob.svg'); + background-size: contain; } - .myConsultantList { - background-image: url('~/assets/images/myConsultantList/banner_web.svg'); + @include desktop { + &-banner { + background-image: url('~/assets/images/recommendConsultant/banner_web.svg'); + background-size: cover; + } + + &-container { + background-image: url('~/assets/images/recommendConsultant/bg_flower_web.svg'); + background-size: cover; + } + } + + } + + .myConsultantList-consultantList,.myConsultantList-contactedList { + &-banner { + background-image: url('~/assets/images/myConsultantList/banner_mob.svg'); + } + + @include desktop { + &-banner { + background-image: url('~/assets/images/myConsultantList/banner_web.svg'); + } + } + } + + .questionnaire-agentNo { + &-container { + background-image: url('~/assets/images/recommendConsultant/bg_flower_mob.svg'); + background-size: contain; + } + + @include desktop { + &-container { + background-image: url('~/assets/images/recommendConsultant/bg_flower_web.svg'); + background-size: cover; + } + } + } + + .login { + &-banner { + background-image: url('~/assets/images/login/login_mob.svg'); + } + + @include desktop { + &-banner { + background-image: url('~/assets/images/login/login_web.svg'); + } + } + } + + .notification { + &-banner { + background-image: url('~/assets/images/notification/banner_mob.svg'); + } + + @include desktop { + &-banner { + background-image: url('~/assets/images/notification/banner_web.svg'); + } } } -- Gitblit v1.8.0