保誠-保戶業務員媒合平台
wayne
2022-02-08 361f329cff201a3562733b9ef5dade722c245699
Merge remote-tracking branch 'origin/Phase3' into Phase3

修改5個檔案
55 ■■■■■ 已變更過的檔案
PAMapp/components/Client/ClientCard.vue 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Consultant/ConsultantCard.vue 4 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/accountSetting/index.vue 17 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/models/consultant.model.ts 24 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/store/localStorage.ts 6 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/components/Client/ClientCard.vue
@@ -48,7 +48,7 @@
                ></AppointmentProgress>
            </div>
        </div>
            <el-col :xs="5" :sm="3" align="middle">
            <!-- <el-col :xs="5" :sm="3" align="middle">
                <el-avatar
                    :size="50"
                ></el-avatar>
@@ -61,7 +61,7 @@
                        <div class="unfilled">未填滿意度</div>
                    </template>
                </div>
            </el-col>
            </el-col> -->
            <div class="flex-column contactInfo" :xs="4" :sm="6">
PAMapp/components/Consultant/ConsultantCard.vue
@@ -7,8 +7,8 @@
                    :agentNo="agentInfo.agentNo"
                    @click.native="showAgentDetail(agentInfo.agentNo)"
                ></UiAvatar>
                <div v-if="!hideReviews">
                    <i class="icon-star pam-icon icon--yellow satisfaction"></i>
                <div v-if="!hideReviews" style="display: flex; justify-content: flex-start; align-items: center; margin-top: 6px; font-size: 12px">
                    <i class="icon-star pam-icon icon--yellow satisfaction" style="margin-top: 0"></i>
                      <template v-if="isAppointment">
                      <span v-if="notScoreAppointmentYet">
                          {{ agentInfo.satisfactionScore }}
PAMapp/pages/accountSetting/index.vue
@@ -17,7 +17,9 @@
        <i class="icon-edit" @click="editField('userName')" :class="{'icon-color-change': !userNameDisabled}"></i>
      </div>
    </div>
    <div class="pam-paragraph account-info" v-if="phoneValue">
    <!-- NOTE: 主要聯絡方式 -->
    <div class="pam-paragraph account-info" v-if="!isPrimaryContactTypeEmail">
      <div class="account-info__title text--middle">綁定</div>
      <div class="account-info__input " :class="{'edit': !userPhoneDisabled }">
        <div class="text--middle mb-10">手機號碼</div>
@@ -32,7 +34,8 @@
        </div>
      </div>
    </div>
    <div class="pam-paragraph account-info" v-if="emailValue">
    <div class="pam-paragraph account-info" v-if="isPrimaryContactTypeEmail">
      <div class="account-info__title text--middle">綁定</div>
      <div class="account-info__input" :class="{'edit': !userEmailDisabled }">
        <div class="text--middle mb-10">Email</div>
@@ -47,6 +50,10 @@
        </div>
      </div>
    </div>
    <!-- NOTE: 備用聯絡方式 -->
    <PopUpFrame :isOpen.sync="updateDone">
      <div class="text--center mdTxt fs-18">
@@ -70,13 +77,19 @@
<script lang="ts">
import { Vue,Component } from 'vue-property-decorator'
import { namespace } from 'vuex-class';
import { UserSetting } from '~/shared/models/account.model';
import accountSettingService from '~/shared/services/account-setting.service';
const localStorageStore = namespace('localStorage');
@Component
export default class AccountSetting extends Vue {
  @localStorageStore.Getter
  isPrimaryContactTypeEmail!: boolean;
  _userSetting!: UserSetting;
  userNameDisabled  = true;
  userPhoneDisabled = true;
PAMapp/shared/models/consultant.model.ts
@@ -1,18 +1,18 @@
import { Appointment } from "./appointment.model";
export interface Consultant {
    agentNo            : string;
    name               : string;
    img                : string;
    expertise          : string[];
    avgScore           : number;
    contactStatus?     : string;
    createTime         : Date | string;
    updateTime         : Date | string;
    customerViewTime?  : Date | string;
    role               : string;
    seniority          : string,
    appointments?      : Appointment[];
    agentNo          : string;
    appointments?    : Appointment[];
    avgScore         : number;
    contactStatus?   : string;
    createTime       : string;
    customerViewTime?: string;
    expertise        : string[];
    img              : string;
    name             : string;
    role             : string;
    seniority        : string;
    updateTime       : string;
}
export interface ConsultantWithAppointmentId extends Consultant {
PAMapp/store/localStorage.ts
@@ -1,4 +1,5 @@
import { Module, Mutation, VuexModule ,Action } from 'vuex-module-decorators';
import { ContactType } from '~/shared/models/enum/ContactType';
import { Role } from '~/shared/models/enum/Role';
import { Selected } from '~/shared/models/quick-filter.model';
import { StrictQueryParams } from '~/shared/models/strict-query.model';
@@ -7,6 +8,7 @@
  id_token = localStorage.getItem('id_token');
  current_role= localStorage.getItem('current_role');
  consultant_id = localStorage.getItem('consultant_id');
  userInfo = JSON.parse(localStorage.getItem('userInfo')!);
  quickFilterSelectedItem = localStorage.getItem('quickFilter');
  recommendConsultantItem = localStorage.getItem('recommendConsultantItem');
  appointmentIdFromMsg = localStorage.getItem('appointmentIdFromMsg');
@@ -25,6 +27,10 @@
    return this.consultant_id;
  }
  get isPrimaryContactTypeEmail(): boolean {
    return this.userInfo.contactType === ContactType.EMAIL;
  }
  get quickFilterSelectedData(): Selected[] {
    return JSON.parse(this.quickFilterSelectedItem || '[]') as Selected[];
  }