zhongzewei 6 年之前
父節點
當前提交
78d3b41f37

+ 5 - 5
modules/main/controllers/bills_controller.js

@@ -89,16 +89,16 @@ module.exports = {
                 delete updateData[index];
             }
         }
-        // 更新项目属性
+       /* // 更新项目属性
         const propertyUpdateData = {
             property: 'addRule',
             data: settingData
-        };
-        const projectResult = await ProjectsData.updateProjectProperty(findSet.projectID, propertyUpdateData);
+        };*/
+        //const projectResult = await ProjectsData.updateProjectProperty(findSet.projectID, propertyUpdateData);
 
         const result = await billsData.updateBill(findSet, updateData);
-        const message = !result || !projectResult ? '修改失败' : '修改成功';
-        const err = !result || !projectResult ? 1 : 0;
+        const message = !result ? '修改失败' : '修改成功';
+        const err = !result ? 1 : 0;
         callback(request, response, err, message, null);
     },
     singleDelete:async function(req, res){

+ 1 - 1
web/building_saas/complementary_glj_lib/html/tools-gongliaoji.html

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>人材机库编辑-Smartcost</title>
+    <title>人材机库编辑-纵横云计价</title>
     <!--inject:css-->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css" type="text/css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css" type="text/css">

+ 1 - 1
web/building_saas/complementary_ration_lib/html/anzhuang.html

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>定额库编辑器-Smartcost</title>
+    <title>定额库编辑器-纵横云计价</title>
     <!--inject:css-->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
     <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.sc.css" type="text/css">

+ 3 - 3
web/building_saas/complementary_ration_lib/html/dinge.html

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>定额库编辑器-Smartcost</title>
+    <title>定额库编辑器-纵横云计价</title>
     <!--inject:css-->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css" type="text/css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css" type="text/css">
@@ -119,7 +119,7 @@
                             <div class="main-data">
                                 <div class="main-content m-2">
                                     <h5>说明</h5>
-                                    <textarea id="explanationShow" class="form-control" disabled="disabled" rows="35" style="background: white;"></textarea>
+                                    <textarea id="explanationShow" class="form-control" disabled="disabled" style="background: white;"></textarea>
                                 </div>
                             </div>
                         </div>
@@ -128,7 +128,7 @@
                             <div class="main-data">
                                 <div class="main-content m-2">
                                     <h5>计算规则</h5>
-                                    <textarea id="ruleTextShow" class="form-control" disabled="disabled"  rows="35" style="background: white;"></textarea>
+                                    <textarea id="ruleTextShow" class="form-control" disabled="disabled" style="background: white;"></textarea>
                                 </div>
                             </div>
                         </div>

+ 1 - 1
web/building_saas/complementary_ration_lib/html/fuzhu.html

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>定额库编辑器-Smartcost</title>
+    <title>定额库编辑器-纵横云计价</title>
     <!--inject:css-->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css">

+ 1 - 1
web/building_saas/complementary_ration_lib/html/gongliao.html

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>定额库编辑器-Smartcost</title>
+    <title>定额库编辑器-纵横云计价</title>
     <!--inject:css-->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css">

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

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>定额库编辑器-Smartcost</title>
+    <title>定额库编辑器-纵横云计价</title>
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
    <!-- <link rel="stylesheet" href="css/bootstrap/themes.css">-->
     <link rel="stylesheet" href="/web/building_saas/css/main.css">

+ 2 - 0
web/building_saas/complementary_ration_lib/js/global.js

@@ -13,6 +13,8 @@ function autoFlashHeight(){
     $(".main-data-top-fluid").height($(window).height()-headerHeight-bottomContentHeight-2);
     $(".main-data").height($(window).height()-headerHeight);
     $(".main-side .tab-content").height($(window).height()-headerHeight-38);
+    $("#explanationShow").height($(window).height()-headerHeight-toolsBar-100);
+    $("#ruleTextShow").height($(window).height()-headerHeight-toolsBar-100);
 };
 $(window).resize(autoFlashHeight);
 /*全局自适应高度结束*/

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

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title><%= projectData.name !== undefined ? projectData.name : '造价书' %>-纵横云价</title>
+    <title><%= projectData.name !== undefined ? projectData.name : '造价书' %>-纵横云价</title>
     <!-- inject:css -->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css">

+ 3 - 0
web/building_saas/main/js/models/bills.js

@@ -770,6 +770,9 @@ var Bills = {
                 }
                 controller.m_delete(mainNodes);//删除树节点
                 me.tree.m_delete(idTreeNodes);
+                //test
+                addRuleUseToBills(getAddRuleSetting(), )
+                //test
                 $.bootstrapLoading.end();
                 //重新计算
                 project.installation_fee.calcInstallationFee(function (isChange) {

+ 83 - 0
web/building_saas/main/js/models/calc_base.js

@@ -136,8 +136,13 @@ let cbTools = {
         mapObj['OTHERS'] = Object.create(null);
         mapObj['ENGINEERINGCOST'] = Object.create(null);
         let filter = ['CSXMF', 'ZZCSXMF', 'ZZCSXMDEJJZJGCF', 'ZZCSXMDEJJRGF', 'ZZCSXMDEJJCLF', 'ZZCSXMDEJJJXF', 'QTXMF', 'GF', 'SJ', 'SQGCZJ', 'AQWMSGZXF'];
+        let needFixedBillsClass = ['FBFX', 'CXSM', 'QTXM', 'GF', 'SJ'];
         //安全文明施工专项费用只有税金和工程造价能用
         for(let figure in baseFigures){
+            //过滤相关清单固定行不存在的
+            if(needFixedBillsClass.includes(baseFigures[figure]['class']) && !baseFigures[figure]['fixedBill']){
+                continue;
+            }
             if(filter.indexOf(baseFigures[figure]['base']) === -1){
                 mapObj['CONSTRUCTION_ORGANIZATION'][figure] = baseFigures[figure];
             }
@@ -344,6 +349,9 @@ let cbTools = {
 
 let baseFigureTemplate = {
     'FBFXGCF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -351,6 +359,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
     },
     'FBFXDEJJRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -358,6 +369,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.labour) && cbTools.isDef(bill.feesIndex.labour[totalFeeType]) ? bill.feesIndex.labour[totalFeeType] : 0;
     },
     'FBFXDEJJCLF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -365,6 +379,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.material) && cbTools.isDef(bill.feesIndex.material[totalFeeType]) ? bill.feesIndex.material[totalFeeType] : 0;
     },
     'FBFXDEJJJXF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -372,6 +389,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.machine) && cbTools.isDef(bill.feesIndex.machine[totalFeeType]) ? bill.feesIndex.machine[totalFeeType] : 0;
     },
     'FBFXTZRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -379,6 +399,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.adjustLabour) && cbTools.isDef(bill.feesIndex.adjustLabour[totalFeeType]) ? bill.feesIndex.adjustLabour[totalFeeType] : 0;
     },
     'FBFXTZJSRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -386,6 +409,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.adjustMachineLabour) && cbTools.isDef(bill.feesIndex.adjustMachineLabour[totalFeeType]) ? bill.feesIndex.adjustMachineLabour[totalFeeType] : 0;
     },
     'FBFXZCF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -393,6 +419,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.mainMaterial) && cbTools.isDef(bill.feesIndex.mainMaterial[totalFeeType]) ? bill.feesIndex.mainMaterial[totalFeeType] : 0;
     },
     'FBFXSBF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SUB_ENGINERRING]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -420,6 +449,9 @@ let baseFigureTemplate = {
         return (this['FBFXDEJJRGF'](tender) + this['FBFXDEJJCLF'](tender) + this['FBFXDEJJJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
     },
     'CSXMF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.MEASURE])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.MEASURE]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -427,6 +459,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
     },
     'ZZCSXMF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -437,6 +472,9 @@ let baseFigureTemplate = {
         return (this['ZZCSXMDEJJRGF'](tender) + this['ZZCSXMDEJJCLF'](tender) + this['ZZCSXMDEJJJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
     },
     'ZZCSXMDEJJRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -444,6 +482,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.labour) && cbTools.isDef(bill.feesIndex.labour[totalFeeType]) ? bill.feesIndex.labour[totalFeeType] : 0;
     },
     'ZZCSXMDEJJCLF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -451,6 +492,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.material) && cbTools.isDef(bill.feesIndex.material[totalFeeType]) ? bill.feesIndex.material[totalFeeType] : 0;
     },
     'ZZCSXMDEJJJXF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_ORGANIZATION]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -458,6 +502,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.machine) && cbTools.isDef(bill.feesIndex.machine[totalFeeType]) ? bill.feesIndex.machine[totalFeeType] : 0;
     },
     'JSCSXMF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -465,6 +512,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
     },
     'JSCSXMDEJJRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -472,6 +522,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.labour) && cbTools.isDef(bill.feesIndex.labour[totalFeeType]) ? bill.feesIndex.labour[totalFeeType] : 0;
     },
     'JSCSXMDEJJCLF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -479,6 +532,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.material) && cbTools.isDef(bill.feesIndex.material[totalFeeType]) ? bill.feesIndex.material[totalFeeType] : 0;
     },
     'JSCSXMDEJJJXF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -486,6 +542,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.machine) && cbTools.isDef(bill.feesIndex.machine[totalFeeType]) ? bill.feesIndex.machine[totalFeeType] : 0;
     },
     'JSCSXMTZRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -493,6 +552,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.adjustLabour) && cbTools.isDef(bill.feesIndex.adjustLabour[totalFeeType]) ? bill.feesIndex.adjustLabour[totalFeeType] : 0;
     },
     'JSCSXMTZJSRGF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -500,6 +562,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.adjustMachineLabour) && cbTools.isDef(bill.feesIndex.adjustMachineLabour[totalFeeType]) ? bill.feesIndex.adjustMachineLabour[totalFeeType] : 0;
     },
     'JSCSXMZCF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -507,6 +572,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.mainMaterial) && cbTools.isDef(bill.feesIndex.mainMaterial[totalFeeType]) ? bill.feesIndex.mainMaterial[totalFeeType] : 0;
     },
     'JSCSXMSBF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CONSTRUCTION_TECH]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -533,6 +601,9 @@ let baseFigureTemplate = {
         return (this['JSCSXMDEJJRGF'](tender) + this['JSCSXMDEJJCLF'](tender) + this['JSCSXMDEJJJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
     },
     'QTXMF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.OTHER])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.OTHER]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -540,6 +611,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
     },
     'GF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.CHARGE])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.CHARGE]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -547,6 +621,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
     },
     'SJ': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.TAX])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.TAX]['bill'];
         if(cbTools.isUnDef(bill)) return 0;
