|
|
import Vue from "vue";import axios from 'axios';import router from '@/router'const qs = require('qs');var apiServer = (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl);
const resolveAcceptLanguage = () => { const locale = localStorage.getItem('locale') || 'cn'; return locale === 'en' ? 'en-US' : 'zh-CN';};
const resolveAdvancedSearchHeaders = () => { const route = router && router.currentRoute ? router.currentRoute : {} let routePath = String(route.path || '').trim() if (!routePath) { return {} } if (routePath.charAt(0) !== '/') { routePath = '/' + routePath } const key = 'advanced_search_context_' + routePath let matchedKey = key let raw = sessionStorage.getItem(key) if (!raw && routePath.indexOf('/modules/') === 0) { matchedKey = 'advanced_search_context_' + routePath.substring('/modules'.length) raw = sessionStorage.getItem(matchedKey) } if (!raw && routePath.indexOf('/modules/') !== 0) { matchedKey = 'advanced_search_context_' + '/modules' + routePath raw = sessionStorage.getItem(matchedKey) } if (!raw) { return {} } try { const context = JSON.parse(raw) if (!context || !context.menuUrl || !Array.isArray(context.conditions) || context.conditions.length <= 0) { sessionStorage.removeItem(matchedKey) return {} } sessionStorage.removeItem(matchedKey) return { 'X-Advanced-Search-Menu': String(context.menuUrl), 'X-Advanced-Search-Conditions': encodeURIComponent(JSON.stringify(context.conditions)) } } catch (e) { sessionStorage.removeItem(matchedKey) return {} }}
var http = axios.create({ timeout: 10000, headers: {}, transformRequest: data => { if (typeof data === 'object') { return qs.stringify(data, { arrayFormat: 'brackets' }); } return data; }});export default { axios: http, $post(url, data, callback, error) { // 添加 headers 配置项
const config = { headers: { 'Content-Type': 'application/json;charset=UTF-8', 'token': Vue.cookie.get('token'), 'Accept-Language': resolveAcceptLanguage() } }; const advancedHeaders = resolveAdvancedSearchHeaders() Object.keys(advancedHeaders).forEach(key => { config.headers[key] = advancedHeaders[key] }) let p = http.post(apiServer +url, JSON.stringify(data), config); if (callback) { p.then(res => { callback(res); }) } if (error) { p.catch(err => { error(err); }); } return p; }, file:(url, data, succ, err )=>{ let requestUrl = apiServer + url; var xhr = new XMLHttpRequest(); xhr.open('POST', requestUrl, true); xhr.responseType = "blob"; xhr.withCredentials = true; xhr.setRequestHeader("X-API", "true"); xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xhr.setRequestHeader("token", Vue.cookie.get('token') ); xhr.setRequestHeader("Accept-Language", resolveAcceptLanguage()); const advancedHeaders = resolveAdvancedSearchHeaders() Object.keys(advancedHeaders).forEach(key => { xhr.setRequestHeader(key, advancedHeaders[key]); }) xhr.onreadystatechange = function (e) { if (xhr.readyState === 4) { if (xhr.status === 200) { succ(xhr.response) } else { var fr = new FileReader(); fr.onload = function(e) { var text = fr.result; console.log(text); err ? err(text) : alert("请求发生错误:" + text) }; fr.readAsText(xhr.response); } } }; xhr.send(data); }, apiServer: apiServer};
|