Просмотр исходного кода

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuOperation

zhangweicheng 1 день назад
Родитель
Сommit
bac81ec9fb

+ 42 - 1
modules/common/const/bills_fixed.js

@@ -258,7 +258,34 @@ if (process.env.NODE_ENV.indexOf('hw') !== -1) {
         DAILY_MAINTENANCE_MANAGEMENT: 213,
         DAILY_MAINTENANCE_MANAGEMENT: 213,
         // 交通机电设施、设备备品备件合计
         // 交通机电设施、设备备品备件合计
         TRAFFIC_ELECTROMECHANICAL_EQUIPMENT_TOTAL: 215,
         TRAFFIC_ELECTROMECHANICAL_EQUIPMENT_TOTAL: 215,
-
+        // 监测系统建设费
+        MONITORING_SYSTEM_CONSTRUCTION: 216,
+        // 日常维修费
+        DAILY_MAINTAIN: 217,
+        // 预防养护建安费
+        PREVENTIVE_MAINT_COST: 218,
+        // 修复养护建安费
+        REPAIR_MAINT_COST: 219,
+        // 联合试运转费
+        COMMISSIONING_FEE: 220,
+        // 生产准备费
+        READINESS_FEE: 221,
+        // 工程保通管理费
+        TRAFFIC_MGT_FEE: 222,
+        // 其他相关费用
+        OTHER_COSTS: 223,
+        // 实施阶段发生的其他费用项目
+        IMPL_OTHER_COSTS: 224,
+        // 索赔
+        CLAIM: 225,
+        // 材料价差
+        MATERIAL_DIFF: 226,
+        // 代扣代付项目增减建设成本
+        WITHHOLD_ADJ_COST: 227,
+        // 尾工工程
+        PUNCH_LIST_ITEMS: 228,
+        // 专项评价(估)费
+        SPECIAL_EVAL_FEE: 229,
     };
     };
 }
 }
 
 
@@ -347,6 +374,20 @@ const fixedFlagList = [
     { name: '除雪融冰', value: fixedFlag.SNOWICE_REMOVAL },
     { name: '除雪融冰', value: fixedFlag.SNOWICE_REMOVAL },
     { name: '日常养护管理费', value: fixedFlag.DAILY_MAINTENANCE_MANAGEMENT },
     { name: '日常养护管理费', value: fixedFlag.DAILY_MAINTENANCE_MANAGEMENT },
     { name: '交通机电设施、设备备品备件合计', value: fixedFlag.TRAFFIC_ELECTROMECHANICAL_EQUIPMENT_TOTAL },
     { name: '交通机电设施、设备备品备件合计', value: fixedFlag.TRAFFIC_ELECTROMECHANICAL_EQUIPMENT_TOTAL },
+    { name: '监测系统建设费', value: fixedFlag.MONITORING_SYSTEM_CONSTRUCTION },
+    { name: '日常维修费', value: fixedFlag.DAILY_MAINTAIN },
+    { name: '预防养护建安费', value: fixedFlag.PREVENTIVE_MAINT_COST },
+    { name: '修复养护建安费', value: fixedFlag.REPAIR_MAINT_COST },
+    { name: '专项评价(估)费', value: fixedFlag.SPECIAL_EVAL_FEE },
+    { name: '联合试运转费', value: fixedFlag.COMMISSIONING_FEE },
+    { name: '生产准备费', value: fixedFlag.READINESS_FEE },
+    { name: '工程保通管理费', value: fixedFlag.TRAFFIC_MGT_FEE },
+    { name: '其他相关费用', value: fixedFlag.OTHER_COSTS },
+    { name: '实施阶段发生的其他费用项目', value: fixedFlag.IMPL_OTHER_COSTS },
+    { name: '索赔', value: fixedFlag.CLAIM },
+    { name: '材料价差', value: fixedFlag.MATERIAL_DIFF },
+    { name: '代扣代付项目增减建设成本', value: fixedFlag.WITHHOLD_ADJ_COST },
+    { name: '尾工工程', value: fixedFlag.PUNCH_LIST_ITEMS },
 ];
 ];
 
 
 export { fixedFlag as default, fixedFlagList as List };
 export { fixedFlag as default, fixedFlagList as List };

+ 35 - 38
modules/common/fileUtils.js

@@ -1,47 +1,44 @@
-'use strict';
+"use strict";
 
 
 /**
 /**
  * Module dependencies.
  * Module dependencies.
  */
  */
-var _ = require('lodash'),
-	glob = require('glob');
-
+var _ = require("lodash"),
+  glob = require("glob");
 
 
 /**
 /**
  * Get files by glob patterns
  * Get files by glob patterns
  */
  */
