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