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>
|