-module.exports.getGlobbedFiles = function(globPatterns, removeRoot) {
-	// For context switching
-	var _this = this;
-
-	// URL paths regex
-	var urlRegex = new RegExp('^(?:[a-z]+:)?\/\/', 'i');
-
-	// The output array
-	var output = [];
-
-	// If glob pattern is array so we use each pattern in a recursive way, otherwise we use glob
-	if (_.isArray(globPatterns)) {
-		globPatterns.forEach(function(globPattern) {
-			output = _.union(output, _this.getGlobbedFiles(globPattern, removeRoot));
-		});
-	} else if (_.isString(globPatterns)) {
-		if (urlRegex.test(globPatterns)) {
-			output.push(globPatterns);
-		} else {
-			glob(globPatterns, {
-				sync: true
-			}, function(err, files) {
-				if (removeRoot) {
-					files = files.map(function(file) {
-						return file.replace(removeRoot, '');
-					});
-				}
-
-				output = _.union(output, files);
-			});
-		}
-	}
-
-	return output;
+module.exports.getGlobbedFiles = function (globPatterns, removeRoot) {
+  // For context switching
+  var _this = this;
+
+  // URL paths regex
+  var urlRegex = new RegExp("^(?:[a-z]+:)?\/\/", "i");
+
+  // The output array
+  var output = [];
+
+  // If glob pattern is array so we use each pattern in a recursive way, otherwise we use glob
+  if (_.isArray(globPatterns)) {
+    globPatterns.forEach(function (globPattern) {
+      output = _.union(output, _this.getGlobbedFiles(globPattern, removeRoot));
+    });
+  } else if (_.isString(globPatterns)) {
+    if (urlRegex.test(globPatterns)) {
+      output.push(globPatterns);
+    } else {
+      var files = glob.sync(globPatterns);
+
+      if (removeRoot) {
+        files = files.map(function (file) {
+          return file.replace(removeRoot, "");
+        });
+      }
+
+      output = _.union(output, files);
+    }
+  }
+
+  return output;
 };
 };

+ 25 - 0
modules/ration_repository/models/ration_item.js

@@ -22,6 +22,8 @@ const installationDao = new InstallationDao();
 import GljDao from "../../std_glj_lib/models/gljModel";
 import GljDao from "../../std_glj_lib/models/gljModel";
 const stdGljDao = new GljDao();
 const stdGljDao = new GljDao();
 import stdgljutil from "../../../public/cache/std_glj_type_util";
 import stdgljutil from "../../../public/cache/std_glj_type_util";
+const lossRateModel = mongoose.model('std_ration_lib_loss_rate_list');
+const uuidV1 = require('uuid/v1');
 //add
 //add
 const stdGLJItemModel = mongoose.model('std_glj_lib_gljList');
 const stdGLJItemModel = mongoose.model('std_glj_lib_gljList');
 const stdGLJItemModelBackup = mongoose.model('std_glj_lib_gljList_backup');
 const stdGLJItemModelBackup = mongoose.model('std_glj_lib_gljList_backup');
@@ -72,6 +74,25 @@ async function copyCoeData(sourceLibID, targetLibID) {
     return IDMapping;
     return IDMapping;
 }
 }
 
 
