2024-01-07 18:14:35 +08:00
|
|
|
<template>
|
|
|
|
|
<el-row class="loginPage">
|
|
|
|
|
<!-- element-plus login form -->
|
|
|
|
|
<el-form
|
|
|
|
|
ref="form"
|
|
|
|
|
size="large"
|
|
|
|
|
autocomplete="false"
|
|
|
|
|
:model="loginData"
|
|
|
|
|
:rules="rules"
|
|
|
|
|
v-if="isLogin === true"
|
|
|
|
|
>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<h1>登录</h1>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item prop="username">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请输入用户名或邮箱"
|
|
|
|
|
v-model="loginData.username"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item prop="password">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请输入密码"
|
|
|
|
|
type="password"
|
|
|
|
|
v-model="loginData.password"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button
|
|
|
|
|
class="button"
|
|
|
|
|
type="primary"
|
|
|
|
|
auto-insert-space
|
|
|
|
|
@click="login"
|
|
|
|
|
>登录</el-button
|
|
|
|
|
>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item class="flex">
|
|
|
|
|
<el-link @click="isLogin = false"> 注册 </el-link>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<!-- element-plus register form -->
|
|
|
|
|
<el-form
|
|
|
|
|
ref="form"
|
|
|
|
|
size="large"
|
|
|
|
|
autocomplete="false"
|
|
|
|
|
:model="registerData"
|
|
|
|
|
:rules="rules"
|
|
|
|
|
v-if="isLogin === false"
|
|
|
|
|
>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<h1>注册</h1>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item prop="username">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请输入用户名"
|
|
|
|
|
v-model="registerData.username"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item prop="email">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请输入邮箱"
|
|
|
|
|
v-model="registerData.email"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item prop="password">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请输入密码"
|
|
|
|
|
type="password"
|
|
|
|
|
v-model="registerData.password"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item prop="password">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请再次输入密码"
|
|
|
|
|
type="password"
|
|
|
|
|
v-model="registerData.repassword"
|
|
|
|
|
></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" auto-insert-space>注册</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item class="flex">
|
|
|
|
|
<el-link @click="isLogin = true"> 返回 </el-link>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-row>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2024-01-10 17:11:39 +08:00
|
|
|
import { ref, inject } from "vue";
|
2024-01-07 18:14:35 +08:00
|
|
|
import axios from "axios";
|
|
|
|
|
import { loginService, registerService } from "@/api/user.js";
|
|
|
|
|
import router from "@/router/index.js";
|
|
|
|
|
const isLogin = ref(true);
|
2024-01-10 17:11:39 +08:00
|
|
|
if (localStorage.getItem("token") !== null) {
|
|
|
|
|
router.push("/videoList");
|
|
|
|
|
}
|
2024-01-07 18:14:35 +08:00
|
|
|
|
2024-01-10 17:11:39 +08:00
|
|
|
const globalData = inject("globalData");
|
2024-01-09 15:40:09 +08:00
|
|
|
|
2024-04-19 19:34:39 +08:00
|
|
|
var loginData = ref({
|
2024-01-07 18:14:35 +08:00
|
|
|
username: "",
|
|
|
|
|
email: "lijun.lj@foxmail.com",
|
|
|
|
|
password: "",
|
2024-04-19 19:34:39 +08:00
|
|
|
ip:"",
|
2024-01-07 18:14:35 +08:00
|
|
|
});
|
|
|
|
|
const registerData = ref({
|
|
|
|
|
username: "",
|
|
|
|
|
email: "",
|
|
|
|
|
password: "",
|
|
|
|
|
repassword: "",
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//表单校验规则
|
|
|
|
|
const rules = {
|
|
|
|
|
password: [
|
|
|
|
|
{ required: true, message: "请输入密码", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
min: 6,
|
|
|
|
|
max: 20,
|
|
|
|
|
message: "密码长度在 6 到 20 个字符",
|
|
|
|
|
trigger: "blur",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
username: [
|
|
|
|
|
{ required: true, message: "请输入用户名", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
min: 5,
|
|
|
|
|
max: 20,
|
|
|
|
|
message: "用户名长度在 6 到 20 个字符",
|
|
|
|
|
trigger: "blur",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
email: [{}],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//登录接口调用
|
|
|
|
|
const login = async () => {
|
|
|
|
|
// let req = axios.create({
|
|
|
|
|
// baseURL: "/api",
|
|
|
|
|
// timeout: 5000,
|
|
|
|
|
// });
|
|
|
|
|
// await req
|
|
|
|
|
// .post("/user/login", {
|
|
|
|
|
// email: loginData.value.username,
|
|
|
|
|
// password: loginData.value.password,
|
|
|
|
|
// })
|
|
|
|
|
// .then((response) => {
|
|
|
|
|
// alert(response.data.message);
|
|
|
|
|
// resp = response.data;
|
|
|
|
|
// jwt = resp.data;
|
|
|
|
|
// console.log(jwt);
|
|
|
|
|
// })
|
|
|
|
|
// .catch((error) => {
|
|
|
|
|
// console.error(error);
|
|
|
|
|
// });
|
|
|
|
|
let result = await loginService(loginData.value);
|
2024-01-09 15:40:09 +08:00
|
|
|
globalData.token = result.data;
|
2024-01-10 17:11:39 +08:00
|
|
|
localStorage.setItem("token", result.data.token);
|
|
|
|
|
localStorage.setItem("userId", result.data.id);
|
|
|
|
|
localStorage.setItem("username", result.data.username);
|
2024-04-19 19:34:39 +08:00
|
|
|
let now=new Date();
|
|
|
|
|
localStorage.setItem("end_time", now.setDate(now.getHours() + 12));//过期时间
|
2024-01-09 15:40:09 +08:00
|
|
|
//token.value= result.data;
|
|
|
|
|
router.push("/videoList");
|
2024-01-07 18:14:35 +08:00
|
|
|
};
|
2024-04-19 19:34:39 +08:00
|
|
|
const getIpClient= async() => {
|
|
|
|
|
try {
|
|
|
|
|
const response = await axios.get("https://ipinfo.io/json");
|
|
|
|
|
loginData.value.ip =response.data.ip;
|
2024-05-08 19:58:21 +08:00
|
|
|
localStorage.setItem("ip", response.data.ip);
|
|
|
|
|
localStorage.setItem("city", response.data.city);
|
2024-04-19 19:34:39 +08:00
|
|
|
// console.log("ip:",response.data.ip);
|
|
|
|
|
// console.log("login ip:",loginData.ip);
|
|
|
|
|
// console.log(response.data);
|
|
|
|
|
// console.log(loginData);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
getIpClient();
|
2024-01-07 18:14:35 +08:00
|
|
|
const register = async () => {
|
|
|
|
|
let result = registerService(registerData.value);
|
|
|
|
|
if (result.code === 0) {
|
|
|
|
|
alert(result.message);
|
|
|
|
|
} else {
|
|
|
|
|
alert(result.message);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|