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

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

# Conflicts:
#	web/building_saas/main/js/models/ration_glj.js
zeweizhong 6 лет назад
Родитель
Сommit
6a30d38b42

+ 4 - 1
modules/main/facade/ration_facade.js

@@ -594,7 +594,10 @@ async function updateCoeAdjust(data,compilation) {
     //替换工料机的情况
     if (data.replace.length > 0){
         for(let r of data.replace){
-            replace.push(await  ration_glj_facade.replaceGLJByData(r,compilation)) ;
+            let r_result = await  ration_glj_facade.replaceGLJByData(r,compilation);
+            replace.push(r_result.data) ;
+            if(r_result.newRecodes.length > 0) data.add = data.add.concat(r_result.newRecodes);
+            if(r_result.deleteList.length > 0) data.delete = data.delete.concat(r_result.deleteList);
         }
     }
     let cal_result = await glj_calculate_facade.calculateQuantity({projectID:data.projectID,rationID:data.rationID},null,true);

+ 6 - 1
public/gljUtil.js

@@ -23,7 +23,8 @@ module.exports = {
     sortRationGLJ:sortRationGLJ,
     sortProjectGLJ:sortProjectGLJ,
     getCCSProjectGLJ:getCCSProjectGLJ,
-    getBaseCCSMixRatio:getBaseCCSMixRatio
+    getBaseCCSMixRatio:getBaseCCSMixRatio,
+    getMaterialCalcRationFee:getMaterialCalcRationFee
 };
 
 function calcProjectGLJQuantity(projectGLJDatas,rationGLJDatas,rationDatas,billsDatas,q_decimal) {
@@ -34,6 +35,10 @@ function getGLJPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,i
     return gljNodeUtil.getGLJPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
 }
 
+function getMaterialCalcRationFee(ration,ration_gljs,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,_,scMathUtil) {
+    return gljNodeUtil.getMaterialCalcRationFee(ration,ration_gljs,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,_,scMathUtil);
+}
+
 function getMarketPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio=false) {
     return gljNodeUtil.getMarketPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
 }

+ 39 - 0
public/web/gljUtil.js

@@ -428,6 +428,45 @@ let gljUtil = {
             return scMathUtil.roundToString(quantity * glj.quantity, gd);
         }
     },
