浏览代码

Merge branch 'master' into olym

caiaolin 8 年之前
父节点
当前提交
74e84b00a2

+ 1 - 0
modules/main/models/project.js

@@ -56,6 +56,7 @@ Project.prototype.save = function(datas, callback){
 
         }
     }
+
     for (var i = 0; i < me.datas.length; i++){
         item = me.datas[i];
         functions.push(saveModule(item));

+ 1 - 0
modules/main/models/ration.js

@@ -34,6 +34,7 @@ let rationSchema = new Schema({
     code: String,
     name: String,
     maskName: String,
+    caption: String,
     unit: String,
     quantity: String, // Decimal
     programID: Number,

+ 13 - 6
modules/ration_glj/facade/glj_calculate_facade.js

@@ -31,7 +31,7 @@ async function calculateQuantity(query,isMarkPriceAjust){
              glj_result:[],
              rationID:query.rationID
          };
-         let impactRation = await ration.findOne({projectID:query.projectID,ID:query.rationID});
+         let impactRation = await ration.findOne({projectID:query.projectID,ID:query.rationID,deleteInfo:null});
          let gljList = await ration_glj.find(query)//{projectID:query.projectID,rationID:query.rationID}
          let coeList = await ration_coe.find({projectID:query.projectID,rationID:query.rationID}).sort('seq').exec();
          let assList=[];
@@ -51,14 +51,14 @@ async function calculateQuantity(query,isMarkPriceAjust){
              let r = await calculateQuantityPerGLJ(gljList[i],impactRation,coeList,assList,adjustState,isMarkPriceAjust);
              result.glj_result.push(r);
          }
-         console.log(result.glj_result);
+
         if(isMarkPriceAjust==null){
             await ration_glj.bulkWrite(generateUpdateTasks(result.glj_result));
         }
          adjustState= _.sortByOrder(adjustState, ['index'], ['asc']);
          adjustState=_.map(adjustState, _.property('content'));
          let adjustStateString = adjustState.join(';');
-         await ration.update({projectID:query.projectID,ID:query.rationID},{adjustState:adjustStateString});
+         await ration.update({projectID:query.projectID,ID:query.rationID,deleteInfo: null},{adjustState:adjustStateString});
          result.adjustState=adjustStateString;
          return result;
     }catch (err){
@@ -107,7 +107,7 @@ async function calculateQuantityPerGLJ(glj,ration,coeList,assList,adjustState,is
             if(customerCoe.isAdjust==1){
                 quantity = calculateQuantityByCustomerCoes(quantity,customerCoe,glj);
             }
-            result.doc.quantity =quantity;
+            result.doc.quantity =_.round(quantity,3);
         }
         generateAdjustState(glj,coeList,adjustState);
         return result;
@@ -152,7 +152,7 @@ function generateAdjustState(glj,coeList,adjustState) {
         }
     }
     //市场单价调整
-    if(glj._doc.hasOwnProperty('marketPriceAdjust')&&glj.marketPriceAdjust!=0){
+    if(glj._doc.hasOwnProperty('marketPriceAdjust')&&glj.marketPriceAdjust&&glj.marketPriceAdjust!=0){
         //0101005价66.00
         adjustState.push({index:stateSeq.adjMak,content:glj.code+'价'+glj.marketPriceAdjust});
     }
@@ -163,12 +163,19 @@ function generateAdjustState(glj,coeList,adjustState) {
 
 function calculateTimes(ass){
     let times =(ass.actualValue-ass.stdValue)/ass.stepValue;
-
+    let r = false;
+    if(times<0){
+        r=true;
+        times=times*-1;
+    }
     if(ass.carryBit=='四舍五入'){
         times = _.round(times,ass.decimal);
     }else if (ass.carryBit=='进一'){
         times =_.ceil(times,ass.decimal);
     }
+    if(r){
+        times=times*-1;
+    }
     return times;
 }
 

+ 3 - 3
modules/ration_glj/facade/ration_ass_facade.js

@@ -30,7 +30,6 @@ function update_ration_ass(user_id,datas) {
     return function (callback) {
         let editAss = datas.query.editAss;
         doRationAssAdjust(datas.query.ration,datas.doc).then(function (result) {
-            console.log(result);
             if(result.err){
                 callback(result.err,'')
             }else {
@@ -58,7 +57,8 @@ function update_ration_ass(user_id,datas) {
                         updateTpye:commonConsts.UT_UPDATE,
                         stateRefresh:true,
                         rationID:result.cal_result.rationID,
-                        adjustState:result.cal_result.adjustState
+                        adjustState:result.cal_result.adjustState,
+                        name:datas.doc.name
                     }
                 };
                 callback(null,[newObject,ration_glj_data,ration_data]);
@@ -75,7 +75,7 @@ async function doRationAssAdjust(ration,doc) {
         cal_result:[]
     }
     try{
-        await rationModel.update({projectID:ration.projectID,ID:ration.ID},doc);
+        await rationModel.update({projectID:ration.projectID,ID:ration.ID,deleteInfo: null},doc);
         let cal_result = await glj_calculate_facade.calculateQuantity({projectID:ration.projectID,rationID:ration.ID});
         result.cal_result=cal_result;
         return result;

+ 0 - 2
modules/ration_glj/facade/ration_coe_facade.js

@@ -172,7 +172,6 @@ async function doAdjustUpdate (datas){
         await ration_coe.update(datas.query,datas.doc);
         let cal_result = await glj_calculate_facade.calculateQuantity({projectID:datas.query.projectID,rationID:datas.query.rationID});
         result.cal_result =cal_result;
-        console.log(result);
         return result;
     }catch (err){
         result.err = err;
@@ -200,7 +199,6 @@ async function doCustomerCoeUpdateTasks(datas) {
         };
         let cal_result = await glj_calculate_facade.calculateQuantity({projectID:datas.query.projectID,rationID:datas.query.rationID});
         result.cal_result =cal_result;
-        console.log(result);
         return result;
     }catch (err){
         result.err = err;

+ 7 - 2
modules/ration_glj/facade/ration_glj_facade.js

@@ -281,10 +281,15 @@ async function updateprojectGljAndRationGLJ(query,doc) {
     let returnresult={};
     try {
         let gljListModel = new GLJListModel();
+        let temp = doc.market_price;
+        if(doc.market_price==null){
+            doc.market_price = doc.base_price;
+        }
+        delete doc.base_price;
         let result = await gljListModel.modifyMarketPrice(doc);
         let updateDoc ={
             marketPrice:result.unit_price.market_price,
-            marketPriceAdjust:doc.market_price,
+            marketPriceAdjust:temp,
             projectGLJID:result.id,
             isEstimate:result.is_evaluate,
             name : result.name,
@@ -383,7 +388,7 @@ function startingTask(processName){
 
 function  getRationsByBill(datas) {
     return function (results,callback) {
-        ration.find({projectID:datas.updateData.projectID,billsItemID:datas.updateData.ID},function (err,rations) {
+        ration.find({projectID:datas.updateData.projectID,billsItemID:datas.updateData.ID,deleteInfo: null},function (err,rations) {
             if(err){
                 callback(err,'')
             }else {

+ 1 - 0
modules/ration_glj/models/ration_glj_temp.js

@@ -46,6 +46,7 @@ let rationSchema = new Schema({
     code: String,
     name: String,
     maskName: String,
+    caption: String,
     unit: String,
     quantity: String, // Decimal
     programID: Number,

+ 5 - 1
public/web/sheet/sheet_common.js

@@ -121,7 +121,11 @@ var sheetCommonObj = {
                 //var cell = sheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport);
                 var val = data[row][setting.header[col].dataCode];
                 if(val&&setting.header[col].dataType === "Number"){
-                    val =parseFloat(val).toFixed(2);
+                    if(setting.header[col].hasOwnProperty('tofix')){
+                        val =parseFloat(val).toFixed(setting.header[col].tofix);
+                    }else {
+                        val =parseFloat(val).toFixed(2);
+                    }
                 }
                 if(val!=null&&setting.header[col].cellType === "checkBox"){
                     this.setCheckBoxCell(row,col,sheet,val)

+ 10 - 2
web/building_saas/main/js/models/ration.js

@@ -69,9 +69,16 @@ var Ration = {
             var selected = controller.sheet.getSelections();
             var col =   _.findIndex(BillsGridSetting.cols,function (col) {
                 return col.data.field =='adjustState';
-            })
+            });
             controller.sheet.getCell(selected[0].row,col).value(data.adjustState);
-            console.log(data.adjustState);
+            if(data.hasOwnProperty('name')){
+                this.datas[dataIndex].name = data.name;
+                var nameCol = _.findIndex(BillsGridSetting.cols,function (col) {
+                    return col.data.field =='name';
+                })
+                controller.sheet.getCell(selected[0].row,nameCol).value(data.name);
+            }
+
         }
 
 
@@ -139,6 +146,7 @@ var Ration = {
                 if (data.updateType === 'ut_create') {
                     data.updateData.code = std.code;
                     data.updateData.name = std.name;
+                    data.updateData.caption=std.caption;
                     data.updateData.unit = std.unit;
                     data.updateData.libID = std.rationRepId;
                     data.updateData.rationAssList =  projectObj.project.ration_ass.CreateNewAss(std);

+ 6 - 2
web/building_saas/main/js/models/ration_ass.js

@@ -40,7 +40,6 @@ var ration_ass = {
 
         };
         ration_ass.prototype.refreshAfterUpdate=function(data){
-            console.log(data)
             this.updateRation(data.rationID,data.doc);
             //this.updateRationGLJ(data.ration_glj_list);
             gljOprObj.assSheetData[data.editIndex].actualValue = data.actualValue;
@@ -51,7 +50,7 @@ var ration_ass = {
             var index =  _.findIndex(projectObj.project.Ration.datas,(ration)=>{
                 return ration.ID==rationID;
             })
-            projectObj.project.Ration.datas[index].rationAssList = doc.rationAssList
+            projectObj.project.Ration.datas[index].rationAssList = doc.rationAssList;
         };
 
         ration_ass.prototype.updateRationGLJ = function (updateList) {
@@ -104,6 +103,10 @@ var ration_ass = {
         ration_ass.prototype.updateActualValue=function(assList,index,newVal){
             var selected = projectObj.project.mainTree.selected;
             assList[index].actualValue=newVal;
+            var rationname = selected.data.name;
+            if(selected.data.hasOwnProperty('caption')){
+                 rationname = selected.data.caption.replace('%s',newVal);
+            }
             var query = {
                 'ration':selected.data,
                 'editAss':assList[index],
@@ -111,6 +114,7 @@ var ration_ass = {
             };
             var doc ={
                 rationAssList:assList,
+                name:rationname
             };
 
             var updateData = this.getUpdateData('ut_update',query,doc);

+ 20 - 11
web/building_saas/main/js/models/ration_glj.js

@@ -64,20 +64,23 @@ var ration_glj = {
             // SheetDataHelper.loadSheetData(setting, rationLibObj.sectionRationsSpread.getActiveSheet(), datas);
         };
         ration_glj.prototype.refreshAfterUpdate=function(data){
-            console.log(data);
-            var rationID =0;
             var me = this;
             if(data.quantityRefresh){
                 data.glj_result.forEach(function (item) {
-                    rationID= me.refreshEachItme(item.doc,item.query);
+                    me.refreshEachItme(item.doc,item.query);
                 })
             }else {
-                rationID= me.refreshEachItme(data.doc,data.query);
+                me.refreshEachItme(data.doc,data.query);
+            }
+            var selected = projectObj.project.mainTree.selected
+            if(selected==null){
+                return;
+            }
+            if(selected.sourceType==ModuleNames.ration){
+                var showList = _.filter(projectObj.project.ration_glj.datas,{'rationID':selected.data.ID});
+                gljOprObj.sheetData=showList;
+                sheetCommonObj.showData(gljOprObj.sheet,gljOprObj.setting,showList);
             }
-            //to do   ---refresh by selected ration id
-            var showList = _.filter(projectObj.project.ration_glj.datas,{'rationID':rationID});
-            gljOprObj.sheetData=showList;
-            sheetCommonObj.showData(gljOprObj.sheet,gljOprObj.setting,showList);
         };
         ration_glj.prototype.refreshEachItme = function (doc,query) {
             var glj_list = projectObj.project.ration_glj.datas;
@@ -204,10 +207,10 @@ var ration_glj = {
             var updateData = null;
             if(row.rationItemQuantity==0){
                 updateData=this.getUpdateData('ut_delete',{'ID': row.ID, 'projectID': row.projectID});
+                project.pushNow('updateRationGLJ',[this.getSourceType()],updateData)
             }else {
-                updateData= this.getUpdateData('ut_update',{'ID': row.ID, 'projectID': row.projectID},{'quantity':0,'customQuantity':0});
+                this.customQuantityUpdate(row,0,0);//('ut_update',{'ID': row.ID, 'projectID': row.projectID},{'quantity':0,'customQuantity':0});
             }
-            project.pushNow('updateRationGLJ',[this.getSourceType()],updateData)
         };
         ration_glj.prototype.getUpdateData=function(type,query,doc,callfunction){
             var updateData = [];
@@ -225,6 +228,7 @@ var ration_glj = {
             return updateData;
         };
         ration_glj.prototype.customQuantityUpdate = function(recode,newVal,text){
+            newVal = _.round(newVal,3);
             var query = {
                 'ID':recode.ID,
                 'projectID': recode.projectID,
@@ -247,13 +251,18 @@ var ration_glj = {
             project.pushNow('updateRationGLJ',[this.getSourceType()],updateData);
 
         };
-        ration_glj.prototype.marketPriceAdjustUpdate = function (recode,newVal) {
+        ration_glj.prototype.marketPriceAdjustUpdate = function (recode,newVal,text) {
+            newVal = _.round(newVal,2);
+            if(text===null){
+                newVal=null;
+            }
             var query = {
                 'ID':recode.ID,
                 'projectID': recode.projectID,
                 'rationID':recode.rationID
             };
             var doc ={
+                base_price:Number(recode.basePrice),
                 market_price:newVal,
                 code:recode.code,
                 name:recode.name,

+ 38 - 27
web/building_saas/main/js/views/glj_view.js

@@ -19,13 +19,13 @@ var gljOprObj = {
             {headerName: "规格型号", headerWidth: 80, dataCode: "specs", dataType: "String", hAlign: "center"},
             {headerName: "单位", headerWidth: 60, dataCode: "unit", dataType: "String", hAlign: "center"},
             {headerName: "类别", headerWidth: 50, dataCode: "gljDistType", dataType: "String", hAlign: "center"},
-            {headerName: "定额消耗量", headerWidth: 80, dataCode: "rationItemQuantity", dataType: "Number", hAlign: "right"},    // dataType: "Number", formatter: "0.00"
-            {headerName: "自定义消耗量", headerWidth: 80, dataCode: "customQuantity", dataType: "Number", hAlign: "right"},
-            {headerName: "消耗量", headerWidth: 80, dataCode: "quantity", dataType: "Number", hAlign: "right"},
-            {headerName: "基价单价", headerWidth: 80, dataCode: "basePrice", dataType: "Number", hAlign: "right"},
-            {headerName: "调整基价", headerWidth: 80, dataCode: "adjustPrice", dataType: "String", hAlign: "right"},
-            {headerName: "市场单价", headerWidth: 80, dataCode: "marketPrice", dataType: "String", hAlign: "right"},
-            {headerName: "市场单价调整", headerWidth: 80, dataCode: "marketPriceAdjust", dataType: "String", hAlign: "right"},
+            {headerName: "定额消耗量", headerWidth: 80, dataCode: "rationItemQuantity", dataType: "Number", hAlign: "right",formatter:"0.000",tofix:3},    // dataType: "Number", formatter: "0.00"
+            {headerName: "自定义消耗量", headerWidth: 80, dataCode: "customQuantity", dataType: "Number", hAlign: "right",formatter:"0.000",tofix:3},
+            {headerName: "消耗量", headerWidth: 80, dataCode: "quantity", dataType: "Number", hAlign: "right",formatter:"0.000",tofix:3},
+            {headerName: "基价单价", headerWidth: 80, dataCode: "basePrice", dataType: "Number", hAlign: "right",formatter:"0.00"},
+            {headerName: "调整基价", headerWidth: 80, dataCode: "adjustPrice", dataType: "Number", hAlign: "right",formatter:"0.00"},
+            {headerName: "市场单价", headerWidth: 80, dataCode: "marketPrice", dataType: "Number", hAlign: "right",formatter:"0.00"},
+            {headerName: "市场单价调整", headerWidth: 80, dataCode: "marketPriceAdjust", dataType: "Number", hAlign: "right",formatter:"0.00"},
             {headerName: "是否暂估", headerWidth: 80, dataCode: "isEstimate", dataType: "String", hAlign: "center",vAlign:"center",cellType:"checkBox"}
         ],
         view: {
@@ -39,7 +39,7 @@ var gljOprObj = {
         header:[
             {headerName: "调整", headerWidth: 100, dataCode: "isAdjust", dataType: "String",cellType:"checkBox"},
             {headerName: "条件", headerWidth: 120, dataCode: "name", dataType: "String",cellType:"button"},
-            {headerName: "内容", headerWidth: 350, dataCode: "content", dataType: "String", hAlign: "center"}
+            {headerName: "内容", headerWidth: 350, dataCode: "content", dataType: "String", hAlign: "left"}
         ],
         view:{
             lockColumns:[0,1,2]
@@ -48,8 +48,8 @@ var gljOprObj = {
     assSetting:{
         header:[
             {headerName: "调整名称", headerWidth: 100, dataCode: "name", dataType: "String"},
-            {headerName: "定额值", headerWidth: 120, dataCode: "stdValue", dataType: "Number"},
-            {headerName: "实际值", headerWidth: 120, dataCode: "actualValue", dataType: "Number"}
+            {headerName: "定额值", headerWidth: 120, dataCode: "stdValue", dataType: "String"},
+            {headerName: "实际值", headerWidth: 120, dataCode: "actualValue", dataType: "String"}
         ],
         view:{
             lockColumns:[0,1]
@@ -60,6 +60,7 @@ var gljOprObj = {
         var me = this;
         me.sheet = sheet;
         sheetCommonObj.initSheet(me.sheet, me.setting, 30);
+        sheet.name('ration_glj');
         me.bindSheetEvent(sheet);
         sheet.bind(GC.Spread.Sheets.Events.CellClick, me.onCellClick);
         this.loadGLJSpreadContextMenu();
@@ -68,6 +69,7 @@ var gljOprObj = {
         var me = this;
         me.coeSheet = sheet;
         sheetCommonObj.initSheet(me.coeSheet, me.coeSetting, 30);
+        sheet.name('ration_coe');
         me.bindSheetEvent(sheet);
         sheet.bind(GC.Spread.Sheets.Events.CellClick, me.onCoeCellClick);
         subSpread.bind(GC.Spread.Sheets.Events.ButtonClicked,me.onButtonClick);
@@ -76,6 +78,7 @@ var gljOprObj = {
         var me = this;
         me.assSheet = sheet;
         sheetCommonObj.initSheet(me.assSheet, me.assSetting, 30);
+        sheet.name('ration_ass');
         me.bindSheetEvent(sheet);
     },
     showCoeData:function(sheet,setting,datas){
@@ -259,6 +262,8 @@ var gljOprObj = {
                 $('#manchine').val(newValue);
                 $('#main').val(newValue);
                 $('#equipment').val(newValue);
+            }else {
+                $('#'+id).val(newValue);
             }
         }else {
             $('#'+id).val(coe.coes[name].amount);
@@ -342,9 +347,15 @@ var gljOprObj = {
         gljOprObj.coeSheet.repaint();
     },
     onRangeChanged: function(sender, args) {
+        var me = gljOprObj;
         if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
-            if (!confirm(`确定要删除选中的 ${args.rowCount} 条辅助定额吗?`)){return; }
-            // your code...
+            args.editingText=null;
+            if(args.sheetName=='ration_glj'){
+                me.onEditGLJSheet(args);
+            }
+            if(args.sheetName=='ration_ass'){
+                me.updateRationAss(args);
+            }
         };
     },
     generateHtmlString:function () {
@@ -391,11 +402,11 @@ var gljOprObj = {
         if(!isShow){
             this.clearSheetData();
         }
-  /*      this.lockRationGLJCell();
-        this.lockRationCoeCell();*/
         //hide floatingObject
         var floatingObject = this.coeSheet.floatingObjects.get('customerCoe');
-        floatingObject.isVisible(false);
+        if(floatingObject){
+            floatingObject.isVisible(false);
+        }
      //   $('#dropdown').hide();
     },
     showRationGLJData:function (node) {
@@ -486,20 +497,23 @@ var gljOprObj = {
         var me = gljOprObj;
         var newval = this.numberValueChecking(args.editingText);
         var recode = me.sheetData[args.row];
-        updateFunction.apply(projectObj.project.ration_glj,[recode,newval,args.editingText]);
-        if(newval){
-            newval = parseFloat(recode.customQuantity).toFixed(2);
-        }
         if(args.editingText===null){
-            newval=null;
+            updateFunction.apply(projectObj.project.ration_glj,[recode,null,args.editingText]);
+        }else if(newval!=null){
+            updateFunction.apply(projectObj.project.ration_glj,[recode,newval,args.editingText]);
+        }else {
+            newval = recode[me.setting.header[args.col].dataCode];
+            me.sheet.getCell(args.row, args.col).value(newval);
         }
-        me.sheet.getCell(args.row, args.col).value(newval);
-
     },
     updateRationAss:function (args) {
         var me = gljOprObj;
-        var newval = me.numberValueChecking(args.editingText);
+        var newval;
+        newval = me.numberValueChecking(args.editingText);
         var recode = me.assSheetData[args.row];
+        if(args.editingText===null){
+            newval=parseFloat(recode.stdValue);
+        }
         var isValidate = false;
         if(newval){
             isValidate = me.checkingActualValue(recode,newval)
@@ -520,7 +534,7 @@ var gljOprObj = {
     numberValueChecking:function (val) {
         var newval = Number(val);
         if(number_util.isNumber(newval)){
-            newval = newval.toFixed(2);
+            return newval;
         }else {
             if(val){
                 alert('您输入的数据类型不正确,请重新输入。');
@@ -535,9 +549,6 @@ var gljOprObj = {
         var minValue = parseFloat(record.minValue);
         var maxValue = parseFloat(record.maxValue);
         var stdVale = parseFloat(record.stdValue);
-        if(stdVale==newval){
-            return false;
-        }
 
         if(!maxExist&&minExist){
             if(newval<minValue){

+ 3 - 3
web/building_saas/main/js/views/sub_view.js

@@ -9,16 +9,16 @@ var subSpread = sheetCommonObj.createSpread($("#subSpread")[0], 7);
 // 工料机
 gljOprObj.initSheet(subSpread.getSheet(0));
 //sheetCommonObj.shieldAllCells(subSpread.getSheet(0), gljOprObj.setting);
-
+SheetDataHelper.protectdSheet(subSpread.getSheet(0));
 // assistOprObj.initSheet(subSpread.getSheet(1));
 // sheetCommonObj.shieldAllCells(subSpread.getSheet(1), assistOprObj.setting);
 //附注条件
 gljOprObj.initCoeSheet(subSpread.getSheet(2));
-
+SheetDataHelper.protectdSheet(subSpread.getSheet(2));
 //辅助定额
 
 gljOprObj.initAssSheet(subSpread.getSheet(1));
-
+SheetDataHelper.protectdSheet(subSpread.getSheet(1));
 $("#linkGLJ").click(function(){
     subSpread.setActiveSheetIndex(0);