From f26f29d84e0a68831a6af14dab3eec5500496d2e Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 28 五月 2025 16:48:52 +0800
Subject: [PATCH] 初始化项目

---
 common/http.interceptor.js |  163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 163 insertions(+), 0 deletions(-)

diff --git a/common/http.interceptor.js b/common/http.interceptor.js
new file mode 100644
index 0000000..55358ae
--- /dev/null
+++ b/common/http.interceptor.js
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
+ */
+
+import errorCode from "./errorCode";
+import config from "./config";
+
+// 姝ゅ绗簩涓弬鏁皏m锛屽氨鏄垜浠湪椤甸潰浣跨敤鐨則his锛屼綘鍙互閫氳繃vm鑾峰彇vuex绛夋搷浣�
+const install = (Vue, vm) => {
+
+    // 閫氱敤璇锋眰澶磋瀹�
+    const ajaxHeader = 'x-ajax';
+    const sessionIdHeader = 'Authorization';
+    const rememberMeHeader = 'x-remember';
+
+    // 璇锋眰鍙傛暟榛樿閰嶇疆
+    Vue.prototype.$u.http.setConfig({
+        baseUrl: vm.vuex_config.baseUrl,
+        originalData: true,
+        // 榛樿澶撮儴锛宧ttp2绾﹀畾header鍚嶇О缁熶竴灏忓啓 ThinkGem
+        header: {
+            'x-requested-with': 'XMLHttpRequest'
+        }
+    });
+
+    // 璇锋眰鎷︽埅锛岄厤缃甌oken绛夊弬鏁�
+    Vue.prototype.$u.http.interceptor.request = (req) => {
+
+        if (!req.header) {
+            req.header = [];
+        }
+
+        // 榛樿鎸囧畾杩斿洖 JSON 鏁版嵁
+        if (!req.header[ajaxHeader]) {
+            req.header[ajaxHeader] = 'json';
+        }
+
+        // 璁惧畾浼犻�� Token 璁よ瘉鍙傛暟 ThinkGem
+        if (!req.header[sessionIdHeader] && vm.vuex_token) {
+            req.header[sessionIdHeader] = 'Bearer ' + vm.vuex_token;
+        }
+		
+        // 涓鸿妭鐪佹祦閲忥紝璁颁綇鎴戞暟鎹笉鏄瘡娆¢兘鍙戦�佺殑锛屽綋浼氳瘽澶辨晥鍚庯紝灏濊瘯閲嶈瘯鐧诲綍 ThinkGem
+        if (!req.header[rememberMeHeader] && vm.vuex_remember && req.remember) {
+            req.header[rememberMeHeader] = vm.vuex_remember;
+            req.remember = false;
+        }
+		
+		//浼犻�扐PP鐗堟湰鍙�
+		//req.header['APP-VERSION'] = config.appv;
+
+        // console.log('request', req);
+        return req;
+    }
+
+    // 鍝嶅簲鎷︽埅锛屽垽鏂姸鎬佺爜鏄惁閫氳繃
+    Vue.prototype.$u.http.interceptor.response = async (res, req) => {
+        const status = Number(res.statusCode) || 200
+        const message = res.data.msg || errorCode[status] || errorCode['default']
+		
+		//鍒ゆ柇鐗堟湰
+		if ((status == 200 || res.data.code === 1) && message.split("@")[0]=='APP-VERSION')  {
+			vm.$u.toast(message.split("@")[1]);
+			return	Promise.reject(new Error(message.split("@")[1]))
+		}
+		//杩斿洖鐢ㄦ埛鍑瘉宸茶繃鏈熸椂锛屽埛鏂皌oken璺宠浆鑷冲簲鐢ㄩ椤�
+		if(message=='鐢ㄦ埛鍑瘉宸茶繃鏈�'){
+			let currRefreshToken=vm.vuex_refresh_token
+			let refreshTokenParam={
+				grant_type:'refresh_token',
+				refresh_token:currRefreshToken,
+				client_id:'pig',
+				client_secret:'pig'
+			}
+			//娓呯┖瀛樺偍淇℃伅
+			vm.$u.vuex('vuex_token', '')
+			vm.$u.vuex('vuex_refresh_token', '')
+			vm.$u.vuex('vuex_username', '')
+			vm.$u.vuex('vuex_userId', '')
+			vm.$u.vuex('vuex_client_id', '')
+			vm.$u.vuex('vuex_user', {})
+			
+			vm.$u.api.refreshToken(refreshTokenParam).then((resAgain) => {
+			    //瀛樺偍鐩稿叧淇℃伅
+				vm.$u.vuex("vuex_token", resAgain.access_token);
+				vm.$u.vuex("vuex_refresh_token", resAgain.refresh_token);
+				vm.$u.vuex("vuex_username", resAgain.user_info.username);
+				vm.$u.vuex("vuex_userId", resAgain.user_info.id);
+				//vm.$u.vuex("vuex_client_id", resAgain.client_id);
+				vm.$u.vuex("vuex_user", resAgain.user_info);
+			
+			    setTimeout(() => {
+			        uni.reLaunch({
+			            url: '/pages/sys/home/index'
+			        });
+			    }, 500);
+			
+			}).catch(()=>{
+				setTimeout(() => {
+				    uni.reLaunch({
+				        url: '/pages/sys/login/index'
+				    });
+				}, 500);
+			});
+			return
+		}
+        // 鍚庡彴瀹氫箟 424 閽堝浠ょ墝杩囧幓鐨勭壒娈婂搷搴旂爜
+        if (status === 424) {
+            vm.$u.toast('浠ょ墝杩囨湡锛岃閲嶆柊鐧诲綍');
+            vm.$u.api.logout().then(res => {
+                //娓呯┖瀛樺偍淇℃伅
+                vm.$u.vuex('vuex_token', '')
+                vm.$u.vuex('vuex_refresh_token', '')
+                vm.$u.vuex('vuex_username', '')
+                vm.$u.vuex('vuex_userId', '')
+                vm.$u.vuex('vuex_client_id', '')
+                vm.$u.vuex('vuex_user', {})
+
+                setTimeout(() => {
+                    uni.reLaunch({
+                        url: '/pages/sys/login/index'
+                    });
+                }, 500);
+
+            });
+            return
+        }
+
+        if (status !== 200 || res.data.code === 1) {
+            vm.$u.toast(message,3500);
+            return Promise.reject(new Error(message))
+        }
+
+        return res.data;
+    }
+
+    // 灏佽 get text 璇锋眰
+    vm.$u.getText = (url, data = {}, header = {}) => {
+        return vm.$u.http.request({
+            dataType: 'text',
+            method: 'GET',
+            url,
+            header,
+            data
+        })
+    }
+
+    // 灏佽 post json 璇锋眰
+    vm.$u.postJson = (url, data = {}, header = {}) => {
+        header['content-type'] = 'application/json';
+        return vm.$u.http.request({
+            url,
+            method: 'POST',
+            header,
+            data
+        })
+    }
+
+}
+
+export default {
+    install
+}

--
Gitblit v1.9.3