ソースを参照

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

zhangweicheng 7 年 前
コミット
7b01c6679c

+ 6 - 0
modules/options/models/optionTypes.js

@@ -42,6 +42,12 @@ const optionSetting = {
             stringFont: 'default',
             numFont: 'default'
         },
+        BX: {
+            backColor: '#EEF8FA',
+            foreColor: 'default',
+            stringFont: 'default',
+            numFont: 'default'
+        },
         UNCBBILL: {
             backColor: '#DFE8F9',
             foreColor: 'default',

+ 13 - 0
web/building_saas/main/html/main.html

@@ -63,6 +63,19 @@
                     <a href="javascript:void(0)" class="btn btn-sm" id="downLevel" title="降级"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" id="downMove" title="下移"><i class="fa fa-arrow-down" aria-hidden="true"></i></a>
                     <a href="javascript:void(0)" class="btn btn-sm" id="upMove" title="上移"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
+                      <span>
+                  <a href="" class="btn btn-sm" data-toggle="dropdown"><b data-toggle="tooltip" data-placement="bottom">显示至...</b></a>
+                  <div class="dropdown-menu dropdown-menu-left">
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayDXFY">大项费用</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayFB1">一级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayFB2">二级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayFB3">三级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayFB4">四级分部</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayFX">分项</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayZM">子目</a>
+                      <a class="dropdown-item" href="javascript:void(0);" style="padding: 0rem 2.5rem" id="displayZD">最底层</a>
+                  </div>
+                </span>
                   </div>
                   <div class="tools-btn">
                       <a href="javacript:void(0);" data-toggle="modal" data-target="#column" class="btn btn-sm"><i class="fa fa-table" aria-hidden="true"></i> 列设置</a>

+ 86 - 2
web/building_saas/main/js/views/project_view.js

@@ -961,7 +961,7 @@ var projectObj = {
     getNodeColorStyle: function (node, colSetting) {
         let colorSetting = optionsOprObj.getOption(optionsOprObj.optionsTypes.COLOROPTS);
         let mapping = {DEFAULT: 'DEFAULT', DXFY: 'DXFY', FB: 'FB', UNLEAFBILL: 'UNLEAFBILL',
-            FX: 'FX', UNCBBILL: 'UNCBBILL', CBBILL: 'CBBILL', ZCSB: 'ZCSB'};
+            FX: 'FX', BX: 'BX', UNCBBILL: 'UNCBBILL', CBBILL: 'CBBILL', ZCSB: 'ZCSB'};
         let styleMap = null;
         //中文字段名,由于同一节点中,中文字体大小和数字字体大小不同
         let stringFields = [
@@ -994,6 +994,10 @@ var projectObj = {
             else if(node.data.type === billType.FX){
                 styleMap = mapping.FX;
             }
+            //补项
+            else if(node.data.type === billType.BX){
+                styleMap = mapping.BX;
+            }
             //清单
             else if(node.data.type === billType.BILL){
                 //非叶子节点的清单
@@ -1157,6 +1161,86 @@ $('#downMove').click(function () {
         };
     }
 });
+//显示至..
+let displayLevel = function(nodes, depth, type){
+    let refreshNodes = [];
+    function getExpandedController(){
+        if(type === 'DXFY' || type === 'FB'){
+            if(type === 'FB'){
+                projectObj.project.mainTree.items[0].setExpanded(true);
+                refreshNodes.push(projectObj.project.mainTree.items[0]);
+            }
+            return  function expandedControl(nodes, depth){
+                let bType = type === 'FB' ? billType.FB : billType.DXFY;
+                for(let node of nodes){
+                    let nodeDepth = node.depth();
+                    if(nodeDepth <= depth){
+                        let expanded = nodeDepth === depth && !node.children[0] || nodeDepth < depth && node.children[0] && node.children[0].data.type === bType ? true : false;
+                        node.setExpanded(expanded);
+                        refreshNodes.push(node);
+                        if(nodeDepth < depth){
+                            expandedControl(node.children, depth);
+                        }
+                    }
+                }
+            }
+        }
+        else if(type === 'FX' || type === 'ZM' || type === 'ZD'){
+            return  function expandedControl(nodes){
+                for(let node of nodes){
+                    if(type !== 'FX' || node.sourceType === projectObj.project.Bills.getSourceType()){
+                        let expanded = true;
+                        if(type === 'FX'){
+                            expanded =  !node.children[0] || node.children[0] && node.children[0].sourceType === projectObj.project.Bills.getSourceType() ? true : false;
+                        }
+                        else if(type === 'ZM'){
+                            expanded =  !node.children[0] || node.children[0] && node.children[0].sourceType !== projectObj.project.ration_glj.getSourceType() ? true : false;
+                        }
+                        node.setExpanded(expanded);
+                        refreshNodes.push(node);
+                        expandedControl(node.children);
+                    }
+                }
+            }
+        }
+    }
+    getExpandedController()(nodes, depth);
+    let sheet = projectObj.mainSpread.getActiveSheet();
+    TREE_SHEET_HELPER.massOperationSheet(sheet, function () {
+        TREE_SHEET_HELPER.refreshNodesVisible(refreshNodes, projectObj.mainSpread.getActiveSheet(), true)
+    });
+};
+$('#displayDXFY').click(function () {
+   displayLevel(projectObj.project.mainTree.items, 0, 'DXFY')
+});
+//显示至一级分部
+$('#displayFB1').click(function () {
+   displayLevel(projectObj.project.mainTree.items[0].children, 1, 'FB');
+});
+//二级分部
+$('#displayFB2').click(function () {
+    displayLevel(projectObj.project.mainTree.items[0].children, 2, 'FB');
+});
+//三级分部
+$('#displayFB3').click(function () {
+    displayLevel(projectObj.project.mainTree.items[0].children, 3, 'FB');
+});
+//四级分部
+$('#displayFB4').click(function () {
+    displayLevel(projectObj.project.mainTree.items[0].children, 4, 'FB');
+});
+//分项
+$('#displayFX').click(function () {
+    displayLevel(projectObj.project.mainTree.items, null, 'FX');
+});
+//子目
+$('#displayZM').click(function () {
+    displayLevel(projectObj.project.mainTree.items, null, 'ZM');
+});
+//最底层
+$('#displayZD').click(function () {
+   displayLevel(projectObj.project.mainTree.roots, null, 'ZD');
+});
 
 $('#poj-set').on('show.bs.modal', function () {
     let setCalcFlag = function (obj, val, curFlag) {
@@ -1169,7 +1253,7 @@ $('#poj-set').on('show.bs.modal', function () {
     }
     if (projectObj.project) {
         // let mode = projectObj.project.projSetting.billsCalcMode;
-        // let settingConst = projectObj.project.projSetting.settingConst;
+        // let settingConst = projectObj.project.projSetting.settingConst;
         let ft = projectObj.project.property.billsCalcMode ? projectObj.project.property.billsCalcMode : leafBillGetFeeType.rationContent;
         setCalcFlag($('#rationContent'), leafBillGetFeeType.rationContent, ft);
         setCalcFlag($('#rationPriceConverse'), leafBillGetFeeType.rationPriceConverse, ft);

+ 19 - 0
web/building_saas/main/js/views/std_ration_lib.js

@@ -14,6 +14,7 @@ var rationLibObj = {
     checkSpread: function () {
         if (!this.rationChapterSpread) {
             this.rationChapterSpread = SheetDataHelper.createNewSpread($('#stdRationChapter')[0]);
+            this.rationChapterSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, this.onChapterSpreadCellDoubleClick);
         }
         if (!this.sectionRationsSpread) {
             this.sectionRationsSpread = SheetDataHelper.createNewSpread($('#stdSectionRations')[0]);
@@ -46,6 +47,7 @@ var rationLibObj = {
         var that = this;
         var showRationChapterTree = function (datas) {
             var rationChapterTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: false});
+            that.tree = rationChapterTree;
             var rationChapterTreeController = TREE_SHEET_CONTROLLER.createNew(rationChapterTree, that.rationChapterSpread.getActiveSheet(), that.rationChapterTreeSetting);
             rationChapterTree.loadDatas(datas);
             rationChapterTreeController.showTreeData();
@@ -67,6 +69,23 @@ var rationLibObj = {
             showRationChapterTree([]);
         });
     },
+    //双击隐藏显示
+    onChapterSpreadCellDoubleClick: function (sender, args) {
+        let me = rationLibObj;
+        let node = me.tree.items[args.row];
+        if (!node || node.children.length === 0)
+            return;
+        node.setExpanded(!node.expanded);
+        TREE_SHEET_HELPER.massOperationSheet(args.sheet, function () {
+            let iCount = node.posterityCount(), i, child;
+            for (i = 0; i < iCount; i++) {
+                child = me.tree.items[args.row + i + 1];
+                args.sheet.setRowVisible(args.row + i + 1, child.visible, args.sheetArea);
+            }
+            args.sheet.invalidateLayout();
+        });
+        args.sheet.repaint();
+    },
     setTagForHint: function (datas) {
         let sheet = this.sectionRationsSpread.getActiveSheet();
         sheet.suspendPaint();