Jelajahi Sumber

update FeeRate

zhangweicheng 7 tahun lalu
induk
melakukan
996ea83f08

+ 19 - 2
modules/fee_rates/controllers/fee_rates_controller.js

@@ -54,7 +54,8 @@ module.exports = {
     getChangeInfo:getChangeInfo,
     changeFeeRateFileFromCurrent:changeFeeRateFileFromCurrent,
     changeFeeRateFileFromOthers:changeFeeRateFileFromOthers,
-    setFeeRateToBill:setFeeRateToBill
+    setFeeRateToBill:setFeeRateToBill,
+    updateFeeRate:updateFeeRate
 }
 
 function libNames(req, res) {
@@ -193,4 +194,20 @@ async function setFeeRateToBill(req,res) {
         result.message = err.message;
     }
     res.json(result);
-}
+}
+
+async function updateFeeRate(req,res) {
+    let result={
+        error:0
+    }
+    try {
+        let data = req.body.data;
+        let uresult= await feeRateFacde.updateFeeRate(data);
+        result.data=uresult;
+    }catch (err){
+        console.log(err);
+        result.error=1;
+        result.message = err.message;
+    }
+    res.json(result);
+}

+ 7 - 1
modules/fee_rates/facade/fee_rates_facade.js

@@ -27,7 +27,8 @@ module.exports={
     changeFeeRateFileFromOthers:changeFeeRateFileFromOthers,
     newFeeRateFile:newFeeRateFile,
     getFeeRatesByProject:getFeeRatesByProject,
-    setFeeRateToBill:setFeeRateToBill
+    setFeeRateToBill:setFeeRateToBill,
+    updateFeeRate:updateFeeRate
 };
 let operationMap={
     'ut_create':create_fee_rate,
@@ -358,6 +359,11 @@ async function setFeeRateToBill(data){
     return "ok";
 }
 
+async function updateFeeRate(data) {
+    data=JSON.parse(data);
+   return  await feeRateModel.findOneAndUpdate(data.query,data.doc);
+}
+
 async function changeFeeRateFileFromCurrent(jdata){
     let data = JSON.parse(jdata);
     let newFeeRateFile=data.newFeeRateFile;

+ 1 - 1
modules/fee_rates/routes/fee_rates_route.js

@@ -19,7 +19,7 @@ module.exports = function (app) {
     frRouter.post('/changeFeeRateFileFromCurrent', frController.changeFeeRateFileFromCurrent);
     frRouter.post('/changeFeeRateFileFromOthers', frController.changeFeeRateFileFromOthers);
     frRouter.post('/setFeeRateToBill', frController.setFeeRateToBill);
-
+    frRouter.post('/updateFeeRate', frController.updateFeeRate);
     app.use('/feeRates',frRouter);
 }
 

+ 1 - 0
modules/main/facade/calc_program_facade.js

@@ -88,6 +88,7 @@ function save (user_id, datas, callback) {
 }
 
 function saveCalcItem(dataObj, callback) {
+    dataObj=JSON.parse(dataObj);
     projectCalcProgramsModel.findOne({projectID: dataObj.projectID}, function (err, data) {
         if(!err){
             for (let i = 0; i < data.templates.length; i++){

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

@@ -9,7 +9,7 @@
 
 <body>
 <div style="">
-    <img id="f_btn" src="/web/dest/css/img/feeRate_btn.jpg" alt="" />
+    <img id="f_btn" src="/web/dest/css/img/feeRate_btn.jpg" alt="" style="display: none" />
 </div>
     <div class="toolsbar px-1">
     </div>

+ 44 - 0
web/building_saas/main/js/models/fee_rate.js

@@ -247,6 +247,47 @@ var FeeRate = {
                 }
             }
         };
+
+        FeeRate.prototype.updateFeeRateFromCalc=function (value,editInfo) {
+            var value= number_util.checkNumberValue(value,feeRate_consts.decimal);
+            if(value){
+                if(editInfo.calcItem.feeRateID){
+                    var rate = projectObj.project.FeeRate.getFeeRateByID(editInfo.calcItem.feeRateID);
+                    if(rate!=undefined){
+                        this.updateFeeRateByCalc(rate,value,editInfo.calcItem);
+                        return;
+                    }
+                }
+                editInfo.calcItem.feeRate=value;
+                editInfo.calcItem.feeRateID=null;
+                var data={'projectID': projectObj.project.ID(),'templatesID': editInfo.template.ID,'calcItem': editInfo.calcItem};
+                rationPM.saveCalcItem(data,function (result) {
+                    rationPM.refreshDetailSheet();
+                })
+                //updateCal
+            }else {
+                rationPM.refreshDetailSheet();
+            }
+        };
+        FeeRate.prototype.updateFeeRateByCalc=function (rate,value,calcItem) {
+            var me=this;
+            var data={
+                query:{
+                    'ID':this.getActivateFeeRateID(),
+                    'rates.ID':rate.ID
+                },
+                doc:{
+                    'rates.$.rate':value
+                }
+            }
+            CommonAjax.post('/feeRates/updateFeeRate', data, function (data) {
+                calcItem.feeRateID=rate.ID;
+                calcItem.feeRate=value;
+                rate.rate=value;
+                rationPM.refreshDetailSheet();
+                socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
+            });
+        }
         FeeRate.prototype.refreshBillsByRateID=function(rate,value){
             rate.rate=value;
             var nodes = _.filter(projectObj.project.mainTree.items,function (n) {
@@ -324,6 +365,9 @@ var FeeRate = {
                 }
             this.setFeeRateToBill(data,callback);
         };
+
+       
+
         FeeRate.prototype.setFeeRateToBill=function(data,callback){
             CommonAjax.post('/feeRates/setFeeRateToBill', data, function (data) {
                 callback(data);

+ 30 - 20
web/building_saas/main/js/views/calc_program_manage.js

@@ -56,12 +56,12 @@ let rationPM = {
 
         me.mainSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onMainEnterCell);
         me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellChanged, me.onDetailCellChanged);
-        //me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.CellClick, me.onCellClick);
+        me.detailSpread.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
         let mSheet = me.mainSpread.getSheet(0);
         sheetCommonObj.showData(mSheet, me.mainSetting, me.datas);
 
         let dSheet = me.detailSpread.getSheet(0);
-        feeRateObject.setFeeRateCellCol(dSheet,4);
+        feeRateObject.setFeeRateCellCol(dSheet,_.findIndex(me.detailSetting.header,{'dataCode':'feeRate'}));
         dSheet.name('calc_detail');
         sheetCommonObj.showData(dSheet, me.detailSetting, me.datas[0].calcItems);
 
@@ -76,30 +76,25 @@ let rationPM = {
         sheetCommonObj.showData(dSheet, me.detailSetting, dData);
         me.detailSpread.resumePaint();
     },
-
-    saveCalcItem: function (projectID, templatesID, calcItem) {
+    onEditEnded: function(sender, args) {
+        var me = rationPM;
+        if(me.detailSetting.header[args.col].dataCode=='feeRate'){
+            var editInfo= me.getSelectionInfo();
+            projectObj.project.FeeRate.updateFeeRateFromCalc(args.editingText,editInfo);
+        }
+    },
+    saveCalcItem: function (data,callback) {//data
         let me = this;
-/*        let projectID = projectInfoObj.projectInfo.ID,
-            templatesID = me.datas,
-            calcItem = {
-                "ID" : 99,
-                "code" : "test",
-                "name" : "testName",
-                "fieldName" : "direct",
-                "dispExpr" : "F2+F5+F6+F10",
-                "expression" : "@('2') + @('5') + @('6') + @('10')",
-                "compiledExpr" : "",
-                "statement" : "基价人工费+基价材料费+基价机械费+未计价材料费"
-            };*/
-
         $.ajax({
-            type: 'post',
+            type: 'POST',
             url: '/calcProgram/saveCalcItem',
-            data: {projectID: projectID, templatesID: templatesID, calcItem: calcItem},
+            data: {'data':JSON.stringify(data)},
             dataType: 'json',
             success: function (result) {
                 if(!result.error){
-                    alert('成功:' + result.message);
+                    if(callback){
+                        callback(result);
+                    }
                 }
                 else{
                     alert('失败:' + result.message);
@@ -107,6 +102,21 @@ let rationPM = {
             }
         })
     },
+    getSelectionInfo:function () {
+        var templateIndex = this.mainSpread.getActiveSheet().getActiveRowIndex();
+        var dIndex = this.detailSpread.getActiveSheet().getActiveRowIndex();
+        var info = {
+            template:this.datas[templateIndex],
+            calcItem:this.datas[templateIndex].calcItems[dIndex]
+        }
+        return info;
+    },
+    refreshDetailSheet:function () {
+        var me=this;
+        var mainSheetIndex = me.mainSpread.getActiveSheet().getActiveRowIndex();
+        sheetCommonObj.showData(me.detailSpread.getSheet(0), me.detailSetting,me.datas[mainSheetIndex].calcItems);
+    }
+
 };
 
 $(document).ready(function(){

+ 14 - 1
web/building_saas/main/js/views/fee_rate_view.js

@@ -640,11 +640,24 @@ var feeRateObject={
             $("#fee_rate_tree").modal('hide');
         });
     },
+    submitFeeRateFromCalc:function () {
+        var rate = feeRateObject.feeRateSelection;
+        var calInfo = rationPM.getSelectionInfo();
+        calInfo.calcItem.feeRateID=rate.ID;
+        calInfo.calcItem.feeRate=null;
+        var data={'projectID': projectObj.project.ID(),'templatesID': calInfo.template.ID,'calcItem': calInfo.calcItem};
+        rationPM.saveCalcItem(data,function (result) {
+            calInfo.calcItem.feeRate=rate.rate;
+            me.refreshDetailSheet();
+            $("#fee_rate_tree").modal('hide');
+        });
+        console.log(calInfo);
+    },
     submitFeeRateBySelect:function () {
         var validate = this.checkSelectedFeeRate();
         if(validate){
             if($('#edit_from').val()=='calc_detail'){
-                //do calc_detail
+                this.submitFeeRateFromCalc();
             }else {
                 this.submitFeeRateFromBill();
             }

+ 1 - 1
web/building_saas/main/js/views/glj_view.js

@@ -301,7 +301,7 @@ var gljOprObj = {
         if(args.row>=me.sheetData.length){
             return;
         }
-        if(me.setting.header[args.col].dataCode=='marketPriceAdjust'){//市场单价调整
+        if(me.setting.header[args.col]&&me.setting.header[args.col].dataCode=='marketPriceAdjust'){//市场单价调整
             var type = me.sheetData[args.row].shortName;
             var index= _.indexOf(me.setting.notEditedType,type);
             if(index!=-1){