修改框架 fast.js ,在Fast.api 里面添加如下代码
ajax_get: function (options, success, error) { options = typeof options === 'string' ? {url: options} : options; var index; if (typeof options.loading === 'undefined' || options.loading) { index = Layer.load(options.loading || 0); } options = $.extend({ type: "GET", dataType: "json", xhrFields: { withCredentials: true }, success: function (ret) { index && Layer.close(index); ret = Fast.events.onAjaxResponse(ret); if (ret.code === 1) { var data = typeof ret.data !== 'undefined' ? ret.data : null; if (typeof success === 'function') { var result = success.call(this, data, ret); if (result === false) return; } } else { Fast.events.onAjaxError(ret, error); } }, error: function (xhr) { index && Layer.close(index); var ret = {code: xhr.status, msg: xhr.statusText, data: null}; Fast.events.onAjaxError(ret, error); } }, options); return $.ajax(options); },
在对应搜索 index.html 添加 按钮
<a href="javascript:" class="btn btn-primary export_data" title="{:__('导出数据csv')}" ><i class="fa fa-share-square-o"></i> {:__('导出数据csv')}</a>
对应 js 文件添加 js 监听
$(document).on("click", ".export_data", function () { var m = '确定导出根据条件的全部数据吗?'; /*获取搜索条件*/ var where={},op={},data={}; var form_data=$('.commonsearch-table form').serializeArray(); var i_name; //获取搜索条件 $(form_data).each(function () { var index=this.name.indexOf('-operate') if (index >0){ i_name=this.name.substring(0,index); op[i_name]=this.value; }else { if (this.value !=''){ i_name=this.name; where[i_name]=this.value; } } }) data.filter= JSON.stringify(where); data.op=JSON.stringify(op); Layer.confirm(m, function (index) { Layer.close(index); Fast.api.ajax_get({ url: "agency/euback_flow/export_data", data: data, }, function (data, ret) { // console.log(ret) //直接跳转到文件 输出下载 window.location.href=ret.url; }); }); return false; });
对应 控制器添加 导出方法
/** * @author TechKoga * @date 2022/2/16 * @describe 导出 */ public function export_data(){ if($this->request->isAjax()){ list($where, $sort, $order, $offset, $limit) = $this->buildparams(); $header=['ID','会员ID','代理ID','交易金额','基础汇率','交易时间']; set_time_limit(0); $f_name='每笔订单记录_'; $file_Name=$f_name.date('Y-m-d').'_'.mt_rand(0,99); //文件存放文件夹不存在则创建 if (!file_exists ( './uploads/csv/' )) { @mkdir ( "./uploads/csv/", 0777, true ); } //文件路径 $filepath="/uploads/csv/".$file_Name.'.csv'; $file = fopen('.'.$filepath,"a"); //打开csv文件,如果不存在则创建 fwrite($file, chr(0xEF) . chr(0xBB) . chr(0xBF)); //写入头部栏目 fputcsv($file, $header); $dataArr =$this->model->where($where)->select(); foreach ($dataArr as $kk=>$a) { //数据格式转换成 utf8 $a->merchant = iconv('gb2312','utf-8',$a->merchant); $a->createtime = date('Y-m-d H:i:s', $a->createtime); //写入csv fputcsv($file, $a->toArray()); } //获取当前域名 $domain=request()->domain(); //输出下载地址 $this->success('导出成功',$domain.$filepath); } }
这里需要注意的是 csv头部栏目的 顺序需要跟 数据查询的值一致 !!!
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。