From e02d6534d2dba4b8adcbb80e37cc77bf8bddd26c Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期三, 09 三月 2022 16:50:48 +0800 Subject: [PATCH] update#136137: [諮詢度表現] 顧問詳細資訊API 前端調整串接 --- PAMapp/pages/agentInfo/_agentNo.vue | 206 ++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 176 insertions(+), 30 deletions(-) diff --git a/PAMapp/pages/agentInfo/_agentNo.vue b/PAMapp/pages/agentInfo/_agentNo.vue index a3b562f..6602a21 100644 --- a/PAMapp/pages/agentInfo/_agentNo.vue +++ b/PAMapp/pages/agentInfo/_agentNo.vue @@ -3,14 +3,18 @@ <el-row type="flex" justify="center"> - <UiAvatar :size="150" :fileName="agentInfo.image"></UiAvatar> + <UiAvatar + :size="150" + :agentNo="agentInfo.agentNo"> + </UiAvatar> </el-row> <el-row type="flex" class="pt-10" justify="center" - align="middle"> + align="middle" v-if="!hideReviews"> + <!-- TODO:���遛��漲 --> <i class="pam-icon icon--primary icon-star"></i> <h3 class="mdTxt">{{ agentInfo.avgScore }}</h3> </el-row> @@ -20,6 +24,24 @@ class="pt-10" justify="center"> <h3 class="mdTxt">{{ agentName }}</h3> + </el-row> + + <el-row + v-if="currentRole === role.ADMIN" + type="flex" + class="pam-paragraph"> + <UiField :span="12" icon="phone" label="����Ⅳ"> + {{ agentInfo.phoneNumber }} + </UiField> + </el-row> + + <el-row + v-if="currentRole === role.ADMIN" + type="flex" + class="pam-paragraph"> + <UiField :span="12" icon="comment" label="靽∠拳"> + {{ agentInfo.email }} + </UiField> </el-row> <el-row @@ -34,7 +56,7 @@ type="flex" class="pam-paragraph"> <UiField icon="company" label="�����"> - {{ agentInfo.serveArea }} + {{ agentInfo.serveArea | toServeArea }} </UiField> </el-row> @@ -57,7 +79,10 @@ </UiField> </el-row> - <el-row + <!-- TODO: 靘�� 2021/12/10 10:30 ��� Charles ����������漲甈��*蝷� [Tomas, 2021/12/10] --> + <!-- REF: https://reurl.cc/OkO6Q9--> + + <!-- <el-row type="flex" v-if="agentInfo.suitability" class="pam-paragraph"> @@ -83,35 +108,31 @@ </el-progress> </div> </el-col> - </el-row> + </el-row> --> <el-row type="flex" class="pam-paragraph"> - <el-col :span="24" class="pam-field"> - <div class="pam-field__label pam-progress__label"> - <div> - <div class="pam-field__title"> - <i class="pam-icon icon-thumbs-up" - ></i>隢株岷摨西”� <i class="pl-5 text--primary icon-information" @click="alertFieldInfo('evaluation')"></i> - </div> - </div> - <div class="xsTxt"> - {{ agentInfo.evaluation }}/50 (餈����/蝝航��) - </div> - </div> - <div class="pam-field__content pam-field-evaluation pt-10"> - <el-progress :show-text="false" :stroke-width="15" :percentage="agentInfo.evaluation * 2"></el-progress> - </div> - </el-col> + <UiField icon="thumbs-up" label="隢株岷摨西”�"> + {{ agentInfo.nearlyMonthAppointmentCount || 0 }} / {{ agentInfo.allAppointmentCount || 0 }} (餈����/蝝航��) + </UiField> </el-row> + + <div class="consultant-edit-btn"> + <UiField icon="flag" label="皞�◢�"> + <div class="text--orange bold pr-10 " + v-for="(communicationStyle, index) in displayCommunicationStyleList" + :key="index"> + #{{ communicationStyle }}</div> + </UiField> + </div> <el-row type="flex" class="pam-paragraph"> <UiField icon="flag" label="撠����"> <div class="pam-field-experts"> - <div class="text--orange bold pr-10" v-for="(expert, index) in agentInfo.expertises" :key="index"> + <div class="text--orange bold pr-10" v-for="(expert, index) in agentInfo.expertise" :key="index"> #{{ expert }} </div> </div> @@ -121,7 +142,7 @@ <el-row type="flex" class="pam-paragraph"> - <UiField icon="comment" label="�犖��艙"> + <UiField icon="comment" label="�犖��艙" class="agent-info-textarea"> {{ agentInfo.concept }} </UiField> </el-row> @@ -129,9 +150,9 @@ <el-row type="flex" class="pam-paragraph"> - <UiField icon="school" label="�犖��"> - <span v-for="(experience, index) in agentInfo.expertiseList" :key="index"> - {{ experience }}<span v-if="index !== agentInfo.expertiseList.length - 1">, </span> + <UiField icon="school" label="�犖��" class="agent-info-textarea"> + <span> + {{ agentInfo.experiences }} </span> </UiField> </el-row> @@ -139,7 +160,7 @@ <el-row type="flex" class="pam-paragraph"> - <UiField icon="trophy" label="敺��風"> + <UiField icon="trophy" label="敺��風" class="agent-info-textarea"> {{ agentInfo.awards }} </UiField> </el-row> @@ -165,7 +186,6 @@ </PopUpFrame> <PopUpFrame - drawerSize="40%" :isOpen.sync="isAlertFieldInfo" > <div class="text--center mdTxt fs-18"> @@ -179,11 +199,137 @@ </div> </div> </PopUpFrame> + <div class="consultant-edit-btn" v-if="currentRole === role.ADMIN"> + <el-button type="primary" @click.native="$router.push(`/agentInfo/edit/${agentInfo.agentNo}`)">蝺刻摩撣單鞈��</el-button> + </div> </div> </template> -<script src="./agent-info.component.ts"></script> +<script lang="ts"> +import { Context } from '@nuxt/types'; +import { namespace } from 'nuxt-property-decorator'; +import { Vue, Component } from 'vue-property-decorator'; + +import myConsultantService from '~/shared/services/my-consultant.service'; +import { AgentInfo } from '~/shared/models/agent-info.model'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { Role } from '~/shared/models/enum/Role'; + +const roleStorage = namespace('localStorage'); + +@Component +export default class AgentInfoComponent extends Vue { + + @roleStorage.Getter currentRole!:string|null; + + agentInfo!: AgentInfo; + role = Role; + isAlertAddSuccess = false; + isAlertFieldInfo = false; + fieldInfoTitle = ''; + fieldInfoDesc = ''; + hideReviews = hideReviews ; + + ////////////////////////////////////////////////////////////////////// + + async asyncData(context: Context) { + const agentNo = context.route.params.agentNo; + return { + agentInfo: await myConsultantService.getConsultantDetail(agentNo).then((res) => res) + } + } + + ////////////////////////////////////////////////////////////////////// + + alertAddSuccess(): void { + this.isAlertAddSuccess = true; + } + + alertFieldInfo(field: string): void { + this.isAlertFieldInfo = true; + switch(field) { + case 'suitability': + this.fieldInfoTitle = '���漲'; + this.fieldInfoDesc = '���漲��������翰�祟�敺����雿�憿批����脰�������蝯行�����潘��隞乩������“������潦��'; + break; + case 'evaluation': + this.fieldInfoTitle = '隢株岷摨西”�'; + this.fieldInfoDesc = '隢株岷摨西”��撠��雿�憿批�������垣閰X���脰�������蝯行�����潦��'; + break; + } + } + + get agentName(): string { + return `${this.agentInfo.name}(${this.agentInfo.role})`; + } + + get displayCommunicationStyleList(): string[] { + return this.agentInfo.communicationStyle.split('��').filter((item) => item); + } + +} + +</script> <style lang="scss"> - @import "./agent-info.component.scss"; +.pam-icon { + font-size: 15px; + padding-right: 8px; + color: $PRUDENTIAL_GREY; + &.icon--primary { + color: $PRIMARY_RED; + } +} +.pam-field { + display: flex; + flex-direction: column; + .pam-field__label { + display: flex; + align-items: center; + .pam-icon { + font-size: 12px; + } + .pam-field__title { + font-size: 16px; + font-weight: bold; + display: flex; + align-items: center; + } + } +} + +.pam-field-suitability { + .el-progress-bar__inner { + background-color: $LIGHT_BLUE !important; + } +} + +.pam-field-evaluation { + .el-progress-bar__inner { + background-color: $TEAL_GREEN!important; + } +} + +.pam-field-experts { + display: flex; + flex-wrap: wrap; +} + +.pam-progress__label { + justify-content: space-between; + flex-wrap: wrap; + line-height: 24px; +} +.consultant-edit-btn{ + display: flex; + justify-content: center; +} + +.pam-field{ + display: flex; +} +.agent-info-textarea{ + word-break: break-all; + word-wrap: break-word; +} </style> -- Gitblit v1.8.0