Selaa lähdekoodia

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/YangHuCost

zhangweicheng 6 vuotta sitten
vanhempi
commit
96c729b622
46 muutettua tiedostoa jossa 300 lisäystä ja 187 poistoa
  1. 2 0
      modules/main/models/project.js
  2. 2 1
      modules/main/models/project_consts.js
  3. 35 0
      modules/pm/controllers/pm_controller.js
  4. 8 6
      modules/reports/rpt_component/jpc_cross_tab.js
  5. 23 7
      modules/reports/rpt_component/jpc_ex.js
  6. 21 10
      modules/reports/util/rpt_yanghu_data_util.js
  7. 14 9
      test/unit/reports/test_rpt_test_template.js
  8. 44 2
      test/unit/reports/test_summary_multi_prjs.js
  9. 1 1
      web/building_saas/complementary_ration_lib/js/main.js
  10. 2 2
      web/building_saas/glj/js/project_glj.js
  11. 0 1
      web/building_saas/main/html/main.html
  12. 2 2
      web/building_saas/main/js/controllers/block_controller.js
  13. 0 7
      web/building_saas/main/js/main.js
  14. 2 2
      web/building_saas/main/js/models/calc_program.js
  15. 6 6
      web/building_saas/main/js/models/fee_rate.js
  16. 4 4
      web/building_saas/main/js/models/installation_fee.js
  17. 2 1
      web/building_saas/main/js/models/main_consts.js
  18. 9 7
      web/building_saas/main/js/models/project.js
  19. 11 11
      web/building_saas/main/js/models/project_glj.js
  20. 7 7
      web/building_saas/main/js/models/ration.js
  21. 4 4
      web/building_saas/main/js/models/ration_glj.js
  22. 1 1
      web/building_saas/main/js/models/volume_price.js
  23. 2 2
      web/building_saas/main/js/views/billsElf.js
  24. 1 1
      web/building_saas/main/js/views/block_lib.js
  25. 1 1
      web/building_saas/main/js/views/calc_program_manage.js
  26. 10 10
      web/building_saas/main/js/views/character_content_view.js
  27. 1 1
      web/building_saas/main/js/views/glj_col.js
  28. 3 3
      web/building_saas/main/js/views/glj_view.js
  29. 1 1
      web/building_saas/main/js/views/glj_view_contextMenu.js
  30. 4 4
      web/building_saas/main/js/views/installation_fee_view.js
  31. 2 2
      web/building_saas/main/js/views/main_tree_col.js
  32. 1 1
      web/building_saas/main/js/views/mbzm_view.js
  33. 2 2
      web/building_saas/main/js/views/project_glj_view.js
  34. 20 21
      web/building_saas/main/js/views/project_info.js
  35. 2 2
      web/building_saas/main/js/views/project_property_display_view.js
  36. 1 1
      web/building_saas/main/js/views/project_property_labour_coe_view.js
  37. 13 12
      web/building_saas/main/js/views/project_view.js
  38. 4 2
      web/building_saas/main/js/views/side_tools.js
  39. 2 2
      web/building_saas/main/js/views/std_billsGuidance_lib.js
  40. 2 2
      web/building_saas/main/js/views/std_bills_lib.js
  41. 11 11
      web/building_saas/main/js/views/std_ration_lib.js
  42. 1 1
      web/building_saas/main/js/views/tender_price_view.js
  43. 12 12
      web/building_saas/report/js/rpt_main.js
  44. 1 1
      web/building_saas/report/js/rpt_print.js
  45. 2 1
      web/users/html/login.html
  46. 1 0
      web/users/js/login.js

+ 2 - 0
modules/main/models/project.js

@@ -17,6 +17,7 @@ var labour_coe_facade = require('../facade/labour_coe_facade');
 var calc_program_facade = require('../facade/calc_program_facade');
 import GLJController from "../../glj/controllers/glj_controller";
 let installation_facade = require('../facade/installation_facade');
+let pmController = require('../../pm/controllers/pm_controller');
 
 
 const ProjectModel = require('../../pm/models/project_model').project;
@@ -43,6 +44,7 @@ moduleMap[projectConsts.CALC_PROGRAM] = calc_program_facade;
 moduleMap[projectConsts.PROJECTGLJ] = new GLJController();
 moduleMap[projectConsts.INSTALLATION_FEE] = installation_facade;
 moduleMap[projectConsts.RATION_TEMPLATE] = ration_template;
+moduleMap[projectConsts.PROJECT_INFO] = pmController;
 
 var Project = function (){};
 

+ 2 - 1
modules/main/models/project_consts.js

@@ -20,7 +20,8 @@ let projectConst = {
     FEERATE:'feeRate',
     LABOUR_COE:'labour_coe',
     CALC_PROGRAM:'calc_program',
-    INSTALLATION_FEE:'installation_fee'
+    INSTALLATION_FEE:'installation_fee',
+    PROJECT_INFO: 'project_info'
 };
 
 let projectConstList = [

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

@@ -27,6 +27,7 @@ const fs = require('fs');
 const _ = require('lodash');
 import SectionTreeDao from '../../complementary_ration_lib/models/sectionTreeModel';
 let sectionTreeDao = new SectionTreeDao();
+let consts = require('../../main/models/project_consts');
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -188,6 +189,40 @@ module.exports = {
             callback(req, res, err, message, null);
         });
     },
