Kaynağa Gözat

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

Tony Kang 2 yıl önce
ebeveyn
işleme
19229dcfbc

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1769 - 1634
web/building_saas/main/js/models/calc_base.js


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

@@ -726,7 +726,8 @@ const XML_EXPORT_BASE = (() => {
                 ParentID: data.ParentID,
                 NextSiblingID: data.NextSiblingID,
                 name: data.name,
-                code: data.code || String(curCode++)
+                code: data.code || String(curCode++),
+                projType: data.projType
             };
         }
     }

+ 12 - 4
web/building_saas/main/js/views/export_view.js

@@ -32,6 +32,7 @@ const ExportView = (() => {
         confirming: false   //导出确认
     };
     let spread = null;
+    let sheetData = [];
     //初始化设置工程编号表格
     function initSpread(datas) {
         if (spread) {
@@ -44,12 +45,15 @@ const ExportView = (() => {
         sheetCommonObj.showTreeData(sheet, sheetSetting, datas);
     }
     //获取设置的工程编号
-    function getCodeFromSheet(sheet) {
+    function getCodeFromSheet(sheet, isTwoLevel) {
         let codeCol = 1;
         let rst = [];
         //排除建设项目行
         for (let row = 1; row < sheet.getRowCount(); row++) {
-            rst.push(sheet.getText(row, codeCol) || '');
+            const rowData = (sheetData||[])[row];
+            if (rowData && (!isTwoLevel || rowData.projType === 'Tender')) {
+                rst.push(sheet.getText(row, codeCol) || '');
+            }
         }
         return rst;
     }
@@ -234,12 +238,16 @@ const ExportView = (() => {
                 projectData = _cache.getItem('projectData');
                 $("#export_index_checkbox").hide();
             }
-            initSpread(XML_EXPORT_BASE.UTIL.getCodeSheetData(projectData));
+            const shtData = XML_EXPORT_BASE.UTIL.getCodeSheetData(projectData);
+            initSpread(shtData);
+            sheetData = shtData;
         });
         //设置完工程编号后,导出数据。如果选中多个文件,导出压缩包
         $('#exportCode-confirm').click(async function () {
             // 工程编号
-            let codes = getCodeFromSheet(spread.getSheet(0));
+            const projectData = _cache.getItem('projectData');
+            const isTwoLevel = projectData ? !!projectData.isTwoLevel : false;
+            let codes = getCodeFromSheet(spread.getSheet(0), isTwoLevel);
             if (codes.includes('')) {
                 alert('单项、单位工程工程编号不可为空。');
                 STATE.confirming = false;

+ 9 - 1
web/common/html/dataStatistics.html

@@ -1 +1,9 @@
-<script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1278513319'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "v1.cnzz.com/stat.php%3Fid%3D1278513319%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));</script>
+<script type="text/javascript">
+var _hmt = _hmt || [];
+(function() {
+  var hm = document.createElement("script");
+  hm.src = "https://hm.baidu.com/hm.js?387debbb1d9b44c93bd04d5973d86390";
+  var s = document.getElementsByTagName("script")[0]; 
+  s.parentNode.insertBefore(hm, s);
+})();
+</script>

+ 4 - 3
web/common/html/header.html

@@ -1,4 +1,7 @@
 <img id="f_btn" src="/web/dest/css/img/feeRate_btn.jpg" alt="" style="display: none" />
+<% if(typeof socketPort != 'undefined'){ %>
+    <input id="socketPort" value="<%= socketPort %>" type="hidden">
+<% } %>
 <!-- <nav class="navbar p-0 "> -->
 <div class="top-msg clearfix">
     <div class="alert alert-warning alert-dismissible" role="alert" id="notify" style="display: none">
@@ -58,8 +61,6 @@
                     <img width="38" src="/web/building_saas/img/vip2.png" data-toggle="tooltip" data-placement="bottom" data-original-title="借用">
                     <% } else if (sessionUser.compilationLock === 2) { %>
                     <img width="38" src="/web/building_saas/img/vip.png" data-toggle="tooltip" data-placement="bottom" data-original-title="购买">
-                    <% } else if (sessionUser.compilationLock === 3) { %>
-                    <img width="38" src="/web/building_saas/img/vip3.png" data-toggle="tooltip" data-placement="bottom" data-original-title="赠送">
                     <% } %>
                 </a>
               </li>
@@ -85,7 +86,7 @@
                     <a class="dropdown-item" href="http://doc.zhzdwd.com/docs/dhjc" target="_blank">动画教程</a>
                     <a class="dropdown-item" href="http://yun.zhzdwd.com/docs" target="_blank">常见问题解答</a>
                     <a class="dropdown-item" href="http://doc.zhzdwd.com/docs/dasikongupdate" target="_blank">升级说明</a>
-                    <a class="dropdown-item" href="<%= valuationBasisURL %>" target="_blank">计价依据</a>
+                    <a class="dropdown-item" href="http://zhzdwk.com/special/detail/36" target="_blank">计价依据</a>
                     <a class="dropdown-item" href="https://smartcost.com.cn/" target="_blank">纵横官网</a>
                     <!--  <a class="dropdown-item" href="#">动画教程</a>-->
                     <a id="customerService" class="dropdown-item" href="javascript:void(0);">联系客服</a>

+ 363 - 350
web/over_write/js/chongqing_2018.js

@@ -2,103 +2,111 @@
  * Created by zhang on 2018/8/14.
  */
 
-if(typeof projectGljObject !== 'undefined'){
-    projectGljObject.displayTypeMap=[
-        {ID:'LABOUR',text:'人工'},
-        {ID:'GENERAL_MATERIAL',text:'材料'},
-        {ID:'GENERAL_MACHINE',text:'施工机具'},//重庆2018定额中去掉了主材,机械的显示改为了施工机具
-        {ID:'MAIN_MATERIAL',text:'主材'}
-    ];
-    $('#menu_index_info').show();
-    //2020-11-06 暂时去掉主城区加载通用 
-  projectGljObject.addCommonInfoPriceID = function (condition) { 
-    if(condition.areaID != projectGljObject.commonInfoPriceID) condition.commonInfoPriceID = projectGljObject.commonInfoPriceID;
-  }
+if (typeof projectGljObject !== "undefined") {
+  projectGljObject.displayTypeMap = [
+    { ID: "LABOUR", text: "人工" },
+    { ID: "GENERAL_MATERIAL", text: "材料" },
+    { ID: "GENERAL_MACHINE", text: "施工机具" }, //重庆2018定额中去掉了主材,机械的显示改为了施工机具
+    { ID: "MAIN_MATERIAL", text: "主材" },
+  ];
+  $("#menu_index_info").show();
+  //2020-11-06 暂时去掉主城区加载通用
+  projectGljObject.addCommonInfoPriceID = function (condition) {
+    if (condition.areaID != projectGljObject.commonInfoPriceID) condition.commonInfoPriceID = projectGljObject.commonInfoPriceID;
+  };
 }
-if(typeof gljUtil !== 'undefined'){
-    gljUtil.hasCompMachine = [301,304];//有组成物的机械
-    gljUtil.machineComposition = [303,305,306,307,308,309,310,311];//可以做为机械组成物的类型
+if (typeof gljUtil !== "undefined") {
+  gljUtil.hasCompMachine = [301, 304]; //有组成物的机械
+  gljUtil.machineComposition = [303, 305, 306, 307, 308, 309, 310, 311]; //可以做为机械组成物的类型
 }
 
 //允许使用的工料机类型:人工、普通材料、混凝土、砂浆、配合比、商品混凝土、商品砂浆、其他材料费、机械台班、机上人工、仪器仪表、燃料动力费、折旧费、
 // 检修费、维护费、安拆费及场外运费、校验费、其他费用、主材、设备、企业管理费、利润、一般风险费  前端工料机库编辑器下拉列表没有用到这个
-if(typeof allowGljType !== 'undefined'){
-    allowGljType = [1, 201, 202, 203, 204, 205, 206, 207, 301, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 4,5,6, 7, 8];
+if (typeof allowGljType !== "undefined") {
+  allowGljType = [1, 201, 202, 203, 204, 205, 206, 207, 301, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 4, 5, 6, 7, 8];
 }
-if(typeof allowComponent !== 'undefined'){
-    //允许含有组成物的工料机类型:混凝土、砂浆、配合比、机械台班、仪器仪表、主材
-    allowComponent = [202, 203, 204, 301, 304, 4];
+if (typeof allowComponent !== "undefined") {
+  //允许含有组成物的工料机类型:混凝土、砂浆、配合比、机械台班、仪器仪表、主材
+  allowComponent = [202, 203, 204, 301, 304, 4];
 }
-if(typeof componentType !== 'undefined'){
-    //可以作为组成物的工料机类型:普通材料、机上人工、燃料动力费、折旧费、检修费、维护费、安拆费及场外运费、校验费、其他费用、主材
-    componentType = [201, 303, 305, 306, 307, 308, 309, 310, 311, 4];
+if (typeof componentType !== "undefined") {
+  //可以作为组成物的工料机类型:普通材料、机上人工、燃料动力费、折旧费、检修费、维护费、安拆费及场外运费、校验费、其他费用、主材
+  componentType = [201, 303, 305, 306, 307, 308, 309, 310, 311, 4];
 }
-if(typeof machineAllowComponent !== 'undefined'){
-    //允许含有组成物的机械工料机类型:机械台班、仪器仪表
-    machineAllowComponent = [301, 304];
+if (typeof machineAllowComponent !== "undefined") {
+  //允许含有组成物的机械工料机类型:机械台班、仪器仪表
+  machineAllowComponent = [301, 304];
 }
-if(typeof machineComponent !== 'undefined'){
-    //可以作为机械工料机组成物的工料机类型:机械组成物、机上人工、燃料动力费、折旧费、检修费、维护费、安拆费及场外运费、校验费、其他费用
-    machineComponent = [303, 305, 306, 307, 308, 309, 310, 311];
+if (typeof machineComponent !== "undefined") {
+  //可以作为机械工料机组成物的工料机类型:机械组成物、机上人工、燃料动力费、折旧费、检修费、维护费、安拆费及场外运费、校验费、其他费用
+  machineComponent = [303, 305, 306, 307, 308, 309, 310, 311];
 }
-if(typeof materialAllowComponent !== 'undefined'){
-    //允许含有组成物的材料工料机类型:混凝土、砂浆、配合比
-    materialAllowComponent = [202, 203, 204];
+if (typeof materialAllowComponent !== "undefined") {
+  //允许含有组成物的材料工料机类型:混凝土、砂浆、配合比
+  materialAllowComponent = [202, 203, 204];
 }
-if(typeof materialComponent !== 'undefined'){
-    //可以作为材料工料机组成物的工料机类型:普通材料
-    materialComponent = [201];
+if (typeof materialComponent !== "undefined") {
+  //可以作为材料工料机组成物的工料机类型:普通材料
+  materialComponent = [201];
 }
 
 // CSL, 2018-08-21 计算程序、基数 的覆盖。---------------------------------------------------------------------------------
 let isCQ2018 = true;
 
-if(typeof baseMaterialTypes !== 'undefined') baseMaterialTypes.push(gljType.OTHER_MATERIAL);
+if (typeof baseMaterialTypes !== "undefined") baseMaterialTypes.push(gljType.OTHER_MATERIAL);
 
-if(typeof baseMachineMasterTypes !== 'undefined') baseMachineMasterTypes.push(gljType.INSTRUMENT);
-if(typeof baseMachineTypes !== 'undefined'){
-  _.pull(baseMachineTypes,gljType.MACHINE_COMPOSITION);
+if (typeof baseMachineMasterTypes !== "undefined") baseMachineMasterTypes.push(gljType.INSTRUMENT);
+if (typeof baseMachineTypes !== "undefined") {
+  _.pull(baseMachineTypes, gljType.MACHINE_COMPOSITION);
   //baseMachineTypes.delete(gljType.MACHINE_COMPOSITION);
-  baseMachineTypes.push(gljType.INSTRUMENT, gljType.FUEL_POWER_FEE, gljType.DEPRECIATION_FEE,
-      gljType.INSPECTION_FEE, gljType.MAINTENANCE, gljType.DISMANTLING_FREIGHT_FEE,
-      gljType.VERIFICATION_FEE, gljType.OTHER_FEE, gljType.OTHER_MACHINE_USED);
+  baseMachineTypes.push(
+    gljType.INSTRUMENT,
+    gljType.FUEL_POWER_FEE,
+    gljType.DEPRECIATION_FEE,
+    gljType.INSPECTION_FEE,
+    gljType.MAINTENANCE,
+    gljType.DISMANTLING_FREIGHT_FEE,
+    gljType.VERIFICATION_FEE,
+    gljType.OTHER_FEE,
+    gljType.OTHER_MACHINE_USED
+  );
 }
 
-function overwriteRationCalcBases (taxType){
-    if (rationCalcBases){
-        for (let key in rationCalcBases) {
-            delete rationCalcBases[key];
-        };
-        let isJY = taxType == '2';
+function overwriteRationCalcBases(taxType) {
+  if (rationCalcBases) {
+    for (let key in rationCalcBases) {
+      delete rationCalcBases[key];
+    }
+    let isJY = taxType == "2";
 
-        rationCalcBases['定额人工费'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
-        };
-        rationCalcBases['定额材料费'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
-        };
-        rationCalcBases['定额其他材料费'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.OTHER_MATERIAL], priceTypes.ptBasePrice, isTender);
-        };
-        rationCalcBases['定额施工机具使用费'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
-        };
-        rationCalcBases['市场价主材费'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
-        };
-        rationCalcBases['市场价设备费'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
-        };
-        rationCalcBases['人工工日'] = function (node, isTender) {
-            return calcTools.labourDays(node, isTender);
-        };
-        rationCalcBases['人工费价差'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptDiffPrice, isTender);
-        };
-        rationCalcBases['材料费价差'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptDiffPrice, isTender);
-        };
-/*        if (isJY){
+    rationCalcBases["定额人工费"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
+    };
+    rationCalcBases["定额材料费"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
+    };
+    rationCalcBases["定额其他材料费"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.OTHER_MATERIAL], priceTypes.ptBasePrice, isTender);
+    };
+    rationCalcBases["定额施工机具使用费"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
+    };
+    rationCalcBases["市场价主材费"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
+    };
+    rationCalcBases["市场价设备费"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
+    };
+    rationCalcBases["人工工日"] = function (node, isTender) {
+      return calcTools.labourDays(node, isTender);
+    };
+    rationCalcBases["人工费价差"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptDiffPrice, isTender);
+    };
+    rationCalcBases["材料费价差"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptDiffPrice, isTender);
+    };
+    /*        if (isJY){
             rationCalcBases['计价材料价差'] = function (node, isTender) {
                 let baseMaterialTypesWithoutOtherMaterial = [
                     gljType.GENERAL_MATERIAL,
@@ -111,304 +119,309 @@ function overwriteRationCalcBases (taxType){
                 return calcTools.rationBaseFee(node, baseMaterialTypesWithoutOtherMaterial, priceTypes.ptDiffPrice, isTender);
             };
         };*/
-        rationCalcBases['机上人工费价差'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
-        };
-        rationCalcBases['燃料动力费价差'] = function (node, isTender) {
-            return calcTools.rationBaseFee(node, [gljType.FUEL_POWER_FEE], priceTypes.ptDiffPrice, isTender);
-        };
-        if (isJY) {
-            rationCalcBases['定额其他施工机具使用费'] = function (node, isTender) {
-                return calcTools.rationBaseFee(node, [gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
-            };
-            rationCalcBases['机械折旧费'] = function (node, isTender) {
-                return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.DEPRECIATION_FEE, isTender);
-            };
-            rationCalcBases['特大机械检修费'] = function (node, isTender) {
-                return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], gljType.INSPECTION_FEE, isTender);
-            };
-            rationCalcBases['中小机械检修费'] = function (node, isTender) {
-                return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], gljType.INSPECTION_FEE, isTender);
-            };
-            rationCalcBases['特大机械维护费'] = function (node, isTender) {
-                return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], gljType.MAINTENANCE, isTender);
-            };
-            rationCalcBases['中小机械维护费'] = function (node, isTender) {
-                return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], gljType.MAINTENANCE, isTender);
-            };
-            rationCalcBases['安拆费及场外运输费'] = function (node, isTender) {
-                return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.DISMANTLING_FREIGHT_FEE, isTender);
-            };
-/*            rationCalcBases['燃料动力费'] = function (node, isTender) {
+    rationCalcBases["机上人工费价差"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
+    };
+    rationCalcBases["燃料动力费价差"] = function (node, isTender) {
+      return calcTools.rationBaseFee(node, [gljType.FUEL_POWER_FEE], priceTypes.ptDiffPrice, isTender);
+    };
+    if (isJY) {
+      rationCalcBases["定额其他施工机具使用费"] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.OTHER_MACHINE_USED], priceTypes.ptBasePrice, isTender);
+      };
+      rationCalcBases["机械折旧费"] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.DEPRECIATION_FEE, isTender);
+      };
+      rationCalcBases["特大机械检修费"] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], gljType.INSPECTION_FEE, isTender);
+      };
+      rationCalcBases["中小机械检修费"] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], gljType.INSPECTION_FEE, isTender);
+      };
+      rationCalcBases["特大机械维护费"] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [1, 2], gljType.MAINTENANCE, isTender);
+      };
+      rationCalcBases["中小机械维护费"] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [3, 4], gljType.MAINTENANCE, isTender);
+      };
+      rationCalcBases["安拆费及场外运输费"] = function (node, isTender) {
+        return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.DISMANTLING_FREIGHT_FEE, isTender);
+      };
+      /*            rationCalcBases['燃料动力费'] = function (node, isTender) {
                 return calcTools.machineDetailFee(node, node.data.gljList, [], gljType.FUEL_POWER_FEE, isTender);
             };*/
-            rationCalcBases['定额仪器仪表费'] = function (node, isTender) {
-                return calcTools.rationBaseFee(node, [gljType.INSTRUMENT], priceTypes.ptBasePrice, isTender);
-            };
-        };
-        rationCalcBases['建筑面积'] = function (node, isTender) {
-            return calcTools.getProjectFeatureProperty('buildingArea');
-        };
-        rationCalcBases['甲供定额人工费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲供定额人工费', isTender);
-        };
-        rationCalcBases['甲供定额材料费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲供定额材料费', isTender);
-        };
-        rationCalcBases['甲供定额施工机具费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲供定额施工机具费', isTender);
-        };
-        rationCalcBases['甲供主材费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲供主材费', isTender, false);
-        };
-        rationCalcBases['甲定定额人工费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲定定额人工费', isTender);
-        };
-        rationCalcBases['甲定定额材料费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲定定额材料费', isTender);
-        };
-        rationCalcBases['甲定定额施工机具费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲定定额施工机具费', isTender);
-        };
-        rationCalcBases['甲定主材费'] = function (node, isTender) {
-            return calcTools.partASupplyFee(node, '甲定主材费', isTender, false);
-        };
-        rationCalcBases['暂估材料费'] = function (node, isTender) {
-            return calcTools.estimateFee(node, true, isTender);
-        };
-        rationCalcBases['分包定额人工费'] = function (node, isTender) {
-            if (node.data.isSubcontract)
-                return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender)
-            else
-                return 0;
-        };
-        rationCalcBases['分包定额材料费'] = function (node, isTender) {
-            if (node.data.isSubcontract)
-                return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender)
-            else
-                return 0;
-        };
-        rationCalcBases['分包定额机械费'] = function (node, isTender) {
-            if (node.data.isSubcontract)
-                return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender)
-            else
-                return 0;
-        };
-        rationCalcBases['分包主材费'] = function (node, isTender) {
-            if (node.data.isSubcontract)
-                return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender)
-            else
-                return 0;
-        };
-        rationCalcBases['分包设备费'] = function (node, isTender) {
-            if (node.data.isSubcontract)
-                return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender)
-            else
-                return 0;
-        };
-        rationCalcBases['分包人工工日'] = function (node, isTender) {
-            if (node.data.isSubcontract)
-                return calcTools.labourDays(node, isTender)
-            else
-                return 0;
-        };
-    };
-};
+      rationCalcBases["定额仪器仪表费"] = function (node, isTender) {
+        return calcTools.rationBaseFee(node, [gljType.INSTRUMENT], priceTypes.ptBasePrice, isTender);
+      };
+    }
+    rationCalcBases["建筑面积"] = function (node, isTender) {
+      return calcTools.getProjectFeatureProperty("buildingArea");
+    };
+    rationCalcBases["甲供定额人工费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲供定额人工费", isTender);
+    };
+    rationCalcBases["甲供定额材料费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲供定额材料费", isTender);
+    };
+    rationCalcBases["甲供定额施工机具费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲供定额施工机具费", isTender);
+    };
+    rationCalcBases["甲供主材费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲供主材费", isTender, false);
+    };
+    rationCalcBases["甲定定额人工费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲定定额人工费", isTender);
+    };
+    rationCalcBases["甲定定额材料费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲定定额材料费", isTender);
+    };
+    rationCalcBases["甲定定额施工机具费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲定定额施工机具费", isTender);
+    };
+    rationCalcBases["甲定主材费"] = function (node, isTender) {
+      return calcTools.partASupplyFee(node, "甲定主材费", isTender, false);
+    };
+    rationCalcBases["暂估材料费"] = function (node, isTender) {
+      return calcTools.estimateFee(node, true, isTender);
+    };
+    rationCalcBases["分包定额人工费"] = function (node, isTender) {
+      if (node.data.isSubcontract) return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
+      else return 0;
+    };
+    rationCalcBases["分包定额材料费"] = function (node, isTender) {
+      if (node.data.isSubcontract) return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
+      else return 0;
+    };
+    rationCalcBases["分包定额机械费"] = function (node, isTender) {
+      if (node.data.isSubcontract) return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
+      else return 0;
+    };
+    rationCalcBases["分包主材费"] = function (node, isTender) {
+      if (node.data.isSubcontract) return calcTools.rationBaseFee(node, [gljType.MAIN_MATERIAL], priceTypes.ptMarketPrice, isTender);
+      else return 0;
+    };
+    rationCalcBases["分包设备费"] = function (node, isTender) {
+      if (node.data.isSubcontract) return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
+      else return 0;
+    };
+    rationCalcBases["分包人工工日"] = function (node, isTender) {
+      if (node.data.isSubcontract) return calcTools.labourDays(node, isTender);
+      else return 0;
+    };
+  }
+}
 //code为标准接口所需,值是字典规定的
 (function overwriteFeeTypes() {
-    if (typeof cpFeeTypes == 'undefined') return;
-    cpFeeTypes = [
-        {type: 'rationUnitPrice', name: '定额综合单价', code: '1800'},
-        {type: 'labour', name: '人工费', code: '101'},
-        {type: 'material', name: '材料费', code: '201'},
-        {type: 'machine', name: '施工机具使用费', code: '301'},
-        {type: 'mainMaterial', name: '主材费', code: '501'},
-        {type: 'equipment', name: '设备费', code: '502'},
-        {type: 'manage', name: '企业管理费', code: '600'},
-        {type: 'profit', name: '利润', code: '700'},
-        {type: 'risk', name: '一般风险费', code: '1000'},
-        {type: 'labourDiff', name: '人工价差', code: '104'},
-        {type: 'materialDiff', name: '材料价差', code: '203'},
-        {type: 'machineDiff', name: '施工机具使用价差', code: '304'},
-        {type: 'otherRisk', name: '其他风险费', code: '1800'},
-        {type: 'unratedMaterial', name: '未计价材料费', code: '1800'},
-        {type: 'organizeMeasures', name: '组织措施费', code: '1200'},
-        {type: 'safeCivilization', name: '安全文明施工费', code: '1204'},
-        {type: 'document', name: '建设工程竣工档案编制费', code: '10041'},
-        {type: 'acceptance', name: '住宅工程质量分户验收费', code: '1206'},
-        {type: 'forceFee', name: '规费', code: '800'},
-        {type: 'tax', name: '税金', code: '900'},
-        {type: 'VAT', name: '增值税', code: '1800'},
-        {type: 'surtax', name: '附加税', code: '1800'},
-        {type: 'environmentTax', name: '环境保护税', code: '1800'},
-        {type: 'common', name: '工程造价', code: '1'}
-    ];
+  if (typeof cpFeeTypes == "undefined") return;
+  cpFeeTypes = [
+    { type: "rationUnitPrice", name: "定额综合单价", code: "1800" },
+    { type: "labour", name: "人工费", code: "101" },
+    { type: "material", name: "材料费", code: "201" },
+    { type: "machine", name: "施工机具使用费", code: "301" },
+    { type: "mainMaterial", name: "主材费", code: "501" },
+    { type: "equipment", name: "设备费", code: "502" },
+    { type: "manage", name: "企业管理费", code: "600" },
+    { type: "profit", name: "利润", code: "700" },
+    { type: "risk", name: "一般风险费", code: "1000" },
+    { type: "labourDiff", name: "人工价差", code: "104" },
+    { type: "materialDiff", name: "材料价差", code: "203" },
+    { type: "machineDiff", name: "施工机具使用价差", code: "304" },
+    { type: "otherRisk", name: "其他风险费", code: "1800" },
+    { type: "unratedMaterial", name: "未计价材料费", code: "1800" },
+    { type: "organizeMeasures", name: "组织措施费", code: "1200" },
+    { type: "safeCivilization", name: "安全文明施工费", code: "1204" },
+    { type: "document", name: "建设工程竣工档案编制费", code: "10041" },
+    { type: "acceptance", name: "住宅工程质量分户验收费", code: "1206" },
+    { type: "forceFee", name: "规费", code: "800" },
+    { type: "tax", name: "税金", code: "900" },
+    { type: "VAT", name: "增值税", code: "1800" },
+    { type: "surtax", name: "附加税", code: "1800" },
+    { type: "environmentTax", name: "环境保护税", code: "1800" },
+    { type: "common", name: "工程造价", code: "1" },
+  ];
 })();
 
