| 
					
				 | 
			
			
				@@ -1,8 +1,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import axios from 'axios' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { Notification, MessageBox, Message } from 'element-ui' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Notification, MessageBox, Message, Loading } from 'element-ui' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import store from '@/store' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { getToken } from '@/utils/auth' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import errorCode from '@/utils/errorCode' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { tansParams, blobValidate } from "@/utils/ruoyi"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { saveAs } from 'file-saver' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let downloadLoadingInstance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 创建axios实例 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -12,6 +16,7 @@ const service = axios.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 超时 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   timeout: 10000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // request拦截器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 service.interceptors.request.use(config => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 是否需要设置 token 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,24 +26,7 @@ service.interceptors.request.use(config => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // get请求映射params参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (config.method === 'get' && config.params) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let url = config.url + '?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    for (const propName of Object.keys(config.params)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const value = config.params[propName]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      var part = encodeURIComponent(propName) + "="; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (value !== null && typeof(value) !== "undefined") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (typeof value === 'object') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          for (const key of Object.keys(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (value[key] !== null && typeof (value[key]) !== 'undefined') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let params = propName + '[' + key + ']'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let subPart = encodeURIComponent(params) + '='; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              url += subPart + encodeURIComponent(value[key]) + '&'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          url += part + encodeURIComponent(value) + "&"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let url = config.url + '?' + tansParams(config.params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     url = url.slice(0, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     config.params = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     config.url = url; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,17 +43,24 @@ service.interceptors.response.use(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const code = res.data.code || 200; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 获取错误信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const msg = errorCode[code] || res.data.msg || errorCode['default'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 二进制数据则直接返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer'){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (code === 401) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let doms = document.getElementsByClassName('el-message-box')[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(doms === undefined){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           confirmButtonText: '重新登录', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           cancelButtonText: '取消', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           type: 'warning' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        store.dispatch('LogOut').then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          location.href = '/index'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }).catch(() => {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ).then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          store.dispatch('LogOut').then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            location.href = '/index'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).catch(() => {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return Promise.reject('无效的会话,或者会话已过期,请重新登录。') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (code === 500) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       Message({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -103,4 +98,27 @@ service.interceptors.response.use(res => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 通用下载方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function download(url, params, filename) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return service.post(url, params, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transformRequest: [(params) => { return tansParams(params) }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    responseType: 'blob' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }).then(async (data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const isLogin = await blobValidate(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (isLogin) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const blob = new Blob([data]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      saveAs(blob, filename) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Message.error('无效的会话,或者会话已过期,请重新登录。'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    downloadLoadingInstance.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }).catch((r) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.error(r) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Message.error('下载文件出现错误,请联系管理员!') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    downloadLoadingInstance.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default service 
			 |