Layui表单查询导出

news/2024/10/4 6:37:14 标签: layui, 前端, javascript

1.前端界面

<!--html-->
<form class="layui-form layui-form-pane form-save" action="">
    <div class="layui-col-xs3 layui-col-sm3 layui-col-md3" style="">
            <textarea name="provider_order_id" class="layui-input"></textarea>
    </div>
    <button class="layui-btn layui-btn-primary layui-btn-md" lay-submit="search" lay-filter="search" id="search" data-type="search">查询</button>
    <button class="layui-btn layui-btn-danger layui-btn-md" lay-submit="export" lay-filter="export" id="export" data-type="export">导出</button>
</form>
javascript">// 表单提交
form.on('submit(export)', function(data){
    var parames = new Array();
    parames.push({ name: 'data', value: JSON.stringify(data.field)});
    Post("<?php echo Url::toRoute('url');?>", parames);
    return false;
});

// 跳转后端接口
function Post(URL, PARAMTERS) {
    //创建form表单
    var temp_form = document.createElement("form");
    temp_form.action = URL;
    //如需打开新窗口,form的target属性要设置为'_blank'
    temp_form.target = "_blank";
    temp_form.method = "post";
    temp_form.style.display = "none";
    //添加参数
    for (var item in PARAMTERS) {
        var opt = document.createElement("textarea");
        opt.name = PARAMTERS[item].name;
        opt.value = PARAMTERS[item].value;
        temp_form.appendChild(opt);
    }
    document.body.appendChild(temp_form);
    //提交数据
    temp_form.submit();
}

2.后端业务

/**
 * 接受查询条件和查询
 * */
public function actionExport(){
	if (Yii::$app->request->isPost){
        $post = Yii::$app->request->post('data');
        $post = json_decode($post,true);
        $data1 = $this->getdata($post);
        foreach ($data1['data'] as $k => $d){
            $data[$k]['provider_order_id'] = $d['provider_order_id'];
            // ..
        }
        $this->xlsWriteExcel('orderNum,value','订单号,订单价格',$data);
    }
}

/**
 * 插件导出
 * */
 function xlsWriteExcel($field,$header,$data,$fileName='自定义导出'){
     require_once Yii::getAlias('@vendor') . '/phpxlsxwriter/vendor/autoload.php';
     header("Content-Type: text/html;charset=utf-8");
     error_reporting(E_ALL);
     set_time_limit(0);
     ob_start();
     $sheet = 'Sheet1';
     $writer = new \XLSXWriter();
     $field = explode(',',$field);
     $header = explode(',',$header);
     $header = array_fill_keys($header,"string");
     $styles1 = array(
         'font'=>'宋体','font-size'=>10,'font-style'=>'bold', 'fill'=>'#eee',
         'halign'=>'center','border'=>'left,right,top,bottom'
     );
     $title = array_keys($header);
     $writer->writeSheetRow($sheet, $title, $styles1);
     if(!empty($data)){
         foreach ($data as $k=>$v){
             foreach ($field as $k1=>$v1){
                 if(isset($v[$v1])){
                     $rows[$k1] = $v[$v1].' ';
                 }else{
                     $rows[$k1] = '';
                 }
             }
             $writer->writeSheetRow($sheet, $rows, $styles1);
         }
     }
     $filename = $fileName.date('YmdHis',time()).'.xlsx';
     $tempFile = tempnam(sys_get_temp_dir(), 'excel');
     $writer->writeToFile($tempFile);
     header('Content-Type: application/octet-stream');
     header('Content-Disposition: attachment; filename=' . $filename);
     readfile($tempFile);
     unlink($tempFile);
 }

http://www.niftyadmin.cn/n/5689624.html

相关文章

Pikachu-Sql Inject-数字型注入(GET)

一、、破解 SQL 查询语句中的字段数 ?id1 order by 3 -- // -- 是注释&#xff0c; 加号 在MySQL中会转成空格 order by 1 &#xff0c;by 数字几&#xff0c;就是按照第几列进行排序&#xff1b;如果没有这一行&#xff0c;则报错 如&#xff1a;以下语句&#xff0c;根据…

极客兔兔Gee-Cache Day1

极客兔兔7Days GeeCache - Day1 interface{}&#xff1a;任意类型 缓存击穿&#xff1a;一个高并发的请求查询一个缓存中不存在的数据项&#xff0c;因此这个请求穿透缓存直接到达后端数据库或数据源来获取数据。如果这种请求非常频繁&#xff0c;就会导致后端系统的负载突然…

Docker巩固十七问

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 1. 如何批量清理临时镜像文件&#xff1f; 所谓的“临时镜像”或“虚悬镜像”&#xff08;dangling images&#xff09;是指那些…

【社保通-注册安全分析报告-滑动验证加载不正常导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

ElasticSearch 备考 -- 备份和恢复

一、题目 备份集群下的索引 task&#xff0c;存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份&#xff0c;主要是通过创建快照&#xff0c;涉及到以下2步骤 Setp1&#xff1a;注册一个备份 snapshot repository Setp2&#xff1a;创建 snapshot 可以通过两种方…

[VULFOCUS刷题]tomcat-pass-getshell 弱口令

tomcat-pass-getshell 弱口令 启动容器&#xff0c;打开网站 点开manageapp&#xff0c;输入弱口令 tomcat/tomcat 之后在下面上传jsp大马&#xff0c;首先生成一个jsp马 这里我直接使用github别人生成好的 tennc/webshell: This is a webshell open source project (github.…

优化后的版本

docker_operations.sh #!/bin/bash# all definition NETWORK_NAME"net-1" VOLUME_MOUNT"-v /home/norten/Public/tools:/mnt" # 容器内部挂载到主机的路径 SCRIPT_ROUTE"/mnt" # container_run_medium.sh所在的路径 IMAGE_NAME"ubuntu&quo…

Linux shell编程学习笔记85:fold命令——让文件瘦身塑形显示

0 引言 我们使用的电脑屏幕有宽有窄&#xff0c;我们有时候希望文件能按照我们的屏幕宽度来调整和匹配&#xff0c;这时我们可以使用fold命令。 1 fold命令 的帮助信息、功能、命令格式、选项和参数说明 1.1 fold 命令 的帮助信息 我们可以输入命令 fold--help 来查看fold …