Browse Source

处理报表模板发布

TonyKang 7 years ago
parent
commit
159681cda5

+ 14 - 14
modules/all_models/tpl_tree_node.js

@@ -4,22 +4,22 @@
  */
 import mongoose from "mongoose";
 let Schema = mongoose.Schema;
-let TreeNodeSchema = new Schema({
-    ID:Number,
-    ParentID:Number,
-    NextSiblingID:Number,
-    grpType: Number,  //建筑(const : 1)/公路(const 2)/其他 etc...
-    nodeType: Number, //节点类型:树节点(枝) 或 模板节点(叶)
-    tplType: Number,  //概算、预算、招投标 etc...
-    userId: String,   //用户自定义模板用
-    refId: Number,    //引用报表模板id (引用 collection: rpt_templates)
-    released: Boolean,//是否已发布, refId > -1 时才有意义
-    name: String,
-    isDeleted: Boolean
-});
+// let TreeNodeSchema = new Schema({
+//     ID:Number,
+//     ParentID:Number,
+//     NextSiblingID:Number,
+//     grpType: Number,  //建筑(const : 1)/公路(const 2)/其他 etc...
+//     nodeType: Number, //节点类型:树节点(枝) 或 模板节点(叶)
+//     tplType: Number,  //概算、预算、招投标 etc...
+//     userId: String,   //用户自定义模板用
+//     refId: Number,    //引用报表模板id (引用 collection: rpt_templates)
+//     released: Boolean,//是否已发布, refId > -1 时才有意义
+//     name: String,
+//     isDeleted: Boolean
+// });
 
 let TplNodeSchema = new Schema({
-    nodeType: Number,   //节点类型:树节点(枝) 或 模板节点(叶)
+    nodeType: Number,   //节点类型:树节点(枝) 或 模板节点(叶), 统一结构
     ID: Number,         //template节点ID,只有在nodeType是模板节点有效
     refId: Number,      //引用报表模板id (引用 collection: rpt_templates)
     name: String,       //显示名称

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

@@ -221,6 +221,9 @@ class Rpt_Data_Extractor {
         rptDataObj[JV.DATA_DETAIL_DATA] = [];
         rptDataObj[JV.DATA_MASTER_DATA_EX] = [];
         rptDataObj[JV.DATA_DETAIL_DATA_EX] = [];
+        rptDataObj.DecimalObj = {};
+        rptDataObj.DecimalObj.prjDecimal = $PROJECT.MAIN["myOwnRawDataObj"].decimal; //为函数 P_REF() 准备数据
+        rptDataObj.DecimalObj.unitDecimal = getUnitDecimal($PROJECT.MAIN["myOwnRawDataObj"].billsQuantityDecimal); //为函数 U_REF() 准备数据
         assembleFields(tpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS], rptDataObj[JV.DATA_DISCRETE_DATA], $PROJECT);
         // console.log(JV.DATA_DISCRETE_DATA);
         // console.log(rptDataObj[JV.DATA_DISCRETE_DATA]);
@@ -241,6 +244,20 @@ class Rpt_Data_Extractor {
 
 }
 
+function getUnitDecimal(unitDecimalArr) {
+    let rst = {"default_decimal": 2};
+    if (unitDecimalArr) {
+        for (let item of unitDecimalArr) {
+            if (item.unit === "其他未列单位") {
+                rst["default_decimal"] = item.decimal;
+            } else {
+                rst['unit_decimal_' + item.unit] = item.decimal;
+            }
+        }
+    }
+    return rst;
+}
+
 function getModuleDataByKey(prjData, key) {
     let rst = null;
     for (let item of prjData) {

+ 15 - 4
web/building_saas/report/js/rpt_main.js

@@ -34,10 +34,21 @@ let zTreeOprObj = {
         let me = zTreeOprObj, params = {};
         params.engineerId = projectInfoObj.projectInfo.property.engineering;
         CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
-                zTreeHelper.createTreeDirectly(result, rpt_tpl_setting, "rptTplTree", me);
-                me.refreshNodes();
-            }, null, null
-        );
+            let private_remove_hide_item = function (items) {
+                if (items && items.length > 0) {
+                    for (let i = items.length - 1; i >= 0; i--) {
+                        if (!(items[i].released)) {
+                            items.splice(i, 1);
+                        } else {
+                            private_remove_hide_item(items[i].items);
+                        }
+                    }
+                }
+            }
+            private_remove_hide_item(result);
+            zTreeHelper.createTreeDirectly(result, rpt_tpl_setting, "rptTplTree", me);
+            me.refreshNodes();
+        }, null, null);
     },
     getCustomerCfg: function() {
         let me = zTreeOprObj, params = {};