import axios from 'axios' // axios.defaults.timeout = 30 * 1000; // axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; import FileSaver from 'file-saver' import { saveAs } from 'file-saver/FileSaver'; import { reject } from 'lodash'; export function getRequest(url, params, noFilter) { var newParam if (!noFilter) { newParam = params } else { newParam = params } url += (url.indexOf('?') < 0 ? '?' : '&') + translateParam(newParam) return new Promise((resolve, reject) => { return axios.get(url).then(res => { resolve(res) }) .catch(err => { reject(err) }) }) } export function postRequest(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }) }) } export function putRequest(url, params) { return new Promise((resolve, reject) => { axios.put(url, params) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }) }) } export function deleteRequest(url, params) { return new Promise((resolve, reject) => { axios.delete(url, { data: params }) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }) }) } // 下载文件 post export function downloadPost(params, url, fileName = "") { return new Promise((resolve, reject) => { let context = '' axios({ method: 'post', headers: { 'Content-type': 'application/json' }, data: params, url: url }).then(res => { let data = res.data var FileSaver = require('file-saver'); var file = new File(['\uFEFF' + data], fileName + new Date().getTime() + '.csv', { type: 'text/plain;charset=utf-8' }); FileSaver.saveAs(file); resolve() }) }) } // 下载文件 get export function downloadUrl(url, type = '.csv', name) { return new Promise((resolve, reject) => { let context = '' axios.get(url).then(res => { // console.log(res) context = res.data let file = new File(["\uFEFF" + context], (name ? name : new Date().getTime()) + type, { type: "text/plain;charset=utf-8" }) FileSaver.saveAs(file) resolve() }) }) } // 导出execl文件POST export function downloadExeclPost(url, params, type, fileName = '') { return new Promise((resolve, reject) => { axios({ method: "post", url: url, headers: { 'Content-type': 'application/json' }, responseType: "blob", data: params, }).then((res) => { console.log(" res.headers['content-disposition']", res, res.headers['content-disposition']) if (null != res.headers['content-disposition']) { fileName = res.headers['content-disposition'].split('=')[1]; } else { // fileName = new Date().getTime() + '.' + type fileName = '金融车批量查询' + '.' + type } fileDownload(res.data, type, fileName); resolve() }).catch((error) => { alert("网络请求出错!", error) }) }) } // 导出execl文件 export function downloadExecl(url, type, fileName = '') { return new Promise((resolve, reject) => { axios({ method: "GET", url: url, responseType: "blob", // data: {}, //此处配置token和入参类型 // transformRequest: [function(fData, headers) { // headers['Content-Type'] = 'application/json' // headers['Authorization'] = 'RDS eyJhbGciOiJIUzUxMiJ9.eyJyYW5kb21LZXkiOiIwLjI4MjIwNTI2OTQ2MjgyMTEiLCJzdWIiOiJjZWQ0NTViOTAyNDRhMmZlZDBjMmIzNmI4MjY1ZWY4MiIsImV4cCI6MTYwMTI5ODg2OCwiaWF0IjoxNjAxMjU1NjY4fQ.kGmaiXn8qZfC1ZnHCwWO6rMcmO_a1u60CsL-9oANV81Nv-nD7S2crDGpAGTECXxYcVvM6R3Uyj13UuZnBrSfVQ.wmrds142' // return JSON.stringify(fData) // }] }).then((res) => { if (null != res.headers['content-disposition']) { const tempName = res.headers['content-disposition'].split('=')[1]; fileName = decodeURI(tempName) } else { fileName = new Date().getTime() + '.' + type } fileDownload(res.data, type, fileName); resolve() }).catch((error) => { alert("网络请求出错!", error) }) }) } function fileDownload(data, type, fileName) { let blob = new Blob([data], { type: "application/octet-stream" }); let filename = fileName || "filename." + type; if (typeof window.navigator.msSaveBlob !== "undefined") { window.navigator.msSaveBlob(blob, filename); } else { var blobURL = window.URL.createObjectURL(blob); var tempLink = document.createElement("a"); tempLink.style.display = "none"; tempLink.href = blobURL; tempLink.setAttribute("download", filename); if (typeof tempLink.download === "undefined") { tempLink.setAttribute("target", "_blank"); } document.body.appendChild(tempLink); tempLink.click(); document.body.removeChild(tempLink); window.URL.revokeObjectURL(blobURL); } } export function translateTqParam(data) { let url = '' for (var k in data) { let value = data[k] !== undefined ? data[k] : '' url += `&${k}=${value}` } return url ? url.substring(1) : '' } export function translateParam(data) { let url = '' for (var k in data) { let value = data[k] !== undefined ? data[k] : '' url += `&${k}=${encodeURIComponent(value)}` } return url ? url.substring(1) : '' } export function filterParam(param) { let obj = {} for (let key in param) { if (param[key]) { obj[key] = param[key] } } return obj }
import { getRequest, postRequest, downloadPost } from '@/assets/js/request' import { reqUrl } from './api' const BaseUrls = { getVins:reqUrl + 'tripanalyse/getOperatingCarVins' } export default { getVins(params) { let url = BaseUrls.getVins try { const result = postRequest(url, params) return result } catch (err) { return err } }, searchTableNames(params) { let url = BaseUrls.searchTableNames try { const result = getRequest(url, params) return result } catch (err) { return err } }, getDelete(params) { let url = BaswUrls.getDelete try{ const result = deleteRequest(url,params) return result }catch(err){ return err } } downloadDetail(params,fileName) { let url = BaseUrls.downloadDetail try { const result = downloadPost(params, url,fileName) return result } catch (err) { return err } }, socDistributionDownLoad(params,name){ let url = `${BaseUrls.socDistributionDownLoad}?${translateParam(params)}` // let type = 'xls' await downloadUrl(url,'.csv',name) } bmsByBatteryDownload(params) { let url = `${BaseUrls.bmsByBatteryDownload}` let type = 'xls' await downloadExeclPost(url, params, type) } async infoDownload(params){ let url = `${BaseUrls.infoDownload}?${translateParam(params)}` let type = 'xls' await downloadExecl(url, type) }, }