소스 검색

人工系数交叉表存储。

Chenshilong 7 년 전
부모
커밋
4cb95dc8d9

+ 18 - 2
modules/main/controllers/labour_coe_controller.js

@@ -7,7 +7,8 @@ let labourCoeFacade = require('../facade/labour_coe_facade');
 
 module.exports = {
     getProjectLabourCoe: getProjectLabourCoe,
-    getStdLabourCoe: getStdLabourCoe
+    getStdLabourCoe: getStdLabourCoe,
+    save: save
 };
 
 async function getProjectLabourCoe(req, res) {
@@ -29,7 +30,7 @@ async function getStdLabourCoe(req, res) {
     let result = {error: 0, message: '', data: null};
 
     try {
-        let stdLC = await labourCoeFacade.getStdLabourCoe(req.body.ID);
+        let stdLC = await labourCoeFacade.getStdLabourCoe(JSON.parse(req.body.data).ID);
         result.data= stdLC;
     }catch (err){
         console.log(err);
@@ -39,3 +40,18 @@ async function getStdLabourCoe(req, res) {
 
     res.json(result);
 };
+
+function save(req, res) {
+    let result = {error: 0, message: '', data: null};
+
+    labourCoeFacade.save(req.body.data, function (err, message, data) {
+        if (err == 0){
+            result.data = data;
+        }else{
+            result.error = 1;
+            result.message = message;
+        }
+    });
+
+    res.json(result);
+};

+ 16 - 2
modules/main/facade/labour_coe_facade.js

@@ -83,6 +83,20 @@ function getData(projectID, callback) {
 };
 
 // 统一的 save() 方法供project调用
-function save (user_id, datas, callback) {
-    projectLabourCoesModel.update({"projectID": 553}, {"libName":"goo"}, callback(null, {data: 'ok'}));
+function save (data, callback) {
+    let updateArr = [];
+    let datas = JSON.parse(data);
+    for (let Item of datas.updateData) {
+         let ItemObj = {
+             updateOne: {
+                 filter: {projectID: datas.projectID, 'coes.ID': Item.ID},
+                 update: { 'coes.$.coe': Item.value }
+             }
+         };
+         updateArr.push(ItemObj);
+    };
+    // console.log(JSON.stringify(updateArr));
+    projectLabourCoesModel.bulkWrite(updateArr)
+        .then(callback(0, '', null))
+        .catch(function (err) {callback(1, err, null)});
 }

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

@@ -11,6 +11,7 @@ module.exports = function (app) {
 
     lcRouter.post('/getProjectLabourCoe', lcController.getProjectLabourCoe);
     lcRouter.post('/getStdLabourCoe', lcController.getStdLabourCoe);
+    lcRouter.post('/save', lcController.save);
 
     app.use('/labourCoe',lcRouter);
 }

+ 17 - 0
web/building_saas/main/js/models/labour_coe.js

@@ -21,5 +21,22 @@ class LabourCoe {
             // do
         }
     };
+
+    refreshData (data){
+        let me = this;
+        if (data.libID && data.libID != me.datas.libID){
+            me.datas.libID = data.libID;
+            me.datas.libName = data.libName;
+        };
+
+        for (let newItem of data.newItemArr){
+              for (let oldItem of me.datas.coes){
+                   if (oldItem.ID == newItem.ID){
+                       oldItem.coe = newItem.value;
+                       break;
+                   }
+              };
+        };
+    }
 }
 

+ 24 - 22
web/building_saas/main/js/views/project_property_labour_coe_view.js

@@ -18,7 +18,7 @@ let labourCoeView = {
             };
 
             for (let lib of stdLabourCoeLibs){
-                result += '<option value="'+ lib.id +'">'+ lib.name +'</option>';
+                result += '<option value='+ lib.id +'>'+ lib.name +'</option>';
             };
             return result;
         };
@@ -57,7 +57,6 @@ let labourCoeView = {
         var me = labourCoeView;
         if (args.propertyName !== "value"){return;};
         let cell = me.sheet.getCell(args.row, args.col);
-        // me.needUpdateDatas.push({ID: cell.coeID, value: cell.value()});
         me.addNeedUpdateData({ID: cell.tag(), value: cell.value()});
     },
 
@@ -76,6 +75,11 @@ let labourCoeView = {
         }
     },
 
+    needSave: function (){
+        let me = this;
+        return me.needUpdateDatas.length > 0;
+    },
+
     loadData(datas){          // 树结构转换二维表显示,行列转换
         let me = this;
         me.spread.suspendEvent();
@@ -110,7 +114,6 @@ let labourCoeView = {
                     if ((v.ParentID == libID) && (v.name == rowName)) {
                         let cell = me.sheet.getCell(r, c+ 1);
                         cell.value(v.coe);
-                        // cell.coeID = v.ID;
                         cell.tag(v.ID);
                         break;
                     };
@@ -126,6 +129,21 @@ let labourCoeView = {
         me.init();
         me.buildSheet();
         me.loadData(datas);
+    },
+
+    save(){
+        let me = this;
+        if (me.needUpdateDatas.length > 0){
+            let data = {projectID: projectInfoObj.projectInfo.ID, updateData: me.needUpdateDatas};
+            let libID = $("#std_labour_coe_files").children("option:selected").val();
+            let libName = $("#std_labour_coe_files").children("option:selected").text();
+            CommonAjax.post('/labourCoe/save', data, function (){
+                projectObj.project.labourCoe.refreshData({libID: libID, libName: libName, newItemArr: me.needUpdateDatas});
+                me.needUpdateDatas.splice(0, me.needUpdateDatas.length);
+                projectObj.project.calcProgram.compileAllTemps();
+                rationPM.buildSheet();
+            });
+        }
     }
 };
 
@@ -142,25 +160,9 @@ $(document).ready(function(){
             return false;
         };
 
-        $.ajax({
-            type:"POST",
-            url: '/labourCoe/getStdLabourCoe',
-            data: {"ID": libID},
-            dataType: 'json',
-            cache: false,
-            timeout: 50000,
-            success: function(result){
-                if (result.error === 0) {
-                    labourCoeView.buildSheet();
-                    labourCoeView.loadData(result.data.coes);
-
-                } else {
-                    alert('error: ' + result.message);
-                }
-            },
-            error: function(jqXHR, textStatus, errorThrown){
-                alert('error ' + textStatus + " " + errorThrown);
-            }
+        CommonAjax.post('/labourCoe/getStdLabourCoe', {"ID": libID}, function (data) {
+            labourCoeView.buildSheet();
+            labourCoeView.loadData(data.coes);
         });
     });
 });

+ 4 - 0
web/building_saas/main/js/views/project_view.js

@@ -575,6 +575,10 @@ $('#property_ok').click(function () {
         project.projSetting.zanguCalcMode = zanguMode;
         reCalc = true;
     }
+    if (labourCoeView.needSave()){
+        labourCoeView.save();
+        reCalc = true;
+    }
     if (reCalc) {
         projectObj.calculateAll();
         project.pushNow('editBillsCalcMode',