Browse Source

反馈问题修改

hzd 3 months ago
parent
commit
b4f05650f2

+ 158 - 0
application/admin/controller/CompanyDispatch.php

@@ -2,6 +2,8 @@
 namespace app\admin\controller;
 
 use app\common\model\MateGoodsLog;
+use app\common\util\ExcelUtil;
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use think\App;
 use think\Db;
 use think\Exception;
@@ -90,4 +92,160 @@ class CompanyDispatch extends Auth
         return $this->fetch();
     }
 
+    public function import(){
+        return $this->fetch();
+    }
+    /**
+     * 下载点模板
+     */
+    public function downloadtem(){
+        set_time_limit(0);
+        ini_set("memory_limit","512M");
+
+        $fileName = '入库单模板.xlsx';
+        $spreadsheet = new Spreadsheet();
+        $worksheet = $spreadsheet->getActiveSheet();
+        $worksheet->setTitle("入库单模板");
+
+        $arr = array('A','B','C');
+
+        foreach($arr as $k=>$v){
+            $worksheet->getStyle($v)->getAlignment()->setWrapText(true);//换行
+            $worksheet->getStyle($v.'1')->getFont()->setBold(true);
+            $worksheet->getColumnDimension($v)->setWidth(18);
+
+            $worksheet->getStyle($v.'3')->getFont()->setBold(true);
+        }
+
+        $worksheet->setCellValueByColumnAndRow(1,1,'入库人');
+        $worksheet->setCellValueByColumnAndRow(2,1,'联系电话');
+        $worksheet->setCellValueByColumnAndRow(3,1,'备注');
+
+
+        $worksheet->setCellValueByColumnAndRow(1,3,'物品编号');
+        $worksheet->setCellValueByColumnAndRow(2,3,'单价');
+        $worksheet->setCellValueByColumnAndRow(3,3,'数量');
+
+        ob_end_clean();//清除缓冲区,避免乱码
+        header('Content-Type: application/vnd.ms-excel');
+        header('Content-Disposition: attachment;filename="'.$fileName.'"');
+        header('Cache-Control: max-age=0');
+
+        $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
+        $writer->save('php://output'); //文件通过浏览器下载
+
+    }
+
+    public function importexcel(){
+        set_time_limit(0);
+        ini_set("memory_limit", -1);
+        ob_flush();//清空缓存
+        flush();//刷新缓存
+        $orgId = $this->orgId;
+        if(!request()->file()) {
+            exit('请上传文件');
+        }
+        $file = request()->file('file');
+        //获取文件后缀
+        $e = explode('.',$_FILES['file']['name']);
+        $ext = $e[count($e)-1];
+        $newArr=['xls','xlsx'];
+        if(!in_array($ext,$newArr)){
+            exit('文件格式不正确');
+        }
+        // 移动到框架应用根目录/uploads/ 目录下
+        $info = $file->validate([ 'size'=>config('app.max_upload_file_size') ])
+            ->move(env('root_path') . 'public' . DIRECTORY_SEPARATOR . 'uploads'. DIRECTORY_SEPARATOR . 'files');
+        if(!$info){
+            exit('文件上传失败');
+        }
+        $img = './uploads/files/' . $info->getSaveName();
+        $filePath = str_replace('\\', '/', $img);
+
+        $data = ExcelUtil::read($filePath,['c1','c2','c3']);
+        if(!$data && count($data) <= 2){
+            exit('未上传数据');
+        }
+        $name = trim($data[0]['c1']);
+        $phone = trim($data[0]['c2']);
+        $remark = trim($data[0]['c3']);
+        if(empty($name)){
+            exit('未填写入库人');
+        }
+        if(empty($phone)){
+            exit('未填写联系电话');
+        }
+
+        Db::startTrans();
+        try{
+            $curTime = date("Y-m-d H:i:s");
+            $applyId = Db::name('mate_apply')->insertGetId([
+                'org_id' => $this->orgId,
+                'create_time' => $curTime,
+                'user_id' => $this->userId,
+                'sn' => get_unique_id(),
+                'remark' => $remark,
+                'name' => $name,
+                'phone' => $phone,
+                'type' => 1
+            ]);
+            if(!$applyId){
+                \exception('操作失败');
+            }
+            $arr = [];
+            foreach ($data as $k=>$v){
+                if($k < 2){
+                    continue;
+                }
+                if(empty($v['c1'])){
+                    $msg = "第".($k+1)."行,物品编号未输入";
+                    \exception($msg);
+                }
+                if(empty($v['c2']) || $v['c2'] < 0){
+                    $msg = "第".($k+1)."行,价格不正确";
+                    \exception($msg);
+                }
+                if(empty($v['c3']) || $v['c3'] <= 0){
+                    $msg = "第".($k+1)."行,数量不正确";
+                    \exception($msg);
+                }
+                // 重新计算平均价
+                $info = Db::name('mate_goods')->where('id',$v['c1'])->find();
+                if(!$info){
+                    $msg = "第".($k+1)."行,物品编号不正确";
+                    \exception($msg);
+                }
+
+                echo "<font color=\"green\" style='margin-left: 20px;font-size: 17px'>第".($k+1)."行,物品信息正确</font><br />";
+                $price =  ($info['price'] *$info['nums'] + $v['c2']*$v['c3']) / ($info['nums']+$v['c3']);
+                $ret = Db::name('mate_goods')->where('id',$v['c1'])->update([
+                    'price' => round($price,2),
+                    'nums' => $info['nums']+$v['c3'],
+                    'update_time' => $curTime
+                ]);
+                if(!$ret){
+                    \exception('操作失败');
+                }
+                $arr[] = [
+                    'apply_id' => $applyId,
+                    'goods_id' => $v['c1'],
+                    'nums' => $v['c3'],
+                    'price' => $v['c2']
+                ];
+            }
+
+            $ret = Db::name('mate_apply_goods')->insertAll($arr);
+            if($ret != count($arr)){
+                \exception('操作失败');
+            }
+
+            Db::commit();
+            echo "<font color=\"green\" style='margin-left: 20px;font-size: 17px'>导入成功</font><br />";
+        }catch (\Exception $e){
+            Db::rollback();
+            echo "<font color=\"red\" style='margin-left: 20px;font-size: 17px'>".$e->getMessage()."</font><br />";
+        }
+
+    }
+
 }

