dever пре 7 година
родитељ
комит
9bc47ce0b0

+ 1 - 1
assets/moltran/html/inc/head.html

@@ -22,7 +22,7 @@
 <link rel="stylesheet" type="text/css" href="../css/responsive.css" />
 <link rel="stylesheet" type="text/css" href="../public/pjax/nprogress.css" />
 <!-- Responsive-table -->
-<link rel="stylesheet" type="text/css" href="../public/table/rwd-table.min.css">
+<link rel="stylesheet" type="text/css" href="../public/table/rwd-table.min.css?v3">
 
 <!--
 <link rel="stylesheet" href="../public/kindeditor/themes/default/default.css" />

+ 3 - 3
assets/moltran/html/inc/script.html

@@ -41,7 +41,7 @@
 <script type="text/javascript" src="../public/highlight/highlight.min.js"></script>
 
 <!-- 加载主要js,很乱,后续优化 -->
-<script type="text/javascript" src="../public/main.js?v2"></script>
+<script type="text/javascript" src="../public/main.js?v3"></script>
 
 <!-- 加载一些模板自带效果 -->
 <script>
@@ -59,13 +59,13 @@
 <script type="text/javascript" src="../js/waves.js"></script> 
 <script type="text/javascript" src="../js/wow.min.js"></script> 
 <script type="text/javascript" src="../js/jquery.app.js"></script> 
-<script type="text/javascript" src="../public/table/rwd-table.min.js"></script>
+<script type="text/javascript" src="../public/table/rwd-table.min.js?v3"></script>
 
 <script type="text/javascript" src="../public/jquery/ui.min.js"></script>
 
 
 <!-- 加载valid -->
-<script type="text/javascript" src="../public/valid/jquery.validationEngine.min.js?v1"></script>
+<script type="text/javascript" src="../public/valid/jquery.validationEngine.min.js?v3"></script>
 
 <!-- 加载文本编辑器 -->
 <script type="text/javascript" src="../public/simditor/scripts/module.min.js"></script>

+ 2 - 0
assets/moltran/html/list.html

@@ -157,6 +157,8 @@
                         </div>
                     </div> <!-- end row -->
                     
+                </form>
+                <form id="form2" name="form2" method="get" style="display: none;">
                 </form>
                 <div id="struct" style="display:none;"></div>
                 <script>

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
assets/public/table/rwd-table.min.css


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
assets/public/table/rwd-table.min.js


+ 3 - 2
database/role.php

@@ -355,8 +355,9 @@ $config = array
 		'preview' => true,
 		
 		# 开启报表下载 
-		# 凡涉及到报表下载,请用composer安装phpexcel:require中添加 ,"phpoffice/phpexcel": "1.8.1"
-		//'excel' => true,
+		# 涉及到报表下载,如果想使用phpexcel,请用composer安装phpexcel:require中添加 ,"phpoffice/phpexcel": "1.8.1",
+		# 否则请使用框架自带的csv
+		'excel' => 'csv',//phpexcel
 		# 开启批量管理
 		'mul' => true,
 		# 开启主动统计,需要人工选择选项来确定统计的项,有别于被动统计,实现中

+ 117 - 70
src/Database.php

@@ -812,7 +812,7 @@ class Database
 
         # 增加下载报表按钮
         if (isset($config['manage']['excel'])) {
-            $config['manage']['button']['导出数据'] = 'onclick="$(\'#form1\').attr(\'action\', \'' . $this->url('excel') . '\');list_search($(this))"';
+            $config['manage']['button']['导出数据'] = 'onclick="location.href=\''.$this->url('excel').'\'"';
         }
         # 增加回收站
         if (isset($config['struct']['state']) && (!isset($config['manage']['delete']) || (isset($config['manage']['delete']) && $config['manage']['delete'] && isset($config['manage']['_list']['value']['delete'])))) {
@@ -1188,94 +1188,141 @@ class Database
 
         if ($data) {
             $config = $this->config();
+            if (isset($config['manage']['excel']) && $config['manage']['excel']) {
+                $method = 'excel_' . $config['manage']['excel'];
+                $info = $this->info();
+                $data = $this->getAdminInfo($data);
+                $this->$method($info, $data, $config);
+            }
+        }
 
-            $xls = new \PHPExcel();
+        //print_r($data);die;
+    }
 
-            /*
-            if(class_exists('\\PHPExcel'))
-            {
-            $xls = new \PHPExcel();
-            }
-            else
-            {
-            Dever::debug('Class \'PHPExcel\' not found');
-            die;
+    private function excel_csv($info, $data, $config)
+    {
+        $file = $info['list_header'] . '的' . $info['list_desc'] . '-' . $info['project_name'] . '.csv';
+
+        $header = $body = array();
+        $i = 0;
+        foreach ($config['struct'] as $k => $v) {
+            if (isset($v['list']) && $v['list']) {
+                # 处理权限
+                if (isset($v['auth'])) {
+                    $auth = $this->value($v['auth'], $data);
+                    if (!$auth) {
+                        continue;
+                    }
+                }
+                $v['name'] = mb_convert_encoding($v['name'],'gb2312','utf-8');
+                $header[$i] = $v['name'];
+                $i++;
+                $j = 0;
+                foreach ($data as $ki => $vi) {
+                    if (isset($vi[$k])) {
+                        $value = $vi[$k];
+
+                        if (is_string($v['list'])) {
+                            $value = $this->value($v['list'], $data[$ki], $config['struct']);
+                        }
+                        if (isset($v['option'])) {
+                            $v['option'] = $this->option($v['option']);
+
+                            if (isset($v['option'][$value])) {
+                                if (is_array($v['option'][$value])) {
+                                    $value = $v['option'][$value]['name'];
+                                } else {
+                                    $value = $v['option'][$value];
+                                }
+                            }
+                        }
+
+                        $value = mb_convert_encoding($value,'gb2312','utf-8');
+
+                        $body[$j][] = $value;
+                        $j++;
+                    }
+                }
             }
-             */
+        }
+        //print_r($header);
+        //print_r($body);die;
 
