|
@@ -10,17 +10,63 @@
|
|
|
>
|
|
>
|
|
|
<!-- 登录标题 -->
|
|
<!-- 登录标题 -->
|
|
|
<div class="login-header">
|
|
<div class="login-header">
|
|
|
- <h2 class="login-title">欢迎回来</h2>
|
|
|
|
|
- <p class="login-subtitle">请登录您的账号</p>
|
|
|
|
|
|
|
+ <h2 class="login-title">{{ $t('common.login') }}</h2>
|
|
|
|
|
+ <!-- <p class="login-subtitle">请登录您的账号</p> -->
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<el-tabs v-model="activeTab" @tab-change="handleTabChange" class="login-tabs">
|
|
<el-tabs v-model="activeTab" @tab-change="handleTabChange" class="login-tabs">
|
|
|
- <el-tab-pane label="账号密码登录" name="password">
|
|
|
|
|
|
|
+ <el-tab-pane :label="$t('login.smsLogin')" name="sms">
|
|
|
|
|
+ <el-form ref="smsFormRef" :model="smsForm" :rules="smsRules" label-width="0">
|
|
|
|
|
+ <el-form-item prop="account" class="login-form-item">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="smsForm.account"
|
|
|
|
|
+ :placeholder="$t('login.placeholderPhoneOrEmail')"
|
|
|
|
|
+ prefix-icon="User"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ class="login-input"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item prop="smsCode" class="login-form-item">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="smsForm.verifyCode"
|
|
|
|
|
+ :placeholder="$t('login.placeholderCaptcha')"
|
|
|
|
|
+ prefix-icon="Message"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ class="login-input"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #append>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ :disabled="smsCountdown > 0"
|
|
|
|
|
+ @click="sendSmsCode"
|
|
|
|
|
+ style="width:140px"
|
|
|
|
|
+ :class="{'countdown-btn': smsCountdown > 0}"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ >
|
|
|
|
|
+ {{ smsCountdown > 0 ? `${smsCountdown}s` : $t('login.sendCaptcha') }}
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item class="login-form-item">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="handleSmsLogin"
|
|
|
|
|
+ :loading="loading"
|
|
|
|
|
+ class="login-button"
|
|
|
|
|
+ size="large"
|
|
|
|
|
+ >
|
|
|
|
|
+ {{ $t('common.login') }}
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ </el-tab-pane>
|
|
|
|
|
+
|
|
|
|
|
+ <el-tab-pane :label="$t('login.passwordLogin')" name="password">
|
|
|
<el-form ref="passwordFormRef" :model="passwordForm" :rules="passwordRules" label-width="0">
|
|
<el-form ref="passwordFormRef" :model="passwordForm" :rules="passwordRules" label-width="0">
|
|
|
<el-form-item prop="account" class="login-form-item">
|
|
<el-form-item prop="account" class="login-form-item">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="passwordForm.account"
|
|
v-model="passwordForm.account"
|
|
|
- placeholder="请输入账号"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderAccount')"
|
|
|
prefix-icon="User"
|
|
prefix-icon="User"
|
|
|
clearable
|
|
clearable
|
|
|
class="login-input"
|
|
class="login-input"
|
|
@@ -30,7 +76,7 @@
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="passwordForm.password"
|
|
v-model="passwordForm.password"
|
|
|
type="password"
|
|
type="password"
|
|
|
- placeholder="请输入密码"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderPassword')"
|
|
|
prefix-icon="Lock"
|
|
prefix-icon="Lock"
|
|
|
show-password
|
|
show-password
|
|
|
class="login-input"
|
|
class="login-input"
|
|
@@ -41,7 +87,7 @@
|
|
|
<div class="gap10">
|
|
<div class="gap10">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="passwordForm.captcha"
|
|
v-model="passwordForm.captcha"
|
|
|
- placeholder="请输入验证码"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderCaptcha')"
|
|
|
prefix-icon="Lock"
|
|
prefix-icon="Lock"
|
|
|
class="login-input"
|
|
class="login-input"
|
|
|
/>
|
|
/>
|
|
@@ -53,7 +99,7 @@
|
|
|
<!-- <el-checkbox v-model="passwordForm.remember" class="remember-checkbox">
|
|
<!-- <el-checkbox v-model="passwordForm.remember" class="remember-checkbox">
|
|
|
<span class="remember-text">记住密码</span>
|
|
<span class="remember-text">记住密码</span>
|
|
|
</el-checkbox> -->
|
|
</el-checkbox> -->
|
|
|
- <el-link type="primary" href="#" :underline="false" class="forgot-link" @click="activeTab = 'reset'">忘记密码?</el-link>
|
|
|
|
|
|
|
+ <el-link type="primary" href="#" :underline="false" class="forgot-link" @click="activeTab = 'reset'">{{ $t('login.forgetPassword') }} ?</el-link>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item class="login-form-item">
|
|
<el-form-item class="login-form-item">
|
|
|
<el-button
|
|
<el-button
|
|
@@ -63,63 +109,19 @@
|
|
|
class="login-button"
|
|
class="login-button"
|
|
|
size="large"
|
|
size="large"
|
|
|
>
|
|
>
|
|
|
- 登录
|
|
|
|
|
|
|
+ {{ $t('common.login') }}
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
|
|
|
|
|
|
- <el-tab-pane label="验证码登录" name="sms">
|
|
|
|
|
- <el-form ref="smsFormRef" :model="smsForm" :rules="smsRules" label-width="0">
|
|
|
|
|
- <el-form-item prop="account" class="login-form-item">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="smsForm.account"
|
|
|
|
|
- placeholder="请输入手机号或邮箱"
|
|
|
|
|
- prefix-icon="User"
|
|
|
|
|
- clearable
|
|
|
|
|
- class="login-input"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item prop="smsCode" class="login-form-item">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="smsForm.verifyCode"
|
|
|
|
|
- placeholder="请输入验证码"
|
|
|
|
|
- prefix-icon="Message"
|
|
|
|
|
- clearable
|
|
|
|
|
- class="login-input"
|
|
|
|
|
- >
|
|
|
|
|
- <template #append>
|
|
|
|
|
- <el-button
|
|
|
|
|
- :disabled="smsCountdown > 0"
|
|
|
|
|
- @click="sendSmsCode"
|
|
|
|
|
- style="width:100px"
|
|
|
|
|
- :class="{'countdown-btn': smsCountdown > 0}"
|
|
|
|
|
- size="small"
|
|
|
|
|
- >
|
|
|
|
|
- {{ smsCountdown > 0 ? `${smsCountdown}s` : '发送验证码' }}
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-input>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item class="login-form-item">
|
|
|
|
|
- <el-button
|
|
|
|
|
- type="primary"
|
|
|
|
|
- @click="handleSmsLogin"
|
|
|
|
|
- :loading="loading"
|
|
|
|
|
- class="login-button"
|
|
|
|
|
- size="large"
|
|
|
|
|
- >
|
|
|
|
|
- 登录
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-form>
|
|
|
|
|
- </el-tab-pane>
|
|
|
|
|
- <el-tab-pane label="重置密码" name="reset">
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-tab-pane :label="$t('login.resetPassword')" name="reset">
|
|
|
<el-form ref="resetFormRef" :model="resetForm" :rules="resetRules" label-width="0">
|
|
<el-form ref="resetFormRef" :model="resetForm" :rules="resetRules" label-width="0">
|
|
|
<el-form-item prop="account" class="login-form-item">
|
|
<el-form-item prop="account" class="login-form-item">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="resetForm.account"
|
|
v-model="resetForm.account"
|
|
|
- placeholder="请输入手机号或邮箱"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderPhoneOrEmail')"
|
|
|
prefix-icon="User"
|
|
prefix-icon="User"
|
|
|
clearable
|
|
clearable
|
|
|
class="login-input"
|
|
class="login-input"
|
|
@@ -128,7 +130,7 @@
|
|
|
<el-form-item prop="smsCode" class="login-form-item">
|
|
<el-form-item prop="smsCode" class="login-form-item">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="resetForm.verifyCode"
|
|
v-model="resetForm.verifyCode"
|
|
|
- placeholder="请输入验证码"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderCaptcha')"
|
|
|
prefix-icon="Message"
|
|
prefix-icon="Message"
|
|
|
clearable
|
|
clearable
|
|
|
class="login-input"
|
|
class="login-input"
|
|
@@ -137,11 +139,11 @@
|
|
|
<el-button
|
|
<el-button
|
|
|
:disabled="passwordresetCountdown > 0"
|
|
:disabled="passwordresetCountdown > 0"
|
|
|
@click="sendPasswordresetCode"
|
|
@click="sendPasswordresetCode"
|
|
|
- style="width:100px"
|
|
|
|
|
|
|
+ style="width:140px"
|
|
|
:class="{'countdown-btn': passwordresetCountdown > 0}"
|
|
:class="{'countdown-btn': passwordresetCountdown > 0}"
|
|
|
size="small"
|
|
size="small"
|
|
|
>
|
|
>
|
|
|
- {{ passwordresetCountdown > 0 ? `${passwordresetCountdown}s` : '发送验证码' }}
|
|
|
|
|
|
|
+ {{ passwordresetCountdown > 0 ? `${passwordresetCountdown}s` : $t('login.sendCaptcha') }}
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-input>
|
|
</el-input>
|
|
@@ -149,7 +151,7 @@
|
|
|
<el-form-item prop="newPassword" class="login-form-item">
|
|
<el-form-item prop="newPassword" class="login-form-item">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="resetForm.newPassword"
|
|
v-model="resetForm.newPassword"
|
|
|
- placeholder="请输入新密码"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderNewPassword')"
|
|
|
prefix-icon="Lock"
|
|
prefix-icon="Lock"
|
|
|
show-password
|
|
show-password
|
|
|
class="login-input"
|
|
class="login-input"
|
|
@@ -158,7 +160,7 @@
|
|
|
<el-form-item prop="confirmPassword" class="login-form-item">
|
|
<el-form-item prop="confirmPassword" class="login-form-item">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="resetForm.confirmPassword"
|
|
v-model="resetForm.confirmPassword"
|
|
|
- placeholder="请确认新密码"
|
|
|
|
|
|
|
+ :placeholder="$t('login.placeholderConfirmPassword')"
|
|
|
prefix-icon="Lock"
|
|
prefix-icon="Lock"
|
|
|
show-password
|
|
show-password
|
|
|
class="login-input"
|
|
class="login-input"
|
|
@@ -172,7 +174,7 @@
|
|
|
class="login-button"
|
|
class="login-button"
|
|
|
size="large"
|
|
size="large"
|
|
|
>
|
|
>
|
|
|
- 登录
|
|
|
|
|
|
|
+ {{ $t('common.login') }}
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
@@ -182,7 +184,7 @@
|
|
|
<!-- 其他登录方式 -->
|
|
<!-- 其他登录方式 -->
|
|
|
<div class="other-login">
|
|
<div class="other-login">
|
|
|
<div class="divider">
|
|
<div class="divider">
|
|
|
- <span class="divider-text">其他登录方式</span>
|
|
|
|
|
|
|
+ <span class="divider-text">{{ $t('login.otherLogin') }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="social-login">
|
|
<div class="social-login">
|
|
|
<el-button
|
|
<el-button
|
|
@@ -203,10 +205,10 @@
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 注册链接 -->
|
|
<!-- 注册链接 -->
|
|
|
- <div class="register-link">
|
|
|
|
|
|
|
+ <!-- <div class="register-link">
|
|
|
<span>还没有账号?</span>
|
|
<span>还没有账号?</span>
|
|
|
<el-link type="primary" href="#" :underline="false">立即注册</el-link>
|
|
<el-link type="primary" href="#" :underline="false">立即注册</el-link>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -259,7 +261,7 @@ const getCaptchaFn = async (type) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 当前激活的标签页
|
|
// 当前激活的标签页
|
|
|
-const activeTab = ref('password')
|
|
|
|
|
|
|
+const activeTab = ref('sms')
|
|
|
|
|
|
|
|
// 密码登录表单
|
|
// 密码登录表单
|
|
|
const passwordForm = reactive({
|
|
const passwordForm = reactive({
|