保誠-保戶業務員媒合平台
PAMapp/pages/agentInfo/edit/_agentNo.vue
@@ -1,5 +1,5 @@
<template>
    <div class="edit-agent-info-page">
    <div class="edit-agent-info-page" v-if="!!agentInfo">
      <el-row
        type="flex"
@@ -64,6 +64,27 @@
            :class="{'is-invalid': !phoneValid}"
            maxlength="10"
            minlength="10"></el-input>
          </div>
        </el-col>
      </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 mb-10">
                <i class="pam-icon icon-comment"
                  ></i>信箱
                  <span class="hint text--bold" v-show="!emailValid">信箱格式有誤</span>
                  <span class="hint text--bold" v-show="editInfoValue.email.length === 0">信箱為必填</span>
              </div>
            </div>
            <el-input
            v-model="editInfoValue.email"
            :class="{'is-invalid': !emailValid}"
            ></el-input>
          </div>
        </el-col>
      </el-row>
@@ -260,14 +281,18 @@
import { taiwanCities } from '~/shared/const/taiwan-cities';
const localStorageTest = namespace('localStorage');
const loginStore = namespace('login.store');
@Component
export default class AgentInfoComponent extends Vue {
export default class AgentInfoEditComponent extends Vue {
  @localStorageTest.State('current_role')
  currentRole!:string | null;
  @localStorageTest.State
  current_role: any;
  _agentInfoSetting!: AgentInfoSetting;
  @loginStore.Action
  updateConsultantDetail!: (agentNo: string) => Promise<AgentInfo>;
  defaultAgentInfoSetting!: AgentInfoSetting;
  agentInfo!      : AgentInfo
  fieldInfoDesc   : string = '';
  fieldInfoTitle  : string = '';
@@ -290,7 +315,8 @@
    awards            : '',
    communicationStyle: [] as string[],
    photoBase64       : '',
    phoneNumber       : ''
    phoneNumber       : '',
    email             : '',
  };
  communicationStyleList: string[] = agentCommunicationStyleList;
@@ -355,7 +381,7 @@
  private setAgentInfo(agentInfo: AgentInfo): void {
    const [agentYear, _yearUnit , agentMonth, _monthUnit] =  agentInfo.seniority.split(" ");
    this._agentInfoSetting = {
    this.defaultAgentInfoSetting = {
      agentNo           : agentInfo.agentNo||'',
      name              : agentInfo.name || '',
      expertise         : agentInfo.expertise || [],
@@ -371,27 +397,32 @@
      experiences       : agentInfo.experiences  || '',
      awards            : agentInfo.awards || '',
      communicationStyle: agentInfo.communicationStyle || '',
      photoBase64       : ''
      photoBase64       : '',
      email             : agentInfo.email || ''
    };
    this.editInfoValue = {
      ...this._agentInfoSetting,
      expertise          : _.cloneDeep(this._agentInfoSetting.expertise),
      ...this.defaultAgentInfoSetting,
      expertise          : _.cloneDeep(this.defaultAgentInfoSetting.expertise),
      // TODO: 確認後端此欄位後端應改為以" , "隔開 [Tomas, 2021/12/28]
      communicationStyle : this._agentInfoSetting.communicationStyle.split('、'),
      communicationStyle : this.defaultAgentInfoSetting.communicationStyle.split('、'),
    }
  }
  //////////////////////////////////////////////////////////////////////
  editAgentInfoSetting(): void {
    console.log('???', this.editInfoValue)
    const editSettingInfo: any = {
      ...this.editInfoValue,
      communicationStyle: this.editInfoValue.communicationStyle.join('、'),
      serveArea: this.editInfoValue.serveArea.join('、'),
    }
    };
    console.log('!!!', editSettingInfo);
    accountSettingService.editAgentInfoSetting(editSettingInfo).then((res: AgentInfoSetting) => {
      this.isInfoUpdate = true;
      this.updateConsultantDetail(editSettingInfo.agentNo);
    });
  }
@@ -422,7 +453,7 @@
  ////////////////////////////////////////////////////////////
  get nameValid(): boolean {
    return !!this.editAgentInfoSetting.name;
    return !!this.defaultAgentInfoSetting?.name;
  }
  get phoneValid(): boolean {
@@ -431,6 +462,11 @@
            ? rule.test(this.editInfoValue.phoneNumber) && _.isEqual(this.editInfoValue.phoneNumber.length,10)
            : true;
        }
  get emailValid() {
      const rule = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
      return this.editInfoValue.email ? rule.test(this.editInfoValue.email) : true;
    }
  get isSubmitBtnDisabled(): boolean {
      const isFormValid =  this.editInfoValue.name
@@ -442,7 +478,8 @@
                        && this.editInfoValue.phoneNumber.length
                        && this.editInfoValue.seniorityYear
                        && this.editInfoValue.expertise.length
                        && this.editInfoValue.communicationStyle.length;
                        && this.editInfoValue.communicationStyle.length
                        && this.editInfoValue.email.length;
      return !isFormValid
  }
}