From cd4a64b39c429f2f5b45cb042d1b66f1cd3904cd Mon Sep 17 00:00:00 2001 From: 劉鈞霖 <benson@gmail.com> Date: 星期一, 15 十一月 2021 18:06:40 +0800 Subject: [PATCH] [ Update ] 更新 navbar 清單 根據 角色 顯示清單 --- PAMapp/pages/index.vue | 177 +++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 112 insertions(+), 65 deletions(-) diff --git a/PAMapp/pages/index.vue b/PAMapp/pages/index.vue index 9a447a3..feffa01 100644 --- a/PAMapp/pages/index.vue +++ b/PAMapp/pages/index.vue @@ -1,61 +1,78 @@ <template> <div> <Ui-Carousel></Ui-Carousel> - <div class="content"> - <h5 class="mdTxt mb-20">����憿批��</h5> + <div class="page-container"> + <h5 class="mdTxt mb-30">����憿批��</h5> <el-button - class="reserveConsultantBtn" + class="reserveBtn recommendConsultant" @click="routerPush('/recommendConsultant')" - >������</el-button> + > + <p>������</p> + </el-button> <el-button - class="reserveConsultantBtn" + class="reserveBtn quickFilter" @click="routerPush('/quickFilter')" - >敹恍�祟�</el-button> - <div class="rowStyle mb-20"> - <div class="flex"> - <h5 class="mdTxt">���“���</h5> - <span class="smTxt_bold align_center amount">� {{agents.length}} 蝑�</span> - </div> - <div + > + <p>敹恍�祟�</p> + </el-button> + <el-row class="mb-30 rowStyle"> + <el-col :span="16"> + <span class="mdTxt">���“���</span> + <span class="smTxt_bold amount">� {{consultantList.length}} 蝑�</span> + </el-col> + <el-col + :span="8" class="mdTxt readMore" - @click="routerPush('/contactList/consultantList')" - >���憭�</div> - </div> + v-if="consultantList.length > 3" + @click.native="routerPush('/myConsultantList/consultantList')">���憭�</el-col> + </el-row> <ConsultantList - :agents="agents.slice(0, 3)" + :agents="consultantList.slice(0, 3)" @removeAgent="removeAgent" ></ConsultantList> - <h5 class="mdTxt mb-20 mt-32">��靽憿批��</h5> - <Ui-Swiper :agents="swiperAgents"></Ui-Swiper> + <div class='pam-recommend pb-30 pt-30'> + <h5 class="mdTxt">��靽憿批��</h5> + <img class="absulate img" src="~/assets/images/index_recommend.svg" alt=""> + </div> + <ConsultantSwiper :agents="recommendList"></ConsultantSwiper> </div> - </div> </template> <script lang="ts"> -import { Vue, Component } from 'nuxt-property-decorator'; -import { Agents } from '~/plugins/api/home'; -import { Context } from '@nuxt/types/app'; +import { Vue, Component, State, Action } from 'nuxt-property-decorator'; +import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant'; +import { addFavoriteConsultant, Consultants } from '~/assets/ts/api/consultant'; +import { login, getFavoriteConsultant } from '~/assets/ts/api/consultant'; +import { isLogin } from '~/assets/ts/auth'; @Component({ layout: 'home' }) export default class MainComponent extends Vue { - agents: Agents[] = []; - swiperAgents: Agents[] = []; + consultantList: Consultants[] = []; + agents: Consultants[] = []; + @State('recommendList') recommendList!: Consultants[]; + @Action storeRecommendList!: any; - async asyncData(context: Context) { - let agents: Agents[] = []; + mounted() { + if (!this.recommendList) { + this.storeRecommendList(); + } - await context.$service.home.recommendConsultantList().then((result: Agents[]) => { - agents = result; - }) + if (isLogin()) { + this.addFavoriteFromStorageToApi(); + getFavoriteConsultant().then((response) => this.consultantList = response.data); + } else { + this.consultantList = getFavoriteFromStorage(); + } + } - const swiperAgents = JSON.parse(JSON.stringify(agents)); - - return { - agents, - swiperAgents + addFavoriteFromStorageToApi() { + const agentNoList = getFavoriteFromStorage().map(i => i.agentNo) + if (agentNoList.length > 0) { + addFavoriteConsultant(agentNoList).then(res => res); + localStorage.removeItem('favoriteConsultant'); } } @@ -63,11 +80,14 @@ this.$router.push(path); } - removeAgent(agentId: number) { - const findIndex = this.agents.findIndex((item, i) => { - return item.id === agentId; + removeAgent(agentNo: string) { + const findIndex = this.consultantList.findIndex((item, i) => { + return item.agentNo === agentNo; }) - this.agents.splice(findIndex, 1) + this.consultantList.splice(findIndex, 1); + if (!isLogin()) { + setFavoriteToStorage(this.consultantList) + } } } @@ -75,63 +95,90 @@ <style lang="scss" scoped> - .content { - padding: 0 20px; + .page-container { + padding: 0px 20px 30px 20px; } - .mb-20 { - margin: 0 0 20px 0; - } - - .mt-32 { - margin-top: 32px; - } - - .reserveConsultantBtn { - max-width: 340px; + .reserveBtn.el-button--default { width: 100%; height: 110px; border-radius: 10px; - box-shadow: 0px 0px 6px #22222229; margin: 0 auto 17px auto; font-size: 32px; font-weight: 700; - color: $PRIMARY_BLACK; + background-position: right; + background-size: cover; + color: #68737A; + text-align: left; + background-repeat: no-repeat; + box-shadow: 0px 0px 6px #a79b9b29; + border-width: 0; + + p { + text-shadow: 1px 1px 5px $PRIMARY_WHITE; + } &:nth-child(3) { margin-bottom: 42px; } + } - .reserveConsultantBtn+.reserveConsultantBtn { + .reserveBtn+.reserveBtn { margin-left: 0px; } + .quickFilter { + background-image: url('~/assets/images/quickFilter/banner_mob.svg'); + } + + .recommendConsultant { + background-image: url('~/assets/images/recommendConsultant/banner_mob.svg'); + } + + @media (min-width: 576px) and (max-width: 1023px) { + .quickFilter.el-button--default { + background-image: url('~/assets/images/quickFilter/banner_web.svg'); + } + + .recommendConsultant.el-button--default { + background-image: url('~/assets/images/recommendConsultant/banner_web.svg'); + } + } + .rowStyle { - display: flex; - justify-content: space-between; - .flex { - display: flex; - .amount { - color: $PRUDENTIAL_GREY; - margin-left: 10px; - align-self: center; - } + .amount { + color: $PRUDENTIAL_GREY; } .readMore { color: $PRIMARY_RED; cursor: pointer; + text-align: right; } } @include desktop { - .content{ + .page-container { width: 700px; margin: 0 auto; } - .reserveConsultantBtn:nth-child(2) { - margin-right: 15px; + .reserveBtn { + max-width: 340px; + + &:nth-child(2) { + margin-right: 15px; + } + } + } + + .pam-recommend { + position: relative; + + .img { + position: absolute; + right: 20px; + bottom: 0px; } } -- Gitblit v1.8.0