+ 156 - 0
application/admin/controller/MateApply.php

@@ -2,6 +2,8 @@
 namespace app\admin\controller;
 
 use app\common\model\MateGoodsLog;
+use app\common\util\ExcelUtil;
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use think\App;
 use think\Db;
 use think\Exception;
@@ -90,4 +92,158 @@ class MateApply extends Auth
         return $this->fetch();
     }
 
+    public function import(){
+        return $this->fetch();
+    }
+    /**
+     * 下载点模板
+     */
+    public function downloadtem(){
+        set_time_limit(0);
+        ini_set("memory_limit","512M");
+
+        $fileName = '出库单模板.xlsx';
+        $spreadsheet = new Spreadsheet();
+        $worksheet = $spreadsheet->getActiveSheet();
+        $worksheet->setTitle("出库单模板");
+
+        $arr = array('A','B','C');
+
+        foreach($arr as $k=>$v){
+            $worksheet->getStyle($v)->getAlignment()->setWrapText(true);//换行
+            $worksheet->getStyle($v.'1')->getFont()->setBold(true);
+            $worksheet->getColumnDimension($v)->setWidth(18);
+
+            $worksheet->getStyle($v.'3')->getFont()->setBold(true);
+        }
+
+        $worksheet->setCellValueByColumnAndRow(1,1,'出库人');
+        $worksheet->setCellValueByColumnAndRow(2,1,'联系电话');
+        $worksheet->setCellValueByColumnAndRow(3,1,'备注');
+
+
+        $worksheet->setCellValueByColumnAndRow(1,3,'物品编号');
+        $worksheet->setCellValueByColumnAndRow(2,3,'数量');
+
+        ob_end_clean();//清除缓冲区,避免乱码
+        header('Content-Type: application/vnd.ms-excel');
+        header('Content-Disposition: attachment;filename="'.$fileName.'"');
+        header('Cache-Control: max-age=0');
+
+        $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
+        $writer->save('php://output'); //文件通过浏览器下载
+
+    }
+
+    public function importexcel(){
+        set_time_limit(0);
+        ini_set("memory_limit", -1);
+        ob_flush();//清空缓存
+        flush();//刷新缓存
+        $orgId = $this->orgId;
+        if(!request()->file()) {
+            exit('请上传文件');
+        }
+        $file = request()->file('file');
+        //获取文件后缀
+        $e = explode('.',$_FILES['file']['name']);
+        $ext = $e[count($e)-1];
+        $newArr=['xls','xlsx'];
+        if(!in_array($ext,$newArr)){
+            exit('文件格式不正确');
+        }
+        // 移动到框架应用根目录/uploads/ 目录下
+        $info = $file->validate([ 'size'=>config('app.max_upload_file_size') ])
+            ->move(env('root_path') . 'public' . DIRECTORY_SEPARATOR . 'uploads'. DIRECTORY_SEPARATOR . 'files');
+        if(!$info){
+            exit('文件上传失败');
+        }
+        $img = './uploads/files/' . $info->getSaveName();
+        $filePath = str_replace('\\', '/', $img);
+
+        $data = ExcelUtil::read($filePath,['c1','c2','c3']);
+        if(!$data && count($data) <= 2){
+            exit('未上传数据');
+        }
+        $name = trim($data[0]['c1']);
+        $phone = trim($data[0]['c2']);
+        $remark = trim($data[0]['c3']);
+        if(empty($name)){
+            exit('未填写出库人');
+        }
+        if(empty($phone)){
+            exit('未填写联系电话');
+        }
+
+        Db::startTrans();
+        try{
+            $curTime = date("Y-m-d H:i:s");
+            $applyId = Db::name('mate_apply')->insertGetId([
+                'org_id' => $this->orgId,
+                'create_time' => $curTime,
+                'user_id' => $this->userId,
+                'sn' => get_unique_id(),
+                'remark' => $remark,
+                'name' => $name,
+                'phone' => $phone,
+                'type' => 2
+            ]);
+            if(!$applyId){
+                \exception('操作失败');
+            }
+            $arr = [];
+            foreach ($data as $k=>$v){
+                if($k < 2){
+                    continue;
+                }
+                if(empty($v['c1'])){
+                    $msg = "第".($k+1)."行,物品编号未输入";
+                    \exception($msg);
+                }
+                if(empty($v['c2']) || $v['c2'] <= 0){
+                    $msg = "第".($k+1)."行,数量不正确";
+                    \exception($msg);
+                }
+                // 重新计算平均价
+                $info = Db::name('mate_goods')->where('id',$v['c1'])->find();
+                if(!$info){
+                    $msg = "第".($k+1)."行,物品编号不正确";
+                    \exception($msg);
+                }
+
+
+                // 重新计算平均价
+                $info = Db::name('mate_goods')->where('id',$v['c1'])->find();
+                if(!$info){
+                    $msg = "第".($k+1)."行,物品编号不正确";
+                    \exception($msg);
+                }
+                echo "<font color=\"green\" style='margin-left: 20px;font-size: 17px'>第".($k+1)."行,物品信息正确</font><br />";
+                $ret = Db::name('mate_goods')->where('id',$v['c1'])->update([
+                    'nums' => $info['nums'] - $v['c2'],
+                    'update_time' => $curTime
+                ]);
+                if(!$ret){
+                    \exception('操作失败');
+                }
+                $arr[] = [
+                    'apply_id' => $applyId,
+                    'goods_id' => $k,
+                    'nums' => $v['c2'],
+                    'price' => $info['price']
+                ];
+            }
+
+            $ret = Db::name('mate_apply_goods')->insertAll($arr);
+            if($ret != count($arr)){
+                \exception('操作失败');
+            }
+            Db::commit();
+            echo "<font color=\"green\" style='margin-left: 20px;font-size: 17px'>导入成功</font><br />";
+        }catch (\Exception $e){
+            Db::rollback();
+            echo "<font color=\"red\" style='margin-left: 20px;font-size: 17px'>".$e->getMessage()."</font><br />";
+        }
+
+    }
 }

