zoo-frontend/src/pages/ZooLogin.vue
2024-06-09 00:50:12 +08:00

126 lines
3.6 KiB
Vue

<script>
import {mapMutations, mapState} from "vuex";
import request, {frontendLoginUser} from "@/utils/request.js";
export default {
name: "ZooContainer",
data() {
return {
// 登录表单数据
form: {
username: 'admin',
password: '123',
},
picture: [
'https://www4.bing.com//th?id=OHR.BambooPanda_ZH-CN8455481760_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp',
'https://www4.bing.com//th?id=OHR.PolarBearCubs_ZH-CN2913942257_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp',
'https://www4.bing.com//th?id=OHR.WhiteEyes_ZH-CN1130380430_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp',
'https://www4.bing.com//th?id=OHR.ZebraCousins_ZH-CN8159888859_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp'
]
}
},
computed: {
...mapState(['loginUser'])
},
methods: {
...mapMutations(['updateLoginUser']),
// 登录
login() {
console.log('登录', this.form)
//判断表单是否为空
if (!this.form.username || !this.form.password) {
//返回提示
return ElMessage({
message: '用户名和密码不能为空',
type: 'warning',
})
}
//此处接入后端登录接口验证登录用户名和密码,验证通过方可通行
request.login(this.form).then(response => {
if (response.data.code === 1) {
// 登录成功
this.updateLoginUser(frontendLoginUser(response.data.data, this.form.username))
localStorage.setItem('username', this.form.username);//本地存储登录用户名
// 跳转到面板首页
this.$router.push('/panel/home')
return ElMessage({
message: '登录成功',
type: 'success',
})
} else {
return ElMessage({
message: '用户名不存在或密码错误',
type: 'error',
})
}
})
},
//重置表单
reset() {
this.form = {}
},
},
mounted() {
//清空退出登录的用户
this.updateLoginUser('');
//自动填充历史登录的用户
this.form.username = localStorage.getItem('username');
}
}
</script>
<template>
<div id="login-root">
<!-- 背景图片-->
<div>
<el-carousel motion-blur height="700px" style="width: auto;">
<el-carousel-item v-for="(item,index) in picture" :key="index" style="text-align: center">
<img :src="item" width="auto" height="100%"/>
</el-carousel-item>
</el-carousel>
</div>
<!-- 登录表单-->
<div class="center">
<el-card style="width: 350px" shadow="always">
<template #header>
<div style="text-align: center;font-size: 25px">登录</div>
</template>
<el-form :model="form" label-width="auto" style="width: 400px">
<el-form-item label="用户名">
<el-input v-model="form.username" style="width: 240px" placeholder="请输入用户名"/>
</el-form-item>
<el-form-item label="密码">
<el-input
v-model="form.password"
style="width: 240px"
type="password"
placeholder="请输入密码"
show-password
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="login">登录</el-button>
<el-button @click="reset">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</div>
</template>
<style scoped>
#login-root {
width: 100%;
height: 700px;
background-color: aliceblue;
}
.center {
opacity: 0.95;
}
</style>