From 656696be4b70513e94f1341db8d1c2d3f43b3e6d Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: Wed, 13 Jul 2022 09:18:47 +0800
Subject: [PATCH] 登录跳转首页
---
src/views/homeMenu/homeMenu.vue | 573 +++++++++++++++++++++++++++++++++-----------------------
1 files changed, 336 insertions(+), 237 deletions(-)
diff --git a/src/views/homeMenu/homeMenu.vue b/src/views/homeMenu/homeMenu.vue
index c16e22d..0e7d3d1 100644
--- a/src/views/homeMenu/homeMenu.vue
+++ b/src/views/homeMenu/homeMenu.vue
@@ -1,53 +1,91 @@
<template>
- <div class="login-container">
- <div class="topPanel">
- <div class="topPanelCont">
- <div class="topTit">
- <div>新疆国泰新华</div>
- <span></span>
- <div>安全风险预警监测系统</div>
- </div>
- <div class="userInfo">
- <div class="avator">
- <img src="../../assets/menu/admin.png">
- <div>admin</div>
- </div>
- <span></span>
- <div class="loginOut" @click="onLoginOut">退出登录</div>
- </div>
- </div>
- </div>
+ <div class="login-container">
+ <div class="topPanel">
+ <div class="topPanelCont">
+ <div class="topTit">
+ <div>新疆国泰新华</div>
+ <span></span>
+ <div>安全风险预警监测系统</div>
+ </div>
+ <div class="userInfo">
+ <div class="avator">
+ <img src="../../assets/menu/admin.png" />
+ <div>admin</div>
+ </div>
+ <span></span>
+ <div class="loginOut" @click="onLoginOut">退出登录</div>
+ </div>
+ </div>
+ </div>
- <div class="menuGrid">
- <div class="gridCont">
- <el-row :gutter="20">
- <el-col :span="6"><div class="grid-content" @click="renderMenu('2')"><div class="itemTit">双重预防系统</div><img class="iconImg" src="../../assets/menu/icon4.png"><img class="bgImg" src="../../assets/menu/card4.png"></div></el-col>
- <el-col :span="6"><div class="grid-content" @click="renderMenu('3')"><div class="itemTit">特殊作业系统</div><img class="iconImg" src="../../assets/menu/icon7.png"><img class="bgImg" src="../../assets/menu/card7.png"></div></el-col>
- <el-col :span="6"><div class="grid-content" @click="renderMenu('4')"><div class="itemTit">智能巡检系统</div><img class="iconImg" src="../../assets/menu/icon8.png"><img class="bgImg" src="../../assets/menu/card8.png"></div></el-col>
- <el-col :span="6">
- <div class="grid-content" @click="renderMenu('5')">
- <div class="itemTit">安全风险综合
- <br>预警预报平台
- </div>
- <img class="iconImg" src="../../assets/menu/icon1.png">
- <img class="bgImg" src="../../assets/menu/card1.png">
- </div>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('6')"><div class="itemTit">应急管理系统</div><img class="iconImg" src="../../assets/menu/icon5.png"><img class="bgImg" src="../../assets/menu/card5.png"></div></el-col>
- <el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('7')"><div class="itemTit">目标责任管理系统</div><img class="iconImg" src="../../assets/menu/icon2.png"><img class="bgImg" src="../../assets/menu/card2.png"></div></el-col>
- <el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('8')"><div class="itemTit">事故管理系统</div><img class="iconImg" src="../../assets/menu/icon6.png"><img class="bgImg" src="../../assets/menu/card6.png"></div></el-col>
- <el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('9')"><div class="itemTit">设备综合管控系统</div><img class="iconImg" src="../../assets/menu/icon9.png"><img class="bgImg" src="../../assets/menu/card9.png"></div></el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="6"><div class="grid-content grid-content-3" @click="renderMenu('10')"><div class="itemTit">安全知识图谱系统</div><img class="iconImg" src="../../assets/menu/icon3.png"><img class="bgImg" src="../../assets/menu/card3.png"></div></el-col>
- <el-col :span="9"><div class="grid-content grid-content-3" @click="renderMenu('11')"><div class="itemTit">危险化学品全生命周期安全<br>管理系统</div><img class="iconImg" src="../../assets/menu/icon10.png"><img class="bgImg" src="../../assets/menu/card10.png"></div></el-col>
- <el-col :span="9"><div class="grid-content grid-content-3" @click="renderMenu('1')"><div class="itemTit">基础数据权限管理系统</div><img class="iconImg" src="../../assets/menu/icon11.png"><img class="bgImg" src="../../assets/menu/card11.png"></div></el-col>
- </el-row>
- </div>
- </div>
- </div>
+ <div class="menuGrid">
+ <div class="gridCont">
+ <el-row :gutter="20">
+ <el-col :span="6"
+ ><div class="grid-content" v-throttle @click="renderMenu('2')">
+ <div class="itemTit">双重预防系统</div>
+ <img class="iconImg" src="../../assets/menu/icon4.png" /><img class="bgImg" src="../../assets/menu/card4.png" /></div
+ ></el-col>
+ <el-col :span="6"
+ ><div class="grid-content" v-throttle @click="renderMenu('3')">
+ <div class="itemTit">特殊作业系统</div>
+ <img class="iconImg" src="../../assets/menu/icon7.png" /><img class="bgImg" src="../../assets/menu/card7.png" /></div
+ ></el-col>
+ <el-col :span="6"
+ ><div class="grid-content" v-throttle @click="renderMenu('4')">
+ <div class="itemTit">智能巡检系统</div>
+ <img class="iconImg" src="../../assets/menu/icon8.png" /><img class="bgImg" src="../../assets/menu/card8.png" /></div
+ ></el-col>
+ <el-col :span="6">
+ <div class="grid-content" v-throttle @click="renderMenu('5')">
+ <div class="itemTit">安全风险综合 <br />预警预报平台</div>
+ <img class="iconImg" src="../../assets/menu/icon1.png" />
+ <img class="bgImg" src="../../assets/menu/card1.png" />
+ </div>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6"
+ ><div class="grid-content grid-content-2" v-throttle @click="renderMenu('6')">
+ <div class="itemTit">应急管理系统</div>
+ <img class="iconImg" src="../../assets/menu/icon5.png" /><img class="bgImg" src="../../assets/menu/card5.png" /></div
+ ></el-col>
+ <el-col :span="6"
+ ><div class="grid-content grid-content-2" v-throttle @click="renderMenu('7')">
+ <div class="itemTit">目标责任管理系统</div>
+ <img class="iconImg" src="../../assets/menu/icon2.png" /><img class="bgImg" src="../../assets/menu/card2.png" /></div
+ ></el-col>
+ <el-col :span="6"
+ ><div class="grid-content grid-content-2" v-throttle @click="renderMenu('8')">
+ <div class="itemTit">事故管理系统</div>
+ <img class="iconImg" src="../../assets/menu/icon6.png" /><img class="bgImg" src="../../assets/menu/card6.png" /></div
+ ></el-col>
+ <el-col :span="6"
+ ><div class="grid-content grid-content-2" v-throttle @click="renderMenu('9')">
+ <div class="itemTit">设备综合管控系统</div>
+ <img class="iconImg" src="../../assets/menu/icon9.png" /><img class="bgImg" src="../../assets/menu/card9.png" /></div
+ ></el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="6"
+ ><div class="grid-content grid-content-3" v-throttle @click="renderMenu('10')">
+ <div class="itemTit">安全知识图谱系统</div>
+ <img class="iconImg" src="../../assets/menu/icon3.png" /><img class="bgImg" src="../../assets/menu/card3.png" /></div
+ ></el-col>
+ <el-col :span="9"
+ ><div class="grid-content grid-content-3" v-throttle @click="renderMenu('11')">
+ <div class="itemTit">危险化学品全生命周期安全<br />管理系统</div>
+ <img class="iconImg" src="../../assets/menu/icon10.png" /><img class="bgImg" src="../../assets/menu/card10.png" /></div
+ ></el-col>
+ <el-col :span="9"
+ ><div class="grid-content grid-content-3" v-throttle @click="renderMenu('1')">
+ <div class="itemTit">基础数据权限管理系统</div>
+ <img class="iconImg" src="../../assets/menu/icon11.png" /><img class="bgImg" src="../../assets/menu/card11.png" /></div
+ ></el-col>
+ </el-row>
+ </div>
+ </div>
+ </div>
</template>
<script lang="ts">
@@ -57,220 +95,281 @@
import logoMini from '/@/assets/logo-mini.svg';
import loginIconTwo from '/@/assets/login-icon-two.svg';
import { NextLoading } from '/@/utils/loading';
-import {Session} from "/@/utils/storage";
-import {useRoute, useRouter} from "vue-router";
-import {initBackEndControlRoutes} from "/@/router/backEnd";
-import {useUserInfo} from "/@/stores/userInfo";
+import { Session } from '/@/utils/storage';
+import { useRoute, useRouter } from 'vue-router';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { useRoutesList } from '/@/stores/routesList';
+import pinia from '/@/stores';
+import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
+import { ElMessage } from 'element-plus';
+import { ElMessageBox } from 'element-plus/es';
+import { useLoginApi } from '/@/api/login';
+import { useI18n } from 'vue-i18n';
// 定义接口来定义对象的类型
interface LoginState {
- tabsActiveName: string;
- isScan: boolean;
+ tabsActiveName: string;
+ isScan: boolean;
}
export default defineComponent({
- name: 'loginIndex',
- components: {},
- setup() {
- const route = useRoute();
- const router = useRouter();
- const userInfo = useUserInfo()
- const { userInfos } = storeToRefs(userInfo);
- const storesThemeConfig = useThemeConfig();
- const { themeConfig } = storeToRefs(storesThemeConfig);
- const state = reactive<LoginState>({
- tabsActiveName: 'account',
- isScan: false,
- });
- // 获取布局配置信息
- const getThemeConfig = computed(() => {
- return themeConfig.value;
- });
- // 下拉菜单点击时
- const onLoginOut = () => {
- console.log('退出登录')
- };
- const renderMenu = async (value: string) => {
- Session.set('projectId',value)
- userInfos.value.projectId = value
- await initBackEndControlRoutes();
- router.push('/home')
- };
- // //点击进入特殊作业
- // const toSpecialWorkSys = () => {
- // router.push('/layoutPage');
- // };
- // 页面加载时
- onMounted(() => {
- NextLoading.done();
- // loginBg();
- // loginApp()
- });
- return {
- logoMini,
- loginIconTwo,
- getThemeConfig,
- renderMenu,
- ...toRefs(state),
- };
- },
+ name: 'loginIndex',
+ components: {},
+ setup() {
+ const { t } = useI18n();
+ const route = useRoute();
+ const router = useRouter();
+ const userInfo = useUserInfo();
+ const { userInfos } = storeToRefs(userInfo);
+ const routeToStore = useRoutesList(pinia);
+ const { routesList } = storeToRefs(routeToStore);
+ const storesThemeConfig = useThemeConfig();
+ const { themeConfig } = storeToRefs(storesThemeConfig);
+ const state = reactive<LoginState>({
+ tabsActiveName: 'account',
+ isScan: false
+ });
+ // 获取布局配置信息
+ const getThemeConfig = computed(() => {
+ return themeConfig.value;
+ });
+ // 下拉菜单点击时
+ const onLoginOut = () => {
+ ElMessageBox({
+ closeOnClickModal: false,
+ closeOnPressEscape: false,
+ title: t('message.user.logOutTitle'),
+ message: t('message.user.logOutMessage'),
+ showCancelButton: true,
+ confirmButtonText: t('message.user.logOutConfirm'),
+ cancelButtonText: t('message.user.logOutCancel'),
+ buttonSize: 'default',
+ beforeClose: (action, instance, done) => {
+ if (action === 'confirm') {
+ instance.confirmButtonLoading = true;
+ instance.confirmButtonText = t('message.user.logOutExit');
+ setTimeout(() => {
+ done();
+ setTimeout(() => {
+ instance.confirmButtonLoading = false;
+ }, 300);
+ }, 700);
+ } else {
+ done();
+ }
+ }
+ })
+ .then(async () => {
+ let res = await useLoginApi().signOut();
+ if (res.data.code === '200') {
+ Session.clear(); // 清除缓存/token等
+ // 使用 reload 时,不需要调用 resetRoute() 重置路由
+ window.location.reload();
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch(() => {});
+ };
+ const renderMenu = async (value: string) => {
+ Session.set('projectId', value);
+ userInfos.value.projectId = value;
+ await initBackEndControlRoutes().then(() => {
+ let linkToMenu = [...routesList.value];
+ if (linkToMenu && linkToMenu.length > 1) {
+ router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[1]));
+ } else {
+ ElMessage({ type: 'warning', message: '你没有该项目的权限' });
+ }
+ });
+ };
+ const linkToFirstMenu: any = (value: any) => {
+ let returnMenu = value;
+ if (returnMenu.children?.length > 0) {
+ return linkToFirstMenu(returnMenu.children[0]);
+ } else {
+ return returnMenu.path;
+ }
+ };
+ // //点击进入特殊作业
+ // const toSpecialWorkSys = () => {
+ // router.push('/layoutPage');
+ // };
+ // 页面加载时
+ onMounted(() => {
+ NextLoading.done();
+ // loginBg();
+ // loginApp()
+ });
+ return {
+ logoMini,
+ onLoginOut,
+ loginIconTwo,
+ getThemeConfig,
+ renderMenu,
+ ...toRefs(state)
+ };
+ }
});
</script>
<style scoped lang="scss">
.login-container {
- width: 100%;
- height: 100%;
- position: relative;
- background: url("../../assets/menu/bg_home1.jpg") no-repeat center;
- .topPanel{
- position: absolute;
- width: 100%;
- top: -100px;
- left: 0;
- height:100px;
- background: #fff;
- display: flex;
- justify-content: center;
- box-shadow: 0 8px 32px rgba(0,0,0,.1);
- animation: showDown .6s 1 ease forwards;
+ width: 100%;
+ height: 100%;
+ position: relative;
+ background: url('../../assets/menu/bg_home1.jpg') no-repeat center;
+ .topPanel {
+ position: absolute;
+ width: 100%;
+ top: -100px;
+ left: 0;
+ height: 100px;
+ background: #fff;
+ display: flex;
+ justify-content: center;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ animation: showDown 0.6s 1 ease forwards;
- @keyframes showDown {
- 100%{
- position: absolute;
- top: 0;
- }
- }
- .topPanelCont{
- width: 1200px;
- height: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
+ @keyframes showDown {
+ 100% {
+ position: absolute;
+ top: 0;
+ }
+ }
+ .topPanelCont {
+ width: 1200px;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
- .topTit{
- font-size: 24px;
- font-weight: bold;
- display: flex;
- align-items: center;
- color: #333;
- line-height: 28px;
+ .topTit {
+ font-size: 24px;
+ font-weight: bold;
+ display: flex;
+ align-items: center;
+ color: #333;
+ line-height: 28px;
- &>div:last-of-type{
- color: #006DF5;
- }
+ & > div:last-of-type {
+ color: #006df5;
+ }
- span{
- width: 1px;
- height: 28px;
- background: #999;
- margin: 0 15px;
- }
- }
+ span {
+ width: 1px;
+ height: 28px;
+ background: #999;
+ margin: 0 15px;
+ }
+ }
- .userInfo{
- display: flex;
- align-items: center;
+ .userInfo {
+ display: flex;
+ align-items: center;
- .avator{
- display: flex;
- justify-content: right;
+ .avator {
+ display: flex;
+ justify-content: right;
- img{
- width: 20px;
- height: 20px;
- border-radius: 10px;
- }
- div{
- font-size: 15px;
- color: #333333;
- line-height: 20px;
- margin-left: 6px;
- }
- }
- span{
- width: 1px;
- height: 20px;
- background: #999;
- margin: 0 15px;
- }
- .loginOut{
- font-size: 15px;
- color: #333;
- line-height: 20px;
- cursor: pointer;
+ img {
+ width: 20px;
+ height: 20px;
+ border-radius: 10px;
+ }
+ div {
+ font-size: 15px;
+ color: #333333;
+ line-height: 20px;
+ margin-left: 6px;
+ }
+ }
+ span {
+ width: 1px;
+ height: 20px;
+ background: #999;
+ margin: 0 15px;
+ }
+ .loginOut {
+ font-size: 15px;
+ color: #333;
+ line-height: 20px;
+ cursor: pointer;
- &:hover{
- color: #006DF5;
- }
- }
- }
- }
- }
+ &:hover {
+ color: #006df5;
+ }
+ }
+ }
+ }
+ }
- .menuGrid{
- width: 100%;
- position: absolute;
- top: 150px;
- display: flex;
- justify-content: center;
- .gridCont{
- width: 1200px;
- .el-row {
- margin-bottom: 20px;
- }
- .el-row:last-child {
- margin-bottom: 0;
- }
- .el-col {
- border-radius: 8px;
- }
+ .menuGrid {
+ width: 100%;
+ position: absolute;
+ top: 150px;
+ display: flex;
+ justify-content: center;
+ .gridCont {
+ width: 1200px;
+ .el-row {
+ margin-bottom: 20px;
+ }
+ .el-row:last-child {
+ margin-bottom: 0;
+ }
+ .el-col {
+ border-radius: 8px;
+ }
- .grid-content {
- border-radius: 10px;
- height: 234px;
- padding: 32px;
- position: relative;
- background-image: linear-gradient(135deg,#00C0F5,#44b1ff);
- overflow: hidden;
- cursor: pointer;
- transition: .3s;
- border: none;
+ .grid-content {
+ border-radius: 10px;
+ height: 234px;
+ padding: 32px;
+ position: relative;
+ background-image: linear-gradient(135deg, #00c0f5, #44b1ff);
+ overflow: hidden;
+ cursor: pointer;
+ transition: 0.3s;
+ border: none;
- &:hover{
- box-shadow: 0 8px 32px rgba(20,97,234,.4);
- }
+ &:hover {
+ box-shadow: 0 8px 32px rgba(20, 97, 234, 0.4);
+ }
- .itemTit{
- font-size: 24px;
- line-height: 36px;
- height: 40%;
- font-family: "PingFang SC";
- font-weight: lighter;
- color: #fff;
- margin-bottom: 25px;
- }
- .iconImg{
- width: 80px;
- height: 80px;
- }
+ .itemTit {
+ font-size: 24px;
+ line-height: 36px;
+ height: 40%;
+ font-family: 'PingFang SC';
+ font-weight: lighter;
+ color: #fff;
+ margin-bottom: 25px;
+ }
+ .iconImg {
+ width: 80px;
+ height: 80px;
+ }
- .bgImg{
- position: absolute;
- right: 0;
- bottom: 0;
- }
- }
+ .bgImg {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
+ }
- /*.grid-content-2{*/
- /* background-image: linear-gradient(135deg,#0098F5,#1461EA);*/
- /*}*/
+ /*.grid-content-2{*/
+ /* background-image: linear-gradient(135deg,#0098F5,#1461EA);*/
+ /*}*/
- /*.grid-content-3{*/
- /* background-image: linear-gradient(135deg,#006DF5,#1450EA);*/
- /*}*/
- }
-
- }
+ /*.grid-content-3{*/
+ /* background-image: linear-gradient(135deg,#006DF5,#1450EA);*/
+ /*}*/
+ }
+ }
}
</style>
--
Gitblit v1.9.2