Przeglądaj źródła

报表界面风格重调整

TonyKang 7 lat temu
rodzic
commit
ccc2eb1d3e

+ 1 - 0
test/unit/reports/test_svg_data.js

@@ -70,6 +70,7 @@ test('测试 - 测试模板啦: ', function (t) {
                     let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
                     let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
                     if (pageRst) {
                     if (pageRst) {
                         let svgRstStrArr = rpt_svg_util.exportSvgStr(pageRst, 0, 0);
                         let svgRstStrArr = rpt_svg_util.exportSvgStr(pageRst, 0, 0);
+                        fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult_转SVG前.jsp");
                         fsUtil.writeObjToFile(svgRstStrArr, "D:/GitHome/ConstructionCost/tmp/rptPageResult_SVG格式.jsp");
                         fsUtil.writeObjToFile(svgRstStrArr, "D:/GitHome/ConstructionCost/tmp/rptPageResult_SVG格式.jsp");
                     } else {
                     } else {
                         console.log("oh! no pages were created!");
                         console.log("oh! no pages were created!");

Plik diff jest za duży
+ 5 - 50
web/building_saas/main/html/main.html


+ 46 - 0
web/building_saas/report/html/rpt_export_excel.html

@@ -0,0 +1,46 @@
+<div class="modal fade" id="export_excel" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">批量导出Excel</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <div class="row">
+                    <div class="col-6">
+                        <div class="card">
+                            <img class="card-img-top" src="img/p2.png">
+                            <div class="card-body px-3">
+                                <div class="form-check">
+                                    <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
+                                    <label class="form-check-label" for="exampleRadios1">
+                                        多个表导出一个Excel文件
+                                    </label>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="col-6">
+                        <div class="card">
+                            <img class="card-img-top" src="img/p1.png">
+                            <div class="card-body px-3">
+                                <div class="form-check">
+                                    <input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2" checked>
+                                    <label class="form-check-label" for="exampleRadios2">
+                                        每个表导出一个Excel文件
+                                    </label>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                <a onclick="rptControlObj.getExcel()" class="btn btn-primary">确定导出</a>
+            </div>
+        </div>
+    </div>
+</div>

+ 27 - 14
web/building_saas/report/html/rpt_main.html

@@ -4,7 +4,7 @@
         <div class="col-lg-2 p-0">
         <div class="col-lg-2 p-0">
             <div class="print-list">
             <div class="print-list">
                 <div class="list-tools d-flex justify-content-center">
                 <div class="list-tools d-flex justify-content-center">
-                    <button class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#editForm"><i class="fa fa-cog"></i> 管理报表</button>
+                    <button class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#editForm"><i class="fa fa-cog"></i> 管理报表</button>
                 </div>
                 </div>
                 <div class="form-list">
                 <div class="form-list">
                     <ul id="rptTplTree" class="ztree"></ul>
                     <ul id="rptTplTree" class="ztree"></ul>
@@ -16,25 +16,38 @@
                 <div class="print-toolsbar">
                 <div class="print-toolsbar">
                     <div class="panel">
                     <div class="panel">
                         <div class="panel-body">
                         <div class="panel-body">
-                            <button class="btn btn-secondary btn-sm" type="button" onclick="rptPrintHelper.preview()">
+                            <button class="btn btn-outline-primary btn-sm" type="button" onclick="rptPrintHelper.preview()">
                                 <i class="fa fa-print"></i><br>打印
                                 <i class="fa fa-print"></i><br>打印
                             </button>
                             </button>
-                            <button class="btn btn-secondary btn-sm" type="button"  href="#export" data-toggle="modal" data-target="#export">
+                            <!--
+                            <button class="btn btn-outline-primary btn-sm" type="button"  href="#export" data-toggle="modal" data-target="#export">
                                 <i class="fa fa-share-square-o"></i><br>导出
                                 <i class="fa fa-share-square-o"></i><br>导出
                             </button>
                             </button>
+                            -->
+                        </div>
+                    </div>
+                    <div class="panel">
+                        <div class="panel-body">
+                            <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
+                                <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#export_excel"><i class="fa fa-file-excel-o"></i> Excel <span class="badge badge-secondary">0</span></button>
+                                <button type="button" class="btn btn-outline-primary btn-sm" onclick="rptControlObj.getPDF()"><i class="fa fa-file-pdf-o"></i> PDF <span class="badge badge-secondary">0</span></button>
+                            </div>
+                        </div>
+                        <div class="panel-foot text-muted">
+                            导出报表
                         </div>
                         </div>
                     </div>
                     </div>
                     <div class="panel">
                     <div class="panel">
                         <div class="panel-body">
                         <div class="panel-body">
                             <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
                             <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
                                 <div class="btn-group" role="group">
                                 <div class="btn-group" role="group">
-                                    <button id="btnRptOrientation" type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">纵向</button>
+                                    <button id="btnRptOrientation" type="button" class="btn btn-outline-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">纵向</button>
                                     <div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
                                     <div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
                                         <a class="dropdown-item" id="hrefRptOrientation" onclick="zTreeOprObj.changeOrientation(this)">横向</a>
                                         <a class="dropdown-item" id="hrefRptOrientation" onclick="zTreeOprObj.changeOrientation(this)">横向</a>
                                     </div>
                                     </div>
                                 </div>
                                 </div>
                                 <div class="btn-group" role="group">
                                 <div class="btn-group" role="group">
-                                    <button id="btnRptPageSize" type="button" class="btn btn-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">A4</button>
+                                    <button id="btnRptPageSize" type="button" class="btn btn-outline-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">A4</button>
                                     <div class="dropdown-menu" aria-labelledby="btnGroupDrop2">
                                     <div class="dropdown-menu" aria-labelledby="btnGroupDrop2">
                                         <a class="dropdown-item" id="hrefRptPageSize" onclick="zTreeOprObj.changePageSize(this)">A3</a>
                                         <a class="dropdown-item" id="hrefRptPageSize" onclick="zTreeOprObj.changePageSize(this)">A3</a>
                                     </div>
                                     </div>
@@ -48,10 +61,10 @@
                     <div class="panel">
                     <div class="panel">
                         <div class="panel-body">
                         <div class="panel-body">
                             <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
                             <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
-                                <button type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#paper_margins"><i class="fa fa-file-o"></i> 页边距</button>
-                                <button type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#content_format"><i class="fa fa-file-text-o"></i> 页面</button>
+                                <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#paper_margins"><i class="fa fa-file-o"></i> 页边距</button>
+                                <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#content_format"><i class="fa fa-file-text-o"></i> 页面</button>
                                 <!--
                                 <!--
-                                <button type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#format"><i class="fa fa-bold"></i> 格式</button>
+                                <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#format"><i class="fa fa-bold"></i> 格式</button>
                                 -->
                                 -->
                             </div>
                             </div>
                         </div>
                         </div>
@@ -63,13 +76,13 @@
                         <div class="panel-body">
                         <div class="panel-body">
                             <div class="input-group input-group-sm" role="group">
                             <div class="input-group input-group-sm" role="group">
                                 <span class="input-group-btn">
                                 <span class="input-group-btn">
-                                    <button type="button" class="btn btn-secondary btn-sm" data-toggle="tooltip" data-placement="bottom" title="首页" onclick="rptControlObj.firstPage(this)"><i class="fa fa-chevron-left"></i><i class="fa fa-chevron-left"></i></button>
-                                    <button type="button" class="btn btn-secondary btn-sm" data-toggle="tooltip" data-placement="bottom" title="上一页" onclick="rptControlObj.prePage(this)"><i class="fa fa-chevron-left"></i></button>
+                                    <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="tooltip" data-placement="bottom" title="首页" onclick="rptControlObj.firstPage(this)"><i class="fa fa-angle-double-left"></i></button>
+                                    <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="tooltip" data-placement="bottom" title="上一页" onclick="rptControlObj.prePage(this)"><i class="fa fa-angle-left"></i></button>
                                 </span>
                                 </span>
                                 <input class="form-control" id="rpt_page_num" value="" onKeydown="rptControlObj.onKeydown(event, this)" style="width:60px"  data-toggle="tooltip" data-placement="bottom" title="输入页码按回车键,快速跳转">
                                 <input class="form-control" id="rpt_page_num" value="" onKeydown="rptControlObj.onKeydown(event, this)" style="width:60px"  data-toggle="tooltip" data-placement="bottom" title="输入页码按回车键,快速跳转">
                                 <span class="input-group-btn">
                                 <span class="input-group-btn">
-                                    <button type="button" class="btn btn-secondary btn-sm" data-toggle="tooltip" data-placement="bottom" title="下一页" onclick="rptControlObj.nextPage(this)"><i class="fa fa-chevron-right"></i></button>
-                                    <button type="button" class="btn btn-secondary btn-sm" data-toggle="tooltip" data-placement="bottom" title="尾页" onclick="rptControlObj.lastPage(this)"><i class="fa fa-chevron-right"></i><i class="fa fa-chevron-right"></i></button>
+                                    <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="tooltip" data-placement="bottom" title="下一页" onclick="rptControlObj.nextPage(this)"><i class="fa fa-angle-right"></i></button>
+                                    <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="tooltip" data-placement="bottom" title="尾页" onclick="rptControlObj.lastPage(this)"><i class="fa fa-angle-double-right"></i></button>
                                 </span>
                                 </span>
                             </div>
                             </div>
                         </div>
                         </div>
@@ -92,8 +105,8 @@
 <%include ./rpt_margins.html %>
 <%include ./rpt_margins.html %>
 <!--2弹出页面格式-->
 <!--2弹出页面格式-->
 <%include ./rpt_content_format.html %>
 <%include ./rpt_content_format.html %>
-<!--弹出导出-->
-<%include ./rpt_export.html %>
+<!--弹出导出Excel-->
+<%include ./rpt_export_excel.html %>
 <script>
 <script>
     const SCREEN_DPI = [];
     const SCREEN_DPI = [];
     function getScreenDPI() {
     function getScreenDPI() {

+ 35 - 0
web/building_saas/report/html/rpt_print.html

@@ -75,6 +75,41 @@
                 });
                 });
             });
             });
             window.print();
             window.print();
