From 9cb6d5f92ad7aeda45ad1fe6482dcfc63d17be2b Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期一, 06 十二月 2021 12:35:26 +0800 Subject: [PATCH] Merge branch 'master' of https://192.168.0.10:8443/r/pcalife/PAM --- PAMapp/pages/login/index.vue | 146 +++++++++++++++++++++++++++--------------------- 1 files changed, 81 insertions(+), 65 deletions(-) diff --git a/PAMapp/pages/login/index.vue b/PAMapp/pages/login/index.vue index 93525b9..6f02559 100644 --- a/PAMapp/pages/login/index.vue +++ b/PAMapp/pages/login/index.vue @@ -157,7 +157,6 @@ </template> </div> - <el-row type="flex" justify="center" class="pam-login-page__action-bar mt-30"> <el-button type="primary" @@ -168,15 +167,14 @@ </el-button> </el-row> - <el-dialog - title="甇∟�雿輻��" - :custom-class="'pam-register-dialog'" - :visible.sync="registerDialogVisible" - :fullscreen="true" - :close-on-click-modal="false" - :show-close="false" - center> - <span> + <PopUpFrame + :isOpen.sync="registerDialogVisible" + :dialogWidth="'90%'" + :drawerSize="'95%'" + class="pam-register-dialog" + @closePopUp="isReadContract = false" + > + <div class="subTitle text--center mb-20">甇∟�雿輻��</div> <el-row> <input class="pam-input" @@ -194,6 +192,7 @@ </el-row> <el-row class="pt-10"> <div + v-if="registerDialogVisible" class="mdTxt pam-register-dialog__contract" ref="contract" @scroll="detectContractReadStatus"> @@ -271,19 +270,20 @@ </label> </div> </el-row> - </span> - <span slot="footer" class="dialog-footer"> - <el-button - type="primary" - :disabled="!name || !agreeContract || !isReadContract" - @click="applyAccount" - >撱箇�撣唾�� - </el-button> - </span> - </el-dialog> + <div class="text--center mt-10"> + <el-button + type="primary" + :disabled="!name || !agreeContract || !isReadContract" + @click="applyAccount" + >撱箇�撣唾�� + </el-button> + </div> + </PopUpFrame> <PopUpFrame class="pam-popUpFrame" - :isOpen.sync="emailOtpConfirmVisable"> + :isOpen.sync="emailOtpConfirmVisable" + :drawerSize="'35%'" + > <div class="pam-popUp-title text--center">撌脣������</div> <div class="pam-popUp-title text--center">{{email}}</div> <div class="pam-popUp-title text--center">隢��摮隞嗡蒂摰������</div> @@ -298,29 +298,39 @@ </PopUpFrame> <PopUpFrame class="pam-popUpFrame" - :isOpen.sync="registerSuccessConfirmVisable"> + :isOpen.sync="registerSuccessConfirmVisable" + @closePopUp="confirmApplySuccess" + :drawerSize="'35%'" + > <div class="pam-popUp-title text--center"> 甇∟�����������垣閰g�“���誑�����{ connectDevice === 'MOBILE' ? '����Ⅳ' : 'Email'}}���蝜� </div> + <div class="pam-popUp-txt text--center mb-10 mt-5" + >�撠�歲��...{{autoRedirectCounter}}蝘�</div> <div class="pam-popUp-confirm-bolck pam-paragraph"> <div class="text--center"> <el-button type="primary" - @click="confirmApplySuccess" + @click="registerSuccessConfirmVisable = false" >������</el-button> </div> </div> </PopUpFrame> <PopUpFrame class="pam-popUpFrame" - :isOpen.sync="phoneSuccessConfirmVisable"> - <div class="pam-popUp-title text--center mb-50" + :isOpen.sync="phoneSuccessConfirmVisable" + @closePopUp="confirmApplySuccess" + :drawerSize="'30%'" + > + <div class="pam-popUp-title text--center" >甇∟�������</div> + <div class="pam-popUp-txt text--center mb-30 mt-5 xsTxt" + >�撠�歲��...{{autoRedirectCounter}}蝘�</div> <div class="pam-popUp-confirm-bolck pam-paragraph"> <div class="text--center"> <el-button type="primary" - @click="confirmApplySuccess" + @click="phoneSuccessConfirmVisable = false" >������</el-button> </div> </div> @@ -334,6 +344,7 @@ import { Vue, Component, Ref } from 'vue-property-decorator'; import { LoginRequest, LoginVerify, loginVerify, OtpInfo, register, RegisterInfo, sendOtp } from '~/assets/ts/api/consultant'; import ErrorMessageBox from '~/assets/ts/errorService'; +import { OtpErrorCode } from '~/assets/ts/models/enum/otpErrorCode'; import { Role } from '~/assets/ts/models/enum/Role'; const roleStorage = namespace('localStorage'); @@ -362,6 +373,9 @@ emailResendInterval: any; emailOtpInfo!: OtpInfo; + autoRedirectCounter = 3; + autoRedirectInterval: any; + name = ''; agreeContract = false; isReadContract = false; @@ -374,6 +388,7 @@ applyAccount_onAction = false; + previousPath = ''; mounted() { const phoneOtpTime = localStorage.getItem('phoneOtpTime'); const emailOtpTime = localStorage.getItem('emailOtpTime'); @@ -442,6 +457,9 @@ this.storageOtpTime(type, otpInfo); this.startOtpSetting(type); this.startOtpCount(type); + } else { + const errorMsg = OtpErrorCode[otpInfo.failCode] ? OtpErrorCode[otpInfo.failCode]:'OTP蝟餌絞�隤�'; + ErrorMessageBox(errorMsg); } }); }; @@ -477,6 +495,7 @@ this.storageIdToken(res.data.id_token); this.storageRole(Role.USER); this.storagePhoneOrEmail(registerInfo); + this.autoRedirect(); this.registerSuccessConfirmVisable = true; }).catch(() => { this.applyAccount_onAction = false; @@ -486,8 +505,33 @@ confirmApplySuccess(): void { this.phoneSuccessConfirmVisable = false; this.registerSuccessConfirmVisable = false; - this.$router.go(-1); + this.redirect(); } + + private autoRedirect() { + this.autoRedirectInterval = setInterval(() => { + this.autoRedirectCounter -= 1; + + if (this.autoRedirectCounter === 0) { + clearInterval(this.autoRedirectInterval); + this.redirect(); + } + }, 1000) + } + + private redirect() { + const backToPrevious = ['questionnaire', 'myConsultantList']; + const find = backToPrevious.findIndex(item => this.previousPath.includes(item)); + console.log(this.previousPath, find, 'redirect'); + find > -1 ? this.$router.go(-1) : this.$router.push('/'); + } + + beforeRouteEnter (to, from, next) { + next(vm => { + console.log(from.path, 'beforeRouteEnter'); + vm.previousPath = from.path; + }) + } login() { const login: LoginVerify = this.setLoginInfo(); @@ -496,6 +540,7 @@ this.storageIdToken(res.data.id_token); this.storageRole(Role.USER); this.phoneSuccessConfirmVisable = true; + this.autoRedirect(); this.storagePhoneOrEmail(this.setRegisterInfo()); }).catch(error => { this.checkHttpErrorStatus(error); @@ -504,7 +549,8 @@ private checkHttpErrorStatus(error:any):void{ switch (error.response.status) { case 401: - ErrorMessageBox('',error); + const errorMsg = OtpErrorCode[error.response?.data?.detail] ? OtpErrorCode[error.response?.data?.detail]:'OTP蝟餌絞�隤�'; + ErrorMessageBox(errorMsg); break; case 403: this.registerDialogVisible = true; @@ -525,6 +571,7 @@ this.removeOtpTime(); clearInterval(this.otpInterval); clearInterval(this.emailResendInterval); + clearInterval(this.autoRedirectInterval); } private phoneDiffTime(parseOtpTime: any) { @@ -714,18 +761,6 @@ } } - .pam-register-dialog__contract { - $DEVICE_EXTRA_HEIGHT: 42px; - $ALIGN_PADDING: 60px; - $TOP_CONTENT_HEIGHT: 186px; - $BOTTOM_CONTENT_HEIGHT: 131px; - max-height: calc(100vh - $DEVICE_EXTRA_HEIGHT - $ALIGN_PADDING - $TOP_CONTENT_HEIGHT - $BOTTOM_CONTENT_HEIGHT); - overflow-y: scroll; - border-radius: 6px; - border: 1px solid #707070; - padding: 20px; - } - .pam-radio { color: $PRIMARY_RED; align-items: center; @@ -738,31 +773,6 @@ i { font-size: 27px; padding-right: 5px; - } - } - - .pam-register-dialog { - padding: 30px 20px; - display: flex; - flex-direction: column; - border-radius: 0; - &.el-dialog { - border-radius: 0; - } - .el-dialog__header { - padding: 0; - margin-bottom: 30px; - .el-dialog__title { - @extend .subTitle; - } - } - .el-dialog__body { - flex: 1; - padding: 0; - margin-bottom: 30px; - } - .el-dialog__footer { - padding: 0 !important; } } @@ -781,6 +791,12 @@ font-size: 20px; line-height: 27px; } + + .pam-popUp-txt { + font-size: 18px; + color: $MID_GREY; + } + .disabled { color: #A7A8AA; } -- Gitblit v1.8.0