常用 Util
千分位显示优化
/**
* 时间格式化
* @param {*} fmt 格式 yyyy-MM-dd hh:mm:ss
* @param {*} date 时间
*/
function dateformat(fmt = 'yyyy-MM-dd hh:mm:ss', date) {
date = new Date(date);
let o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (let k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
文件上传
/**
*
* @param {*} name 文件名称
* @param {*} url 访问地址
*/
function exportFilePublic(name = "fileName", url, data, callback) {
const token = localStorage.getItem("token");
var xmlResquest;
if (window.XMLHttpRequest) {
xmlResquest = new XMLHttpRequest();
} else {
xmlResquest = new ActiveXObject("microsoft.XMLHTTP");
}
xmlResquest.open("POST", '真实地址', true);
xmlResquest.setRequestHeader("content-type", "application/json");
xmlResquest.setRequestHeader("authorization", token);
xmlResquest.responseType = "blob"; //区分流 和字符的区别
xmlResquest.onload = function (oEvent) {
var content = null;
//另一只种方法
var reader = new FileReader(); // 挂载
reader.onload = e => {
try {
let res = JSON.parse(e.target.result);
console.error(res.message);
return;
} catch (err) {
content = xmlResquest.response;
var elink = document.createElement("a");
elink.download = name + ".xlsx";
elink.style.display = "none";
var blob = new Blob([content], { type: "text/plain;charset=utf-8" });
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, name + ".xlsx");
} else {
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
}
if (callback) callback();
}
};
// readAsText 方法是异步的 必须要挂载 实例下的 onload 或 onloadend 的方法处理转化后的结果
reader.readAsText(xmlResquest.response);
return;
//另一种方法
//IE 11 是没有Response对象的
var text = new Response(xmlResquest.response).text();
text
.then(data => {
try {
content = JSON.parse(data);
console.error(content.message);
} catch (err) {
content = xmlResquest.response;
var elink = document.createElement("a");
elink.download = name + ".xlsx";
elink.style.display = "none";
var blob = new Blob([content], { type: "text/plain;charset=utf-8" });
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, name + ".xlsx");
} else {
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
}
if (callback) callback();
}
})
.catch(err => {
console.error(err);
});
};
xmlResquest.send(JSON.stringify(data));
xmlResquest.onerror = () => {
if (callback) callback();
console.error("下载文件错误!");
};
}