vue2-s-cli
Version:
脚手架
201 lines (192 loc) • 6.51 kB
JavaScript
import { ajax as $http } from "@/util/api";
import { Notification } from "element-ui";
import store from "../store";
const postRes = (json) => {
const url = process.env.VUE_APP_URL;
// 处理参数
let reqJson = json;
const state = store.state;
const userData = state.userData || {};
const navVal = state.navVal || {};
const appVal = state.appVal || {};
let commonJson = {
accessPath: navVal.accessPath,
pageId: navVal.pageId,
accountId: userData.id,
accountName: userData.username,
projectId: state.systemId,
applicationId: appVal.project_id
};
reqJson["Param"] = { ...commonJson, ...reqJson["Param"] };
return new Promise((resolve, reject) => {
$http({
method: "post",
url: url,
data: reqJson,
responseType: reqJson.responseType || "json",
})
.then((res) => {
const resData = res.data || {};
const msg = resData.msg || "";
const code = resData.code;
if (code !== 100000 && msg) {
console.log("%c 请求失败信息 ", "color: #fff; background: #e6a23c; ", msg);
// 是否需要弹窗显示报错信息
if (!reqJson.noTip) {
Notification.warning(msg);
}
}
// 处理CSV导出
if (res.headers["content-type"].includes("application/csv")) {
const blob = new Blob(["\ufeff" + res.data], {
type: "application/ms-excel",
});
let downloadElement = document.createElement("a");
const href = window.URL.createObjectURL(blob);
downloadElement.href = href;
downloadElement.download = reqJson.Param["file_name"] || "export.xlsx";
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement);
window.URL.revokeObjectURL(href);
resolve(res);
}
resolve(resData);
})
.catch((err) => {
console.log("%c 请求catch ", "color: #fff; background: red", err);
reject(err);
});
});
};
// post请求-心娱门户
const postResXy = (json) => {
const url = process.env.VUE_APP_XYURL;
return new Promise((resolve, reject) => {
$http
.post(url, json)
.then((res) => {
const resData = res.data || {};
if (resData.code !== 0 && resData.msg) {
Notification.error(resData.msg);
return;
}
resolve(resData);
})
.catch((err) => {
Notification.error("获取用户信息失败");
reject(err);
});
});
};
const postReqExport = (json, name = "") => {
const url = process.env.VUE_APP_URL;
// 处理参数
let reqJson = json;
const state = store.state;
const userData = state.userData || {};
const navVal = state.navVal || {};
const appVal = state.appVal || {};
let commonJson = {
accessPath: navVal.accessPath,
pageId: navVal.pageId,
accountId: userData.id,
accountName: userData.username,
projectId: state.systemId,
applicationId: appVal.project_id
};
reqJson["Param"] = { ...commonJson, ...reqJson["Param"] };
return new Promise((resolve, reject) => {
$http({
method: "post",
url: url,
data: reqJson,
responseType: "blob",
})
.then((res) => {
if (res.headers["content-type"].includes("application/json")) {
console.log(111, res);
Notification.warning(res.msg || "导出失败");
resolve(res);
return;
}
// var contentDisposition = res.headers["content-disposition"]; //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
// var patt = new RegExp("filename=([^;]+\\.[^.;]+);*");
// var result = patt.exec(contentDisposition);
// var filename = result[1];
var filename = name || "文件.xlsx";
var url = window.URL.createObjectURL(res.data); //创建下载的链接
var downloadElement = document.createElement("a");
downloadElement.style.display = "none";
downloadElement.href = url;
// decodeURI 解决headers 中值乱码情况
downloadElement.setAttribute("download", `${decodeURI(filename)}`);
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
downloadElement.remove();
window.URL.revokeObjectURL(downloadElement.href); //释放掉blob对象
resolve(res);
})
.catch((err) => {
console.log("%c 请求catch ", "color: #fff; background: red", err);
reject(err);
});
});
};
// 上传文件调取的接口(上传FormData数据)
const uploadFiles = (formData, params, callback) => {
const url = process.env.VUE_APP_UPLOAD;
// 处理参数
const state = store.state;
const userData = state.userData || {};
const navVal = state.navVal || {};
const projectId = state.systemId;
const appVal = state.appVal || {};
let commonJson = {
accessPath: navVal.accessPath,
pageId: navVal.pageId,
accountId: userData.id,
accountName: userData.username,
projectId: Number(projectId),
applicationId: appVal.project_id,
...params
};
formData.append("Param", JSON.stringify(commonJson));
return new Promise((resolve, reject) => {
$http({
method: "post",
url: url,
data: formData,
onUploadProgress: progressEvent => {
// 获取上传进度
if (progressEvent.lengthComputable) {
callback && callback(progressEvent);
}
}
})
.then(res => {
const resData = res.data || {};
const msg = resData.msg || "";
const code = resData.code;
if (code !== 100000 && msg) {
console.log(
"%c 请求失败信息 ",
"color: #fff; background: #e6a23c; ",
msg
);
Notification.warning(msg);
}
resolve(resData);
})
.catch(err => {
console.log("%c 请求catch ", "color: #fff; background: red", err);
reject(err);
});
});
}
export default {
postRes, // post请求
postResXy, // post请求
postReqExport,
uploadFiles, // 上传文件
};