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

导出时,应正确获取评标材料、暂估材料、承包人材料数据及关联小数位数

zeweizhong 6 лет назад
Родитель
Сommit
7b0966a0c2

+ 11 - 4
web/building_saas/main/js/models/exportStandardInterface.js

@@ -1140,9 +1140,12 @@ const XMLStandard = (function () {
             if (gljSumarryInfo) {
                 //投标导出承包人材料相关
                 if (exportKind === _config.EXPORT_KIND.Tender) {
+                    let projectGLJList = tenderDetail.projectGLJ.datas.gljList;
+                    let contractorList = tenderDetail.contractor_list.datas;
+                    let decimalObj = tenderDetail.projectInfo.property.decimal;
                     let adjustType = tenderData.property.gljAdjustType || _config.ADJUST_TYPE.info;
                     //承包人材料差额法表
-                    let diffGljs = materialAdjustObj.getPirceInfoDatas(tenderDetail.projectGLJ.datas.gljList, tenderDetail.contractor_list.datas);
+                    let diffGljs = materialAdjustObj.getPirceInfoDatas(projectGLJList, contractorList, decimalObj);
                     if (diffGljs.length) {
                         let diffP = new DifferentiaGlj();
                         diffGljs.forEach(data => {
@@ -1156,7 +1159,7 @@ const XMLStandard = (function () {
                     let engineeringCostNode = tenderDetail.Bills.tree.roots.find(node => node.getFlag() === fixedFlag.ENGINEERINGCOST);
                     if (engineeringCostNode) {
                         let ecTotalFee = _util.getFee(engineeringCostNode.data.fees, 'common.totalFee');
-                        let exponentialGljs = materialAdjustObj.getPriceCoeDatas(tenderDetail.projectGLJ.datas.gljList, tenderDetail.contractor_list.datas, ecTotalFee);
+                        let exponentialGljs = materialAdjustObj.getPriceCoeDatas(projectGLJList, contractorList, ecTotalFee, decimalObj);
                         if (exponentialGljs.length) {
                             // 变值权重B累加
                             let totalVarWeight = exponentialGljs.reduce((acc, cur) => acc += cur.varWeight || 0, 0);
@@ -2001,8 +2004,12 @@ const XMLStandard = (function () {
                     }
                     gljSummary.children.push(gljEle);
                 }
+                const projectGLJList = detail.projectGLJ.datas.gljList;
+                const bidEvaluationList = detail.bid_evaluation_list.datas;
+                const evaluateList = detail.evaluate_list.datas;
+                const decimalObj = detail.projectInfo.property.decimal;
                 // 评标材料
-                const bidEvaluationDetail = loadMaterialDetail(configMaterialObj.getBidMaterialDatas());
+                const bidEvaluationDetail = loadMaterialDetail(configMaterialObj.getBidMaterialDatas(projectGLJList, bidEvaluationList, decimalObj));
                 evalBidMaterial.children.push(...bidEvaluationDetail);
                 // 给建设项目下的评审材料汇总设置明细数据 //code name specs unit marketPrice
                 const appraisalSummaryDetail = bidEvaluationDetail.map(ele => {
@@ -2018,7 +2025,7 @@ const XMLStandard = (function () {
                 });
                 appraisalSummary.children.push(...appraisalSummaryDetail);
                 // 暂估材料
-                const evaluationDetail = loadMaterialDetail(configMaterialObj.getEvaluateMaterialDatas());
+                const evaluationDetail = loadMaterialDetail(configMaterialObj.getEvaluateMaterialDatas(projectGLJList, evaluateList, decimalObj));
                 evalEstimateMaterial.children.push(...evaluationDetail);
                 return {gljSummary, evalBidMaterial, evalEstimateMaterial};
             }

+ 14 - 8
web/building_saas/main/js/views/config_material_view.js

@@ -223,10 +223,13 @@ let configMaterialObj = {
         }
         return _.sortByAll(datas,'code');
     },
-    getEvaluateMaterialDatas:function () {
+    getEvaluateMaterialDatas:function (projectGLJList, evaluateList, decimalObj) {
+        projectGLJList = projectGLJList ? projectGLJList : projectObj.project.projectGLJ.datas.gljList;
+        evaluateList = evaluateList ? evaluateList : projectObj.project.evaluate_list.datas;
+        const billsDecimal = decimalObj ? decimalObj.bills.totalPrice : getDecimal('bills.totalPrice');
         let datas = [];
-        let gljMap = _.indexBy(projectObj.project.projectGLJ.datas.gljList,'id');
-        for(let e of projectObj.project.evaluate_list.datas){
+        let gljMap = _.indexBy(projectGLJList,'id');
+        for(let e of evaluateList){
             let t = {
                 ID:e.ID,
                 projectID: e.projectID,
@@ -255,16 +258,19 @@ let configMaterialObj = {
                 t.remark = pglj.remark;
                 t.quantity = pglj.quantity;
             }
-            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,getDecimal('bills.totalPrice'));
+            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,billsDecimal);
             datas.push(t);
         }
         return _.sortByAll(datas,'code');
     },
 
-    getBidMaterialDatas:function () {
+    getBidMaterialDatas:function (projectGLJList, bidEvaluationList, decimalObj) {
+        projectGLJList = projectGLJList ? projectGLJList : projectObj.project.projectGLJ.datas.gljList;
+        bidEvaluationList = bidEvaluationList ? bidEvaluationList : projectObj.project.bid_evaluation_list.datas;
+        const billsDecimal = decimalObj ? decimalObj.bills.totalPrice : getDecimal('bills.totalPrice');
         let datas = [];
-        let gljMap = _.indexBy(projectObj.project.projectGLJ.datas.gljList,'id');
-        for(let e of projectObj.project.bid_evaluation_list.datas){
+        let gljMap = _.indexBy(projectGLJList,'id');
+        for(let e of bidEvaluationList){
             let t = {
                 ID:e.ID,
                 projectID: e.projectID,
@@ -293,7 +299,7 @@ let configMaterialObj = {
                 t.quantity = pglj.quantity;
                 t.is_evaluate = pglj.is_evaluate;
             }
-            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,getDecimal('bills.totalPrice'));
+            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,billsDecimal);
             datas.push(t);
         }
         return _.sortByAll(datas,'code');

+ 6 - 4
web/building_saas/main/js/views/material_adjust_view.js

@@ -172,10 +172,11 @@ let materialAdjustObj = {
         sheetCommonObj.showData(this.priceCoeSheet, this.priceCoeSetting,this.priceCoeDatas);
         this.priceCoeSheet.setRowCount(this.priceCoeDatas.length);
     },
-    getPirceInfoDatas:function(projectGLJList,contractor_list){
+    getPirceInfoDatas:function(projectGLJList,contractor_list,decimalObj){
         let datas = [];
         let pgljList =   projectGLJList?projectGLJList:projectObj.project.projectGLJ.datas.gljList;
         let contractorList = contractor_list?contractor_list:projectObj.project.contractor_list.datas;
+        let billsDecimal = decimalObj?decimalObj.bills.totalPrice:getDecimal('bills.totalPrice');
         let gljMap = _.indexBy(pgljList,'id');
         for(let e of contractorList){
             let t = {
@@ -205,15 +206,16 @@ let materialAdjustObj = {
                 t.is_evaluate = pglj.is_evaluate;
                 t.quantity = pglj.quantity;
             }
-            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,getDecimal('bills.totalPrice'));
+            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,billsDecimal);
             datas.push(t);
         }
         return _.sortByAll(datas,'code');
     },
-    getPriceCoeDatas:function (projectGLJList,contractor_list,totalFee) {
+    getPriceCoeDatas:function (projectGLJList,contractor_list,totalFee,decimalObj) {
         let datas = [];
         let pgljList =   projectGLJList?projectGLJList:projectObj.project.projectGLJ.datas.gljList;
         let contractorList = contractor_list?contractor_list:projectObj.project.contractor_list.datas;
+        let billsDecimal = decimalObj?decimalObj.bills.totalPrice:getDecimal('bills.totalPrice');
         let gljMap = _.indexBy(pgljList,'id');
         if(!gljUtil.isDef(totalFee)){
             let node =  projectObj.project.Bills.getEngineeringCostNode(projectObj.mainController);
@@ -247,7 +249,7 @@ let materialAdjustObj = {
                 t.quantity = pglj.quantity;
                 t.is_evaluate = pglj.is_evaluate;
             }
-            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,getDecimal('bills.totalPrice'));
+            t.totalPrice = scMathUtil.roundForObj(parseFloat(t.quantity) * parseFloat(t.marketPrice) ,billsDecimal);
             if(totalFee !==0) t.varWeight = scMathUtil.roundForObj(t.totalPrice/totalFee,2);
             datas.push(t);
         }