From 20b87b7eab9c600e2445548c4306ea1b8b37b275 Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期一, 06 十二月 2021 12:29:50 +0800 Subject: [PATCH] update#131467: [滿意度評分功能]-客戶進行滿意度評分API串接 --- PAMapp/pages/index.vue | 280 +++++++++++++++++++++++++------------------------------ 1 files changed, 129 insertions(+), 151 deletions(-) diff --git a/PAMapp/pages/index.vue b/PAMapp/pages/index.vue index feffa01..3d9550d 100644 --- a/PAMapp/pages/index.vue +++ b/PAMapp/pages/index.vue @@ -1,185 +1,163 @@ <template> - <div> - <Ui-Carousel></Ui-Carousel> - <div class="page-container"> - <h5 class="mdTxt mb-30">����憿批��</h5> - <el-button - class="reserveBtn recommendConsultant" - @click="routerPush('/recommendConsultant')" - > - <p>������</p> - </el-button> - <el-button - class="reserveBtn quickFilter" - @click="routerPush('/quickFilter')" - > - <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" - v-if="consultantList.length > 3" - @click.native="routerPush('/myConsultantList/consultantList')">���憭�</el-col> - </el-row> - <ConsultantList - :agents="consultantList.slice(0, 3)" - @removeAgent="removeAgent" - ></ConsultantList> - <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> + <Ui-Carousel></Ui-Carousel> + <div class="page-container"> + <div class="mb-30"> + <h5 class="mdTxt">����憿批��</h5> + <div class="mt-10 pam-reserveBtn--block"> + <el-button class="reserveBtn recommendConsultant" + @click="routerPush('/recommendConsultant')"> + <p>������</p> + </el-button> + <el-button class="reserveBtn quickFilter" + @click="routerPush('/quickFilter')"> + <p>敹恍�祟�</p> + </el-button> </div> + </div> + <div class="pam-paragraph"> + <el-row class="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 fix-chrome-click--issue" + v-if="consultantList.length > 3" + @click.native="routerPush('/myConsultantList/consultantList')">���憭�</el-col> + </el-row> + <ConsultantList class="mt-10" + :agents="consultantList.slice(0, 3)"></ConsultantList> + </div> + <div class='pam-paragraph'> + <div class="pam-recommend"> + <h5 class="mdTxt">��靽憿批��</h5> + <img class="img" + src="~/assets/images/index_recommend.svg" + alt=""> + </div> + <ConsultantSwiper :agents="recommendList"></ConsultantSwiper> + </div> </div> + </div> </template> <script lang="ts"> -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'; + import { Vue, Component, State, Action, Watch } from 'nuxt-property-decorator'; + import { Consultants } from '~/assets/ts/models/consultant.model'; -@Component({ + @Component({ layout: 'home' -}) -export default class MainComponent extends Vue { + }) + export default class MainComponent extends Vue { consultantList: Consultants[] = []; agents: Consultants[] = []; @State('recommendList') recommendList!: Consultants[]; @Action storeRecommendList!: any; - mounted() { - if (!this.recommendList) { - this.storeRecommendList(); - } + @State('myConsultantList') myConsultantList!: Consultants[]; + @Action storeConsultantList!: any; - if (isLogin()) { - this.addFavoriteFromStorageToApi(); - getFavoriteConsultant().then((response) => this.consultantList = response.data); - } else { - this.consultantList = getFavoriteFromStorage(); - } + @Watch('myConsultantList') + onMyConsultantListChange() { + this.consultantList = (this.myConsultantList || []) + .filter(item => item.contactStatus !== 'contacted') + .sort((a, b) => a.updateTime > b.updateTime ? -1 : 1) } - addFavoriteFromStorageToApi() { - const agentNoList = getFavoriteFromStorage().map(i => i.agentNo) - if (agentNoList.length > 0) { - addFavoriteConsultant(agentNoList).then(res => res); - localStorage.removeItem('favoriteConsultant'); - } + mounted() { + if (!this.recommendList?.length) { + this.storeRecommendList(); + } + + this.storeConsultantList(); } routerPush(path: string) { - this.$router.push(path); + this.$router.push(path); } - removeAgent(agentNo: string) { - const findIndex = this.consultantList.findIndex((item, i) => { - return item.agentNo === agentNo; - }) - this.consultantList.splice(findIndex, 1); - if (!isLogin()) { - setFavoriteToStorage(this.consultantList) - } - } -} + } </script> <style lang="scss" scoped> + .page-container { + margin: 0px 20px 30px 20px; + } + .reserveBtn.el-button--default { + width: 100%; + height: 110px; + border-radius: 10px; + margin-bottom: 15px; + font-size: 32px; + font-weight: 700; + 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; + } + } + + .el-button+.el-button { + margin-left: 0px; + } + + .quickFilter { + background-image: url('~/assets/images/quickFilter/banner_mob.svg'); + } + + .recommendConsultant { + background-image: url('~/assets/images/recommendConsultant/banner_mob.svg'); + } + .rowStyle { + .amount { + color: $PRUDENTIAL_GREY; + } + .readMore { + color: $PRIMARY_RED; + cursor: pointer; + text-align: right; + } + } + + .pam-recommend { + display: flex; + justify-content: space-between; + align-items: center; + } + + @media (min-width: 576px) and (max-width: 768px) { + .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'); + } + } + + @include desktop { .page-container { - padding: 0px 20px 30px 20px; + width: 700px; + margin: 0 auto; } - .reserveBtn.el-button--default { - width: 100%; - height: 110px; - border-radius: 10px; - margin: 0 auto 17px auto; - font-size: 32px; - font-weight: 700; - 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; - } - + .pam-reserveBtn--block { + display: flex; + justify-content: space-between; } - .reserveBtn+.reserveBtn { - margin-left: 0px; + .reserveBtn { + max-width: 335px; } - - .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 { - .amount { - color: $PRUDENTIAL_GREY; - } - .readMore { - color: $PRIMARY_RED; - cursor: pointer; - text-align: right; - } - } - - @include desktop { - .page-container { - width: 700px; - margin: 0 auto; - } - - .reserveBtn { - max-width: 340px; - - &:nth-child(2) { - margin-right: 15px; - } - } - } - - .pam-recommend { - position: relative; - - .img { - position: absolute; - right: 20px; - bottom: 0px; - } - } + } </style> -- Gitblit v1.8.0