@@ -554,6 +631,9 @@ let baseFigureTemplate = {
         return cbTools.isDef(bill.feesIndex.common) && cbTools.isDef(bill.feesIndex.common[totalFeeType]) ? bill.feesIndex.common[totalFeeType] : 0;
     },
     'AQWMSGZXF': function (tender) {
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SAFETY_CONSTRUCTION])){
+            return 0;
+        }
         const totalFeeType = tender ? 'tenderTotalFee' : 'totalFee';
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SAFETY_CONSTRUCTION]['bill'];
         if(cbTools.isUnDef(bill) || cbTools.isUnDef(bill.ID)) return 0;
@@ -565,6 +645,9 @@ let baseFigureTemplate = {
         return buildingArea ? parseFloat(buildingArea) : 0;
     },
     'SQGCZJ': function (tender) {//税前工程造价
+        if(cbTools.isUnDef(calcBase.fixedBills[calcBase.fixedFlag.SAFETY_CONSTRUCTION])){
+            return 0;
+        }
         let bill = calcBase.fixedBills[calcBase.fixedFlag.SAFETY_CONSTRUCTION]['bill'];
         if(cbTools.isUnDef(bill) || cbTools.isUnDef(bill.ID)) return 0;
         let node = cbTools.getNodeByID(bill.ID);

+ 5 - 0
web/building_saas/main/js/models/ration.js

@@ -338,6 +338,7 @@ var Ration = {
             } else {
                 data[field] = newValue;
             }
+            updateBillsOprRation();
             updateData.push({'updateType': 'ut_update', 'updateData': data});
             this.project.pushNow('updateBills', this.getSourceType(), updateData);
         };
