| | |
| | | </div> |
| | | <div class="pam-paragraph"> |
| | | <div class="pam-consultant-login__title"> |
| | | <div>驗證碼</div> |
| | | <div class="text--dark-blue fs-16 cursor--pointer fix-chrome-click--issue" |
| | | <div>驗證碼 <span class="text--dark-blue fs-16">(區分大小寫)</span></div> |
| | | <div class="text--primary fs-16 cursor--pointer fix-chrome-click--issue" |
| | | @click="regenerateImgOfVerification">重新產生</div> |
| | | </div> |
| | | <div class="pam-consultant-login__verifyBlock mt-10"> |
| | |
| | | <script lang="ts"> |
| | | import { Vue, Component , namespace } from 'nuxt-property-decorator'; |
| | | import { AxiosError } from 'axios'; |
| | | import { getImgOfVerification, logInToConsultant, getVerificationStatus } from '~/assets/ts/api/consultant'; |
| | | import { Role } from '~/assets/ts/models/enum/Role'; |
| | | import ErrorMessageBox from '~/assets/ts/errorService'; |
| | | import { Role } from '~/shared/models/enum/role'; |
| | | import ErrorMessageBox from '~/shared/errorService'; |
| | | import loginService from '~/shared/services/login.service' |
| | | |
| | | const roleStorage = namespace('localStorage'); |
| | | @Component({ |
| | |
| | | password: '', |
| | | } |
| | | |
| | | get isAlreadyDone():boolean{ |
| | | return !!(this.verificationCode && this.consultantDto.username && this.consultantDto.password); |
| | | } |
| | | |
| | | //////////////////////////////////////////////////////////////////// |
| | | mounted() { |
| | | this.getInitUserName(); |
| | | this.regenerateImgOfVerification(); |
| | | }; |
| | | |
| | | private getInitUserName(): void { |
| | | const username = localStorage.getItem('consultantUserName') |
| | | if (username) { |
| | | this.consultantDto.username = username; |
| | | this.isRememberUserName = true; |
| | | } |
| | | get isAlreadyDone():boolean{ |
| | | return !!(this.verificationCode && this.consultantDto.username && this.consultantDto.password); |
| | | } |
| | | |
| | | |
| | | //////////////////////////////////////////////////////////////////// |
| | | public regenerateImgOfVerification(): void { |
| | | getImgOfVerification().then( imgOfBase64 => |
| | | loginService.getImgOfVerification().then( imgOfBase64 => |
| | | this.imgSrc = imgOfBase64 |
| | | ); |
| | | }; |
| | |
| | | this.isAlreadyDone ? this.verify() : ErrorMessageBox('請確認帳號、密碼以及驗證碼是否填寫完畢'); |
| | | } |
| | | |
| | | |
| | | //////////////////////////////////////////////////////////////////// |
| | | private getInitUserName(): void { |
| | | const username = localStorage.getItem('consultantUserName') |
| | | if (username) { |
| | | this.consultantDto.username = username; |
| | | this.isRememberUserName = true; |
| | | } |
| | | } |
| | | |
| | | private verify():void{ |
| | | getVerificationStatus(this.verificationCode).then( verifySuccess => { |
| | | loginService.getVerificationStatus(this.verificationCode).then( verifySuccess => { |
| | | if(verifySuccess.data){ |
| | | this.loginWithConsultant() |
| | | }else{ |
| | | this.clearValue(); |
| | | this.regenerateImgOfVerification(); |
| | | ErrorMessageBox('驗證碼輸入錯誤'); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | private loginWithConsultant(): void { |
| | | logInToConsultant(this.consultantDto).then(res => { |
| | | loginService.logInToConsultant(this.consultantDto).then(res => { |
| | | this.storageIdToken(res.data.id_token); |
| | | this.storageRole(Role.ADMIN); |
| | | this.storageConsultantId(this.consultantDto.username) |
| | |
| | | } |
| | | private checkHttpErrorStatus(error:any):void{ |
| | | this.clearValue(); |
| | | this.regenerateImgOfVerification(); |
| | | switch (error.response.status) { |
| | | case 401: |
| | | const errorMsg = error.response.data.detail; |