Explorar el Código

排序细化(Tree类型,增加其他固化清单类型的挑选) + 界面优化

TonyKang hace 7 años
padre
commit
538b6448b8

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

@@ -716,16 +716,39 @@ function sortData(sourceData, sortCfg, prjData) {
             let addLevel = true;
             rst = treeUtil.buildTreeNodeDirectly(tempRstArr, addLevel);
             let newTopArr = [];
-            if (sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES] && sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0) {
+            if ((sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES] && sortCfg[JV.PROP_FILTER_TOP_BILLS_NODES].length > 0) ||
+                (sortCfg[JV.PROP_FILTER_OTHER_BILLS_NODES] && sortCfg[JV.PROP_FILTER_OTHER_BILLS_NODES].length > 0)) {
+                let local_check_bills = function(tItem) {
+                    let chkDtl = false;
+                    if (tItem.flags && tItem.flags.length > 0) {
+                        for (let flagItem of tItem.flags) {
+                            if (sortCfg[JV.PROP_FILTER_OTHER_BILLS_NODES].indexOf(flagItem.flag) >= 0) {
+                                newTopArr.push(tItem);
+                                chkDtl = true;
+                                break;
+                            }
+                        }
+                    }
+                    if (!chkDtl && tItem.items && tItem.items.length > 0) {
+                        for (let dtlItem of tItem.items) {
+                            local_check_bills(dtlItem);
+                        }
+                    }
+                };
                 for (let topItem of rst) {
+                    let chkTop = false;
                     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);
+                                chkTop = true;
                                 break;
                             }
                         }
                     }
