8521a4e9 by 任超

Merge branch 'master' into dev

2 parents fad6506d e3eaf360
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
19 </div> 19 </div>
20 </template> 20 </template>
21 <script> 21 <script>
22 import sidebarLeft from "./Sidebar/sidebarLeft"; 22 import sidebarLeft from "./Sidebar/sidebarLeft";
23 import sidebarRight from "./Sidebar/sidebarRight"; 23 import sidebarRight from "./Sidebar/sidebarRight";
24 import { logout } from "@/api/login.js"; 24 import { logout } from "@/api/login.js";
25 import { mapGetters } from "vuex"; 25 import { mapGetters } from "vuex";
26 export default { 26 export default {
27 components: { 27 components: {
28 sidebarLeft, 28 sidebarLeft,
29 sidebarRight, 29 sidebarRight,
...@@ -57,89 +57,89 @@ ...@@ -57,89 +57,89 @@
57 }); 57 });
58 }, 58 },
59 }, 59 },
60 }; 60 };
61 </script> 61 </script>
62 <style lang="scss" scoped> 62 <style lang="scss" scoped>
63 /deep/.el-menu--horizontal { 63 /deep/.el-menu--horizontal {
64 display: flex; 64 display: flex;
65 align-items: center; 65 align-items: center;
66 } 66 }
67 67
68 .menubg { 68 .menubg {
69 height: 34px; 69 height: 34px;
70 width: 130px; 70 width: 130px !important;
71 text-align: center; 71 text-align: center;
72 color: #ffffff; 72 color: #ffffff;
73 margin-right: 20px;
74 background: url("~@/image/navbar.png") no-repeat; 73 background: url("~@/image/navbar.png") no-repeat;
75 background-size: 100% 100%; 74 background-size: 100% 100%;
76 } 75 }
77 76
78 /deep/.el-menu-item { 77 /deep/.el-menu-item {
79 @extend .menubg; 78 @extend .menubg;
80 } 79 }
81 80
82 /deep/.el-submenu { 81 /deep/.el-submenu {
83 @extend .menubg; 82 @extend .menubg;
84 } 83 }
85 84
86 /deep/.el-submenu__title { 85 /deep/.el-submenu__title {
87 height: 34px; 86 height: 34px;
88 color: #ffffff; 87 color: #ffffff;
89 } 88 }
90 89
91 /deep/.el-submenu__title span { 90 /deep/.el-submenu__title span {
92 font-size: 14px; 91 font-size: 14px;
93 } 92 }
94 93
95 .sidebarLeft { 94 .sidebarLeft {
96 position: relative; 95 position: relative;
97 top: 13px; 96 top: 13px;
98 width: 30%; 97 width: 30%;
99 } 98 }
100 99
101 /deep/.el-menu { 100 /deep/.el-menu {
102 display: flex; 101 display: flex;
103 justify-content: space-between; 102 justify-content: space-between;
104 } 103 width: 100%;
104 }
105 105
106 /deep/.el-menu-item { 106 /deep/.el-menu-item {
107 flex: 1; 107 flex: 1;
108 width: 100%; 108 width: 100%;
109 } 109 }
110 110
111 .sidebarRight { 111 .sidebarRight {
112 position: relative; 112 position: relative;
113 top: 13px; 113 top: 13px;
114 width: 30%; 114 width: 30%;
115 padding-left: 20px; 115 }
116 }
117 116
118 // 导航选中背景色 117 // 导航选中背景色
119 .xuanzhong { 118 .xuanzhong {
120 background: url("~@/image/selNavbar.png") no-repeat; 119 background: url("~@/image/selNavbar.png") no-repeat;
121 background-size: 100% 100%; 120 background-size: 100% 100%;
122 color: #ffffff !important; 121 color: #ffffff !important;
123 font-weight: 700; 122 font-weight: 700;
124 } 123 }
125 124
126 /deep/.el-menu-item:hover { 125 /deep/.el-menu-item:hover {
127 @extend .xuanzhong; 126 @extend .xuanzhong;
128 } 127 }
129 128
130 /deep/.el-submenu__title:hover { 129 /deep/.el-submenu__title:hover {
131 @extend .xuanzhong; 130 @extend .xuanzhong;
132 } 131 }
133 132
134 /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus { 133 /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
135 @extend .xuanzhong; 134 @extend .xuanzhong;
136 } 135 }
137 136
138 /deep/.el-menu-item.is-active { 137 /deep/.el-menu-item.is-active {
139 @extend .xuanzhong; 138 @extend .xuanzhong;
140 }
141 139
142 .navbar { 140 }
141
142 .navbar {
143 height: $headerHeight; 143 height: $headerHeight;
144 overflow: hidden; 144 overflow: hidden;
145 position: relative; 145 position: relative;
...@@ -258,5 +258,5 @@ ...@@ -258,5 +258,5 @@
258 } 258 }
259 } 259 }
260 } 260 }
261 } 261 }
262 </style> 262 </style>
......
...@@ -18,13 +18,13 @@ router.beforeEach(async (to, from, next) => { ...@@ -18,13 +18,13 @@ router.beforeEach(async (to, from, next) => {
18 let hasUser = store.state.user.hasUser; 18 let hasUser = store.state.user.hasUser;
19 let hasAddRoute = store.state.permission.addRoutes; 19 let hasAddRoute = store.state.permission.addRoutes;
20 if (to.path == "/sb" || to.path == "/jg") { 20 if (to.path == "/sb" || to.path == "/jg") {
21 sessionStorage.removeItem("token"); 21 localStorage.removeItem("token");
22 sessionStorage.setItem("psth", to.path) 22 sessionStorage.setItem("psth", to.path)
23 next(); 23 next();
24 } else { 24 } else {
25 let code = sessionStorage.getItem("psth") == "/sb" ? "BDCSBPT" : "BDCJGPT" 25 let code = sessionStorage.getItem("psth") == "/sb" ? "BDCSBPT" : "BDCJGPT"
26 //判断token是否存在 26 //判断token是否存在
27 const hasToken = sessionStorage.getItem("token"); 27 const hasToken = localStorage.getItem("token");
28 if (hasToken) { 28 if (hasToken) {
29 //请求用户信息 29 //请求用户信息
30 if (!hasUser) { 30 if (!hasUser) {
......
1 /* 1 /*
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2023-03-13 14:11:50 4 * @LastEditTime: 2023-03-14 14:39:24
5 */ 5 */
6 /** 6 /**
7 * 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器 7 * 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器
...@@ -25,7 +25,7 @@ const service = axios.create({ ...@@ -25,7 +25,7 @@ const service = axios.create({
25 service.interceptors.request.use( 25 service.interceptors.request.use(
26 (config) => { 26 (config) => {
27 //调用登录接口时无token,也不需要传token,其他接口都传入token 27 //调用登录接口时无token,也不需要传token,其他接口都传入token
28 config.headers.Authorization = sessionStorage.getItem("token") || ""; 28 config.headers.Authorization = localStorage.getItem("token") || "";
29 config.headers.Accept = "application/json"; 29 config.headers.Accept = "application/json";
30 return config; 30 return config;
31 }, 31 },
...@@ -35,6 +35,7 @@ service.interceptors.request.use( ...@@ -35,6 +35,7 @@ service.interceptors.request.use(
35 } 35 }
36 ); 36 );
37 37
38 window.tokenValid = true
38 // response interceptor 39 // response interceptor
39 service.interceptors.response.use( 40 service.interceptors.response.use(
40 (response) => { 41 (response) => {
...@@ -64,15 +65,20 @@ service.interceptors.response.use( ...@@ -64,15 +65,20 @@ service.interceptors.response.use(
64 //对错误信息的处理函数 65 //对错误信息的处理函数
65 function handleErrorData (status) { 66 function handleErrorData (status) {
66 switch (status) { 67 switch (status) {
67 // case 401: 68 case 401:
68 // Message.error("由于长时间未操作,请重新登录!"); 69 // 多个请求不重复提示错误信息
69 // router.replace({ 70 if (window.tokenValid) {
70 // path: "/login/jg", 71 window.tokenValid = false;
71 // query: { 72 Message.error("由于长时间未操作,请重新登录!");
72 // redirect: router.history.current.fullPath, 73 localStorage.removeItem("token");
73 // }, 74 router.replace({
74 // }); 75 path: "/jg",
75 // break; 76 query: {
77 redirect: router.history.current.fullPath,
78 },
79 });
80 }
81 break;
76 case 403: 82 case 403:
77 Message.error("拒绝访问"); 83 Message.error("拒绝访问");
78 break; 84 break;
......
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
96 .then((res) => { 96 .then((res) => {
97 if (res.status === 1) { 97 if (res.status === 1) {
98 //存储token 98 //存储token
99 sessionStorage.setItem("token", `Bearer ${res.content}`); 99 localStorage.setItem("token", `Bearer ${res.content}`);
100 //登录成功后需判断有无重定向,没有重定向则跳转首页 100 //登录成功后需判断有无重定向,没有重定向则跳转首页
101 this.$router.replace(this.$route.query.redirect || "/"); 101 this.$router.replace(this.$route.query.redirect || "/");
102 } else { 102 } else {
......
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
103 if (res.status === 1) { 103 if (res.status === 1) {
104 this.$store.dispatch('business/setInitRules', "layout1") 104 this.$store.dispatch('business/setInitRules', "layout1")
105 //存储token 105 //存储token
106 sessionStorage.setItem("token", `Bearer ${res.content}`); 106 localStorage.setItem("token", `Bearer ${res.content}`);
107 //登录成功后需判断有无重定向,没有重定向则跳转首页 107 //登录成功后需判断有无重定向,没有重定向则跳转首页
108 this.$router.replace(this.$route.query.redirect || "/"); 108 this.$router.replace(this.$route.query.redirect || "/");
109 } else { 109 } else {
......