Zlpt_Portal/src/views/Login.vue

245 lines
7.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
import { loginApi, getUserInfoAPI } from 'http/api/login/index'
import { ElMessage } from 'element-plus'
import { User, Lock } from '@element-plus/icons-vue'
import { useRoute, useRouter } from 'vue-router'
import { mainStore } from 'store/main'
import { useStore } from 'store/user'
const userStore = mainStore()
const store = useStore()
const router = useRouter()
const route: any = useRoute()
const rememberPassword = ref<Boolean>(false)
const loginForm = ref({
username: localStorage.getItem('username') || '',
password: localStorage.getItem('password') || '',
loginType: 'USERNAME_PASSWORD',
code: '',
phoneUuid: '',
uuid: '',
verificationCode: '',
})
if (localStorage.getItem('username') && localStorage.getItem('password')) {
rememberPassword.value = true
}
const handlerLogin = async () => {
const res: any = await loginApi(loginForm.value)
console.log('登录成功**', res)
if (res.code === 200) {
userStore.setToken(res.data.access_token)
const result: any = await getUserInfoAPI()
console.log(result, '用户信息')
ElMessage({
showClose: true,
message: '登录成功',
type: 'success',
})
userStore.setUserInfo(result.user)
if (rememberPassword.value) {
localStorage.setItem('username', loginForm.value.username)
localStorage.setItem('password', loginForm.value.password)
} else {
localStorage.setItem('username', '')
localStorage.setItem('password', '')
}
// userStore.setToken(res.data.access_token);
// if (res.data.user) {
// userStore.setUserInfo(res.data.user);
// } else {
// userStore.setUserInfo({
// phonenumber: "",
// companyName: "",
// logoUrl:
// "https://zlpt-1259760603.cos.ap-nanjing.myqcloud.com/2023/12/09/815629f192564db98ac55a643b46f853gouwu.png",
// });
// }
localStorage.setItem('rolesType', '1')
store.editcurrentMenuItem('goodsManagement')
// 跳转登录页面
if (route.query && route.query.redirect) {
router.push(decodeURIComponent(route.query.redirect))
} else {
router.push('/home')
}
}
}
</script>
<template>
<div class="login-container">
<div class="login-form">
<h3>机械化装备共享平台</h3>
<div class="form-container">
<!-- <div class="login-type">
<div class="active">账号登录</div>
<div>手机登录</div>
</div> -->
<el-form>
<el-form-item>
<h3 style="margin: 0; font-size: 20px">您好欢迎登录</h3>
</el-form-item>
<el-form-item>
<el-input
:prefix-icon="User"
v-model.trim="loginForm.username"
placeholder="请输入账号"
clearable
/>
</el-form-item>
<el-form-item>
<el-input
:prefix-icon="Lock"
v-model.trim="loginForm.password"
placeholder="请输入密码"
clearable
type="password"
show-password
/>
</el-form-item>
<el-form-item>
<div class="remember-me">
<el-checkbox size="large" v-model="rememberPassword">
记住密码
</el-checkbox>
<a href="#">忘记密码</a>
</div>
</el-form-item>
<el-form-item>
<!-- <el-button
style="background-color: #009a91; padding: 20px 0"
type="primary"
@click="handlerLogin"
> </el-button
> -->
<el-button
style="padding: 20px 0"
class="primary-lease"
type="primary"
@click="handlerLogin"
> </el-button
>
</el-form-item>
<!-- <el-form-item class="forget-password">
<a href=""></a>
<a
style="cursor: pointer"
@click="$router.push('/register')"
>立即注册</a
>
</el-form-item> -->
</el-form>
</div>
</div>
</div>
</template>
<style lang="scss">
.login-container {
height: 100vh;
background-color: #125ab6;
display: flex;
align-items: center;
justify-content: center;
background: url('../assets/img/login_bg.png') no-repeat;
background-size: cover;
.login-form {
width: 500px;
// height: 360px;
display: flex;
flex-direction: column;
h3 {
color: #006461;
font-size: 26px;
font-weight: bold;
text-align: center;
margin-bottom: 26px;
letter-spacing: 2px;
}
.form-container {
flex: 1;
display: flex;
flex-direction: column;
background-color: #fff;
border-radius: 5px;
.login-type {
height: 40px;
margin-bottom: 40px;
display: flex;
color: #333;
div {
flex: 1;
height: 40px;
text-align: center;
line-height: 40px;
&:hover {
cursor: pointer;
}
}
.active {
color: #3498db;
border-bottom: 1px solid #3498db;
}
}
.el-form {
padding: 30px 50px 0;
.el-input {
height: 47px;
}
.el-button {
width: 100%;
height: 37px;
}
.forget-password {
margin-bottom: 0;
}
.forget-password .el-form-item__content {
display: flex;
align-items: center;
justify-content: space-between;
}
.el-input .el-input__icon {
font-size: 18px;
color: #009a91;
}
}
.remember-me {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
a {
color: var(--el-text-color-regular);
}
a:hover {
color: #009a91;
}
}
}
}
}
</style>