+        } if (sessionStorage.currentPageSvgData) {
+            let svgArr = JSON.parse(sessionStorage.currentPageSvgData);
+            let scaleFactor = 1;
+            let orgHeight = 793, orgWidth = 1122;
+            let pageHeight = orgHeight * scaleFactor, pageWidth = orgWidth * scaleFactor;
+            if (sessionStorage.pageSize === 'A3') {
+                pageHeight = orgWidth * scaleFactor;
+                pageWidth = orgHeight * 2 * scaleFactor;
+                orgHeight = 1122;
+                orgWidth = 793 * 2;
+            } else if (sessionStorage.pageSize === '自定义') {
+                //自定义
+            }
+            if (sessionStorage.orientation === "纵向") {
+                let tmpInt = pageHeight;
+                pageHeight = pageWidth;
+                pageWidth = tmpInt;
+
+                tmpInt = orgWidth;
+                orgWidth = orgHeight;
+                orgHeight = tmpInt;
+            }
+
+            for (let i = 0; i < svgArr.length; i++) {
+                let div = $('<div class="pageBreak"></div>');
+                div.append($(svgArr[i].join("")));
+                $("body").append(div);
+            }
+            $(document.body).find("div").each(function(index,element){
+                $(element).find("svg").each(function(cIdx,elementSvg){
+                    elementSvg.setAttribute('height', pageHeight);
+                    elementSvg.setAttribute('width', pageWidth);
+                });
+            });
+            window.print();
         } else {
         } else {
             //alert("没有报表数据!");
             //alert("没有报表数据!");
         }
         }

