PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

根据搜索条件异步导出CSV文件类型数据

管理员 2024-12-14
Fastadmin
6
修改框架 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修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部