-            $xls->getProperties()->setCreator("Dever Excel")
-                ->setLastModifiedBy("Dever Excel")
-                ->setTitle("Office 2007 XLSX Analysis Document")
-                ->setSubject("Office 2007 XLSX Analysis Document")
-                ->setDescription("Dever Excel")
-                ->setKeywords("Dever Excel")
-                ->setCategory("Dever Excel");
+        Dever::csv($body, $header, $file);
+    }
 
-            $info = $this->info();
+    private function excel_phpexcel($info, $data, $config)
+    {
+        $xls = new \PHPExcel();
 
-            $name = $info['list_header'] . '的' . $info['list_desc'] . '-' . $info['project_name'];
-            # 全局导出
-            $start = 65;
-            $act = $xls->setActiveSheetIndex(0);
+        $xls->getProperties()->setCreator("Dever Excel")
+            ->setLastModifiedBy("Dever Excel")
+            ->setTitle("Office 2007 XLSX Analysis Document")
+            ->setSubject("Office 2007 XLSX Analysis Document")
+            ->setDescription("Dever Excel")
+            ->setKeywords("Dever Excel")
+            ->setCategory("Dever Excel");
 
-            $act->setTitle($name);
+        $name = $info['list_header'] . '的' . $info['list_desc'] . '-' . $info['project_name'];
+        # 全局导出
+        $start = 65;
+        $act = $xls->setActiveSheetIndex(0);
 
-            $i = 0;
+        $act->setTitle($name);
 
-            $data = $this->getAdminInfo($data);
-            foreach ($config['struct'] as $k => $v) {
-                if (isset($v['list']) && $v['list']) {
-                    # 处理权限
-                    if (isset($v['auth'])) {
-                        $auth = $this->value($v['auth'], $data);
-                        if (!$auth) {
-                            continue;
-                        }
+        $i = 0;
+
+        foreach ($config['struct'] as $k => $v) {
+            if (isset($v['list']) && $v['list']) {
+                # 处理权限
+                if (isset($v['auth'])) {
+                    $auth = $this->value($v['auth'], $data);
+                    if (!$auth) {
+                        continue;
                     }
-                    $num = 1;
-                    $cell = $this->_getChr($start, $i);
-                    $act->setCellValue($cell . '' . $num, $v['name']);
-                    $act->getColumnDimension($cell)->setWidth(20);
-                    $i++;
+                }
+                $num = 1;
+                $cell = $this->_getChr($start, $i);
+                $act->setCellValue($cell . '' . $num, $v['name']);
+                $act->getColumnDimension($cell)->setWidth(20);
+                $i++;
 
-                    foreach ($data as $ki => $vi) {
-                        if (isset($vi[$k])) {
-                            $num += 1;
-
-                            $value = $vi[$k];
-
-                            if (is_string($v['list'])) {
-                                $value = $this->value($v['list'], $data[$ki], $config['struct']);
-                            } elseif (isset($v['option'])) {
-                                $v['option'] = $this->option($v['option']);
-                                if (isset($v['option'][$value])) {
-                                    if (is_array($v['option'][$value])) {
-                                        $value = $v['option'][$value]['name'];
-                                    } else {
-                                        $value = $v['option'][$value];
-                                    }
+                foreach ($data as $ki => $vi) {
+                    if (isset($vi[$k])) {
+                        $num += 1;
+
+                        $value = $vi[$k];
+
+                        if (is_string($v['list'])) {
+                            $value = $this->value($v['list'], $data[$ki], $config['struct']);
+                        }
+                        if (isset($v['option'])) {
+                            $v['option'] = $this->option($v['option']);
+                            if (isset($v['option'][$value])) {
+                                if (is_array($v['option'][$value])) {
+                                    $value = $v['option'][$value]['name'];
+                                } else {
+                                    $value = $v['option'][$value];
                                 }
                             }
-
-                            $act->setCellValue($cell . $num, $value);
                         }
+
+                        $act->setCellValue($cell . $num, $value);
                     }
                 }
             }
+        }
 
-            //$act->getStyle('A1:'.$k.'20')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);   // 垂直居中
-            //$act->getStyle('A1:'.$k.'20')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);// 水平居中
-
-            $filename = $name . '.xlsx';
-            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
-            header('Content-Disposition: attachment;filename="' . $filename . '"');
-            header('Cache-Control: max-age=0');
+        //$act->getStyle('A1:'.$k.'20')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);   // 垂直居中
+        //$act->getStyle('A1:'.$k.'20')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);// 水平居中
 
-            $write = \PHPExcel_IOFactory::createWriter($xls, 'Excel2007');
-            $write->save('php://output');
-        }
+        $filename = $name . '.xlsx';
+        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+        header('Content-Disposition: attachment;filename="' . $filename . '"');
+        header('Cache-Control: max-age=0');
 
-        //print_r($data);die;
+        $write = \PHPExcel_IOFactory::createWriter($xls, 'Excel2007');
+        $write->save('php://output');
     }
 
     private function _getChr($start, $num)
@@ -2429,7 +2476,7 @@ class Database
     }
 
     /**
-     * stat 为主动统计提供导出数据
+     * stat 为主动统计提供导出数据 后续优化
      *
      * @return array
      */

Неке датотеке нису приказане због велике количине промена