导出文件实现

最近在做后台管理的时候有个导出记录的功能,我这边踩了个坑。后台接口是以流的形式把数据给我们,我这边是用 Blob 对象进行下载。如果不了解 Blob 的小伙伴可以查阅一下相关资料。我们来看一下用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
axios
.post('/demo', data, {
responseType: 'arraybuffer',
})
.then((res) => {
const blob = new Blob([res], {
type:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
});
const downloadElement = document.createElement('a');
const href = window.URL.createObjectURL(blob); // 创建下载的链接
downloadElement.href = href;
downloadElement.download = ''; // 下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); // 点击下载
document.body.removeChild(downloadElement); // 下载完成移除元素
window.URL.revokeObjectURL(href); // 释放掉blob对象

阅读全文

JS常用时间处理方法

简便的格式化时间

1
2
3
4
5
6
var format = function (time) {
var date = new Date(+time + 8 * 3600 * 1000);
return date.toJSON().substr(0, 19).replace("T", " ").replace(/-/g, ".");
};

var time1 = format(new Date());

阅读全文

打印功能的实现

记录一下打印功能的实现方式,之前做需求的时候有个预览打印的功能,这边分享一下,下次遇到不会再走弯路。
我这边是再做 react 项目的时候碰到了打印需求,网上其实有关基于 react 的打印插件,功能还是很强大的,我只用到了打印功能,并不需要引入第三方库,所以就用原生方法写了个。
因为我的打印是在弹窗的基础上打印一个表格,所以我新开了个页面,不然点击关闭按钮时,页面就回不来了。以下是实现的代码:

阅读全文