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