Bläddra i källkod

顶层清单过滤

TonyKang 7 år sedan
förälder
incheckning
cd99ae981c

+ 16 - 1
modules/reports/util/rpt_construct_data_util.js

@@ -619,8 +619,23 @@ function sortData(sourceData, sortCfg, prjData) {
     switch (sortType) {
         case "tree":
             rst = treeUtil.buildTreeNodeDirectly(tempRstArr);
+            let newTopArr = [];
+            if (sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES] && sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0) {
+                for (let topItem of rst) {
+                    if (topItem.flags && topItem.flags.length > 0) {
+                        for (let flagItem of topItem.flags) {
+                            if (sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES].indexOf(flagItem.flag) >= 0) {
+                                newTopArr.push(topItem);
+                                break;
+                            }
+                        }
+                    }
+                }
+            } else {
+                newTopArr = rst;
+            }
             let destArr = [];
-            treeUtil.getFlatArray(rst, destArr);
+            treeUtil.getFlatArray(newTopArr, destArr);
             delete sourceData.data;
             sourceData.data = destArr;
             // fsUtil.writeObjToFile(sourceData.data, "D:/GitHome/ConstructionCost/tmp/sortedAndFlattedRst.js");

+ 1 - 0
public/web/rpt_value_define.js

@@ -54,6 +54,7 @@ const JV = {
     PROP_OTHER_SUB_SORT: "其他子排序",
     PROP_HANDLE_TYPE: "预处理类型",
     PROP_FILTER_KEYS: "过滤键值集",
+    PROP_FILTER_TOP_BILLS_NODES: "清单顶节点集",
     PROP_FILTER_COMPARE_OBJ: "compareObjKey",
     PROP_FILTER_COMPARE_OBJ_KEY: "compareObjIdKey",
     PROP_FILTER_COMPARE_VAL: "compareValue",

+ 32 - 0
web/maintain/report/js/cfg_const.js

@@ -519,6 +519,38 @@ let sortingKeysSetting = {
     }
 };
 
