|
@@ -6,36 +6,54 @@
|
|
<!-- 登录框 -->
|
|
<!-- 登录框 -->
|
|
<div class="register-form-container">
|
|
<div class="register-form-container">
|
|
<div class="register-box">
|
|
<div class="register-box">
|
|
- <el-card class="register-card" shadow="never">
|
|
|
|
|
|
+ <el-card v-if="pagechange === 'register'" class="register-card" shadow="never">
|
|
<template #header>
|
|
<template #header>
|
|
<div class="register-header">
|
|
<div class="register-header">
|
|
<img :src="loginLogo" alt="logo" class="login-logo"/>
|
|
<img :src="loginLogo" alt="logo" class="login-logo"/>
|
|
- <h2>注册账号</h2>
|
|
|
|
|
|
+ <h2 >注册账号</h2>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
+
|
|
<el-form
|
|
<el-form
|
|
:model="registerForm"
|
|
:model="registerForm"
|
|
:rules="registerRules"
|
|
:rules="registerRules"
|
|
ref="registerFormRef"
|
|
ref="registerFormRef"
|
|
|
|
+ hide-required-asterisk
|
|
@keyup.enter="handleRegister"
|
|
@keyup.enter="handleRegister"
|
|
|
|
+ label-position = "left"
|
|
>
|
|
>
|
|
- <el-form-item prop="company" label="单位名称:" style="margin-bottom: 20px;">
|
|
|
|
|
|
+ <el-form-item prop="company" label="单位名称:" :label-width = "registerlabel" style="margin-bottom: 20px;">
|
|
<el-input
|
|
<el-input
|
|
v-model="registerForm.company"
|
|
v-model="registerForm.company"
|
|
placeholder="请输入单位名称"
|
|
placeholder="请输入单位名称"
|
|
clearable
|
|
clearable
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item prop="username" label="邮箱:" style="margin-bottom: 20px;">
|
|
|
|
|
|
+ <el-form-item prop="username" label="邮箱:" :label-width = "registerlabel" style="margin-bottom: 20px;">
|
|
<el-input
|
|
<el-input
|
|
v-model="registerForm.username"
|
|
v-model="registerForm.username"
|
|
- placeholder="请输入用户名"
|
|
|
|
|
|
+ placeholder="请输入邮箱"
|
|
clearable
|
|
clearable
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item prop="password" label="密码:">
|
|
|
|
|
|
+ <div class="authcode" >
|
|
|
|
+ <el-input
|
|
|
|
+ v-for="(value, index) in codeList"
|
|
|
|
+ :key="index"
|
|
|
|
+ v-model="codeList[index]"
|
|
|
|
+ maxlength="1"
|
|
|
|
+ style="width: 50px; text-align: center;"
|
|
|
|
+ @input="onInput(index)"
|
|
|
|
+ @keydown.backspace="onBackspace(index, $event)"
|
|
|
|
+ @paste="onPaste"
|
|
|
|
+ :ref="el => inputRefs[index] = el"
|
|
|
|
+ />
|
|
|
|
+ <el-button @click="getAuthCode">获取验证码</el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <el-form-item prop="password" label="设置密码:" :label-width = "registerlabel" style="margin-bottom: 20px;">
|
|
<el-input
|
|
<el-input
|
|
v-model="registerForm.password"
|
|
v-model="registerForm.password"
|
|
placeholder="请输入密码"
|
|
placeholder="请输入密码"
|
|
@@ -44,13 +62,21 @@
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
+ <el-form-item prop="repassword" label="确认密码:" :label-width = "registerlabel">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="registerForm.repassword"
|
|
|
|
+ placeholder="请确认密码"
|
|
|
|
+ show-password
|
|
|
|
+ clearable
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
<el-form-item>
|
|
<el-form-item>
|
|
<el-button
|
|
<el-button
|
|
type="primary"
|
|
type="primary"
|
|
class="register-btn"
|
|
class="register-btn"
|
|
:loading="loading"
|
|
:loading="loading"
|
|
@click="handleRegister"
|
|
@click="handleRegister"
|
|
- :disabled="!isverify"
|
|
|
|
>
|
|
>
|
|
立 即 注 册
|
|
立 即 注 册
|
|
</el-button>
|
|
</el-button>
|
|
@@ -61,8 +87,134 @@
|
|
<div class="login-prompt">已有账号?点击</div>
|
|
<div class="login-prompt">已有账号?点击</div>
|
|
<el-link type="primary" @click="goToLogin">登录</el-link>
|
|
<el-link type="primary" @click="goToLogin">登录</el-link>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ </el-card>
|
|
|
|
+
|
|
|
|
+ <el-card v-else-if="pagechange === 'registerSuccess'" class="register-card" shadow="never">
|
|
|
|
+ <template #header>
|
|
|
|
+ <div class="register-header">
|
|
|
|
+ <img :src="loginLogo" alt="logo" class="login-logo"/>
|
|
|
|
+ <h2>注册成功!</h2>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <div class="register-success">
|
|
|
|
+ <div style="font-size: 18px;">登录账号: </div>
|
|
|
|
+ <div style="font-size: 16px;">{{ registerForm.username }}</div>
|
|
|
|
+ <el-button
|
|
|
|
+ class="register-btn"
|
|
|
|
+ @click="goToLogin"
|
|
|
|
+ >
|
|
|
|
+ 立 即 登 录
|
|
|
|
+ </el-button>
|
|
|
|
+
|
|
|
|
+ <div class="register-footer">
|
|
|
|
+ <div class="login-prompt">5秒后,自动跳转至登录界面</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-card>
|
|
|
|
+
|
|
|
|
+ <el-card v-else-if="pagechange === 'forgetPwd'" class="register-card" shadow="never">
|
|
|
|
+ <template #header>
|
|
|
|
+ <div class="register-header">
|
|
|
|
+ <img :src="loginLogo" alt="logo" class="login-logo"/>
|
|
|
|
+ <h2 >找回密码</h2>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <el-form
|
|
|
|
+ :model="registerForm"
|
|
|
|
+ :rules="registerRules"
|
|
|
|
+ ref="registerFormRef"
|
|
|
|
+ hide-required-asterisk
|
|
|
|
+ @keyup.enter="handleRegister"
|
|
|
|
+ label-position = "left"
|
|
|
|
+ >
|
|
|
|
+ <el-form-item prop="username" label="邮箱:" :label-width = "registerlabel" style="margin-bottom: 20px;">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="registerForm.username"
|
|
|
|
+ placeholder="请输入邮箱"
|
|
|
|
+ clearable
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <div class="authcode" >
|
|
|
|
+ <el-input
|
|
|
|
+ v-for="(value, index) in codeList"
|
|
|
|
+ :key="index"
|
|
|
|
+ v-model="codeList[index]"
|
|
|
|
+ maxlength="1"
|
|
|
|
+ style="width: 50px; text-align: center;"
|
|
|
|
+ @input="onInput(index)"
|
|
|
|
+ @keydown.backspace="onBackspace(index, $event)"
|
|
|
|
+ @paste="onPaste"
|
|
|
|
+ :ref="el => inputRefs[index] = el"
|
|
|
|
+ />
|
|
|
|
+ <el-button @click="getAuthCode2">获取验证码</el-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <el-form-item prop="password" label="设置密码:" :label-width = "registerlabel" style="margin-bottom: 20px;">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="registerForm.password"
|
|
|
|
+ placeholder="请输入密码"
|
|
|
|
+ show-password
|
|
|
|
+ clearable
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item prop="repassword" label="确认密码:" :label-width = "registerlabel">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="registerForm.repassword"
|
|
|
|
+ placeholder="请确认密码"
|
|
|
|
+ show-password
|
|
|
|
+ clearable
|
|
|
|
+ />
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item>
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ class="register-btn"
|
|
|
|
+ :loading="loading"
|
|
|
|
+ @click="handleRePwd"
|
|
|
|
+ >
|
|
|
|
+ 立 即 找 回
|
|
|
|
+ </el-button>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+
|
|
|
|
+ <div class="register-footer">
|
|
|
|
+ <div class="login-prompt">没有账号?点击</div>
|
|
|
|
+ <el-link type="primary" @click="goToRegister">注册</el-link>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ </el-card>
|
|
|
|
|
|
|
|
+ <el-card v-else-if="pagechange === 'rePwdSuccess'" class="register-card" shadow="never">
|
|
|
|
+ <template #header>
|
|
|
|
+ <div class="register-header">
|
|
|
|
+ <img :src="loginLogo" alt="logo" class="login-logo"/>
|
|
|
|
+ <h2>找回密码成功!</h2>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ <div class="register-success">
|
|
|
|
+ <div style="font-size: 18px;">登录账号: </div>
|
|
|
|
+ <div style="font-size: 16px;">{{ registerForm.username }}</div>
|
|
|
|
+ <el-button
|
|
|
|
+ class="register-btn"
|
|
|
|
+ @click="goToLogin"
|
|
|
|
+ >
|
|
|
|
+ 立 即 登 录
|
|
|
|
+ </el-button>
|
|
|
|
+
|
|
|
|
+ <div class="register-footer">
|
|
|
|
+ <div class="login-prompt">5秒后,自动跳转至登录界面</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
</el-card>
|
|
</el-card>
|
|
|
|
+
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
@@ -72,6 +224,7 @@
|
|
<script setup>
|
|
<script setup>
|
|
import { ElMessage } from 'element-plus'
|
|
import { ElMessage } from 'element-plus'
|
|
import router from "@/router"
|
|
import router from "@/router"
|
|
|
|
+import { useRoute } from 'vue-router'
|
|
import { request,enPassword } from "@/utils/request"
|
|
import { request,enPassword } from "@/utils/request"
|
|
|
|
|
|
import { getToken, setToken, setUserId} from "@/utils/token"
|
|
import { getToken, setToken, setUserId} from "@/utils/token"
|
|
@@ -81,58 +234,170 @@ import loginLogo from '@/assets/img/login-logo.png'
|
|
// 表单引用
|
|
// 表单引用
|
|
const registerFormRef = ref(null)
|
|
const registerFormRef = ref(null)
|
|
|
|
|
|
|
|
+const registerlabel = ref(100)
|
|
|
|
+
|
|
|
|
+const route = useRoute()
|
|
|
|
+const pagechange = computed(()=> route.query.page )
|
|
|
|
+
|
|
|
|
+const timer = ref(null); // 存储定时器
|
|
|
|
+
|
|
|
|
+// 初始化验证码数组
|
|
|
|
+const codeLength = 6
|
|
|
|
+const codeList = ref(Array(codeLength).fill('')) // ['','','','','','']
|
|
|
|
+
|
|
|
|
+// 获取多个 el-input 的引用
|
|
|
|
+const inputRefs = ref([])
|
|
|
|
+
|
|
// 注册表单数据
|
|
// 注册表单数据
|
|
const registerForm = reactive({
|
|
const registerForm = reactive({
|
|
company: '',
|
|
company: '',
|
|
username: '',
|
|
username: '',
|
|
- password: ''
|
|
|
|
|
|
+ password: '',
|
|
|
|
+ repassword: ''
|
|
})
|
|
})
|
|
|
|
|
|
// 加载状态
|
|
// 加载状态
|
|
const loading = ref(false)
|
|
const loading = ref(false)
|
|
|
|
|
|
-const isverify = ref(false)
|
|
|
|
-
|
|
|
|
// 表单验证规则
|
|
// 表单验证规则
|
|
const registerRules = reactive({
|
|
const registerRules = reactive({
|
|
username: [
|
|
username: [
|
|
- { required: true, message: '请输入用户名', trigger: 'blur' },
|
|
|
|
- { min: 3, max: 18, message: '长度在 3 到 18 个字符', trigger: 'blur' }
|
|
|
|
|
|
+ { required: true, message: '', trigger: 'blur' },
|
|
|
|
+ {
|
|
|
|
+ pattern: /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/,
|
|
|
|
+ message: '请输入正确的邮箱格式',
|
|
|
|
+ trigger: 'blur'
|
|
|
|
+ },
|
|
|
|
+ { min: 1, max: 30, message: '长度在 1 到 30 个字符', trigger: 'blur' }
|
|
],
|
|
],
|
|
password: [
|
|
password: [
|
|
- { required: true, message: '请输入密码', trigger: 'blur' },
|
|
|
|
|
|
+ { required: true, message: '', trigger: 'blur' },
|
|
{ min: 6, max: 18, message: '长度在 6 到 18 个字符', trigger: 'blur' }
|
|
{ min: 6, max: 18, message: '长度在 6 到 18 个字符', trigger: 'blur' }
|
|
|
|
+ ],
|
|
|
|
+ repassword: [
|
|
|
|
+ { required: true, message: '', trigger: 'blur' },
|
|
|
|
+ { min: 6, max: 18, message: '长度在 6 到 18 个字符', trigger: 'blur' },
|
|
|
|
+ {
|
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
|
+ if (value !== registerForm.password) {
|
|
|
|
+ callback(new Error('两次输入的密码不一致'))
|
|
|
|
+ } else {
|
|
|
|
+ callback()
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ trigger: 'blur'
|
|
|
|
+ }
|
|
]
|
|
]
|
|
})
|
|
})
|
|
|
|
|
|
-// 滑动验证成功
|
|
|
|
-const verifySuccess = () => {
|
|
|
|
- isverify.value = true
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 输入时自动跳转到下一个
|
|
|
|
+const onInput = (index) => {
|
|
|
|
+ if (codeList.value[index].length === 1 && index < codeLength - 1) {
|
|
|
|
+ nextTick(() => inputRefs.value[index + 1]?.focus())
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 处理退格键自动跳转
|
|
|
|
+const onBackspace = (index, e) => {
|
|
|
|
+ if (codeList.value[index] === '' && index > 0) {
|
|
|
|
+ nextTick(() => inputRefs.value[index - 1]?.focus())
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+const onPaste = (event) => {
|
|
|
|
+ const paste = event.clipboardData?.getData('text') || ''
|
|
|
|
+ const chars = paste.replace(/\s+/g, '').slice(0, codeLength).split('')
|
|
|
|
+
|
|
|
|
+ chars.forEach((char, idx) => {
|
|
|
|
+ codeList.value[idx] = char
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ nextTick(() => {
|
|
|
|
+ const nextFocusIndex = chars.length >= codeLength ? codeLength - 1 : chars.length
|
|
|
|
+ inputRefs.value[nextFocusIndex]?.focus()
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ event.preventDefault()
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 获取验证码(注册)
|
|
|
|
+const getAuthCode = () => {
|
|
|
|
+ if(!registerForm.username) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ const params = {
|
|
|
|
+ transCode: "A00001",
|
|
|
|
+ mailOrPhone: registerForm.username,
|
|
|
|
+ type: '1',
|
|
|
|
+ channel: '2'
|
|
|
|
+ }
|
|
|
|
+ request(params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ ElMessage.error("获取验证码失败");
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+// 获取验证码(找回密码)
|
|
|
|
+const getAuthCode2 = () => {
|
|
|
|
+ if(!registerForm.username) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ const params = {
|
|
|
|
+ transCode: "A00001",
|
|
|
|
+ mailOrPhone: registerForm.username,
|
|
|
|
+ type: '2',
|
|
|
|
+ channel: '2'
|
|
|
|
+ }
|
|
|
|
+ request(params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ ElMessage.error("获取验证码失败");
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
|
|
// 注册方法
|
|
// 注册方法
|
|
const handleRegister = () => {
|
|
const handleRegister = () => {
|
|
registerFormRef.value.validate(valid => {
|
|
registerFormRef.value.validate(valid => {
|
|
if (!valid) return
|
|
if (!valid) return
|
|
|
|
+
|
|
|
|
+ // 判断验证码是否完整(每一位都不为空)
|
|
|
|
+ const code = codeList.value.join('')
|
|
|
|
+ const isCodeValid = codeList.value.every(c => c.trim() !== '')
|
|
|
|
+ if (!isCodeValid) {
|
|
|
|
+ ElMessage.warning("请输入完整的验证码")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
|
|
|
const params = {
|
|
const params = {
|
|
- transCode: "A00002",
|
|
|
|
- loginName: loginForm.username,
|
|
|
|
- password: enPassword(loginForm.password),
|
|
|
|
- type: "",
|
|
|
|
|
|
+ transCode: "A00003",
|
|
|
|
+ userName: registerForm.username,
|
|
|
|
+ password: enPassword(registerForm.password),
|
|
|
|
+ mailOrPhone: registerForm.username,
|
|
|
|
+ channel: "2",
|
|
|
|
+ verificationCode: code,
|
|
}
|
|
}
|
|
- console.log(params)
|
|
|
|
request(params)
|
|
request(params)
|
|
.then((res) => {
|
|
.then((res) => {
|
|
- setToken(res.clientToken)
|
|
|
|
- setUserId(res.userId)
|
|
|
|
- router.push({ path: "/" })
|
|
|
|
|
|
+ pagechange.value = 'registerSuccess';
|
|
|
|
+ loginTimer();
|
|
})
|
|
})
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
console.error('错误信息:',err);
|
|
console.error('错误信息:',err);
|
|
- ElMessage.error(err.returnMsg);
|
|
|
|
|
|
+ if(err.returnMsg==="验证码错误!"){
|
|
|
|
+ ElMessage.error(err.returnMsg);
|
|
|
|
+ }else {
|
|
|
|
+ ElMessage.error("注册失败");
|
|
|
|
+ }
|
|
loading.value = false;
|
|
loading.value = false;
|
|
})
|
|
})
|
|
.finally(() => {
|
|
.finally(() => {
|
|
@@ -142,9 +407,86 @@ const handleRegister = () => {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const loginTimer = () => {
|
|
|
|
+ // 先清除之前的定时器(避免重复)
|
|
|
|
+ if (timer.value) {
|
|
|
|
+ clearTimeout(timer.value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ timer.value = setTimeout(() => {
|
|
|
|
+ try {
|
|
|
|
+ goToLogin();
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.error('跳转登录失败:', error);
|
|
|
|
+ }
|
|
|
|
+ }, 5000);
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+
|
|
const goToLogin = () => {
|
|
const goToLogin = () => {
|
|
|
|
+ if (timer.value) {
|
|
|
|
+ clearTimeout(timer.value); // 跳转前清除定时器
|
|
|
|
+ timer.value = null;
|
|
|
|
+ }
|
|
router.push({ path: '/login' })
|
|
router.push({ path: '/login' })
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+const goToRegister = () => {
|
|
|
|
+ registerFormRef.value?.resetFields();
|
|
|
|
+ codeList.value = ['', '', '', '', '', '']
|
|
|
|
+
|
|
|
|
+ router.push({ path: "/register", query:{ page: 'register' } })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 找回密码
|
|
|
|
+const handleRePwd = () => {
|
|
|
|
+ registerFormRef.value.validate(valid => {
|
|
|
|
+ if (!valid) return
|
|
|
|
+
|
|
|
|
+ // 判断验证码是否完整(每一位都不为空)
|
|
|
|
+ const code = codeList.value.join('')
|
|
|
|
+ const isCodeValid = codeList.value.every(c => c.trim() !== '')
|
|
|
|
+ if (!isCodeValid) {
|
|
|
|
+ ElMessage.warning("请输入完整的验证码")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ loading.value = true
|
|
|
|
+
|
|
|
|
+ const params = {
|
|
|
|
+ transCode: "B00026",
|
|
|
|
+ newPassword: enPassword(registerForm.password),
|
|
|
|
+ mailOrPhone: registerForm.username,
|
|
|
|
+ verificationCode: code,
|
|
|
|
+ }
|
|
|
|
+ request(params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+ router.push({ path: "/register", query:{ page: 'rePwdSuccess' } })
|
|
|
|
+ loginTimer();
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ console.error('错误信息:',err);
|
|
|
|
+ if(err.returnMsg==="验证码错误!"){
|
|
|
|
+ ElMessage.error(err.returnMsg);
|
|
|
|
+ }else {
|
|
|
|
+ ElMessage.error("找回密码失败");
|
|
|
|
+ }
|
|
|
|
+ loading.value = false;
|
|
|
|
+ })
|
|
|
|
+ .finally(() => {
|
|
|
|
+ loading.value = false
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 组件卸载时清除定时器
|
|
|
|
+onUnmounted(() => {
|
|
|
|
+ if (timer.value) {
|
|
|
|
+ clearTimeout(timer.value);
|
|
|
|
+ }
|
|
|
|
+});
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
@@ -152,7 +494,7 @@ const goToLogin = () => {
|
|
position: relative;
|
|
position: relative;
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100vh;
|
|
height: 100vh;
|
|
- min-width: 1200px;
|
|
|
|
|
|
+ min-width: 1500px;
|
|
min-height: 600px;
|
|
min-height: 600px;
|
|
overflow: auto;
|
|
overflow: auto;
|
|
}
|
|
}
|
|
@@ -203,7 +545,7 @@ const goToLogin = () => {
|
|
|
|
|
|
// 设置输入框文字大小
|
|
// 设置输入框文字大小
|
|
:deep(.el-input__inner) {
|
|
:deep(.el-input__inner) {
|
|
- font-size: 18px;
|
|
|
|
|
|
+ font-size: 16px;
|
|
height: 42px; /* 可选:调整输入框高度 */
|
|
height: 42px; /* 可选:调整输入框高度 */
|
|
line-height: 42px; /* 保持垂直居中 */
|
|
line-height: 42px; /* 保持垂直居中 */
|
|
}
|
|
}
|
|
@@ -245,6 +587,7 @@ const goToLogin = () => {
|
|
height: 42px;
|
|
height: 42px;
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
|
+ color: white;
|
|
background-color: #2267B1;
|
|
background-color: #2267B1;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -258,4 +601,33 @@ const goToLogin = () => {
|
|
margin-right: 5px;
|
|
margin-right: 5px;
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+.authcode {
|
|
|
|
+ display: flex;
|
|
|
|
+ gap: 10px;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.authcode .el-button {
|
|
|
|
+ height: 42px;
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ color: white;
|
|
|
|
+ background-color: #2267B1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.register-success {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ gap: 30px;
|
|
|
|
+
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ color: #333333;
|
|
|
|
+ letter-spacing: 1px;
|
|
|
|
+ text-align: left;
|
|
|
|
+ font-style: normal;
|
|
|
|
+ text-transform: none;
|
|
|
|
+}
|
|
|
|
+
|
|
</style>
|
|
</style>
|