保誠-保戶業務員媒合平台
Tomas
2024-01-11 756f8a63347119f511fc964bf1e2ff2417339c56
PAMapp/pages/agentInfo/edit/_agentNo.vue
@@ -125,18 +125,14 @@
        <UiField :span="12" icon="time" label="最後上線時間">
          {{ agentInfo.latestLoginTime | formatDate }}
        </UiField>
        <UiField :span="12" icon="calender" label="服務資歷">
          <div class="mt-10" style="display: flex; align-items: center">
            <el-input  v-model="editInfoValue.seniorityYear" class="seniority-input" ></el-input>年
            <el-select  style="width:60px" v-model="editInfoValue.seniorityMonth" class="seniority-input">
              <el-option
                v-for="(month) in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]"
                :value="month"
                :key="month">
                {{ month }}
              </el-option>
            </el-select>月
          </div>
        <UiField :span="12" icon="calender" label="到職日期" class="pam-editInfo-date-picker">
          <UiDatePicker
              :isFutureDateDisabled = true
              id="el-date-picker"
              class="mt-10"
              :defaultValue ="agentInfo.entryDate"
              @changeDate="onChangeDate($event)"
          ></UiDatePicker>
        </UiField>
      </el-row>
@@ -268,7 +264,6 @@
import { Context } from '@nuxt/types';
import { namespace } from 'nuxt-property-decorator';
import { Vue, Component, Prop } from 'vue-property-decorator';
import * as _ from "lodash";
import myConsultantService from '~/shared/services/my-consultant.service';
import accountSettingService from '~/shared/services/account-setting.service';
@@ -279,6 +274,7 @@
import { Role } from '~/shared/models/enum/Role';
import { agentCommunicationStyleList } from '~/shared/const/agent-communication-style-list';
import { taiwanCities } from '~/shared/const/taiwan-cities';
const localStorageTest = namespace('localStorage');
const loginStore = namespace('login.store');
@@ -308,8 +304,6 @@
    title             : '',
    serveArea         : [] as string[],
    companyAddress    : '',
    seniorityYear     : 1,
    seniorityMonth    : 0,
    concept           : '',
    experiences       : '',
    awards            : '',
@@ -317,6 +311,7 @@
    photoBase64       : '',
    phoneNumber       : '',
    email             : '',
    entryDate         : '',
  };
  communicationStyleList: string[] = agentCommunicationStyleList;
@@ -377,53 +372,67 @@
  mounted(){
    this.setAgentInfo(this.agentInfo);
    const bodyEl = document.querySelector('body');
    bodyEl?.addEventListener('scroll', function() {
      const elDatePickerEl = document.querySelector('#el-date-picker');
      const elDatePickerPanelEl = document.querySelector('.el-picker-panel');
      if (elDatePickerPanelEl) {
        elDatePickerPanelEl['style']['z-index'] = 5;
        const elDatePickerOffsetTop = elDatePickerEl!.getBoundingClientRect().top;
        elDatePickerPanelEl!['style'].top = elDatePickerOffsetTop + 30 + 'px';
      }
    });
  }
  private setAgentInfo(agentInfo: AgentInfo): void {
    const [agentYear, _yearUnit , agentMonth, _monthUnit] =  agentInfo.seniority.split(" ");
    this.defaultAgentInfoSetting = {
      agentNo           : agentInfo.agentNo||'',
      name              : agentInfo.name || '',
      expertise         : agentInfo.expertise || [],
      title             : agentInfo.title || '',
      role              : agentInfo.role||'',
      serveArea         : agentInfo?.serveArea.split('、'),
      gender            : agentInfo.gender||'',
      phoneNumber       : agentInfo.phoneNumber||'',
      companyAddress    : agentInfo.companyAddress || '',
      seniorityYear     : agentYear? +agentYear : 0,
      seniorityMonth    : agentMonth ? +agentMonth : 0,
      concept           : agentInfo.concept || '',
      experiences       : agentInfo.experiences  || '',
      awards            : agentInfo.awards || '',
      communicationStyle: agentInfo.communicationStyle || '',
      photoBase64       : '',
      email             : agentInfo.email || ''
      agentNo: agentInfo?.agentNo || '',
      name: agentInfo?.name || '',
      expertise: agentInfo?.expertise || [],
      title: agentInfo?.title || '',
      role: agentInfo?.role || '',
      serveArea: agentInfo?.serveArea?.split('、') || [],
      gender: agentInfo?.gender || '',
      phoneNumber: agentInfo?.phoneNumber || '',
      companyAddress: agentInfo?.companyAddress || '',
      concept: agentInfo?.concept || '',
      experiences: agentInfo?.experiences || '',
      awards: agentInfo?.awards || '',
      communicationStyle: agentInfo?.communicationStyle || '',
      photoBase64: '',
      email: agentInfo?.email || '',
      entryDate: agentInfo?.entryDate || '',
    };
    this.editInfoValue = {
      ...this.defaultAgentInfoSetting,
      expertise          : _.cloneDeep(this.defaultAgentInfoSetting.expertise),
      // TODO: 確認後端此欄位後端應改為以" , "隔開 [Tomas, 2021/12/28]
      communicationStyle : this.defaultAgentInfoSetting.communicationStyle.split('、'),
    }
      expertise: JSON.parse(JSON.stringify(this.defaultAgentInfoSetting.expertise)),
      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);
    });
  }
  onChangeDate(date: any): void {
    this.editInfoValue.entryDate = date;
  }
  backToInfo() {
@@ -457,11 +466,11 @@
  }
  get phoneValid(): boolean {
            const rule = /^09[0-9]{8}$/;
            return this.editInfoValue.phoneNumber
            ? rule.test(this.editInfoValue.phoneNumber) && _.isEqual(this.editInfoValue.phoneNumber.length,10)
            : true;
        }
    const rule = /^09[0-9]{8}$/;
    return this.editInfoValue.phoneNumber
      ? rule.test(this.editInfoValue.phoneNumber) && this.editInfoValue.phoneNumber.length === 10
      : true;
  }
  get emailValid() {
      const rule = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
@@ -476,7 +485,7 @@
                        && this.editInfoValue.concept
                        && this.editInfoValue.experiences
                        && this.editInfoValue.phoneNumber.length
                        && this.editInfoValue.seniorityYear
                        && this.editInfoValue.entryDate
                        && this.editInfoValue.expertise.length
                        && this.editInfoValue.communicationStyle.length
                        && this.editInfoValue.email.length;
@@ -549,4 +558,10 @@
  padding-right: 20px;
}
.pam-editInfo-date-picker{
  .pam-date.el-input {
      width: 100%;
  }
}
</style>