+ 233 - 0
application/admin/controller/MateReport.php

@@ -0,0 +1,233 @@
+<?php
+
+namespace app\admin\controller;
+use app\common\util\ExcelUtil;
+use think\Db;
+
+class MateReport extends Auth {
+    public function index() {
+        if (request()->isAjax()) {
+            //分页参数
+            $length = input('rows', 10, 'intval');   //每页条数
+            $page = input('page', 1, 'intval');      //第几页
+            $start = ($page - 1) * $length;     //分页开始位置
+            //排序
+            $sortRow = input('sidx', 'id', 'trim');      //排序列
+            $sort = input('sord', 'asc', 'trim');        //排序方式
+            $order = $sortRow . ' ' . $sort;
+            $title = input('title', '', 'trim');
+            if ($title) {
+                $map[] = ['title', 'like', '%' . $title . '%'];
+            }
+            $map[] = ['org_id', '=', $this->orgId];
+            $map = empty($map) ? true : $map;
+            //数据查询
+            $lists = Db::name('mate_report')
+                ->where($map)->limit($start, $length)
+                ->order($order)->select();
+            //数据返回
+            $totalCount = Db::name('mate_report')->where($map)->count();
+            $totalPage = ceil($totalCount / $length);
+            $result['page'] = $page;
+            $result['total'] = $totalPage;
+            $result['records'] = $totalCount;
+            $result['rows'] = $lists;
+            return json($result);
+        }
+        else {
+            $this->assign('meta_title', '月份统计记录');
+            return $this->fetch();
+        }
+    }
+
+    public function detail($rid=0) {
+        if (request()->isAjax()) {
+            //分页参数
+            $length = input('rows', 10, 'intval');   //每页条数
+            $page = input('page', 1, 'intval');      //第几页
+            $start = ($page - 1) * $length;     //分页开始位置
+            //排序
+            $sortRow = input('sidx', 'a.id', 'trim');      //排序列
+            $sort = input('sord', 'asc', 'trim');        //排序方式
+            $order = $sortRow . ' ' . $sort;
+            $title = input('title', '', 'trim');
+            if ($title) {
+                $map[] = ['b.title', 'like', '%' . $title . '%'];
+            }
+            $map[] = ['a.report_id', '=', $rid];
+            $map = empty($map) ? true : $map;
+            //数据查询
+            $lists = Db::name('mate_report_goods')
+                ->alias('a')
+                ->join('mate_goods b','a.goods_id = b.id')
+                ->field('a.*,b.title,b.brand,b.spec')
+                ->where($map)->limit($start, $length)
+                ->order($order)->select();
+            //数据返回
+            $totalCount = Db::name('mate_report_goods')
+                ->alias('a')
+                ->join('mate_goods b','a.goods_id = b.id')
+                ->where($map)->count();
+            $totalPage = ceil($totalCount / $length);
+            $result['page'] = $page;
+            $result['total'] = $totalPage;
+            $result['records'] = $totalCount;
+            $result['rows'] = $lists;
+            return json($result);
+        }
+        else {
+            $this->assign('rid',$rid);
+            $this->assign('meta_title', '月份统计记录详情');
+            return $this->fetch();
+        }
+    }
+
+    public function add(){
+        $sday = date('Y-m', strtotime('last month')).'-25 ';
+        $starttime = $sday." 00:00:00";
+        $eday = date('Y-m').'-25 ';
+        $endtime = $eday."00:00:00";
+        $orgs = Db::name("org")->where('type',2)->where('enable',1)->where('del',0)->select();
+        foreach($orgs as $k=>$v){
+            $goods = Db::name('mate_goods')
+                ->where('org_id',$v['id'])
+                ->where('del',0)
+                ->where('enable',1)
+                ->field('id,nums')
+                ->select();
+            if(!$goods){ // 无商品不生成记录
+                continue;
+            }
+            $innums = 0;
+            $outnums = 0;
+            $usenums = 0;
+            $cznums = 0;
+            $nums = 0;
+
+            $reportGoods = [];
+            foreach ($goods as $kk=>$vv){
+                $innums1 = Db::name('mate_apply_goods')
+                    ->alias('a')
+                    ->join('mate_apply b','a.apply_id = b.id')
+                    ->where('b.del',0)
+                    ->where('b.type',1)
+                    ->where('b.org_id',$v['id'])
+                    ->where('a.goods_id',$vv['id'])
+                    ->where('b.create_time','>=',$starttime)
+                    ->where('b.create_time','<',$endtime)
+                    ->sum('a.nums');
+                $innums += $innums1;
+                $outnums1 = Db::name('mate_apply_goods')
+                    ->alias('a')
+                    ->join('mate_apply b','a.apply_id = b.id')
+                    ->where('b.del',0)
+                    ->where('b.type',2)
+                    ->where('b.org_id',$v['id'])
+                    ->where('a.goods_id',$vv['id'])
+                    ->where('b.create_time','>=',$starttime)
+                    ->where('b.create_time','<',$endtime)
+                    ->sum('a.nums');
+                $outnums += $outnums1;
+
+                $usenums1 = Db::name('todo_mate_item')
+                    ->alias('a')
+                    ->join('todo_mate b','a.todo_mate_id = b.id')
+                    ->where('b.org_id',$v['id'])
+                    ->where('a.items_id',$vv['id'])
+                    ->where('b.create_time','>=',$starttime)
+                    ->where('b.create_time','<',$endtime)
+                    ->sum('a.total');
+                $usenums += $usenums1;
+
+                $cznums1 = Db::name('mate_goods_log')
+                    ->where('type',1)
+                    ->where('org_id',$v['id'])
+                    ->where('goods_id',$vv['id'])
+                    ->where('create_time','>=',$starttime)
+                    ->where('create_time','<',$endtime)
+                    ->sum('nums');
+                $cznums += $cznums1;
+
+                $nums += $vv['nums'];
+
+                $reportGoods[] = [
+                    'org_id' => $v['id'],
+                    'goods_id' => $vv['id'],
+                    'in_nums' => $innums1,
+                    'out_nums' => $outnums1,
+                    'use_nums' => $usenums1,
+                    'cz_nums' => $cznums1,
+                    'nums' => $vv['nums'],
+                ];
+            }
+
+            Db::startTrans();
+            try{
+                $reportId = Db::name("mate_report")->insertGetId([
+                    'org_id' => $v['id'],
+                    'start_time' => $sday,
+                    'end_time' => $eday,
+                    'in_nums' => $innums,
+                    'out_nums' => $outnums,
+                    'use_nums' => $usenums,
+                    'cz_nums' => $cznums,
+                    'nums' => $nums,
+                    'create_time' => date("Y-m-d H:i:s")
+                ]);
+
+                $arr = [];
+                foreach ($reportGoods as $kk=>$vv){
+                    $vv['report_id'] = $reportId;
+                    $arr[] = $vv;
+                    if(count($arr) == 200){
+                        $res = Db::name("mate_report_goods")->insertAll($arr);
+                        if($res != count($arr)){
+                            exception("操作失败");
+                        }
+                        $arr = [];
+                    }
+                }
+                if(count($arr) > 0){
+                    $res = Db::name("mate_report_goods")->insertAll($arr);
+                    if($res != count($arr)){
+                        exception("操作失败");
+                    }
+                }
+
+                Db::commit();
+            }catch (\Exception $e){
+                Db::rollback();
+            }
+        }
+    }
+
+    public function export($rid=0){
+        $title = input('title', '', 'trim');
+        if ($title) {
+            $map[] = ['b.title', 'like', '%' . $title . '%'];
+        }
+        $map[] = ['a.report_id', '=', $rid];
+        $map = empty($map) ? true : $map;
+        //数据查询
+        $lists = Db::name('mate_report_goods')
+            ->alias('a')
+            ->join('mate_goods b','a.goods_id = b.id')
+            ->field('a.*,b.title,b.brand,b.spec')
+            ->where($map)
+            ->order('a.id asc')->select();
+
+        $header = [
+            ['title' => '名称', 'name' => 'title','width'=>'20'],
+            ['title' => '品牌', 'name' => 'brand','width'=>'20'],
+            ['title' => '规格', 'name' => 'spec','width'=>'20'],
+            ['title' => '入库', 'name' => 'in_nums','width'=>'20'],
+            ['title' => '出库', 'name' => 'out_nums','width'=>'20'],
+            ['title' => '订单消耗', 'name' => 'use_nums','width'=>'20'],
+            ['title' => '处置', 'name' => 'cz_nums','width'=>'20'],
+            ['title' => '结余', 'name' => 'nums','width'=>'20']
+        ];
+
+        $filename = '统计详情';
+        ExcelUtil::export($filename,$header,$lists);
+    }
+}

