pull/19/head^2
xiaozhiyong 1 year ago
parent 4cda1a53c6
commit 4acef527e7
  1. 36
      src/layout/components/Navbar.vue
  2. 41
      src/store/modules/user.js
  3. 104
      src/utils/request.js

@ -1,10 +1,6 @@
<template> <template>
<div class="navbar"> <div class="navbar">
<hamburger <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
:is-active="sidebar.opened"
class="hamburger-container"
@toggleClick="toggleSideBar"
/>
<breadcrumb class="breadcrumb-container" /> <breadcrumb class="breadcrumb-container" />
@ -25,34 +21,36 @@
</template> </template>
<script> <script>
import { mapGetters } from "vuex"; import { mapGetters } from 'vuex'
import Breadcrumb from "@/components/Breadcrumb"; import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from "@/components/Hamburger"; import Hamburger from '@/components/Hamburger'
import store from '@/store'
import serve from "api/login.js"; import serve from 'api/login.js'
export default { export default {
components: { components: {
Breadcrumb, Breadcrumb,
Hamburger, Hamburger
}, },
computed: { computed: {
...mapGetters(["sidebar", "avatar"]), ...mapGetters(['sidebar', 'avatar'])
}, },
methods: { methods: {
toggleSideBar() { toggleSideBar() {
this.$store.dispatch("app/toggleSideBar"); this.$store.dispatch('app/toggleSideBar')
}, },
logout() { logout() {
serve.loginOut().then((res) => { serve.loginOut().then(res => {
if (res.code === 20000) { if (res.code === 20000) {
localStorage.removeItem("businessToken"); localStorage.removeItem('businessToken')
this.$router.push("/login"); store.dispatch('user/removeInfo')
this.$router.push('/login')
} }
}); })
}, }
}, }
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

@ -1,40 +1,45 @@
const getDefaultState = () => { const getDefaultState = () => {
return { return {
name: "admin", name: 'admin',
avatar: "", avatar: '',
auth: null, auth: null,
companyType: 0, companyType: 0,
companyId: "", companyId: ''
}; }
}; }
const state = getDefaultState(); const state = getDefaultState()
const mutations = { const mutations = {
SET_NAME: (state, name) => { SET_NAME: (state, name) => {
state.name = name; state.name = name
}, },
SET_AUTH: (state, auth) => { SET_AUTH: (state, auth) => {
state.auth = auth; state.auth = auth
}, },
SET_COMPANYTYPE: (state, data) => { SET_COMPANYTYPE: (state, data) => {
//chainParentMark 1:总公司 0:分公司 //chainParentMark 1:总公司 0:分公司
state.companyType = data.chainParentMark; state.companyType = data.chainParentMark
state.companyId = data.userCompany; state.companyId = data.userCompany
}, }
}; }
const actions = { const actions = {
info({ commit }, data) { info({ commit }, data) {
commit("SET_AUTH", data.authList); commit('SET_AUTH', data.authList)
commit("SET_NAME", data.name); commit('SET_NAME', data.name)
commit("SET_COMPANYTYPE", data); commit('SET_COMPANYTYPE', data)
}, },
}; removeInfo({ commit }) {
commit('SET_AUTH', null)
commit('SET_NAME', '')
commit('SET_COMPANYTYPE', 0)
}
}
export default { export default {
namespaced: true, namespaced: true,
state, state,
mutations, mutations,
actions, actions
}; }

@ -1,89 +1,89 @@
import Vue from "vue"; import Vue from 'vue'
import axios from "axios"; import axios from 'axios'
import utils from "@/utils/encode"; import utils from '@/utils/encode'
//加密白名单 //加密白名单
const encryptWhite = []; const encryptWhite = []
const env = process.env.VUE_APP_ENV; const env = process.env.VUE_APP_ENV
const service = axios.create({ const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
timeout: 20000, timeout: 20000
}); })
// 请求拦截 // 请求拦截
service.interceptors.request.use( service.interceptors.request.use(
(config) => { config => {
let token = localStorage.getItem("businessToken"); let token = localStorage.getItem('businessToken')
if (token) { if (token) {
config.headers["Authorization"] = token; config.headers['Authorization'] = token
} else delete config.headers["Authorization"]; } else delete config.headers['Authorization']
const JSESSIONID = utils.uuid(); const JSESSIONID = utils.uuid()
config.headers["JSESSIONID"] = JSESSIONID; config.headers['JSESSIONID'] = JSESSIONID
config.headers["token"] = utils.bcrypt(JSESSIONID); config.headers['token'] = utils.bcrypt(JSESSIONID)
config.headers['dataSources'] = 'WEB' config.headers['dataSources'] = 'WEB'
if (env === "development") { if (env === 'development') {
return config; return config
} }
if (env === "production" || ebv === "test") { if (env === 'production' || env === 'test') {
//加密 //加密
config.data = { config.data = {
params: utils.encrypt(JSON.stringify(config.data)), params: utils.encrypt(JSON.stringify(config.data))
}; }
} }
if (config.responseType === "blob" && !encryptWhite.includes(config.url)) { // if (config.responseType === 'blob' && !encryptWhite.includes(config.url)) {
const data = { // const data = {
params: utils.encrypt(JSON.stringify(config.data)), // params: utils.encrypt(JSON.stringify(config.data))
}; // }
config.data = data; // config.data = data
} // }
return config; return config
}, },
(error) => { error => {
console.log("axios request error:", error); console.log('axios request error:', error)
return Promise.reject(); return Promise.reject()
} }
); )
// 响应拦截 // 响应拦截
service.interceptors.response.use( service.interceptors.response.use(
(response) => { response => {
const res = response.data; const res = response.data
const contentType = response.headers["content-type"]; const contentType = response.headers['content-type']
//流文件 //流文件
if (!contentType.includes("application/json")) return res; if (!contentType.includes('application/json')) return res
if (env === "production" || env === "test") { if (env === 'production' || env === 'test') {
if (res.encrypt === 1) { if (res.encrypt === 1) {
const dataParam = JSON.parse(utils.decrypt(res.data)); const dataParam = JSON.parse(utils.decrypt(res.data))
res.data = JSON.stringify(dataParam) === "{}" ? null : dataParam; res.data = JSON.stringify(dataParam) === '{}' ? null : dataParam
} }
} }
if (res && res.code) { if (res && res.code) {
if (res.code === 42011) { if (res.code === 42011) {
Vue.prototype.$message.error(res.msg || "您的登录已失效,请重新登录"); Vue.prototype.$message.error(res.msg || '您的登录已失效,请重新登录')
localStorage.removeItem("businessToken"); localStorage.removeItem('businessToken')
setTimeout(() => { setTimeout(() => {
window.location.reload(); window.location.reload()
}, 1000); }, 1000)
return; return
} }
// 白名单 // 白名单
if (![20000, 42014, 46001].includes(res.code)) { if (![20000, 42014, 46001].includes(res.code)) {
console.log("code码:" + res.code); console.log('code码:' + res.code)
Vue.prototype.$message.error(res.msg); Vue.prototype.$message.error(res.msg)
return Promise.reject(); return Promise.reject()
} else { } else {
return res; return res
} }
} }
}, },
(error) => { error => {
Vue.prototype.$message.error("请求失败"); Vue.prototype.$message.error('请求失败')
console.log("axios response error:", error); console.log('axios response error:', error)
return Promise.reject(error); return Promise.reject(error)
} }
); )
export default service; export default service

Loading…
Cancel
Save