Selaa lähdekoodia

pre-handle tuning

TonyKang 7 vuotta sitten
vanhempi
commit
da85035080

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

@@ -403,6 +403,81 @@ let discreteFieldParamSetting = {
     }
 };
 
+let preHandleSetting = {
+    view: {
+        showIcon: true,
+        expandSpeed: "",
+        selectedMulti: false
+    },
+    edit: {
+        enable: true,
+        editNameSelectAll: false,
+        showRemoveBtn: true,
+        showRenameBtn: false,
+        removeTitle: "删除",
+        drag: {
+            isCopy: false,
+            isMove: true
+        }
+    },
+    data: {
+        keep: {
+            parent:true,
+            leaf:true
+        },
+        key: {
+            children: 'items',
+            name: "Name",
+            title: "Title",
+        },
+        simpleData: {
+            enable: true
+        }
+    },
+    callback:{
+        onClick: preHandleObj.onPreHandleClick,
+        beforeRemove: preHandleObj.onBeforeRemove,
+        beforeDrop: preHandleObj.onBeforeDrop
+    }
+};
+
+let preHandleTypeSetting = {
+    view: {
+        showIcon: true,
+        expandSpeed: "",
+        selectedMulti: false
+    },
+    edit: {
+        enable: true,
+        editNameSelectAll: false,
+        showRemoveBtn: false,
+        showRenameBtn: false
+    },
+    check: {
+        enable: true,
+        chkStyle: "radio",
+        radioType: "all"
+    },
+    data: {
+        keep: {
+            parent:true,
+            leaf:true
+        },
+        key: {
+            children: 'items',
+            name: "Name",
+            title: "Title",
+        },
+        simpleData: {
+            enable: true
+        }
+    },
+    callback:{
+        onClick: preHandleObj.onTypeClick,
+        beforeDrag: function() {return false;}
+    }
+};
+
 const engineering = {
     // 建筑工程
     ARCHITECTURE: 1,

+ 1 - 1
web/maintain/report/js/rpt_tpl_data_map.js

@@ -100,7 +100,7 @@ let dataInfoMapTreeOprObj = {
         rst.push(rootFieldNode);
         rst.push(discreteNode);
         me.private_build_content_field_data(rootFieldNode, rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT], JV.PROP_BILL_FIELDS, rptTpl);
-        me.private_build_discrete_data(discreteNode, rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO]);
+        me.private_build_discrete_data(discreteNode, rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], rptTpl);
 
         return rst;
     },

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

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

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

@@ -8,6 +8,7 @@ let rptTplObj = {
         selectableFiledTreeOprObj.iniTree();
         preview_util.drawBorder($("#tplCanvas")[0]);
         calculationTreeOprObj.buildRunType();
+        preHandleObj.buildTypeData();
     }
 }
 

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