@@ -432,6 +433,7 @@ var Ration = {
                 if(data.length<recodes.length&&recodes[data.length].value!=null){//说明有部分定额编号没找到记录
                     alert('当前库中找不到定额"' + recodes[data.length].value + '"');
                 }
+                updateBillsOprRation();
             })
         };
         ration.prototype.addMultiRation = function (items, callback) {
@@ -532,6 +534,7 @@ var Ration = {
                         }else {
                             project.calcProgram.calcNodesAndSave(newNodes);
                         }
+                        updateBillsOprRation();
                         if(callback){
                             callback();
                         }
@@ -609,6 +612,8 @@ var Ration = {
                                 installationFeeObj.calcInstallationFee();
                             }
                         });
+                        //如果添加规则中,添加内容为定额子目,则更新相关清单
+                        updateBillsOprRation();
                         if(callback){
                             callback();
                         }

+ 22 - 6
web/building_saas/main/js/views/character_content_view.js

@@ -1086,11 +1086,12 @@ let pageCCOprObj = {
      * @param {Object} setting - 设置
      * @return {void}
      */
-    setCharacterBySetting: function(node, setting, callback = null, oprObj = null) {
+    setCharacterBySetting: function(node, setting, callback = null, oprObj = null, usedToAll = null) {
         if(!node){
             return;
         }
         let self = this;
+
         // 保存的条件数据
         const findSet = { ID: node.data.ID, projectID: node.data.projectID };
         const updateData = this.getCharacterUpdateData(setting, node);
@@ -1102,6 +1103,15 @@ let pageCCOprObj = {
         //saveObj.push({field: 'addRule', value: setting});
         saveObj.push({field: 'jobContent', value: node.data.jobContent});
         saveObj.push({field: 'itemCharacter', value: node.data.itemCharacter});
+        if(usedToAll){
+            //应用到所有清单、过滤,只更新会发生变化的清单
+            let orgName = isDef(node.data.name) ? node.data.name : '';
+            let orgItemCharacterText = isDef(node.data.itemCharacterText) ? node.data.itemCharacterText : '';
+            let orgJobContentText = isDef(node.data.jobContentText) ? node.data.jobContentText : '';
+            if(orgName == updateData.name && orgItemCharacterText == updateData.itemCharacterText && orgJobContentText == updateData.jobContentText){
+                return;
+            }
+        }
         // 更新到数据库
         pageCCOprObj.updateBill(findSet, saveObj, function(response) {
             self.refreshView(node, updateData);
@@ -1168,7 +1178,11 @@ let pageCCOprObj = {
                 continue;
             }
             const serialNo = this.formatSerialNumber(setting.serialType, count.toString());
-            setting.childDisplayFormat === "1" ? result.push(tmp.data.code + ':' + tmp.data.name) : result.push(serialNo + tmp.data.name);
+            if(setting.childDisplayFormat === '1'){
+            }
+            let code = isDef(tmp.data.code) ? tmp.data.code : '';
+            let name = isDef(tmp.data.name) ? tmp.data.name : '';
+            setting.childDisplayFormat === "1" ? result.push(code + ':' + name) : result.push(serialNo + name);
             count++;
         }
 
@@ -1278,11 +1292,13 @@ let pageCCOprObj = {
         if(!node.data.jobContent){
             node.data.jobContent = [];
         }
-        if (node.data.name === undefined || (node.data.itemCharacter.length <= 0 && node.data.jobContent.length <= 0)) {
-            return updateData;
+        if(setting.addContent !== '5'){
+            if (node.data.name === undefined || (node.data.itemCharacter.length <= 0 && node.data.jobContent.length <= 0)) {
+                return updateData;
+            }
         }
         // 获取原名称
-        const name = node.data.name.split("\n");
+        const name = isDef(node.data.name) ? node.data.name.split("\n") : '';
         this.nameCache = name[0] !== undefined ? name[0] : "";
         updateData.name = this.nameCache;
 
@@ -1354,7 +1370,7 @@ let pageCCOprObj = {
                 break;
             case "2":
                 // 添加到清单名称列
-                content = this.nameCache + "\n" + content;
+                content = content !== '' ? this.nameCache + "\n" + content : this.nameCache;
                 updateData.name = content;
                 break;
             case "3":

+ 2 - 6
web/building_saas/main/js/views/project_view.js

@@ -44,10 +44,6 @@ var projectObj = {
             pageCCOprObj.mainActiveCell = projectObj.mainSpread.getActiveSheet().getSelections()[0];//mainSpread焦点单元格
             pageCCOprObj.setCacheAndShow(node);
         }
-
-        let acSheet = subSpread.getActiveSheet();
-
-        console.log(acSheet.name());
         // for test interface.  CSLAAAAA
         // projectObj.testDisplay('前四项累计值排除当前选中项' + projectObj.project.calcProgram.getBeforeTaxTotalFee([node]));
 
@@ -827,8 +823,8 @@ var projectObj = {
                 }
                 //如果其下没有定额/量价/人材机,则自动在其下插入一条定额空行,在其后自动插入一条分项空行,焦点跳动至定额空行的编码单元格。
                 else if(selected.children.length === 0){
-                    //在其后插入分项
-                    if(!(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected))){
+                    //分项没有后兄弟,且没有锁定清单时在其后插入分项
+                    if(!selected.nextSibling && !(projectInfoObj.projectInfo.property.lockBills && projectObj.project.withinBillsLocked(projectObj.project.mainTree.selected))){
                         ProjectController.addFX(me.project, me.mainController);
                         //将焦点行设置成原本的行,以插入定额
                         me.mainController.setTreeSelected(me.project.mainTree.items[orgRow]);

+ 2 - 1
web/building_saas/main/js/views/std_ration_lib.js

@@ -159,7 +159,8 @@ var rationLibObj = {
                         let select = $('#stdRationLibSelect'), rationSelect = rationSheet.getSelections();
                         let rationCode = rationSelect.length > 0 ? rationSheet.getText(rationSelect[0].row, 0) : '';
                         if (rationCode !== '') {
-                            rationModel.addNewRation({userID: userID, rationRepId: select.val(), code: rationCode},rationType.ration);
+                            rationModel.addNewRation({userID: userID, rationRepId: select.val(), code: rationCode},rationType.ration, function () {
+                            });
                         }
                     }
                 },

+ 23 - 6
web/building_saas/main/js/views/sub_view.js

@@ -174,6 +174,14 @@ function colSettingAddPosition(addPosition){
     }
 }
 
+//如果,添加内容为定额子目时进行定额的增删改,更新相关其清单
+function updateBillsOprRation() {
+    const setting = getAddRuleSetting();
+    if(setting && setting.addContent && setting.addContent === '5'){
+        $('#use-to-current').click();
+    }
+}
+
 // 应用到选中清单
 let isSaving = false;
 $("#use-to-current").click(function() {
@@ -205,6 +213,12 @@ $("#use-to-current").click(function() {
         self.removeAttr('disabled');
     }, 1000);
 });
+//todo: 优化成批量
+function addRuleUseToBills(setting, nodes) {
+    for(let node of nodes){
+        pageCCOprObj.setCharacterBySetting(node, setting, null, null, true);
+    }
+}
 // 应用到所有的清单
 $("#use-to-all").click(function() {
     if(projectReadOnly){
@@ -216,14 +230,17 @@ $("#use-to-all").click(function() {
     if (treeNode.items === undefined || treeNode.items.length <= 0) {
         return false;
     }
-    // 处理结果
-    for (const item of treeNode.items) {
-        if (item.data.jobContent === undefined || item.data.jobContent.length <= 0 ||
-            item.data.itemCharacter === undefined || item.data.itemCharacter.length <= 0 || item.data.code === undefined) {
-            continue;
+    // 处理
+    addRuleUseToBills(setting, treeNode.items);
+   /* for (const item of treeNode.items) {
+        if(setting.addContent !== '5'){
+            if (item.data.jobContent === undefined || item.data.jobContent.length <= 0 ||
+                item.data.itemCharacter === undefined || item.data.itemCharacter.length <= 0 || item.data.code === undefined) {
+                continue;
+            }
         }
         pageCCOprObj.setCharacterBySetting(item, setting);
-    }
+    }*/
 });
 
 function saveAddRule(){

+ 1 - 1
web/building_saas/pm/html/project-management.html

@@ -5,7 +5,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <meta http-equiv="x-ua-compatible" content="ie=edge">
-    <title>项目管理-纵横云价</title>
+    <title>项目管理-纵横云价</title>
     <!-- inject:css -->
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
     <link rel="stylesheet" href="/web/building_saas/css/main.css">