Zlpt_Portal/src/views/Login.vue

245 lines
7.4 KiB
Vue
Raw Normal View History

2023-12-04 10:33:27 +08:00
<script setup lang="ts">
2024-11-22 15:35:30 +08:00
import { loginApi, getUserInfoAPI } from 'http/api/login/index'
2023-12-11 17:24:59 +08:00
import { ElMessage } from 'element-plus'
2024-11-22 15:35:30 +08:00
import { User, Lock } from '@element-plus/icons-vue'
2023-12-11 17:24:59 +08:00
import { useRoute, useRouter } from 'vue-router'
import { mainStore } from 'store/main'
2024-12-04 12:10:50 +08:00
import { useStore } from 'store/user'
2023-12-11 17:24:59 +08:00
const userStore = mainStore()
2024-12-04 12:10:50 +08:00
const store = useStore()
2023-12-11 17:24:59 +08:00
const router = useRouter()
2024-11-22 15:35:30 +08:00
const route: any = useRoute()
const rememberPassword = ref<Boolean>(false)
2023-12-11 17:24:59 +08:00
const loginForm = ref({
2024-11-22 15:35:30 +08:00
username: localStorage.getItem('username') || '',
password: localStorage.getItem('password') || '',
loginType: 'USERNAME_PASSWORD',
code: '',
phoneUuid: '',
uuid: '',
verificationCode: '',
2023-12-11 17:24:59 +08:00
})
2024-11-22 15:35:30 +08:00
if (localStorage.getItem('username') && localStorage.getItem('password')) {
rememberPassword.value = true
}
2023-12-11 17:24:59 +08:00
const handlerLogin = async () => {
const res: any = await loginApi(loginForm.value)
console.log('登录成功**', res)
if (res.code === 200) {
2024-11-22 15:35:30 +08:00
userStore.setToken(res.data.access_token)
const result: any = await getUserInfoAPI()
console.log(result, '用户信息')
2023-12-11 17:24:59 +08:00
ElMessage({
showClose: true,
message: '登录成功',
2024-11-22 15:35:30 +08:00
type: 'success',
2023-12-11 17:24:59 +08:00
})
2024-11-22 15:35:30 +08:00
userStore.setUserInfo(result.user)
if (rememberPassword.value) {
localStorage.setItem('username', loginForm.value.username)
localStorage.setItem('password', loginForm.value.password)
2023-12-10 01:43:50 +08:00
} else {
2024-11-22 15:35:30 +08:00
localStorage.setItem('username', '')
localStorage.setItem('password', '')
2023-12-10 01:43:50 +08:00
}
2024-11-22 15:35:30 +08:00
// 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",
// });
// }
2024-11-27 18:22:35 +08:00
localStorage.setItem('rolesType', '1')
2024-12-04 12:10:50 +08:00
store.editcurrentMenuItem('goodsManagement')
2023-12-04 13:10:38 +08:00
// 跳转登录页面
2023-12-10 01:43:50 +08:00
if (route.query && route.query.redirect) {
2023-12-09 18:34:56 +08:00
router.push(decodeURIComponent(route.query.redirect))
2023-12-10 01:43:50 +08:00
} else {
2023-12-09 18:34:56 +08:00
router.push('/home')
}
2023-12-04 10:33:27 +08:00
}
2023-12-11 17:24:59 +08:00
}
2023-12-04 10:33:27 +08:00
</script>
2023-12-04 09:12:38 +08:00
<template>
2023-12-04 10:33:27 +08:00
<div class="login-container">
<div class="login-form">
2024-11-22 15:35:30 +08:00
<h3>机械化装备共享平台</h3>
2023-12-04 10:33:27 +08:00
<div class="form-container">
2024-11-22 15:35:30 +08:00
<!-- <div class="login-type">
2023-12-04 10:33:27 +08:00
<div class="active">账号登录</div>
<div>手机登录</div>
2024-11-22 15:35:30 +08:00
</div> -->
2023-12-04 10:33:27 +08:00
<el-form>
<el-form-item>
2024-11-22 15:35:30 +08:00
<h3 style="margin: 0; font-size: 20px">您好欢迎登录</h3>
2023-12-04 10:33:27 +08:00
</el-form-item>
<el-form-item>
2024-11-22 15:35:30 +08:00
<el-input
:prefix-icon="User"
v-model.trim="loginForm.username"
placeholder="请输入账号"
clearable
/>
2023-12-04 10:33:27 +08:00
</el-form-item>
<el-form-item>
2024-11-22 15:35:30 +08:00
<el-input
:prefix-icon="Lock"
v-model.trim="loginForm.password"
placeholder="请输入密码"
clearable
type="password"
show-password
/>
2023-12-04 10:33:27 +08:00
</el-form-item>
2024-11-22 15:35:30 +08:00
<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>
2024-12-03 09:16:20 +08:00
<!-- <el-button
2024-11-22 15:35:30 +08:00
style="background-color: #009a91; padding: 20px 0"
type="primary"
2024-12-03 09:16:20 +08:00
@click="handlerLogin"
> </el-button
> -->
<el-button
style="padding: 20px 0"
class="primary-lease"
type="primary"
2024-11-22 15:35:30 +08:00
@click="handlerLogin"
> </el-button
>
2023-12-04 10:33:27 +08:00
</el-form-item>
2024-11-22 15:35:30 +08:00
<!-- <el-form-item class="forget-password">
<a href=""></a>
<a
style="cursor: pointer"
@click="$router.push('/register')"
>立即注册</a
>
</el-form-item> -->
2023-12-04 10:33:27 +08:00
</el-form>
</div>
</div>
</div>
2023-12-04 09:12:38 +08:00
</template>
2023-12-04 10:33:27 +08:00
<style lang="scss">
2023-12-11 17:24:59 +08:00
.login-container {
height: 100vh;
background-color: #125ab6;
display: flex;
align-items: center;
justify-content: center;
2024-11-22 15:35:30 +08:00
background: url('../assets/img/login_bg.png') no-repeat;
2023-12-11 17:24:59 +08:00
background-size: cover;
.login-form {
width: 500px;
2024-11-22 15:35:30 +08:00
// height: 360px;
2023-12-04 10:33:27 +08:00
display: flex;
2023-12-11 17:24:59 +08:00
flex-direction: column;
h3 {
2024-11-22 15:35:30 +08:00
color: #006461;
2024-11-23 16:31:54 +08:00
font-size: 26px;
2023-12-11 17:24:59 +08:00
font-weight: bold;
text-align: center;
2024-11-22 15:35:30 +08:00
margin-bottom: 26px;
letter-spacing: 2px;
2023-12-11 17:24:59 +08:00
}
.form-container {
flex: 1;
2023-12-04 10:33:27 +08:00
display: flex;
flex-direction: column;
2024-11-22 15:35:30 +08:00
background-color: #fff;
2023-12-11 17:24:59 +08:00
border-radius: 5px;
2023-12-04 10:33:27 +08:00
2023-12-11 17:24:59 +08:00
.login-type {
height: 40px;
margin-bottom: 40px;
2023-12-04 10:33:27 +08:00
display: flex;
2023-12-11 17:24:59 +08:00
color: #333;
div {
flex: 1;
2023-12-04 10:33:27 +08:00
height: 40px;
2023-12-11 17:24:59 +08:00
text-align: center;
line-height: 40px;
2023-12-04 10:33:27 +08:00
2023-12-11 17:24:59 +08:00
&:hover {
cursor: pointer;
2023-12-04 10:33:27 +08:00
}
}
2023-12-11 17:24:59 +08:00
.active {
color: #3498db;
border-bottom: 1px solid #3498db;
}
}
2023-12-04 10:33:27 +08:00
2023-12-11 17:24:59 +08:00
.el-form {
2024-11-22 15:35:30 +08:00
padding: 30px 50px 0;
2023-12-04 10:33:27 +08:00
2023-12-11 17:24:59 +08:00
.el-input {
2024-11-22 15:35:30 +08:00
height: 47px;
2023-12-11 17:24:59 +08:00
}
.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;
2023-12-04 10:33:27 +08:00
}
2024-11-22 15:35:30 +08:00
.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;
}
2023-12-04 10:33:27 +08:00
}
}
2023-12-04 09:12:38 +08:00
}
2023-12-11 17:24:59 +08:00
}
2023-12-04 09:12:38 +08:00
</style>