添加请求内容~

This commit is contained in:
闵宪瑞 2025-01-08 21:55:41 +08:00
parent b61d6d81e7
commit 34b5c7fa1d
6 changed files with 78 additions and 60 deletions

1
.env
View File

@ -3,6 +3,7 @@
VITE_API_FRONT_BASE_URL = http://localhost:18081
#后端接口
VITE_ADMIN_API_BASE_URL = http://localhost:18080
VITE_LOGIN_BG = "/login/e36341619bf8f04dcbdc6b01105a85a.png"
# 标题

View File

@ -15,13 +15,7 @@ export function captchaAdmin(uid: Number) {
*
* @param data
*/
export function loginAdmin(uuid:String,username:String, password:String,captcha:String) {
const data ={
"username": username,
"password": password,
"captcha": captcha,
"uuid": uuid
}
export function loginAdmin(data: any) {
return adminRequest.post("/login", data)
}
/**

View File

@ -3,7 +3,6 @@
<div class="head_l">
<!-- <img src="/icoimg.png" alt="收缩" />-->
</div>
<el-dropdown>
<div class="head_r">
<img :src="userStore().adminUserInfo.avatar" alt="头像" class="profile" />
@ -24,6 +23,10 @@
<script setup lang="ts">
import { useRouter } from "vue-router";
const router = useRouter();
/**
* 退出登录
*/
@ -70,6 +73,7 @@ const logout = () => {
}
.head_user{
.head_user_name{
margin-top: 10px;
color: #333333;
font-size: 14px;
font-weight: 500;

View File

@ -24,24 +24,19 @@ adminRequest.interceptors.request.use(
// 添加响应拦截器
adminRequest.interceptors.response.use(
function (response) {
if (response.data.code){
const code = response.data.code
switch (code) {
case 500:
toast.error(response.data.msg)
break
return Promise.reject(response.data.msg)
case 401:
toast.error(response.data.msg)
break
return Promise.reject(response.data.msg)
default:
toast.error(response.data.msg)
break
return response
}
}
if (response.data) {
return response.data
}
return response
},
function (error) {

View File

@ -1,45 +1,72 @@
<template>
<div class="login-container">
<div class="module">
<img src="/loginimg.jpg" class="module_img" />
<div class="module_r">
<div class="module_mian">
<div class="module_title">登录帐户</div>
<div class="module_desc">输入用户名 & 登录密码</div>
<div class="module_m">
<div class="module_text">用户名</div>
<input class="module_input" type="text" placeholder="输入用户名" v-model="Email" />
</div>
<div class="module_m">
<div class="module_text">密码</div>
<input class="module_input" type="password" placeholder="输入密码" v-model="Password" />
</div>
<div class="module_m">
<div class="module_text">验证码</div>
<div class="module_code">
<input class="module_code_input" type="text" placeholder="输入验证码" v-model="vftcode" />
<img class="module_code_img" :src="state.captchaUrl" @click="onCode">
</div>
</div>
<!-- <div class="module_radio"><input type="radio"/>记住密码 </div>-->
<div class="forgetpwd" @click="router.push('/register')">没有密码吗</div>
<button class="module_button">登录</button>
<div class="module">
<img src="/loginimg.jpg" class="module_img" />
<div class="module_r">
<div class="module_mian">
<div class="module_title">登录帐户</div>
<div class="module_desc">输入用户名 & 登录密码</div>
<div class="module_m">
<div class="module_text">用户名</div>
<input class="module_input" type="text" placeholder="输入用户名" v-model="login.username" />
</div>
<div class="module_m">
<div class="module_text">密码</div>
<input class="module_input" type="password" placeholder="输入密码" v-model="login.password" />
</div>
<div class="module_m">
<div class="module_text">验证码</div>
<div class="module_code">
<input class="module_code_input" type="text" placeholder="输入验证码" v-model="login.captcha" />
<img class="module_code_img" :src="state.captchaUrl" @click="getCaptcha">
</div>
</div>
<!-- <div class="module_radio"><input type="radio"/>记住密码 </div>-->
<!-- <div class="forgetpwd" @click="router.push('/register')">没有密码吗</div>-->
<button class="module_button" :disabled="state.loading" @click="onLogin">登录</button>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { useRouter } from "vue-router";
import { loginAdmin } from '~/api/user/adminUserApi'
import { getUuid } from '~/utils/utils'
const router = useRouter();
const state = reactive({
captchaUrl: '',
loginFrom: {}
loginFrom: {},
loading: false,
})
const login = reactive({ username: '18796357645', password: '18796357645', captcha: '', uuid: '' })
function init() {
const login = reactive({ username: 'admin', password: 'admin', captcha: '', uuid: '' })
const onLogin = () => {
state.loading = true;
loginAdmin(login).then(response =>{
state.loading = false;
ElMessage.success("登录成功");
userStore().isLogin = true
userStore().adminToken = response.data.token
router.push("/")
}).catch(()=>{
state.loading = false;
onRefreshCode()
})
}
init()
/**
* 获取验证码
*/
const getCaptchaUrl = () => {
login.uuid = getUuid()
login.captcha = ""
state.captchaUrl = import.meta.env.VITE_ADMIN_API_BASE_URL + `/captcha?uuid=${login.uuid}`
};
const onRefreshCode = () => {
getCaptchaUrl();
};
onMounted(()=>{
getCaptchaUrl();
})
</script>
<style scoped>
@ -124,18 +151,11 @@ init()
height: 40px;
border-radius: 5px;
margin-left: 10px;
cursor: pointer;
}
}
}
.module_radio{
margin: 0 auto;
width: 80%;
font-size: 14px;
color: #333333;
display: flex;
align-items: center;
margin-top: 10px;
}
.module_radio input{
margin-right: 5px;
}

View File

@ -19,20 +19,24 @@ export const getFrontList = () => {
},
{
"path": "/",
"name": "首页",
"icon": "House",
"name": "时间维度",
"icon": "DataAnalysis",
},
{
"path": "/",
"name": "首页",
"icon": "House",
"name": "地域维度",
"icon": "DataAnalysis",
},
{
"path": "/",
"name": "首页",
"icon": "House",
"name": "客户维度",
"icon": "DataAnalysis",
},
{
"path": "/",
"name": "销售收入维度",
"icon": "DataAnalysis",
},
]
return routes;