Browse Source

pre-handle tuning

TonyKang 7 năm trước cách đây
mục cha
commit
93ed10296d

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

@@ -478,6 +478,41 @@ let preHandleTypeSetting = {
     }
 };
 
+let sortingKeysSetting = {
+    view: {
+        showIcon: true,
+        expandSpeed: "",
+        selectedMulti: false
+    },
+    edit: {
+        enable: true,
+        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.onCheck,
+        beforeDrag: function(){return false;}
+    }
+};
+
 const engineering = {
     // 建筑工程
     ARCHITECTURE: 1,

+ 1 - 0
web/maintain/report/js/rpt_tpl_helper.js

@@ -70,6 +70,7 @@ let tplHelper = {
             dataInfoMapTreeOprObj.iniDataMap();
             //5. 数据预处理
             preHandleObj.iniTree(rptTpl);
+            preHandleObj.hide_all_dom();
             //6. 计算式
             calculationTreeOprObj.iniTree(rptTpl);
         }

+ 71 - 6
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -3,6 +3,8 @@
  */
 
 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"},
@@ -47,6 +49,7 @@ const exposed_prj_glj_properties = [
     {Name: "工料机_单位", Title: "", Key: "unit"},
     {Name: "工料机_数量", Title: "", Key: "quantity"}
 ];
+const exposed_properties_arr = [exposed_bills_properties, exposed_ration_properties, exposed_prj_glj_properties];
 
 let preHandleObj = {
     treeObj: null,
@@ -69,6 +72,13 @@ let preHandleObj = {
         }
         me.treeObj = $.fn.zTree.init($("#pre_handle_data_info_reversed"), preHandleSetting, handles);
     },
+    build_handle_data_selection: function() {
+        let sel = $("#select_mapping_data"), sel2 = $("#select_mapping_data_for_sort_type");
+        for (let i = 0; i < pre_handle_data_objects.length; i++) {
+            sel2.append("<option value='" + pre_handle_data_objects[i] + "'>" + pre_handle_data_objects_name[i] + "</option>");
+            sel.append("<option value='" + pre_handle_data_objects[i] + "'>" + pre_handle_data_objects_name[i] + "</option>");
+        }
+    },
     buildTypeData: function () {
         let me = this, types = [];
         types.push({Name: JV.PROP_HANDLE_TYPE_SORT, Title: ""});
@@ -79,6 +89,7 @@ let preHandleObj = {
         // types.push({Name: "纯手工填写", Title: ""});
         me.typeTreeObj = $.fn.zTree.init($("#pre_handle_type_reversed"), preHandleTypeSetting, types);
         me.setDisabledBandSelect(true);
+        me.build_handle_data_selection();
     },
     setDisabledBandSelect: function(disabled) {
         let me = this;
@@ -159,7 +170,8 @@ let preHandleObj = {
                 }
             }
             if (typeNode) {
-                me.private_hide_all();
+                me.hide_all_dom();
+                $("#div_pre_handle_data")[0].style.display = "";
                 if (typeNode[JV.PROP_NAME] === "排序") {
                     preHandleSortObj.refresh_node();
                 } else if (typeNode[JV.PROP_NAME] === "过滤") {
@@ -174,13 +186,16 @@ let preHandleObj = {
             }
         }
     },
-    private_hide_all: function() {
+    hide_all_dom: function() {
+        $("#div_pre_handle_data")[0].style.display = "none";
         $("#div_sort_type")[0].style.display = "none";
         $("#div_sort_type_normal")[0].style.display = "none";
         $("#div_filter_type")[0].style.display = "none";
         $("#div_summary_type")[0].style.display = "none";
         $("#div_adjust_type")[0].style.display = "none";
         $("#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";
     },
     onPreHandleClick: function(event,treeId,treeNode) {
         let me = preHandleObj;
@@ -191,12 +206,21 @@ let preHandleObj = {
     onTypeClick: function(event,treeId,treeNode) {
         //
     },
-    onChangeDataMappingObj: function(dom) {
-        //
+    onChangeDataMappingObj: function(dom, oprType) {
+        if (oprType === "top") {
+            $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+        } else if (oprType === "accord_to_parent") {
+            $.fn.zTree.init($("#parent_sorting_keys"), sortingKeysSetting, exposed_properties_arr[dom.selectedIndex]);
+        }
     },
     onSortTypeChange: function(dom) {
-        // alert(dom.selectedIndex);
-        // alert(dom[dom.selectedIndex].value);
+        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";
+        }
     },
     onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
         //
@@ -230,6 +254,30 @@ let preHandleSortObj = {
                 break;
             case 2 :
                 //according to parent
+                dest[JV.PROP_PARENT_CHILD_SORT_KEY] = {};
+                dest[JV.PROP_OTHER_SUB_SORT] = [];
+                dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY] = src[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_DATA_KEY];
+                dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS] = [];
+                for (let item of src[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS]) {
+                    dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_PARENT_SORT_KEYS].push(item);
+                }
+                dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS] = [];
+                for (let item of src[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS]) {
+                    dest[JV.PROP_PARENT_CHILD_SORT_KEY][JV.PROP_CHILD_SORT_KEYS].push(item);
+                }
+                for (let subSort of src[JV.PROP_OTHER_SUB_SORT]) {
+                    let st = {};
+                    st[JV.PROP_SORT_TYPE] = subSort[JV.PROP_SORT_TYPE];
+                    if (subSort[JV.PROP_SORT_TYPE] === "normal") {
+                        st[JV.PROP_SORT_KEYS] = [];
+                        for (let item of subSort[JV.PROP_SORT_KEYS]) {
+                            let di = {key: item.key, order: item.order};
+                            st[JV.PROP_SORT_KEYS].push(di);
+                        }
+                    } else {
+                        //其他暂时不实现,目前没那么复杂
+                    }
+                }
                 break;
             case 3 :
                 //self define
@@ -242,6 +290,7 @@ let preHandleSortObj = {
         $("#div_sort_type")[0].style.display = "";
         if (preHandleObj.currentNode) {
             let sel = $("#select_sort_types")[0];
+            let idx = -1;
             let sortTypeIdx = sort_types.indexOf(preHandleObj.currentNode[JV.PROP_SORT_TYPE]);
             sel.selectedIndex = sortTypeIdx;
             switch (sortTypeIdx) {
@@ -251,15 +300,28 @@ let preHandleSortObj = {
                 case 0 :
                     //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);
                     break;
                 case 1 :
                     //tree
+                    //tree排序是我们特有的数据结构方式,与数据结构有关,非common用
                     break;
                 case 2 :
                     //according to parent
+                    $("#div_sort_type_according_to_parent")[0].style.display = "";
+                    $("#div_sort_type_parent_data")[0].style.display = "";
+                    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
+                    idx = pre_handle_data_objects.indexOf(preHandleObj.currentNode[JV.PROP_DATA_KEY]);
+                    $.fn.zTree.init($("#child_sorting_keys"), sortingKeysSetting, exposed_properties_arr[idx]);
                     break;
                 case 3 :
                     //self define
@@ -268,6 +330,9 @@ let preHandleSortObj = {
                     break;
             }
         }
+    },
+    onCheck: function(event,treeId,treeNode) {
+        //
     }
 };
 

+ 2 - 5
web/maintain/report/rpt_tpl_detail_pre_handle.html

@@ -16,13 +16,10 @@
                     </div>
                 </div>
             </div>
-            <div class="form-group row">
+            <div class="form-group row" id="div_pre_handle_data">
                 <div class="input-group col-12">
                     <div class="input-group-addon">预处理数据对象</div>
-                    <select class="form-control input-sm" id="select_mapping_data" onchange="preHandleObj.onChangeDataMappingObj(this)">
-                        <option value="bills">清单</option>
-                        <option value="ration">定额</option>
-                        <option value="ration_glj">定额工料机</option>
+                    <select class="form-control input-sm" id="select_mapping_data" onchange="preHandleObj.onChangeDataMappingObj(this, 'top')">
                     </select>
                 </div>
             </div>

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

@@ -8,6 +8,11 @@
             <option value="self_define">自定义排序</option>
         </select>
     </div>
+    <div class="input-group col-md-5" id="div_sort_type_parent_data">
+        <div class="input-group-addon">父数据对象</div>
+        <select class="form-control input-sm" id="select_mapping_data_for_sort_type" onchange="preHandleObj.onChangeDataMappingObj(this, 'accord_to_parent')">
+        </select>
+    </div>
 </div>
 <div class="form-group row" id="div_sort_type_normal">
     <div class="form-group col-md-7">
@@ -16,3 +21,17 @@
         </div>
     </div>
 </div>
+<div class="form-group row" id="div_sort_type_according_to_parent">
+    <div class="form-group col-md-6">
+        <label>父排序键值集</label>
+        <div class="tab-content">
+            <ul id="parent_sorting_keys" class="ztree"></ul>
+        </div>
+    </div>
+    <div class="form-group col-md-6">
+        <label>子排序键值集</label>
+        <div class="tab-content">
+            <ul id="child_sorting_keys" class="ztree"></ul>
+        </div>
+    </div>
+</div>