+//清单计算基数相关
+if (typeof baseFigureMap !== "undefined") {
+  baseFigureMap = {
+    //与清单直接关联=======
+    分部分项工程费: { base: "FBFXGCF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "FBFX" },
+    分部分项定额人工费: { base: "FBFXDEJJRGF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "FBFX" },
+    分部分项定额材料费: { base: "FBFXDEJJCLF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "FBFX" },
+    分部分项定额施工机具使用费: { base: "FBFXDEJJJXF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "FBFX" },
+    分部分项主材费: { base: "FBFXZCF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "FBFX" },
+    分部分项人工工日: { base: "FBFXRGGR", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "FBFX" },
+    "分部分项定额人工费(人工土石方)": { base: "FBFXRGTSFDERGF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "NONE" },
+    "分部分项定额人工费(机械爆破土石方)": { base: "FBFXJXBPTSFDERGF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "NONE" },
+    "分部分项定额施工机具使用费(人工土石方)": { base: "FBFXDESGJJSYFRGTSF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "NONE" },
+    "分部分项定额施工机具使用费(机械爆破土石方)": { base: "FBFXJXBPTSFDEJXF", fixedFlag: fixedFlag.SUB_ENGINERRING, class: "NONE" },
+    措施项目费: { base: "CSXMF", fixedFlag: fixedFlag.MEASURE, class: "CSXM" },
+    组织措施项目费: { base: "ZZCSXMF", fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: "CSXM" },
+    组织措施项目定额人工费: { base: "ZZCSXMDEJJRGF", fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: "CSXM" },
+    组织措施项目定额材料费: { base: "ZZCSXMDEJJCLF", fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: "CSXM" },
+    组织措施项目定额施工机具使用费: { base: "ZZCSXMDEJJJXF", fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: "CSXM" },
+    安全文明施工专项费: { base: "AQWMSGZXF", fixedFlag: fixedFlag.SAFETY_CONSTRUCTION, class: "CSXM" },
+    技术措施项目费: { base: "JSCSXMF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "CSXM" },
+    技术措施项目定额人工费: { base: "JSCSXMDEJJRGF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "CSXM" },
+    技术措施项目定额材料费: { base: "JSCSXMDEJJCLF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "CSXM" },
+    技术措施项目定额施工机具使用费: { base: "JSCSXMDEJJJXF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "CSXM" },
+    技术措施项目主材费: { base: "JSCSXMZCF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "CSXM" },
+    技术措施项目人工工日: { base: "JSCSXMRGGR", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "CSXM" },
+    "技术措施项目定额人工费(人工土石方)": { base: "JSCSXMRGTSFDERGF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "NONE" },
+    "技术措施项目定额人工费(机械爆破土石方)": { base: "JSCSXMJXBPTSFDERGF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "NONE" },
+    "技术措施项目定额施工机具使用费(人工土石方)": { base: "JSCSXMDESGJJSYFRGTSF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "NONE" },
+    "技术措施项目定额施工机具使用费(机械爆破土石方)": { base: "JSCSXMJXBPTSFDEJXF", fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: "NONE" },
+    其他项目费: { base: "QTXMF", fixedFlag: fixedFlag.OTHER, class: "QTXM" },
+    "定额人工费(土石方除外)": { base: "DERGFTSFCW", fixedFlag: null, class: "ALL" },
+    "定额人工费(机械爆破土石方)": { base: "DERGFJXBPTSF", fixedFlag: null, class: "ALL" },
+    "定额人工费(人工土石方)": { base: "DERGFRGTSF", fixedFlag: null, class: "ALL" },
+    "定额施工机具使用费(土石方除外)": { base: "DESGJJSYFTSFCW", fixedFlag: null, class: "ALL" },
+    "定额施工机具使用费(机械爆破土石方)": { base: "DESGJJSYFJXBPTSF", fixedFlag: null, class: "ALL" },
 
+    "专业工程规费(人+机)": { base: "ZYGCGFRJJ", fixedFlag: null, class: "ALL" },
+    "机械(爆破)土石方规费(人)": { base: "JXBPTSFGFR", fixedFlag: null, class: "ALL" },
+    "人工土石方规费(人)": { base: "RGTSFGFR", fixedFlag: null, class: "ALL" },
+    "机械(爆破)土石方规费(人+机)": { base: "JXBPTSFGFRJJ", fixedFlag: null, class: "ALL" },
+    "人工土石方规费(人+机)": { base: "RGTSFGFRJJ", fixedFlag: null, class: "ALL" },
+    "专业工程规费(人)": { base: "ZYGCGFR", fixedFlag: null, class: "ALL" },
 
-//清单计算基数相关
-if(typeof baseFigureMap !== 'undefined'){
-    baseFigureMap = {
-        //与清单直接关联=======
-        '分部分项工程费': {base: 'FBFXGCF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
-        '分部分项定额人工费': {base: 'FBFXDEJJRGF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
-        '分部分项定额材料费': {base: 'FBFXDEJJCLF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
-        '分部分项定额施工机具使用费': {base: 'FBFXDEJJJXF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
-        '分部分项主材费': {base: 'FBFXZCF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
-        '分部分项人工工日': {base: 'FBFXRGGR', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
-        '分部分项定额人工费(人工土石方)': {base: 'FBFXRGTSFDERGF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'NONE'},
-        '分部分项定额人工费(机械爆破土石方)': {base: 'FBFXJXBPTSFDERGF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'NONE'},
-        '分部分项定额施工机具使用费(人工土石方)': {base: 'FBFXDESGJJSYFRGTSF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'NONE'},
-        '分部分项定额施工机具使用费(机械爆破土石方)': {base: 'FBFXJXBPTSFDEJXF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'NONE'},
-        '措施项目费': {base: 'CSXMF', fixedFlag: fixedFlag.MEASURE, class: 'CSXM'},
-        '组织措施项目费': {base: 'ZZCSXMF', fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: 'CSXM'},
-        '组织措施项目定额人工费': {base: 'ZZCSXMDEJJRGF', fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: 'CSXM'},
-        '组织措施项目定额材料费': {base: 'ZZCSXMDEJJCLF', fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: 'CSXM'},
-        '组织措施项目定额施工机具使用费': {base: 'ZZCSXMDEJJJXF', fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: 'CSXM'},
-        '安全文明施工专项费': {base: 'AQWMSGZXF', fixedFlag: fixedFlag.SAFETY_CONSTRUCTION, class: 'CSXM'},
-        '技术措施项目费': {base: 'JSCSXMF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
-        '技术措施项目定额人工费': {base: 'JSCSXMDEJJRGF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
-        '技术措施项目定额材料费': {base: 'JSCSXMDEJJCLF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
-        '技术措施项目定额施工机具使用费': {base: 'JSCSXMDEJJJXF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
-        '技术措施项目主材费': {base: 'JSCSXMZCF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
-        '技术措施项目人工工日': {base: 'JSCSXMRGGR', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
-        '技术措施项目定额人工费(人工土石方)': {base: 'JSCSXMRGTSFDERGF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'NONE'},
-        '技术措施项目定额人工费(机械爆破土石方)': {base: 'JSCSXMJXBPTSFDERGF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'NONE'},
-        '技术措施项目定额施工机具使用费(人工土石方)': {base: 'JSCSXMDESGJJSYFRGTSF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'NONE'},
-        '技术措施项目定额施工机具使用费(机械爆破土石方)': {base: 'JSCSXMJXBPTSFDEJXF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'NONE'},
-        '其他项目费': {base: 'QTXMF',  fixedFlag: fixedFlag.OTHER, class: 'QTXM'},
-        '定额人工费(土石方除外)': {base: 'DERGFTSFCW',  fixedFlag: null, class: 'ALL'},
-        '定额人工费(机械爆破土石方)': {base: 'DERGFJXBPTSF',  fixedFlag: null, class: 'ALL'},
-        '定额人工费(人工土石方)': {base: 'DERGFRGTSF',  fixedFlag: null, class: 'ALL'},
-        '定额施工机具使用费(土石方除外)': {base: 'DESGJJSYFTSFCW',  fixedFlag: null, class: 'ALL'},
-        '定额施工机具使用费(机械爆破土石方)': {base: 'DESGJJSYFJXBPTSF',  fixedFlag: null, class: 'ALL'},
-        '规费': {base: 'GF', fixedFlag: fixedFlag.CHARGE, class: 'GF'},
-        '税金': {base: 'SJ', fixedFlag: fixedFlag.TAX, class: 'SJ'},
-        '增值税': {base: 'ZZS', class: 'SJ', fixedFlag: fixedFlag.ADDED_VALUE_TAX},
-        //不于清单直接关联==========
-        '费率': { base: 'FR', class: 'NONE' },
-        '建筑面积': {base: 'JZMJ', class: 'FBFX'},
-        '人材机价差': {base: 'RCJJC', class: 'RCJ'},
-        '人工价差': {base: 'RGJC', class: 'RCJ'},
-        '材料价差': {base: 'CLJC', class: 'RCJ'},
-        '施工机具使用费价差': {base: 'JXJC', class: 'RCJ'},
-        '分部分项人材机价差': {base: 'FBFXRCJJC', class: 'RCJ'},
-        '分部分项人工价差': {base: 'FBFXRGJC', class: 'RCJ'},
-        '分部分项材料价差': {base: 'FBFXCLJC', class: 'RCJ'},
-        '分部分项施工机具使用费价差': {base: 'FBFXJXJC', class: 'RCJ'},
-        '技术措施项目人材机价差': {base: 'JSCSXMRCJJC', class: 'RCJ'},
-        '技术措施项目人工价差': {base: 'JSCSXMRGJC', class: 'RCJ'},
-        '技术措施项目材料价差': {base: 'JSCSXMCLJC', class: 'RCJ'},
-        '技术措施项目施工机具使用费价差': {base: 'JSCSXMJXJC', class: 'RCJ'},
-        '甲供定额人工费': {base: 'JGDEJJRGF', class: 'RCJ'},
-        '甲供定额材料费': {base: 'JGDEJJCLF', class: 'RCJ'},
-        '甲供定额施工机具使用费': {base: 'JGDEJJJXF', class: 'RCJ'},
-        '甲供人工费': {base: 'JGRGF', class: 'RCJ'},
-        '甲供材料费': {base: 'JGCLF', class: 'RCJ'},
-        '甲供施工机具使用费': {base: 'JGJXF', class: 'RCJ'},
-        '甲供主材费': {base: 'JGZCF', class: 'RCJ'},
-        '甲定定额人工费': {base: 'JDDEJJRGF', class: 'RCJ'},
-        '甲定定额材料费': {base: 'JDDEJJCLF', class: 'RCJ'},
-        '甲定定额施工机具使用费': {base: 'JDDEJJJXF', class: 'RCJ'},
-        '甲定人工费': {base: 'JDRGF', class: 'RCJ'},
-        '甲定材料费': {base: 'JDCLF', class: 'RCJ'},
-        '甲定施工机具使用费': {base: 'JDJXF', class: 'RCJ'},
-        '甲定主材费': {base: 'JDZCF', class: 'RCJ'},
-        '暂估材料费(从子目汇总)': {base: 'ZGCLFFZM', class: 'RCJ'},
-        '分包费': {base: 'FBF', class: 'FBF'},
-        '分包定额人工费': {base: 'FBDEJJRGF', class: 'FBF'},
-        '分包定额材料费': {base: 'FBDEJJCLF', class: 'FBF'},
-        '分包定额机械费': {base: 'FBDEJJJXF', class: 'FBF'},
-        '分包主材费': {base: 'FBZCF', class: 'FBF'},
-        '分包设备费': {base: 'FBSBF', class: 'FBF'},
-        '分包人工工日': {base: 'FBRGGR', class: 'FBF'},
-        '税前工程造价': {base: 'SQGCZJ', class: 'SQGCZJ',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   //循环计算相关固定行,由于计算排除了本身,不用判断措施项目
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]},//相关固定行
-    };
+    规费: { base: "GF", fixedFlag: fixedFlag.CHARGE, class: "GF" },
+    税金: { base: "SJ", fixedFlag: fixedFlag.TAX, class: "SJ" },
+    增值税: { base: "ZZS", class: "SJ", fixedFlag: fixedFlag.ADDED_VALUE_TAX },
+    //不于清单直接关联==========
+    费率: { base: "FR", class: "NONE" },
+    建筑面积: { base: "JZMJ", class: "FBFX" },
+    人材机价差: { base: "RCJJC", class: "RCJ" },
+    人工价差: { base: "RGJC", class: "RCJ" },
+    材料价差: { base: "CLJC", class: "RCJ" },
+    施工机具使用费价差: { base: "JXJC", class: "RCJ" },
+    分部分项人材机价差: { base: "FBFXRCJJC", class: "RCJ" },
+    分部分项人工价差: { base: "FBFXRGJC", class: "RCJ" },
+    分部分项材料价差: { base: "FBFXCLJC", class: "RCJ" },
+    分部分项施工机具使用费价差: { base: "FBFXJXJC", class: "RCJ" },
+    技术措施项目人材机价差: { base: "JSCSXMRCJJC", class: "RCJ" },
+    技术措施项目人工价差: { base: "JSCSXMRGJC", class: "RCJ" },
+    技术措施项目材料价差: { base: "JSCSXMCLJC", class: "RCJ" },
+    技术措施项目施工机具使用费价差: { base: "JSCSXMJXJC", class: "RCJ" },
+    甲供定额人工费: { base: "JGDEJJRGF", class: "RCJ" },
+    甲供定额材料费: { base: "JGDEJJCLF", class: "RCJ" },
+    甲供定额施工机具使用费: { base: "JGDEJJJXF", class: "RCJ" },
+    甲供人工费: { base: "JGRGF", class: "RCJ" },
+    甲供材料费: { base: "JGCLF", class: "RCJ" },
+    甲供施工机具使用费: { base: "JGJXF", class: "RCJ" },
+    甲供主材费: { base: "JGZCF", class: "RCJ" },
+    甲定定额人工费: { base: "JDDEJJRGF", class: "RCJ" },
+    甲定定额材料费: { base: "JDDEJJCLF", class: "RCJ" },
+    甲定定额施工机具使用费: { base: "JDDEJJJXF", class: "RCJ" },
+    甲定人工费: { base: "JDRGF", class: "RCJ" },
+    甲定材料费: { base: "JDCLF", class: "RCJ" },
+    甲定施工机具使用费: { base: "JDJXF", class: "RCJ" },
+    甲定主材费: { base: "JDZCF", class: "RCJ" },
+    "暂估材料费(从子目汇总)": { base: "ZGCLFFZM", class: "RCJ" },
+    分包费: { base: "FBF", class: "FBF" },
+    分包定额人工费: { base: "FBDEJJRGF", class: "FBF" },
+    分包定额材料费: { base: "FBDEJJCLF", class: "FBF" },
+    分包定额机械费: { base: "FBDEJJJXF", class: "FBF" },
+    分包主材费: { base: "FBZCF", class: "FBF" },
+    分包设备费: { base: "FBSBF", class: "FBF" },
+    分包人工工日: { base: "FBRGGR", class: "FBF" },
+    税前工程造价: {
+      base: "SQGCZJ",
+      class: "SQGCZJ",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], //循环计算相关固定行,由于计算排除了本身,不用判断措施项目
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    }, //相关固定行
+  };
 }
 
 function dynamicLoadCalcBase() {
-    // 兼容旧数据,旧单位工程可能不存在累进区间
-    if (projectObj && projectObj.project.property.progressiveInterval) {
-        baseFigureMap['市政道路工程安全文明施工费'] = {
-            base: 'SZDLGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-        baseFigureMap['市政桥梁工程安全文明施工费'] = {
-            base: 'SZQLGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-        baseFigureMap['市政隧道工程安全文明施工费'] = {
-            base: 'SZSDGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-        baseFigureMap['城轨盾构工程安全文明施工费'] = {
-            base: 'CGDGGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-        baseFigureMap['城轨高架桥工程安全文明施工费'] = {
-            base: 'CGGJQGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-        baseFigureMap['城轨地下工程安全文明施工费'] = {
-            base: 'CGDXGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-        baseFigureMap['城轨轨道工程安全文明施工费'] = {
-            base: 'CGGDGCAQWMSGF', class: 'CSXM',
-            cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE],   // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
-            multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE]
-        };
-    }
+  // 兼容旧数据,旧单位工程可能不存在累进区间
+  if (projectObj && projectObj.project.property.progressiveInterval) {
+    baseFigureMap["市政道路工程安全文明施工费"] = {
+      base: "SZDLGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+    baseFigureMap["市政桥梁工程安全文明施工费"] = {
+      base: "SZQLGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+    baseFigureMap["市政隧道工程安全文明施工费"] = {
+      base: "SZSDGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+    baseFigureMap["城轨盾构工程安全文明施工费"] = {
+      base: "CGDGGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+    baseFigureMap["城轨高架桥工程安全文明施工费"] = {
+      base: "CGGJQGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+    baseFigureMap["城轨地下工程安全文明施工费"] = {
+      base: "CGDXGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+    baseFigureMap["城轨轨道工程安全文明施工费"] = {
+      base: "CGGDGCAQWMSGF",
+      class: "CSXM",
+      cycleCalcRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.OTHER, fixedFlag.CHARGE], // 以税前工程造价作为累进基数,因此配置沿用{税前工程造价}
+      multiRef: [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE, fixedFlag.OTHER, fixedFlag.CHARGE],
+    };
+  }
 }
 
-if(typeof baseFigureTemplate !== 'undefined'){
-    baseFigureTemplate['ZZS'] =  function (tender) {//增值税
-        let feeField = 'common',
-            subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
-        return cbTools.getBillsFee(fixedFlag.ADDED_VALUE_TAX, feeField, subFeeField);
-    };
+if (typeof baseFigureTemplate !== "undefined") {
+  baseFigureTemplate["ZZS"] = function (tender) {
+    //增值税
+    let feeField = "common",
+      subFeeField = tender ? "tenderTotalFee" : "totalFee";
+    return cbTools.getBillsFee(fixedFlag.ADDED_VALUE_TAX, feeField, subFeeField);
+  };
+}
+if (typeof figureClassTemplate !== "undefined") {
+  figureClassTemplate["ADDED_VALUE_TAX"] = { flag: fixedFlag.ADDED_VALUE_TAX, filter: ["SJ", "ZZS", "SQGCZJ"] };
 }
-if(typeof figureClassTemplate !== 'undefined'){
-    figureClassTemplate['ADDED_VALUE_TAX'] = {flag: fixedFlag.ADDED_VALUE_TAX, filter: ['SJ', 'ZZS', 'SQGCZJ']}
-};
 
-if(typeof gljCol !== 'undefined'){
+if (typeof gljCol !== "undefined") {
   gljCol.hideInfoPrice = false;
-};
+}
 
 //这个文档浏览器库和服务器端共用,所以这个文件中用到的变量都要记得做undefined判断,不然后端读取时会有问题
 //=================================================== 前后端分割线 ======================================================================
-if(typeof module !== 'undefined'){
-    module.exports = {
-        getCusCoeContent: getCusCoeContent,
-        getCustomerCoeData: getCustomerCoeData
-    };
+if (typeof module !== "undefined") {
+  module.exports = {
+    getCusCoeContent: getCusCoeContent,
+    getCustomerCoeData: getCustomerCoeData,
+  };
 }
 
 function getCusCoeContent() {
-    return '人工×1,材料×1,施工机具×1,主材×1,设备×1';//2019-07-08 bug 添加自定义系数添加设备
+  return "人工×1,材料×1,施工机具×1,主材×1,设备×1"; //2019-07-08 bug 添加自定义系数添加设备
 }
 
 function getCustomerCoeData() {
-    return [
-        {amount:1, operator:'*', gljCode:null, coeType:'定额'},
-        { amount:1, operator:'*', gljCode:null, coeType:'人工'},
-        { amount:1, operator:'*', gljCode:null, coeType:'材料'},
-        { amount:1, operator:'*', gljCode:null, coeType:'施工机具'},
-        { amount:1, operator:'*', gljCode:null, coeType:'主材'},
-        { amount:1, operator:'*', gljCode:null, coeType:'设备'}
-    ]
+  return [
+    { amount: 1, operator: "*", gljCode: null, coeType: "定额" },
+    { amount: 1, operator: "*", gljCode: null, coeType: "人工" },
+    { amount: 1, operator: "*", gljCode: null, coeType: "材料" },
+    { amount: 1, operator: "*", gljCode: null, coeType: "施工机具" },
+    { amount: 1, operator: "*", gljCode: null, coeType: "主材" },
+    { amount: 1, operator: "*", gljCode: null, coeType: "设备" },
+  ];
 }
 
-if(typeof gljCol !== 'undefined'){
-    gljCol.showPurchaseFeeRate = true;
-}
+if (typeof gljCol !== "undefined") {
+  gljCol.showPurchaseFeeRate = true;
+}

+ 50 - 10
web/over_write/js/chongqing_2018_export.js

@@ -1317,8 +1317,8 @@ const XMLStandard = (function () {
             let bills = new FXbills(source);
             //清单项目项目编码要在建设项目中唯一
             _util.checkUnique(curProjectEle.constraints.billsCode, source.code, `第${source.row}行`,`清单项目编码${source.code}`);
-            //加载特征及内容
-            function loadFeatureContent() {
+            //加载特征及内容 --- 进接用项目特征及内容可编辑的字符串拆分版本, 导出后格式检查不通过
+            function loadFeatureContentV1() {
                 let job = [],
                     feature = [];
                 let jobText = node.data.jobContentText || '';
@@ -1363,7 +1363,7 @@ const XMLStandard = (function () {
                         let source = {name: '', value: ''};
                         let execRst = reg.exec(f);
                         if (execRst) {
-                            source.name = execRst[1].replace(/^\d+\.{1}/, '').trim();  //去除开头(1.)序号,首位空格
+                            source.name = execRst[1].trim();  //去除开头(1.)序号,首位空格  -- 20220509 需要开头的数据的(1.)序号  execRst[1].replace(/^\d+\.{1}/, '').trim();
                             source.value = execRst[2].trim();
                         }
                         let featureEle = new Feature(source);
@@ -1376,7 +1376,7 @@ const XMLStandard = (function () {
                 if (job.length > 0) {
                     let jobContent = new JobContent();
                     for (let j of job) {
-                        let data = j.replace(/^\d+\.{1}/, '').trim();
+                        let data = j.trim(); //j.replace(/^\d+\.{1}/, '').trim() -- 20220509 需要开头的数据的(1.)序号
                         let content = new Content(data);
                         //let content = new Content(j.trim());
                         jobContent.children.push(content);
@@ -1384,6 +1384,37 @@ const XMLStandard = (function () {
                     bills.children.push(jobContent);
                 }
             }
+
+            function loadFeatureContent(){
+                let itemCharacter =  node.data.itemCharacter || [];
+                let jobContentArr = node.data.jobContent || [];
+                let itemChac = new ItemCharacter();
+                for (let f of itemCharacter) {
+                    if(f.isChecked === true){
+                        let cValue = '';
+                        for(let ei of f.eigenvalue){
+                            if(ei.isSelected === true) {
+                                cValue += ei.value ;
+                                break
+                            }
+                        }
+                        let source = {name: f.character, value: cValue};
+                        let featureEle = new Feature(source);
+                        itemChac.children.push(featureEle);
+                    }           
+                }
+                if(itemChac.children.length > 0) bills.children.push(itemChac);
+                
+                let jobContent = new JobContent();
+                for (let job of jobContentArr) {
+                    if(job.isChecked === true){
+                        let content = new Content(job.content);
+                        jobContent.children.push(content);
+                    }
+                }
+               if(jobContent.children.length > 0) bills.children.push(jobContent);
+
+            }
             loadFeatureContent();
             //解析工程量计算式
             function parseQuantityExp(rationData) {
@@ -2197,17 +2228,26 @@ const XMLStandard = (function () {
             let idx = 0;
             // 从建设项目元素中筛选出单项工程元素
             let engs = _util.getElementFromSrc(obj.data, '单项工程');
-            engs.forEach(eng => {
-                // 从属性中找到编号项
-                let codeItem = eng.attrs.find(attr => attr.name === '编号');
-                codeItem.value = codes[idx++];
+            if (engs.length) {
+                engs.forEach(eng => {
+                    // 从属性中找到编号项
+                    let codeItem = eng.attrs.find(attr => attr.name === '编号');
+                    codeItem.value = codes[idx++];
+                    // 从单项工程元素中筛选出单位工程元素
+                    let tenders = _util.getElementFromSrc(eng, '单位工程');
+                    tenders.forEach(tender => {
+                        let codeItem = tender.attrs.find(attr => attr.name === '编号');
+                        codeItem.value = codes[idx++];
+                    });
+                });
+            } else {
                 // 从单项工程元素中筛选出单位工程元素
-                let tenders = _util.getElementFromSrc(eng, '单位工程');
+                let tenders = _util.getElementFromSrc(obj.data, '单位工程');
                 tenders.forEach(tender => {
                     let codeItem = tender.attrs.find(attr => attr.name === '编号');
                     codeItem.value = codes[idx++];
                 });
-            });
+            }
         });
     }
 

+ 3 - 3
web/over_write/js/chongqing_2018_import.js

@@ -275,7 +275,7 @@ const importXML = (() => {
     function extractBills(billsSrc, type) {
         let { features, contents } = getFeaturesAndContents(billsSrc);
         // 特征及内容窗口
-        //let { itemCharacter, jobContent } = featureAndContent(features, contents);
+        let { itemCharacter, jobContent } = featureAndContent(features, contents);
         let obj = {
             type: type, //清单类型
             code: getValue(billsSrc, ['_项目编码']),
@@ -286,8 +286,8 @@ const importXML = (() => {
             quantity: getValue(billsSrc, ['_工程量']) || '0',
             remark: getValue(billsSrc, ['_备注']),
             itemCharacterText: featureAndContentText(features, contents),
-            /* itemCharacter: itemCharacter, // 不导入到清单下方的特征及内容窗口
-            jobContent: jobContent */
+            itemCharacter: itemCharacter, // 不导入到清单下方的特征及内容窗口
+            jobContent: jobContent
         };
         //投标和控制价,需要导入最高限价
         if ([FileKind.tender, FileKind.control].includes(importFileKind)) {

Dosya farkı çok büyük olduğundan ihmal edildi
+ 5 - 2
web/users/html/index.html


Dosya farkı çok büyük olduğundan ihmal edildi
+ 3 - 4
web/users/html/login.html