<template>
|
<div class="pam-login-page">
|
<div class='mb-30'>
|
<div class="mdTxt">登入 | 註冊方式</div>
|
<div class="pam-field-title__hint mt-5 mb-10"
|
>顧問將會以此{{connectDevice === 'MOBILE' ? '手機號碼' : 'Email'}}為主要預約諮詢聯繫方式</div>
|
|
<div class="pam-tags">
|
<el-row type="flex" class="pt-30">
|
<el-button
|
:class="{ 'active': connectDevice === 'MOBILE'}"
|
@click="connectDevice = 'MOBILE'">手機號碼</el-button>
|
<el-button
|
:class="{ 'active': connectDevice === 'EMAIL'}"
|
@click="connectDevice = 'EMAIL'">Email</el-button>
|
</el-row>
|
</div>
|
|
<div class="pam-inputs mb-10">
|
<div class="pam-input-position pt-10" v-show="connectDevice === 'MOBILE'">
|
<input
|
class="pam-input"
|
:class="{
|
'is-invalid': !phoneValid
|
}"
|
v-model="phoneNumber"
|
placeholder="請輸入手機號碼"
|
:disabled="showPhoneOtpCodeField"
|
>
|
<i
|
class="icon-close"
|
v-if="onPhoneVerifyStep !== 'APPLY_OTP'"
|
@click="deleteOtpInfo('MOBILE')"
|
></i>
|
<div class="error mt-5 mb-5">
|
<span v-show="!phoneValid">手機號碼格式有誤</span>
|
</div>
|
</div>
|
|
<div class="pam-input-position pt-10" v-show="connectDevice === 'EMAIL'">
|
<input
|
class="pam-input"
|
:class="{
|
'is-invalid': !emailValid
|
}"
|
v-model="email"
|
placeholder="請輸入 Email 地址"
|
:disabled="showEmailVerifyField"
|
>
|
<i
|
class="icon-close"
|
v-if="showEmailVerifyField"
|
@click="deleteOtpInfo('EMAIL')"
|
></i>
|
<div class="error mt-5 mb-5">
|
<span v-show="!emailValid">Email格式有誤</span>
|
</div>
|
</div>
|
</div>
|
|
<!-- mobile 驗證碼 -->
|
<template v-if="connectDevice === 'MOBILE'">
|
<div v-show="showPhoneOtpCodeField">
|
<el-row type="flex" justify="space-between">
|
<div class="mdTxt">輸入驗證碼</div>
|
<div class="otp-count-timer">
|
{{phoneCounter}}
|
</div>
|
</el-row>
|
|
<el-row>
|
<input
|
class="pam-input mt-10"
|
:class="{
|
'is-invalid': !otpCode
|
}"
|
v-model="otpCode"
|
placeholder="請輸入驗證碼"
|
>
|
</el-row>
|
<div class="error mt-5 mb-10">
|
<span v-show="otpCounterSec === 0">驗證碼已過期,請重發驗證碼</span>
|
</div>
|
|
<el-row>
|
<el-button
|
:disabled="!phoneNumber || otpResendCounter !== 0 || !phoneValid"
|
@click="resentOtp('MOBILE')"
|
icon="icon-arrow"
|
>
|
重發驗證碼<span
|
class="pam-field-title__hint pl-5"
|
v-if="otpResendCounter !== 0"
|
>({{ otpResendCounter }})</span>
|
</el-button>
|
</el-row>
|
</div>
|
|
<el-row>
|
<el-button
|
v-if="onPhoneVerifyStep === 'APPLY_OTP'"
|
:disabled="!phoneNumber || !phoneValid"
|
@click="applyOtpVerification('MOBILE')"
|
icon="icon-arrow"
|
>
|
發送驗證碼
|
</el-button>
|
</el-row>
|
|
</template>
|
|
<!-- email 驗證碼 -->
|
<template v-if="connectDevice === 'EMAIL'">
|
<el-row v-show="showEmailVerifyField">
|
<el-row type="flex" justify="space-between">
|
<div class="mdTxt">輸入驗證碼</div>
|
<div class="otp-count-timer">
|
{{emailOtpCounter}}
|
</div>
|
</el-row>
|
|
<el-row>
|
<input
|
class="pam-input mt-10"
|
:class="{
|
'is-invalid': !emailOtpCode
|
}"
|
v-model="emailOtpCode"
|
placeholder="請輸入驗證碼"
|
>
|
</el-row>
|
<div class="error mt-5 mb-10">
|
<span v-show="emailCounterSec === 0">驗證碼已過期,請重發驗證碼</span>
|
</div>
|
|
<el-button
|
:disabled="!email || emailResendCounter !== 0 || !emailValid"
|
icon="icon-arrow"
|
@click="resentOtp('EMAIL')"
|
>
|
重發驗證碼<span
|
v-if="emailResendCounter !== 0"
|
class="pam-field-title__hint pl-5"
|
>({{ emailResendCounter }})</span>
|
</el-button>
|
</el-row>
|
|
<el-row v-show="!showEmailVerifyField">
|
<el-button
|
:disabled="!email || !emailValid"
|
@click="applyOtpVerification('EMAIL')"
|
icon="icon-arrow"
|
>
|
發送驗證碼
|
</el-button>
|
</el-row>
|
</template>
|
</div>
|
|
<el-row type="flex" justify="center" class="pam-login-page__action-bar mt-30">
|
<el-button
|
type="primary"
|
v-if="(connectDevice === 'MOBILE' && onPhoneVerifyStep === 'INPUT_OTP') || (connectDevice === 'EMAIL' && onEmailVerifyResendStatus === 'CAN_RESEND')"
|
:disabled="isSubmitBtnDisabled"
|
@click="login">
|
送出
|
</el-button>
|
</el-row>
|
|
<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"
|
:class="{
|
'is-invalid': !name
|
}"
|
v-model="name"
|
placeholder="請輸入姓名"
|
>
|
</el-row>
|
<el-row class="pt-30">
|
<div class="mdTxt">
|
請審閱條款,並核勾確認已閱讀且同意相關條款內容
|
</div>
|
</el-row>
|
<el-row class="pt-10">
|
<div
|
v-if="registerDialogVisible"
|
class="mdTxt pam-register-dialog__contract"
|
ref="contract"
|
@scroll="detectContractReadStatus">
|
<h3>蒐集個人資料告知事項</h3>
|
<p class="mt-10">
|
遵守個人資料保護法規定,在您提供個人資料予本處前,依法告
|
知下列事項:
|
<p>
|
|
<p class="mt-10">
|
一、獲取您下列個人資料類別:姓名、出生年月日、國民身分證統一編號、性別、職業、教育、
|
連絡方式(包括但不限於電話號碼、E-MAIL、居住或工作地址)等,或其他得以直接
|
或間接識別您個人之資料。
|
<p>
|
|
<p class="mt-10">
|
二、本處將依個人資料保護法及相關法令之規定下,依本處隱私權保護政策,蒐集、
|
處理及利用您的個人資料。
|
<p>
|
|
<p class="mt-10">
|
三、本處將於蒐集目的之存續期間合理利用您的個人資料。
|
</p>
|
|
<p class="mt-10">
|
四、除蒐集之目的涉及國際業務或活動外,本處僅於中華民國領域內利用您的個人資
|
料。
|
</p>
|
|
<p class="mt-10">
|
五、本處將於原蒐集之特定目的、本次以外之產業之推廣、宣導及輔導、以及其他公
|
務機關請求行政協助之目的範圍內,合理利用您的個人資料。
|
</p>
|
|
<p class="mt-10">
|
六、您可依個人資料保護法第 3 條規定,就您的個人資料向本處行使之下列權利:
|
(一) 查詢或請求閱覽。
|
(二) 請求製給複製本。
|
(三) 請求補充或更正。
|
(四) 請求停止蒐集、處理及利用。
|
(五) 請求刪除。
|
您因行使上述權利而導致對您的權益產生減損時,本處不負相關賠償責任。另依
|
個人資料保護法第 14 條規定,本處得酌收行政作業費用。
|
</p>
|
|
<p class="mt-10">
|
七、若您未提供正確之個人資料,本處將無法為您提供特定目的之相關業務。
|
</p>
|
|
<p class="mt-10">
|
八、本處因業務需要而委託其他機關處理您的個人資料時,本處將會善盡監督之責。
|
</p>
|
|
<p class="mt-10">
|
九、您瞭解此一同意書符合個人資料保護法及相關法規之要求,且同意本處留存此同
|
意書,供日後取出查驗。
|
個人資料之同意提供
|
一、本人已充分知悉貴處上述告知事項。
|
二、本人同意貴處蒐集、處理、利用本人之個人資料,以及其他公務機關請求行政協
|
助目的之提供。
|
</p>
|
</div>
|
</el-row>
|
<el-row class="pt-30">
|
<div class="pam-agree-radio">
|
<label for="agreeContract" class="pam-radio"
|
:class="{disabled: !isReadContract}">
|
<input
|
type="radio"
|
id="agreeContract"
|
@click="agreeContract = !agreeContract"
|
:disabled="!isReadContract"
|
value="agreeContract">
|
<i :class="agreeContract ?'icon-checkbox-1': 'icon-checkbox'"></i>我同意並繼續
|
</label>
|
</div>
|
</el-row>
|
<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"
|
: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>
|
<div class="pam-popUp-confirm-bolck pam-paragraph">
|
<div class="text--center">
|
<el-button
|
type="primary"
|
@click="emailOtpConfirmVisable = false"
|
>我知道了</el-button>
|
</div>
|
</div>
|
</PopUpFrame>
|
|
<PopUpFrame class="pam-popUpFrame"
|
:isOpen.sync="registerSuccessConfirmVisable"
|
@closePopUp="confirmApplySuccess"
|
:drawerSize="'35%'"
|
>
|
<div class="pam-popUp-title text--center">
|
歡迎您登入成功,如您預約諮詢,顧問會以您留下的{{ 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="registerSuccessConfirmVisable = false"
|
>我知道了</el-button>
|
</div>
|
</div>
|
</PopUpFrame>
|
|
<PopUpFrame class="pam-popUpFrame"
|
: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="phoneSuccessConfirmVisable = false"
|
>我知道了</el-button>
|
</div>
|
</div>
|
</PopUpFrame>
|
|
</div>
|
</template>
|
|
<script src="./login.component.ts"></script>
|
|
<style lang="scss" scoped>
|
@import "./login.component.scss";
|
</style>
|