| | |
| | | <template> |
| | | <div> |
| | | <div class="edit-agent-info-page"> |
| | | <el-row |
| | | type="flex" |
| | | justify="center"> |
| | |
| | | class="pt-10" |
| | | justify="center" |
| | | align="middle" v-if="!hideReviews"> |
| | | <!-- TODO:隱藏滿意度 --> |
| | | <i class="pam-icon icon--primary icon-star"></i> |
| | | <h3 class="mdTxt">{{ agentInfo.avgScore }}</h3> |
| | | </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-phone" |
| | | ></i>手機號碼 |
| | | <span class="hint text--bold" v-show="!phoneValid">手機號碼格式有誤</span> |
| | | <span class="hint text--bold" v-show="editInfoValue.phoneNumber.length === 0">手機號碼為必填</span> |
| | | </div> |
| | | </div> |
| | | <el-input |
| | | v-model="editInfoValue.phoneNumber" |
| | | :class="{'is-invalid': !phoneValid}" |
| | | maxlength="10" |
| | | minlength="10"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | <el-row |
| | | type="flex" |
| | | class="pam-paragraph"> |
| | | <UiField :span="12" icon="agent" label="頭銜"> |
| | | <el-input v-model="editInfoValue.title"></el-input> |
| | | </UiField> |
| | |
| | | type="flex" |
| | | class="pam-paragraph"> |
| | | <UiField icon="company" label="服務地區"> |
| | | <el-input v-model="editInfoValue.serveArea"></el-input> |
| | | <MultiSelectBtn class="mt-30" |
| | | :mutiSelect.sync="editInfoValue.serveArea" |
| | | :nameOfSelectAll="'全台'" |
| | | :options="serveAreaOptions" |
| | | > |
| | | </MultiSelectBtn> |
| | | </UiField> |
| | | </el-row> |
| | | |
| | |
| | | <MultiSelectBtn class="mt-30" |
| | | :mutiSelect.sync="editInfoValue.communicationStyle" |
| | | :options="agentCommunicationStyleList" |
| | | @change="selectCommunicationStyles" |
| | | :maxLength="2" |
| | | > |
| | | </MultiSelectBtn> |
| | | </div> |
| | |
| | | import { AgentInfoSetting } from '~/shared/models/account.model'; |
| | | 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'); |
| | | |
| | |
| | | hideReviews : boolean = hideReviews ; |
| | | isAlertFieldInfo: boolean = false; |
| | | isInfoUpdate : boolean = false; |
| | | serveAreaOptions: any[] = taiwanCities.map((city) => ({ title: city, label: city })); |
| | | |
| | | editInfoValue = { |
| | | agentNo : '', |
| | | name : '', |
| | | expertise : [] as string[], |
| | | title : '', |
| | | serveArea : '', |
| | | serveArea : [] as string[], |
| | | companyAddress : '', |
| | | seniorityYear : 1, |
| | | seniorityMonth : 0, |
| | |
| | | awards : '', |
| | | communicationStyle: [] as string[], |
| | | photoBase64 : '', |
| | | phoneNumber : '' |
| | | }; |
| | | |
| | | communicationStyleList: string[] = agentCommunicationStyleList; |
| | |
| | | expertise : agentInfo.expertise || [], |
| | | title : agentInfo.title || '', |
| | | role : agentInfo.role||'', |
| | | serveArea : agentInfo.serveArea || '', |
| | | serveArea : agentInfo?.serveArea.split('、'), |
| | | gender : agentInfo.gender||'', |
| | | phoneNumber : agentInfo.phoneNumber||'', |
| | | companyAddress : agentInfo.companyAddress || '', |
| | |
| | | const editSettingInfo: any = { |
| | | ...this.editInfoValue, |
| | | communicationStyle: this.editInfoValue.communicationStyle.join('、'), |
| | | serveArea: this.editInfoValue.serveArea.join('、'), |
| | | } |
| | | accountSettingService.editAgentInfoSetting(editSettingInfo).then((res: AgentInfoSetting) => { |
| | | this.isInfoUpdate = true; |
| | |
| | | } |
| | | } |
| | | //////////////////////////////////////////////////////////// |
| | | 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; |
| | | } |
| | | |
| | | get isSubmitBtnDisabled(): boolean { |
| | | const isFormValid = this.editInfoValue.name |
| | | && this.editInfoValue.title |
| | |
| | | && this.editInfoValue.serveArea |
| | | && this.editInfoValue.concept |
| | | && this.editInfoValue.experiences |
| | | && this.editInfoValue.awards |
| | | && this.editInfoValue.phoneNumber.length |
| | | && this.editInfoValue.seniorityYear |
| | | && this.editInfoValue.expertise.length |
| | | && this.editInfoValue.communicationStyle.length; |
| | |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | <style lang="scss" > |
| | | .edit-agent-info-page{ |
| | | .el-textarea__inner{ |
| | | font-size: 15px; |
| | | } |
| | | } |
| | | .pam-icon { |
| | | font-size : 15px; |
| | | padding-right: 8px; |
| | |
| | | .el-input--suffix .el-input__inner { |
| | | padding-right: 20px; |
| | | } |
| | | |
| | | .el-textarea__inner{ |
| | | font-size: 18px; |
| | | } |
| | | </style> |