Browse Source

update FeeRate

zhangweicheng 7 years atrás
parent
commit
c44fd3414f

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

@@ -349,8 +349,13 @@ async function getFeeRatesByProject(rootProjectID) {
 
 async function setFeeRateToBill(data){
     data=JSON.parse(data);
-    let result  = await billModel.model.findOneAndUpdate(data.query,data.doc);
-    return result
+    if(data.hasOwnProperty('bills')){
+        await billModel.model.findOneAndUpdate(data.bills.query,data.bills.doc);
+    }
+    if(data.hasOwnProperty('feeRate')){
+        await feeRateModel.findOneAndUpdate(data.feeRate.query,data.feeRate.doc);
+    }
+    return "ok";
 }
 
 async function changeFeeRateFileFromCurrent(jdata){

+ 15 - 2
public/web/number_util.js

@@ -10,6 +10,19 @@ var  number_util = {
     isNumber : function (obj) {
         return obj === +obj;
     },
-
-
+    checkNumberValue: function (editingText, decimal) {
+        let value;
+        if (decimal) {
+            value = Number(editingText);
+            if (number_util.isNumber(value)) {
+                value = value.toDecimal(decimal);
+            } else {
+                value = null;
+                alert('当前输入的数据类型不正确,请重新输入。');
+            }
+        } else {
+            value = editingText;
+        }
+        return value;
+    }
 }

+ 1 - 1
public/web/socket/connection.js

@@ -8,7 +8,7 @@ socketObject={
       socket = io('http://'+hostName+':3300');
       socket.on('connect', function () {
 
-          var roomID = projectObj.project.FeeRate.getActivateFeeRateID();
+          var roomID = projectObj.project.FeeRate.getActivateFeeRateFileID();
           socket.emit('join', roomID);
           console.log('连接成功');
       });

+ 3 - 3
socketdockerfile

@@ -1,8 +1,8 @@
-FROM server:2.0
+FROM costbase:latest
 
-COPY . ConstructionCost
+WORKDIR /home/ConstructionCost
 
-WORKDIR ConstructionCost
+RUN git pull http://192.168.1.12:3000/SmartCost/ConstructionCost master
 
 RUN cnpm install 
 

+ 115 - 16
web/building_saas/main/js/models/fee_rate.js

@@ -33,7 +33,7 @@ var FeeRate = {
             }
             return feeRate;
         };
-        FeeRate.prototype.getActivateFeeRateID = function(){
+        FeeRate.prototype.getActivateFeeRateFileID = function(){
             var feeRate = this.getActivateFeeRate();
             if(feeRate){
                 return feeRate.ID;
@@ -41,6 +41,14 @@ var FeeRate = {
                 return 0;
             }
         };
+        FeeRate.prototype.getActivateFeeRateID = function(){
+            var feeRate = this.getActivateFeeRate();
+            if(feeRate){
+                return feeRate.feeRateID;
+            }else {
+                return 0;
+            }
+        };
         FeeRate.prototype.getFeeRateByID=function (ID) {
             var rates = this.getActivateFeeRate().rates;
             return _.find(rates,{'ID':ID})
@@ -115,6 +123,7 @@ var FeeRate = {
                 rateIndex:params.sourceIndex,
                 rate:params.dataItem
             }
+            doc.rate.rate =doc.rate.rate.toDecimal(feeRate_consts.decimal);
             this.updateFeeRate(query,doc);
             if(this.ifRateChange(params)){
                 this.synchronizeFeeRate();
@@ -130,7 +139,7 @@ var FeeRate = {
         FeeRate.prototype.updateFeeRate=function (query,doc) {
           var updateData = this.getUpdateData('ut_update',query,doc,'update_rates');
             project.pushNow('updateFeeRate',[this.sourceType],updateData);
-            socket.emit('feeRateChangeNotify', this.getActivateFeeRateID());
+            socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());
         };
         FeeRate.prototype.updateStatusBySelected = function (updateTasks) {
             var updateData = [];
@@ -173,7 +182,7 @@ var FeeRate = {
                     me.datas.libName=data.libName;
                     me.datas.feeRateID=data.feeRateID;
                     me.datas.rates=data.rates;
-                    socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
+                    socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
                     callback();
                 }
             });
@@ -198,7 +207,7 @@ var FeeRate = {
             var updateData = this.getUpdateData('ut_update',{projectID:projectInfoObj.projectInfo.ID},this.datas,'feeRateFileSaveAs');
             project.pushNow('updateFeeRate',[this.sourceType],updateData);
 
-            socket.emit('feeRateChangeNotify', this.getActivateFeeRateID());
+            socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());
             return  this.datas;
         };
         FeeRate.prototype.getChangeInfo = function (callback) {
@@ -216,17 +225,107 @@ var FeeRate = {
                 callback(data);
             });
         };
-        FeeRate.prototype.setFeeRateToBill=function (rate,bills,callback) {
-            var query={
-                ID:bills.ID,
-                projectID:bills.projectID,
-                deleteInfo:null
+        FeeRate.prototype.updateFeeRateFromBills=function(value,node){
+            var me =this;
+            if(node.sourceType === project.Bills.getSourceType()){
+                var value= number_util.checkNumberValue(value,feeRate_consts.decimal);
+                if(value){
+                    var bill = node.data;
+                    var rate =me.getFeeRateByID(bill.feeRateID);
+                    var data=me.getfbUpdateData(rate,bill,value);
+                    this.setFeeRateToBill(data,function (result) {
+                        if(data.hasOwnProperty('feeRate')){
+                            me.refreshBillsByRateID(rate,value);
+                            socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
+                        }else {
+                            bill.feeRate=value;
+                            projectObj.mainController.refreshTreeNode([node])
+                        }
+                    });
+                }else {
+                    projectObj.mainController.refreshTreeNode([node]);
+                }
+            }
+        };
+        FeeRate.prototype.refreshBillsByRateID=function(rate,value){
+            rate.rate=value;
+            var nodes = _.filter(projectObj.project.mainTree.items,function (n) {
+                if(n.sourceType==ModuleNames.bills&&n.data.feeRateID==rate.ID){
+                    n.data.feeRate=value;
+                    return true;
+                }else {
+                    return false;
+                }
+            })
+            if(nodes.length>0){
+                projectObj.mainController.refreshTreeNode(nodes)
             }
-            var doc={
-                feeRate:null,
-                feeRateID:rate.ID
+        };
+
+        FeeRate.prototype.getfbUpdateData=function (rate,bill,value) {
+            var data={};
+            if(bill.feeRateID){
+                data.feeRate={
+                    query:{
+                        'ID':this.getActivateFeeRateID(),
+                        'rates.ID':rate.ID
+                    },
+                    doc:{
+                        'rates.$.rate':value
+                    }
+                }
+            }else {
+                data.bills={
+                    query:{
+                        ID:bill.ID,
+                        projectID:bill.projectID,
+                        deleteInfo:null
+                    },
+                    doc:{
+                        feeRate:value
+                    }
+                }
             }
-            CommonAjax.post('/feeRates/setFeeRateToBill', {query:query,doc:doc}, function (data) {
+            return data;
+        };
+
+        FeeRate.prototype.cleanFeeRateID=function (node) {
+            var data ={
+                bills:{
+                    query:{
+                        ID:node.data.ID,
+                        projectID:node.data.projectID,
+                        deleteInfo:null
+                    },
+                    doc:{
+                        feeRate:null,
+                        feeRateID:null
+                    }
+                }
+            }
+            this.setFeeRateToBill(data,function (result) {
+                node.data.feeRate=null;
+                node.data.feeRateID=null;
+            });
+        };
+        FeeRate.prototype.submitFeeRateFromBill=function (rate,bills,callback) {
+            var data ={
+                    bills:{
+                        query:{
+                            ID:bills.ID,
+                            projectID:bills.projectID,
+                            deleteInfo:null
+                        },
+                        doc:{
+                            feeRate:null,
+                            feeRateID:rate.ID
+                        }
+                    }
+                }
+            this.setFeeRateToBill(data,callback);
+        };
+        FeeRate.prototype.setFeeRateToBill=function(data,callback){
+            CommonAjax.post('/feeRates/setFeeRateToBill', data, function (data) {
                 callback(data);
             });
         };
@@ -234,7 +333,7 @@ var FeeRate = {
             if(node.data.feeRateID){
                 var feeRate = this.getFeeRateByID(node.data.feeRateID);
                 if(feeRate){
-                    node.data.feeRate=feeRate.rate.toString();
+                    node.data.feeRate=parseFloat(feeRate.rate).toFixed(feeRate_consts.decimal);
                 }
             }
         };
@@ -248,7 +347,7 @@ var FeeRate = {
             CommonAjax.post('/feeRates/changeFeeRateFileFromCurrent', data, function (data) {
                 if (data) {
                     me.datas=data;
-                    socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
+                    socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
                     callback();
                 }
             });
@@ -266,7 +365,7 @@ var FeeRate = {
             CommonAjax.post('/feeRates/changeFeeRateFileFromOthers', data, function (data) {
                 if (data) {
                     me.datas=data;
-                    socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
+                    socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
                     callback();
                 }
             });

+ 4 - 1
web/building_saas/main/js/models/main_consts.js

@@ -15,4 +15,7 @@ const ModuleNames = {
     projectGLJ: 'project_glj',
     labour_coe: 'labour_coe',
     calc_program: 'calc_program'
-};
+};
+const feeRate_consts={
+    decimal:3
+}

+ 7 - 12
web/building_saas/main/js/views/fee_rate_view.js

@@ -18,7 +18,7 @@ var feeRateObject={
     sheetSetting: {
         header: [
             {headerName: "专业名称", headerWidth: 200, dataCode: "name", dataType: "String"},
-            {headerName: "值%", headerWidth: 150, dataCode: "rate", dataType: "String",hAlign: "right"},
+            {headerName: "值%", headerWidth: 150, dataCode: "rate", dataType: "Number",hAlign: "right",tofix:feeRate_consts.decimal},
             {headerName: "备注", dataCode: "memo", dataType: "String"}
         ],
         view: {
@@ -359,12 +359,7 @@ var feeRateObject={
         document.querySelector('#divFee').focus();
     },
     reFreshRateViews:function() {
-        if(this.mainViews){
-            this.mainViews.refresh()
-        }else {
-            feeRateObject.createSpreadView();
-            //setTimeout("feeRateObject.createSpreadView()",100);
-        }
+        feeRateObject.createSpreadView();
     },
     updateBySelect:function (rate,selectMap,mapID) {
        var selected = this.mainViews.getSelections()[0];
@@ -559,7 +554,7 @@ var feeRateObject={
             var option =  $("<option>").val(s.ID).text(s.name);
             $('#currentOptions').append(option);
         })
-        $('#currentOptions').val(projectObj.project.FeeRate.getActivateFeeRateID());
+        $('#currentOptions').val(projectObj.project.FeeRate.getActivateFeeRateFileID());
         $('#otherProject').empty();
         _.forEach(data.others,function (p) {
             var option =  $("<option>").val(p.ID).text(p.name);
@@ -635,12 +630,12 @@ var feeRateObject={
         }
         return validate;
     },
-    setFeeRateToBill:function () {
+    submitFeeRateFromBill:function () {
        var rate = feeRateObject.feeRateSelection;
        var selected = projectObj.project.mainTree.selected;
-        projectObj.project.FeeRate.setFeeRateToBill(rate,selected.data,function (data) {
+        projectObj.project.FeeRate.submitFeeRateFromBill(rate,selected.data,function (data) {
             selected.data.feeRateID=rate.ID.toString();
-            selected.data.feeRate=rate.rate.toString();
+            selected.data.feeRate=parseFloat(rate.rate).toFixed(feeRate_consts.decimal);
             projectObj.mainController.refreshTreeNode([selected]);
             $("#fee_rate_tree").modal('hide');
         });
@@ -651,7 +646,7 @@ var feeRateObject={
             if($('#edit_from').val()=='calc_detail'){
                 //do calc_detail
             }else {
-                this.setFeeRateToBill();
+                this.submitFeeRateFromBill();
             }
         }else {
             //$("#fee_rate_tree").modal('hide');

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

@@ -881,7 +881,6 @@ $(function(){
             gljOprObj.gljLibSheet = gljOprObj.gljLibSpresd.getSheet(0);
             gljOprObj.gljLibSheet.options.isProtected = true;
             gljOprObj.gljLibSheet.name('glj_lib');
-            console.log("show feeRate tree");
         }
         gljOprObj.gljLibSheetData =gljOprObj.AllRecode;
         var selected=null;

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

@@ -258,7 +258,9 @@ var projectObj = {
                 projectObj.updateAndReCalculate(node, fieldName, value);
             } else if (fieldName === 'feesIndex.common.unitFee') {
                 projectObj.updateAndReCalculate(node, fieldName, value);
-            } else {
+            } else if(fieldName ==='feeRate'){
+                project.FeeRate.updateFeeRateFromBills(value,node,fieldName);
+            }else {
                 if (node.sourceType === project.Bills.getSourceType()) {
                     project.Bills.updateField(node.source, fieldName, value, true);
                 } else if (node.sourceType === project.Ration.getSourceType()) {
@@ -271,6 +273,8 @@ var projectObj = {
                 }
                 projectObj.mainController.refreshTreeNode([node]);
             }
+        }else if(value==null&&fieldName ==='feeRate'){
+            project.FeeRate.cleanFeeRateID(node);
         }
     },
     checkMainSpread: function () {