|
@@ -28,7 +28,7 @@
|
|
|
placeholder="请输入验证码"
|
|
placeholder="请输入验证码"
|
|
|
>
|
|
>
|
|
|
<template #suffix>
|
|
<template #suffix>
|
|
|
- <el-button type="text" @click="getCode" :disabled="isStart">
|
|
|
|
|
|
|
+ <el-button type="text" @click="sendLoginVerifyCode" :disabled="isStart">
|
|
|
{{ isStart ? countdown : '获取验证码' }}
|
|
{{ isStart ? countdown : '获取验证码' }}
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</template>
|
|
</template>
|
|
@@ -42,9 +42,9 @@
|
|
|
/>
|
|
/>
|
|
|
</template>
|
|
</template>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <div class="forget">忘记密码?</div>
|
|
|
|
|
|
|
+ <div class="forget" @click="toPasswordChange">忘记密码?</div>
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
- <el-button class="login-button" @click="handleLogin">用户登录</el-button>
|
|
|
|
|
|
|
+ <el-button class="login-button" @click="handleLogin(form)">用户登录</el-button>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<div class="sign" @click="onClickSign">注册账号</div>
|
|
<div class="sign" @click="onClickSign">注册账号</div>
|
|
|
</el-form>
|
|
</el-form>
|
|
@@ -59,7 +59,7 @@
|
|
|
import router from "@/router";
|
|
import router from "@/router";
|
|
|
import { useCountdown } from '@/hooks/useCountdown';
|
|
import { useCountdown } from '@/hooks/useCountdown';
|
|
|
import "./index.scss"
|
|
import "./index.scss"
|
|
|
- import { ElMessage } from 'element-plus';
|
|
|
|
|
|
|
+ import { ElMessage, type FormInstance, type FormRules } from 'element-plus';
|
|
|
|
|
|
|
|
|
|
|
|
|
interface LoginProps {
|
|
interface LoginProps {
|
|
@@ -96,6 +96,7 @@
|
|
|
code: '',
|
|
code: '',
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ const form = ref<FormInstance>()
|
|
|
const rules = reactive({
|
|
const rules = reactive({
|
|
|
officialNumber: [
|
|
officialNumber: [
|
|
|
{ required: true, message: props.isCode ? '邮箱不能为空' : '账号不能为空', trigger: 'blur' },
|
|
{ required: true, message: props.isCode ? '邮箱不能为空' : '账号不能为空', trigger: 'blur' },
|
|
@@ -105,44 +106,40 @@
|
|
|
],
|
|
],
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- const getCode = () => {
|
|
|
|
|
|
|
+ const sendLoginVerifyCode = () => {
|
|
|
start();
|
|
start();
|
|
|
props.onCode?.();
|
|
props.onCode?.();
|
|
|
|
|
|
|
|
- console.log('获取验证码');
|
|
|
|
|
apis.sendLoginVerifyCode(data.officialNumber)
|
|
apis.sendLoginVerifyCode(data.officialNumber)
|
|
|
.then((res: any) => {
|
|
.then((res: any) => {
|
|
|
if (res.data.code === 200) {
|
|
if (res.data.code === 200) {
|
|
|
- ElMessage({
|
|
|
|
|
- message: '验证码发送成功,请前往您的邮箱查看',
|
|
|
|
|
- type: 'success',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '验证码发送成功,请前往您的邮箱查看', type: 'success'})
|
|
|
} else {
|
|
} else {
|
|
|
- ElMessage({
|
|
|
|
|
- message: '验证码发送失败' + res.data.msg,
|
|
|
|
|
- // message: '验证码发送失败',
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '验证码发送失败',type: 'error'})
|
|
|
|
|
+ console.log(res.data.msg)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
.catch((err: any) => {
|
|
.catch((err: any) => {
|
|
|
- ElMessage({
|
|
|
|
|
- message: '验证码发送失败',
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '验证码发送失败',type: 'error'})
|
|
|
console.log(err)
|
|
console.log(err)
|
|
|
})
|
|
})
|
|
|
- .finally(() => {
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ .finally(() => {});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
let assignmentId = ref(1)
|
|
let assignmentId = ref(1)
|
|
|
- const handleLogin = () => {
|
|
|
|
|
- if(!props.isCode) {
|
|
|
|
|
- login()
|
|
|
|
|
- } else {
|
|
|
|
|
- loginByEmail()
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const handleLogin = async (formEl: FormInstance | undefined) => {
|
|
|
|
|
+ if (!formEl) return
|
|
|
|
|
+ await formEl.validate((valid, fields) => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ if(!props.isCode) {
|
|
|
|
|
+ login()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ loginByEmail()
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ElMessage({message: '请将信息填写完整',type: 'warning'})
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const login = () => {
|
|
const login = () => {
|
|
@@ -151,7 +148,6 @@
|
|
|
password: data.password
|
|
password: data.password
|
|
|
}).then((_res:any) => {
|
|
}).then((_res:any) => {
|
|
|
const data = _res.data.data
|
|
const data = _res.data.data
|
|
|
- console.log(_res.data)
|
|
|
|
|
if (_res.data.code === 200) {
|
|
if (_res.data.code === 200) {
|
|
|
store.setUser(data);
|
|
store.setUser(data);
|
|
|
store.setToken(data?.token)
|
|
store.setToken(data?.token)
|
|
@@ -159,16 +155,10 @@
|
|
|
localStorage.setItem('User', data);
|
|
localStorage.setItem('User', data);
|
|
|
router.push(`/home`)
|
|
router.push(`/home`)
|
|
|
} else if(_res.data.code === 400){
|
|
} else if(_res.data.code === 400){
|
|
|
- ElMessage({
|
|
|
|
|
- message: '用户名或密码错误',
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '用户名或密码错误', type: 'error'})
|
|
|
}
|
|
}
|
|
|
}).catch((_err:any) => {
|
|
}).catch((_err:any) => {
|
|
|
- ElMessage({
|
|
|
|
|
- message: '网络错误',
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '网络错误', type: 'error'})
|
|
|
console.log("登陆失败", _err)
|
|
console.log("登陆失败", _err)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -186,16 +176,10 @@
|
|
|
localStorage.setItem('User', data);
|
|
localStorage.setItem('User', data);
|
|
|
router.push(`/home`)
|
|
router.push(`/home`)
|
|
|
} else if(_res.data.code === 400){
|
|
} else if(_res.data.code === 400){
|
|
|
- ElMessage({
|
|
|
|
|
- message: '邮箱或验证码错误' + _res.data.msg,
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '邮箱或验证码错误' + _res.data.msg, type: 'error'})
|
|
|
}
|
|
}
|
|
|
}).catch((_err:any) => {
|
|
}).catch((_err:any) => {
|
|
|
- ElMessage({
|
|
|
|
|
- message: '网络错误',
|
|
|
|
|
- type: 'error',
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ ElMessage({message: '网络错误', type: 'error'})
|
|
|
console.log("登陆失败", _err)
|
|
console.log("登陆失败", _err)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -204,6 +188,10 @@
|
|
|
router.push('/register');
|
|
router.push('/register');
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ const toPasswordChange = () => {
|
|
|
|
|
+ router.push('/passwordChange');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<script lang="ts">
|
|
<script lang="ts">
|