ex_field_str = [''].join(''); ex_base_str = [''].join(''); ;(function($) { //变量初始化 var timer1, timer2; var delay = 3000; window.export_eid = ''; window.export_url = ''; window.export_data = {}; window.export_timer1 = 'notrun'; $.fn.data_export = function(opts) { // 导出框变量 var ex_field_dia =$(ex_field_str); var ex_base_dia =$(ex_base_str); // 获取导出状态 function get_export_progress(){ // 组装post export_data $.extend(window.export_data, { 'request':'get', 'eid': window.export_eid, }); $.ajax({ url:export_url, dataType:"json", data:window.export_data, cache:false, type:"POST", success: function(data){ clearInterval(timer2); ex_base_dia.find("#base_export_progressbar").attr("style", "width:"+data['percentage']+";");//进度条更新 ex_base_dia.find("#base_export_detail").html(data['progress']); if(data['ret'] == 'finished'){//是否结束 ex_base_dia.find("#base_export_download").show(); ex_base_dia.find("#base_export_progressbar").attr("style", "width:100%;"); ex_base_dia.find("#base_export_close").show(); ex_base_dia.find("#base_export_detail").hide(); ex_base_dia.find("#base_export_stop").hide(); var download_element = ex_base_dia.find("#base_export_downloadurl"); download_element.html('导出完成,请点击此处下载'); download_element.attr('href', data['downloadurl']).click(function () { $(this).html('下载中,请稍后...'); window.location.href = $(this).attr('href'); $(this).attr('href', '#').addClass('text-muted'); }); clearInterval(timer1); window.export_timer1 = 'notrun'; } else if(data['ret'] == 'stoped'){ var message = data.message || '处理错误!'; ex_base_dia.find("#base_export_error").html(message).show(); ex_base_dia.find("#base_export_close").show(); ex_base_dia.find("#base_export_detail").hide(); ex_base_dia.find("#base_export_stop").hide(); clearInterval(timer1); window.export_timer1 = 'notrun'; } } }); } // 发出开始导出请求 function start_export_handel(){ // 组装post export_data $.extend(window.export_data, { 'request':'start', 'eid': window.export_eid }); $.ajax({ url:export_url, dataType:"json", data:window.export_data, cache:false, type:"POST", success: function(data){ if(data['ret'] == 'started'){//请求成功,初始化进度条,开始获取进度 if(window.export_timer1 == 'notrun'){ window.export_eid = data['eid']; ex_field_dia.modal('hide'); ex_base_dia.modal('show'); ex_base_dia.find("#base_export_download").hide(); ex_base_dia.find("#base_export_error").hide(); ex_base_dia.find("#base_export_close").hide(); ex_base_dia.find("#base_export_progressbar").attr("style", "width:0%;").show(); ex_base_dia.find("#base_export_detail").html('').show(); ex_base_dia.find("#base_export_stop").show(); window.export_timer1 = 'running'; timer1 = setInterval(get_export_progress,delay);//循环获取导出状态 } clearInterval(timer2); } } }); } // 外部调用函数 用于开始导出数据 function start_export(){ // 附加参数 var extra_data = {}; try { var mix = eval(context.attr("extra-data")); // 数据 if(typeof mix == 'object') extra_data = mix; context.trigger("extra-data"); // 控件数据 $.extend(extra_data, context.data("extra-data")); } catch (e) {console.log(e);} $.extend(window.process_data, extra_data); $.extend(window.process_data, options.data); // 点击后立即隐藏字段选择弹出框 ex_field_dia.modal('hide'); if(timer2) clearInterval(timer2); start_export_handel(); timer2 = setInterval(start_export_handel, delay); } // 初始化导出框多选列表 function init_export_dialog() { var export_columns = options['export_columns'] || ''; var field_select_dom = ex_field_dia.find('select#export_field_select').empty(); var _ea = export_columns.split(','); for (i=0; i<_ea.length; i++){ var val = $.trim(_ea[i]); field_select_dom.append(""); } } // 设置导出windows.export_url function set_windows_export_url() { // 获取 export_url var export_url = options['export_url']; export_url = export_url || context.attr('href') || 'data_export/'; // export_url get参数 var search = $.query.load(window.location.search), params = $.query.load(export_url); for(var key in params.keys) search = search.set(key, params.get(key)); // 由于自动转换 param[0]=01¶m[1]=02 search_str = search.toString().replace(/%5B(\d+)%5D/g, '%5B%5D'); window.export_url = export_url.split("?")[0] + search_str; } // 点击停止导出 ex_base_dia.find("#base_export_stop_btn").click(function(){ // 提前关闭进度框 ex_base_dia.modal('hide'); // 组装post export_data $.extend(window.export_data, { 'request':'stop', 'eid': window.export_eid }); $.ajax({ url:export_url, dataType:"json", data: window.export_data, cache:false, type:"POST", success: function(data){ if(data['ret'] == 'stoped'){ //请求成功,已经停止 clearInterval(timer1); window.location.reload(); } } }); }); // 关闭及后台运行 ex_base_dia.find("#base_export_close_btn, #base_export_background_btn").click(function(){ ex_base_dia.modal('hide'); window.location.reload(); }); // 开始导出按钮 ex_field_dia.find(".export_submit_btn").click(function(){ var field_select_dom = ex_field_dia.find('select#export_field_select'); window.export_data['export_fields'] = field_select_dom.val(); window.export_data['type'] = $(this).attr('export_type') || 'excel'; start_export(); }); // 总入口 var context = $(this); var options = $.extend({},$.fn.data_export.defaults,opts); $(this).click(function(e){ e.preventDefault(); // 初始化 context = $(this); init_export_dialog(); // 初始化多选列表 set_windows_export_url(); // 设置导出windows.export_url // 执行导出操作 var export_columns = options['export_columns'] || ''; if (export_columns) ex_field_dia.modal("show"); else { window.export_data['export_fields'] = []; // 清空其他途径设置的值 window.export_data['type'] = 'excel'; start_export(); } }); }; //定义默认 $.fn.data_export.defaults = { }; })(jQuery);