Browse Source

调整sessionStorage

TonyKang 4 years ago
parent
commit
e72441d68d

+ 7 - 0
modules/pm/controllers/pm_controller.js

@@ -84,6 +84,13 @@ module.exports = {
             callback(req, res, err, message, data);
         });
     },
+    getAllUnitProjects: async function (req, res) {
+        const rootProjectID = JSON.parse(req.body.data).rootProjectID;
+        await ProjectsData.getAllUnitProjects(req.session.sessionUser.id, req.session.sessionCompilation._id, rootProjectID, function (err, message, data) {
+            console.log(err);
+            callback(req, res, err, message, data);
+        });
+    },
     updateProjects: async function (req, res) {
         let data = JSON.parse(req.body.data);
         try {

+ 44 - 0
modules/pm/models/project_model.js

@@ -54,6 +54,50 @@ let optionModel = mongoose.model('options');
 function ProjectsDAO() {
 }
 
+ProjectsDAO.prototype.getAllUnitProjects = async function (userId, compilation, rootPrjID, callback) {
+    //根据root project id获取所有的非删除单位工程
+    try {//
+        let projects = await Projects.find({
+            '$or': [
+                {
+                'userID': userId,
+                'compilation': compilation,
+                'property.rootProjectID': rootPrjID,
+                'deleteInfo': null
+                }, 
+                {
+                    'userID': userId, 
+                    'compilation': compilation, 
+                    'property.rootProjectID': rootPrjID,
+                    'deleteInfo.deleted': {'$in': [null, false]}
+                }
+            ]
+        }, '-_id', {lean: true});
+        let projIDs= [];
+        const allIDs = [];
+        for(let project of projects){
+            allIDs.push(project.ID);
+            if(project.projType === projectType.project){
+                projIDs.push(project.ID);
+            }
+        }
+        // 设置分享信息 
+        const shareMap = await pmFacade.getShareInfoMap(allIDs);
+        projects.forEach(project => {
+            project.shareInfo = shareMap[project.ID] || [];
+        });
+        // 当前费用定额未读的分享的条目数量
+        
+        // 设置汇总字段
+        let summaryInfo = await pmFacade.getSummaryInfo(projIDs);
+        pmFacade.setupSummaryFields(summaryInfo, projects);
+        callback(0, '', projects);
+    }
+    catch (err) {
+        callback(1, 'Error', null);
+    }
+}
+    
 ProjectsDAO.prototype.getUserProjects = async function (userId, compilation, callback) {
     try {//
         let projects = await Projects.find({

+ 1 - 0
modules/pm/routes/pm_route.js

@@ -29,6 +29,7 @@ module.exports = function (app) {
     pmRouter.post('/prepareInitialData', pmController.prepareInitialData);
 
     pmRouter.post('/getProjects', pmController.getProjects);
+    pmRouter.post('/getAllUnitProjects', pmController.getAllUnitProjects);
     pmRouter.post('/getSummaryInfo', pmController.getSummaryInfo);
 
     /*

+ 4 - 2
modules/reports/controllers/rpt_controller.js

@@ -23,6 +23,7 @@ const rpt_svg_util = require("../util/rpt_svg_util");
 const fs = require("fs");
 const strUtil = require("../../../public/stringUtil");
 const rptDataExtractor = require("../util/rpt_construct_data_util");
+
 //统一回调函数
 let callback = function(req, res, err, data){
     if(err){
@@ -261,8 +262,9 @@ async function getAllPagesCommon(user_id, prj_id, prj_ids, rpt_id, pageSize, ori
                     cb('Exception occurs while on going...', null);
                 }
             };
-        if (flag !== undefined && flag !== null && flag.constructSumType === 'constructSum') {
-                //这个直接取本项目的建设项目下所有的单位工程的数据,然后合并
+        if (flag !== undefined && flag !== null && (flag.constructSumType === 'constructSum' || flag.auditType === 'audit_compare')) {
+                //备注:原先这个功能是为了合并建设项目下所有的单位工程的数据,
+                //     现在发现就是通用型,审核对比也可以用这个逻辑把数据合并在一起再处理(审核对比的处理逻辑放在模板计算式里)
                 try {
                     console.log('准备取建设项目下所有单位工程数据:');
                     const _combineData = function(destData, srcData) {

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

@@ -273,6 +273,7 @@ class Rpt_Data_Extractor {
         let tpl = this.rptTpl;
         this.COMMON.initialize(tpl, rawDataObj);
         $PROJECT.COMMON = this.COMMON;
+        // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/temp/建筑Rawdata.js");
         if (rawDataObj.hasOwnProperty(`prj`)) {
             setupMainFunc($PROJECT, `MAIN`, rawDataObj.prj._doc);
             // $PROJECT.MAIN["myOwnRawDataObj"] = rawDataObj.prj._doc;

+ 22 - 0
web/building_saas/pm/js/pm_ajax.js

@@ -23,6 +23,28 @@ var GetAllProjectData = function (callback) {
         }
     });
 }
+// 获取建设项目下全部单位工程数据
+var GetAllUnitProjectData = function (params, callback) {
+    $.ajax({
+        type:"POST",
+        url: '/pm/api/getAllUnitProjects',
+        data: {'data': params},
+        dataType: 'json',
+        cache: false,
+        timeout: 50000,
+        success: function(result){
+            if (result.error === 0) {
+                callback(result.data);
+                //Tree = $.fn.treeTable.init(table, ProjTreeSetting, result.data);
+            } else {
+                alert('error: ' + result.message);
+            }
+        },
+        error: function(jqXHR, textStatus, errorThrown){
+            alert('error ' + textStatus + " " + errorThrown);
+        }
+    });
+}
 // 更新数据到服务器
 var UpdateProjectData = function (updateData, callback, errCB) {
     const tenderCount = updateData.filter(item => item.updateType === 'new' && item.updateData.projType === projectType.tender).length;

+ 0 - 1
web/building_saas/pm/js/pm_newMain.js

@@ -2949,7 +2949,6 @@ function initNodesVisibility(nodes, visible) {
 
 function initProjects(callback, expandCallback) {
     GetAllProjectData(function (datas) {
-        sessionStorage.setItem('projects_tree_data', JSON.stringify(datas)); // 报表用,不要删除
         //设置工程专业
         for (let data of datas) {
             if (data.projType === projectType.tender) {

+ 31 - 38
web/building_saas/report/js/rpt_main.js

@@ -3,6 +3,7 @@
  */
 'use strict'
 
+
 const PRE_PAGE_OFFSET = 150;
 const NEXT_PAGE_OFFSET = 160;
 const FIRST_PAGE_OFFSET = 50;
@@ -28,11 +29,18 @@ let rptTplObj = {
                 JpcJsPDFHelper.initialize('p', 'pt', 'a4');
             }
             //收集本单位工程所属的建设项目下所有单位工程id用
-            me.project_tree = tree_Data_Helper.buildTreeNodeDirectly(JSON.parse(sessionStorage.getItem('projects_tree_data')), false);
-            console.log(me.getAllPrjIds());
-            // projectObj.project.projectInfo.ID
-            // dynamicLoadJs('/lib/jspdf/SmartSimsun-normal.js');
-            // dynamicLoadJs('/lib/jspdf/SmartSimsun-bold.js', me.pdfFontSimsunCallBack);
+            // GetAllProjectData(function (datas) {
+            //     //
+            // }
+            let params = {
+                rootProjectID: projectObj.project.property.rootProjectID,
+                user_id: userID
+            };
+            CommonAjax.post("pm/api/getAllUnitProjects", params, function(result) {
+                // console.log(result);
+                me.project_tree = result;
+                // console.log(me.getAllPrjIds());
+            });
         }
     },
     
@@ -40,32 +48,8 @@ let rptTplObj = {
         let me = this;
         let rst = [];
         if (me.project_tree) {
-            const _chkIfHasCurrentPrjId = function(nodeItem) {
-                let chkRst = (nodeItem.ID === projectObj.project.projectInfo.ID);
-                if (!chkRst && nodeItem.items && nodeItem.items.length > 0) {
-                    for (const subItem of nodeItem.items) {
-                        chkRst = _chkIfHasCurrentPrjId(subItem);
-                        if (chkRst) {
-                            break;
-                        }
-                    }
-                }
-                return chkRst;
-            };
-            const _retrievAllDtlPrjIds = function(parentNode) {
-                if (parentNode.items === null || parentNode.items === undefined || parentNode.items.length === 0) {
-                    rst.push(parentNode.ID);
-                } else {
-                    for (const subNode of parentNode.items) {
-                        _retrievAllDtlPrjIds(subNode);
-                    }
-                }
-            };
-            for (let topNode of me.project_tree) {
-                if (_chkIfHasCurrentPrjId(topNode)) {
-                    _retrievAllDtlPrjIds(topNode);
-                    break;
-                }
+            for (let prj of me.project_tree) {
+                rst.push(prj.ID);
             }
         }
         return rst;
@@ -262,7 +246,7 @@ let zTreeOprObj = {
     onCheck: function(event, treeId, treeNode) {
         zTreeOprObj.countChkedRptTpl();
     },
-    onClick: function(event,treeId,treeNode) {
+    onClick: async function(event,treeId,treeNode) {
         let me = zTreeOprObj;
         if (treeNode.nodeType === TPL_TYPE_TEMPLATE && treeNode.refId > 0) {
             let params = {};
@@ -273,9 +257,18 @@ let zTreeOprObj = {
             params.custCfg = me.reportPageCfg;
             params.flag = null;
             if (treeNode.hasOwnProperty('flags')) {
+                if (treeNode.flags.hasOwnProperty('auditType') && treeNode.flags.auditType === 'audit_compare') {
+                    let pids = await compareObject.getCompareID();
+                    if (pids.length > 0) {
+                        params.prj_ids = pids;
+                    } else {
+                        alert('未设置审核对比项目!');
+                        exit;
+                    }
+                } else {
+                    params.prj_ids = rptTplObj.getAllPrjIds();
+                }
                 params.flag = treeNode.flags;
-                params.prj_ids = rptTplObj.getAllPrjIds();
-                // params.prj_ids = [projectObj.project.projectInfo.ID]; //测试
             }
             me.currentNode = treeNode;
             me.requestReport(params);
@@ -612,10 +605,10 @@ let rptControlObj = {
             me.getPDFEx();
         } else {
             $("#ini_PDF_Btn").trigger("click");
-            dynamicLoadJs('/lib/jspdf/SmartSimsun-normal.js',"normal", me.getPdfFontCallback);
-            dynamicLoadJs('/lib/jspdf/SmartSimsun-bold.js',"bold", me.getPdfFontCallback);
-            // dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal.js', 'normal', me.getPdfFontCallback);
-            // dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-bold.js', 'bold', me.getPdfFontCallback);
+            // dynamicLoadJs('/lib/jspdf/SmartSimsun-normal.js',"normal", me.getPdfFontCallback);
+            // dynamicLoadJs('/lib/jspdf/SmartSimsun-bold.js',"bold", me.getPdfFontCallback);
+            dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal.js', 'normal', me.getPdfFontCallback);
+            dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-bold.js', 'bold', me.getPdfFontCallback);
         }
     },
     getPDFEx: function () {