Browse Source

单位工程建筑面积、单方造价、debug

zhongzewei 7 years ago
parent
commit
092faef63e

+ 21 - 1
modules/pm/facade/pm_facade.js

@@ -488,6 +488,18 @@ function summarizeToParent(parent, child) {
     parent.tax = scMathUtil.roundTo(parseFloat(parent.tax) + parseFloat(child.tax), decimal);
 }
 
+function getBuildingArea(projFeature){
+    if(!projFeature || projFeature.length === 0){
+        return null;
+    }
+    for(let f of projFeature){
+        if(f.key === 'buildingArea'){
+            return f.value;
+        }
+    }
+    return null;
+}
+
 async function getSummaryInfo(projectIDs){
     //ID与汇总信息映射
     let IDMapping = {};
@@ -521,6 +533,10 @@ async function getSummaryInfo(projectIDs){
         for(let tender of tenders){
             tenderIDs.push(tender.ID);
             IDMapping[tender.ID] = {engineeringCost: 0, subEngineering: 0, measure: 0, safetyConstruction: 0, other: 0, charge: 0, tax: 0, rate: 0, buildingArea: '', perCost: ''};
+            let buildingArea = getBuildingArea(tender.property.projectFeature);
+            if(buildingArea){
+                IDMapping[tender.ID]['buildingArea'] = buildingArea;
+            }
         }
         //需要获取的清单固定类别综合合价:工程造价、分部分项、措施项目、安全文明施工专项、规费、其他项目、税金
         let needFlags = [billsFlags.ENGINEERINGCOST, billsFlags.SUB_ENGINERRING, billsFlags.MEASURE,
@@ -542,12 +558,16 @@ async function getSummaryInfo(projectIDs){
         for(let eng of engineerings){
             summarizeToParent(IDMapping[eng.ParentID], IDMapping[eng.ID]);
         }
-        //占造价比例
+        //占造价比例、单方造价
         const rateDecimal = -2;
+        const perCostDecimal = -2;
         for(let tender of tenders){
             let tenderInfo = IDMapping[tender.ID];
             let engInfo = IDMapping[tender.ParentID];
             tenderInfo.rate = engInfo.engineeringCost == 0 ? 0 : scMathUtil.roundTo(tenderInfo.engineeringCost * 100 / engInfo.engineeringCost, rateDecimal);
+            //单方造价
+            tenderInfo.perCost = tenderInfo.buildingArea.toString().trim() === '' || tenderInfo.buildingArea == 0 ?
+                                 tenderInfo.buildingArea.toString().trim() : scMathUtil.roundTo(tenderInfo.engineeringCost / tenderInfo.buildingArea, perCostDecimal);
         }
         for(let eng of engineerings){
             let engInfo = IDMapping[eng.ID];

+ 34 - 16
web/building_saas/main/html/main.html

@@ -587,13 +587,17 @@
                                             <div class="row m-0">
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">单价</div>
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">单价</span>
+                                                        </div>
                                                         <input type="number" name="bills-unitPrice" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">合价</div>
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">合价</span>
+                                                        </div>
                                                         <input type="number" name="bills-totalPrice" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
@@ -602,40 +606,52 @@
                                             <div class="row m-0">
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">工程量</div>
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">工程量</span>
+                                                        </div>
                                                         <input type="number" name="ration-quantity" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">单价</div>
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">单价</span>
+                                                        </div>
                                                         <input type="number" name="ration-unitPrice" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">合价</div>
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">合价</span>
+                                                        </div>
                                                         <input type="number" name="ration-totalPrice" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
                                             </div>
-                                            <h5 class="mt-3">人材机</h5>
+                                            <h5 class="mt-3">工料机</h5>
                                             <div class="row m-0">
-                                                <div style="width: 23.3%;">
-                                                    <div style="width:120px;" class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">消耗量</div>
+                                                <div class="col-sm-3">
+                                                    <div class="input-group input-group-sm mb-2">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">消耗量</span>
+                                                        </div>
                                                         <input type="number" name="glj-quantity" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
-                                                <div  style="width: 38.3%;">
-                                                    <div style="width:190px;" class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">单价(有组成物)</div>
+                                                <div class="col-sm-4">
+                                                    <div class="input-group input-group-sm mb-2">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">单价<small class="text-muted">(有组成物)</small></span>
+                                                        </div>
                                                         <input type="number" name="glj-unitPriceHasMix" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
-                                                <div style="width: 38.3%;">
-                                                    <div  style="width:190px;" class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">单价(无组成物)</div>
+                                                <div class="col-sm-4">
+                                                    <div class="input-group input-group-sm mb-2">
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">单价<small class="text-muted">(无组成物)</small></span>
+                                                        </div>
                                                         <input type="number" name="glj-unitPrice" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>
@@ -644,7 +660,9 @@
                                             <div class="row m-0">
                                                 <div class="col-sm-3">
                                                     <div class="input-group input-group-sm mb-2">
-                                                        <div class="input-group-addon">费率</div>
+                                                        <div class="input-group-prepend">
+                                                            <span class="input-group-text">费率</span>
+                                                        </div>
                                                         <input type="number" name="feeRate" class="form-control" value="2" step="1" max="6" min="0">
                                                     </div>
                                                 </div>

+ 36 - 0
web/building_saas/main/js/views/sub_view.js

@@ -140,6 +140,40 @@ $("#linkTZJNR").click(function () {
     gljOprObj.activeTab='#linkTZJNR';
 });
 
+//应用到选中清单、应用到所有,添加位置列如果隐藏了,则重新显示
+function colSettingAddPosition(addPosition){
+    let settingMapping = {1: 'itemCharacterText', 2: 'name', 3: 'jobContentText', 4: 'both'};
+    let settingInfo = settingMapping[addPosition];
+    if(!settingInfo){
+        return;
+    }
+    let fields = [];
+    if(settingInfo === 'both'){
+        fields = [settingMapping['1'], settingMapping['3']];
+    }
+    else{
+        fields = [settingInfo];
+    }
+    let needToUpdate = false;
+    let showItemCharacter = false;
+    for(let field of fields){
+        let colVisible = colSettingObj.getVisible(field);
+        if(field === settingMapping['1'] && !colVisible){
+            showItemCharacter = true;
+        }
+        if(!colVisible){
+            colSettingObj.setVisible(field, true);
+            needToUpdate = true;
+        }
+    }
+    if(showItemCharacter){
+        switchTznrHtml(false);
+    }
+    if(needToUpdate){
+       colSettingObj.updateColSetting(true);
+    }
+}
+
 // 应用到选中清单
 let isSaving = false;
 $("#use-to-current").click(function() {
@@ -150,6 +184,7 @@ $("#use-to-current").click(function() {
         return false;
     }
     const setting = getAddRuleSetting();
+    colSettingAddPosition(setting.position);
     isSaving = true;
     const self = $(this);
     self.attr('disabled', 'disabled');
@@ -177,6 +212,7 @@ $("#use-to-all").click(function() {
     }
     let treeNode = projectObj.mainController.tree;
     const setting = getAddRuleSetting();
+    colSettingAddPosition(setting.position);
     if (treeNode.items === undefined || treeNode.items.length <= 0) {
         return false;
     }

+ 6 - 2
web/building_saas/pm/js/pm_newMain.js

@@ -59,7 +59,7 @@ const projTreeObj = {
             {name: '税金', dataCode: 'tax', width: 120, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '占造价比例(%)', dataCode: 'rate', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '建筑面积', dataCode: 'buildingArea', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
-            {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right'},
+            {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
             {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'},
             {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'},
             {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'}
@@ -2349,7 +2349,11 @@ function getAddTenderFile(tenderName, selected, options){
     //选择的是新建单价/费率文件
     if(selValue === ''){
         //若新建的单位工程名称与建设项目下文件重名,则引用该文件
-        for(let option of options){
+        for(let i = 0; i < options.length; i++){
+            if(i === 0){
+                continue;
+            }
+            let option = options[i];
             if($(option).text() === tenderName){
                 rst.id = $(option).val();
                 break;