Просмотр исходного кода

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

chenshilong 7 лет назад
Родитель
Сommit
c82f6e1495

+ 22 - 1
modules/pm/facade/pm_facade.js

@@ -35,13 +35,22 @@ module.exports={
 async function copyProject(userID, compilationID,data) {
     let projectMap = data.projectMap;
     let originalID = projectMap['copy'].document.ID;
-    let originalProperty = _.cloneDeep(projectMap['copy'].document.property);
     let newProjectID = await getCounterID("projects");
     let newFeeName = null,newUnitName = null;
     let calcProgramFileID = uuidV1();//新的计算程序文件ID
     let labourCoeFileID = uuidV1();//新的人工调整系数文件ID
     let feeRateFileID = uuidV1();//新的费率文件ID
     let unitPriceFileID = await getCounterID("unit_price_file");//新的单价文件ID
+    let originalProject = await projectModel.findOne({'ID':originalID});//查找最新的那项目信息,前端缓存的数据有可能不是最新的
+    if(!originalProject){
+        throw new Error('没有找到对应的项目,复制失败!');
+    }
+    let property = originalProject.property;
+    if(projectMap['copy'].document.property){//更新项目属性信息
+        setProperty(property,projectMap['copy'].document.property);
+    }
+    let originalProperty = _.cloneDeep(property);
+    projectMap['copy'].document.property = property;
     logger.info("复制项目: 旧项目ID: "+originalID+ " ------- 新项目ID: "+newProjectID);
     //费率文件、单价文件重名检查
     let feeRate =  await feeRateFileModel.findOne({rootProjectID:originalProperty.rootProjectID,name:originalProperty.feeFile.name,deleteInfo:null});
@@ -427,3 +436,15 @@ async function insertMany(datas,model) {
     await model.insertMany(datas);
 
 }
+
+function setProperty(Obj,updateData) {
+    for(let ukey in updateData){
+        if(_.isObject(updateData[ukey]) && _.isObject(Obj[ukey])){
+            setProperty(Obj[ukey],updateData[ukey]);
+        }else {
+            Obj[ukey] = updateData[ukey];
+        }
+    }
+
+
+}

+ 2 - 1
modules/users/controllers/boot_controller.js

@@ -43,7 +43,8 @@ class BootController extends BaseController {
             provinceList: userModel.province,
             companyTypeList: userModel.companyType,
             companyScaleList: userModel.companyScale,
-            compilation: request.params.compilation
+            compilation: request.params.compilation,
+            versionName: request.session.sessionCompilation.name + '免费版'
         };
         response.render('users/html/login-infoinput', renderData);
     }

+ 6 - 3
public/web/gljUtil.js

@@ -198,7 +198,8 @@ let gljUtil = {
                 });
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
-                    p+=scMathUtil.roundForObj(priceData.marketPrice* priceCoe * scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    let temP = scMathUtil.roundForObj(priceData.marketPrice* priceCoe * scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
             return scMathUtil.roundForObj(p,price_decimal);
@@ -223,7 +224,8 @@ let gljUtil = {
                 });
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
-                    p+=scMathUtil.roundForObj(priceData.basePrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    let temP = scMathUtil.roundForObj(priceData.basePrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
             return scMathUtil.roundForObj(p,price_decimal);
@@ -253,7 +255,8 @@ let gljUtil = {
                 })
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
-                    p+=scMathUtil.roundForObj(priceData.adjustPrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    let temP = scMathUtil.roundForObj(priceData.adjustPrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
             return scMathUtil.roundForObj(p,decimal);

+ 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);
                     if (pageRst) {
                         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");
                     } else {
                         console.log("oh! no pages were created!");

Разница между файлами не показана из-за своего большого размера
+ 5 - 50
web/building_saas/main/html/main.html


+ 5 - 0
web/building_saas/main/js/controllers/block_controller.js

@@ -10,6 +10,11 @@ let BlockController = {
         if(selected.sourceType == ModuleNames.ration && selected.data.type == rationType.install){
             return true;
         }
+        if(projectObj.project.Bills.hasFlags(selected)){//所有固定清单项不能复制
+            return true;
+        }
+        //
+
         return false;
     },
     pasteBtnDisable:function (selected) {

+ 6 - 3
web/building_saas/main/js/views/character_content_view.js

@@ -1103,14 +1103,14 @@ let pageCCOprObj = {
         for (const index in updateData) {
             saveObj.push({field: index, value: updateData[index]});
         }
-        saveObj.push({field: 'addRule', value: setting});
+        //saveObj.push({field: 'addRule', value: setting});
         saveObj.push({field: 'jobContent', value: node.data.jobContent});
         saveObj.push({field: 'itemCharacter', value: node.data.itemCharacter});
         // 更新到数据库
         pageCCOprObj.updateBill(findSet, saveObj, function(response) {
             self.refreshView(node, updateData);
             // 更新项目属性的配置
-            projectObj.project.property.addRule = setting;
+            //projectObj.project.property.addRule = setting;
             // 更新节点数据
             node.data.name = updateData.name;
             node.data.itemCharacterText = updateData.itemCharacterText;
@@ -1206,9 +1206,12 @@ let pageCCOprObj = {
             let characterArray = [];
             let count = 1;
             for (const tmp of itemCharacter) {
-                if (tmp.eigenvalue === undefined || tmp.eigenvalue.length <= 0 || !tmp.isChecked) {
+                if (!tmp.isChecked) {
                     continue;
                 }
+                if(tmp.eigenvalue === undefined || tmp.eigenvalue.length <= 0){
+                    tmp.eigenvalue = [];
+                }
                 // 获取选中的特征值
                 let selectedEigen = '';
                 for (const eigen of tmp.eigenvalue) {

+ 5 - 0
web/building_saas/main/js/views/glj_view.js

@@ -134,11 +134,16 @@ var gljOprObj = {
     },
     detailSheetReadonly:function () {
         let selected = projectObj.project.mainTree.selected;
+        let Bills =  projectObj.project.Bills;
         if(selected) {
             //清单锁定时只读
             if(selected.sourceType == ModuleNames.bills && projectObj.project.isBillsLocked() && projectObj.project.withinBillsLocked(selected)){
                 return true;
             }
+            //大项费用、分部节点层次时,工程量明细只读。
+            if(indicativeInfoObj.isDXFY(selected) || indicativeInfoObj.isFB(selected)){
+                return true;
+            }
             //是主材或者是设备时只读
             if(selected.sourceType == ModuleNames.ration_glj){
                 return true;

+ 4 - 0
web/building_saas/main/js/views/project_property_indicativeInfo.js

@@ -81,6 +81,10 @@ let indicativeInfoObj = {
     isBills: function (node) {
         return node && node.sourceType === projectObj.project.Bills.getSourceType();
     },
+    //是分部节点
+    isFB:function (node) {
+        return this.isBills(node) && node.data.type === billType.FB;
+    },
     //是大项费用
     isDXFY: function (node) {
         return this.isBills(node) && node.data.type === billType.DXFY;

+ 12 - 1
web/building_saas/main/js/views/project_view.js

@@ -945,7 +945,15 @@ var projectObj = {
                     disabled: function () {
                         let selection = projectObj.mainSpread.getActiveSheet().getSelections()[0];
                         let firstNode = projectObj.project.mainTree.items[selection.row];//当多选的情况,用mainTree.selected判断不正确,要用第一个选中的节点
-                        return BlockController.copyBtnDisable(firstNode);
+                        for(let i = 0;i< selection.rowCount;i++){ //多选的时候判断所有与第一个节点同级的节点
+                            let temNode = projectObj.project.mainTree.items[selection.row + i];
+                            if(firstNode.getParentID() == temNode.getParentID()){
+                                if(BlockController.copyBtnDisable(temNode) == true){
+                                    return true;
+                                }
+                            }
+                        }
+                        return false;
                     },
                     callback: function () {
                         $.bootstrapLoading.start();
@@ -1631,6 +1639,9 @@ $('#poj-set').on('show.bs.modal', function () {
         setCalcFlag($('#billsPrice'), leafBillGetFeeType.billsPrice, ft);
         setCalcFlag($('#zangu_common'), zanguCalcType.common, zg);
         setCalcFlag($('#zangu_gatherMaterial'), zanguCalcType.gatherMaterial, zg);
+
+        let showAdjustPrice = projectObj.project.projSetting.glj_col?projectObj.project.projSetting.glj_col.showAdjustPrice:false;
+        showAdjustPrice === true ? $("#tab_poj-settings-6").show():$("#tab_poj-settings-6").hide();
         projDisplayView.init();
         calcOptions.init();
     }

+ 38 - 0
web/building_saas/main/js/views/sub_view.js

@@ -181,6 +181,26 @@ $("#use-to-all").click(function() {
     }
 });
 
+function saveAddRule(){
+    let setting = getAddRuleSetting();
+    let toUpdate = false;
+    if(!projectObj.project.property.addRule){
+        toUpdate = true;
+    }
+    else {
+        for(let attr in setting){
+            if(setting[attr] !== projectObj.project.property.addRule[attr]){
+                toUpdate = true;
+                break;
+            }
+        }
+    }
+    if(toUpdate){
+        projectObj.project.property.addRule = setting;
+        projectObj.project.saveProperty('addRule', setting);
+    }
+}
+
 // 添加位置选择
 $("#add-position").change(function() {
     const selected = $(this).children(":selected").val();
@@ -205,6 +225,7 @@ $("#add-position").change(function() {
             addContentEle.val(1);
             break;
     }
+    saveAddRule();
 });
 // 添加内容选择
 $("#add-content").change(function() {
@@ -245,6 +266,17 @@ $("#add-content").change(function() {
             childDisplayFormatEle.attr('disabled', 'disabled');
             break;
     }
+    saveAddRule();
+});
+
+//显示格式
+$('#display-format').change(function () {
+    saveAddRule();
+});
+
+//特征生成方式
+$('#character-format').change(function () {
+    saveAddRule();
 });
 
 // 子目生成方式选择事件
@@ -260,6 +292,12 @@ $("#child-display-format").change(function() {
         serialTypeEle.val(1);
         serialTypeEle.removeAttr('disabled');
     }
+    saveAddRule();
+});
+
+//序号格式
+$('#serial-type').change(function () {
+    saveAddRule();
 });
 
 /**

+ 4 - 4
web/building_saas/pm/html/project-management-Recycle.html

@@ -25,8 +25,8 @@
                 <p> 点“确定”按钮,确认从回收站中恢复。</p>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 <a href="javascript:void(0);" class="btn btn-primary" data-dismiss="modal" id="rePojBtn">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>
@@ -44,8 +44,8 @@
             <div class="modal-body">
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 <a href="javascript:void(0);" class="btn btn-primary" data-dismiss="modal" id="delPojBtn">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>
@@ -70,8 +70,8 @@
                 </table>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 <a href="javascript:void(0);" class="btn btn-primary" id="reFileBtn" data-dismiss="modal">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>
@@ -96,8 +96,8 @@
                 </table>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 <a href="javascript:void(0);" class="btn btn-primary" id="delFileBtn" data-dismiss="modal">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>

+ 2 - 0
web/building_saas/pm/js/pm_newMain.js

@@ -250,6 +250,7 @@ const projTreeObj = {
                             alert(error);
                             return false;
                         }
+                        //更新选中项目缓存
                         $('#copy-to-dialog').modal('show');
                     }
                 },
@@ -1368,6 +1369,7 @@ $(document).ready(function() {
         let projectData = _.cloneDeep(originalNode.data);
         projectData['ParentID'] = parent.id();
         projectData['NextSiblingID'] = nextID;
+        projectData['property'] ={};
         projectData['property']['rootProjectID'] = parent.pid();
         projectData['shareInfo'] = [];
         let rename = projTreeObj.projectNameChecking(parent,originalNode,"复制");//重名检查

+ 2 - 2
web/building_saas/pm/js/pm_share.js

@@ -670,7 +670,7 @@ const pmShare = (function () {
         }
         let copyMap = {copy: null, update: null};
         let newName = `${selected.data.name} (${selected.data.userInfo.name}共享)`;
-        //获取单项工程的最末单位工程
+        //获取单项工程的单位工程
         let tenderQuery = {$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], userID: userID, ParentID: engID};
         CommonAjax.post('/pm/api/getProjectsByQuery', {user_id: userID, query: tenderQuery, options: '-_id -property'}, function (rstData) {
             let updateTender = null;
@@ -700,7 +700,7 @@ const pmShare = (function () {
                 createDateTime: selected.data.createDateTime,
                 fileVer: selected.data.fileVer ? selected.data.fileVer : '',
                 projType: selected.data.projType,
-                property: selected.data.property,
+                property: {},
                 recentDateTime: selected.data.recentDateTime,
                 fullFolder: selected.data.fullFolder
             };

+ 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="print-list">
                 <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 class="form-list">
                     <ul id="rptTplTree" class="ztree"></ul>
@@ -16,25 +16,38 @@
                 <div class="print-toolsbar">
                     <div class="panel">
                         <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>打印
                             </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>导出
                             </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 class="panel">
                         <div class="panel-body">
                             <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
                                 <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">
                                         <a class="dropdown-item" id="hrefRptOrientation" onclick="zTreeOprObj.changeOrientation(this)">横向</a>
                                     </div>
                                 </div>
                                 <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">
                                         <a class="dropdown-item" id="hrefRptPageSize" onclick="zTreeOprObj.changePageSize(this)">A3</a>
                                     </div>
@@ -48,10 +61,10 @@
                     <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-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>
@@ -63,13 +76,13 @@
                         <div class="panel-body">
                             <div class="input-group input-group-sm" role="group">
                                 <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>
                                 <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">
-                                    <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>
                             </div>
                         </div>
@@ -92,8 +105,8 @@
 <%include ./rpt_margins.html %>
 <!--2弹出页面格式-->
 <%include ./rpt_content_format.html %>
-<!--弹出导出-->
-<%include ./rpt_export.html %>
+<!--弹出导出Excel-->
+<%include ./rpt_export_excel.html %>
 <script>
     const SCREEN_DPI = [];
     function getScreenDPI() {

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

@@ -75,6 +75,41 @@
                 });
             });
             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 {
             //alert("没有报表数据!");
         }

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

@@ -37,10 +37,12 @@ let zTreeOprObj = {
             let private_remove_hide_item = function (items) {
                 if (items && items.length > 0) {
                     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);
                         } 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;
         }
     },
+    previewSvgData: function() {
+        //
+    },
     buildSvgArr: function (pagesData, offsetX, offsetY) {
         let styles = pagesData[JV.NODE_STYLE_COLLECTION],
             fonts = pagesData[JV.NODE_FONT_COLLECTION],