+ 4 - 2
web/building_saas/report/js/rpt_main.js

@@ -37,10 +37,12 @@ let zTreeOprObj = {
             let private_remove_hide_item = function (items) {
             let private_remove_hide_item = function (items) {
                 if (items && items.length > 0) {
                 if (items && items.length > 0) {
                     for (let i = items.length - 1; i >= 0; i--) {
                     for (let i = items.length - 1; i >= 0; i--) {
-                        if (!(items[i].released)) {
+                        if (!(items[i].released) && items[i].nodeType === 2) {
                             items.splice(i, 1);
                             items.splice(i, 1);
                         } else {
                         } else {
-                            private_remove_hide_item(items[i].items);
+                            if (items[i].items && items[i].items.length > 0) {
+                                private_remove_hide_item(items[i].items);
+                            }
                         }
                         }
                     }
                     }
                 }
                 }

+ 3 - 0
web/building_saas/report/js/rpt_print.js

@@ -14,6 +14,9 @@ let rptPrintHelper = {
             sessionStorage.currentPageData = null;
             sessionStorage.currentPageData = null;
         }
         }
     },
     },
+    previewSvgData: function() {
+        //
+    },
     buildSvgArr: function (pagesData, offsetX, offsetY) {
     buildSvgArr: function (pagesData, offsetX, offsetY) {
         let styles = pagesData[JV.NODE_STYLE_COLLECTION],
         let styles = pagesData[JV.NODE_STYLE_COLLECTION],
             fonts = pagesData[JV.NODE_FONT_COLLECTION],
             fonts = pagesData[JV.NODE_FONT_COLLECTION],