+    //project getData接口
+    getData: function(projectID, callback) {
+        projectModel.findOne({$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], ID: projectID}, '-_id').then(async function (project) {
+            if (!project) {
+                callback('', consts.projectConst.PROJECT_INFO, {});
+            }
+            let engineeringLibModel = new EngineeringLibModel();
+            let engineeringInfo = project !== null && project.property.engineering_id !== undefined ?
+                await engineeringLibModel.getEngineering(project.property.engineering_id) : null;
+            let projInfo = project._doc;
+            if (engineeringInfo !== null) {
+                if(engineeringInfo.billsGuidance_lib){
+                    for(let billsGuidanceLib of engineeringInfo.billsGuidance_lib){
+                        let stdBillsGuidanceLib = await stdBillsGuidanceLibModel.findOne({ID: billsGuidanceLib.id});
+                        if(stdBillsGuidanceLib){
+                            billsGuidanceLib.type = stdBillsGuidanceLib.type ? stdBillsGuidanceLib.type : 1;
+                        }
+                    }
+                }
+                projInfo.engineeringInfo = engineeringInfo;
+            }
+            //读取建设项目的基本信息
+            let basicInfo = await ProjectsData.getBasicInfo(projectID);
+            if(basicInfo !== null){
+                projInfo.property.basicInformation = basicInfo;
+            }
+            //获取单位工程完整目录结构
+            let fullPath = await pm_facade.getFullPath(projectID);
+            projInfo.fullPath = fullPath;
+            callback('', consts.projectConst.PROJECT_INFO, project);
+        }, function (err) {
+            callback(err, consts.projectConst.PROJECT_INFO, {});
+        });
+    },
     getProject: function(req, res){
         let data = JSON.parse(req.body.data);
         let projectID = data.proj_id;

+ 8 - 6
modules/reports/rpt_component/jpc_cross_tab.js

@@ -195,6 +195,7 @@ JpcCrossTabSrv.prototype.createNew = function(){
         me.dispSumValueLst_Col = [];
         me.page_seg_map = [];
         me.row_fields_idx = [];
+        me.row_fields_adhoc_idx = [];
         me.col_fields_idx = [];
         me.content_fields_idx = [];
         me.row_extension_fields_idx = [];
@@ -207,6 +208,7 @@ JpcCrossTabSrv.prototype.createNew = function(){
         let me = this;
         //IMPORTANT: the data should be sorted in SQL/NoSQL level!
         me.sortedRowSequence = private_SortAndOptimize(rptTpl, dataObj, dataSeq, JV.NODE_CROSS_ROW, me.row_fields_idx, $CURRENT_RPT);
+        private_SortAndOptimize(rptTpl, dataObj, dataSeq, JV.NODE_CROSS_ROW_AD_HOC, me.row_fields_adhoc_idx, $CURRENT_RPT);
         me.sortedColSequence = private_SortAndOptimize(rptTpl, dataObj, dataSeq, JV.NODE_CROSS_COL, me.col_fields_idx, $CURRENT_RPT);
         me.sortedContentSequence = private_SortForDisplayContent(rptTpl, me.sortedRowSequence, me.sortedColSequence, me.content_fields_idx);
         JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL_SUM][JV.PROP_CROSS_FIELDS], null, me.col_sum_fields_idx);
@@ -452,8 +454,8 @@ JpcCrossTabSrv.prototype.createNew = function(){
             //2. start to output detail-part
             //2.1 Row-Tab
             //tabRstLst.push(me.outputRowTab(rptTpl, dataObj, page, bands, unitFactor, controls, $CURRENT_RPT, customizeCfg));
-            tabRstLst.push(me.outputRowTabCommon(rptTpl, dataObj, page, bands, JV.NODE_CROSS_ROW, unitFactor, controls, $CURRENT_RPT, customizeCfg));
-            tabRstLst.push(me.outputRowTabCommon(rptTpl, dataObj, page, bands, JV.NODE_CROSS_ROW_AD_HOC, unitFactor, controls, $CURRENT_RPT, customizeCfg));
+            tabRstLst.push(me.outputRowTabCommon(rptTpl, dataObj, page, bands, JV.NODE_CROSS_ROW, me.row_fields_idx, unitFactor, controls, $CURRENT_RPT, customizeCfg));
+            tabRstLst.push(me.outputRowTabCommon(rptTpl, dataObj, page, bands, JV.NODE_CROSS_ROW_AD_HOC, me.row_fields_adhoc_idx, unitFactor, controls, $CURRENT_RPT, customizeCfg));
             //2.2 Col-Tab
             tabRstLst.push(me.outputColTab(rptTpl, dataObj, page, bands, unitFactor, controls, $CURRENT_RPT, customizeCfg));
             //2.3 Content-Tab
@@ -473,7 +475,7 @@ JpcCrossTabSrv.prototype.createNew = function(){
         }
         return rst;
     };
-    JpcCrossTabResult.outputRowTabCommon = function(rptTpl, dataObj, page, bands, tabStr, unitFactor, controls, $CURRENT_RPT, customizeCfg) {
+    JpcCrossTabResult.outputRowTabCommon = function(rptTpl, dataObj, page, bands, tabStr, rowFieldsIdxArr, unitFactor, controls, $CURRENT_RPT, customizeCfg) {
         let me = this, rst = [];
         let tab = rptTpl[JV.NODE_CROSS_INFO][tabStr];
         let band = (tab)?bands[tab[JV.PROP_BAND_NAME]]:null;
@@ -485,13 +487,13 @@ JpcCrossTabSrv.prototype.createNew = function(){
                 let valuesIdx = me.dispValueIdxLst_Row[page - 1];
                 let serialsIdx = me.dispSerialIdxLst_Row[page - 1];
                 let flexiblePrecisionRefObj = null, flexibleRefField = null, precision_ref_data = null;
-                for (let i = 0; i < me.row_fields_idx.length; i++) {
+                for (let i = 0; i < rowFieldsIdxArr.length; i++) {
                     let tab_field = tab_fields[i];
                     if (!(tab_field[JV.PROP_HIDDEN])) {
                         let data_field = null;
                         let map_data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT);
-                        if (typeof me.row_fields_idx[i] !== 'object') {
-                            data_field = data_details[me.row_fields_idx[i]];
+                        if (typeof rowFieldsIdxArr[i] !== 'object') {
+                            data_field = data_details[rowFieldsIdxArr[i]];
                         } else {
                             if (map_data_field) {
                                 data_field = map_data_field[JV.PROP_AD_HOC_DATA];

+ 23 - 7
modules/reports/rpt_component/jpc_ex.js

@@ -249,6 +249,18 @@ JpcExSrv.prototype.createNew = function(){
         rst.items = [];
         let bands = JpcBand.createNew(rptTpl, defProperties);
         try {
+            function getPageMergeBorder() {
+                let mergeRst = null;
+                if (bands[JV.BAND_PROP_MERGE_BAND]) {
+                    let mergedBand = bands[JV.BAND_PROP_MERGE_BAND];
+                    mergeRst = {};
+                    mergeRst[JV.PROP_LEFT] = parseInt(mergedBand[JV.PROP_LEFT].toFixed(0));
+                    mergeRst[JV.PROP_RIGHT] = parseInt(mergedBand[JV.PROP_RIGHT].toFixed(0));
+                    mergeRst[JV.PROP_TOP] = parseInt(mergedBand[JV.PROP_TOP].toFixed(0));
+                    mergeRst[JV.PROP_BOTTOM] = parseInt(mergedBand[JV.PROP_BOTTOM].toFixed(0));
+                }
+                return mergeRst;
+            }
             //1.
             let rstPage = {};
             rstPage[JV.PROP_PAGE_SEQ] = 1;
@@ -259,6 +271,10 @@ JpcExSrv.prototype.createNew = function(){
             } else if (me.billTab) {
                 rstPage[JV.PROP_CELLS] = me.billTab.outputAsPreviewPage(rptTpl, bands, rst[JV.NODE_CONTROL_COLLECTION], me);
             }
+            let pageMergeBorder = getPageMergeBorder();
+            if (pageMergeBorder) {
+                rstPage[JV.PROP_PAGE_MERGE_BORDER] = pageMergeBorder;
+            }
             rst.items.push(rstPage);
             //2.
             if (bands[JV.BAND_PROP_MERGE_BAND]) {
@@ -315,16 +331,16 @@ JpcExSrv.prototype.createNew = function(){
     JpcResult.outputAsSimpleJSONPage = function(rptTpl, dataObj, bands, page, controls, customizeCfg) {
         let me = this, rst = null;
         function getPageMergeBorder() {
-            let rst = null;
+            let mergeRst = null;
             if (bands[JV.BAND_PROP_MERGE_BAND]) {
                 let mergedBand = bands[JV.BAND_PROP_MERGE_BAND];
-                rst = {};
-                rst[JV.PROP_LEFT] = parseInt(mergedBand[JV.PROP_LEFT].toFixed(0));
-                rst[JV.PROP_RIGHT] = parseInt(mergedBand[JV.PROP_RIGHT].toFixed(0));
-                rst[JV.PROP_TOP] = parseInt(mergedBand[JV.PROP_TOP].toFixed(0));
-                rst[JV.PROP_BOTTOM] = parseInt(mergedBand[JV.PROP_BOTTOM].toFixed(0));
+                mergeRst = {};
+                mergeRst[JV.PROP_LEFT] = parseInt(mergedBand[JV.PROP_LEFT].toFixed(0));
+                mergeRst[JV.PROP_RIGHT] = parseInt(mergedBand[JV.PROP_RIGHT].toFixed(0));
+                mergeRst[JV.PROP_TOP] = parseInt(mergedBand[JV.PROP_TOP].toFixed(0));
+                mergeRst[JV.PROP_BOTTOM] = parseInt(mergedBand[JV.PROP_BOTTOM].toFixed(0));
             }
-            return rst;
+            return mergeRst;
         }
         if (me.totalPages >= page) {
             rst = {};

+ 21 - 10
modules/reports/util/rpt_yanghu_data_util.js

@@ -240,7 +240,7 @@ class Rpt_Data_Extractor {
         let tpl = this.rptTpl;
         this.COMMON.initialize(tpl, rawDataObj);
         $PROJECT.COMMON = this.COMMON;
-        if (rawDataObj.hasOwnProperty(`prj`)) {
+        if (rawDataObj.hasOwnProperty(`prj`) && rawDataObj.hasOwnProperty(`prjData`)) {
             setupMainFunc($PROJECT, `MAIN`, rawDataObj.prj._doc);
             // $PROJECT.MAIN["myOwnRawDataObj"] = rawDataObj.prj._doc;
             // $PROJECT.MAIN.getProperty = ext_mainGetPropety;
@@ -270,7 +270,8 @@ class Rpt_Data_Extractor {
             }
         }
         //还有汇总的...
-        if (rawDataObj.hasOwnProperty(`Construct`) || rawDataObj.hasOwnProperty(`ConstructDetail`) || rawDataObj.hasOwnProperty(`Segment`) || rawDataObj.hasOwnProperty(`SegmentDetail`)) {
+        if (rawDataObj.hasOwnProperty(`Construct`) || rawDataObj.hasOwnProperty(`ConstructDetail`) || rawDataObj.hasOwnProperty(`Segment`) || rawDataObj.hasOwnProperty(`SegmentDetail`)
+            || rawDataObj.hasOwnProperty(`SummaryAudit`) || rawDataObj.hasOwnProperty(`SummaryAuditDetail`)) {
             $PROJECT.SUMMARY = {};
             if (rawDataObj.Construct) {
                 setupMainFunc($PROJECT.SUMMARY, `Construct`, rawDataObj.Construct);
@@ -284,6 +285,12 @@ class Rpt_Data_Extractor {
             if (rawDataObj.SegmentDetail) {
                 setupFunc($PROJECT.SUMMARY, `SegmentDetail`, {"data": rawDataObj.SegmentDetail});
             }
+            if (rawDataObj.SummaryAudit) {
+                setupMainFunc($PROJECT.SUMMARY, `SummaryAudit`, rawDataObj.SummaryAudit);
+            }
+            if (rawDataObj.SummaryAuditDetail) {
+                setupFunc($PROJECT.SUMMARY, `SummaryAuditDetail`, {"data": rawDataObj.SummaryAuditDetail});
+            }
         }
         //综合费率
         let feeRate = getModuleDataByKey(rawDataObj.prjData, "feeRate");
@@ -330,7 +337,7 @@ class Rpt_Data_Extractor {
             }
         }
         //一些计算(不保存数据,需要动态计算的)
-        if (rawDataObj.hasOwnProperty(`prj`)) {
+        if (rawDataObj.hasOwnProperty(`prj`) && rawDataObj.hasOwnProperty(`prjData`)) {
             let calcOptions = rawDataObj.prj._doc.property.calcOptions;
             let decimalObj = rawDataObj.prj._doc.property.decimal;
             let labourCoeDatas =  getModuleDataByKey(rawDataObj.prjData, "labour_coe");
@@ -357,9 +364,11 @@ 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() 准备数据
+        if (rawDataObj.hasOwnProperty(`prj`) && rawDataObj.hasOwnProperty(`prjData`)) {
+            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]);
@@ -402,10 +411,12 @@ function getUnitDecimal(unitDecimalArr) {
 
 function getModuleDataByKey(prjData, key) {
     let rst = null;
-    for (let item of prjData) {
-        if (item.moduleName === key) {
-            rst = item;
-            break;
+    if (prjData) {
+        for (let item of prjData) {
+            if (item.moduleName === key) {
+                rst = item;
+                break;
+            }
         }
     }
     return rst;

+ 14 - 9
test/unit/reports/test_rpt_test_template.js

@@ -36,12 +36,12 @@ let demoPrjId = - 1;
 // let demoRptId = 20; //01
 // let demoRptId = 23; //04 综合费率表
 
-// let demoRptId = 56; //24
+let demoRptId = 56; //24
 // let demoRptId = 36; //5.1
 // let demoRptId = 49; //5.5
 // let demoRptId = 66; //5.4
 // let demoRptId = 67; //21-2
-let demoRptId = 31; //21-1
+// let demoRptId = 31; //21-1
 // let demoRptId = 37; //5.2.1 计日工劳务
 // let demoRptId = 68; //01-2
 
@@ -60,8 +60,8 @@ let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 // demoPrjId = 455; //PROD:
 // demoPrjId = 776; //PROD:
 // demoPrjId = 671; //PROD:
-demoPrjId = 473; //UAT
-// demoPrjId = 653; //PROD:
+// demoPrjId = 473; //UAT
+demoPrjId = 1424; //PROD:
 // demoPrjId = 756; //PROD:
 // demoPrjId = 815; //PROD:
 // demoPrjId = 4107; //UAT:
@@ -100,7 +100,7 @@ test('测试 - 测试模板啦: ', function (t) {
             if (!err) {
                 try {
                     let dt = new Date();
-                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
+                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
                     // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/YangHuCost/tmp/rptTplAssembledData_测试模板.jsp");
@@ -113,12 +113,17 @@ test('测试 - 测试模板啦: ', function (t) {
                     printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, JV.OUTPUT_TYPE_EXCEL);
                     let maxPages = printCom.totalPages;
                     let customizeCfg = {"fillZero": true};
-                    let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
+                    let pageRst = null;
+                    if (maxPages > 0) {
+                        pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
+                    } else {
+                        pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
+                    }
                     if (pageRst) {
                         // fsUtil.writeObjToFile(pageRst, "D:/GitHome/YangHuCost/tmp/testBuiltPageResult_测试模板" + dt.getTime() + ".jsp");
-                        // rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
-                        //     console.log("excel uuid: " + uuidName);
-                        // });
+                        rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
+                            console.log("excel uuid: " + uuidName);
+                        });
                         // rpt_pdf_util.export_pdf_file(pageRst, pagesize, 'local_test_rpt_pdf', function(uuidName){
                         //     console.log("pdf uuid: " + uuidName);
                         // });

+ 44 - 2
test/unit/reports/test_summary_multi_prjs.js

@@ -14,7 +14,9 @@ let dbm = require("../../../config/db/db_manager");
 let rpt_cfg = require('./rpt_cfg');
 dbm.connect(process.env.NODE_ENV);
 
-let demoPrjs = [662, 664];
+let demoPrjs = [442, 472]; //UAT
+let demoRptId = 68; //01-2
+let pagesize = "A4";
 let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 // let userId_me = "5b6a60b1c4ba33000dd417c0"; //我的
 let userId_Dft = userId_Leng;
@@ -42,8 +44,48 @@ fs.readFile(__dirname.slice(0, __dirname.length - 18) + '/public/web/date_util.j
 });
 
 test('测试 - 测试模板啦: ', function (t) {
-    //project_facade.getBudgetSummayDatas([517,521]);
+    rptTplDataFacade.getBudgetSummayDatas(demoPrjs).then(function(summaryRst) {
+        //console.log(summaryRst);
+        rptTplFacade.getRptTemplate(demoRptId).then(function(rptTpl) {
+            try {
+                let dt = new Date();
+                // fsUtil.writeObjToFile(summaryRst, "D:/GitHome/YangHuCost/tmp/多清单汇总表(01_2)原始数据.jsp");
+                let rptDataUtil = new rptDataExtractor();
+                rptDataUtil.initialize(rptTpl._doc);
+                let tplData = rptDataUtil.assembleData(summaryRst);
+                // fsUtil.writeObjToFile(summaryRst, "D:/GitHome/YangHuCost/tmp/多清单汇总表(01_2)整理后数据.jsp");
+                // fsUtil.writeObjToFile(tplData, "D:/GitHome/YangHuCost/tmp/rptTplAssembledData_测试模板.jsp");
+                //it's time to build the report!!!
+                let printCom = JpcEx.createNew();
+                rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pagesize;
+                let defProperties = rpt_cfg;
+                let dftOption = JV.PAGING_OPTION_NORMAL;
+                printCom.initialize(rptTpl);
+                printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, JV.OUTPUT_TYPE_EXCEL);
+                let maxPages = printCom.totalPages;
+                let customizeCfg = {"fillZero": true};
+                let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
+                if (pageRst) {
+                    // fsUtil.writeObjToFile(pageRst, "D:/GitHome/YangHuCost/tmp/多清单汇总表(01_2)page数据" + dt.getTime() + ".jsp");
+                    // rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
+                    //     console.log("excel uuid: " + uuidName);
+                    // });
+                    // rpt_pdf_util.export_pdf_file(pageRst, pagesize, 'local_test_rpt_pdf', function(uuidName){
+                    //     console.log("pdf uuid: " + uuidName);
+                    // });
+                } else {
+                    console.log("oh! no pages were created!");
+                }
+            } catch (ex) {
+                console.log(ex);
+                t.pass('pass with exception!');
+                t.end();
+            }
 
+            t.pass('pass succeeded!');
+            t.end();
+        });
+    });
 });
 
 test('close the connection', function (t) {

+ 1 - 1
web/building_saas/complementary_ration_lib/js/main.js

@@ -28,7 +28,7 @@ let compleRationMain = {
                 }
             }
         };
-        let ration_lib = projectInfoObj.projectInfo.engineeringInfo.ration_lib;
+        let ration_lib = projectObj.project.projectInfo.engineeringInfo.ration_lib;
         let ids = [];
         for(lib of ration_lib){
             ids.push(parseInt(lib.id));

+ 2 - 2
web/building_saas/glj/js/project_glj.js

@@ -42,8 +42,8 @@ $(document).ready(function () {
     // 单价文件切换弹框
     $('#change-dj').on('shown.bs.modal', function () {
         // 获取当前建设项数据
-        let projectName = projectInfoObj.projectInfo.fullFolder !== undefined &&
-        projectInfoObj.projectInfo.fullFolder.length > 0 ? projectInfoObj.projectInfo.fullFolder[0] : '';
+        let projectName = projectObj.project.projectInfo.fullFolder !== undefined &&
+        projectObj.project.projectInfo.fullFolder.length > 0 ? projectObj.project.projectInfo.fullFolder[0] : '';
         $("#current-project-name").text(projectName);
 
         // 获取切换单价文件相关数据

+ 0 - 1
web/building_saas/main/html/main.html

@@ -1990,7 +1990,6 @@
         <script type="text/javascript">
             projectGljObject.initFilterTypeList();
             optionsOprObj.getOptions();
-            projectInfoObj.showProjectInfo();
             projectObj.checkMainSpread();
             projectObj.loadProjectData();
            // autoFlashHeight();

+ 2 - 2
web/building_saas/main/js/controllers/block_controller.js

@@ -81,7 +81,7 @@ let BlockController = {
     copyBlock:function (selection) {
         let startTime = +new Date();
         let blockOjb = {
-            compilationID:projectInfoObj.projectInfo.compilation,
+            compilationID:projectObj.project.projectInfo.compilation,
             datas:[]
         };
         let firstNode = projectObj.project.mainTree.items[selection.row];
@@ -219,7 +219,7 @@ let BlockController = {
         let firstParentID = null, lastNextID = null;
         let updateData = [],billUpdate = null;
         let billsIDMap = {};//用来做新旧ID映射
-        if(blockData.compilationID != projectInfoObj.projectInfo.compilation){//如果编办不一样,不能复制
+        if(blockData.compilationID != projectObj.project.projectInfo.compilation){//如果编办不一样,不能复制
             alert("编办不一致,不能粘贴!");
             return;
         }

+ 0 - 7
web/building_saas/main/js/main.js

@@ -6,13 +6,6 @@ $(function () {
 
     $("#header-menu").removeAttr('style');
 
-    if (projectInfoObj.projectInfo.property.valuationType == 'bill'){
-        $("#tab_tender_price").css('display', 'none');
-    }
-    else{
-        $("#about-calc").css('display', 'none');
-    };
-
     $('#tab_baobiao').on('shown.bs.tab', function (e) {
         $(e.relatedTarget.hash).removeClass('active');
         // do something

+ 2 - 2
web/building_saas/main/js/models/calc_program.js

@@ -1454,7 +1454,7 @@ class CalcProgram {
         // 存储费率临时数据,报表用。
         if (me.saveForReports.length > 0){
             let saveDatas = {};
-            saveDatas.projectID = projectInfoObj.projectInfo.ID;
+            saveDatas.projectID = projectObj.project.projectInfo.ID;
             saveDatas.calcItems = me.saveForReports;
             CommonAjax.post('/calcProgram/saveCalcItems', saveDatas, function (result) {
                 if (result){
@@ -1791,7 +1791,7 @@ class CalcProgram {
                 };
             };
             // 2018-08-27   zhang  插入空定额的时候,取费专业也为空
-           // if (treeNode.data.programID == undefined) treeNode.data.programID = projectInfoObj.projectInfo.property.engineering;
+           // if (treeNode.data.programID == undefined) treeNode.data.programID = projectObj.project.projectInfo.property.engineering;
             let template = me.compiledTemplates[treeNode.data.programID];
             treeNode.data.calcTemplate = template;
 

+ 6 - 6
web/building_saas/main/js/models/fee_rate.js

@@ -379,9 +379,9 @@ var FeeRate = {
             this.datas.ID = uuid.v1();
             this.datas.feeRateID=uuid.v1();
             this.datas.usageProjects=[];
-            this.datas.usageProjects.push({name:projectInfoObj.projectInfo.name,ID:projectInfoObj.projectInfo.ID});
+            this.datas.usageProjects.push({name:projectObj.project.projectInfo.name,ID:projectObj.project.projectInfo.ID});
             var data={
-                query:{projectID:projectInfoObj.projectInfo.ID},
+                query:{projectID:projectObj.project.projectInfo.ID},
                 doc:this.datas,
                 user_id:userID
             }
@@ -393,11 +393,11 @@ var FeeRate = {
             });
         };
         FeeRate.prototype.getChangeInfo = function (callback) {
-           // var projectID = projectInfoObj.projectInfo.ID;
+           // var projectID = projectObj.project.projectInfo.ID;
             var feeRate = this.getActivateFeeRate();
             var  rootProjectID= feeRate.rootProjectID;
             if(!rootProjectID){
-                rootProjectID=projectInfoObj.projectInfo.property.rootProjectID;
+                rootProjectID=projectObj.project.projectInfo.property.rootProjectID;
             }
             var data={
                 "user_id":userID,
@@ -634,7 +634,7 @@ var FeeRate = {
         };
         FeeRate.prototype.changeFeeRateFileFromCurrent = function (newFeeRateFile,callback){
             let me=this;
-            let projectID = projectInfoObj.projectInfo.ID;
+            let projectID = projectObj.project.projectInfo.ID;
             let data={
                 "projectID": projectID,
                 "newFeeRateFile":newFeeRateFile
@@ -651,7 +651,7 @@ var FeeRate = {
 
         FeeRate.prototype.changeFeeRateFileFromOthers=function (feeRateFileID,name,callback) {
             let me = this;
-            let projectID = projectInfoObj.projectInfo.ID;
+            let projectID = projectObj.project.projectInfo.ID;
             let data={
                 "projectID": projectID,
                 "feeRateFileID":feeRateFileID,

+ 4 - 4
web/building_saas/main/js/models/installation_fee.js

@@ -202,7 +202,7 @@ var installation_fee = {
         };
        installation_fee.prototype.submitInstallationUpdate = function (updateData,rationInstallations,callback) {
             if(updateData){
-                let data = {'projectID':projectInfoObj.projectInfo.ID,'updateData':updateData};
+                let data = {'projectID':projectObj.project.projectInfo.ID,'updateData':updateData};
                 if(rationInstallations){//是否附带更新定额安装费
                     data['rationInstallations'] = rationInstallations;
                 }
@@ -224,8 +224,8 @@ var installation_fee = {
         };
        installation_fee.prototype.calcInstallationFee=function(callback){
             let project = projectObj.project,me = this;
-            let engineering = projectInfoObj.projectInfo.property.engineering;
-            let installSetting = projectInfoObj.projectInfo.property.installSetting;
+            let engineering = projectObj.project.projectInfo.property.engineering;
+            let installSetting = projectObj.project.projectInfo.property.installSetting;
             let rationInstallation  = project.ration_installation;
             let BXs =  project.Bills.getAllBXs();//取所有补项
             let allBillsDatas = _.sortBy(_.cloneDeep(project.Bills.datas),'code');//取所有清单信息,用来查找清单信息和存放中间过程产生的清单
@@ -733,7 +733,7 @@ var installation_fee = {
                 bills: []
             };
             CommonAjax.post('/pm/api/updateMixDatas', {user_id: userID, mixDataArr: mixDatas}, function (rstData) {
-                projectInfoObj.projectInfo.property.installSetting = newValue;
+                projectObj.project.projectInfo.property.installSetting = newValue;
                 if(callback){
                     callback();
                 }

+ 2 - 1
web/building_saas/main/js/models/main_consts.js

@@ -16,7 +16,8 @@ const ModuleNames = {
     quantity_detail:'quantity_detail',
     labour_coe: 'labour_coe',
     calc_program: 'calc_program',
-    installation_fee:'installation_fee'
+    installation_fee:'installation_fee',
+    projectInfo: 'project_info'
 };
 
 let gljType = gljUtil.gljType;

+ 9 - 7
web/building_saas/main/js/models/project.js

@@ -42,6 +42,8 @@ var PROJECT = {
                     me._project.projSetting.moduleName = me.projSetting;
                 }else if(item.moduleName === ModuleNames.projectGLJ){
                     me._project.projectGLJ.loadToCache(item.data);
+                } else if (item.moduleName === ModuleNames.projectInfo) {
+                    me._project.projectInfo = item.data;
                 }
             });
             for (module in counter) {
@@ -149,8 +151,8 @@ var PROJECT = {
                     newNode.source = br[i];
                     newNode.sourceType = that.Ration.getSourceType();
                     newNode.data = br[i];
-                    if(projectInfoObj.projectInfo.property.displaySetting !== undefined &&
-                        projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial==true){
+                    if(projectObj.project.projectInfo.property.displaySetting !== undefined &&
+                        projectObj.project.projectInfo.property.displaySetting.disPlayMainMaterial==true){
                         loadRationGLJNode(newNode);
                     }
                 }
@@ -325,13 +327,13 @@ var PROJECT = {
 
         project.prototype.projectMarkChecking = function () {
             let me = this;
-            let  changeMark = projectInfoObj.projectInfo.changeMark;
+            let  changeMark = projectObj.project.projectInfo.changeMark;
             if(changeMark&&changeMark!=''){
                 let totalNode = this.Bills.getTotalCostNode(projectObj.mainController);
                 if(totalNode) totalNode.changed = true;
                 this.calcProgram.calcAllNodesAndSave();
                 CommonAjax.post("/project/removeProjectMark",{projectID:me.ID()},function (data) {
-                    delete projectInfoObj.projectInfo.changeMark;
+                    delete projectObj.project.projectInfo.changeMark;
                     if(socket.connected == true){//如果这时候socket已经连接成功,则发送删除标记广播
                         socket.emit('removeProjectMark',{projectID:me.ID(),userID:userID});
                     }else {//如果还没连接成功,则放入消息对象缓存,等socket连接成功后发送
@@ -353,7 +355,7 @@ var PROJECT = {
             };
             $.bootstrapLoading.start();
             CommonAjax.post('/pm/api/updateMixDatas', {user_id: userID, mixDataArr: mixDatas}, function (rstData) {
-                projectInfoObj.projectInfo.property.lockBills = value;
+                projectObj.project.projectInfo.property.lockBills = value;
                 if(callback){
                     callback();
                 }
@@ -362,7 +364,7 @@ var PROJECT = {
         };
         //返回清单是否被锁定
         project.prototype.isBillsLocked =function(){
-            if(projectInfoObj.projectInfo.property.lockBills == true){
+            if(projectObj.project.projectInfo.property.lockBills == true){
                 return true;
             }
             return false;
@@ -466,7 +468,7 @@ var PROJECT = {
 
         //判断项目是否安装工程
         project.prototype.isInstall = function () {
-            return projectInfoObj.projectInfo.property.isInstall?true:false;//如果是undefinded 就也返回false
+            return projectObj.project.projectInfo.property.isInstall?true:false;//如果是undefinded 就也返回false
         };
 
         /*        project.prototype.setBillsCalcMode = function (calcMode) {

+ 11 - 11
web/building_saas/main/js/models/project_glj.js

@@ -967,7 +967,7 @@ ProjectGLJ.prototype.addMixRatio = function(selections,callback){
 }
 
 ProjectGLJ.prototype.checkUnitFileName = function(newVal,callback){
-    let property = projectInfoObj.projectInfo.property;
+    let property = projectObj.project.projectInfo.property;
     let data = {
         name:newVal,
         rootProjectID:property.rootProjectID
@@ -1091,7 +1091,7 @@ ProjectGLJ.prototype.getByConKey = function (conkey) {//根据5个连接属性
 
 
 ProjectGLJ.prototype.refreshTreeNodePriceIfNeed = function (data) {
-    if ((data.unit_price.type == gljType.MAIN_MATERIAL || data.unit_price.type == gljType.EQUIPMENT) && projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial == true) {
+    if ((data.unit_price.type == gljType.MAIN_MATERIAL || data.unit_price.type == gljType.EQUIPMENT) && projectObj.project.projectInfo.property.displaySetting.disPlayMainMaterial == true) {
         let me = this;
         var nodes = _.filter(projectObj.project.mainTree.items, function (tem) {
             if (tem.sourceType == ModuleNames.ration_glj && tem.data.projectGLJID == data.id) {
@@ -1112,7 +1112,7 @@ ProjectGLJ.prototype.getMainAndEquGLJNodeByID = function (id) {//通过ID取显
     }else {
         ids = [id];
     }
-    if(projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial == true){
+    if(projectObj.project.projectInfo.property.displaySetting.disPlayMainMaterial == true){
          nodes = _.filter(projectObj.project.mainTree.items, function (tem) {
             return tem.sourceType == ModuleNames.ration_glj && ids.indexOf(tem.data.projectGLJID)  !== -1
         })
@@ -1209,16 +1209,16 @@ ProjectGLJ.prototype.setAdjustPrice = function (glj) {
 
 ProjectGLJ.prototype.getAdjustPrice = function (glj,isRadio) {
     let proGLJ =  projectObj.project.projectGLJ;
-    let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
-    let decimalObj = projectInfoObj.projectInfo.property.decimal;
+    let calcOptions=projectObj.project.projectInfo.property.calcOptions;
+    let decimalObj = projectObj.project.projectInfo.property.decimal;
     let labourCoeDatas =  projectObj.project.labourCoe.datas;
     return gljUtil.getAdjustPrice(glj,proGLJ.datas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
 };
 
 ProjectGLJ.prototype.getBasePrice = function(glj,isRadio){
     let proGLJ =  projectObj.project.projectGLJ;
-    let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
-    let decimalObj = projectInfoObj.projectInfo.property.decimal;
+    let calcOptions=projectObj.project.projectInfo.property.calcOptions;
+    let decimalObj = projectObj.project.projectInfo.property.decimal;
     let labourCoeDatas =  projectObj.project.labourCoe.datas;
     return gljUtil.getBasePrice(glj,proGLJ.datas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
 };
@@ -1226,16 +1226,16 @@ ProjectGLJ.prototype.getBasePrice = function(glj,isRadio){
 
 ProjectGLJ.prototype.getMarketPrice = function (glj,isRadio) {
     let proGLJ =  projectObj.project.projectGLJ;
-    let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
-    let decimalObj = projectInfoObj.projectInfo.property.decimal;
+    let calcOptions=projectObj.project.projectInfo.property.calcOptions;
+    let decimalObj = projectObj.project.projectInfo.property.decimal;
     let labourCoeDatas =  projectObj.project.labourCoe.datas;
     return gljUtil.getMarketPrice(glj,proGLJ.datas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
 };
 
 ProjectGLJ.prototype.getTenderMarketPrice = function (glj,isRadio) {
     let proGLJ =  projectObj.project.projectGLJ;
-    let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
-    let decimalObj = projectInfoObj.projectInfo.property.decimal;
+    let calcOptions=projectObj.project.projectInfo.property.calcOptions;
+    let decimalObj = projectObj.project.projectInfo.property.decimal;
     let labourCoeDatas =  projectObj.project.labourCoe.datas;
     let tenderCoe = 1;
     if (projectObj.project.property.tenderSetting && gljUtil.isDef(projectObj.project.property.tenderSetting.gljPriceTenderCoe) ){

+ 7 - 7
web/building_saas/main/js/models/ration.js

@@ -110,14 +110,14 @@ var Ration = {
         };
         ration.prototype.getTempRationData = function (id, billsID, serialNo, rType,priceType) {
             let newData = {'ID': id, 'serialNo': serialNo, projectID: this.project.ID()};
-            let pEngineer = projectInfoObj.projectInfo.property.projectEngineering;//量价默认使用后台设置的单位工程取费专业
+            let pEngineer = projectObj.project.projectInfo.property.projectEngineering;//量价默认使用后台设置的单位工程取费专业
             newData[project.masterField.ration] = billsID;
             newData['type'] = rType;
             if (rType == rationType.volumePrice){
                 newData['subType'] =  priceType?priceType:gljType.GENERAL_MATERIAL;   // 如果priceType 没传,默认的量价类型为材料
             };
             if(rType == rationType.ration){//空定额暂时不输入取费专业
-               // newData['programID'] = projectInfoObj.projectInfo.property.engineering;
+               // newData['programID'] = projectObj.project.projectInfo.property.engineering;
             }else if(rType == rationType.volumePrice){//量价取费专业默认为费率为0
                 newData['programID'] = projectObj.project.calcProgram.compiledTemplateMaps["费率为0"];
             }else {
@@ -383,8 +383,8 @@ var Ration = {
             let libID =  rationLibObj.getCurrentStdRationLibID();
             let libIDs = rationLibObj.getStdRationLibIDs();
             let defaultLibID = rationLibObj.getDefaultStdRationLibID();
-            let engineering = projectInfoObj.projectInfo.property.engineering;
-            let projectID = projectInfoObj.projectInfo.ID;
+            let engineering = projectObj.project.projectInfo.property.engineering;
+            let projectID = projectObj.project.projectInfo.ID;
             let project = projectObj.project;
             let mainTree = project.mainTree;
             let nodeInfo =[];
@@ -439,7 +439,7 @@ var Ration = {
         ration.prototype.addMultiRation = function (items, callback) {
             let me = this;
             let project = projectObj.project, sheetController = projectObj.mainController;
-            let engineering = projectInfoObj.projectInfo.property.engineering;
+            let engineering = projectObj.project.projectInfo.property.engineering;
             let selected = project.mainTree.selected, newSource = null, newNode = null,pre = null,br = null;
             let billItemID = null,serialNo=1,nextID=null;
             let needInstall = false;
@@ -550,7 +550,7 @@ var Ration = {
         ration.prototype.addNewRation = function (itemQuery,rationType,callback=null,isEmpty=false,priceType,needCalcAndSave=true) {//priceType 是量价类型
             let me = this;
             let project = projectObj.project, sheetController = projectObj.mainController;
-            let engineering = projectInfoObj.projectInfo.property.engineering;
+            let engineering = projectObj.project.projectInfo.property.engineering;
             let selected = project.mainTree.selected, newSource = null, newNode = null,pre=null,br=null;
             let billItemID = null,serialNo=1,nextID=null;
             let needInstall = false;
@@ -635,7 +635,7 @@ var Ration = {
         ration.prototype.addNewRationFast = function (rationType,callback) {
             let me = this;
             let project = projectObj.project, sheetController = projectObj.mainController;
-            let engineering = projectInfoObj.projectInfo.property.engineering;
+            let engineering = projectObj.project.projectInfo.property.engineering;
             let selected = project.mainTree.selected, newSource = null, newNode = null,pre=null,br=null;
             let billItemID = null,serialNo=1,nextID=null;
             if (selected === null) { return null; }

+ 4 - 4
web/building_saas/main/js/models/ration_glj.js

@@ -560,7 +560,7 @@ let ration_glj = {
             return node
         };
         ration_glj.prototype.getGLJData = function (cb) {
-            let property = projectInfoObj.projectInfo.property;
+            let property = projectObj.project.projectInfo.property;
             let engineerID = property.engineering_id;
             CommonAjax.get('/rationGlj/getGLJData/'+engineerID, function (data) {
                 //编办中有多单价设置
@@ -580,7 +580,7 @@ let ration_glj = {
             let gljList = [];
             let allGLJ = gljOprObj.AllRecode;
             let billsItemID = null, serialNo = 0,selectedSerialNo = null,nextNodeID = null, parentNodeID = null, billNode = null;
-            let pEngineer = projectInfoObj.projectInfo.property.projectEngineering;
+            let pEngineer = projectObj.project.projectInfo.property.projectEngineering;
             let children = [];
             if (selected.sourceType === project.Bills.getSourceType()) {
                 billsItemID = selected.data.ID;
@@ -684,7 +684,7 @@ let ration_glj = {
                 return
             }
             $.bootstrapLoading.start();
-            CommonAjax.post("/rationGlj/getGLJDataByCodes", { 'engineerID':projectInfoObj.projectInfo.property.engineering_id,projectID:projectObj.project.ID(),codes:codes}, function (result) {
+            CommonAjax.post("/rationGlj/getGLJDataByCodes", { 'engineerID':projectObj.project.projectInfo.property.engineering_id,projectID:projectObj.project.ID(),codes:codes}, function (result) {
                 $.bootstrapLoading.end();
                 callback(result)
             });
@@ -1011,7 +1011,7 @@ let ration_glj = {
             }
         };
         ration_glj.prototype.needShowToTree = function (data) {
-            if ((data.type == gljType.MAIN_MATERIAL || data.type == gljType.EQUIPMENT) && projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial == true) {
+            if ((data.type == gljType.MAIN_MATERIAL || data.type == gljType.EQUIPMENT) && projectObj.project.projectInfo.property.displaySetting.disPlayMainMaterial == true) {
                 return true
             }
             return false

+ 1 - 1
web/building_saas/main/js/models/volume_price.js

@@ -52,7 +52,7 @@ var VolumePrice = {
                 var newData = {'ID': newID, 'serialNo': serialNo, projectID: tools.owner.ID()};
                 newData[project.masterField.volumePrice] = billsID;
                 newData.type = '材料';
-                newData.programID = projectInfoObj.projectInfo.property.engineering;
+                newData.programID = projectObj.project.projectInfo.property.engineering;
                 return newData;
             };
             getBillsSortVolumePrice (billsID) {

+ 2 - 2
web/building_saas/main/js/views/billsElf.js

@@ -271,8 +271,8 @@ const BillsElf = (function() {
         bills.selected = node;
         if(!node.elf.tree){
             let guidanceLibID;
-            if (projectInfoObj.projectInfo.engineeringInfo && projectInfoObj.projectInfo.engineeringInfo.billsGuidance_lib) {
-                guidanceLibID = projectInfoObj.projectInfo.engineeringInfo.billsGuidance_lib[0] ? projectInfoObj.projectInfo.engineeringInfo.billsGuidance_lib[0].id : null;
+            if (projectObj.project.projectInfo.engineeringInfo && projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib) {
+                guidanceLibID = projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib[0] ? projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib[0].id : null;
             }
             CommonAjax.post('/billsGuidance/api/getItemsByCode', {guidanceLibID: guidanceLibID, code: nineCode}, function (rstData) {
                 //定额数据删除编号信息,(编码后+空格才会去除编码)

+ 1 - 1
web/building_saas/main/js/views/block_lib.js

@@ -73,7 +73,7 @@ var blockLibObj = {
         $.bootstrapLoading.start();
         let me = this;
         let namesAndLib = await ajaxPost('/blockLib/getLibNamesAndFirstLib',
-            {userID: userID, userName: $("#link_userName").text(), compilationID: projectInfoObj.projectInfo.compilation});
+            {userID: userID, userName: $("#link_userName").text(), compilationID: projectObj.project.projectInfo.compilation});
         function getLibNamesHtml(libsArr) {
             let result = '';
             for (let lib of libsArr) {

+ 1 - 1
web/building_saas/main/js/views/calc_program_manage.js

@@ -116,7 +116,7 @@ let calcProgramManage = {
             return result;
         };
 
-        let stdCPHtml = getStdCPFilesHtml(projectInfoObj.projectInfo.engineeringInfo.program_lib);
+        let stdCPHtml = getStdCPFilesHtml(projectObj.project.projectInfo.engineeringInfo.program_lib);
         $("#calcProgramFileSelect").html(stdCPHtml);
     },
     onMainEnterCell: function(sender, args) {

+ 10 - 10
web/building_saas/main/js/views/character_content_view.js

@@ -180,7 +180,7 @@ let contentOprObj = {
         pageCCOprObj.setCharacterBySetting(selectedNode, setting, callback, contentOprObj);
     },
     onEditStart(sender, args){
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
             return;
         }
@@ -204,7 +204,7 @@ let contentOprObj = {
         if(args.sheet.isEditing()){
             args.sheet.endEdit(true);
         }
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.sheet.setValue(args.row, args.col, 0);
             return;
         }
@@ -239,7 +239,7 @@ let contentOprObj = {
     },
     //复制粘贴
     onClipboardPasting: function (sender, args) {
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
             return;
         }
@@ -273,7 +273,7 @@ let contentOprObj = {
         let me = contentOprObj;
         let disObj = {jobAdd: false, jobInsert: true, jobDel: true, jobUp: true, jobDown: true};
         disObj.jobAdd = !pageCCOprObj.canAddType();
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             disObj.jobAdd = true;
             disObj.jobInsert = true;
             disObj.jobDel = true;
@@ -330,7 +330,7 @@ let contentOprObj = {
                 let addDis = pageCCOprObj.canAddType() ? false : true,  insertDis = false, delDis = false, upDis = false, downDis = false;
                 if(target.hitTestType === 3){//在表格内&& typeof target.row !== 'undefined' && typeof target.col !== 'undefined'
                     //清单锁定,不可用
-                    if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+                    if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
                         addDis = true;
                         insertDis = true;
                         delDis = true;
@@ -683,7 +683,7 @@ let characterOprObj = {
     },
     onEditStart: function (sender, args) {
         let me = characterOprObj;
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
             return;
         }
@@ -709,7 +709,7 @@ let characterOprObj = {
         }
     },
     onClipboardPasting: function (sender, args) {
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.cancel = true;
         }
         if(args.cellRange.col + args.colCount - 1 > 1){
@@ -766,7 +766,7 @@ let characterOprObj = {
         if(args.sheet.isEditing()){
             args.sheet.endEdit(true);
         }
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             args.sheet.setValue(args.row, args.col, 0);
             return;
         }
@@ -791,7 +791,7 @@ let characterOprObj = {
         let disObj = {itemAdd: false, itemInsert: true, itemDel: true, itemUp: true, itemDown: true};
         disObj.itemAdd = !pageCCOprObj.canAddType();
         //清单锁定,不可用
-        if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             disObj.itemAdd = true;
             disObj.itemInsert = true;
             disObj.itemDel = true;
@@ -836,7 +836,7 @@ let characterOprObj = {
                 let addDis = pageCCOprObj.canAddType() ? false : true, insertDis = false, delDis = false, upDis = false, downDis = false;
                 if(target.hitTestType === 3){//在表格内 && typeof target.row !== 'undefined' && typeof target.col !== 'undefined'
                     //清单锁定,则不可用
-                    if(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+                    if(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
                         addDis = true;
                         insertDis = true;
                         delDis = true;

+ 1 - 1
web/building_saas/main/js/views/glj_col.js

@@ -88,7 +88,7 @@ let gljCol = {
             me.removeCol('adjustPrice',me.project_glj_setting);
             me.removeCol('adjustPrice',me.mixRatio_Setting);
         }
-        if(projectInfoObj.projectInfo.property && projectInfoObj.projectInfo.property.valuationType == "bill"){
+        if(projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType == "bill"){
             me.removeCol('is_adjust_price',me.project_glj_setting);
         }
         gljOprObj.setting = me.ration_glj_setting;

+ 3 - 3
web/building_saas/main/js/views/glj_view.js

@@ -724,8 +724,8 @@ var gljOprObj = {
     },
     setGLJPrice:function (data,glj,isRadio = false) {//isRadio 标记是否算组成物的价格
         let proGLJ =  projectObj.project.projectGLJ;
-        let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
-        let decimalObj = projectInfoObj.projectInfo.property.decimal;
+        let calcOptions=projectObj.project.projectInfo.property.calcOptions;
+        let decimalObj = projectObj.project.projectInfo.property.decimal;
         let labourCoeDatas =  projectObj.project.labourCoe.datas;
         glj = glj?glj:_.find(proGLJ.datas.gljList, {'id': data.projectGLJID});
         if(glj){
@@ -754,7 +754,7 @@ var gljOprObj = {
         return proGLJ.getMarketPrice(glj);
     },
     calcPriceDiff:function (glj) {
-        let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
+        let calcOptions=projectObj.project.projectInfo.property.calcOptions;
         return gljUtil.calcPriceDiff(glj,calcOptions);
     },
     getIndex(obj, pops){

+ 1 - 1
web/building_saas/main/js/views/glj_view_contextMenu.js

@@ -400,7 +400,7 @@ function getGLJData(actionType) {
 }
 
 function showGLJClassTree(record) {
-    let engineerID = projectInfoObj.projectInfo.property.engineering_id;
+    let engineerID = projectObj.project.projectInfo.property.engineering_id;
     CommonAjax.post('/rationGlj/getGLJClass/'+engineerID,record, function (data) {
         if(data.exist==true){
             alert("当前人材机已存在。");

+ 4 - 4
web/building_saas/main/js/views/installation_fee_view.js

@@ -1252,8 +1252,8 @@ let installationFeeObj={
         return data;
     },
     calcInstallationFee:function(callback){//计算安装增加费
-        let engineering = projectInfoObj.projectInfo.property.engineering;
-        let installSetting = projectInfoObj.projectInfo.property.installSetting;
+        let engineering = projectObj.project.projectInfo.property.engineering;
+        let installSetting = projectObj.project.projectInfo.property.installSetting;
         let install_fee = projectObj.project.installation_fee;
         let autoCreate = false;
         if(!projectObj.project.isInstall()){//如果不是安装工程,则不用计算
@@ -1322,7 +1322,7 @@ let installationFeeObj={
         });
     },
     initSettingRadio:function () {
-        let installSetting = projectInfoObj.projectInfo.property.installSetting;
+        let installSetting = projectObj.project.projectInfo.property.installSetting;
         //radio 值设置
         if(installSetting==undefined||installSetting=="0"){
             $("#all_project_calc").prop("checked",true);
@@ -1454,7 +1454,7 @@ $(function () {
     $("input[name='install_setting_radios']").each(function(){
         $(this).click(function(){
             var settingVal = $(this).val();
-            let installSetting = projectInfoObj.projectInfo.property.installSetting;
+            let installSetting = projectObj.project.projectInfo.property.installSetting;
             if(installSetting==settingVal){
                 return;
             }

+ 2 - 2
web/building_saas/main/js/views/main_tree_col.js

@@ -221,7 +221,7 @@ let MainTreeCol = {
         forQuantity: function (node) {
             if(node.sourceType === projectObj.project.Bills.getSourceType()){
                 //如果是预算项目的,所有清单的数量1、数量2不做输入限制。
-                if(projectInfoObj.projectInfo.property && projectInfoObj.projectInfo.property.valuationType == "bill")  return false;
+                if(projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType == "bill")  return false;
                 if(node.data.type==billType.DXFY||(node.data.type==billType.BILL&&MainTreeCol.readOnly.billsParent(node))){//大项费用、清单父项行,工程量只读。
                     return true;
                 }
@@ -233,7 +233,7 @@ let MainTreeCol = {
         forQuantity2:function (node) {
             if(node.sourceType !== ModuleNames.bills) return true;//不是清单,只读
             //如果是预算项目的,所有清单的数量1、数量2不做输入限制。
-            if(projectInfoObj.projectInfo.property && projectInfoObj.projectInfo.property.valuationType == "bill")  return false;
+            if(projectObj.project.projectInfo.property && projectObj.project.projectInfo.property.valuationType == "bill")  return false;
             if(node.data.type==billType.DXFY||(node.data.type==billType.BILL&&MainTreeCol.readOnly.billsParent(node))) return true;//大项费用、清单父项行,工程量只读。
             return false
         },

+ 1 - 1
web/building_saas/main/js/views/mbzm_view.js

@@ -313,7 +313,7 @@ let mbzm_obj={
                     NextSiblingID:-1,
                     code:projectObj.project.Bills.newFormatCode(data.billsLocation),
                     type:billType.BILL,
-                    billsLibId:projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id,//projectInfoObj.projectInfo.engineeringInfo.billsGuidance_lib
+                    billsLibId:projectObj.project.projectInfo.engineeringInfo.bill_lib[0].id,//projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib
                     billsLocation : data.billsLocation//这个是用来在后端查找清单信息
                 };
                 let existB = projectObj.project.Bills.sameStdCodeBillsData(data.billsLocation);//对于多单位的清单

+ 2 - 2
web/building_saas/main/js/views/project_glj_view.js

@@ -1137,7 +1137,7 @@ projectGljObject={
     },
     initVvTax:async function () {//初始化车船税选择
         try {
-            let engineeringID = projectInfoObj.projectInfo.property.engineering_id;
+            let engineeringID = projectObj.project.projectInfo.property.engineering_id;
             let result =  await ajaxGet("/glj/getVvTaxList",{engineeringID:engineeringID});
             let optionString = ` <option value="">车船税标准</option>`;
             for(let r of result){
@@ -1262,7 +1262,7 @@ $(function () {
     );
     // 单价文件切换弹框
     $('#change-unitFile').on('shown.bs.modal', function () {
-        let rootProjectID = projectInfoObj.projectInfo.property.rootProjectID;
+        let rootProjectID = projectObj.project.projectInfo.property.rootProjectID;
         // 获取切换单价文件相关数据
         $.ajax({
             url: '/glj/get-project-info',

+ 20 - 21
web/building_saas/main/js/views/project_info.js

@@ -3,7 +3,6 @@
  */
 
 var projectInfoObj = {
-    projectInfo: null,
     getFullPathHtml: function (proj) {
         let fullPath = [], i, pm = '<span class="text-truncate"><a href="/pm">项目管理</a></span>', angleRight = '<span class="text-truncate"><i class="fa fa-angle-right fa-fw"></i></span>';
         if (proj) {
@@ -27,26 +26,26 @@ var projectInfoObj = {
         }
         return fullPath.join('');
     },
-    showProjectInfo: function (proj) {
-        var that = this;
-        CommonAjax.post('/pm/api/getProject', {"user_id": userID, "proj_id": scUrlUtil.GetQueryString('project')}, function (data) {
-            if (data) {
-                that.projectInfo = data;
-                if(!data.engineeringInfo.billsGuidance_lib || data.engineeringInfo.billsGuidance_lib.length === 0){
-                    $('#stdBillsGuidanceTab').addClass('disabled');
-                } else {
-                    //打开预算项目时,右侧“清单规则”显示为“项目表”,打开工程量清单项目时,右侧“清单规则”显示为“清单范本”。
-                    $('#stdBillsGuidanceTab').text(data.property.valuationType === 'bill' ? '项目表' : '清单范本');
-                }
-
-                //init decimal
-                setDecimal(decimalObj, data.property.decimal);
-                billsQuanDecimal.datas = data.property.billsQuantityDecimal || [billsDecimalView.angleDecimal];
-                basicInfoView.orgDatas = data.property.basicInformation ? basicInfoView.toViewDatas(data.property.basicInformation) : [];
-                projFeatureView.orgDatas = data.property.projectFeature ? projFeatureView.toViewDatas(data.property.projectFeature) : [];
-                $('#fullpath').html(that.getFullPathHtml(that.projectInfo));
-                $("[data-toggle='tooltip']").tooltip();
+    showProjectInfo: function (data) {
+        if (data) {
+            if(!data.engineeringInfo.billsGuidance_lib || data.engineeringInfo.billsGuidance_lib.length === 0){
+                $('#stdBillsGuidanceTab').addClass('disabled');
+            } else {
+                //打开预算项目时,右侧“清单规则”显示为“项目表”,打开工程量清单项目时,右侧“清单规则”显示为“清单范本”。
+                $('#stdBillsGuidanceTab').text(data.property.valuationType === 'bill' ? '项目表' : '清单范本');
             }
-        });
+            //init decimal
+            setDecimal(decimalObj, data.property.decimal);
+            billsQuanDecimal.datas = data.property.billsQuantityDecimal || [billsDecimalView.angleDecimal];
+            basicInfoView.orgDatas = data.property.basicInformation ? basicInfoView.toViewDatas(data.property.basicInformation) : [];
+            projFeatureView.orgDatas = data.property.projectFeature ? projFeatureView.toViewDatas(data.property.projectFeature) : [];
+            $('#fullpath').html(this.getFullPathHtml(data));
+            $("[data-toggle='tooltip']").tooltip();
+            if (data.property.valuationType == 'bill'){
+                $("#tab_tender_price").css('display', 'none');
+            } else{
+                $("#about-calc").css('display', 'none');
+            };
+        }
     }
 };

+ 2 - 2
web/building_saas/main/js/views/project_property_display_view.js

@@ -4,7 +4,7 @@
 let projDisplayView = {
     datas: null,//just for view
     init: function () {
-        this.datas = projectInfoObj.projectInfo.property.displaySetting;
+        this.datas = projectObj.project.projectInfo.property.displaySetting;
         this.datas = this.datas === undefined ? {autoHeight: true, disPlayMainMaterial: true} : this.datas;
         //$("#autoHeight").prop("checked", this.datas.autoHeight);
         $("#billsAutoHeight").prop("checked", this.datas.billsAutoHeight);
@@ -41,7 +41,7 @@ let projDisplayView = {
 let calcOptions = {
     datas: null,//just for view
     init: function () {
-        this.datas = projectInfoObj.projectInfo.property.calcOptions;
+        this.datas = projectObj.project.projectInfo.property.calcOptions;
         $("#calc_main").prop("checked", this.datas.calc_main);
         $("#calc_add").prop("checked", this.datas.calc_add);
         $("#calc_est").prop("checked", this.datas.calc_est);

+ 1 - 1
web/building_saas/main/js/views/project_property_labour_coe_view.js

@@ -23,7 +23,7 @@ let labourCoeView = {
             return result;
         };
 
-        let stdLCHtml = getStdLabourCoeFilesHtml(projectInfoObj.projectInfo.engineeringInfo.artificial_lib);
+        let stdLCHtml = getStdLabourCoeFilesHtml(projectObj.project.projectInfo.engineeringInfo.artificial_lib);
         $("#std_labour_coe_files").html(stdLCHtml);
     },
     buildSheet: function (){

+ 13 - 12
web/building_saas/main/js/views/project_view.js

@@ -285,10 +285,10 @@ var projectObj = {
         let stdMatchCode, formatCode, matchs;
         let searchStdBillsAndUpdate = function (stdCode, formatCode) {
             let orgCode = node.data.code?node.data.code.substr(0, 9):"";
-            if (projectInfoObj.projectInfo.engineeringInfo.bill_lib.length === 0) {
+            if (projectObj.project.projectInfo.engineeringInfo.bill_lib.length === 0) {
                 normalUpdate(node,value,stdCode === orgCode);
-            } else if (projectInfoObj.projectInfo.engineeringInfo.bill_lib.length > 0) {
-                let libId = projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id;
+            } else if (projectObj.project.projectInfo.engineeringInfo.bill_lib.length > 0) {
+                let libId = projectObj.project.projectInfo.engineeringInfo.bill_lib[0].id;
                 CommonAjax.post('/stdBillsEditor/getStdBillsByCode', {userId: userID, billsLibId: libId, code: stdCode}, function (data) {
                     if (data) {
                         function sortItems(serialItems, items){
@@ -389,7 +389,7 @@ var projectObj = {
         if(!isDef(node.data.code) && (!isDef(value) || value.toString().trim() == '')){
             return;
         }
-        if (projectInfoObj.projectInfo.engineeringInfo.ration_lib.length === 0) {
+        if (projectObj.project.projectInfo.engineeringInfo.ration_lib.length === 0) {
             alert('当前项目无定额库,请添加定额库。');
             this.mainController.refreshTreeNode([node], false);
         } else {
@@ -876,6 +876,7 @@ var projectObj = {
         $.bootstrapLoading.start();
         this.project.loadDatas(function (err) {
             let mTime = +new Date();
+            projectInfoObj.showProjectInfo(that.project.projectInfo);
             //快速列设置
             if(!colSettingObj.getVisible('itemCharacterText')){
                 switchTznrHtml(true);
@@ -889,7 +890,7 @@ var projectObj = {
                 subObj.initSubSpread();//初始化主界面下方的表格
 
                 let quantityTime = +new Date();
-                that.project.property = projectInfoObj.projectInfo.property;
+                that.project.property = projectObj.project.projectInfo.property;
                 if (typeof overwriteRationCalcBases === 'function')
                     overwriteRationCalcBases(that.project.property.taxType);
                 //that.project.calcProgram.compileAllTemps();
@@ -1072,7 +1073,7 @@ var projectObj = {
                 //如果其下没有定额/量价/人材机,则自动在其下插入一条定额空行,在其后自动插入一条分项空行,焦点跳动至定额空行的编码单元格。
                 else if(selected.children.length === 0){
                     //分项没有后兄弟,且没有锁定清单时在其后插入分项
-                    if(!selected.nextSibling && !(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected))){
+                    if(!selected.nextSibling && !(projectObj.project.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected))){
                         ProjectController.addFX(me.project, me.mainController);
                         //将焦点行设置成原本的行,以插入定额
                         me.mainController.setTreeSelected(me.project.mainTree.items[orgRow]);
@@ -1903,7 +1904,7 @@ var projectObj = {
 
     },
     loadLockBillsButton:function () {
-        if(projectInfoObj.projectInfo.property.lockBills == true){
+        if(projectObj.project.projectInfo.property.lockBills == true){
             //$("a[name='lockBills']").attr("data-original-title","解锁清单");
             $("a[name='lockBills']").html('<i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单');
         }else {
@@ -2057,7 +2058,7 @@ $('#downMove').click(function () {
     }
 });
 $("a[name='lockBills']").click(function () {//点击锁定/解锁清单
-    let lockBills = projectInfoObj.projectInfo.property.lockBills;
+    let lockBills = projectObj.project.projectInfo.property.lockBills;
     lockBills = !lockBills;
     projectObj.project.updateLockBills(lockBills,function () {
         var controller = projectObj.mainController, project = projectObj.project;
@@ -2204,7 +2205,7 @@ $('#poj-set').on('show.bs.modal', function () {
         projDisplayView.init();
         calcOptions.init();
     }
-    let propertyInfo = projectInfoObj.projectInfo.property;
+    let propertyInfo = projectObj.project.projectInfo.property;
     //关于计算-价差预备费//预算项目才有
     if (propertyInfo.valuationType === 'bill') {
         $('#jcybf').show();
@@ -2745,7 +2746,7 @@ $('#importConfirm').click(function () {
         let sDate = +new Date();
         formData.append('projectID', projectID);
         //要去匹配的清单库(第一个)
-        let matchBillLibId = projectInfoObj.projectInfo.engineeringInfo.bill_lib.length > 0 ? projectInfoObj.projectInfo.engineeringInfo.bill_lib[0].id : null;
+        let matchBillLibId = projectObj.project.projectInfo.engineeringInfo.bill_lib.length > 0 ? projectObj.project.projectInfo.engineeringInfo.bill_lib[0].id : null;
         formData.append('billsLibId', matchBillLibId);
         //选择的表及导入位置
         let importSheetsInfo = importBills.getImportSheetsInfo();
@@ -2897,7 +2898,7 @@ function doAfterImport(resData){
             doAfterImportPosition(positionData);
         }
         //如果清单未锁定,导入后锁定清单
-        /*if(!projectInfoObj.projectInfo.property.lockBills){
+        /*if(!projectObj.project.projectInfo.property.lockBills){
             $("a[name='lockBills']").click();
         }*/
         $.bootstrapLoading.end();
@@ -3000,7 +3001,7 @@ $(function () {
                 // 封装成伟城的块文件格式,直接调用伟城接口(定额这里的业务太多太庞杂,不要再重做一遍,尽量共用,维护代价小)
                 // 块文件要构建自己的树结构,所以也有自己的一部分数据。两种结构揉合在一起,显得有点杂乱,但利大于弊。
                 let vBlock_WC = {
-                    compilationID: projectInfoObj.projectInfo.compilation,
+                    compilationID: projectObj.project.projectInfo.compilation,
                     firstNodeType: node.data.type,
                     isFBFX: projectObj.project.Bills.isFBFX(node),
                     copyTime: +new Date(),

+ 4 - 2
web/building_saas/main/js/views/side_tools.js

@@ -3,7 +3,9 @@
  */
 $(window).resize(function() {
     autoFlashHeight();
-    sheetCommonObj.setColumnWidthByRate($('#stdRationChapter').width() - 40, rationLibObj.rationChapterSpread, rationLibObj.rationChapterTreeSetting.cols);
+    if ($('#stdRationChapter').width() > 0) {
+        sheetCommonObj.setColumnWidthByRate($('#stdRationChapter').width() - 30, rationLibObj.rationChapterSpread, rationLibObj.rationChapterTreeSetting.cols);
+    }
     billsGuidance.setColumnWidthByRate(billsGuidance.elfItem.workBook, $('#zy').width(), billsGuidance.elfItem.headers);
     billsGuidance.refreshWorkBook();
     rationLibObj.refreshSpread();
@@ -178,7 +180,7 @@ var sideToolsObj = {
             SlideResize.loadHorizonWidth(id, [sideResizeEles.eleObj.resize], [sideResizeEles.eleObj.left, sideResizeEles.eleObj.right], function(){
                 if (id === 'stdRationTab') {//加载定额库内部上下高度
                     SlideResize.loadVerticalHeight(rationLibResizeEles.eleObj.module, rationLibResizeEles.eleObj, rationLibResizeEles.limit, function () {
-                        rationLibObj.refreshSpread();
+                        sheetCommonObj.setColumnWidthByRate($('#stdRationChapter').width() - 30, rationLibObj.rationChapterSpread, rationLibObj.rationChapterTreeSetting.cols);
                     });
                 } else if (id === 'blockLibTab') {//块模板库
                     SlideResize.loadMultiVerticalHeight(blockLibMulti.module, blockLibMulti.eles, blockLibMulti.totalHeight, function () {

+ 2 - 2
web/building_saas/main/js/views/std_billsGuidance_lib.js

@@ -322,7 +322,7 @@ const billsGuidance = (function () {
                 return null;
             }
             let stdData = {};
-            stdData.projectID = projectInfoObj.projectInfo.ID;
+            stdData.projectID = projectObj.project.projectInfo.ID;
             stdData.isAdd = 1;
             stdData.ID = insertObj.ID;
             stdData.ParentID = insertObj.ParentID;
@@ -1024,7 +1024,7 @@ const billsGuidance = (function () {
         //打开清单指引库
         $('#stdBillsGuidanceTab').click(function () {
             if(libSel.children().length === 0 && !$(this).hasClass('disabled')){
-                initLibs(projectInfoObj.projectInfo.engineeringInfo.bill_lib);
+                initLibs(projectObj.project.projectInfo.engineeringInfo.bill_lib);
             }
         });
         //更改清单指引库

+ 2 - 2
web/building_saas/main/js/views/std_bills_lib.js

@@ -69,7 +69,7 @@ var billsLibObj = {
         let i, select = $('#stdBillsLibSelect');
         select.empty();
 
-        let bills_lib = projectInfoObj.projectInfo.engineeringInfo.bill_lib;
+        let bills_lib = projectObj.project.projectInfo.engineeringInfo.bill_lib;
         let selectedBillsLib = sessionStorage.getItem('stdBillsLib');
         bills_lib.forEach(function (data) {
             var option = $('<option>').val(data.id).text(data.name);
@@ -128,7 +128,7 @@ var billsLibObj = {
         return features;
     },
     insertBills: function (stdBillsJobData, stdBillsFeatureData, node) {
-        if(projectInfoObj.projectInfo.property.lockBills == true && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
+        if(projectObj.project.projectInfo.property.lockBills == true && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected)){
             return false;
         }
         $.bootstrapLoading.start();

+ 11 - 11
web/building_saas/main/js/views/std_ration_lib.js

@@ -49,7 +49,7 @@ var rationLibObj = {
     loadStdRationLibs: function () {
         let select = $('#stdRationLibSelect');
         select.empty();
-        let ration_lib = projectInfoObj.projectInfo.engineeringInfo.ration_lib;
+        let ration_lib = projectObj.project.projectInfo.engineeringInfo.ration_lib;
         ration_lib.push({
             isDefault: false,
             id: rationLibObj.compleRationLibId,
@@ -345,8 +345,8 @@ var rationLibObj = {
     locateAtRation: function(libID, code){
         let me = rationLibObj;
         //查找定额,以确定定额所在章节节点
-        let firstLibID = projectInfoObj.projectInfo.engineeringInfo.ration_lib.length > 0 ?
-                        projectInfoObj.projectInfo.engineeringInfo.ration_lib[0].id : null;
+        let firstLibID = projectObj.project.projectInfo.engineeringInfo.ration_lib.length > 0 ?
+                        projectObj.project.projectInfo.engineeringInfo.ration_lib[0].id : null;
         let locateRow = 0,
             locateSubRow = 0;
         CommonAjax.post('/complementaryRation/api/getRationItem', {rationRepIds: [libID], code: code}, function (ration) {
@@ -481,35 +481,35 @@ var rationLibObj = {
     },
     getStdRationLibIDs: function () {
         let ids = [];
-        if(projectInfoObj.projectInfo.engineeringInfo.ration_lib.length === 0){
+        if(projectObj.project.projectInfo.engineeringInfo.ration_lib.length === 0){
             alert('当前项目无定额库,请添加定额库。');
             return null;
         }
-        for(let rationLib of projectInfoObj.projectInfo.engineeringInfo.ration_lib){
+        for(let rationLib of projectObj.project.projectInfo.engineeringInfo.ration_lib){
             ids.push(rationLib.id);
         }
         return ids;
     },
     getCurrentStdRationLibID:function () {
-        if(projectInfoObj.projectInfo.engineeringInfo.ration_lib.length === 0){
+        if(projectObj.project.projectInfo.engineeringInfo.ration_lib.length === 0){
             alert('当前项目无定额库,请添加定额库。');
             return null;
         }
         if($('#stdRationLibSelect').val()){
             return parseInt($('#stdRationLibSelect').val());
         }else {
-            return projectInfoObj.projectInfo.engineeringInfo.ration_lib[0].id;
+            return projectObj.project.projectInfo.engineeringInfo.ration_lib[0].id;
         }
     },
     getFirstStdRationLibID: function () {
-        if(projectInfoObj.projectInfo.engineeringInfo.ration_lib.length === 0){
+        if(projectObj.project.projectInfo.engineeringInfo.ration_lib.length === 0){
             alert('当前项目无定额库,请添加定额库。');
             return null;
         }
-        return parseInt(projectInfoObj.projectInfo.engineeringInfo.ration_lib[0].id);
+        return parseInt(projectObj.project.projectInfo.engineeringInfo.ration_lib[0].id);
     },
     getDefaultStdRationLibID:function(){
-        let ration_lib = projectInfoObj.projectInfo.engineeringInfo.ration_lib;
+        let ration_lib = projectObj.project.projectInfo.engineeringInfo.ration_lib;
         if(ration_lib.length === 0){
             alert('当前项目无定额库,请添加定额库。');
             return null;
@@ -642,7 +642,7 @@ function seachRation(){
     if($('#curRationLib').hasClass('btn-secondary')){
         rationLibIDs.push($('#stdRationLibSelect').val());
     } else {
-        for(let lib of projectInfoObj.projectInfo.engineeringInfo.ration_lib){
+        for(let lib of projectObj.project.projectInfo.engineeringInfo.ration_lib){
             rationLibIDs.push(lib.id);
         }
     }

+ 1 - 1
web/building_saas/main/js/views/tender_price_view.js

@@ -287,7 +287,7 @@ let tender_obj={
                     let temNode = me.tenderTree.findNode(d.data.ID);
                     temObj = temNode?temNode.data:null;
                 }else if(d.type == ModuleNames.project){
-                    temObj = projectInfoObj.projectInfo;
+                    temObj = projectObj.project.projectInfo;
                 }
                 if(temObj){
                     for(let key in d.data){

+ 12 - 12
web/building_saas/report/js/rpt_main.js

@@ -61,22 +61,22 @@ let zTreeOprObj = {
     },
     getReportTemplateTree: function() {
         let me = zTreeOprObj, params = {};
-        params.engineerId = projectInfoObj.projectInfo.property.engineering;
+        params.engineerId = projectObj.project.projectInfo.property.engineering;
         let private_chk_hide = function (chkTplItem) {
             //考虑未来拓展,统一在此判断报表模板是否显示
             let rst = false;
             // if (chkTplItem.hasOwnProperty('flags') && chkTplItem.flags.hasOwnProperty('taxType') && chkTplItem.flags['taxType'] !== null &&
-            //     parseInt(chkTplItem.flags['taxType']) !== parseInt(projectInfoObj.projectInfo.property.taxType)) {
+            //     parseInt(chkTplItem.flags['taxType']) !== parseInt(projectObj.project.projectInfo.property.taxType)) {
             //     rst = true;
             // }
             //重庆养护系统的判断逻辑有所不同
             if (chkTplItem.hasOwnProperty('flags') && chkTplItem.flags.hasOwnProperty('valuationType') && chkTplItem.flags['valuationType'] !== null &&
-                chkTplItem.flags['valuationType'] !== projectInfoObj.projectInfo.property.valuationType) {
+                chkTplItem.flags['valuationType'] !== projectObj.project.projectInfo.property.valuationType) {
                 rst = true;
             }
             return rst;
         };
-        // projectInfoObj.projectInfo.property.taxType === 1 //1: 一般计税 2: 简易计税
+        // projectObj.project.projectInfo.property.taxType === 1 //1: 一般计税 2: 简易计税
         CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
             let private_remove_hide_item = function (items, nlv) {
                 if (items && items.length > 0) {
@@ -111,7 +111,7 @@ let zTreeOprObj = {
     },
     getCustomerCfg: function() {
         let me = zTreeOprObj, params = {};
-        params.engineerId = projectInfoObj.projectInfo.property.engineering;
+        params.engineerId = projectObj.project.projectInfo.property.engineering;
         CommonAjax.postEx("report_tpl_api/getCustomizeCfg", params, 20000, true, function(result){
                 if (result) {
                     me.defReportPageCfg = result[0];
@@ -218,7 +218,7 @@ let zTreeOprObj = {
             let pageSize = rptControlObj.getCurrentPageSize();
             params.pageSize = pageSize;
             params.rpt_tpl_id = treeNode.refId;
-            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.prj_id = projectObj.project.projectInfo.ID;
             params.custCfg = me.reportPageCfg;
             me.currentNode = treeNode;
             me.requestReport(params);
@@ -248,7 +248,7 @@ let zTreeOprObj = {
         params.pageSize = rptControlObj.getCurrentPageSize();
         params.orientation = rptControlObj.getCurrentOrientation();
         params.rpt_tpl_id = me.currentNode.refId;
-        params.prj_id = projectInfoObj.projectInfo.ID;
+        params.prj_id = projectObj.project.projectInfo.ID;
         params.custCfg = me.reportPageCfg;
         me.requestReport(params);
     },
@@ -394,13 +394,13 @@ let rptControlObj = {
     getAllInOneBook: function () {
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
             let me = rptControlObj;
-            let orgRptName = projectInfoObj.projectInfo.name;
+            let orgRptName = projectObj.project.projectInfo.name;
             let refRptTplIds = [];
             for (let node of zTreeOprObj.checkedRptTplNodes) {
                 refRptTplIds.push(node.refId);
             }
             let params = {};
-            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.prj_id = projectObj.project.projectInfo.ID;
             params.rpt_ids = refRptTplIds;
             params.rptName = orgRptName;
             params.pageSize = me.getCurrentPageSize();
@@ -429,7 +429,7 @@ let rptControlObj = {
                 rpt_names.push(tplNode.name)
             }
             let params = {};
-            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.prj_id = projectObj.project.projectInfo.ID;
             params.rpt_ids = rpt_ids;
             params.rpt_names = rpt_names;
             params.pageSize = me.getCurrentPageSize();
@@ -479,7 +479,7 @@ let rptControlObj = {
                 rpt_names.push(tplNode.name)
             }
             let params = {};
-            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.prj_id = projectObj.project.projectInfo.ID;
             params.rpt_ids = rpt_ids;
             params.rpt_names = rpt_names;
             params.pageSize = me.getCurrentPageSize();
@@ -601,7 +601,7 @@ let rptControlObj = {
             let params = {};
             params.pageSize = rptControlObj.getCurrentPageSize();
             params.rpt_tpl_id = treeNode.refId;
-            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.prj_id = projectObj.project.projectInfo.ID;
             params.custCfg = zTreeOprObj.reportPageCfg;
             zTreeOprObj.requestReport(params);
         }

+ 1 - 1
web/building_saas/report/js/rpt_print.js

@@ -10,7 +10,7 @@ let rptPrintHelper = {
             params.pageSize = rptControlObj.getCurrentPageSize();
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:rptControlObj.getCurrentOrientation());
             params.custCfg = zTreeOprObj.reportPageCfg;
-            params.prj_id = projectInfoObj.projectInfo.ID;
+            params.prj_id = projectObj.project.projectInfo.ID;
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rptIds.push(tplNode.refId);
             }

+ 2 - 1
web/users/html/login.html

@@ -118,7 +118,8 @@
                     <h5 class="modal-title">验证码安全登录</h5>
                 </div>
                 <div class="modal-body">
-                    <p class="">您是专业版用户,为您提供手机验证码安全登录。</p>
+                    <p class="">请您提供手机验证码进行安全登录。</p>
+                    <p class="">请点击“获取验证码”,验证码将发送至手机<span id="pro_mobile"></span>,注意查收。</p>
                     <div class="form-row">
                         <div class="form-group col-md-8">
                             <input type="text" class="form-control" id="smsCode" placeholder="输入验证码">

+ 1 - 0
web/users/js/login.js

@@ -69,6 +69,7 @@ $(document).ready(function () {
                             } else {
                                 $('#phonepass').modal('show');
                                 $('#proMobile').val(response.data);
+                                $('#pro_mobile').text(response.data.substr(0, 3) + '****' + response.data.substr(7, 11));
                             }
                         } else if(response.error === 2) {
                             $('#check_ssoId').val(response.ssoId);