153 lines
3.8 KiB
Vue
153 lines
3.8 KiB
Vue
<!-- -->
|
||
<template>
|
||
<div>
|
||
|
||
</div><div class='formBorderMid'>
|
||
<div class='mainTitle'>WCS 设备控制系统</div>
|
||
<div>您的管理员已经禁止直接登陆,请使用主程序跳转</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
// import 《组件名称》 from '《组件路径》 ';
|
||
|
||
|
||
import {ElMessage, ElMessageBox} from "element-plus";
|
||
import userApi from "@/axios/user";
|
||
import router from "@/router";
|
||
|
||
export default {
|
||
// import 引入的组件需要注入到对象中才能使用
|
||
components: {},
|
||
props: [],
|
||
emits: [],
|
||
data() {
|
||
// 这里存放数据
|
||
return {
|
||
loginUser: {
|
||
userId: '',
|
||
userPassword: ''
|
||
},
|
||
loading: false
|
||
}
|
||
},
|
||
// 计算属性 类似于 data 概念
|
||
computed: {},
|
||
// 监控 data 中的数据变化
|
||
watch: {},
|
||
// 方法集合
|
||
methods: {
|
||
// 登陆按钮
|
||
onSubmit(userName) {
|
||
this.loading = true
|
||
userApi.login(this.loginUser).then((response) => {
|
||
const data = response.data
|
||
if(data.code !== 0) {
|
||
// 服务器返回失败
|
||
ElMessageBox.alert(`登陆失败,信息:${data.msg}`, '登陆失败', {
|
||
confirmButtonText: '确定'
|
||
}).catch(()=>{ })
|
||
} else {
|
||
// 登陆成功
|
||
ElMessage({
|
||
message: '登陆成功',
|
||
type: 'success',
|
||
})
|
||
const returnData = data['returnData']
|
||
window.sessionStorage.setItem("userName", returnData.userName)
|
||
window.sessionStorage.setItem("token", returnData.token)
|
||
let userInfo = { userId: this.loginUser.userId, userName: userName}
|
||
this.$store.commit('setUserInfo', userInfo)
|
||
this.loadMenu(returnData.menu) // 加载菜单
|
||
router.push({name: 'wcs'})
|
||
}
|
||
this.loading = false
|
||
}).catch((err) => {
|
||
ElMessageBox.alert(`请求登陆失败,异常信息:${err}`, '登陆失败', {
|
||
type: 'warning',
|
||
confirmButtonText: '确定'
|
||
}).catch(()=>{ })
|
||
this.loading = false
|
||
})
|
||
},
|
||
// 加载菜单
|
||
loadMenu(menu) {
|
||
if(menu === undefined || menu.length < 1) {
|
||
return
|
||
}
|
||
this.$store.commit('setMenuData', menu)
|
||
let menuList = []
|
||
menu.forEach((menuItem, index) => {
|
||
const minor = menuItem.minor
|
||
if(minor === undefined || minor.length < 1) {
|
||
return
|
||
}
|
||
minor.forEach((minorItem, index) => {
|
||
menuList.push(minorItem)
|
||
})
|
||
})
|
||
this.$store.commit('setMenuList', menuList)
|
||
window.sessionStorage.setItem("menuList", JSON.stringify(menuList))
|
||
}
|
||
},
|
||
// 组合式 API
|
||
setup() {
|
||
},
|
||
// 创建之前
|
||
beforeCreate() {
|
||
},
|
||
// 创建完成(可以访问 this 实例)
|
||
created() {
|
||
this.$store.commit('resetMenuData');
|
||
this.$store.commit('resetTabs');
|
||
|
||
// 检测url,用于从其他页面直接跳转
|
||
const url = window.location.href
|
||
if (url.includes("?")) {
|
||
const info = url.split("?")[1];
|
||
const userNameInfo = info.split("=");
|
||
if (userNameInfo.length < 1) {
|
||
return;
|
||
}
|
||
const userName = userNameInfo[1];
|
||
this.loginUser.userPassword = 'user';
|
||
this.loginUser.userId = 'user';
|
||
this.onSubmit(userName);
|
||
}
|
||
},
|
||
// 生命周期 - 挂载之前
|
||
beforeMount() {
|
||
},
|
||
// 生命周期 - 挂载完成(可以访问 DOM 元素)
|
||
mounted() {
|
||
},
|
||
// 更新之前
|
||
beforeUpdate() {
|
||
},
|
||
// 更新之后
|
||
updated() {
|
||
},
|
||
// 销毁之前
|
||
beforeUnmount() {
|
||
},
|
||
// 销毁完成
|
||
unmounted() {
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.formBorderMid {
|
||
border: #6b778c50 1px solid;
|
||
border-radius: 15px;
|
||
margin: 250px auto auto auto;
|
||
padding: 30px;
|
||
width: 500px;
|
||
}
|
||
.mainTitle {
|
||
font-size: 25px;
|
||
margin: auto auto 45px auto;
|
||
text-align: center;
|
||
}
|
||
|
||
</style> |