+let sortingTreeSetting = {
+    view: {
+    },
+    edit: {
+        enable: false,
+        editNameSelectAll: false,
+        showRemoveBtn: false,
+        showRenameBtn: false
+    },
+    check: {
+        enable: true
+    },
+    data: {
+        keep: {
+            parent:true,
+            leaf:true
+        },
+        key: {
+            children: 'items',
+            name: "Name",
+            title: "Title",
+        },
+        simpleData: {
+            enable: true
+        }
+    },
+    callback:{
+        onCheck: preHandleSortObj.onTopBillsNodeCheck
+        // beforeDrag: function(){return false;}
+    }
+};
+
 let filterKeysSetting = {
     view: {
         addDiyDom: preHandleFilterObj.addDiyDom

+ 55 - 0
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -51,6 +51,27 @@ const exposed_prj_glj_properties = [
     {Name: "工料机_数量", Title: "", Key: "quantity", Order: "ascend"}
 ];
 const exposed_properties_arr = [exposed_bills_properties, exposed_ration_properties, exposed_prj_glj_properties];
+const fixed_bills = [
+    {Name: "分部分项工程", Title: "", Value: 1},
+    {Name: "措施项目", Title: "", Value: 2},
+    {Name: "施工技术措施项目", Title: "", Value: 3},
+    {Name: "安全文明施工按实计算费用", Title: "", Value: 4},
+    {Name: "施工组织措施专项费用", Title: "", Value: 5},
+    {Name: "安全文明施工专项费用", Title: "", Value: 6},
+    {Name: "其他项目", Title: "", Value: 7},
+    {Name: "暂列金额", Title: "", Value: 8},
+    {Name: "暂估价", Title: "", Value: 9},
+    {Name: "材料(工程设备)暂估价", Title: "", Value: 10},
+    {Name: "专业工程暂估价", Title: "", Value: 11},
+    {Name: "计日工", Title: "", Value: 12},
+    {Name: "总承包服务费", Title: "", Value: 13},
+    {Name: "索赔与现场签证", Title: "", Value: 14},
+    {Name: "规费", Title: "", Value: 15},
+    {Name: "社会保险费及住房公积金", Title: "", Value: 16},
+    {Name: "工程排污费", Title: "", Value: 17},
+    {Name: "税金", Title: "", Value: 18},
+    {Name: "工程造价", Title: "", Value: 19}
+];
 const IDMark_Switch = "_switch",
     IDMark_Icon = "_ico",
     IDMark_Span = "_span",
@@ -245,6 +266,7 @@ let preHandleObj = {
         $("#div_add_dummy_type")[0].style.display = "none";
         $("#div_sort_type_according_to_parent")[0].style.display = "none";
         $("#div_sort_type_parent_data")[0].style.display = "none";
+        $("#div_sort_tree")[0].style.display = "none";
     },
     onPreHandleClick: function(event,treeId,treeNode) {
         //点击预处理环节 节点
@@ -322,6 +344,7 @@ let preHandleSortObj = {
     normalTreeObj: null,
     parentTreeObj: null,
     childTreeObj: null,
+    topBillsTreeObj: null,
     copyNode: function (src, dest) {
         dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
         switch (sort_types.indexOf(src[JV.PROP_SORT_TYPE])) {
@@ -339,6 +362,11 @@ let preHandleSortObj = {
                 break;
             case 1 :
                 //tree
+                let billKeys = [];
+                if (src[JV.PROP_FILTER_TOP_BILLS_NODES] && src[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0) {
+                    billKeys = billKeys.concat(src[JV.PROP_FILTER_TOP_BILLS_NODES]);
+                }
+                dest[JV.PROP_FILTER_TOP_BILLS_NODES] = billKeys;
                 break;
             case 2 :
                 //according to parent
@@ -404,6 +432,16 @@ let preHandleSortObj = {
                 case 1 :
                     //tree
                     //tree排序是我们特有的数据结构方式,与数据结构有关,非common用
+                    $("#div_sort_tree")[0].style.display = "";
+                    me.topBillsTreeObj = $.fn.zTree.init($("#bills_top_nodes"), sortingTreeSetting, fixed_bills);
+                    let topBillnodes = me.topBillsTreeObj.getNodes();
+                    if (preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES]) {
+                        for (let topBillsNodeId of preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES]) {
+                            me.topBillsTreeObj.checkNode(topBillnodes[topBillsNodeId - 1], true, false, false);
+                        }
+                    } else {
+                        preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES] = [];
+                    }
                     break;
                 case 2 :
                     //according to parent
@@ -447,6 +485,19 @@ let preHandleSortObj = {
             me.resetNormalSort();
         }
     },
+    onTopBillsNodeCheck: function (event,treeId,treeNode) {
+        let me = preHandleSortObj;
+        if (treeNode.checked) {
+            if (preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].indexOf(treeNode.Value) < 0) {
+                preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].push(treeNode.Value);
+            }
+        } else {
+            let idx = preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].indexOf(treeNode.Value);
+            if (idx >= 0) {
+                preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES].splice(idx, 1);
+            }
+        }
+    },
     resetNormalSort: function() {
         let me = preHandleSortObj;
         let nodes = me.normalTreeObj.getCheckedNodes();
@@ -489,6 +540,9 @@ let preHandleSortObj = {
             $("#div_sort_type_normal")[0].style.display = "";
             preHandleSortObj.normalTreeObj = $.fn.zTree.init($("#pre_handle_sort_keys_reversed"), sortingKeysSetting, exposed_properties_arr[data_dom.selectedIndex]);
             me.currentNode[JV.PROP_SORT_KEYS] = [];
+        } else if (dom.selectedIndex === 1) {
+            $("#div_sort_tree")[0].style.display = "";
+            preHandleSortObj.normalTreeObj = $.fn.zTree.init($("#bills_top_nodes"), sortingTreeSetting, fixed_bills);
         }
         me.currentNode[JV.PROP_SORT_TYPE] = dom.value;
     },
@@ -507,6 +561,7 @@ let preHandleSortObj = {
                 break;
             case 1 :
                 //tree
+                rst[JV.PROP_FILTER_TOP_BILLS_NODES] = handleObj[JV.PROP_FILTER_TOP_BILLS_NODES];
                 break;
             case 2 :
                 //according to parent

+ 8 - 0
web/maintain/report/rpt_tpl_detail_pre_handle_sort.html

@@ -36,3 +36,11 @@
         </div>
     </div>
 </div>
+<div class="form-group row" id="div_sort_tree">
+    <div class="form-group col-md-7">
+        <label>清单顶节点(全空白表示全部)</label>
+        <div class="ztree-warp">
+            <ul id="bills_top_nodes" class="ztree"></ul>
+        </div>
+    </div>
+</div>