wangwei 4 rokov pred
rodič
commit
623e8c5a3c

+ 51 - 0
src/api/http.js

@@ -0,0 +1,51 @@
+// 导入axios
+import axios from 'axios';
+import cookie from 'js-cookie';
+
+
+// 进行一些全局配置
+// 公共路由(网络请求地址)
+axios.defaults.baseURL = process.env.API_URL;
+// 请求响应超时时间
+axios.defaults.timeout = 5000;
+// 设置请求头
+// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
+
+// 封装自己的get/post方法
+export default {
+  get: function(path = '', data = {}) {
+    return new Promise(function(resolve, reject) {
+      const token = cookie.get('token')
+      axios.get(path, {
+        params: data,
+        headers:{
+          'Content-Type': 'application/x-www-form-urlencoded',
+          'Authorization': token
+        }
+      })
+        .then(function(response) {
+          resolve(response.data);
+        })
+        .catch(function(error) {
+          reject(error);
+        });
+    });
+  },
+  post: function(path = '', data = {}) {
+    return new Promise(function(resolve, reject) {
+      const token = cookie.get('token')
+      axios.post(path, data, {
+        headers:{
+          'Content-Type': 'application/x-www-form-urlencoded',
+          'Authorization': token
+        }
+      })
+        .then(function(response) {
+          resolve(response.data);
+        })
+        .catch(function(error) {
+          reject(error);
+        });
+    });
+  }
+};

+ 8 - 0
src/api/require.js

@@ -0,0 +1,8 @@
+// 导入封装好的网络请求类工具
+import http from './http';
+import urls from './urls'
+// 封装各种接口请求
+export default require = {
+  test: (params) => http.get(urls.test_url, params),
+  login: (params) => http.post(urls.login_url, params),
+}

+ 4 - 0
src/api/urls.js

@@ -0,0 +1,4 @@
+export default urls = {
+  login_url: '/login',
+  test_url: '/test',
+}

+ 33 - 0
src/store/modules/app/actions.js

@@ -0,0 +1,33 @@
+// import axios from '@/api/axios';
+import require from '@/api/require'
+import { processReturn } from '@/utils/common';
+import { SET_USER, SET_TOKEN, SET_LOADING } from './mutation-types';
+
+const actions = {
+  async register({ commit }, payload) {
+    commit(SET_LOADING, true);
+    const res = await axios.post('/auth/register', {
+      ...payload,
+    });
+    const data = processReturn(res);
+    commit(SET_LOADING, false);
+    if (data) {
+      commit(SET_USER, data.user);
+      commit(SET_TOKEN, data.token);
+      return data;
+    }
+  },
+  async login({ commit }, payload) {
+    commit(SET_LOADING, true);
+    const res = await require.login({...payload});
+    const data = processReturn(res);
+    commit(SET_LOADING, false);
+    if (data) {
+      commit(SET_USER, data.user);
+      commit(SET_TOKEN, data.token);
+      return data;
+    }
+  },
+};
+
+export default actions;

+ 36 - 0
src/store/modules/app/getters.js

@@ -0,0 +1,36 @@
+import cookie from 'js-cookie';
+
+const getters = {
+  user(state) {
+    // eslint-disable-next-line no-unused-expressions
+    state.user;
+    const user = cookie.get('user');
+    if (!user) {
+      return {};
+    }
+    state.user = JSON.parse(user);
+    return state.user;
+  },
+  mobile(state) {
+    return state.mobile;
+  },
+  background(state) {
+    // eslint-disable-next-line no-unused-expressions
+    state.background;
+    return localStorage.getItem('background');
+  },
+  activeTabName(state) {
+    return state.activeTabName;
+  },
+  token(state) {
+    return state.token;
+  },
+  apiUrl(state) {
+    return state.apiUrl;
+  },
+  loading(state) {
+    return state.loading;
+  },
+};
+
+export default getters;

+ 14 - 0
src/store/modules/app/index.js

@@ -0,0 +1,14 @@
+import actions from './actions';
+import mutations from './mutations';
+import getters from './getters';
+import state from './state';
+
+const app = {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+  getters,
+};
+
+export default app;

+ 44 - 0
src/store/modules/app/mutations.js

@@ -0,0 +1,44 @@
+import cookie from 'js-cookie';
+import { SET_USER, CLEAR_USER, SET_TOKEN, SET_MOBILE, SET_BACKGROUND, SET_ACTIVETABNAME, SET_LOADING } from './mutation-types';
+
+const mutations = {
+  [SET_USER](state, payload) {
+    state.user = payload;
+    // 数据持久化
+    cookie.set('user', payload, { expires: 3650 });
+  },
+
+  [CLEAR_USER](state) {
+    state.user = {
+      userId: '',
+      username: '',
+      password: '',
+      avatar: '',
+      createTime: 0,
+    };
+    cookie.set('user', '');
+    cookie.set('token', '');
+  },
+
+  [SET_TOKEN](state, payload) {
+    state.token = payload;
+    cookie.set('token', payload, { expires: 3 });
+  },
+
+  [SET_MOBILE](state, payload) {
+    state.mobile = payload;
+  },
+
+  [SET_BACKGROUND](state, payload) {
+    state.background = payload;
+    localStorage.setItem('background', payload);
+  },
+  [SET_ACTIVETABNAME](state, payload) {
+    state.activeTabName = payload;
+  },
+  [SET_LOADING](state, payload) {
+    state.loading = payload;
+  },
+};
+
+export default mutations;

+ 0 - 1
src/utils/common.js

@@ -1,5 +1,4 @@
 import Vue from 'vue';
-import { AxiosResponse } from 'axios';
 
 // 处理所有后端返回的数据
 export function processReturn(res) {

+ 0 - 0
src/utils/require.js