保誠-保戶業務員媒合平台
Tomas
2021-12-28 be45e7dffcf53381b8bd8a562eb5fb8474470763
PAMapp/pages/agentInfo/edit/_agentNo.vue
@@ -86,15 +86,18 @@
          </div>
        </el-col>
      </el-row>
      <el-row
        type="flex"
        class="pam-paragraph">
        <UiField icon="flag" label="溝通風格">
        <el-checkbox 
            v-model="editInfoValue.communicationStyle"
            :label="communicateStyle" 
            :key="index" 
            v-for="(communicateStyle, index) in communicationStyleList">
          </el-checkbox>
        </UiField>
        
      </el-row>
      <el-row
@@ -102,13 +105,14 @@
        class="pam-paragraph">
        <UiField icon="flag" label="專長領域">
          <el-checkbox 
            v-model="editInfoValue.expert"
            :label="item.name"
            :key="item.id"
            v-for="item in expertList">
            v-model="editInfoValue.expertise"
            :label="expert"
            :key="index"
            v-for="(expert, index) in expertList">
          </el-checkbox>
        </UiField>
      </el-row>
      <el-row
        type="flex"
        class="pam-paragraph">
@@ -168,12 +172,12 @@
import { AgentInfo } from '~/shared/models/agent-info.model';
import { hideReviews } from '~/shared/const/hide-reviews';
import { Role } from '~/shared/models/enum/Role';
import { AgentInfoSetting } from '~/shared/models/account.model';
import { Role } from '~/shared/models/enum/Role';
import { agentExpertList } from '~/shared/const/agent-expert-list';
import { agentCommunicationStyleList } from '~/shared/const/agent-communication-style-list';
const localStorage = namespace('localStorage');
const testImgBase64 =""
@Component
export default class AgentInfoComponent extends Vue {
@@ -183,16 +187,15 @@
  _agentInfoSetting!: AgentInfoSetting;
  agentInfo!:AgentInfo
  role = Role;
  isAlertFieldInfo         = false;
  fieldInfoTitle           = '';
  fieldInfoDesc            = '';
  hideReviews              = hideReviews ;
  fieldInfoDesc   : string = '';
  fieldInfoTitle  : string = '';
  hideReviews     : boolean = hideReviews ;
  isAlertFieldInfo: boolean = false;
  editInfoValue = {
    agentNo           : '',
    name              : '',
    expert            : [] as string[],
    expertise            : [] as string[],
    title             : '',
    serveArea         : '',
    companyAddress    : '',
@@ -202,43 +205,11 @@
    experiences        : '',
    awards            : '',
    communicationStyle: [] as string[],
  }
  formValidStatus = {
    name          : true,
    title         : true,
    companyAddress: true,
    serveArea     : true,
    seniorityYear : true,
    seniorityMonth: true,
    expert        : true,
    concept       : true,
    experience    : true,
    awards        : true,
    communicationStyle:true
  };
  expertList=[
    {
      name:'健康與保障'
      },
    {
      name:'子女教育'
      },
    {
      name:'資產規劃'
      },
    {
      name:'樂活退休'
      },
    {
      name:'保單健檢/規劃'
    },
    {
      name:'分紅保單'}
    ];
  communicationStyleList: string[] = ['謹慎務實', '明快主動', '耐心傾聽', '健談風趣'];
  communicationStyleList: string[] = agentCommunicationStyleList;
  expertList: string[] = agentExpertList;
  role           = Role;
  //////////////////////////////////////////////////////////////////////
@@ -252,24 +223,6 @@
  mounted(){
    this.setAgentInfo(this.agentInfo);     
  }
  //////////////////////////////////////////////////////////////////////
  alertFieldInfo(field: string): void {
    this.isAlertFieldInfo = true;
    switch(field) {
      case 'suitability':
        this.fieldInfoTitle = '匹配度';
        this.fieldInfoDesc = '匹配度是透過嚴選配對或快速篩選後,將每一位保險顧問資料進行比對後排序推薦給您的媒合數值,您可以作為選擇適合顧問的參考值。';
        break;
      case 'evaluation':
        this.fieldInfoTitle = '諮詢度表現';
        this.fieldInfoDesc = '諮詢度表現是將每一位保險顧問近一個月回覆諮詢數量進行比對後排序推薦給您的媒合數值。';
        break;
    }
  }
  ////////////////////////////////////////////////////////////
  private setAgentInfo(agentInfo: AgentInfo): void {
      const [agentYear, _yearUnit , agentMonth, _monthUnit] =  agentInfo.seniority.split(" ");
@@ -292,88 +245,45 @@
                  communicationStyle: agentInfo.communicationStyle || '',
                  photoBase64       : '',
              };
                this.editInfoValue.agentNo
                this.editInfoValue.name           = this._agentInfoSetting.name!;
                this.editInfoValue.title          = this._agentInfoSetting.title!;
                this.editInfoValue.serveArea      = this._agentInfoSetting.serveArea
                this.editInfoValue.companyAddress = this._agentInfoSetting.companyAddress;
                this.editInfoValue.seniorityYear = this._agentInfoSetting.seniorityYear;
                this.editInfoValue.seniorityMonth = this._agentInfoSetting.seniorityMonth;
                this.editInfoValue.expert        = _.cloneDeep(this._agentInfoSetting.expertise);
                this.editInfoValue.concept        = this._agentInfoSetting.concept;
                this.editInfoValue.experiences     = this._agentInfoSetting.experiences;
                this.editInfoValue.awards         = this._agentInfoSetting.awards;
                this.editInfoValue.communicationStyle = this._agentInfoSetting.communicationStyle.split(',');
    this.editInfoValue = {
      ...this._agentInfoSetting,
      expertise          : _.cloneDeep(this._agentInfoSetting.expertise),
      // TODO: 確認後端此欄位後端應改為以" , "隔開 [Tomas, 2021/12/28]
      communicationStyle : this._agentInfoSetting.communicationStyle.split('、')
    }
  }
  get nameValid():boolean {
      this.formValidStatus.name = this.editInfoValue.name ? true : false;
      return this.formValidStatus.name;
  //////////////////////////////////////////////////////////////////////
  alertFieldInfo(field: string): void {
    this.isAlertFieldInfo = true;
    switch(field) {
      case 'suitability':
        this.fieldInfoTitle = '匹配度';
        this.fieldInfoDesc = '匹配度是透過嚴選配對或快速篩選後,將每一位保險顧問資料進行比對後排序推薦給您的媒合數值,您可以作為選擇適合顧問的參考值。';
        break;
      case 'evaluation':
        this.fieldInfoTitle = '諮詢度表現';
        this.fieldInfoDesc = '諮詢度表現是將每一位保險顧問近一個月回覆諮詢數量進行比對後排序推薦給您的媒合數值。';
        break;
    }
  }
  get titleValid():boolean{
      this.formValidStatus.title = this.editInfoValue.title ? true : false ;
      return this.formValidStatus.title;
  }
  get companyAddressValid() : boolean{
      this.formValidStatus.companyAddress = this.editInfoValue.companyAddress ? true : false;
      return this.formValidStatus.companyAddress;
  }
  get serveAreaValid():boolean{
      this.formValidStatus.serveArea = this.editInfoValue.serveArea ? true : false;
      return this.formValidStatus.serveArea;
  }
  get conceptValid():boolean{
      this.formValidStatus.concept = this.editInfoValue.concept ? true : false;
      return this.formValidStatus.concept;
  }
  get experienceValid():boolean{
      this.formValidStatus.experience = this.editInfoValue.experiences ? true : false;
      return this.formValidStatus.experience;
  }
  get awardsValid():boolean{
      this.formValidStatus.awards = this.editInfoValue.awards ? true : false ;
      return this.formValidStatus.awards;
  }
  get seniorityYearValid():boolean{
    this.formValidStatus.seniorityYear = this.editInfoValue.seniorityYear ? true  : false;
    return this.formValidStatus.seniorityYear;
  }
  get seniorityMonthValid():boolean{
    this.formValidStatus.seniorityMonth = this.editInfoValue.seniorityMonth ? true : false;
    return this.formValidStatus.seniorityYear;
  }
  get communicationStyleValid():boolean{
    this.formValidStatus.communicationStyle = this.editInfoValue.communicationStyle ? true : false;
    return this.formValidStatus.seniorityMonth;
  }
  get expertValid():boolean{
    this.formValidStatus.expert = this.editInfoValue.expert ? true : false;
    return this.formValidStatus.expert;
  }
  ////////////////////////////////////////////////////////////
  get isSubmitBtnDisabled(): boolean {
            const isFormValid =  this.formValidStatus.name
                              && this.formValidStatus.title
                              && this.formValidStatus.companyAddress
                              && this.formValidStatus.serveArea
                              && this.formValidStatus.concept
                              && this.formValidStatus.experience
                              && this.formValidStatus.awards
                              && this.formValidStatus.seniorityYear
                              && this.formValidStatus.seniorityMonth
                              && this.formValidStatus.expert
                              && this.formValidStatus.communicationStyle;
      const isFormValid =  this.editInfoValue.name
                        && this.editInfoValue.title
                        && this.editInfoValue.companyAddress
                        && this.editInfoValue.serveArea
                        && this.editInfoValue.concept
                        && this.editInfoValue.experiences
                        && this.editInfoValue.awards
                        && this.editInfoValue.seniorityYear
                        && this.editInfoValue.seniorityMonth
                        && this.editInfoValue.expertise
                        && this.editInfoValue.communicationStyle;
            return !isFormValid
        }
  
@@ -381,38 +291,15 @@
  
  editAgentInfoSetting(): void {
            const editSettingInfo: any = {
                agentNo           :this.agentInfo.agentNo,
                name              : this.editInfoValue.name,
                expertise         : this.editInfoValue.expert,
                title             : this.editInfoValue.title,
                role              : this.agentInfo.role,
                serveArea         : this.editInfoValue.serveArea,
                gender            : this.agentInfo.gender,
                phoneNumber       : this.agentInfo.phoneNumber,
                companyAddress    : this.editInfoValue.companyAddress,
                seniorityYear     : this.editInfoValue.seniorityYear,
                seniorityMonth    : this.editInfoValue.seniorityMonth,
                concept           : this.editInfoValue.concept,
                experiences        : this.editInfoValue.experiences,
                awards             : this.editInfoValue.awards,
                communicationStyle: this.editInfoValue.communicationStyle.join(','),
                photoBase64       : ''
      ...this.editInfoValue,
      communicationStyle: this.editInfoValue.communicationStyle.join('、'),
      photoBase64       : '',
            }
            accountSettingService.editAgentInfoSetting(editSettingInfo).then((res: AgentInfoSetting) => {
              console.log(editSettingInfo)
            });
        }
  // handleRemove(file) {
  //       console.log(file);
  //     }
  //     handlePictureCardPreview(file) {
  //       this.photoBase64 = file.url;
  //       this.dialogVisible = true;
  //     }
  //     handleDownload(file) {
  //       console.log(file);
  //     }
    
}