Browse Source

费率页面调整

zhangweicheng 6 năm trước cách đây
mục cha
commit
2eef6966fc

+ 0 - 1
modules/pm/facade/pm_facade.js

@@ -718,7 +718,6 @@ async function getProjectFeature(libID,engineerName){
     if(lib){
         let eng = _.find(lib.feature,{'key':'engineering'})
         if(eng) eng.value = engineerName;
-        console.log(lib.feature);
         return lib.feature;
     }else {
         return [];

+ 51 - 112
web/building_saas/main/js/views/fee_rate_view.js

@@ -138,15 +138,13 @@ var feeRateObject={
         feeRateObject.feeRateSheet.bind(GC.Spread.Sheets.Events.CellClick,feeRateObject.onCellClick);
         feeRateObject.feeRateSheet.bind(GC.Spread.Sheets.Events.CellDoubleClick,feeRateObject.onCellDoubleClick);
     },
-    showSelectTree:function (sheet,setting,data) {
-        var ch = GC.Spread.Sheets.SheetArea.viewport;
-        var groups=[];
+    showFeeRateTree:function (sheet,setting,data) {
+        let ch = GC.Spread.Sheets.SheetArea.viewport;
+        let parentMap=_.indexBy(data, 'ParentID');
         sheet.suspendPaint();
         sheet.suspendEvent();
-        sheet.rowOutlines.direction(GC.Spread.Sheets.Outlines.OutlineDirection.backward);
-        sheet.getRange(-1, 0, -1, 1).cellType(feeRateObject.getTreeNodeCellType());
-        for (var col = 0; col < setting.header.length; col++) {
-            var hAlign = "left", vAlign = "center";
+        for (let col = 0; col < setting.header.length; col++) {
+            let hAlign = "left", vAlign = "center";
             if (setting.header[col].hAlign) {
                 hAlign = setting.header[col].hAlign;
             } else if (setting.header[col].dataType !== "String"){
@@ -157,11 +155,11 @@ var feeRateObject={
             if (setting.header[col].formatter) {
                 sheet.setFormatter(-1, col, setting.header[col].formatter, GC.Spread.Sheets.SheetArea.viewport);
             }
-            for (var row = 0; row < data.length; row++) {
-                var val = data[row][setting.header[col].dataCode];
+            for (let row = 0; row < data.length; row++) {
+                let val = data[row][setting.header[col].dataCode];
                 if(val&&setting.header[col].dataType === "Number"){
                     if(setting.header[col].hasOwnProperty('decimalField')){
-                        var decimal = getDecimal(setting.header[col].decimalField);
+                        let decimal = getDecimal(setting.header[col].decimalField);
                         val =scMathUtil.roundToString(val,decimal);
                         sheet.setFormatter(-1, col,getFormatter(decimal), GC.Spread.Sheets.SheetArea.viewport);
                     }else {
@@ -170,67 +168,58 @@ var feeRateObject={
                 }
                 sheet.setValue(row, col, val, ch);
                 if(col==0){
-                    feeRateObject.setSheetGroup(data[row],data,groups,row+1);
+                    sheet.getCell(row, 0).textIndent(feeRateObject.getFeeRateLevel(data[row],data));//设置层级,0 为第一层
                 }
             }
         }
-        //this.lockCells(sheet,setting);
-        _.forEach(groups,function (g) {
-            for(var k in g){
-                sheet.rowOutlines.group(parseInt(k), g[k]);
+        sheet.outlineColumn.options({columnIndex: 0, maxLevel: 10});//设置树结构显示的列,和最大层级
+        for(let i =0;i<data.length;i++){
+            if(parentMap[data[i].ID]){
+                sheet.rowOutlines.setCollapsed(i, true);
             }
-        })
-     /*   sheet.rowOutlines.group(1, 6);
-        sheet.rowOutlines.group(8, 6);
-        sheet.rowOutlines.group(15, 6);
-        sheet.rowOutlines.group(22, 6);*/
-       // sheet.getRange(-1, 0, -1, 1).width(300);
+        }
         sheet.showRowOutline(false);
-
-        // 默认折叠
-        for (let i in data){
-            if (!data[i].ParentID){
-                sheet.rowOutlines.setCollapsed(parseFloat(i), true);
-            };
-        };
-
+        sheet.outlineColumn.refresh();
         sheet.resumeEvent();
-        sheet.resumePaint(false);
+        sheet.resumePaint();
+    },
+    getFeeRateLevel:function (rate,data) {
+        if(rate.ParentID){
+         let prate =  _.find(data,{'ID':rate.ParentID});
+         return  this.getFeeRateLevel(prate,data) + 1;
+        }else {
+            return 0
+        }
     },
     locate: function(){   // CSL,2018.07.18
         let sheet = feeRateObject.feeRateSpreads.getSheet(0);
-
         let fID = 0;
         if ($("#calc_program_manage").is(":visible"))
-           fID = calcProgramManage.getSelectionInfo().calcItem.feeRateID
+           fID = calcProgramManage.getSelectionInfo().calcItem.feeRateID;
         else if ($("#zaojiashu").is(":visible"))
            fID = projectObj.project.mainTree.selected.data.feeRateID;
         let rates = projectObj.project.FeeRate.getActivateFeeRate().rates;
         let rowIdx = 0, pID = 0;
-
         if (fID){
-            for (let i in rates) {
-                if (rates[i].ID == fID){
-                    rowIdx = parseFloat(i);
-                    pID = rates[i].ParentID;
-                    break;
-                };
-            }
-        };
-
-        // 展开
-        for (let i in rates){
-            if (!rates[i].ParentID && (rates[i].ID == pID)){
-                sheet.rowOutlines.setCollapsed(parseFloat(i), false);
-                break;
-            };
-        };
+            rowIdx = _.findIndex(rates,{ID:fID});
+            pID = rates[rowIdx].ParentID;
+        }
+        // 费率现有可能有多层节点,所以要递归展开父节点
+        expandParent(pID,rates,sheet);
 
         sheet.setSelection(rowIdx, -1, 1, -1);
         sheet.showRow(rowIdx, GC.Spread.Sheets.VerticalPosition.center);
         feeRateObject.onCellClick({type: 'CellClick'}, {row:rowIdx});
+        
+        function expandParent(ID,datas,sheet) {//递归展开父节点
+            let index = _.findIndex(datas,{'ID':ID});
+            sheet.rowOutlines.setCollapsed(index, false);
+            if(datas[index].ParentID){
+                expandParent(datas[index].ParentID,datas,sheet)
+            }
+        }
     },
-    getTreeNodeCellType:function () {
+    getTreeNodeCellType:function () {//这个方法费率已暂时不用了
         var ns = GC.Spread.Sheets;
         function TreeNodeCellType() {
         }
@@ -266,8 +255,6 @@ var feeRateObject={
                 ctx.restore();
             }
             else {
-               // x--;
-                //y += h / 2 - 3;
                 ctx.save();
                 ctx.restore();
             }
@@ -373,7 +360,6 @@ var feeRateObject={
                     hitinfo.sheet.repaint();
                 }
             }
-
         };
         FeeRateEditCellType.prototype.processMouseLeave = function (hitinfo) {
             hideButton(hitinfo);
@@ -399,16 +385,6 @@ var feeRateObject={
         $("#calcBaseFeeRate").modal({show:true});
         $('#edit_from').val(hitinfo.sheet.name());
     },
-    setSheetGroup:function (rate,data,groups,row) {
-        var me=this;
-        var group={};
-        var count=me.getChildrenCount(rate.ID,data);
-        if(count>0){
-            group[row]=count;
-            groups.push(group);
-        }
-        return groups;
-    },
     getChildrenCount:function (id,data) {
         var me=this;
         var sum=0;
@@ -483,11 +459,10 @@ var feeRateObject={
         me.mainFeeRateData = projectObj.project.FeeRate.getActivateFeeRate().rates;
         me.mainFeeRateSheet.setRowCount(0);
         me.mainFeeRateSheet.setRowCount(me.mainFeeRateData.length);
-        me.showSelectTree(me.mainFeeRateSheet,me.mainFeeRateSetting,me.mainFeeRateData);
+        me.showFeeRateTree(me.mainFeeRateSheet,me.mainFeeRateSetting,me.mainFeeRateData);
         me.mainFeeRateSheet.setSelection(selected.row,selected.col,selected.rowCount,selected.colCount);
     },
     reFreshRateViews:function() {
-        //feeRateObject.createSpreadView();
         feeRateObject.loadPageContent();
         this.showMainFeeRateData();
         if(subRateObject.subRateSpread){//如果子费率没有初始化过的话,不需要显示。
@@ -613,13 +588,9 @@ var feeRateObject={
                         _.forEach(selectMap,function (value,key) {
                             let tempRecode =  recode.subFeeRate.recodes[key];
                             let optionList = tempRecode.optionList;
-                            _.forEach(optionList,function (o) {
-                                if(o.value==value){
-                                    o.selected = true;
-                                }else {
-                                    o.selected = false;
-                                }
-                            })
+                            for(let o of optionList){
+                                o.value===value? o.selected = true:o.selected = false;
+                            }
                         });
                         items.push({rateIndex:Index,rate:recode});
                     }
@@ -628,13 +599,9 @@ var feeRateObject={
                     let selectList = mapID.split('-');
                     let newList=[];
                     _.forEach(recode.subFeeRate.recodes,function (r) {
-                        let oList = r.optionList;
-                        let oldSelectIndex=0;
-                        let hasChange=false;
+                        let oList = r.optionList, oldSelectIndex=0, hasChange=false;
                         _.forEach(oList,function (o,key) {
-                            if(o.selected){
-                                oldSelectIndex = key;
-                            }
+                            if(o.selected)  oldSelectIndex = key;
                             if(_.includes(selectList,o.value)){
                                 needUpdate=true;
                                 o.selected=true;
@@ -653,7 +620,7 @@ var feeRateObject={
                       let newValue =   _.find(valueMaps,{ID:newList.join("-")})//取出费率值并更新
                         if(newValue){
                           if(recode.rate != newValue.value){
-                              recode.rate = newValue.value
+                              recode.rate = newValue.value;
                               items.push({rateIndex:Index,rate:recode});
                           }
                         }
@@ -724,9 +691,9 @@ var feeRateObject={
             $('#nameError').text("请输入文件名称。").show();
             return;
         }
-        var valideName = $('#valid_name').val();
+        let valideName = $('#valid_name').val();
         if(valideName==''||valideName!==newName){
-            var callback=function (data) {
+            let callback=function (data) {
                 if(data){
                     $('#saveAsConfirm').attr("disabled","disabled");
                     $('#nameError').text("已存在同名费率文件。").show();
@@ -756,7 +723,6 @@ var feeRateObject={
         var callback=function (data) {
             me.changeInfo=data;
             me.loadChangePageContent(data);
-            console.log(data);
         };
         projectObj.project.FeeRate.getChangeInfo(callback);
     },
@@ -767,7 +733,6 @@ var feeRateObject={
             var option =  $("<option>").val(s.ID).text(s.name);
             $('#currentOptions').append(option);
         })
-        //$('#currentOptions').val(projectObj.project.FeeRate.getActivateFeeRateFileID());
         $('#otherProject').empty();
         _.forEach(data.others,function (p) {
             var option =  $("<option>").val(p.ID).text(p.name);
@@ -800,7 +765,6 @@ var feeRateObject={
             name:name
         }
         var callback=function () {
-            //feeRateObject.createSpreadView();
             feeRateObject.reFreshRateViews();
             projectObj.project.FeeRate.onFeeRateFileChange();
             $.bootstrapLoading.end();
@@ -862,8 +826,6 @@ var feeRateObject={
             selected.data.feeRate=scMathUtil.roundToString(rate.rate,getDecimal("feeRate"));
             selected.changed = true;
             projectObj.project.calcProgram.calcAndSave(selected);
-            //projectObj.mainController.refreshTreeNode([selected]);
-            //$("#fee_rate_tree").modal('hide');
             $("#calcBaseFeeRate").modal('hide');
             $.bootstrapLoading.end();
         });
@@ -880,7 +842,6 @@ var feeRateObject={
             projectObj.project.calcProgram.compileAllTemps();
             projectObj.project.calcProgram.calcAllNodesAndSave();
             calcProgramManage.refreshDetailSheet();
-            //$("#fee_rate_tree").modal('hide');
             $("#calcBaseFeeRate").modal('hide');
             $.bootstrapLoading.end();
         });
@@ -921,9 +882,7 @@ $(function(){
         sessionStorage.setItem('mainTab', '#tab_fee_rate');
         let me = feeRateObject;
         $(e.relatedTarget.hash).removeClass('active');
-        if(me.mainFeeRateSpread == null){
-            me.initFeeRateSpread(0);
-        }
+        if(me.mainFeeRateSpread == null)  me.initFeeRateSpread(0);
         me.showMainFeeRateData();
         me.loadPageContent();
     });
@@ -951,9 +910,7 @@ $(function(){
     $('#changeConfirm').bind('click', function (){
         var newVal=$('#standardSelect').val();
         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
-        if(newVal&&newVal!=feeRateFile.libID){
-            feeRateObject.changeFeeRateStandard(newVal);
-        }
+        if(newVal&&newVal!=feeRateFile.libID)  feeRateObject.changeFeeRateStandard(newVal);
     });
 
     $('#saveAs').bind('click', function (){
@@ -1047,21 +1004,13 @@ $(function(){
         socket.emit('changeActivateFeeRate',{oldRoom:oldValue,newRoom:selectID});
     })
 
-   /* $('#fee_rate_tree').on('shown.bs.modal', function (e) {
-        if(feeRateObject.feeRateSpreads==null){
-            feeRateObject.createSheet();
-        }
-        feeRateObject.feeRateSelection=null;
-        feeRateObject.showSelectTree(feeRateObject.feeRateSheet,feeRateObject.sheetSetting,projectObj.project.FeeRate.getActivateFeeRate().rates);
-        feeRateObject.locate();
-    });*/
     $('#calcBaseFeeRate').on('shown.bs.modal', function (e) {
         let toggle = $('#calcBaseFeeRateConf').attr('toggle');
         if(feeRateObject.feeRateSpreads==null){
             feeRateObject.createSheet();
         }
         feeRateObject.feeRateSelection=null;
-        feeRateObject.showSelectTree(feeRateObject.feeRateSheet,feeRateObject.sheetSetting,projectObj.project.FeeRate.getActivateFeeRate().rates);
+        feeRateObject.showFeeRateTree(feeRateObject.feeRateSheet,feeRateObject.sheetSetting,projectObj.project.FeeRate.getActivateFeeRate().rates);
         feeRateObject.locate();
         feeRateObject.feeRateSpreads.refresh();
     });
@@ -1070,15 +1019,6 @@ $(function(){
             feeRateObject.feeRateSpreads.refresh();
         }
     });
-
-    /*$('#fee_rate_tree').on('hidden.bs.modal', function (e) {
-        if(feeRateObject.feeRateSpreads){
-            feeRateObject.feeRateSpreads.destroy();
-            feeRateObject.feeRateSpreads=null;
-            $('#edit_from').val('');
-            $('#edit_row').val('');
-        }
-    });*/
     $('#calcBaseFeeRate').on('hidden.bs.modal', function (e) {
         if(feeRateObject.feeRateSpreads){
             feeRateObject.feeRateSpreads.destroy();
@@ -1096,7 +1036,6 @@ $(function(){
         feeRateObject.submitFeeRateBySelect();
     })
 })
-
 function changeFRadioClick() {
     var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
     if(radioV==='0'){

+ 8 - 9
web/building_saas/main/js/views/sub_fee_rate_views.js

@@ -125,7 +125,6 @@ var subRateObject={
         sheet.setCellType(row, col, dynamicCombo, GC.Spread.Sheets.SheetArea.viewport);
     },
     addComboboxOption:function (datas) {
-        //<option value ="volvo">Volvo</option> <option value ="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option>
         _.forEach(datas,function (item) {
             var selectvalue = 0;
             _.forEach(item.optionList,function (o) {
@@ -139,18 +138,18 @@ var subRateObject={
         })
     },
     subRateChange:function(select){
-        var me = subRateObject;
-        var selectValueList=[];
-        var selectMap={};
+        let me = subRateObject;
+        let selectValueList=[];
+        let selectMap={};
         if(me.datas&&me.datas.length>0){
             $.bootstrapLoading.start();
             _.forEach(me.datas,function (d,key) {
-                var selectValue = $('#'+d.ID).val();
+                let selectValue = $('#'+d.ID).val();
                 selectValueList.push(selectValue);
                 selectMap[key]=selectValue;
             })
-            var mapID =selectValueList.join('-');
-           var  rate = me.valueMap[mapID];
+            let mapID =selectValueList.join('-');
+            let rate = me.valueMap[mapID];
             feeRateObject.updateBySelect(rate,selectMap,mapID);
         }
     },
@@ -167,8 +166,8 @@ var subRateObject={
                 }
                 selectValueList.push(selectMap[key]);
             })
-            var mapID =selectValueList.join('-');
-            var rate = me.valueMap[mapID];
+            let mapID =selectValueList.join('-');
+            let rate = me.valueMap[mapID];
             feeRateObject.updateBySelect(rate,selectMap,mapID);
         }
     },