+ 35 - 0
application/admin/view/company_dispatch/import.html

@@ -0,0 +1,35 @@
+{extend name="common/common2" /}
+{block name="main"}
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <form method="post"  action="importexcel"  enctype="multipart/form-data" class="form-horizontal">
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">选择文件(支持:xls,xlsx)<span class="text-danger">*</span></label>
+                        <div class="col-sm-6">
+                            <input type="file" name="file" id="file" class="form-control" value="" accept=".xls,.xlsx">
+                        </div>
+                    </div>
+
+                    <div class="hr-line-dashed"></div>
+                    <div class="form-group">
+                        <div class="col-sm-6 col-sm-offset-2">
+                            <button class="btn btn-sm btn-primary" type="submit">确定导入</button>
+                            <a href="downloadtem" class="btn btn-sm btn-danger">下载模板</a>
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+{/block}
+{block name="script"}
+<script>
+    $(document).ready(function(){
+        formSetValue("enable", {$info.enable|default=1});
+    });
+
+</script>
+{/block}

+ 3 - 0
application/admin/view/company_dispatch/show.html

@@ -19,6 +19,9 @@
                         </span>&nbsp;
                         <span class="input-group-btn">
                             <button class="btn-sm btn-primary " type="button" id="search-clear"><i class="fa fa-undo"></i></button>
