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)
},
}