Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

Chenshilong 7 years ago
parent
commit
b40d7751d4

+ 2 - 0
modules/main/models/bills.js

@@ -26,6 +26,8 @@ let billsSchema = new Schema({
     name: String,
     unit: String,
     quantity: String, // Decimal
+    feeRateID:String,
+    feeRate:String,
     isFromDetail:{type: Number,default:0},//1 true 0 false
     programID: Number,
     // 工程量计算规则

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

@@ -632,7 +632,6 @@
                 </div>
                 <div class="modal-body">
                     <input type="hidden" id="edit_from">
-                    <input type="hidden" id="edit_row">
                     <div class="row">
                         <div class="modal-auto-height col-12" style="overflow: hidden" id="fee_rate_sheet">
                     </div>

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

@@ -61,7 +61,7 @@ let rationPM = {
         sheetCommonObj.showData(mSheet, me.mainSetting, me.datas);
 
         let dSheet = me.detailSpread.getSheet(0);
-        dSheet.getRange(-1, 4, -1, 1).cellType(feeRateObject.getFeeRateEditCellType());
+        feeRateObject.setFeeRateCellCol(dSheet,4);
         dSheet.name('calc_detail');
         sheetCommonObj.showData(dSheet, me.detailSetting, me.datas[0].calcItems);
 

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

@@ -14,6 +14,7 @@ var feeRateObject={
     changeInfo:null,
     feeRateSpreads:null,
     editingCell:null,
+    feeRateSelection:null,
     sheetSetting: {
         header: [
             {headerName: "专业名称", headerWidth: 200, dataCode: "name", dataType: "String"},
@@ -117,11 +118,11 @@ var feeRateObject={
     createSheet:function(){
         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
         feeRateObject.feeRateSpreads=sheetCommonObj.buildSheet($('#fee_rate_sheet')[0], feeRateObject.sheetSetting,feeRateFile.rates.length);
-        //gljOprObj.gljLibSpresd.bind(GC.Spread.Sheets.Events.ButtonClicked,gljOprObj.onButtonClick);
         feeRateObject.feeRateSheet = feeRateObject.feeRateSpreads.getSheet(0);
         feeRateObject.feeRateSheet.selectionUnit(1)//0 cell,1 row,2 col;
         feeRateObject.feeRateSheet.options.isProtected = true;
         feeRateObject.feeRateSheet.name('fee_rate');
+        feeRateObject.feeRateSheet.bind(GC.Spread.Sheets.Events.CellClick,feeRateObject.onCellClick);
     },
     showSelectTree:function () {
         var sheet= feeRateObject.feeRateSheet;
@@ -256,7 +257,7 @@ var feeRateObject={
                 if(feeRateObject.editingCell.row==options.row&&feeRateObject.editingCell.col==options.col){
                     var image = document.getElementById('f_btn'),imageMagin = 3;
                     var imageHeight = h-2*imageMagin;
-                    var imageWidth = imageHeight* 4/3;
+                    var imageWidth = w*2/7;
                     var imageX = x + w - imageWidth- imageMagin, imageY = y + h / 2 - imageHeight / 2;
                     ctx.save();
                     ctx.drawImage(image, imageX, imageY,imageWidth,imageHeight);
@@ -283,20 +284,27 @@ var feeRateObject={
             };
         };
         FeeRateEditCellType.prototype.processMouseDown = function (hitinfo) {
-            if(feeRateObject.editingCell==null){
-                feeRateObject.editingCell={
-                    row:hitinfo.row,
-                    col:hitinfo.col
+            var me=feeRateObject;
+            if(me.editingCell==null){
+                var showSelectBtn = true;
+                if(hitinfo.sheet.name()!='calc_detail'){
+                    showSelectBtn=me.ifFeeRateEdit();
                 }
-                hitinfo.sheet.invalidateLayout();
-                hitinfo.sheet.repaint();
-            }else if(hitinfo.row==feeRateObject.editingCell.row){
+                if(showSelectBtn){
+                    me.editingCell={
+                        row:hitinfo.row,
+                        col:hitinfo.col
+                    }
+                    hitinfo.sheet.invalidateLayout();
+                    hitinfo.sheet.repaint();
+                }
+            }else if(hitinfo.row==me.editingCell.row){
                 var offset=hitinfo.cellRect.x+hitinfo.cellRect.width-6;
                 var imageMagin=3;
                 var imageHeight = hitinfo.cellRect.height-2*imageMagin;
                 var imageWidth = imageHeight* 4/3;
                 if(hitinfo.x<offset&&hitinfo.x>offset-imageWidth){
-                    feeRateObject.showSelectModal(hitinfo);
+                    me.showSelectModal(hitinfo);
                 }
             }
         };
@@ -310,7 +318,6 @@ var feeRateObject={
     showSelectModal:function (hitinfo) {
         $("#fee_rate_tree").modal({show:true});
         $('#edit_from').val(hitinfo.sheet.name());
-        $('#edit_row').val(hitinfo.row);
     },
     setSheetGroup:function (rate,data,groups,row) {
         var me=this;
@@ -334,6 +341,10 @@ var feeRateObject={
         }
         return children.length+sum;
     },
+    ifFeeRateEdit:function () {
+        var selected = projectObj.project.mainTree.selected;
+        return MainTreeCol.readOnly.forCalcBase(selected)?false:true;
+    },
     createSpreadView:function () {
         if (this.mainViews) {
             this.mainViews.destroy();
@@ -602,6 +613,22 @@ var feeRateObject={
             projectObj.project.FeeRate.synchronizeFeeRate();
         }
         projectObj.project.FeeRate.changeFeeRateFileFromOthers(feeRateFileID,name,callback);
+    },
+    setFeeRateCellCol:function (sheet,col) {
+        sheet.getRange(-1, col, -1, 1).cellType(this.getFeeRateEditCellType());
+    },
+    onCellClick:function (sender,args) {
+       var data =projectObj.project.FeeRate.getActivateFeeRate().rates;
+       feeRateObject.feeRateSelection=data[args.row];
+    },
+    checkSelectedFeeRate:function () {
+        var validate = false;
+        var data =projectObj.project.FeeRate.getActivateFeeRate().rates;
+        if(feeRateObject.feeRateSelection!=null){
+            var children=_.filter(data,{'ParentID':feeRateObject.feeRateSelection.ID});
+            validate=children&&children.length==0;
+        }
+        return validate;
     }
 }
 
@@ -764,6 +791,7 @@ $('#fee_rate_tree').on('shown.bs.modal', function (e) {
     if(feeRateObject.feeRateSpreads==null){
         feeRateObject.createSheet();
     }
+    feeRateObject.feeRateSelection=null;
     feeRateObject.showSelectTree();
 });
 
@@ -774,4 +802,17 @@ $('#fee_rate_tree').on('hidden.bs.modal', function (e) {
         $('#edit_from').val('');
         $('#edit_row').val('');
     }
-});
+});
+
+$('#fee_selected_conf').bind('click',function (){
+    var validate = feeRateObject.checkSelectedFeeRate();
+    if(validate){
+        if($('#edit_from').val()=='calc_detail'){
+            //do calc_detail
+        }else {
+            
+        }
+    }
+    console.log(validate);
+
+})

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

@@ -43,7 +43,7 @@ let MainTreeCol = {
         },
         forCalcBase: function (node) {
             // to do according to billsParentType
-            return MainTreeCol.readOnly.billsParent(node) || MainTreeCol.readOnly.non_bills(node);
+            return MainTreeCol.readOnly.billsParent(node) || MainTreeCol.readOnly.non_bills(node)||MainTreeCol.readOnly.leafBillsWithDetail(node);
         },
         forUnitFee: function (node) {
             return MainTreeCol.readOnly.ration(node) || MainTreeCol.readOnly.billsParent(node) || MainTreeCol.readOnly.leafBillsWithDetail(node);

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

@@ -291,12 +291,12 @@ var projectObj = {
             if (!err) {
                 that.project.calcFields = JSON.parse(JSON.stringify(feeType));
                 that.project.initCalcFields();
-
+                var feeRateCol = 0;
                 let str = JSON.stringify(that.project.projSetting.main_tree_col);
                 that.project.projSetting.mainGridSetting = JSON.parse(str);
                 that.project.projSetting.mainGridSetting.frozenCols = 4;
                 TREE_SHEET_HELPER.initSetting($('#billsSpread')[0], that.project.projSetting.mainGridSetting);
-                that.project.projSetting.mainGridSetting.cols.forEach(function (col) {
+                that.project.projSetting.mainGridSetting.cols.forEach(function (col,index) {
                     col.data.splitFields = col.data.field.split('.');
                     if (col.data.getText && Object.prototype.toString.apply(col.data.getText) === "[object String]") {
                         col.data.getText = MainTreeCol.getEvent(col.data.getText);
@@ -315,6 +315,9 @@ var projectObj = {
                     if (col.data.field === 'code') {
                         col.data.formatter = '@';
                     }
+                    if(col.data.field==='feeRate'){
+                        feeRateCol=index;
+                    }
                 });
 
                 that.project.calcProgram.compileAllTemps();
@@ -324,9 +327,8 @@ var projectObj = {
                 that.mainController.bind('refreshBaseActn', that.refreshBaseActn);
                 that.mainController.bind(TREE_SHEET_CONTROLLER.eventName.beforeTreeSelectedChange, that.beforeMainTreeSelectedChange);
                 that.mainController.bind(TREE_SHEET_CONTROLLER.eventName.treeSelectedChanged, that.treeSelectedChanged);
-
                 that.mainSpread.bind(GC.Spread.Sheets.Events.EditEnded, that.mainSpreadEditEnded);
-
+                feeRateObject.setFeeRateCellCol(that.mainSpread.getActiveSheet(),feeRateCol);
                 that.loadMainSpreadContextMenu();
             }
             else {