Browse Source

编辑器tuning (预处理)

TonyKang 7 years ago
parent
commit
bc6f71ea71
2 changed files with 174 additions and 79 deletions
  1. 6 5
      web/maintain/report/js/cfg_const.js
  2. 168 74
      web/maintain/report/js/rpt_tpl_pre_handle.js

+ 6 - 5
web/maintain/report/js/cfg_const.js

@@ -473,19 +473,20 @@ let preHandleTypeSetting = {
         }
     },
     callback:{
-        onClick: preHandleObj.onTypeClick,
+        onCheck: preHandleObj.onTypeClick,
         beforeDrag: function() {return false;}
     }
 };
 
 let sortingKeysSetting = {
     view: {
-        showIcon: true,
-        expandSpeed: "",
-        selectedMulti: false
+        // showIcon: true,
+        // expandSpeed: "",
+        // selectedMulti: false,
+        addDiyDom: preHandleSortObj.addDiyDom
     },
     edit: {
-        enable: true,
+        enable: false,
         editNameSelectAll: false,
         showRemoveBtn: false,
         showRenameBtn: false

+ 168 - 74
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -6,50 +6,59 @@ const sort_types = ["normal", "tree", "accord_to_parent", "self_define"];
 const pre_handle_data_objects = ["bills", "ration", "ration_glj"];
 const pre_handle_data_objects_name = ["清单", "定额", "定额工料机"];
 const exposed_bills_properties = [
-    {Name: "清单_ID", Title: "", Key: "ID"},
-    {Name: "清单_所属项目ID", Title: "", Key: "projectID"},
-    {Name: "清单_项目编码", Title: "", Key: "code"},
-    {Name: "清单_项目名称", Title: "", Key: "name"},
-    {Name: "清单_项目特征", Title: "", Key: "itemCharacterText"},
-    {Name: "清单_计量单位", Title: "", Key: "unit"},
-    {Name: "清单_工程量", Title: "", Key: "quantity"},
-    {Name: "清单_综合单价", Title: "", Key: "unitFee"},
-    {Name: "清单_综合合价", Title: "", Key: "totalFee"},
-    {Name: "清单_暂估价", Title: "", Key: "tenderUnitFee"}
+    {Name: "清单_ID", Title: "", Key: "ID", Order: "ascend"},
+    {Name: "清单_所属项目ID", Title: "", Key: "projectID", Order: "ascend"},
+    {Name: "清单_项目编码", Title: "", Key: "code", Order: "ascend"},
+    {Name: "清单_项目名称", Title: "", Key: "name", Order: "ascend"},
+    {Name: "清单_项目特征", Title: "", Key: "itemCharacterText", Order: "ascend"},
+    {Name: "清单_计量单位", Title: "", Key: "unit", Order: "ascend"},
+    {Name: "清单_工程量", Title: "", Key: "quantity", Order: "ascend"},
+    {Name: "清单_综合单价", Title: "", Key: "unitFee", Order: "ascend"},
+    {Name: "清单_综合合价", Title: "", Key: "totalFee", Order: "ascend"},
+    {Name: "清单_暂估价", Title: "", Key: "tenderUnitFee", Order: "ascend"}
 ];
 const exposed_ration_properties = [
-    {Name: "定额_工程内部ID", Title: "", Key: "ID"},
-    {Name: "定额_所属清单ID", Title: "", Key: "billsItemID"},
-    {Name: "定额_所属项目ID", Title: "", Key: "projectID"},
-    {Name: "定额_编号", Title: "", Key: "code"},
-    {Name: "定额_项目名称", Title: "", Key: "caption"},
-    {Name: "定额_单位", Title: "", Key: "unit"},
-    {Name: "定额_数量", Title: "", Key: "quantity"},
-    {Name: "定额_人工费", Title: "", Key: "labour"},
-    {Name: "定额_材料费", Title: "", Key: "material"},
-    {Name: "定额_机械费", Title: "", Key: "machine"},
-    {Name: "定额_机上人工费", Title: "", Key: "machineLabour"},
-    {Name: "定额_人工费调整", Title: "", Key: "adjustLabour"},
-    {Name: "定额_材料费调整", Title: "", Key: "'adjustMaterial'"},
-    {Name: "定额_机械费调整", Title: "", Key: "adjustMachine"},
-    {Name: "定额_机上人工费调整", Title: "", Key: "adjustMachineLabour"},
-    {Name: "定额_人工价差", Title: "", Key: "labourDiff"},
-    {Name: "定额_材料价差", Title: "", Key: "materialDiff"},
-    {Name: "定额_机械价差", Title: "", Key: "machineDiff"},
-    {Name: "定额_风险费用", Title: "", Key: "risk"}
+    {Name: "定额_工程内部ID", Title: "", Key: "ID", Order: "ascend"},
+    {Name: "定额_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend"},
+    {Name: "定额_所属项目ID", Title: "", Key: "projectID", Order: "ascend"},
+    {Name: "定额_编号", Title: "", Key: "code", Order: "ascend"},
+    {Name: "定额_项目名称", Title: "", Key: "caption", Order: "ascend"},
+    {Name: "定额_单位", Title: "", Key: "unit", Order: "ascend"},
+    {Name: "定额_数量", Title: "", Key: "quantity", Order: "ascend"},
+    {Name: "定额_人工费", Title: "", Key: "labour", Order: "ascend"},
+    {Name: "定额_材料费", Title: "", Key: "material", Order: "ascend"},
+    {Name: "定额_机械费", Title: "", Key: "machine", Order: "ascend"},
+    {Name: "定额_机上人工费", Title: "", Key: "machineLabour", Order: "ascend"},
+    {Name: "定额_人工费调整", Title: "", Key: "adjustLabour", Order: "ascend"},
+    {Name: "定额_材料费调整", Title: "", Key: "'adjustMaterial'", Order: "ascend"},
+    {Name: "定额_机械费调整", Title: "", Key: "adjustMachine", Order: "ascend"},
+    {Name: "定额_机上人工费调整", Title: "", Key: "adjustMachineLabour", Order: "ascend"},
+    {Name: "定额_人工价差", Title: "", Key: "labourDiff", Order: "ascend"},
+    {Name: "定额_材料价差", Title: "", Key: "materialDiff", Order: "ascend"},
+    {Name: "定额_机械价差", Title: "", Key: "machineDiff", Order: "ascend"},
+    {Name: "定额_风险费用", Title: "", Key: "risk", Order: "ascend"}
     // {Name: "定额_管理费率", Title: "", Key: ""}
 ];
 const exposed_prj_glj_properties = [
     {Name: "工料机_ID", Title: "", Key: "ID"},
-    {Name: "工料机_所属定额ID", Title: "", Key: "rationID"},
-    {Name: "工料机_所属清单ID", Title: "", Key: "billsItemID"},
-    {Name: "工料机_所属工程ID", Title: "", Key: "projectID"},
-    {Name: "工料机_代码", Title: "", Key: "code"},
-    {Name: "工料机_名称", Title: "", Key: "name"},
-    {Name: "工料机_单位", Title: "", Key: "unit"},
-    {Name: "工料机_数量", Title: "", Key: "quantity"}
+    {Name: "工料机_所属定额ID", Title: "", Key: "rationID", Order: "ascend"},
+    {Name: "工料机_所属清单ID", Title: "", Key: "billsItemID", Order: "ascend"},
+    {Name: "工料机_所属工程ID", Title: "", Key: "projectID", Order: "ascend"},
+    {Name: "工料机_代码", Title: "", Key: "code", Order: "ascend"},
+    {Name: "工料机_名称", Title: "", Key: "name", Order: "ascend"},
+    {Name: "工料机_单位", Title: "", Key: "unit", Order: "ascend"},
+    {Name: "工料机_数量", Title: "", Key: "quantity", Order: "ascend"}
 ];
 const exposed_properties_arr = [exposed_bills_properties, exposed_ration_properties, exposed_prj_glj_properties];
+const IDMark_Switch = "_switch",
+    IDMark_Icon = "_ico",
+    IDMark_Span = "_span",
+    IDMark_Input = "_input",
+    IDMark_Check = "_check",
+    IDMark_Edit = "_edit",
+    IDMark_Remove = "_remove",
+    IDMark_Ul = "_ul",
+    IDMark_A = "_a";
 
 let preHandleObj = {
     treeObj: null,
@@ -101,7 +110,7 @@ let preHandleObj = {
         }
     },
     addNewNode: function() {
-        let me = this, item = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": "排序", "排序方式": "normal", Operations : []};
+        let me = this, item = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": "排序", "排序方式": "normal", "排序键值集":[], Operations: []};
         me.private_set_title(item);
         me.treeObj.addNodes(null, -1, [item], true);
     },
@@ -121,34 +130,14 @@ let preHandleObj = {
         } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADD_DUMMY) {
             preHandleAddDummyObj.copyNode(src, dest);
         }
-
-        // if (src[JV.PROP_SORT_TYPE]) dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
-        // if (src[JV.PROP_PARENT_DATA_KEY]) dest[JV.PROP_PARENT_DATA_KEY] = src[JV.PROP_PARENT_DATA_KEY];
-        // if (src[JV.PROP_PARENT_CHILD_SORT_KEY]) dest[JV.PROP_PARENT_CHILD_SORT_KEY] = src[JV.PROP_PARENT_CHILD_SORT_KEY];
-        // if (src[JV.PROP_PARENT_SORT_KEYS]) dest[JV.PROP_PARENT_SORT_KEYS] = src[JV.PROP_PARENT_SORT_KEYS];
-        // if (src[JV.PROP_CHILD_SORT_KEYS]) dest[JV.PROP_CHILD_SORT_KEYS] = src[JV.PROP_CHILD_SORT_KEYS];
-        // if (src[JV.PROP_OTHER_SUB_SORT]) dest[JV.PROP_OTHER_SUB_SORT] = src[JV.PROP_OTHER_SUB_SORT];
-        // if (src[JV.PROP_FILTER_KEY]) dest[JV.PROP_FILTER_KEY] = src[JV.PROP_FILTER_KEY];
-        // if (src[JV.PROP_FILTER_COMPARE_OBJ]) dest[JV.PROP_FILTER_COMPARE_OBJ] = src[JV.PROP_FILTER_COMPARE_OBJ];
-        // if (src[JV.PROP_FILTER_COMPARE_OBJ_KEY]) dest[JV.PROP_FILTER_COMPARE_OBJ_KEY] = src[JV.PROP_FILTER_COMPARE_OBJ_KEY];
-        // if (src[JV.PROP_FILTER_COMPARE_VAL]) dest[JV.PROP_FILTER_COMPARE_VAL] = src[JV.PROP_FILTER_COMPARE_VAL];
-        // if (src[JV.PROP_FILTER_CONDITION]) dest[JV.PROP_FILTER_CONDITION] = src[JV.PROP_FILTER_CONDITION];
-
-        // if (src[JV.PROP_HANDLE_TYPE_SUM]) dest[JV.PROP_HANDLE_TYPE_SUM] = src[JV.PROP_HANDLE_TYPE_SUM];
-        // if (src[JV.PROP_HANDLE_TYPE_SORT]) dest[JV.PROP_HANDLE_TYPE_SORT] = src[JV.PROP_HANDLE_TYPE_SORT];
-        // if (src[JV.PROP_HANDLE_TYPE_ADD_DUMMY]) dest[JV.PROP_HANDLE_TYPE_ADD_DUMMY] = src[JV.PROP_HANDLE_TYPE_ADD_DUMMY];
-        // if (src[JV.PROP_HANDLE_TYPE_ADJUST]) dest[JV.PROP_HANDLE_TYPE_ADJUST] = src[JV.PROP_HANDLE_TYPE_ADJUST];
-
-        // if (src[JV.PROP_PARENT_DATA_KEY]) dest[JV.PROP_PARENT_DATA_KEY] = src[JV.PROP_PARENT_DATA_KEY];
-
     },
     private_set_title: function(node) {
         let nameStr = node[JV.PROP_NAME], idx = nameStr.indexOf("(");
         if (idx >= 0) {
             nameStr = nameStr.slice(0, idx);
         }
-        node[JV.PROP_NAME] = nameStr + "(" + node["预处理类型"] + ")";
-        node.Title = "映射数据对象:" + node["映射数据对象"] + " | " + node["预处理类型"];
+        node[JV.PROP_NAME] = nameStr + "(" + node[JV.PROP_HANDLE_TYPE] + ")";
+        node.Title = "映射数据对象:" + node[JV.PROP_DATA_KEY] + " | " + node[JV.PROP_HANDLE_TYPE];
     },
     refreshByNode: function(treeNode) {
         let me = preHandleObj;
@@ -198,29 +187,47 @@ let preHandleObj = {
         $("#div_sort_type_parent_data")[0].style.display = "none";
     },
     onPreHandleClick: function(event,treeId,treeNode) {
+        //点击预处理环节 节点
         let me = preHandleObj;
         me.currentNode = treeNode;
         me.setDisabledBandSelect(false);
         me.refreshByNode(treeNode);
     },
     onTypeClick: function(event,treeId,treeNode) {
-        //
+        //选择预处理类型(排序、过滤。。。)
+        let me = preHandleObj;
+        if (me.currentNode) {
+            me.currentNode[JV.PROP_HANDLE_TYPE] = treeNode[JV.PROP_NAME];
+            me.private_set_title(me.currentNode);
+            me.treeObj.updateNode(me.currentNode, false);
+            me.refreshByNode(me.currentNode);
+        }
     },
     onChangeDataMappingObj: function(dom, oprType) {
+        //更改(或选择)预处理环节中的 数据依据(就是说报表想预处理什么数据)
+        let me = preHandleObj;
         if (oprType === "top") {
-            $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+            me.childTreeObj = $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+            me.treeObj = $.fn.zTree.init($("#pre_handle_sort_keys_reversed"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
         } else if (oprType === "accord_to_parent") {
-            $.fn.zTree.init($("#parent_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+            me.parentTreeObj = $.fn.zTree.init($("#parent_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
         }
     },
     onSortTypeChange: function(dom) {
+        //排序类型的选择/更改
+        let me = preHandleObj;
+        me.hide_all_dom();
+        $("#div_pre_handle_data")[0].style.display = "";
+        $("#div_sort_type")[0].style.display = "";
         if (dom.selectedIndex === 2) {
             $("#div_sort_type_according_to_parent")[0].style.display = "";
             $("#div_sort_type_parent_data")[0].style.display = "";
-        } else {
-            $("#div_sort_type_according_to_parent")[0].style.display = "none";
-            $("#div_sort_type_parent_data")[0].style.display = "none";
+            me.parentTreeObj = $.fn.zTree.init($("#parent_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+            me.childTreeObj = $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+        } else if (dom.selectedIndex === 0) {
+            $("#div_sort_type_normal")[0].style.display = "";
         }
+
     },
     onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
         //
@@ -235,11 +242,36 @@ let preHandleObj = {
         return rst;
     },
     extractTabFields: function (rptTpl) {
-        //
+        if (rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
+            for (let handleObj of rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
+                switch (handleObj[JV.PROP_HANDLE_TYPE]) {
+                    case JV.PROP_HANDLE_TYPE_SORT:
+                        preHandleSortObj.extractTabFields(handleObj);
+                        break;
+                    case JV.PROP_HANDLE_TYPE_FILTER:
+                        preHandleFilterObj.extractTabFields(handleObj);
+                        break;
+                    case JV.PROP_HANDLE_TYPE_SUM:
+                        preHandleSummaryObj.extractTabFields(handleObj);
+                        break;
+                    case JV.PROP_HANDLE_TYPE_ADJUST:
+                        preHandleAdjustObj.extractTabFields(handleObj);
+                        break;
+                    case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
+                        preHandleAddDummyObj.extractTabFields(handleObj);
+                        break;
+                    default:
+                        break;
+                }
+            }
+        }
     }
 };
 
 let preHandleSortObj = {
+    normalTreeObj: null,
+    parentTreeObj: null,
+    childTreeObj: null,
     copyNode: function (src, dest) {
         dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
         switch (sort_types.indexOf(src[JV.PROP_SORT_TYPE])) {
@@ -287,6 +319,7 @@ let preHandleSortObj = {
         }
     },
     refresh_node: function () {
+        let me = this;
         $("#div_sort_type")[0].style.display = "";
         if (preHandleObj.currentNode) {
             let sel = $("#select_sort_types")[0];
@@ -301,10 +334,16 @@ let preHandleSortObj = {
                     //normal
                     $("#div_sort_type_normal")[0].style.display = "";
                     idx = pre_handle_data_objects.indexOf(preHandleObj.currentNode[JV.PROP_DATA_KEY]);
-                    $.fn.zTree.init($("#pre_handle_sort_keys_reversed"), sortingKeysSetting, exposed_properties_arr[idx]);
-                    let sortKeyRoot = {Name: JV.PROP_SORT_KEYS, items: [], isParent: true};
-                    let sortKeys = [];
-                    // me.treeObj = $.fn.zTree.init($("#pre_handle_sort_keys_reversed"), preHandleSetting, handles);
+                    me.treeObj = $.fn.zTree.init($("#pre_handle_sort_keys_reversed"), sortingKeysSetting, exposed_properties_arr[idx]);
+                    let nodes = me.treeObj.getNodes();
+                    for (let sortItem of preHandleObj.currentNode[JV.PROP_SORT_KEYS]) {
+                        for (let keyNode of nodes) {
+                            if (sortItem.key === keyNode.Key) {
+                                me.treeObj.checkNode(keyNode, true, false, false);
+                                break;
+                            }
+                        }
+                    }
                     break;
                 case 1 :
                     //tree
@@ -317,11 +356,11 @@ let preHandleSortObj = {
                     sel = $("#select_mapping_data_for_sort_type")[0];
                     idx = pre_handle_data_objects.indexOf(preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY]);
                     sel.selectedIndex = idx;
-                    //parent_sorting_keys
-                    $.fn.zTree.init($("#parent_sorting_keys"), sortingKeysSetting, exposed_properties_arr[idx]);
-                    //child_sorting_keys
+                    me.parentTreeObj = $.fn.zTree.init($("#parent_sorting_keys"), sortingKeysSetting, exposed_properties_arr[idx]);
+                    me.checkupNode(preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS], me.parentTreeObj);
                     idx = pre_handle_data_objects.indexOf(preHandleObj.currentNode[JV.PROP_DATA_KEY]);
-                    $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[idx]);
+                    me.childTreeObj = $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[idx]);
+                    me.checkupNode(preHandleObj.currentNode[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS], me.childTreeObj);
                     break;
                 case 3 :
                     //self define
@@ -331,7 +370,50 @@ let preHandleSortObj = {
             }
         }
     },
+    checkupNode: function(keysArr, treeObj) {
+        let nodes = treeObj.getNodes();
+        for (let key of keysArr) {
+            for (let node of nodes) {
+                if (node.Key === key) {
+                    treeObj.checkNode(node, true, false, false);
+                    break;
+                }
+            }
+        }
+    },
     onCheck: function(event,treeId,treeNode) {
+        let me = preHandleSortObj;
+        if (treeId.indexOf("parent_sorting_keys") >= 0) {
+            //preHandleObj.currentNode
+        } else if (treeId.indexOf("child_sorting_keys") >= 0) {
+            //
+        } else {
+            me.resetNormalSort();
+        }
+    },
+    resetNormalSort: function() {
+        let nodes = me.treeObj.getNodes();
+        let normalSortKeys = [];
+        for (let node of nodes) {
+            if (node.checked) {
+                let keyObj = {key: node.Key, order: node.Order};
+                normalSortKeys.push(keyObj);
+            }
+        }
+        preHandleObj.currentNode[JV.PROP_SORT_KEYS] = normalSortKeys;
+    },
+    addDiyDom: function(treeId,treeNode) {
+        let aObj = $("#" + treeNode.tId + IDMark_A);
+        let editStr = "<select class='selDemo' id='diySelect_" +treeNode.tId+ "'><option value='ascend'>升序 </option><option value='descend'>降序 </option></select>";
+        aObj.after(editStr);
+        let sel = $("#diySelect_" + treeNode.tId);
+        if (sel) {
+            sel.bind("change", function(){
+                treeNode.Order = sel[0].value;
+            });
+        }
+    },
+    extractTabFields: function (handleObj) {
         //
     }
 };
@@ -344,6 +426,9 @@ let preHandleFilterObj = {
         $("#div_filter_type")[0].style.display = "";
         if (preHandleObj.currentNode) {
         }
+    },
+    extractTabFields: function (handleObj) {
+        //
     }
 };
 
@@ -355,6 +440,9 @@ let preHandleSummaryObj = {
         $("#div_summary_type")[0].style.display = "";
         if (preHandleObj.currentNode) {
         }
+    },
+    extractTabFields: function (handleObj) {
+        //
     }
 };
 
@@ -366,6 +454,9 @@ let preHandleAdjustObj = {
         $("#div_adjust_type")[0].style.display = "";
         if (preHandleObj.currentNode) {
         }
+    },
+    extractTabFields: function (handleObj) {
+        //
     }
 };
 
@@ -377,5 +468,8 @@ let preHandleAddDummyObj = {
         $("#div_add_dummy_type")[0].style.display = "";
         if (preHandleObj.currentNode) {
         }
+    },
+    extractTabFields: function (handleObj) {
+        //
     }
 };