+                        </span>&nbsp;
+                        <span class="input-group-btn">
+                            <button class="btn-sm btn-primary" type="button"url="{:url('import')}" data-title="导入" onclick="layer_open(this,1)">导入</button>
                         </span>
                     </div>
                 </form>

+ 3 - 0
application/admin/view/mate_apply/back.html

@@ -19,6 +19,9 @@
                         </span>&nbsp;
                         <span class="input-group-btn">
                             <button class="btn-sm btn-primary " type="button" id="search-clear"><i class="fa fa-undo"></i></button>
+                        </span>&nbsp;
+                        <span class="input-group-btn">
+                            <button class="btn-sm btn-primary" type="button"url="{:url('import')}" data-title="导入" onclick="layer_open(this,1)">导入</button>
                         </span>
                     </div>
                 </form>

+ 35 - 0
application/admin/view/mate_apply/import.html

@@ -0,0 +1,35 @@
+{extend name="common/common2" /}
+{block name="main"}
+<div class="row">
+    <div class="col-sm-12">
+        <div class="ibox float-e-margins">
+            <div class="ibox-content">
+                <form method="post"  action="importexcel"  enctype="multipart/form-data" class="form-horizontal">
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label">选择文件(支持:xls,xlsx)<span class="text-danger">*</span></label>
+                        <div class="col-sm-6">
+                            <input type="file" name="file" id="file" class="form-control" value="" accept=".xls,.xlsx">
+                        </div>
+                    </div>
+
+                    <div class="hr-line-dashed"></div>
+                    <div class="form-group">
+                        <div class="col-sm-6 col-sm-offset-2">
+                            <button class="btn btn-sm btn-primary" type="submit">确定导入</button>
+                            <a href="downloadtem" class="btn btn-sm btn-danger">下载模板</a>
+                        </div>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+{/block}
+{block name="script"}
+<script>
+    $(document).ready(function(){
+        formSetValue("enable", {$info.enable|default=1});
+    });
+
+</script>
+{/block}

