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.
 
 
 
 
 
bililive_webapp/src/components/ManagerLogin.vue

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>