فهرست منبع

1.清单锁定
2.造价书界面,工具栏-更多 右侧增加调价后的总造价显示

vian 5 سال پیش
والد
کامیت
961017faff

+ 6 - 0
public/common_constants.js

@@ -107,10 +107,16 @@
         BOQ: 'ration'
     };
 
+    const SourceType = {
+        BILLS: 'bills',
+        RATION: 'ration',
+    };
+
     return {
         fixedFlag,
         COMPLEMENTARY_LIB,
         COMPILATION,
         ValuationType,
+        SourceType,
     };
 })

+ 24 - 1
public/common_util.js

@@ -44,9 +44,32 @@
         }
     }
 
+    // 给数值加上分割
+    // eg: 1234567.00 => 1,234,567.00
+    function standardNumber(str) {
+        if (typeof str === 'number') {
+            str = String(str);
+        }
+        if (typeof str !== 'string') {
+            return '';
+        }
+        const [intPart, decimalPart] = str.split('.');
+        // 给整数部分加上“,”
+        const temp = [];
+        for (let i = intPart.length - 1, j = 1; i >= 0; i--, j++) {
+            temp.push(intPart[i]);
+            if (j !==0 && j % 3 === 0 && i - 1 >= 0) {
+                temp.push(',');
+            }
+        }
+        const standardIntPart = temp.reverse().join('');
+        return `${standardIntPart}${decimalPart ? '.' + decimalPart : ''}`;
+    }
+
     return {
         isDef,
         isEmptyVal,
-        getSortedTreeData
+        getSortedTreeData,
+        standardNumber,
     };
 });

+ 7 - 6
web/building_saas/main/html/main.html

@@ -114,12 +114,12 @@
                                   <a class="dropdown-item btn-sm" href="javascript:void(0);"  id="displayDE">定额</a>
                               </div>
                               <!--<a href="javascript:void(0);" id="ZLFB_btn" class="dropdown-item" data-placement="bottom"><i class="fa fa-retweet" aria-hidden="true"></i> 整理分部</a>
-                              <% if (projectData.property.lockBills == true) { %>
-                              <a href="javascript:void(0)"  class="dropdown-item" name="lockBills"> <i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单</a>
-                              <% } else { %>
-                              <a href="javascript:void(0)"  class="dropdown-item" name="lockBills"> <i class="fa fa-lock" aria-hidden="true"></i> 锁定清单</a>
-                              <% } %>
-                              <a id="switchTznr" href="javascript:void(0);"  class="dropdown-item"><i class="fa fa-eye" aria-hidden="true"></i> 显示特征</a>-->
+                                <a id="switchTznr" href="javascript:void(0);"  class="dropdown-item"><i class="fa fa-eye" aria-hidden="true"></i> 显示特征</a>-->
+                            <% if (projectData.property.lockBills == true) { %>
+                            <a href="javascript:void(0)"  class="dropdown-item" name="lockBills"> <i class="fa fa-unlock-alt" aria-hidden="true"></i> 解锁清单</a>
+                            <% } else { %>
+                            <a href="javascript:void(0)"  class="dropdown-item" name="lockBills"> <i class="fa fa-lock" aria-hidden="true"></i> 锁定清单</a>
+                            <% } %>
                               <a id = "menu_calc_program_manage"  href="javascript:void(0);" class="dropdown-item"><i class="fa fa-calculator" aria-hidden="true"></i> 总计算程序</a>
                           </div>
                       </div>
@@ -143,6 +143,7 @@
                       <a href="javascript:void(0)"  class="btn btn-light btn-sm" name="lockBills"> <i class="fa fa-lock" aria-hidden="true"></i> 锁定清单</a>
                       <% } %>
                       <a id="switchTznr" href="javascript:void(0);"  class="btn btn-light btn-sm"><i class="fa fa-eye" aria-hidden="true"></i> 显示特征</a>-->
+                      <span class="ml-3" id="total-price-span"></span>
                   </div>
                   <div class="side-tabs">
                       <ul class="nav nav-tabs" role="tablist">

+ 1 - 0
web/building_saas/main/js/models/calc_program.js

@@ -1914,6 +1914,7 @@ class CalcProgram {
             // 批量树结点计算后,计算程序早已物是人非,所以这里要重新计算一下。警告:第二个参数千万不能改成3,否则死循环!
             if (activeSubSheetIsCalcProgram())
                 calcProgramObj.refreshCalcProgram(projectObj.project.mainTree.selected, 2);
+            projectInfoObj.refreshTotalPriceSpan();
             $.bootstrapLoading.end();
         });
     };

+ 2 - 14
web/building_saas/main/js/models/project.js

@@ -374,21 +374,9 @@ var PROJECT = {
             }
             return false;
         };
-        //清单是否属于锁定范围(分部分项、措施项目)
+        // 清单是否属于锁定范围(所有清单)
         project.prototype.withinBillsLocked = function (node) {
-            const lockedFixFlag = [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE];
-            while(node){
-                if(!node.parent){
-                    if(node.data.flagsIndex && node.data.flagsIndex.fixed && lockedFixFlag.includes(node.data.flagsIndex.fixed.flag)){
-                        return true;
-                    }
-                    else {
-                        return false;
-                    }
-                }
-                node = node.parent;
-            }
-            return true;
+            return node && node.sourceType === commonConstants.SourceType.BILLS;
         };
         project.prototype.updateNodes = function (datas,callback) {
           /*  let datas = [

+ 8 - 0
web/building_saas/main/js/views/project_info.js

@@ -90,5 +90,13 @@ var projectInfoObj = {
                 $("#about-calc").css('display', 'none');
             };
         }
+    },
+    // 刷新总造价显示span
+    refreshTotalPriceSpan: function () {
+        const totalNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.TOTAL_COST);
+        const price = totalNode ? calcTools.getFee(totalNode, 'common.tenderTotalFee') : '0';
+        const standardPrice = commonUtil.standardNumber(price);
+        const text = `总造价:${standardPrice} 元`;
+        $('#total-price-span').text(text);
     }
 };

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

@@ -883,6 +883,7 @@ var projectObj = {
         let startTime = +new Date();
         $.bootstrapLoading.start();
         this.project.loadDatas(function (err) {
+            projectInfoObj.refreshTotalPriceSpan(); // 工具栏中的总造价信息
             let mTime = +new Date();
             projectInfoObj.showProjectInfo(that.project.projectInfo);
             //快速列设置
@@ -2999,9 +3000,9 @@ function doAfterImport(resData){
             doAfterImportPosition(data);
         }
         //如果清单未锁定,导入后锁定清单
-        /*if(!projectObj.project.projectInfo.property.lockBills){
+        if(!projectObj.project.projectInfo.property.lockBills){
             $("a[name='lockBills']").click();
-        }*/
+        }
         $.bootstrapLoading.end();
         //重算
         projectObj.project.calcProgram.calcAllNodesAndSave(calcAllType.catAll, function () {