@@ -0,0 +1,316 @@
+/**
+ * Created by Tony on 2017/12/26.
+ */
+
+const sort_types = ["normal", "tree", "accord_to_parent", "self_define"];
+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"}
+];
+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: "定额_管理费率", 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"}
+];
+
+let preHandleObj = {
+    treeObj: null,
+    typeTreeObj: null,
+    currentNode: null,
+    iniTree: function(rptTpl) {
+        let me = this;
+        me.buildData(rptTpl);
+    },
+    buildData: function(rptTpl) {
+        let me = this, handles = [];
+        if (rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
+            for (let item of rptTpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
+                let hd = {Name: "预处理环节"};
+                me.private_copy_node(item, hd);
+                me.private_set_title(hd);
+                hd.Operations = []; //考虑到用户可能会换来换去,这样会有冗余的属性出现
+                handles.push(hd);
+            }
+        }
+        me.treeObj = $.fn.zTree.init($("#pre_handle_data_info_reversed"), preHandleSetting, handles);
+    },
+    buildTypeData: function () {
+        let me = this, types = [];
+        types.push({Name: JV.PROP_HANDLE_TYPE_SORT, Title: ""});
+        types.push({Name: JV.PROP_HANDLE_TYPE_FILTER, Title: ""});
+        types.push({Name: JV.PROP_HANDLE_TYPE_SUM, Title: ""});
+        types.push({Name: JV.PROP_HANDLE_TYPE_ADJUST, Title: ""});
+        types.push({Name: JV.PROP_HANDLE_TYPE_ADD_DUMMY, Title: ""});
+        // types.push({Name: "纯手工填写", Title: ""});
+        me.typeTreeObj = $.fn.zTree.init($("#pre_handle_type_reversed"), preHandleTypeSetting, types);
+        me.setDisabledBandSelect(true);
+    },
+    setDisabledBandSelect: function(disabled) {
+        let me = this;
+        if (me.typeTreeObj) {
+            let nodes = me.typeTreeObj.getNodes();
+            for (let node of nodes) {
+                me.typeTreeObj.setChkDisabled(node, disabled, true, true);
+            }
+        }
+    },
+    addNewNode: function() {
+        let me = this, item = {Name: "预处理环节", Title: "", "映射数据对象": "bills", "预处理类型": "排序", "排序方式": "normal", Operations : []};
+        me.private_set_title(item);
+        me.treeObj.addNodes(null, -1, [item], true);
+    },
+    private_copy_node: function(src, dest) {
+        let me = this;
+        dest[JV.PROP_DATA_KEY] = src[JV.PROP_DATA_KEY];
+        dest[JV.PROP_HANDLE_TYPE] = src[JV.PROP_HANDLE_TYPE];
+
+        if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SORT) {
+            preHandleSortObj.copyNode(src, dest);
+        } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_FILTER) {
+            preHandleFilterObj.copyNode(src, dest);
+        } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SUM) {
+            preHandleSummaryObj.copyNode(src, dest);
+        } else if (src[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_ADJUST) {
+            preHandleAdjustObj.copyNode(src, dest);
+        } 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["预处理类型"];
+    },
+    refreshByNode: function(treeNode) {
+        let me = preHandleObj;
+        if (me.typeTreeObj) {
+            let nodes = me.typeTreeObj.getNodes();
+            let typeNode = null;
+            for (let node of nodes) {
+                if (treeNode[JV.PROP_NAME].indexOf(node[JV.PROP_NAME]) > 0) {
+                    me.typeTreeObj.checkNode(node, true, false, false);
+                    typeNode = node;
+                    break;
+                }
+            }
+            let md = $("#select_mapping_data")[0];
+            for (let i = 0; i < md.children.length; i++) {
+                if (treeNode[JV.PROP_DATA_KEY] === md.children[i].value) {
+                    md.selectedIndex = i;
+                    break;
+                }
+            }
+            if (typeNode) {
+                me.private_hide_all();
+                if (typeNode[JV.PROP_NAME] === "排序") {
+                    preHandleSortObj.refresh_node();
+                } else if (typeNode[JV.PROP_NAME] === "过滤") {
+                    preHandleFilterObj.refresh_node();
+                } else if (typeNode[JV.PROP_NAME] === "合计") {
+                    preHandleSummaryObj.refresh_node();
+                } else if (typeNode[JV.PROP_NAME] === "数据调整") {
+                    preHandleAdjustObj.refresh_node();
+                } else if (typeNode[JV.PROP_NAME] === "增加Dummy数据") {
+                    preHandleAddDummyObj.refresh_node();
+                }
+            }
+        }
+    },
+    private_hide_all: function() {
+        $("#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";
+    },
+    onPreHandleClick: function(event,treeId,treeNode) {
+        let me = preHandleObj;
+        me.currentNode = treeNode;
+        me.setDisabledBandSelect(false);
+        me.refreshByNode(treeNode);
+    },
+    onTypeClick: function(event,treeId,treeNode) {
+        //
+    },
+    onChangeDataMappingObj: function(dom) {
+        //
+    },
+    onSortTypeChange: function(dom) {
+        // alert(dom.selectedIndex);
+        // alert(dom[dom.selectedIndex].value);
+    },
+    onBeforeDrop: function(treeId, treeNodes, targetNode, moveType){
+        //
+    },
+    onBeforeRemove: function(treeId, treeNode){
+        let rst = true;
+        if (treeNode.isParent) {
+            rst = false;
+        } else {
+            //
+        }
+        return rst;
+    },
+    extractTabFields: function (rptTpl) {
+        //
+    }
+};
+
+let preHandleSortObj = {
+    copyNode: function (src, dest) {
+        dest[JV.PROP_SORT_TYPE] = src[JV.PROP_SORT_TYPE];
+        switch (sort_types.indexOf(src[JV.PROP_SORT_TYPE])) {
+            case -1:
+                //unknown!
+                break;
+            case 0 :
+                //normal
+                break;
+            case 1 :
+                //tree
+                break;
+            case 2 :
+                //according to parent
+                break;
+            case 3 :
+                //self define
+                break;
+            default:
+                break;
+        }
+    },
+    refresh_node: function () {
+        $("#div_sort_type")[0].style.display = "";
+        if (preHandleObj.currentNode) {
+            let sel = $("#select_sort_types")[0];
+            let sortTypeIdx = sort_types.indexOf(preHandleObj.currentNode[JV.PROP_SORT_TYPE]);
+            sel.selectedIndex = sortTypeIdx;
+            switch (sortTypeIdx) {
+                case -1:
+                    //unknown!
+                    break;
+                case 0 :
+                    //normal
+                    $("#div_sort_type_normal")[0].style.display = "";
+                    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
+                    break;
+                case 2 :
+                    //according to parent
+                    break;
+                case 3 :
+                    //self define
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+};
+
+let preHandleFilterObj = {
+    copyNode: function (src, dest) {
+        //
+    },
+    refresh_node: function () {
+        $("#div_filter_type")[0].style.display = "";
+        if (preHandleObj.currentNode) {
+        }
+    }
+};
+
+let preHandleSummaryObj = {
+    copyNode: function (src, dest) {
+        //
+    },
+    refresh_node: function () {
+        $("#div_summary_type")[0].style.display = "";
+        if (preHandleObj.currentNode) {
+        }
+    }
+};
+
+let preHandleAdjustObj = {
+    copyNode: function (src, dest) {
+        //
+    },
+    refresh_node: function () {
+        $("#div_adjust_type")[0].style.display = "";
+        if (preHandleObj.currentNode) {
+        }
+    }
+};
+
+let preHandleAddDummyObj = {
+    copyNode: function (src, dest) {
+        //
+    },
+    refresh_node: function () {
+        $("#div_add_dummy_type")[0].style.display = "";
+        if (preHandleObj.currentNode) {
+        }
+    }
+};

+ 4 - 0
web/maintain/report/rpt_tpl_detail.html

@@ -14,6 +14,9 @@
                 <a class="nav-link p-1" data-toggle="tab" href="#rpttplfieldlocation" role="tab" onclick="dataInfoMapTreeOprObj.iniDataMap();">指标摆放</a>
             </li>
             <li class="nav-item">
+                <a class="nav-link p-1" data-toggle="tab" href="#rpt_tpl_pre_handle_tab" role="tab">数据预处理</a>
+            </li>
+            <li class="nav-item">
                 <a class="nav-link p-1" data-toggle="tab" href="#rpttplformula" role="tab">计算式</a>
             </li>
         </ul>
@@ -27,6 +30,7 @@
             <!--指标摆放-->
             <%include ./rpt_tpl_detail_field_location.html %>
             <!--报表数据预处理-->
+            <%include ./rpt_tpl_detail_pre_handle.html %>
             <!--计算式-->
             <%include ./rpt_tpl_detail_calculation.html %>
         </div>

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

@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-
-</body>
-</html>

+ 0 - 22
web/maintain/report/rpt_tpl_detail_field_location_selectableFields.html

@@ -1,22 +0,0 @@
-<div class="tab-pane" id="rpttplselectablefields" role="tabpanel">
-    <div class="main-data">
-        <div class="p-3">
-            <div class="row">
-                <div class="form-group col-md-7">
-                    <div class="form-group">
-                        <label>已选映射指标</label>
-                        <div class="ztree-warp">
-                            <ul id="tpl_data_selected_field_map_reversed" class="ztree"></ul>
-                        </div>
-                    </div>
-                </div>
-                <div class="form-group col-md-5">
-                    <div class="ztree-warp">
-                        <label>离散独立指标/参数</label>
-                        <ul id="tpl_discrete_fields_params_reversed" class="ztree"></ul>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>

+ 0 - 35
web/maintain/report/rpt_tpl_detail_field_location_tab.html

@@ -1,35 +0,0 @@
-<div class="tab-pane" id="rpttplfieldlocation" role="tabpanel">
-    <div class="main-data">
-        <div class="p-3">
-            <div class="row">
-                <div class="form-group col-md-8">
-                    <div class="ztree-warp">
-                        <ul id="tpl_data_info_reversed" class="ztree"></ul>
-                    </div>
-                </div>
-                <div class="form-group col-md-4" id="band_tree2_div">
-                    <div class="ztree-warp">
-                        <ul id="band_tree2_reversed" class="ztree"></ul>
-                    </div>
-                </div>
-            </div>
-            <div class="main-data">
-                <div class="main-data-top">
-                    <ul class="nav nav-tabs tools-bar" role="tablist">
-                        <li class="nav-item">
-                            <a class="nav-link p-1 active" data-toggle="tab" href="#rpttplselectablefields" role="tab">可映射指标</a>
-                        </li>
-                        <li class="nav-item">
-                            <a class="nav-link p-1" data-toggle="tab" href="#rpttpllayoutdetail" role="tab">控制明细</a>
-                        </li>
-                    </ul>
-                    <div class="tab-content">
-                        <!--模板信息-->
-                        <%include ./rpt_tpl_detail_field_location_selectableFields.html %>
-                        <!--模板布局-->
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>

+ 41 - 10
web/maintain/report/rpt_tpl_detail_pre_handle.html

@@ -1,10 +1,41 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-
-</body>
-</html>
+<div class="tab-pane" id="rpt_tpl_pre_handle_tab" role="tabpanel">
+    <div class="main-data">
+        <div class="p-3">
+            <div class="tab-bar">
+                <a onclick="preHandleObj.addNewNode()" class="btn btn-secondary btn-sm fa fa-plus-square">预处理环节</a>
+            </div>
+            <div class="form-group row">
+                <div class="form-group col-md-7">
+                    <div class="ztree-warp">
+                        <ul id="pre_handle_data_info_reversed" class="ztree"></ul>
+                    </div>
+                </div>
+                <div class="form-group col-md-5">
+                    <div class="ztree-warp">
+                        <ul id="pre_handle_type_reversed" class="ztree"></ul>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group row">
+                <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>
+                </div>
+            </div>
+            <!--排序处理-->
+            <%include ./rpt_tpl_detail_pre_handle_sort.html %>
+            <!--过滤处理-->
+            <%include ./rpt_tpl_detail_pre_handle_filter.html %>
+            <!--合计处理-->
+            <%include ./rpt_tpl_detail_pre_handle_summary.html %>
+            <!--调整处理-->
+            <%include ./rpt_tpl_detail_pre_handle_adjust.html %>
+            <!--dummy数据处理-->
+            <%include ./rpt_tpl_detail_pre_handle_adddummy.html %>
+        </div>
+    </div>
+</div>

+ 2 - 0
web/maintain/report/rpt_tpl_detail_pre_handle_adddummy.html

@@ -0,0 +1,2 @@
+<div class="form-group row" id="div_add_dummy_type">
+</div>

+ 2 - 0
web/maintain/report/rpt_tpl_detail_pre_handle_adjust.html

@@ -0,0 +1,2 @@
+<div class="form-group row" id="div_adjust_type">
+</div>

+ 2 - 0
web/maintain/report/rpt_tpl_detail_pre_handle_filter.html

@@ -0,0 +1,2 @@
+<div class="form-group row" id="div_filter_type">
+</div>

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

@@ -0,0 +1,18 @@
+<div class="form-group row" id="div_sort_type">
+    <div class="input-group col-5">
+        <div class="input-group-addon">排序类型</div>
+        <select class="form-control input-sm" id="select_sort_types" onchange="preHandleObj.onSortTypeChange(this)">
+            <option value="normal">普通</option>
+            <option value="tree">树结构</option>
+            <option value="accord_to_parent">依据上级</option>
+            <option value="self_define">自定义排序</option>
+        </select>
+    </div>
+</div>
+<div class="form-group row" id="div_sort_type_normal">
+    <div class="form-group col-md-7">
+        <div class="ztree-warp">
+            <ul id="pre_handle_sort_keys_reversed" class="ztree"></ul>
+        </div>
+    </div>
+</div>

+ 2 - 0
web/maintain/report/rpt_tpl_detail_pre_handle_summary.html

@@ -0,0 +1,2 @@
+<div class="form-group row" id="div_summary_type">
+</div>

+ 1 - 0
web/maintain/report/rpt_tpl_main.html

@@ -80,6 +80,7 @@
     <script src="/web/maintain/report/js/rpt_tpl_calculation.js"></script>
     <script src="/web/maintain/report/js/rpt_tpl_helper.js"></script>
     <script src="/web/maintain/report/js/rpt_tpl_data_map.js"></script>
+    <script src="/web/maintain/report/js/rpt_tpl_pre_handle.js"></script>
     <script src="/web/maintain/report/js/cfg_const.js"></script>
     <script src="/web/maintain/report/js/rpt_tpl_preview_util.js"></script>
     <!-- zTree -->