+                    if (!chkTop && sortCfg[JV.PROP_FILTER_OTHER_BILLS_NODES] && sortCfg[JV.PROP_FILTER_OTHER_BILLS_NODES].length > 0) {
+                        local_check_bills(topItem);
+                    }
                 }
             } else {
                 newTopArr = rst;

+ 1 - 0
public/web/rpt_value_define.js

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

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

@@ -93,6 +93,8 @@ let common_rpt_type_ids = {
 
 let bandSetting = {
     view: {
+        addHoverDom: bandTreeOprObj.addHoverDom,
+        removeHoverDom: bandTreeOprObj.removeHoverDom,
         showIcon: true,
         expandSpeed: "",
         selectedMulti: false
@@ -110,6 +112,10 @@ let bandSetting = {
         chkStyle: "radio",
         radioType: "all"
     },
+    drag: {
+        isCopy: false,
+        isMove: true
+    },
     data: {
         keep: {
             parent:true,
@@ -129,6 +135,8 @@ let bandSetting = {
     callback:{
         onClick: bandTreeOprObj.onClick,
         onCheck: bandTreeOprObj.onCheck,
+        beforeDrag: bandTreeOprObj.onBeforeDrag,
+        beforeDrop: bandTreeOprObj.onBeforeDrop,
         beforeRemove: bandTreeOprObj.onBeforeRemove
     }
 };
@@ -563,6 +571,38 @@ let sortingTreeSetting = {
     }
 };
 
+let sortingTreeSetting2 = {
+    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.onOtherBillsNodeCheck
+        // beforeDrag: function(){return false;}
+    }
+};
+
 let filterKeysSetting = {
     view: {
         addDiyDom: preHandleFilterObj.addDiyDom

+ 26 - 27
web/maintain/report/js/rpt_tpl_band.js

@@ -141,41 +141,40 @@ let bandTreeOprObj = {
         rst[JV.BAND_PROP_MERGE_BORDER] = 'F';
         return rst;
     },
-    addRootBand: function (rptTpl) {
-        let me = this;
-        if (rptTpl) {
+    addHoverDom: function(treeId, treeNode) {
+        let me = bandTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
+        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType === RT.NodeType.TEMPLATE) return;
+        let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增布局框' onfocus='this.blur();'></span>";
+        sObj.after(addStr);
+        let btn = $("#addBtn_"+treeNode.tId);
+        if (btn) btn.bind("click", function(){
             let newBand = me.createDftBand();
             let newNodes = [], isSilent = false;
             newNodes.push(newBand);
-            if (me.treeObj) {
-                me.treeObj.addNodes(null, -1, newNodes, isSilent);
-            } else {
-                me.treeObj = $.fn.zTree.init($("#band_tree_reversed"), bandSetting, newNodes);
-            }
-        }
+            me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
+        });
     },
-    addSubBand: function (rptTpl) {
-        let me = this;
-        if (rptTpl && me.currentNode != null) {
-            let newBand = me.createDftBand();
-            let newNodes = [], isSilent = false;
-            newNodes.push(newBand);
-            me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent);
-        }
+    removeHoverDom: function(treeId, treeNode) {
+        $("#addBtn_"+treeNode.tId).unbind().remove();
     },
-    moveDownBand: function (rptTpl) {
-        let me = bandTreeOprObj;
-        if (rptTpl && me.currentNode && me.currentNode.getNextNode()) {
-            let nextNode = me.currentNode.getNextNode();
-            me.treeObj.moveNode(nextNode, me.currentNode, "next", true);
+    onBeforeDrag: function (treeId, treeNodes) {
+        let rst = true;
+        for (let node of treeNodes) {
+            if (node.level === 0) {
+                rst = false;
+                break;
+            }
         }
+        return rst;
     },
-    moveUpBand: function (rptTpl) {
-        let me = bandTreeOprObj;
-        if (rptTpl && me.currentNode && me.currentNode.getPreNode()) {
-            let preNode = me.currentNode.getPreNode();
-            me.treeObj.moveNode(preNode, me.currentNode, "prev", true);
+    onBeforeDrop: function (treeId, treeNodes, targetNode, moveType, isCopy) {
+        let me = bandTreeOprObj, rst = true;
+        if (targetNode.level === 0) {
+            if (moveType !== 'inner') {
+                rst = false;
+            }
         }
+        return rst;
     },
     onClick: function(event,treeId,treeNode) {
         let me = bandTreeOprObj;

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

@@ -358,6 +358,7 @@ let preHandleSortObj = {
     parentTreeObj: null,
     childTreeObj: null,
     topBillsTreeObj: null,
+    otherBillsTreeObj: null,
     copyNode: function (src, dest) {
         dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
         switch (sort_types.indexOf(src[JV.PROP_SORT_TYPE])) {
@@ -380,6 +381,11 @@ let preHandleSortObj = {
                     billKeys = billKeys.concat(src[JV.PROP_FILTER_TOP_BILLS_NODES]);
                 }
                 dest[JV.PROP_FILTER_TOP_BILLS_NODES] = billKeys;
+                let otherBillKeys = [];
+                if (src[JV.PROP_FILTER_OTHER_BILLS_NODES] && src[JV.PROP_FILTER_OTHER_BILLS_NODES].length > 0) {
+                    otherBillKeys = otherBillKeys.concat(src[JV.PROP_FILTER_OTHER_BILLS_NODES]);
+                }
+                dest[JV.PROP_FILTER_OTHER_BILLS_NODES] = otherBillKeys;
                 break;
             case 2 :
                 //according to parent
@@ -462,6 +468,20 @@ let preHandleSortObj = {
                     } else {
                         preHandleObj.currentNode[JV.PROP_FILTER_TOP_BILLS_NODES] = [];
                     }
+                    me.otherBillsTreeObj = $.fn.zTree.init($("#bills_other_nodes"), sortingTreeSetting2, fixed_other_bills_types);
+                    let otherBillnodes = me.otherBillsTreeObj.getNodes();
+                    if (preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES]) {
+                        for (let otherBillsNodeId of preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES]) {
+                            for (let otherBillsNode of otherBillnodes) {
+                                if (otherBillsNode.Value === otherBillsNodeId) {
+                                    me.otherBillsTreeObj.checkNode(otherBillsNode, true, false, false);
+                                    break;
+                                }
+                            }
+                        }
+                    } else {
+                        preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES] = [];
+                    }
                     break;
                 case 2 :
                     //according to parent
@@ -518,6 +538,19 @@ let preHandleSortObj = {
             }
         }
     },
+    onOtherBillsNodeCheck: function (event,treeId,treeNode) {
+        let me = preHandleSortObj;
+        if (treeNode.checked) {
+            if (preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].indexOf(treeNode.Value) < 0) {
+                preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].push(treeNode.Value);
+            }
+        } else {
+            let idx = preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].indexOf(treeNode.Value);
+            if (idx >= 0) {
+                preHandleObj.currentNode[JV.PROP_FILTER_OTHER_BILLS_NODES].splice(idx, 1);
+            }
+        }
+    },
     resetParentSort: function () {
         let me = preHandleSortObj;
         let nodes = me.parentTreeObj.getCheckedNodes();
@@ -601,6 +634,7 @@ let preHandleSortObj = {
             case 1 :
                 //tree
                 rst[JV.PROP_FILTER_TOP_BILLS_NODES] = handleObj[JV.PROP_FILTER_TOP_BILLS_NODES];
+                rst[JV.PROP_FILTER_OTHER_BILLS_NODES] = handleObj[JV.PROP_FILTER_OTHER_BILLS_NODES];
                 break;
             case 2 :
                 //according to parent

+ 0 - 6
web/maintain/report/rpt_tpl_detail_bands.html

@@ -1,12 +1,6 @@
 <div class="tab-pane" id="rpttpllayout" role="tabpanel">
     <div class="main-data">
         <div class="p-3">
-            <div class="tab-bar">
-                <a onclick="bandTreeOprObj.addRootBand(zTreeOprObj.getRefTpl())" class="btn btn-secondary btn-sm fa fa-plus-square">根模板框</a>
-                <a onclick="bandTreeOprObj.addSubBand(zTreeOprObj.getRefTpl())" class="btn btn-secondary btn-sm fa fa-plus-square">子模板框</a>
-                <a onclick="bandTreeOprObj.moveDownBand(zTreeOprObj.getRefTpl())" class="btn btn-sm" id="downMoveBand"><i class="fa fa-arrow-down" aria-hidden="true"></i>下移</a>
-                <a onclick="bandTreeOprObj.moveUpBand(zTreeOprObj.getRefTpl())" class="btn btn-sm" id="upMoveBand"><i class="fa fa-arrow-up" aria-hidden="true"></i>上移</a>
-            </div>
             <div class="ztree-warp">
                 <ul id="band_tree_reversed" class="ztree"></ul>
             </div>

+ 0 - 10
web/maintain/report/rpt_tpl_detail_info.html

@@ -35,16 +35,6 @@
                     </div>
                 </div>
             </div>
-            <div class="form-group row" style="display: none">
-                <div class="input-group col-6">
-                    <div class="input-group-addon">空行提上</div>
-                    <select class="form-control input-sm"><option>提上</option></select>
-                </div>
-                <div class="input-group col-6">
-                    <div class="input-group-addon">空行显示</div>
-                    <select class="form-control input-sm"><option>显示</option></select>
-                </div>
-            </div>
             <div class="row" id="element_content_height_width">
                 <div class="form-group col-md-6">
                     <label>显示行 - 高度</label>

+ 7 - 1
web/maintain/report/rpt_tpl_detail_pre_handle_sort.html

@@ -37,10 +37,16 @@
     </div>
 </div>
 <div class="form-group row" id="div_sort_tree">
-    <div class="form-group col-md-7">
+    <div class="form-group col-md-6">
         <label>清单顶节点(全空白表示全部)</label>
         <div class="ztree-warp">
             <ul id="bills_top_nodes" class="ztree"></ul>
         </div>
     </div>
+    <div class="form-group col-md-6">
+        <label>清单其他节点(全空白表示全部)</label>
+        <div class="ztree-warp">
+            <ul id="bills_other_nodes" class="ztree"></ul>
+        </div>
+    </div>
 </div>