chenshilong 7 år sedan
förälder
incheckning
3bc1f8e42e

+ 13 - 0
modules/main/controllers/project_controller.js

@@ -123,5 +123,18 @@ module.exports = {
             result.message = err.message;
         }
         res.json(result);
+    },
+    saveProperty: function(req, res){
+        let result = {error: 0, message: '', data: null};
+        let data = JSON.parse(req.body.data);
+        project_facade.saveProperty(data, function (err, data) {
+            if (err == ''){
+                result.data = data;
+            }else{
+                result.error = 1;
+                result.message = err;
+            }
+            res.json(result);
+        })
     }
 };

+ 19 - 1
modules/main/facade/project_facade.js

@@ -2,6 +2,7 @@
  * Created by zhang on 2018/1/26.
  */
 let mongoose = require('mongoose');
+let logger = require("../../../logs/log_helper").logger;
 let  projectsModel = mongoose.model('projects');
 let async_n = require("async");
 let _ = require('lodash');
@@ -19,7 +20,8 @@ module.exports = {
     markUpdateProject:markUpdateProject,
     removeProjectMark:removeProjectMark,
     updateNodes:updateNodes,
-    calcInstallationFee:calcInstallationFee
+    calcInstallationFee:calcInstallationFee,
+    saveProperty: saveProperty
 };
 
 async function calcInstallationFee(data) {
@@ -233,4 +235,20 @@ function generateMarkTask(value,projectID) {
         }
     };
     return task
+}
+
+// {projectID: 5, propertyName: 'aaa', propertyValue: 1}
+function saveProperty(data, callback){
+    let obj = {};
+    let pn = 'property.' + data.propertyName;
+    obj[pn] = data.propertyValue;
+    projectsModel.update({"ID": data.projectID}, obj, function (err) {
+        if (err) {
+            logger.err(pn + ' save error: ' + err);
+            callback(err, null)
+        } else {
+            logger.info(pn + ' saved.');
+            callback('', null);
+        }}
+    );
 }

+ 1 - 0
modules/main/routes/project_route.js

@@ -13,6 +13,7 @@ module.exports = function (app) {
     projectRouter.post('/removeProjectMark', projectController.removeProjectMark);
     projectRouter.post('/updateNodes', projectController.updateNodes);
     projectRouter.post('/calcInstallationFee', projectController.calcInstallationFee);
+    projectRouter.post('/saveProperty', projectController.saveProperty);
 
     app.use('/project',projectRouter);
 };

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

@@ -16,8 +16,15 @@
     <div class="container-fluid">
         <div class="row">
             <div class="col-lg-2 p-0">
-                <div class="main-data-not" id="mainSpread">
+                <div id="divSelect" style="text-align:left;height:45px;line-height:45px;">
+                    <!--<label>计算程序文件:</label>-->
+                    <select id='calcProgramFileSelect' style="width:98%;height:30px;">
+                        <option value="none">无</option>
+                        <option value="1" selected>计算程序2013标准</option>
+                        <option value="2">计算程序2018标准</option>
+                    </select>
                 </div>
+                <div class="main-data-not" id="mainSpread"></div>
             </div>
             <div class="col-lg-10 p-0">
                 <div class="main-data-not" id="detailSpread">

+ 4 - 2
web/building_saas/main/js/models/calc_program.js

@@ -1548,9 +1548,11 @@ class CalcProgram {
                             rtf = parseFloatPlus(node.data.feesIndex[ft.type].totalFee).toDecimal(decimalObj.bills.totalPrice);
                             rttf = parseFloatPlus(node.data.feesIndex[ft.type].tenderTotalFee).toDecimal(decimalObj.bills.totalPrice);
                         };
+                        // 取费方式为子目含量,清单行/列的XX单价应 =ROUND( ∑ROUND(定额XX单价*含量,清单单价精度),清单单价精度)
                         if (me.project.property.billsCalcMode === leafBillGetFeeType.rationContent) {
-                            buf = (buf + (ruf * parseFloatPlus(node.data.quantity)).toDecimal(decimalObj.bills.unitPrice)).toDecimal(decimalObj.process);
-                            btuf = (btuf + (rtuf * parseFloatPlus(node.data.tenderQuantity)).toDecimal(decimalObj.bills.unitPrice)).toDecimal(decimalObj.process);
+                            buf = (buf + (ruf * parseFloatPlus(node.data.contain)).toDecimal(decimalObj.bills.unitPrice)).toDecimal(decimalObj.process);
+                            node.data.tenderContaion = (node.data.tenderQuantity / bq).toDecimal(decimalObj.decimal.process);
+                            btuf = (btuf + (rtuf * parseFloatPlus(node.data.tenderContaion)).toDecimal(decimalObj.bills.unitPrice)).toDecimal(decimalObj.process);
                         };
                         sum_rtf = (sum_rtf + rtf).toDecimal(decimalObj.process);
                         sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);

+ 4 - 0
web/building_saas/main/js/models/project.js

@@ -318,6 +318,10 @@ var PROJECT = {
             CommonAjax.post("/project/markUpdateProject",{updateInfo:data,type:type});
         };
 
+        project.prototype.saveProperty = function (propertyName, propertyValue) {
+            CommonAjax.post("/project/saveProperty", {projectID: this.ID(), propertyName: propertyName, propertyValue: propertyValue});
+        };
+
         project.prototype.projectMarkChecking = function () {
             let  changeMark = projectInfoObj.projectInfo.changeMark;
             if(changeMark&&changeMark!=''){

+ 5 - 1
web/building_saas/main/js/views/tender_price_view.js

@@ -401,7 +401,10 @@ let tender_obj={
     doTenderCalc: function(tender){
         if (tender != tenderTypes.ttCalc)
             tender_obj.cleanCacheCoes();
-        let callback = function () { tender_obj.showTenderData() };
+        let callback = function () {
+            projectObj.project.saveProperty('hasTender', true);
+            tender_obj.showTenderData();
+        };
         projectObj.project.calcProgram.calcAllNodesAndSave(calcAllType.catAll, callback, tender);
     }
 };
@@ -436,6 +439,7 @@ $(function () {
             }
         }
         datas.push({type:ModuleNames.project,data:{'ID' : projectObj.project.ID(),'property.tenderSetting.gljPriceTenderCoe':1}});//恢复人材机单价调整系数为1。
+        datas.push({type:ModuleNames.project,data:{'ID' : projectObj.project.ID(),'property.hasTender': false}});
         me.updateTenderData(datas,function () {
             me.refreshTenderTreeByDatas(datas);
         });