+    getMaterialCalcRationFee:function (ration,ration_gljs,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,_,scMathUtil) {
+        let pMap =_.indexBy(projectGLJDatas.gljList, 'id');
+        let process_decimal = decimalObj.process;
+        let ration_quantity_decimal = decimalObj.ration.quantity;
+        let glj_quantity_decimal = decimalObj.glj.quantity;
+        let glj_unitPrice_decimal = decimalObj.glj.unitPrice;
+        let assFeeRate = scMathUtil.roundForObj(projectGLJDatas.constData.assistProductionFeeRate,decimalObj.feeRate) * 0.01;//辅助生产间接费费率
+        let rationLaberFee = 0;  //定额人工费(市场价)
+        let rationMachineFee = 0; //定额施工机械使用费(市场价)
+        let rationLaberFee_b = 0;  //定额人工费(定额价)
+        let rationMachineFee_b = 0; //定额施工机械使用费(定额价)
+        let directFee = 0;//直接费
+        let rationQuantity = scMathUtil.roundForObj(ration.quantity,ration_quantity_decimal);
+        for(let g of ration_gljs){
+            let result = gljUtil.getGLJPrice(pMap[g.projectGLJID],projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,false,_,scMathUtil);
+            g.marketPrice = result.marketPrice;
+            g.basePrice = result.basePrice;
+            let quantity = scMathUtil.roundForObj(g.quantity,glj_quantity_decimal);
+            let t = scMathUtil.roundForObj(quantity * g.marketPrice * rationQuantity,process_decimal);//市场价
+            let rt = scMathUtil.roundForObj(quantity * g.basePrice * rationQuantity,process_decimal);//定额价
+            if(g.type == gljUtil.gljType.LABOUR){
+                rationLaberFee = scMathUtil.roundForObj(rationLaberFee+t,process_decimal);
+                rationLaberFee_b = scMathUtil.roundForObj(rationLaberFee_b+rt,process_decimal);
+            }else if(gljUtil.getMainType(g.type) == 3){
+                rationMachineFee = scMathUtil.roundForObj(rationMachineFee+t,process_decimal);
+                rationMachineFee_b = scMathUtil.roundForObj(rationMachineFee_b+rt,process_decimal);
+            }
+            directFee = scMathUtil.roundForObj(directFee + t,process_decimal);
+        }
+        ration.assistProductionFee = scMathUtil.roundForObj(rationLaberFee_b * assFeeRate,glj_unitPrice_decimal);//辅助生产间接费
+        ration.rationLaberFee = scMathUtil.roundForObj(rationLaberFee,glj_unitPrice_decimal);//定额人工费(市场价)
+        ration.rationMachineFee = scMathUtil.roundForObj(rationMachineFee,glj_unitPrice_decimal);//定额施工机械使用费(市场价)
+        ration.directFee = scMathUtil.roundForObj(directFee,glj_unitPrice_decimal);//直接费
+        //to do 高原取费类别的情况待确认
+        //let hs = scMathUtil.roundForObj(tt*hightFeeRate,process_decimal);//(人工定额消耗量*定额价*定额工程量+机械定额消耗量*定额价*定额工程量)*高原取费类别费率
+
+    },
+
+
     fixedFlag : {
         // 分部分项工程
         SUB_ENGINERRING: 1,

+ 156 - 133
web/building_saas/fee_rates/fee_rate.html

@@ -1,168 +1,191 @@
 
 
-<div >
-<div class="toolsbar_feeRate px-1 ">
-    <div class="form-inline py-1">
-        <label  class="mx-2" >使用费率文件:<span id="feeRateFileName">费率1</span>(<label class="a_color" id="pop-lv">与<span id="projectCount">3</span> 个单位工程同步</label>)
-            <a class="btn btn-sm ml-1" href="#" data-toggle="modal" data-target="#change-lv" id="changFeeRateFile"><i class="fa fa-exchange"></i> 选择其他</a>
-            <a class="btn btn-sm ml-1" href="#" data-toggle="modal" id="saveAs" data-target="#copy-lv"><i class="fa fa-files-o"></i> 另存单独用</a></label>
+<div>
+    <div class="toolsbar_feeRate px-1 ">
+        <div class="form-inline py-1">
+            <label  class="mx-2" >使用费率文件:<span id="feeRateFileName">费率1</span>(<label class="a_color" id="pop-lv">与<span id="projectCount">3</span> 个单位工程同步</label>)
+                <a class="btn btn-sm ml-1" href="#" data-toggle="modal" data-target="#change-lv" id="changFeeRateFile"><i class="fa fa-exchange"></i> 选择其他</a>
+                <a class="btn btn-sm ml-1" href="#" data-toggle="modal" id="saveAs" data-target="#copy-lv"><i class="fa fa-files-o"></i> 另存单独用</a></label>
+        </div>
     </div>
-</div>
-<div class="toolsbar_feeRate px-1">
-    <div class="row" style="margin-left: 0px">
-        <div class="col-lg-8 p-0">
-            <div class="form-inline py-1">
-                <label class="mx-2" >基于&nbsp;&nbsp;<span id="feeRateLibName">重庆渝建发[2016]35号</span></label>
-                <a class="btn btn-sm ml-1" href="#" data-toggle="modal" data-target="#set-lv" id="setNewFeeRate"><i class="fa fa-cog"></i> 重选标准</a>
+    <div class="toolsbar_feeRate px-1">
+        <div class="row" style="margin-left: 0px">
+            <div class="col-lg-8 p-0">
+                <div class="form-inline py-1">
+                    <label class="mx-2" >基于&nbsp;&nbsp;<span id="feeRateLibName">重庆渝建发[2016]35号</span></label>
+                    <a class="btn btn-sm ml-1" href="#" data-toggle="modal" data-target="#set-lv" id="setNewFeeRate"><i class="fa fa-cog"></i> 重选标准</a>
+                </div>
             </div>
+            <!--<div class="col-lg-4 p-0">
+                <div class="form-inline py-1" style="margin-top: 5px"><input type="checkbox" id="cascadeSet" checked >  <label class="mx-2" >统一设置相同参数</label></div>
+            </div>-->
         </div>
-        <!--<div class="col-lg-4 p-0">
-            <div class="form-inline py-1" style="margin-top: 5px"><input type="checkbox" id="cascadeSet" checked >  <label class="mx-2" >统一设置相同参数</label></div>
-        </div>-->
     </div>
-</div>
-<div class="container-fluid">
-    <div class="row ">
-        <div class="col-lg-8 p-0 ">
-            <div class="grid main-data-full-feeRate" id="divFee"></div>
-        </div>
-        <div class="col-lg-4 p-0">
-            <div class="grid main-data-full-feeRate" id="subRate"></div>
+    <div class="container-fluid">
+        <div class="row ">
+            <div class="col-lg-8 p-0 ">
+                <div class="grid main-data-full-feeRate" id="divFee"></div>
+            </div>
+            <div class="col-lg-4 p-0">
+                <div class="grid main-data-full-feeRate" id="subRate"></div>
+            </div>
         </div>
     </div>
-</div>
-<!--弹出更换-->
-<div class="modal fade" id="change-lv" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title">更换费率文件</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
+    <!--弹出更换-->
+    <div class="modal fade" id="change-lv" data-backdrop="static">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">更换费率文件</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <div class="form-group">
+                        <label class="custom-control custom-radio">
+                            <input id="radio1" name="chaneg-lv-Radio" type="radio" value="0" onclick="changeFRadioClick()" class="" checked>
+                            <span class="custom-control-indicator"></span>
+                            <span class="custom-control-description">从本建设项目中选择</span>
+                        </label>
+                        <label class="custom-control custom-radio">
+                            <input id="radio2" name="chaneg-lv-Radio" type="radio" value="1" onclick="changeFRadioClick()" class="">
+                            <span class="custom-control-indicator"></span>
+                            <span class="custom-control-description">从其他建设项目中复制</span>
+                        </label>
+                    </div>
+                    <!--从本建设项目中选择-->
+                    <div class="form-group" id="fromProject">
+                        <label id="currentProject"></label>
+                        <select class="form-control" id="currentOptions"></select>
+                    </div>
+                    <!--从其他建设项目中复制-->
+                    <div id="fromOther" >
+                        <div class="form-group">
+                            <label>选择建设项目</label>
+                            <select class="form-control" id="otherProject"></select>
+                        </div>
+                        <div class="form-group">
+                            <select class="form-control" id="otherFeeRateOption"></select>
+                            <small class="form-text text-muted">你选择的费率文件将复制一份至新项目,不会影响原建设项目的费率文件。</small>
+                        </div>
+                    </div>
+
+                </div>
+                <div class="modal-footer">
+                    <button type="button"  class="btn btn-primary" data-dismiss="modal" id="changeFeeRateConfirm">确定</button>
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                </div>
             </div>
-            <div class="modal-body">
-                <div class="form-group">
-                    <label class="custom-control custom-radio">
-                        <input id="radio1" name="chaneg-lv-Radio" type="radio" value="0" onclick="changeFRadioClick()" class="" checked>
-                        <span class="custom-control-indicator"></span>
-                        <span class="custom-control-description">从本建设项目中选择</span>
-                    </label>
-                    <label class="custom-control custom-radio">
-                        <input id="radio2" name="chaneg-lv-Radio" type="radio" value="1" onclick="changeFRadioClick()" class="">
-                        <span class="custom-control-indicator"></span>
-                        <span class="custom-control-description">从其他建设项目中复制</span>
-                    </label>
-                </div>
-                <!--从本建设项目中选择-->
-                <div class="form-group" id="fromProject">
-                    <label id="currentProject"></label>
-                    <select class="form-control" id="currentOptions"></select>
-                </div>
-                <!--从其他建设项目中复制-->
-                <div id="fromOther" >
+        </div>
+    </div>
+    <!--弹出设置-->
+    <div class="modal fade" id="set-lv" data-backdrop="static">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title"><span id="set-lv-feeRateName" style="display: none">费率1 &nbsp;</span>重选标准</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
                     <div class="form-group">
-                        <label>选择建设项目</label>
-                        <select class="form-control" id="otherProject"></select>
+                        <label >费率标准</label>
+                        <select class="form-control" id="standardSelect"></select>
+                        <small class="form-text text-danger">重新选择费率标准将重置当前费率文件的所有费率,正在使用当前费率文件的其他单位工程也将受影响。</small>
                     </div>
                     <div class="form-group">
-                        <select class="form-control" id="otherFeeRateOption"></select>
-                        <small class="form-text text-muted">你选择的费率文件将复制一份至新项目,不会影响原建设项目的费率文件。</small>
+                        <label>正在使用当前费率文件的单位工程有:</label>
+                        <ul class="list-unstyled" id="usageProjectList">
+
+                        </ul>
                     </div>
                 </div>
-
-            </div>
-            <div class="modal-footer">
-                <button type="button"  class="btn btn-primary" data-dismiss="modal" id="changeFeeRateConfirm">确定</button>
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-primary" id="changeConfirm" data-dismiss="modal">确定</button>
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                </div>
             </div>
         </div>
     </div>
-</div>
-<!--弹出设置-->
-<div class="modal fade" id="set-lv" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title"><span id="set-lv-feeRateName" style="display: none">费率1 &nbsp;</span>重选标准</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body">
-                <div class="form-group">
-                    <label >费率标准</label>
-                    <select class="form-control" id="standardSelect"></select>
-                    <small class="form-text text-danger">重新选择费率标准将重置当前费率文件的所有费率,正在使用当前费率文件的其他单位工程也将受影响。</small>
-                </div>
-                <div class="form-group">
-                    <label>正在使用当前费率文件的单位工程有:</label>
-                    <ul class="list-unstyled" id="usageProjectList">
 
-                    </ul>
+    <!--弹出 另存新文件-->
+    <div class="modal fade" id="copy-lv" data-backdrop="static">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">另存新费率文件</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <div class="form-group">
+                        <label>费率文件名称</label>
+                        <input id="valid_name" type="hidden">
+                        <input class="form-control" id="copyFeeRateName" value="">
+                        <!--默认为复制费率文件名字+副本 2字,用户修改后需判断是否在同项目下存在同名-->
+                        <small class="form-text text-danger" id="nameError" style="display: none">已存在同名费率文件。</small>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-primary" id="saveAsConfirm">确定</button>
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 </div>
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-primary" id="changeConfirm" data-dismiss="modal">确定</button>
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>
-</div>
 
-<!--弹出 另存新文件-->
-<div class="modal fade" id="copy-lv" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title">另存新费率文件</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body">
-                <div class="form-group">
-                    <label>费率文件名称</label>
-                    <input id="valid_name" type="hidden">
-                    <input class="form-control" id="copyFeeRateName" value="">
-                    <!--默认为复制费率文件名字+副本 2字,用户修改后需判断是否在同项目下存在同名-->
-                    <small class="form-text text-danger" id="nameError" style="display: none">已存在同名费率文件。</small>
+    <!--弹出 重命名窗口-->
+    <div class="modal fade" id="rename-lv" data-backdrop="static">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">重命名</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <div class="form-group">
+                        <label>费率文件名称</label>
+                        <input class="form-control" id="newFeeRateID" value="" style="display: none">
+                        <input class="form-control" id="newFeeRateName" value="">
+                        <small class="form-text text-danger" id="renameError">本建设项目中已存在同名费率文件。</small>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-primary" id="renameConfirm">确定</button>
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 </div>
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-primary" id="saveAsConfirm">确定</button>
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>
-</div>
 
-<!--弹出 重命名窗口-->
-<div class="modal fade" id="rename-lv" data-backdrop="static">
-    <div class="modal-dialog" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <h5 class="modal-title">重命名</h5>
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                    <span aria-hidden="true">&times;</span>
-                </button>
-            </div>
-            <div class="modal-body">
-                <div class="form-group">
-                    <label>费率文件名称</label>
-                    <input class="form-control" id="newFeeRateID" value="" style="display: none">
-                    <input class="form-control" id="newFeeRateName" value="">
-                    <small class="form-text text-danger" id="renameError">本建设项目中已存在同名费率文件。</small>
+    <!--弹出 乘系数窗口-->
+    <div class="modal fade" id="widthCoeDiv" data-backdrop="static">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">乘系数</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <div class="form-group">
+                        <label>乘系数</label>
+                        <input class="form-control" id="width_coe_value" value="">
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-primary" id="widthCoeDivConfirm">确定</button>
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
                 </div>
-            </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-primary" id="renameConfirm">确定</button>
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
             </div>
         </div>
     </div>
-</div>
-
 
 </div>
 

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

@@ -77,7 +77,7 @@
                                                 <div class="ovf-hidden half-h" id="freight_ration" style="display: none">
                                                     <div class="ovf-hidden full-h" id="freight_ration_sheet"></div>  <!---->
                                                     <div class="left full-h" id="freight_ration_ass" style="display: none">
-                                                        <label class="mx-2" for="freight_ass_value" style="margin-top: 10px">运距m</label><br>
+                                                        <label class="mx-2" id="freight_ass_label" for="freight_ass_value" style="margin-top: 10px">运距m</label><br>
                                                         <input type="text" class="form-control form-control-sm ration_ass_value" id="freight_ass_value">
                                                     </div>
                                                 </div>
@@ -89,7 +89,7 @@
                                                 <div class="ovf-hidden half-h" id="price_ration" >
                                                     <div class="ovf-hidden full-h" id="price_ration_sheet" ></div>
                                                     <div class="left full-h" id="price_ration_ass" style="display: none">
-                                                        <label class="mx-2" for="price_ass_value" style="margin-top: 10px">运距m</label><br>
+                                                        <label class="mx-2" id="price_ass_label" for="price_ass_value" style="margin-top: 10px">运距m</label><br>
                                                         <input type="text" class="form-control form-control-sm ration_ass_value" id="price_ass_value">
                                                     </div>
                                                 </div>

+ 6 - 5
web/building_saas/main/js/models/calc_program.js

@@ -513,15 +513,15 @@ let calcTools = {
         let rcj = (treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'RGF')) ||
             (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'CLF')) ||
             (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JXF')) ||
-            (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SBF'));
+            (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SBF')) ||
+            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF'));
 
             // (treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'SC_RGF')) ||
             // (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'SC_CLF')) ||
             // (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'SC_JXF')) ||
             // (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SC_SBF'));
 
-        if (rcj ||
-            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF'))) {
+        if (rcj) {
             let nodeQ = calcTools.uiNodeQty(treeNode) ? calcTools.uiNodeQty(treeNode) : 0;
             if (treeNode.data.type == rationType.volumePrice){
                 result = treeNode.data.marketUnitFee ? (parseFloat(treeNode.data.marketUnitFee) * nodeQ).toDecimal(decimalObj.ration.unitPrice) : 0
@@ -532,6 +532,7 @@ let calcTools = {
                     prc = gljOprObj.getMarketPrice(treeNode)
                 else
                     prc = gljOprObj.getBasePrice(treeNode);
+
                 result = (prc * nodeQ).toDecimal(decimalObj.ration.unitPrice);
             }
 
@@ -884,9 +885,9 @@ let rationCalcBasesNameKinds = {
     CLF:        ['材料费', '定额基价材料费', '定额材料费'],
     QTCLF:      ['定额其他材料费'],
     JXF:        ['机械费', '施工机具使用费', '施工机械使用费', '定额基价机械费', '定额机械费', '定额施工机具使用费', '定额施工机械使用费'],
-    JSRGF:      ['定额基价机上人工费', '定额施工机械人工费'],
+    JSRGF:      ['定额基价机上人工费', '定额施工机械人工费', '施工机械人工费'],
     ZCF:        ['主材费', '市场价主材费'],
-    SBF:        ['定额设备费'],
+    SBF:        ['设备费', '市场价设备费', '设备购置费','定额设备费'],
     RGGR:       ['人工工日'],
     // ZGCLF:      ['暂估材料费'],
 

+ 1 - 3
web/building_saas/main/js/models/project_glj.js

@@ -700,7 +700,6 @@ ProjectGLJ.prototype.updateUserFreight =async function (data) {
 ProjectGLJ.prototype.getUserFreights = async function () {//初始化车船税选择
     try {
         let result =  await ajaxGet("/glj/getUserFreights");
-        console.log(result);
         return result;
     }catch (e){
         console.log(e)
@@ -878,7 +877,6 @@ ProjectGLJ.prototype.calcEachFreightOrPrice = function (temp,type,priceMap) {//
     function calcRation(ration,gljs,pMap,priceMap){
         let result = 0;
         if(gljs){
-            //to do 计算有辅助定额的情况
             let processDecimal = getDecimal("process");
             let hightFeeRate = projectObj.project.projectGLJ.getHighlandFee(ration.feeType);//高原取费类别费率
             let assFeeRate = scMathUtil.roundForObj(projectObj.project.projectGLJ.datas.constData.assistProductionFeeRate,getDecimal("feeRate")) * 0.01;//辅助生产间接费费率
@@ -953,7 +951,7 @@ ProjectGLJ.prototype.calcMaterialAssQuantity = function (parent,ration,newAssLis
     }
 
     function calculateTimes(ass){
-        if(ass.name != "运距m") return 0;//只计算运距;
+        if(ass.name.indexOf("运距") == -1) return 0;//只计算运距;
         let times =(ass.actualValue-ass.stdValue)/ass.stepValue;
         let r = false;
         if(times<0){

+ 1 - 3
web/building_saas/main/js/models/ration_glj.js

@@ -492,11 +492,9 @@ let ration_glj = {
                     }
                 }
                 projectObj.project.projectGLJ.loadData(function () {//等项目工料机加载完成后再给用户编辑
-                    gljOprObj.refreshView();
                     me.refreshTreeNodeIfNeeded(recode);//刷新造价书上的树节点(如果需要)
                     me.reCalcWhenGLJChange(recode);//触发计算定额以及父节点
-                    zmhs_obj.refreshStableDataIfNeeded();
-                    $.bootstrapLoading.end();
+					zmhs_obj.refreshStableDataIfNeeded();                    $.bootstrapLoading.end();
                     installationFeeObj.calcInstallationFee();
                 });
             };

+ 3 - 2
web/building_saas/main/js/views/fee_rate_view.js

@@ -555,7 +555,7 @@ var feeRateObject={
             subRateObject.initSubRateSpread(me.mainFeeRateData[row]);
         }
     },
-    setRateFromSub:function (subRate,value,subList,editText) {//editText  下拉框选择的值,对于如“19.00”这样下拉选择项,value会变成19,所以在valueMap里找的时候要用editText去查找
+    setRateFromSub:function (subRate,value,subList,editText,feeRateCoe) {//editText  下拉框选择的值,对于如“19.00”这样下拉选择项,value会变成19,所以在valueMap里找的时候要用editText去查找
          let me = feeRateObject,feeRate =  projectObj.project.FeeRate;
          let rates = feeRate.getActivateFeeRate().rates;
          let updateDatas = [];
@@ -609,7 +609,7 @@ var feeRateObject={
                             }
                          }
                          if(gljUtil.isDef(ltRate)&&gljUtil.isDef(gtRate)){//已经找到前后的值了
-                             let step = scMathUtil.roundForObj(gtRate.value - ltRate.value,getDecimal("process"))
+                             let step = scMathUtil.roundForObj(gtRate.value - ltRate.value,getDecimal("process"));
                              let total =  parseFloat(gtRate.ID) - parseFloat(ltRate.ID)
                              doc.rate =getRateByStep(ltRate.value,total,parseFloat(value) - parseFloat(ltRate.ID),step);
                          }else if(gljUtil.isDef(ltRate)&&gtRate == null){//说明是超出了选项的最大值
@@ -621,6 +621,7 @@ var feeRateObject={
                          }
                      }
                      if(isDef(doc.rate)){
+                         if(feeRateCoe) doc.rate = scMathUtil.roundForObj(doc.rate * feeRateCoe,getDecimal("feeRate"));    //如果是从乘系数过来的,乘以系数。
                          updateDatas.push({rateID:r.ID,doc:doc});
                          me.sumParentRate(r.ID,doc.rate,updateDatas);
                      }

+ 23 - 0
web/building_saas/main/js/views/glj_view.js

@@ -745,6 +745,29 @@ var gljOprObj = {
         return data;
 
     },
+   /* testMaterialRationFee:function () {
+        let freightID = "8db5ff10-f495-11e9-bbf9-ef28356eebc5";
+        let rationID = "da995300-05f1-11ea-8265-63369b476c76";
+        let proGLJ =  projectObj.project.projectGLJ;
+        let freightList =  proGLJ.datas.freightList;
+        let calcOptions=projectObj.project.projectInfo.property.calcOptions;
+        let decimalObj = projectObj.project.projectInfo.property.decimal;
+        let labourCoeDatas =  projectObj.project.labourCoe.datas;
+        for(let f of freightList){
+            if(f.ID == freightID){
+                let r = null;
+                let ration_gljs = [];
+                for(let ration of f.rations){
+                    if(ration.ID == rationID) r = ration;
+                }
+                for(let rg of f.ration_gljs){
+                    if(rg.rationID == rationID) ration_gljs.push(rg);
+                }
+                gljUtil.getMaterialCalcRationFee(r,ration_gljs,proGLJ.datas,calcOptions,labourCoeDatas,decimalObj,_,scMathUtil)
+                console.log(r);
+            }
+        }
+    },*/
 
     getBasePrice:function (treeNode) {//造价书中的工料机修改的节点要用到
         let proGLJ =  projectObj.project.projectGLJ;

+ 13 - 3
web/building_saas/main/js/views/material_calc_view.js

@@ -335,6 +335,12 @@ materialCalcObj = {
         let me = materialCalcObj;
         if(!me.getMaterialSelected()){
             args.cancel = true;
+        }else {
+            let price = me.priceDatas[args.row];
+            let dataCode = me.priceSetting.header[args.col].dataCode;
+            if(dataCode == "supplyPrice"){
+                if(price.rations && price.rations.length > 0) args.cancel = true;
+            }
         }
     },
     onFreightEditStarting:function(sender,args){
@@ -841,7 +847,7 @@ materialCalcObj = {
         let stats = $(`#${preString}_ration_ass`).is(':visible');
         if(ration && ration.rationAssList){
             for(let r of ration.rationAssList){
-                if(r.name == "运距m"){//辅助定额只处理运距的情况,其它的都忽略
+                if(r.name.indexOf("运距")!= -1){//辅助定额只处理运距的情况,其它的都忽略  模糊匹配
                     show = true;
                     ass = r;
                 }
@@ -851,6 +857,7 @@ materialCalcObj = {
             $(`#${preString}_ration_sheet`).addClass("material-ration-left");
             $(`#${preString}_ration_ass`).addClass("material-ass");
             $(`#${preString}_ass_value`).val(ass.actualValue);
+            $(`#${preString}_ass_label`).text(ass.name);
             $(`#${preString}_ration_ass`).show();
         }else {
             $(`#${preString}_ration_sheet`).removeClass("material-ration-left");
@@ -864,11 +871,14 @@ materialCalcObj = {
         let replaceList = [];
         if(value && !number_util.isNum(value)){
             alert("输入的数据类型不对,请重新输入!");
-            let a = _.find(ration.rationAssList,{'name':"运距m"});
+            let a = _.find(ration.rationAssList,function (item) {
+                return item.name.indexOf("运距") != -1;
+            });
             if(a)ele.val(a.actualValue);
+            return;
         }
         for(let ass of ration.rationAssList){
-            if(ass.name == "运距m"){
+            if(ass.name.indexOf("运距")!= -1){
                 ass.actualValue = value?scMathUtil.roundForObj(value,2):ass.stdValue;
             }
             replaceList.push(value);

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

@@ -1525,8 +1525,8 @@ var projectObj = {
                             return true;
                         }
                     },
-                    visible:function(key, opt){//2018-11-15 新需求隐藏右键“造价计算”。
-                        return false;
+                    visible:function(key, opt){//2019-11-11 新需求重新开放右键“造价计算”。
+                        return true;
                     }
                 },
                 "spr4":'--------',

+ 54 - 6
web/building_saas/main/js/views/sub_fee_rate_views.js

@@ -54,12 +54,14 @@ var subRateObject={
         }
         //subRateObject.valueMap=projectObj.project.FeeRate.getValueMap(item);
         subRateObject.showSubRateData();
-        disableRightMenu("subRate",this.subRateSpread);
         if(projectReadOnly){
             if(this.subRateSetting.view.lockColumns){
                 this.subRateSetting.view.lockColumns = null;
             }
             disableSpread(this.subRateSpread);
+            disableRightMenu("subRate",this.subRateSpread);
+        }else {
+            this.initRightClick("subRate",this.subRateSpread)
         }
     },
     showSubRateData:function () {
@@ -124,7 +126,7 @@ var subRateObject={
         if($.bootstrapLoading.isLoading())  info.cancel = true;
     },
 
-    onSubRateValueChange:function (e,info) {
+    onSubRateValueChange:function (e,info,feeRateCoe) {
         let me = subRateObject, subList=null;
         let value = info.newValue;
         let subRate = me.datas[info.row];
@@ -158,15 +160,15 @@ var subRateObject={
         }
         if(me.timeStamp = null){
             me.timeStamp =  +new Date()
-            feeRateObject.setRateFromSub(subRate,value,subList,info.newValue);
+            feeRateObject.setRateFromSub(subRate,value,subList,info.newValue,feeRateCoe);
         }else {
             let now = +new Date();
             if(now - me.timeStamp < 500){
                 setTimeout(function () {
-                    feeRateObject.setRateFromSub(subRate,value,subList,info.newValue);
+                    feeRateObject.setRateFromSub(subRate,value,subList,info.newValue,feeRateCoe);
                 },500)
             }else {
-                feeRateObject.setRateFromSub(subRate,value,subList,info.newValue);
+                feeRateObject.setRateFromSub(subRate,value,subList,info.newValue,feeRateCoe);
             }
             me.timeStamp = now;
         }
@@ -179,5 +181,51 @@ var subRateObject={
         }
         subRateObject.datas=null;
         subRateObject.valueMap=null;
+    },
+    initRightClick:function (id,spread) {
+        let me = this;
+        $.contextMenu({
+            selector: '#'+id,
+            build: function ($trigger, e) {
+                me.rightClickTarget = SheetDataHelper.safeRightClickSelection($trigger, e, spread);
+                return me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.viewport ||
+                    me.rightClickTarget.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
+            },
+            items: {
+                "widthCoe":{
+                    name: "乘系数",
+                    icon: 'fa-sign-in',
+                    visible:function () {
+                        return true;//2019-11-17 改成不需要右键插入功能    id == "freightSheet";
+                    },
+                    disabled: function (){
+                        let subRate = subRateObject.datas[me.rightClickTarget.row];
+                        if(subRate && subRate.isSub) return true;
+                        return me.rightClickTarget.row === undefined;
+                    },
+                    callback:function () {
+                        $("#width_coe_value").val(1);
+                        $("#widthCoeDiv").modal("show");
+                    }
+
+                }
+            }
+        });
     }
-}
+};
+
+$(function(){
+    $("#widthCoeDivConfirm").click(function () {
+        let feeRateCoe = $("#width_coe_value").val();
+        if(!number_util.isNum(feeRateCoe)){
+            alert("乘系数类型不对,请重新输入!");
+            return ;
+        }
+        feeRateCoe = scMathUtil.roundForObj(feeRateCoe,getDecimal("feeRate"));
+        let sub = subRateObject.subRateSheet.getSelections()[0];
+        let value =subRateObject.subRateSheet.getCell(sub.row,1).value();
+        let info = {col:1,row:sub.row,newValue:value,oldValue:value};
+        subRateObject.onSubRateValueChange({},info,feeRateCoe);
+        $("#widthCoeDiv").modal("hide");
+    })
+});

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

@@ -259,8 +259,8 @@ let zmhs_obj = {
             }
         }
         projectObj.mainController.refreshTreeNode(nodes, false);
-
-        let rationID= ration_glj.updateCacheAfterAdjust(result.ration_glj);
+        let rationID = result.ration.ID;
+        ration_glj.updateCacheAfterAdjust(result.ration_glj);
         if(result.projectGLJDatas){//有添加、替换、工料机等需重新加载的情况
             projectObj.project.projectGLJ.refreshByDatas(result.projectGLJDatas);
             if(result.add && result.add.length > 0) ration_glj.addToMainTree(result.add);//这个方法有再去项目工料机那里取价格,所以要在回调里调用,不像替换工料的情况
@@ -269,7 +269,7 @@ let zmhs_obj = {
         }else {
             ration_glj.reCalcWhenGLJChange({rationID:rationID});
         }
-        gljOprObj.showRationGLJSheetData(true);
+        gljOprObj.refreshView();
     },
 
     deleteGLJs:function (IDs) {