+ 88 - 0
application/admin/view/mate_report/detail.html

@@ -0,0 +1,88 @@
+{extend name="common/common2" /}
+{block name="main"}
+
+<div class="ibox">
+    <div class="ibox-content">
+        <div class="row">
+            <div class="col-xs-12" style="text-align: right;">
+                <form class="form-inline" id="form-search" action="{:url('detail',['rid'=>$rid])}">
+                    <div class="input-group">
+                        <input type="text" class="form-control" name="title" placeholder="名称">
+                    </div>
+                    <div class="input-group">
+                        <span class="input-group-btn">
+                            <button class="btn-sm btn-primary" type="button" id ="search-btn" ><i class="fa fa-search"></i></button>
+                        </span>&nbsp;
+                        <span class="input-group-btn">
+                            <button class="btn-sm btn-warning" type="button" id="search-clear"><i class="fa fa-undo"></i></button>
+                        </span>&nbsp;
+                        <span class="input-group-btn">
+                            <button data-url="{:url('export',['rid'=>$rid],'')}" title="导出" class="btn-sm btn-primary"  onclick="excel_download(this)" type="button" ><i class="fa fa-cloud-download"></i></button>
+                        </span>
+                    </div>
+                </form>
+            </div>
+        </div>
+
+    </div>
+    <div class="ibox-content">
+        <div class="jqGrid_wrapper">
+            <table id="table" style="border-collapse: collapse"></table>
+            <div id="pager"></div>
+        </div>
+    </div>
+</div>
+{/block}
+{block name="script"}
+<script>
+    $(function () {
+
+        $(window).bind("resize",function(){
+            var width=$(".jqGrid_wrapper").width();
+            $("#table").setGridWidth(width);
+        });
+
+        $.jgrid.defaults.styleUI="Bootstrap";
+        $("#table").jqGrid({
+            url:"{:url('detail',['rid'=>$rid])}",
+            datatype: "json",
+            colModel:[
+                {label:'名称',name:'title',index:'title',sortable: false},
+                {label:'品牌',name:'brand',index:'brand',sortable: false},
+                {label:'规格',name:'spec',index:'spec',sortable: false},
+                {label:'入库',name:'in_nums',index:'in_nums',sortable: false},
+                {label:'出库',name:'out_nums',index:'out_nums',sortable: false},
+                {label:'订单消耗',name:'use_nums',index:'use_nums',sortable: false},
+                {label:'处置',name:'cz_nums',index:'cz_nums',sortable: false},
+                {label:'结余',name:'nums',index:'nums',sortable: false},
+            ],
+            rowNum:10,
+            rowList:[10,20,30,50,100],
+            pager: '#pager',
+            sortname: 'a.id',
+            viewrecords: true,
+            autowidth:true,
+            mtype: 'post',
+            height: 'auto',
+            emptyrecords: "暂无数据",
+            sortorder: "asc",
+            caption:"{$meta_title}",
+            loadComplete: function (xhr) {
+                if(xhr.code==0){
+                    layer.msg(xhr.msg);
+                    return false;
+                }
+            },
+        });
+    });
+
+    //导出
+    function excel_download(_self){
+        var url = $(_self).attr('data-url');
+        var param = $('#form-search').serialize();
+        window.location.href = url+'?'+param;
+    }
+
+
+</script>
+{/block}

