保誠-保戶業務員媒合平台
Tomas
2021-12-28 be45e7dffcf53381b8bd8a562eb5fb8474470763
refactor: agentInfo/edit
修改1個檔案
新增2個檔案
303 ■■■■■ 已變更過的檔案
PAMapp/pages/agentInfo/edit/_agentNo.vue 301 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/const/agent-communication-style-list.ts 1 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/shared/const/agent-expert-list.ts 1 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
PAMapp/pages/agentInfo/edit/_agentNo.vue
@@ -56,13 +56,13 @@
        <UiField :span="12" icon="calender" label="服務資歷" style="display:flex">
          <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
            <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>月
            </el-option>
          </el-select>月
        </UiField>
      </el-row>
@@ -86,29 +86,33 @@
          </div>
        </el-col>
      </el-row>
      <el-row
        type="flex"
        class="pam-paragraph">
        <el-checkbox
        <UiField icon="flag" label="溝通風格">
        <el-checkbox
            v-model="editInfoValue.communicationStyle"
            :label="communicateStyle"
            :key="index"
            :label="communicateStyle"
            :key="index"
            v-for="(communicateStyle, index) in communicationStyleList">
          </el-checkbox>
        </UiField>
      </el-row>
      <el-row
        type="flex"
        class="pam-paragraph">
        <UiField icon="flag" label="專長領域">
          <el-checkbox
            v-model="editInfoValue.expert"
            :label="item.name"
            :key="item.id"
            v-for="item in expertList">
          <el-checkbox
            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 {
@@ -182,17 +186,16 @@
  currentRole!:string | null;
  _agentInfoSetting!: AgentInfoSetting;
  agentInfo!:AgentInfo
  role = Role;
  isAlertFieldInfo         = false;
  fieldInfoTitle           = '';
  fieldInfoDesc            = '';
  hideReviews              = hideReviews ;
  agentInfo!      : AgentInfo
  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;
  //////////////////////////////////////////////////////////////////////
@@ -250,7 +221,37 @@
  }
  mounted(){
    this.setAgentInfo(this.agentInfo);
    this.setAgentInfo(this.agentInfo);
  }
  private setAgentInfo(agentInfo: AgentInfo): void {
    const [agentYear, _yearUnit , agentMonth, _monthUnit] =  agentInfo.seniority.split(" ");
    this._agentInfoSetting = {
      agentNo           : agentInfo.agentNo||'',
      name              : agentInfo.name || '',
      expertise         : agentInfo.expertise || [],
      title             : agentInfo.title || '',
      role              : agentInfo.role||'',
      serveArea         : agentInfo.serveArea || '',
      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       : '',
    };
    this.editInfoValue = {
      ...this._agentInfoSetting,
      expertise          : _.cloneDeep(this._agentInfoSetting.expertise),
      // TODO: ç¢ºèªå¾Œç«¯æ­¤æ¬„位後端應改為以" , "隔開 [Tomas, 2021/12/28]
      communicationStyle : this._agentInfoSetting.communicationStyle.split('、')
    }
  }
  //////////////////////////////////////////////////////////////////////
@@ -271,158 +272,44 @@
  ////////////////////////////////////////////////////////////
  private setAgentInfo(agentInfo: AgentInfo): void {
      const [agentYear, _yearUnit , agentMonth, _monthUnit] =  agentInfo.seniority.split(" ");
      this._agentInfoSetting = {
                  agentNo           : agentInfo.agentNo||'',
                  name              : agentInfo.name || '',
                  expertise         : agentInfo.expertise || [],
                  title             : agentInfo.title || '',
                  role              : agentInfo.role||'',
                  serveArea         : agentInfo.serveArea || '',
                  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       : '',
              };
                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(',');
  }
  get nameValid():boolean {
      this.formValidStatus.name = this.editInfoValue.name ? true : false;
      return this.formValidStatus.name;
  }
  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;
            return !isFormValid
        }
  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       : ''
            }
      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
  }
            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);
  //     }
  editAgentInfoSetting(): void {
    const editSettingInfo: any = {
      ...this.editInfoValue,
      communicationStyle: this.editInfoValue.communicationStyle.join('、'),
      photoBase64       : '',
    }
    accountSettingService.editAgentInfoSetting(editSettingInfo).then((res: AgentInfoSetting) => {
      console.log(editSettingInfo)
    });
  }
}
</script>
<style lang="scss">
.pam-icon {
  font-size: 15px;
  font-size    : 15px;
  padding-right: 8px;
  color: $PRUDENTIAL_GREY;
  color        : $PRUDENTIAL_GREY;
  &.icon--primary {
    color: $PRIMARY_RED;
  }
@@ -437,9 +324,9 @@
      font-size: 12px;
    }
    .pam-field__title {
      font-size: 16px;
      font-size  : 16px;
      font-weight: bold;
      display: flex;
      display    : flex;
      align-items: center;
    }
  }
@@ -458,13 +345,13 @@
}
.pam-field-experts {
  display: flex;
  display  : flex;
  flex-wrap: wrap;
}
.pam-progress__label {
  justify-content: space-between;
  flex-wrap: wrap;
  flex-wrap  : wrap;
  line-height: 24px;
}
.account-confirm{
@@ -473,8 +360,8 @@
}
.seniority-input{
  width:50px;
  width       : 50px;
  margin-right: 5px;
}
</style>
</style>
PAMapp/shared/const/agent-communication-style-list.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1 @@
export const agentCommunicationStyleList = ['謹慎務實', '明快主動', '耐心傾聽', '健談風趣'];
PAMapp/shared/const/agent-expert-list.ts
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1 @@
export const agentExpertList = ['健康與保障', '子女教育', '資產規劃', '樂活退休', '保單健檢/規劃', '分紅保單'];