Merge branch 'master' into dev
Showing
5 changed files
with
215 additions
and
209 deletions
| ... | @@ -19,244 +19,244 @@ | ... | @@ -19,244 +19,244 @@ | 
| 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, | 
| 30 | }, | ||
| 31 | computed: { | ||
| 32 | ...mapGetters(["sidebar", "dicData", "userInfo"]), | ||
| 33 | logoName () { | ||
| 34 | return this.dicData['sysCode'] && this.dicData['sysCode'].filter(item => | ||
| 35 | item.DCODE == "systemTitle" | ||
| 36 | ) | ||
| 30 | }, | 37 | }, | 
| 31 | computed: { | 38 | userName () { | 
| 32 | ...mapGetters(["sidebar", "dicData", "userInfo"]), | 39 | return this.userInfo ? this.userInfo.name : "" | 
| 33 | logoName () { | 40 | } | 
| 34 | return this.dicData['sysCode'] && this.dicData['sysCode'].filter(item => | 41 | }, | 
| 35 | item.DCODE == "systemTitle" | 42 | methods: { | 
| 36 | ) | 43 | onCancel () { | 
| 37 | }, | 44 | logout() | 
| 38 | userName () { | 45 | .then((res) => { | 
| 39 | return this.userInfo ? this.userInfo.name : "" | 46 | sessionStorage.removeItem("token"); | 
| 40 | } | 47 | this.$store.dispatch("user/resetState"); | 
| 41 | }, | 48 | this.$router.replace({ | 
| 42 | methods: { | 49 | path: "/jg", | 
| 43 | onCancel () { | 50 | query: { | 
| 44 | logout() | 51 | redirect: this.$route.fullPath, | 
| 45 | .then((res) => { | 52 | }, | 
| 46 | sessionStorage.removeItem("token"); | ||
| 47 | this.$store.dispatch("user/resetState"); | ||
| 48 | this.$router.replace({ | ||
| 49 | path: "/jg", | ||
| 50 | query: { | ||
| 51 | redirect: this.$route.fullPath, | ||
| 52 | }, | ||
| 53 | }); | ||
| 54 | }) | ||
| 55 | .catch((error) => { | ||
| 56 | // console.dir(error); | ||
| 57 | }); | 53 | }); | 
| 58 | }, | 54 | }) | 
| 55 | .catch((error) => { | ||
| 56 | // console.dir(error); | ||
| 57 | }); | ||
| 59 | }, | 58 | }, | 
| 60 | }; | 59 | }, | 
| 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; | 73 | background: url("~@/image/navbar.png") no-repeat; | 
| 74 | background: url("~@/image/navbar.png") no-repeat; | 74 | background-size: 100% 100%; | 
| 75 | background-size: 100% 100%; | 75 | } | 
| 76 | } | ||
| 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 | } | 
| 132 | |||
| 133 | /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus { | ||
| 134 | @extend .xuanzhong; | ||
| 135 | } | ||
| 133 | 136 | ||
| 134 | /deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus { | 137 | /deep/.el-menu-item.is-active { | 
| 135 | @extend .xuanzhong; | 138 | @extend .xuanzhong; | 
| 139 | |||
| 140 | } | ||
| 141 | |||
| 142 | .navbar { | ||
| 143 | height: $headerHeight; | ||
| 144 | overflow: hidden; | ||
| 145 | position: relative; | ||
| 146 | display: flex; | ||
| 147 | align-items: center; | ||
| 148 | padding: 0 20px; | ||
| 149 | justify-content: space-between; | ||
| 150 | background: url("~@/image/header.png") no-repeat; | ||
| 151 | background-size: 100% 100%; | ||
| 152 | |||
| 153 | .user { | ||
| 154 | font-size: 12px; | ||
| 155 | color: #ffffff; | ||
| 156 | position: absolute; | ||
| 157 | right: 20px; | ||
| 158 | top: 0; | ||
| 159 | cursor: pointer; | ||
| 160 | |||
| 161 | .closeStyle { | ||
| 162 | margin-right: 5px; | ||
| 163 | } | ||
| 136 | } | 164 | } | 
| 137 | 165 | ||
| 138 | /deep/.el-menu-item.is-active { | 166 | .title { | 
| 139 | @extend .xuanzhong; | 167 | position: absolute; | 
| 168 | left: 0; | ||
| 169 | top: 10px; | ||
| 170 | bottom: 0; | ||
| 171 | right: 0; | ||
| 172 | margin: 0 auto; | ||
| 173 | font-size: 32px; | ||
| 174 | color: #ffffff; | ||
| 175 | font-weight: 700; | ||
| 176 | text-align: center; | ||
| 140 | } | 177 | } | 
| 141 | 178 | ||
| 142 | .navbar { | 179 | .right-menu { | 
| 143 | height: $headerHeight; | 180 | float: right; | 
| 144 | overflow: hidden; | 181 | height: 100%; | 
| 145 | position: relative; | 182 | line-height: 50px; | 
| 146 | display: flex; | 183 | display: flex; | 
| 147 | align-items: center; | 184 | align-items: center; | 
| 148 | padding: 0 20px; | ||
| 149 | justify-content: space-between; | ||
| 150 | background: url("~@/image/header.png") no-repeat; | ||
| 151 | background-size: 100% 100%; | ||
| 152 | 185 | ||
| 153 | .user { | 186 | .shutdown { | 
| 154 | font-size: 12px; | 187 | font-size: 20px; | 
| 155 | color: #ffffff; | 188 | margin-left: 15px; | 
| 156 | position: absolute; | ||
| 157 | right: 20px; | ||
| 158 | top: 0; | ||
| 159 | cursor: pointer; | 189 | cursor: pointer; | 
| 160 | |||
| 161 | .closeStyle { | ||
| 162 | margin-right: 5px; | ||
| 163 | } | ||
| 164 | } | 190 | } | 
| 165 | 191 | ||
| 166 | .title { | 192 | .organization-item { | 
| 167 | position: absolute; | 193 | margin-right: 40px; | 
| 168 | left: 0; | 194 | margin-top: -40px !important; | 
| 169 | top: 10px; | ||
| 170 | bottom: 0; | ||
| 171 | right: 0; | ||
| 172 | margin: 0 auto; | ||
| 173 | font-size: 32px; | ||
| 174 | color: #ffffff; | ||
| 175 | font-weight: 700; | ||
| 176 | text-align: center; | ||
| 177 | } | 195 | } | 
| 178 | 196 | ||
| 179 | .right-menu { | 197 | .item { | 
| 180 | float: right; | 198 | margin-right: 40px; | 
| 181 | height: 100%; | 199 | margin-top: -20px; | 
| 182 | line-height: 50px; | 200 | line-height: 18.4px; | 
| 183 | display: flex; | 201 | cursor: pointer; | 
| 184 | align-items: center; | 202 | position: relative; | 
| 185 | 203 | ||
| 186 | .shutdown { | 204 | .item-box { | 
| 187 | font-size: 20px; | 205 | position: absolute; | 
| 188 | margin-left: 15px; | 206 | top: -5px; | 
| 207 | left: 3px; | ||
| 208 | width: 100%; | ||
| 209 | min-width: 25px; | ||
| 210 | height: 25px; | ||
| 189 | cursor: pointer; | 211 | cursor: pointer; | 
| 212 | z-index: 100; | ||
| 190 | } | 213 | } | 
| 214 | } | ||
| 191 | 215 | ||
| 192 | .organization-item { | 216 | &:focus { | 
| 193 | margin-right: 40px; | 217 | outline: none; | 
| 194 | margin-top: -40px !important; | 218 | } | 
| 195 | } | ||
| 196 | 219 | ||
| 197 | .item { | 220 | .right-menu-item { | 
| 198 | margin-right: 40px; | 221 | display: inline-block; | 
| 199 | margin-top: -20px; | 222 | height: 100%; | 
| 200 | line-height: 18.4px; | 223 | font-size: 18px; | 
| 224 | color: #fff; | ||
| 225 | vertical-align: text-bottom; | ||
| 226 | |||
| 227 | &.hover-effect { | ||
| 201 | cursor: pointer; | 228 | cursor: pointer; | 
| 202 | position: relative; | 229 | transition: background 0.3s; | 
| 230 | display: flex; | ||
| 231 | align-items: center; | ||
| 203 | 232 | ||
| 204 | .item-box { | 233 | &:hover { | 
| 205 | position: absolute; | 234 | background: rgba(0, 0, 0, 0.025); | 
| 206 | top: -5px; | ||
| 207 | left: 3px; | ||
| 208 | width: 100%; | ||
| 209 | min-width: 25px; | ||
| 210 | height: 25px; | ||
| 211 | cursor: pointer; | ||
| 212 | z-index: 100; | ||
| 213 | } | 235 | } | 
| 214 | } | 236 | } | 
| 237 | } | ||
| 215 | 238 | ||
| 216 | &:focus { | 239 | .avatar-wrapper { | 
| 217 | outline: none; | 240 | position: relative; | 
| 218 | } | 241 | display: flex; | 
| 219 | 242 | height: 40px; | |
| 220 | .right-menu-item { | 243 | align-items: center; | 
| 221 | display: inline-block; | ||
| 222 | height: 100%; | ||
| 223 | font-size: 18px; | ||
| 224 | color: #fff; | ||
| 225 | vertical-align: text-bottom; | ||
| 226 | |||
| 227 | &.hover-effect { | ||
| 228 | cursor: pointer; | ||
| 229 | transition: background 0.3s; | ||
| 230 | display: flex; | ||
| 231 | align-items: center; | ||
| 232 | 244 | ||
| 233 | &:hover { | 245 | .user-avatar { | 
| 234 | background: rgba(0, 0, 0, 0.025); | 246 | cursor: pointer; | 
| 235 | } | 247 | width: 35px; | 
| 236 | } | 248 | height: 35px; | 
| 249 | border-radius: 50%; | ||
| 237 | } | 250 | } | 
| 238 | 251 | ||
| 239 | .avatar-wrapper { | 252 | .el-icon-caret-bottom { | 
| 240 | position: relative; | 253 | cursor: pointer; | 
| 241 | display: flex; | 254 | position: absolute; | 
| 242 | height: 40px; | 255 | right: -15px; | 
| 243 | align-items: center; | 256 | top: 17px; | 
| 244 | 257 | font-size: 12px; | |
| 245 | .user-avatar { | ||
| 246 | cursor: pointer; | ||
| 247 | width: 35px; | ||
| 248 | height: 35px; | ||
| 249 | border-radius: 50%; | ||
| 250 | } | ||
| 251 | |||
| 252 | .el-icon-caret-bottom { | ||
| 253 | cursor: pointer; | ||
| 254 | position: absolute; | ||
| 255 | right: -15px; | ||
| 256 | top: 17px; | ||
| 257 | font-size: 12px; | ||
| 258 | } | ||
| 259 | } | 258 | } | 
| 260 | } | 259 | } | 
| 261 | } | 260 | } | 
| 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 { | ... | ... | 
- 
Please register or sign in to post a comment