+ 82 - 0
application/admin/view/mate_report/index.html

@@ -0,0 +1,82 @@
+{extend name="common/common2" /}
+{block name="main"}
+
+<div class="ibox">
+<!--    <div class="ibox-content">-->
+<!--        <div class="row">-->
+<!--            <div class="col-xs-12" style="text-align: right;">-->
+<!--                <form class="form-inline" id="form-search" action="{:url('index')}">-->
+<!--                    <div class="input-group">-->
+<!--                        <input type="text" class="form-control" name="title" placeholder="名称">-->
+<!--                    </div>-->
+<!--                    <div class="input-group">-->
+<!--                        <span class="input-group-btn">-->
+<!--                            <button class="btn-sm btn-primary" type="button" id ="search-btn" ><i class="fa fa-search"></i></button>-->
+<!--                        </span>-->
+<!--                        <span class="input-group-btn">-->
+<!--                            <button class="btn-sm btn-warning" type="button" id="search-clear"><i class="fa fa-undo"></i></button>-->
+<!--                        </span>-->
+<!--                    </div>-->
+<!--                </form>-->
+<!--            </div>-->
+<!--        </div>-->
+
+<!--    </div>-->
+    <div class="ibox-content">
+        <div class="jqGrid_wrapper">
+            <table id="table" style="border-collapse: collapse"></table>
+            <div id="pager"></div>
+        </div>
+    </div>
+</div>
+{/block}
+{block name="script"}
+<script>
+    $(function () {
+
+        $(window).bind("resize",function(){
+            var width=$(".jqGrid_wrapper").width();
+            $("#table").setGridWidth(width);
+        });
+
+        $.jgrid.defaults.styleUI="Bootstrap";
+        $("#table").jqGrid({
+            url:"{:url('index')}",
+            datatype: "json",
+            colModel:[
+                {label:'开始日期',name:'start_time',index:'start_time',sortable: false},
+                {label:'结束日期',name:'end_time',index:'end_time',sortable: false},
+                {label:'入库',name:'in_nums',index:'in_nums',sortable: false},
+                {label:'出库',name:'out_nums',index:'out_nums',sortable: false},
+                {label:'订单消耗',name:'use_nums',index:'use_nums',sortable: false},
+                {label:'处置',name:'cz_nums',index:'cz_nums',sortable: false},
+                {label:'结余',name:'nums',index:'nums',sortable: false},
+                {label:'创建时间',name:'create_time',index:'create_time',sortable: false},
+                {label:'操作',sortable: false,formatter:function (a,b,c){
+                    var editurl = "{:url('detail',[],'')}/rid/"+c.id;
+                    var btn = '<a url="'+editurl+'" href="javascript:;" data-title="['+c.start_time+' ~ '+c.end_time+']详情" onclick="layer_open(this,1)"><span class="label label-primary" title="详情">详情</span></a>';
+                    return btn;
+                }},
+            ],
+            rowNum:10,
+            rowList:[10,20,30,50,100],
+            pager: '#pager',
+            sortname: 'id',
+            viewrecords: true,
+            autowidth:true,
+            mtype: 'post',
+            height: 'auto',
+            emptyrecords: "暂无数据",
+            sortorder: "desc",
+            caption:"{$meta_title}",
+            loadComplete: function (xhr) {
+                if(xhr.code==0){
+                    layer.msg(xhr.msg);
+                    return false;
+                }
+            },
+        });
+    });
+
+</script>
+{/block}