导出时间过长,页面加载样式(layui)

前台代码

实现逻辑其实是通过cookie来确定是否已经导出完毕,前台定时查询cookie,后台下载完毕后向cookie存入值
1、页面引用

<link rel="stylesheet" href="../Js/layer/skin/layer.css"  />
<script type="text/javascript" src="../Js/layer/layer.js"></script>

2、ajax请求中应用

<script type="text/javascript">
var loadingFlag;
//由于ajax不支持导出,因此使用重定向
/*$.ajax({
    url: "../FlightHandler/JDFlightHandler.ashx",
    type: "post",
    data: info,
    dataType: "text",
    beforeSend: function (XMLHttpRequest) {
        //注意,layer.msg默认3秒自动关闭,如果数据加载耗时比较长,需要设置time
        loadingFlag= layer.msg('正在读取数据,请稍候……', { icon: 16, shade: 0.01,shadeClose:false,time:60000 });
    },
    success: function (data) {
    
            layer.close(loadingFlag);
    },
    complete: function (XMLHttpRequest, textStatus) {

    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {

    }
});*/
layui.config({base: '${path}' + LayuiConfig.layuiLibPath}).use(['form', 'laydate', 'laypage', 'laytpl', 'tablePlug'], function () {
	form.on('submit(f_export)', function (data) {
		loadingFlag = layer.msg('正在导出数据,请稍候……', {icon: 16, shade: 0.01, shadeClose: false, time: 60000});//设置最长时间一分钟
	    window.location.href = "${path}/export?" + parseParam(formData);
	    testCookie();
	}
});
//检测方法 查看cookie是否写入,写入证明已导出
function testCookie(){
    debugger;
    console.log(getLoadingFlagCookie("loadingFlag"));
    if(getLoadingFlagCookie("loadingFlag")){
        //关闭加载样式
        layer.close(loadingFlag);
        //设置cookie立即过期清除标志cookie
        debugger;
        var date = new Date();
        document.cookie = "loadingFlag=''; expires="+date.toGMTString()+" ; path=/";
    }else{
        //500ms检测一次,根据实际情况修改
        setTimeout("testCookie()",500);
    }
}

//根据名称获取cookie,项目cookie数量多的话可以做优化
function getLoadingFlagCookie(name){
    //debugger;
    var strcookie = document.cookie;//获取cookie字符串
    var arrcookie = strcookie.split("; ");//分割
    //遍历匹配
    for ( var i = 0; i < arrcookie.length; i++) {
        var arr = arrcookie[i].split("=");
        if (arr[0] == name){
            return arr[1];
        }
    }
    return "";
}
</script>

后台代码

只用存入cookie即可

//生成Excel
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), tClass, outputData);
//设置cookie防止导出时间过长,重复点击
Cookie cookie = new Cookie("loadingFlag", "true");
cookie.setPath("/");
response.addCookie(cookie);
workbook.write(response.getOutputStream());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值