Переглянути джерело

fix: 增加外部参数初始化

magic v 2 роки тому
батько
коміт
82412ef71d
3 змінених файлів з 35 додано та 1 видалено
  1. 6 1
      src/App.vue
  2. 11 0
      src/store/modules/user.js
  3. 18 0
      src/utils/http/index.js

+ 6 - 1
src/App.vue

@@ -3,14 +3,19 @@
 </template>
 
 <script>
+import qs from 'qs'
 import Cookie from 'js-cookie'
 export default {
   name: 'App',
   created () {
-    let { token, group_id } = this.$route.query
+    const qStr = location.hash && location.hash.split('?')[1]
+    const {token, group_id } = qs.parse(qStr || '')
     if (token) {
       Cookie.set('group_id', group_id)
       Cookie.set('token', token)
+
+      this.$store.commit('token', token)
+      this.$store.commit('setGroupId', group_id)
       this.$router.replace({ query: { ...this.$route.query, token: undefined, group_id: undefined } })
     }
   }

+ 11 - 0
src/store/modules/user.js

@@ -16,6 +16,7 @@ const user = {
   state: {
     signInfo: lStorage.getItem('SIGN_INFO'),
     userInfo: lStorage.getItem('USER_INFO'),
+    token: lStorage.getItem('TOKEN'),
     groupId: lStorage.getItem('GROUP_ID'),
     WX: sStorage.getItem('WX')
   },
@@ -37,6 +38,16 @@ const user = {
       state.signInfo = null
       lStorage.removeItem('SIGN_INFO')
     },
+    // 设置 token
+    setToken(state, data) {
+      state.token = data
+      lStorage.setItem('TOKEN', data)
+    },
+    // 清除 token
+    clearToken(state) {
+      state.token = null
+      lStorage.removeItem('TOKEN')
+    },
     // 设置用户信息
     setUserInfo(state, data) {
       state.userInfo = data

+ 18 - 0
src/utils/http/index.js

@@ -33,6 +33,24 @@ const service = axios.create({
   }]
 })
 
+// request 拦截器
+service.interceptors.request.use((request) => {
+  try {
+    let { token, groupId } = store.state.user;
+    if (!token) {
+      throw new Error('无登录信息,直接调用接口')
+    }
+    let query = { token, group_id: groupId }
+    if (request.method === "get") {
+      request.params = { ...query, ...request.data, ...request.params }
+    }
+    if (request.method === "post") {
+      request.data = { ...query, ...request.data }
+    }
+  } catch (err) { }
+  return request
+})
+
 // respone拦截器
 service.interceptors.response.use(
   async response => {