From ca8c0962e36d4ef8489e2d8a220d9953b9cf851a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 20 七月 2023 14:44:16 +0800
Subject: [PATCH] Merge branch 'master' of http://dev.vci-tech.com:1065/r/ubcs

---
 Source/UBCS-WEB/dist/src/router/axios.js |   84 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/Source/UBCS-WEB/dist/src/router/axios.js b/Source/UBCS-WEB/dist/src/router/axios.js
new file mode 100644
index 0000000..64b38fe
--- /dev/null
+++ b/Source/UBCS-WEB/dist/src/router/axios.js
@@ -0,0 +1,84 @@
+/**
+ * 鍏ㄧ珯http閰嶇疆
+ *
+ * axios鍙傛暟璇存槑
+ * isSerialize鏄惁寮�鍚痜orm琛ㄥ崟鎻愪氦
+ * isToken鏄惁闇�瑕乼oken
+ */
+import axios from 'axios';
+import store from '@/store/';
+import router from '@/router/router';
+import {serialize} from '@/util/util';
+import {getToken} from '@/util/auth';
+import {Message} from 'element-ui';
+import website from '@/config/website';
+import {Base64} from 'js-base64';
+import NProgress from 'nprogress';
+import 'nprogress/nprogress.css';
+
+//榛樿瓒呮椂鏃堕棿
+axios.defaults.timeout = 10000;
+//杩斿洖鍏朵粬鐘舵�佺爜
+axios.defaults.validateStatus = function (status) {
+  return status >= 200 && status <= 500;
+};
+//璺ㄥ煙璇锋眰锛屽厑璁镐繚瀛榗ookie
+axios.defaults.withCredentials = true;
+// NProgress 閰嶇疆
+NProgress.configure({
+  showSpinner: false
+});
+//http request鎷︽埅
+axios.interceptors.request.use(config => {
+  //寮�鍚� progress bar
+  NProgress.start();
+  //headers鍒ゆ柇鏄惁闇�瑕�
+  const authorization = config.authorization === false;
+  if (!authorization) {
+    config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
+  }
+  //璁╂瘡涓姹傛惡甯oken
+  const meta = (config.meta || {});
+  const isToken = meta.isToken === false;
+  if (getToken() && !isToken) {
+    config.headers[website.tokenHeader] = 'bearer ' + getToken()
+  }
+  //headers涓厤缃畉ext璇锋眰
+  if (config.text === true) {
+    config.headers["Content-Type"] = "text/plain";
+  }
+  //headers涓厤缃畇erialize涓簍rue寮�鍚簭鍒楀寲
+  if (config.method === 'post' && meta.isSerialize === true) {
+    config.data = serialize(config.data);
+  }
+  return config
+}, error => {
+  return Promise.reject(error)
+});
+//http response 鎷︽埅
+axios.interceptors.response.use(res => {
+  //鍏抽棴 progress bar
+  NProgress.done();
+  //鑾峰彇鐘舵�佺爜
+  const status = res.data.code || res.status;
+  const statusWhiteList = website.statusWhiteList || [];
+  const message = res.data.msg || res.data.error_description || '鏈煡閿欒';
+  //濡傛灉鍦ㄧ櫧鍚嶅崟閲屽垯鑷catch閫昏緫澶勭悊
+  if (statusWhiteList.includes(status)) return Promise.reject(res);
+  //濡傛灉鏄�401鍒欒烦杞埌鐧诲綍椤甸潰
+  if (status === 401) store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
+  // 濡傛灉璇锋眰涓洪潪200鍚﹁�呴粯璁ょ粺涓�澶勭悊
+  if (status !== 200) {
+    Message({
+      message: message,
+      type: 'error'
+    });
+    return Promise.reject(new Error(message))
+  }
+  return res;
+}, error => {
+  NProgress.done();
+  return Promise.reject(new Error(error));
+});
+
+export default axios;

--
Gitblit v1.9.3