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.
68 lines
2.0 KiB
68 lines
2.0 KiB
<!--登录-->
|
|
<template>
|
|
<User/>
|
|
<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="!(checkUser&&checkPwd)" @click="requestLogin">登录
|
|
</el-button>
|
|
</el-col>
|
|
</el-row>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import {computed, defineComponent, provide, Ref, 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, manager_token_key} from "../global";
|
|
import User from "./User.vue";
|
|
import {configPath} from "../router";
|
|
import {managerLoginApi} from "../interface";
|
|
|
|
export default defineComponent({
|
|
name: "ManagerLogin",
|
|
components: {User},
|
|
setup() {
|
|
const user = ref<string>('')
|
|
const password = ref<string>('')
|
|
|
|
const checkUser = computed<boolean>(() => emailRegexp.test(user.value))
|
|
|
|
provide<Ref<string>>('user', user)
|
|
|
|
const checkPwd = computed<boolean>(() => passwordRegexp.test(password.value))
|
|
|
|
const router = useRouter()
|
|
|
|
const requestLogin = () => {
|
|
login(managerLoginApi, user.value, password.value).then(res => res.json())
|
|
.then((res: JSONResponse) => {
|
|
message(res)
|
|
if (res.result === 'OK') {
|
|
crumbs.set(manager_token_key, res.body.token)
|
|
crumbs.set(email_cookie_key, res.body.userEmail)
|
|
router.replace(configPath)
|
|
}
|
|
})
|
|
}
|
|
|
|
return {user, password, checkPwd, requestLogin, checkUser}
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
</style> |