Quellcode durchsuchen

报表编辑器调整

TonyKang vor 7 Jahren
Ursprung
Commit
12bd0849c3

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

@@ -255,6 +255,7 @@ class Rpt_Data_Extractor {
 
 }
 
+//小数位数依据单位来调整(如吨、公斤的精度要求就不同)
 function getUnitDecimal(unitDecimalArr) {
     let rst = {"default_decimal": 2};
     if (unitDecimalArr) {
@@ -681,7 +682,8 @@ function sortData(sourceData, sortCfg, prjData) {
     }
     switch (sortType) {
         case "tree":
-            rst = treeUtil.buildTreeNodeDirectly(tempRstArr);
+            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) {
                 for (let topItem of rst) {
@@ -772,6 +774,7 @@ function setupFunc(obj, prop, ownRawObj) {
     obj[prop].getPropertyByForeignId = ext_getPropertyByForeignId;
     obj[prop].getArrayItemByKey = ext_getArrayItemByKey;
     obj[prop].getPropertyByFlag = ext_getPropertyByFlag;
+    obj[prop].getBlank = ext_getBlank;
     if (prop === projectConst.CALC_PROGRAM) obj[prop].getCalcProperty = ext_getCalcProperty;
     if (prop === projectConst.FEERATE) obj[prop].getFeeRate = ext_getFeeRate;
 }
@@ -1048,6 +1051,19 @@ function ext_getArrayItemByKey(arrayKey, itemKey, itemKeyValue, itemRstKey){
     }
 }
 
+function ext_getBlank(dftVal) {
+    let rst = [], parentObj = this;
+    let dtObj = parentObj["myOwnRawDataObj"];
+    if (dtObj) {
+        for (let i = 0; i < dtObj.data.length; i++) {
+            if (dftVal !== null && dftVal !== undefined) {
+                rst.push(dftVal)
+            } else rst.push('');
+        }
+    }
+    return rst;
+}
+
 function ext_getPropertyByFlag(flagVal, rstKey, dftValIfEmpty) {
     let rst = [], parentObj = this;
     let dtObj = parentObj["myOwnRawDataObj"];

+ 8 - 7
public/web/treeDataHelper.js

@@ -1,12 +1,12 @@
 /**
  * Created by Tony on 2017/1/23.
  */
-const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID="Previous_ID", CHILDREN_NODE = "items", SUB_ID = "sub_ids", EMPTY_ID_VAL = -1;
+const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID="Previous_ID", CHILDREN_NODE = "items", SUB_ID = "sub_ids", EMPTY_ID_VAL = -1, TREE_LEVEL = 'treeLevel';
 
 let tree_Data_Helper = {
-    buildTreeNodeDirectly: function(data) {
+    buildTreeNodeDirectly: function(data, addLevel) {
         let topArr = [], rst = [], tmpNodes = {}, prefix = "id_";
-        let private_getTopNode = function (idArr) {
+        let private_getStartNode = function (idArr) {
             let tmpNodeRst = null;
             for (let i = 0; i < idArr.length; i++) {
                 if (parseInt(tmpNodes[prefix + idArr[i]][ADHOC_PRE_ID]) === EMPTY_ID_VAL) {
@@ -16,8 +16,8 @@ let tree_Data_Helper = {
             }
             return tmpNodeRst;
         };
-        let private_buildNodeData = function(parentItem, idArr) {
-            let iter = [], nextNode = private_getTopNode(idArr);
+        let private_buildNodeData = function(parentItem, idArr, treeLevel) {
+            let iter = [], nextNode = private_getStartNode(idArr);
             while (nextNode !== null && nextNode !== undefined ) {
                 if (parentItem) {
                     parentItem[CHILDREN_NODE].push(nextNode);
@@ -25,10 +25,11 @@ let tree_Data_Helper = {
                     rst.push(nextNode);
                 }
                 iter.push(nextNode);
+                if (addLevel) nextNode[TREE_LEVEL] = treeLevel;
                 nextNode = tmpNodes[prefix + nextNode[NEXT_ID]];
             }
             for (let i = 0; i < iter.length; i++) {
-                private_buildNodeData(iter[i], iter[i][SUB_ID]);
+                private_buildNodeData(iter[i], iter[i][SUB_ID], (treeLevel + 1));
             }
         };
 
@@ -51,7 +52,7 @@ let tree_Data_Helper = {
                 tmpNodes[prefix + data[i][P_ID]][SUB_ID].push(data[i][NODE_ID]);
             }
         }
-        private_buildNodeData(null, topArr);
+        private_buildNodeData(null, topArr, 0);
         //try to release and return
         tmpNodes = null;
         topArr.length = 0;

+ 14 - 2
web/maintain/report/js/rpt_tpl_helper.js

@@ -79,14 +79,26 @@ let tplHelper = {
     saveRptTpl: function () {
         let me = this, params = null;
         if (me.reCombineRptTpl()) {
+            $("#id_after_saved_lbl")[0].style.color = "yellow";
+            $("#id_after_saved_lbl")[0].innerHTML = "正在保存...";
             let rptTpl = zTreeOprObj.currentNode.rptTpl;
             params = {};
             params.rptTpl = JSON.stringify(rptTpl);
             CommonAjax.postEx("report_tpl_api/updateRptTpl", params, 20000, true, function(result){
                     if (result) {
-                        alert('update succeeded!')
+                        //alert('update succeeded!')
+                        $("#id_after_saved_lbl")[0].style.color = "green";
+                        $("#id_after_saved_lbl")[0].innerHTML = "保存成功!";
+                        setTimeout(function(){
+                            $("#id_after_saved_lbl")[0].innerHTML = "";
+                        }, 1000);
                     } else {
-                        alert('update failed!')
+                        // alert('update failed!');
+                        $("#id_after_saved_lbl")[0].style.color = "red";
+                        $("#id_after_saved_lbl")[0].innerHTML = "保存失败!";
+                        setTimeout(function(){
+                            $("#id_after_saved_lbl")[0].innerHTML = "";
+                        }, 2000);
                     }
                 }, null, null
             );

+ 4 - 5
web/maintain/report/js/rpt_tpl_main.js

@@ -83,14 +83,13 @@ let zTreeOprObj = {
         CommonAjax.postEx("report_tpl_api/updateSubLevelOneNode", params, 5000, isAsync, callback, failCallback, null);
     },
     createIniNode: function() {
-        let rst = {
+        return {
             nodeType: RT.NodeType.TEMPLATE,
             refId: -1,
             name: "",
             ID: -1,
             items: null
         };
-        return rst;
     },
     buildRootNodeDoc: function(topNode, excludeNode) {
         let me = this, rst = null;
@@ -112,7 +111,7 @@ let zTreeOprObj = {
         let me = this, rst = null;
         if (subNode) {
             let isReleased = false;
-            if (subNode.nodeType == RT.NodeType.TEMPLATE) {
+            if (subNode.nodeType === RT.NodeType.TEMPLATE) {
                 isReleased = subNode.checked;
                 // if (subNode.hasOwnProperty("released")) {
                 //     isReleased = subNode.released;
@@ -137,7 +136,7 @@ let zTreeOprObj = {
             for (let item of items) {
                 if (item !== excludeNode) {
                     let isReleased = false;
-                    if (item.nodeType == RT.NodeType.TEMPLATE) {
+                    if (item.nodeType === RT.NodeType.TEMPLATE) {
                         isReleased = item.checked;
                         // if (item.hasOwnProperty("released")) {
                         //     isReleased = item.released;
@@ -159,7 +158,7 @@ let zTreeOprObj = {
 
     addHoverDom: function(treeId, treeNode) {
         let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
-        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType == RT.NodeType.TEMPLATE) return;
+        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);

+ 42 - 31
web/maintain/report/js/rpt_tpl_pre_handle.js

@@ -9,46 +9,47 @@ const pre_handle_data_objects_name = ["清单", "定额", "定额工料机"];
 const exposed_bills_properties = [
     {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"}
+    {Name: "清单_层次", Title: "", Key: "treeLevel", 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", 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: "定额_所属项目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", 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"}
+    {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 fixed_top_bills_nodes = [
@@ -622,7 +623,7 @@ let preHandleFilterObj = {
                         $("#diySelect_" + keyNode.tId)[0].selectedIndex = condition_types.indexOf(filterItem[JV.PROP_FILTER_CONDITION]);
                         //条件值
                         keyNode[JV.PROP_FILTER_COMPARE_VAL] = filterItem[JV.PROP_FILTER_COMPARE_VAL];
-                        $("#diyInput_" + keyNode.tId)[0].selectedIndex = filterItem[JV.PROP_FILTER_COMPARE_VAL];
+                        $("#diyInput_" + keyNode.tId)[0].value = filterItem[JV.PROP_FILTER_COMPARE_VAL];
                         //其他关联业务数据对象
                         if (filterItem[JV.PROP_FILTER_COMPARE_OBJ]) {
                             let cmpObjDom = $("#diyDataSelect_" + keyNode.tId)[0];
@@ -700,6 +701,10 @@ let preHandleFilterObj = {
         if (sel) {
             sel.bind("change", me.filterConditionChange);
         }
+        sel = $("#diyInput_" + treeNode.tId);
+        if (sel) {
+            sel.bind("change", me.filterCompareValChange);
+        }
         sel = $("#diyDataSelect_" + treeNode.tId);
         if (sel) {
             sel.bind("change", me.filterCompareObjChange);
@@ -709,6 +714,12 @@ let preHandleFilterObj = {
             sel.bind("change", me.filterCompareObjKeyChange);
         }
     },
+    filterCompareValChange(event) {
+        let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(9);
+        let node = me.treeObj.getNodeByTId(tId);
+        node[JV.PROP_FILTER_COMPARE_VAL] = sel.value;
+        me.resetFilter();
+    },
     filterConditionChange: function(event) {
         let me = preHandleFilterObj, sel = event.currentTarget, tId = sel.id.slice(10);
         let node = me.treeObj.getNodeByTId(tId);

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

@@ -3,6 +3,7 @@
         <div class="sub-button p-2">
             <button class="btn btn-primary" onclick="tplHelper.saveRptTpl()">保存</button>
             <button class="btn btn-primary" onclick="preview_util.getPreviewPage($('#tplCanvas')[0], zTreeOprObj.getRefTpl()) ">预览</button>
+            <label id="id_after_saved_lbl" style="color:yellowgreen;font-weight:bold">...</label>
         </div>
         <div class="main-data">
             <canvas id="tplCanvas" height="800" width="900"></canvas>