You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.2 KiB
73 lines
2.2 KiB
<!--登录-->
|
|
<template>
|
|
<el-row justify="center" type="flex">
|
|
<el-col :span="8"><h1>后台登陆</h1></el-col>
|
|
</el-row>
|
|
<el-row justify="center" type="flex">
|
|
<el-col :span="8">
|
|
<el-input v-model="user">
|
|
<template v-slot:prepend>管理员邮箱</template>
|
|
</el-input>
|
|
<span v-if="user===''">邮箱不能为空</span>
|
|
<span v-else-if="!checkUser">邮箱不合法</span>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row type="flex" justify="center" class="mt-1">
|
|
<el-col :span="8">
|
|
<span>密码必须包含数字、字母,6-10位</span>
|
|
<el-input v-model="password" show-password>
|
|
<template v-slot:prepend>密码</template>
|
|
</el-input>
|
|
<span v-if="password===''">密码不能为空</span>
|
|
<span v-else-if="!checkPwd">密码不合法</span>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row type="flex" justify="center" class="mt-1">
|
|
<el-col :span="8">
|
|
<el-button type="primary" class="btn-block" :disabled="user===''||password===''" @click="requestLogin">登录
|
|
</el-button>
|
|
</el-col>
|
|
</el-row>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import {computed, defineComponent, ref} from "vue";
|
|
import {emailRegexp, passwordRegexp} from "../validate";
|
|
import {JSONResponse, login, message} from "../request";
|
|
//@ts-ignore
|
|
import crumbs from 'crumbsjs';
|
|
import {useRouter} from "vue-router";
|
|
import {email_cookie_key, token_cookie_key} from "../global";
|
|
|
|
export default defineComponent({
|
|
name: "Login",
|
|
setup() {
|
|
const user = ref<string>('')
|
|
const password = ref<string>('')
|
|
|
|
const checkUser = computed<boolean>(() => emailRegexp.test(user.value))
|
|
|
|
const checkPwd = computed<boolean>(() => passwordRegexp.test(password.value))
|
|
|
|
const router = useRouter()
|
|
|
|
const requestLogin = () => {
|
|
login(user.value, password.value).then(res => res.json())
|
|
.then((res: JSONResponse) => {
|
|
message(res)
|
|
if (res.result === 'OK') {
|
|
crumbs.set(token_cookie_key, res.body.token)
|
|
crumbs.set(email_cookie_key, res.body.userEmail)
|
|
router.replace('/')
|
|
}
|
|
})
|
|
}
|
|
|
|
return {user, password, checkUser, checkPwd, requestLogin}
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
</style> |