+// 拷贝损耗率
+async function copyLossRateData(sourceLibID, targetLibID) {
+    const sourceLossData = await lossRateModel.find({ libID: sourceLibID }, '-_id').lean();
+    const IDMapping = {};
+    sourceLossData.forEach(item => {
+        IDMapping[item.ID] = uuidV1();
+    });
+
+    const insertData = sourceLossData.map(item => ({
+        ...item,
+        libID: targetLibID,
+        ID: IDMapping[item.ID],
+    }));
+    if (insertData.length) {
+        await lossRateModel.insertMany(insertData);
+    }
+    return IDMapping;
+}
+
 
 
 // 拷贝定额库
 // 拷贝定额库
 rationItemDAO.prototype.copyLib = async function (sourceLibID, targetLibID, sourceGLJLibID, targetGLJLibID) {
 rationItemDAO.prototype.copyLib = async function (sourceLibID, targetLibID, sourceGLJLibID, targetGLJLibID) {
@@ -79,6 +100,7 @@ rationItemDAO.prototype.copyLib = async function (sourceLibID, targetLibID, sour
     const rationIDMapping = await getIDMapping(counter.moduleName.rations, sourceRationData);
     const rationIDMapping = await getIDMapping(counter.moduleName.rations, sourceRationData);
     const classIDMapping = await copyClassData(sourceLibID, targetLibID);
     const classIDMapping = await copyClassData(sourceLibID, targetLibID);
     const coeIDMapping = await copyCoeData(sourceLibID, targetLibID);
     const coeIDMapping = await copyCoeData(sourceLibID, targetLibID);
+    const lossRateIDMapping = await copyLossRateData(sourceLibID, targetLibID);
     const sourceGLJData = await stdGLJItemModel.find({ repositoryId: sourceGLJLibID }, '-_id code ID').lean();
     const sourceGLJData = await stdGLJItemModel.find({ repositoryId: sourceGLJLibID }, '-_id code ID').lean();
     const sourceGLJCodeMapping = {};
     const sourceGLJCodeMapping = {};
     sourceGLJData.forEach(glj => sourceGLJCodeMapping[glj.code] = glj.ID);
     sourceGLJData.forEach(glj => sourceGLJCodeMapping[glj.code] = glj.ID);
@@ -100,6 +122,9 @@ rationItemDAO.prototype.copyLib = async function (sourceLibID, targetLibID, sour
         });
         });
         const rationGLJList = [];
         const rationGLJList = [];
         ration.rationGljList.forEach(rGLJ => {
         ration.rationGljList.forEach(rGLJ => {
+            if (rGLJ.lossRateID) {
+                rGLJ.lossRateID = lossRateIDMapping[rGLJ.lossRateID];
+            }
             const newGLJID = gljIDMapping[rGLJ.gljId];
             const newGLJID = gljIDMapping[rGLJ.gljId];
             if (newGLJID) {
             if (newGLJID) {
                 rGLJ.gljId = newGLJID;
                 rGLJ.gljId = newGLJID;

+ 2 - 1
package.json

@@ -14,7 +14,7 @@
     "express": "^4.13.1",
     "express": "^4.13.1",
     "express-partials": "^0.3.0",
     "express-partials": "^0.3.0",
     "express-session": "^1.15.1",
     "express-session": "^1.15.1",
-    "glob": "~4.0.5",
+    "glob": "^7.2.3",
     "lodash": "^4.17.10",
     "lodash": "^4.17.10",
     "moment": "^2.18.1",
     "moment": "^2.18.1",
     "mongoose": "~4.13.12",
     "mongoose": "~4.13.12",
@@ -27,6 +27,7 @@
     "babel-cli": "^6.26.0",
     "babel-cli": "^6.26.0",
     "babel-core": "^6.26.0",
     "babel-core": "^6.26.0",
     "bluebird": "^3.5.0",
     "bluebird": "^3.5.0",
+    "core-js": "^2.5.7",
     "jszip": "^3.1.3",
     "jszip": "^3.1.3",
     "log4js": "~2.3.3",
     "log4js": "~2.3.3",
     "lz-string": "^1.4.4",
     "lz-string": "^1.4.4",

+ 7 - 0
web/maintain/report/html/rpt_tpl_dtl_info.html

@@ -103,6 +103,10 @@
                             <li id="valuationSelector_ration" value="ration">清单预算</li>
                             <li id="valuationSelector_ration" value="ration">清单预算</li>
                             <li id="valuationSelector_changeBudget" value="changeBudget">变更预算</li>
                             <li id="valuationSelector_changeBudget" value="changeBudget">变更预算</li>
                             <li id="valuationSelector_settlement" value="settlement">结算</li>
                             <li id="valuationSelector_settlement" value="settlement">结算</li>
+                            <li id="valuationSelector_costEstimate" value="costEstimate">成本测算</li>
+                            <li id="valuationSelector_billBudgetSettlement" value="billBudgetSettlement">工程量清单结算决算</li>
+                            <li id="valuationSelector_threeBillSettlement" value="threeBillSettlement">结算决算</li>
+                            
                         </ul>
                         </ul>
 
 
                     </div>
                     </div>
@@ -114,6 +118,7 @@
                         <option value="NA">N/A</option>
                         <option value="NA">N/A</option>
                         <option value="billSummary">工程清单汇总</option>
                         <option value="billSummary">工程清单汇总</option>
                         <option value="gljSummary">工程工料机汇总</option>
                         <option value="gljSummary">工程工料机汇总</option>
+                        <option value="changeOrderSummary">结算工程变更令汇总</option>
                     </select>
                     </select>
                 </div>
                 </div>
                 <div class="input-group col-4">
                 <div class="input-group col-4">
@@ -144,6 +149,7 @@
                         <option value="compareBusinessUnit">对比业务项目(平台可弹窗)</option>
                         <option value="compareBusinessUnit">对比业务项目(平台可弹窗)</option>
                         <option value="compareAndStageContrast">阶段对比审核表</option>
                         <option value="compareAndStageContrast">阶段对比审核表</option>
                         <option value="changeCompare">阶段对比审核表(4个建设项目,多对多对多对多)</option>
                         <option value="changeCompare">阶段对比审核表(4个建设项目,多对多对多对多)</option>
+                        <option value="changeComplexCompare">阶段对比审核表(4个建设项目多选,多对多对多对多)</option>
                     </select>
                     </select>
                     <label class="form-check-label" id="outputDesignDataBar" style="display: none;">
                     <label class="form-check-label" id="outputDesignDataBar" style="display: none;">
                         <input onchange="zTreeOprObj.onChangeFlag('outputDesignData', this)"  id="outputDesignData" type="checkbox">输出设计清单
                         <input onchange="zTreeOprObj.onChangeFlag('outputDesignData', this)"  id="outputDesignData" type="checkbox">输出设计清单
@@ -208,6 +214,7 @@
                     <!-- <option value="audit_compare">审核对比</option> -->
                     <!-- <option value="audit_compare">审核对比</option> -->
                     <option value="project_compare">步骤对比</option>
                     <option value="project_compare">步骤对比</option>
                     <option value="costUnitCompare">造价审核记录对比</option>
                     <option value="costUnitCompare">造价审核记录对比</option>
+                    <option value="settlement_audit_compare">结算审核对比合同格式</option>
                 </select>
                 </select>
 
 
             </div>
             </div>

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

@@ -25,6 +25,11 @@ const valuationSelectorMap = {
   valuationSelector_ration: "清单预算",
   valuationSelector_ration: "清单预算",
   valuationSelector_changeBudget: "变更预算",
   valuationSelector_changeBudget: "变更预算",
   valuationSelector_settlement: "结算",
   valuationSelector_settlement: "结算",
+  valuationSelector_costEstimate: "成本测算",
+  valuationSelector_finalSettlement: "结算决算",
+  valuationSelector_billBudgetSettlement: "公路-工程量清单结算决算",
+  valuationSelector_threeBillSettlement:
+    "公路-“三级清单结算决算”/“分项清单结算决算”/“项目清单结算决算”",
 };
 };
 let rptTplObj = {
 let rptTplObj = {
   iniPage: function () {
   iniPage: function () {
@@ -1266,6 +1271,8 @@ let zTreeOprObj = {
                   $("#element_rptFlags_select")[0].selectedIndex = 1;
                   $("#element_rptFlags_select")[0].selectedIndex = 1;
                 else if (rType === "gljSummary")
                 else if (rType === "gljSummary")
                   $("#element_rptFlags_select")[0].selectedIndex = 2;
                   $("#element_rptFlags_select")[0].selectedIndex = 2;
+                else if (rType === "changeOrderSummary")
+                  $("#element_rptFlags_select")[0].selectedIndex = 3;
                 else $("#element_rptFlags_select")[0].selectedIndex = 0;
                 else $("#element_rptFlags_select")[0].selectedIndex = 0;
               } else {
               } else {
                 $("#element_rptFlags_select")[0].selectedIndex = 0;
                 $("#element_rptFlags_select")[0].selectedIndex = 0;
@@ -1318,6 +1325,8 @@ let zTreeOprObj = {
                   $("#element_sumLv_flags")[0].selectedIndex = 22;
                   $("#element_sumLv_flags")[0].selectedIndex = 22;
                 else if (sumLvType === "changeCompare")
                 else if (sumLvType === "changeCompare")
                   $("#element_sumLv_flags")[0].selectedIndex = 23;
                   $("#element_sumLv_flags")[0].selectedIndex = 23;
+                else if (sumLvType === "changeComplexCompare")
+                  $("#element_sumLv_flags")[0].selectedIndex = 24;
                 else {
                 else {
                   $("#element_sumLv_flags")[0].selectedIndex = 0;
                   $("#element_sumLv_flags")[0].selectedIndex = 0;
                 }
                 }
@@ -1395,6 +1404,8 @@ let zTreeOprObj = {
                   $("#element_constructSumFlags_audit")[0].selectedIndex = 1;
                   $("#element_constructSumFlags_audit")[0].selectedIndex = 1;
                 } else if (val === "costUnitCompare") {
                 } else if (val === "costUnitCompare") {
                   $("#element_constructSumFlags_audit")[0].selectedIndex = 2;
                   $("#element_constructSumFlags_audit")[0].selectedIndex = 2;
+                } else if (val === "settlement_audit_compare") {
+                  $("#element_constructSumFlags_audit")[0].selectedIndex = 3;
                 } else {
                 } else {
                   $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
                   $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
                 }
                 }