From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001 From: qinchulong <qinchulong@hnkhzn.com> Date: 星期二, 27 五月 2025 15:35:27 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu --- 代码管理/WMS/WIDESEA_WMSClient/src/api/http.js | 324 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 324 insertions(+), 0 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js" new file mode 100644 index 0000000..bd86d8b --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSClient/src/api/http.js" @@ -0,0 +1,324 @@ +import axios from 'axios' +import store from '../store/index' +// import {getCurrentInstance} from 'vue' +import { useRouter, useRoute } from 'vue-router' +const router = useRouter(); +axios.defaults.timeout = 50000; +axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; + +import { ElLoading as Loading, ElMessage as Message } from 'element-plus'; + + +let loadingInstance; +let loadingStatus = false; +if (process.env.NODE_ENV == 'development') { + axios.defaults.baseURL = 'http://127.0.0.1:9290/'; +} +else if (process.env.NODE_ENV == 'debug') { + axios.defaults.baseURL = 'http://127.0.0.1:8098/'; +} + +else if (process.env.NODE_ENV == 'production') { + axios.defaults.baseURL = 'http://115.159.85.185:9291/'; +} +if (!axios.defaults.baseURL.endsWith('/')) { + axios.defaults.baseURL+="/"; +} + + +let ipAddress = axios.defaults.baseURL; +axios.interceptors.request.use((config) => { + return config; +}, (error) => { + return Promise.reject(error); +}); + +axios.interceptors.response.use((res) => { + + closeLoading(); + + checkResponse(res); + + return Promise.resolve(res); +}, (error) => { + closeLoading(); + let httpMessage = ''; + if (error.response) { + if (error.response.status == '401') { + if (error.response.data && error.response.data.code == 401) { + if (!localStorage.getItem('user')) { + Message.error({ + showClose: true, + message: '鐧婚檰宸茶繃鏈�', + type: 'error' + }); + } + toLogin(); + return; + } + + } + if (error.response.status == '404') { + httpMessage = "鏈壘鍒拌姹傚湴鍧�"; + } + else if (error.response.data && error.response.data.message) { + httpMessage = error.response.data.message; + } + } + else { + httpMessage = '鏈嶅姟鍣ㄥ鐞嗗紓甯�' + } + redirect(httpMessage); + return Promise.reject(error.response || {}, httpMessage); +}); +function closeLoading () { + if (loadingInstance) { + loadingInstance.close(); + } + if (loadingStatus) { + loadingStatus = false; + if (loadingInstance) { + loadingInstance.close(); + } + } + +} +function checkResponse (res) { + //鍒锋柊token + if (!res.headers) { + if (res.getResponseHeader("widesea_exp") == "1") { + replaceToken(); + } + } + else if (res.headers.widesea_exp == "1") { + replaceToken(); + } +} + +const _Authorization = 'Authorization'; + +function showLoading (loading) { + if (!loading || loadingStatus) { + return; + } + loadingInstance = Loading.service({ + lock: true, + text: 'Loading', + customClass:"http-loading", + background: typeof loading == "string" ? loading : '姝e湪澶勭悊.....', + background: 'rgba(58, 61, 63, 0.32)' + }); +} + +function getToken () { + return store.getters.getToken(); +} + +/* + url + params璇锋眰鍚庡彴鐨勫弬鏁�,濡傦細{name:123,values:['a','b','c']} + loading鏄惁鏄剧ず閬僵灞�,鍙互浼犲叆true.false.鍙婃彁绀烘枃鏈� + config閰嶇疆淇℃伅,濡倇timeout:3000,headers:{token:123}} +*/ +function post (url, params, loading, config) { + showLoading(loading); + axios.defaults.headers[_Authorization] = getToken(); + return new Promise((resolve, reject) => { + axios.post(url, params, config) + .then(response => { + resolve(response.data); + }, err => { + reject(err && err.data && err.data.message ? err.data.message : '鏈嶅姟鍣ㄥ鐞嗗紓甯�'); + }) + .catch((error) => { + reject(error) + }) + }) +} + +//=true寮傛璇锋眰鏃朵細鏄剧ず閬僵灞�,=瀛楃涓诧紝寮傛璇锋眰鏃堕伄缃╁眰鏄剧ず褰撳墠瀛楃涓� +function get (url, param, loading, config) { + showLoading(loading); + axios.defaults.headers[_Authorization] = getToken(); + return new Promise((resolve, reject) => { + axios.get(url, config) + .then(response => { + // console.log(response) + resolve(response.data) + }, err => { + reject(err) + }) + .catch((error) => { + reject(error) + }) + }) +} + +//url:url鍦板潃 +//params:璇锋眰鍙傛暟 +//fileName:涓嬭浇鐨勬枃浠跺悕 +//loading:鏄惁鏄剧ず鍔犺浇鐘舵�� +function download (url, params, fileName, loading,callback) { + fileName = fileName.replace(">", "锛�").replace("<", "锛�"); + post(url, params, loading, { responseType: 'blob' }).then(content => { + const blob = new Blob([content]) + if ('download' in document.createElement('a')) { // 闈濱E涓嬭浇 + const elink = document.createElement('a') + elink.download = fileName + elink.style.display = 'none' + elink.href = URL.createObjectURL(blob) + document.body.appendChild(elink) + elink.click() + URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄 + document.body.removeChild(elink) + } else { // IE10+涓嬭浇 + navigator.msSaveBlob(blob, fileName) + } + callback&&callback(); + }) +} + + +function createXHR () { + if (XMLHttpRequest) { + return new XMLHttpRequest(); + } + if (ActiveXObject) { + if (typeof arguments.callee.activeXString != "string") { + var versions = [ + "MSXML2.XMLHttp.6.0", + "MSXML2.XMLHttp", + "MSXML2.XMLHttp.3.0" + ]; + for (var i = 0; i < versions.length; i++) { + try { + new ActiveXObject(versions[i]); + arguments.callee.activeXString = versions[i]; + break; + } catch (e) { + console.log(e); + } + } + } + return new ActiveXObject(arguments.callee.activeXString); + } +} + +function redirect (responseText, message) { + try { + let responseData = typeof responseText == 'string' ? JSON.parse(responseText) : responseText; + if ((responseData.hasOwnProperty('code') && responseData.code == 401) + || (responseData.data && responseData.data.code == 401)) { + closeLoading(); + toLogin(); + } else { + if (message) { + Message.error({ + showClose: true, + message: message, + type: 'error' + }); + } + } + } catch (error) { + console.log(error); + Message.error({ + showClose: true, + message: responseText, + type: 'error' + }); + } +} + + +function toLogin () { + // const vueinstance= getCurrentInstance(); + if (window.location.hash) { + window.location.href = window.location.origin + '/#/login' + return + } + window.location.href = window.location.origin + '/login' + // router.push({ path: '/login', params: { r: Math.random() } }); +} +//鍔ㄦ�佸埛鏂皌oken +function replaceToken () { + ajax({ + url: "/api/User/replaceToken", + param: {}, + json: true, + success: function (x) { + if (x.status) { + let userInfo = store.getters.getUserInfo(); + userInfo.token = x.data; + store.commit('setUserInfo', userInfo); + } else { + console.log(x.message); + toLogin(); + } + }, + errror: function (ex) { + console.log(ex); + toLogin(); + }, + type: "post", + async: false + }); + + +} + +function ajax (param) { + let httpParam = + Object.assign({ + url: '', headers: {}, + param: {}, json: true, + success: function () { }, + errror: function () { }, + type: 'post', async: true + }, param); + + httpParam.url = axios.defaults.baseURL + httpParam.url.replace(/\/?/, ''); + httpParam.headers[_Authorization] = getToken(); + var xhr = createXHR(); + xhr.onreadystatechange = function () { + if (xhr.status == 403 || xhr.status == 401) { + redirect(xhr.responseText); + return; + } + checkResponse(xhr); + if (xhr.readyState == 4 && xhr.status == 200) { + httpParam.success(httpParam.json ? JSON.parse(xhr.responseText) : xhr.responseText); + return; + } + if (xhr.status != 0 && xhr.readyState != 1) { + httpParam.errror(xhr); + } + }; + //鍒濆鍖栬姹� + xhr.open( + httpParam.type, + httpParam.url, + httpParam.async + ); + xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + for (const key in httpParam.headers) { + xhr.setRequestHeader(key, httpParam.headers[key]); + } + let dataStr = ''; + for (const key in httpParam.param) { + dataStr += key + "=" + httpParam.param[key]; + } + try { + xhr.send(dataStr); + } catch (error) { + toLogin(); + } +} + +ajax.post = function (url, param, success, errror) { + ajax({ url: url, param: param, success: success, error: errror, type: 'post' }) +} +ajax.get = function (url, param, success, errror) { + ajax({ url: url, param: param, success: success, error: errror, type: 'get' }) +} +export default { post, get,download, ajax, ipAddress } -- Gitblit v1.9.3