| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045 | 
							- /**
 
-  * Created by chen on 2017/8/1.
 
-  */
 
- var feeRateObject={
 
-     mainFeeRateSpread:null,
 
-     mainFeeRateSheet:null,
 
-     mainFeeRateData:null,
 
-     mainFeeRateSetting:{
 
-         header: [
 
-             {headerName: "专业名称", headerWidth: 250, dataCode: "name", dataType: "String"},
 
-             {headerName: "值%", headerWidth: 80, dataCode: "rate", dataType: "Number",hAlign: "right",decimalField:"feeRate"},
 
-             {headerName: "备注", headerWidth: 150, dataCode: "memo", dataType: "String"}
 
-         ],
 
-         view: {
 
-             lockColumns: [0]
 
-         }
 
-     },
 
-     mainViews:null,
 
-     datas:null,
 
-     datasBackup:null,
 
-     canEdit:false,
 
-     activateFeeRate:null,
 
-     needCascadeSet:false,
 
-     selectionLoad:false,
 
-     changeInfo:null,
 
-     feeRateSpreads:null,
 
-     editingCell:null,
 
-     feeRateSelection:null,
 
-     sheetSetting: {
 
-         header: [
 
-             {headerName: "专业名称", headerWidth: 200, dataCode: "name", dataType: "String"},
 
-             {headerName: "值%", headerWidth: 120, dataCode: "rate", dataType: "Number",hAlign: "right",decimalField:"feeRate"},
 
-             {headerName: "备注", dataCode: "memo", dataType: "String"}
 
-         ],
 
-         view: {
 
-             comboBox: [],
 
-             lockColumns: [0, 1, 2]
 
-         }
 
-     },
 
-     columns: [
 
-         {
 
-             id: 'name',
 
-             caption: '专业名称',
 
-             dataField: 'name',
 
-             width: 450,
 
-             allowEditing: false
 
-         },
 
-         {
 
-             id: 'rate',
 
-             caption: '值%',
 
-             dataField: 'rate',
 
-             width: 120,
 
-             minWidth: 50,
 
-             allowEditing: true
 
-         },
 
-         {
 
-             id: 'memo',
 
-             caption: '备注',
 
-             dataField: 'memo',
 
-             minWidth: 120,
 
-             allowEditing: true
 
-         },
 
-         {
 
-             id: 'ID',
 
-             caption: 'ID',
 
-             dataField: 'ID',
 
-             width: 80,
 
-             visible: false,
 
-             allowEditing: false
 
-         },
 
-         {
 
-             id: 'subFeeRate',
 
-             caption: '子费率',
 
-             dataField: 'subFeeRate',
 
-             width: 80,
 
-             visible: false,
 
-             allowEditing: false
 
-         },
 
-         {
 
-             id: '_id',
 
-             caption: '自动ID',
 
-             dataField: '_id',
 
-             width: 80,
 
-             visible: false,
 
-             allowEditing: false
 
-         },
 
-         {
 
-             id: 'ParentID',
 
-             caption: '父结点ID',
 
-             dataField: 'ParentID',
 
-             width: 80,
 
-             visible: false,
 
-             allowEditing: false
 
-         }
 
-     ],
 
-     options :{
 
-         allowSorting: false,
 
-         showRowHeader: true,
 
-         colMinWidth: 80,
 
-         rowHeight: 30,
 
-         allowEditing: true,
 
-         editMode: 'inline',
 
-         editUnit: 'cell',
 
-         selectionUnit:  "row",
 
-         hierarchy: {
 
-             keyField: 'ID',
 
-             parentField: 'ParentID',
 
-             collapsed: false,
 
-             column: 'name'
 
-         }
 
-     },
 
-     dataSource : {
 
-         loadRange: function(params) {
 
-             params.success(feeRateObject.datas);
 
-         },
 
-         update: function(params) {
 
-             if(!params.hasOwnProperty('sourceIndex')){
 
-                var selected = feeRateObject.mainViews.getSelections()[0];
 
-                 params.sourceIndex = selected.sourceRow;
 
-             }
 
-             params.success();
 
-             if(!$('#cascadeSet').prop('checked')||params.hasOwnProperty('viewIndex')){
 
-                 projectObj.project.FeeRate.updateFeeRateByEdit(params,feeRateObject.activateFeeRate);
 
-             }
 
-         }
 
-     },
 
-     createSheet:function(){
 
-         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
 
-         feeRateObject.feeRateSpreads=sheetCommonObj.buildSheet($('#fee_rate_sheet')[0], feeRateObject.sheetSetting,feeRateFile.rates.length);
 
-         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);
 
-         feeRateObject.feeRateSheet.bind(GC.Spread.Sheets.Events.CellDoubleClick,feeRateObject.onCellDoubleClick);
 
-     },
 
-     showSelectTree:function (sheet,setting,data) {
 
-         var ch = GC.Spread.Sheets.SheetArea.viewport;
 
-         var groups=[];
 
-         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";
 
-             if (setting.header[col].hAlign) {
 
-                 hAlign = setting.header[col].hAlign;
 
-             } else if (setting.header[col].dataType !== "String"){
 
-                 hAlign = "right";
 
-             }
 
-             vAlign = setting.header[col].vAlign?setting.header[col].vAlign:vAlign;
 
-             sheetCommonObj.setAreaAlign(sheet.getRange(-1, col, -1, 1), hAlign, vAlign);
 
-             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];
 
-                 if(val&&setting.header[col].dataType === "Number"){
 
-                     if(setting.header[col].hasOwnProperty('decimalField')){
 
-                         var decimal = getDecimal(setting.header[col].decimalField);
 
-                         val =scMathUtil.roundToString(val,decimal);
 
-                         sheet.setFormatter(-1, col,getFormatter(decimal), GC.Spread.Sheets.SheetArea.viewport);
 
-                     }else {
 
-                         val =scMathUtil.roundToString(val,2);
 
-                     }
 
-                 }
 
-                 sheet.setValue(row, col, val, ch);
 
-                 if(col==0){
 
-                     feeRateObject.setSheetGroup(data[row],data,groups,row+1);
 
-                 }
 
-             }
 
-         }
 
-         //this.lockCells(sheet,setting);
 
-         _.forEach(groups,function (g) {
 
-             for(var k in g){
 
-                 sheet.rowOutlines.group(parseInt(k), g[k]);
 
-             }
 
-         })
 
-      /*   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);
 
-         sheet.resumeEvent();
 
-         sheet.resumePaint(false);
 
-     },
 
-     getTreeNodeCellType:function () {
 
-         var ns = GC.Spread.Sheets;
 
-         function TreeNodeCellType() {
 
-         }
 
-         TreeNodeCellType.prototype = new ns.CellTypes.Text();
 
-         TreeNodeCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
 
-             var level = options.sheet.rowOutlines.getLevel(options.row);
 
-             var nlevel = -1;
 
-             if (options.row < options.sheet.getRowCount() - 1) {
 
-                 nlevel = options.sheet.rowOutlines.getLevel(options.row + 1);
 
-             }
 
-             var hoffset = (level + 2) * 12;
 
-             x += hoffset;
 
-             w -= hoffset;
 
-             GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this, arguments);
 
-             if (options.row == options.sheet.getRowCount() - 1) return; //last row
 
-             if (nlevel > level) {
 
-                 var collapsed = options.sheet.rowOutlines.isCollapsed(options.row + 1);
 
-                 x--;
 
-                 y += h / 2 - 3;
 
-                 ctx.save();
 
-                 ctx.fillStyle = "black";
 
-                 ctx.beginPath();
 
-                 if (collapsed) {
 
-                     ctx.moveTo(x - 5, y);
 
-                     ctx.lineTo(x, y + 3);
 
-                     ctx.lineTo(x - 5, y + 6);
 
-                 } else {
 
-                     ctx.moveTo(x, y);
 
-                     ctx.lineTo(x, y + 5);
 
-                     ctx.lineTo(x - 5, y + 5);
 
-                 }
 
-                 ctx.fill();
 
-                 ctx.restore();
 
-             }
 
-             else {
 
-                // x--;
 
-                 //y += h / 2 - 3;
 
-                 ctx.save();
 
-                 ctx.restore();
 
-             }
 
-         };
 
-         // override getHitInfo to allow cell type get mouse messages
 
-         TreeNodeCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
 
-             return {
 
-                 x: x,
 
-                 y: y,
 
-                 row: context.row,
 
-                 col: context.col,
 
-                 cellStyle: cellStyle,
 
-                 cellRect: cellRect,
 
-                 sheetArea: context.sheetArea
 
-             };
 
-         }
 
-         TreeNodeCellType.prototype.processMouseDown = function (hitinfo) {
 
-             var level = hitinfo.sheet.rowOutlines.getLevel(hitinfo.row);
 
-             var hoffset = (level + 2) * 12 + hitinfo.cellRect.x;
 
-             if (level==-1&&hitinfo.x < hoffset && hitinfo.x > hoffset - 10) {
 
-                 var collapsed = hitinfo.sheet.rowOutlines.isCollapsed(hitinfo.row + 1);
 
-                 hitinfo.sheet.rowOutlines.setCollapsed(hitinfo.row, !collapsed);
 
-                 hitinfo.sheet.invalidateLayout();
 
-                 hitinfo.sheet.repaint();
 
-             }
 
-         };
 
-         return new TreeNodeCellType()
 
-     },
 
-     getFeeRateEditCellType:function () {
 
-         var ns = GC.Spread.Sheets;
 
-         function FeeRateEditCellType() {
 
-             var init=false;
 
-         }
 
-         FeeRateEditCellType.prototype = new ns.CellTypes.Text();
 
-         FeeRateEditCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
 
-            // if(value!=null){
 
-                // ctx.fillText(value,x+3+ctx.measureText(value).width,y+h-3);
 
-              GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
 
-            // }
 
-             if(feeRateObject.editingCell && !projectReadOnly){
 
-                 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 = w*2/7;
 
-                     var imageX = x + w - imageWidth- imageMagin, imageY = y + h / 2 - imageHeight / 2;
 
-                     ctx.save();
 
-                     ctx.drawImage(image, imageX, imageY,imageWidth,imageHeight);
 
-                     ctx.beginPath();
 
-                     ctx.arc(imageX+imageWidth/2,imageY+imageHeight/2,1,0,360,false);
 
-                     ctx.arc(imageX+imageWidth/2-4,imageY+imageHeight/2,1,0,360,false);
 
-                     ctx.arc(imageX+imageWidth/2+4,imageY+imageHeight/2,1,0,360,false);
 
-                     ctx.fillStyle="black";//填充颜色,默认是黑色
 
-                     ctx.fill();//画实心圆
 
-                     ctx.closePath();
 
-                     ctx.restore();
 
-                 }
 
-             }
 
-         };
 
-         FeeRateEditCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
 
-             return {
 
-                 x: x,
 
-                 y: y,
 
-                 row: context.row,
 
-                 col: context.col,
 
-                 cellStyle: cellStyle,
 
-                 cellRect: cellRect,
 
-                 sheetArea: context.sheetArea
 
-             };
 
-         };
 
-         FeeRateEditCellType.prototype.processMouseDown = function (hitinfo) {
 
-             var me=feeRateObject;
 
-             me.pmLeave = false;
 
-             if(me.editingCell==null){
 
-                 var showSelectBtn = true;
 
-                 if(hitinfo.sheet.name()!='calc_detail'){
 
-                     showSelectBtn=me.ifFeeRateEdit();
 
-                 }
 
-                 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 = hitinfo.cellRect.width*2/7;
 
-                 if(hitinfo.x<offset&&hitinfo.x>offset-imageWidth){
 
-                     if(!projectReadOnly){
 
-                         me.showSelectModal(hitinfo);
 
-                     }
 
-                 }
 
-             }
 
-         };
 
-         FeeRateEditCellType.prototype.processMouseLeave = function (hitinfo) {
 
-             if(!feeRateObject.pmLeave){
 
-                 feeRateObject.editingCell=null;
 
-                 hitinfo.sheet.invalidateLayout();
 
-                 hitinfo.sheet.repaint();
 
-                 feeRateObject.pmLeave = true;
 
-             }
 
-         }
 
-         return new FeeRateEditCellType();
 
-     },
 
-     showSelectModal:function (hitinfo) {
 
-         //锁定的清单不显示
 
-         let project = projectObj.project;
 
-         if(project.isBillsLocked() && project.withinBillsLocked(project.mainTree.selected)){
 
-             return;
 
-         }
 
-         $("#fee_rate_tree").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;
 
-         var children=_.filter(data,{'ParentID':id});
 
-         if(children&&children.length==0){
 
-             return 0;
 
-         }
 
-         for(var i=0;i<children.length;i++){
 
-             sum+=me.getChildrenCount(children[i].ID,data);
 
-         }
 
-         return children.length+sum;
 
-     },
 
-     ifFeeRateEdit:function () {
 
-         var selected = projectObj.project.mainTree.selected;
 
-         return selected&&MainTreeCol.readOnly.forFeeRate(selected)?false:true;
 
-     },
 
-     createSpreadView:function () {
 
-         if (this.mainViews) {
 
-             this.mainViews.destroy();
 
-             this.mainViews = null;
 
-         }
 
-         if(subRateObject.views){
 
-             subRateObject.views.destroy();
 
-             subRateObject.views = null;
 
-         }
 
-         this.activateFeeRate = projectObj.project.FeeRate.getActivateFeeRate();
 
-         this.datas = this.activateFeeRate.rates;
 
-         var rateColSetting = _.find(this.columns,{"id":"rate"});
 
-         rateColSetting?rateColSetting.format=getFormatter(getDecimal("feeRate")):"";
 
-         this.mainViews = new GC.Spread.Views.DataView($('#divFee')[0],
 
-             this.dataSource, this.columns, new GC.Spread.Views.Plugins.GridLayout(this.options));
 
-         this.mainViews["rowClick"].addHandler(subRateObject.reFreshRateViews);
 
-         this.mainViews.invalidate();
 
-         document.querySelector('#divFee').focus();
 
-     },
 
-     initFeeRateSpread:function (rowCount) {
 
-         //初始化费用项表格
 
-         this.mainFeeRateSpread = sheetCommonObj.buildSheet($('#divFee')[0], this.mainFeeRateSetting,rowCount);
 
-         this.mainFeeRateSpread.options.scrollbarMaxAlign = true;
 
-         this.mainFeeRateSheet = this.mainFeeRateSpread.getSheet(0);
 
-         if(!projectReadOnly){
 
-             sheetCommonObj.lockCells(this.mainFeeRateSheet , this.mainFeeRateSetting);
 
-         }
 
-         this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onMainFeeRateSheetValueChange);
 
-         this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, this.onMainFeeRateSelectChanged);
 
-         this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onMainFeeRateRangeChanged);
 
-         this.mainFeeRateSheet.bind(GC.Spread.Sheets.Events.EditStarting, function (e,args) {
 
-             let me =feeRateObject;
 
-             if(!me.mainFeeRateEditChecking(args.row,args.col)){
 
-                 args.cancel = true;
 
-             }
 
-         });
 
-         this.mainFeeRateSheet.name('mainFeeRateSheet');
 
-         disableRightMenu("divFee",this.mainFeeRateSpread,this.rightClickCallback);
 
-         //打开他人分享的项目、只读
 
-         if(projectReadOnly){
 
-             disableSpread(this.mainFeeRateSpread);
 
-         }
 
-     },
 
-     rightClickCallback:function (row) {
 
-         let me = feeRateObject;
 
-         me.onMainFeeRateSelect(row);
 
-     },
 
-     showMainFeeRateData:function () {
 
-         let me = this;
 
-         let selected = me.mainFeeRateSheet.getSelections()[0];
 
-         me.activateFeeRate = projectObj.project.FeeRate.getActivateFeeRate();
 
-         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.mainFeeRateSheet.setSelection(selected.row,selected.col,selected.rowCount,selected.colCount);
 
-     },
 
-     reFreshRateViews:function() {
 
-         //feeRateObject.createSpreadView();
 
-         feeRateObject.loadPageContent();
 
-         this.showMainFeeRateData();
 
-         if(subRateObject.subRateSpread){//如果子费率没有初始化过的话,不需要显示。
 
-             subRateObject.initSubRateSpread(this.mainFeeRateData[0]);
 
-         }
 
-     },
 
-     mainFeeRateEditChecking:function (row,col) {//false 不能编辑,true 可以编辑
 
-         let me =feeRateObject;
 
-         let recode = me.mainFeeRateData[row];
 
-         let dataCode = me.mainFeeRateSetting.header[col].dataCode;
 
-         if(dataCode=="rate"&&me.getChildrenCount(recode.ID,me.mainFeeRateData)>0){//有子节点时不能编辑费率列
 
-             return false;
 
-         }
 
-         return true;
 
-     },
 
-     onMainFeeRateSheetValueChange:function (e,info) {
 
-   /*      let me = feeRateObject,updateData = {},feeRate = projectObj.project.FeeRate;
 
-         let recode = me.mainFeeRateData[info.row];
 
-         let fieldID = me.mainFeeRateSetting.header[info.col].dataCode;
 
-         let value = info.newValue;
 
-         if(fieldID == 'rate'&&value != null){
 
-             let checkResult = scMathUtil.isNumOrFormula(value);
 
-             if(checkResult!=null){
 
-                 value = scMathUtil.roundForObj(checkResult,getDecimal("feeRate"));
 
-             }else {
 
-                 alert('当前输入的数据类型不正确,请重新输入。');
 
-                 me.mainFeeRateSheet.setValue(info.row, info.col, info.oldValue);
 
-                 return;
 
-             }
 
-         }
 
-         if(recode[fieldID] == value){//没有改变
 
-             return;
 
-         }
 
-         updateData[fieldID] = value;
 
-         $.bootstrapLoading.start();
 
-          feeRate.updateFeeRateByID(recode.ID,updateData,function () {
 
-              me.mainFeeRateSheet.setValue(info.row, info.col, value);
 
-              if(fieldID == 'rate'){
 
-                 feeRate.onFeeRateChange(recode.ID,value);
 
-             }
 
-             $.bootstrapLoading.end();
 
-         })*/
 
-         feeRateObject.updateFeerateWhenCellsChange([info]);
 
-     },
 
-     onMainFeeRateRangeChanged:function (e,info) {
 
-         let me = feeRateObject;
 
-         let changeCells = [];
 
-         for(let c of info.changedCells){
 
-             let tem = {
 
-                 row:c.row,
 
-                 col:c.col,
 
-                 newValue:info.sheet.getCell(c.row,c.col).value()
 
-             };
 
-             changeCells.push(tem);
 
-         }
 
-         me.updateFeerateWhenCellsChange(changeCells);
 
-     },
 
-     updateFeerateWhenCellsChange:function (cells) {// col,row,newValue
 
-         let me = feeRateObject,updateDatas = [],feeRate = projectObj.project.FeeRate;//[{rateID:rateID,doc:doc}]
 
-         let refreshA = [];//记录刷新条数的数组
 
-         for(let c of cells){
 
-             let temData = {};
 
-             let recode  = me.mainFeeRateData[c.row];
 
-             let fieldID = me.mainFeeRateSetting.header[c.col].dataCode;
 
-             let value = c.newValue;
 
-             let oldValue = recode[fieldID];
 
-             if(!me.mainFeeRateEditChecking(c.row, c.col)){
 
-                 me.mainFeeRateSheet.setValue(c.row, c.col, oldValue);
 
-                 continue;
 
-             }else if(fieldID == 'rate'&&value != null){
 
-                 let checkResult = scMathUtil.isNumOrFormula(value);
 
-                 if(checkResult!=null && !isNaN(checkResult)){
 
-                     value = scMathUtil.roundForObj(checkResult,getDecimal("feeRate"));
 
-                 }else {
 
-                     setTimeout(function () {
 
-                         alert('当前输入的数据类型不正确,请重新输入。');
 
-                     },100);
 
-                     me.mainFeeRateSheet.setValue(c.row, c.col, oldValue);
 
-                     continue;
 
-                 }
 
-             }
 
-             if(recode[fieldID] == value){//没有改变
 
-                 continue;
 
-             }
 
-             temData[fieldID] = value ;
 
-             updateDatas.push({rateID:recode.ID,doc:temData});
 
-             refreshA.push({col:c.col,row:c.row,fieldID:fieldID,value:value,rateID:recode.ID});
 
-         }
 
-         if(updateDatas.length > 0){
 
-             $.bootstrapLoading.start();
 
-             feeRate.updateFeeRatesByIDs(updateDatas,function () {
 
-                 let feerateInfo = [];
 
-                 for(let r of refreshA){
 
-                     me.mainFeeRateSheet.setValue(r.row, r.col, r.value);
 
-                     if(r.fieldID == 'rate'){
 
-                         feerateInfo.push({rateID:r.rateID,value:r.value});
 
-                     }
 
-                 }
 
-                 feerateInfo.length > 0 ?feeRate.onFeeRatesChange(feerateInfo):'';
 
-                 $.bootstrapLoading.end();
 
-             })
 
-         }
 
-     },
 
-     onMainFeeRateSelectChanged:function (e, info) {
 
-         let me = feeRateObject;
 
-         let row = info.newSelections[0].row;
 
-         me.onMainFeeRateSelect(row);
 
-     },
 
-     onMainFeeRateSelect:function (row) {
 
-         let me = this;
 
-         if(row!=-1){
 
-             subRateObject.initSubRateSpread(me.mainFeeRateData[row]);
 
-         }
 
-     },
 
-     updateBySelect:function (rate,selectMap,mapID) {
 
-         let selected = this.mainFeeRateSheet.getSelections()[0];
 
-         projectObj.project.FeeRate.backupDatas();
 
-         let item = this.mainFeeRateData[selected.row];
 
-         item.rate = rate;
 
-         for(let key in selectMap){
 
-             let recode =  item.subFeeRate.recodes[key];
 
-             let optionList = recode.optionList;
 
-             for(let o of optionList){
 
-                 if(o.value==selectMap[key]){
 
-                     o.selected=true;
 
-                 }else {
 
-                     o.selected = false;
 
-                 }
 
-             }
 
-         }
 
-         if($('#cascadeSet').prop('checked')){
 
-             this.cascadeSetRates(item,selected.row,mapID,selectMap);
 
-         }else {
 
-             projectObj.project.FeeRate.batchUpdateFeeRate([{rateIndex:selected.row,rate:item}],feeRateObject.activateFeeRate);
 
-         }
 
-     },
 
-     cascadeSetRates:function(selectedItem,sourceRow,mapID,selectMap){
 
-         let items=[];
 
-         items.push({rateIndex:sourceRow,rate:selectedItem});
 
-         _.forEach(this.mainFeeRateData,function (recode,Index) {
 
-             if(Index!=sourceRow&&recode.subFeeRate){
 
-                 let valueMaps = recode.subFeeRate.valueMaps;
 
-                 let valueMap = _.find(valueMaps,{ID:mapID});
 
-                 if(valueMap){//选项完全一样的情况
 
-                     if(valueMap.value==recode.rate){
 
-                         return;
 
-                     }else {
 
-                         recode.rate = valueMap.value;
 
-                         _.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;
 
-                                 }
 
-                             })
 
-                         });
 
-                         items.push({rateIndex:Index,rate:recode});
 
-                     }
 
-                 }else {//某条选项一样的情况
 
-                     let needUpdate = false;
 
-                     let selectList = mapID.split('-');
 
-                     let newList=[];
 
-                     _.forEach(recode.subFeeRate.recodes,function (r) {
 
-                         let oList = r.optionList;
 
-                         let oldSelectIndex=0;
 
-                         let hasChange=false;
 
-                         _.forEach(oList,function (o,key) {
 
-                             if(o.selected){
 
-                                 oldSelectIndex = key;
 
-                             }
 
-                             if(_.includes(selectList,o.value)){
 
-                                 needUpdate=true;
 
-                                 o.selected=true;
 
-                                 hasChange=true;
 
-                                 newList.push(o.value);
 
-                             }else {
 
-                                 o.selected=false;
 
-                             }
 
-                         });
 
-                         if(!hasChange){
 
-                             oList[oldSelectIndex].selected=true;
 
-                             newList.push(oList[oldSelectIndex].value)
 
-                         }
 
-                     });
 
-                     if(needUpdate){
 
-                       let newValue =   _.find(valueMaps,{ID:newList.join("-")})//取出费率值并更新
 
-                         if(newValue){
 
-                           if(recode.rate != newValue.value){
 
-                               recode.rate = newValue.value
 
-                               items.push({rateIndex:Index,rate:recode});
 
-                           }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         });
 
-         projectObj.project.FeeRate.batchUpdateFeeRate(items,feeRateObject.activateFeeRate);
 
-     },
 
-     loadPageContent:function(){
 
-         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
 
-         var usageProjects = feeRateFile.usageProjects;
 
-         $('#feeRateFileName').text(feeRateFile.name);
 
-         $('#feeRateLibName').text(feeRateFile.libName);
 
-         $('#projectCount').text(usageProjects.length);
 
-     },
 
-     loadFeeRateSelection:function() {
 
-         if(!this.selectionLoad){
 
-             var selectedID=0;
 
-             _.forEach(projectObj.project.FeeRate.datas,function (data) {
 
-                 var option =  $("<option>").val(data.ID).text(data.libName);
 
-                 $('#inlineFormCustomSelect').append(option);
 
-                 if(data.status=='activate'){
 
-                     selectedID=data.ID;
 
-                 }
 
-             })
 
-             $('#inlineFormCustomSelect').val(selectedID);
 
-         }
 
-     },
 
-     getFeeRateStandards:function (callback) {
 
-         CommonAjax.post('/feeRates/getFeeRateStandards', {"projectID": projectObj.project.ID()}, function (data) {
 
-             if (data) {
 
-                 callback(data);
 
-             }
 
-         });
 
-     },
 
-     changeFeeRateStandard:function(newVal){
 
-         $.bootstrapLoading.start();
 
-         var callback=function () {
 
-             feeRateObject.reFreshRateViews();
 
-             projectObj.project.FeeRate.onFeeRateFileChange();
 
-             $.bootstrapLoading.end();
 
-         };
 
-         projectObj.project.FeeRate.changeFeeRateStandard(newVal,callback);
 
-     },
 
-     checkFeeRateName:function (newVal) {
 
-         if(!newVal||newVal==""){
 
-             $('#saveAsConfirm').attr("disabled","disabled");
 
-             $('#nameError').text("请输入文件名称。").show();
 
-             return;
 
-         }
 
-         var callback=function (data) {
 
-             if(data){
 
-                 $('#saveAsConfirm').attr("disabled","disabled");
 
-                 $('#nameError').text("已存在同名费率文件。").show();
 
-                 $('#valid_name').val('');
 
-             }else {
 
-                 $('#valid_name').val(newVal);
 
-                 $('#saveAsConfirm').removeAttr("disabled");
 
-                 $('#nameError').hide();
 
-             }
 
-         };
 
-         projectObj.project.FeeRate.checkFeeRateName(newVal,callback);
 
-     },
 
-     feeRateFileSaveAs:function (newName) {
 
-         if(!newName||newName==""){
 
-             $('#saveAsConfirm').attr("disabled","disabled");
 
-             $('#nameError').text("请输入文件名称。").show();
 
-             return;
 
-         }
 
-         var valideName = $('#valid_name').val();
 
-         if(valideName==''||valideName!==newName){
 
-             var callback=function (data) {
 
-                 if(data){
 
-                     $('#saveAsConfirm').attr("disabled","disabled");
 
-                     $('#nameError').text("已存在同名费率文件。").show();
 
-                     $('#valid_name').val('');
 
-                 }else {
 
-                     feeRateObject.submitSaveAs(newName);
 
-                 }
 
-             }
 
-             projectObj.project.FeeRate.checkFeeRateName(newName,callback);
 
-         }else {
 
-             feeRateObject.submitSaveAs(newName);
 
-         }
 
-     },
 
-     submitSaveAs:function (newName) {
 
-         var me = this;
 
-           projectObj.project.FeeRate.feeRateFileSaveAs(newName,function (result) {
 
-               me.activateFeeRate = result;
 
-               me.loadPageContent();
 
-               $('#copy-lv').modal('hide');
 
-               socket.emit('feeRateChangeNotify', projectObj.project.FeeRate.getActivateFeeRateFileID());
 
-               $.bootstrapLoading.end();
 
-         });
 
-     },
 
-     getChangeInfo:function () {
 
-         var me = this;
 
-         var callback=function (data) {
 
-             me.changeInfo=data;
 
-             me.loadChangePageContent(data);
 
-             console.log(data);
 
-         };
 
-         projectObj.project.FeeRate.getChangeInfo(callback);
 
-     },
 
-     loadChangePageContent:function (data) {
 
-         $('#currentProject').text(data.currentProject.name);
 
-         $('#currentOptions').empty();
 
-         _.forEach(data.currentProject.currentOptions,function (s) {
 
-             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);
 
-             $('#otherProject').append(option);
 
-         });
 
-         $('#otherFeeRateOption').empty();
 
-         if(data.others.length>0){
 
-             _.forEach(data.others[0].optionList,function (f) {
 
-                 var option =  $("<option>").val(f.ID).text(f.name);
 
-                 $('#otherFeeRateOption').append(option);
 
-             });
 
-         }
 
-     },
 
-     changeFeeRateFileFromCurrent:function(){
 
-         $.bootstrapLoading.start();
 
-         var newVal = $("#currentOptions").val();
 
-         if($("#currentOptions").val()==this.activateFeeRate.ID){
 
-             return;
 
-         }
 
-         var name =$("#currentOptions").find("option:selected").text();
 
-         var newFeeRateFile = {
 
-             id:newVal,
 
-             name:name
 
-         }
 
-         var callback=function () {
 
-             //feeRateObject.createSpreadView();
 
-             feeRateObject.reFreshRateViews();
 
-             projectObj.project.FeeRate.onFeeRateFileChange();
 
-             $.bootstrapLoading.end();
 
-         }
 
-         projectObj.project.FeeRate.changeFeeRateFileFromCurrent(newFeeRateFile,callback);
 
-     },
 
-     changeFeeRateFileFromOthers:function () {
 
-         var feeRateFileID = $("#otherFeeRateOption").val();
 
-         var name =$("#otherFeeRateOption").find("option:selected").text();
 
-         if(null===feeRateFileID){
 
-             alert("请选择一个费率文件!");
 
-             return;
 
-         }
 
-         var currentOption = _.find(this.changeInfo.currentProject.currentOptions,{name:name})
 
-         if(currentOption){
 
-             $("#rename-lv").modal({show:true});
 
-             $("#newFeeRateID").val(feeRateFileID);
 
-             $("#newFeeRateName").val(name);
 
-         }else {
 
-             this.changeFeeRateFileConfirm(feeRateFileID,name);
 
-         }
 
-     },
 
-     changeFeeRateFileConfirm:function(feeRateFileID,name){
 
-         $.bootstrapLoading.start();
 
-         var callback=function () {
 
-             feeRateObject.reFreshRateViews();
 
-             projectObj.project.FeeRate.onFeeRateFileChange();
 
-             $.bootstrapLoading.end();
 
-         }
 
-         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];
 
-     },
 
-     onCellDoubleClick:function (sender,args) {
 
-         var data =projectObj.project.FeeRate.getActivateFeeRate().rates;
 
-         feeRateObject.feeRateSelection=data[args.row];
 
-         feeRateObject.submitFeeRateBySelect();
 
-     },
 
-     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;
 
-     },
 
-     submitFeeRateFromBill:function () {
 
-        var rate = feeRateObject.feeRateSelection;
 
-        var selected = projectObj.project.mainTree.selected;
 
-         $.bootstrapLoading.start();
 
-         projectObj.project.FeeRate.submitFeeRateFromBill(rate,selected.data,function (data) {
 
-             selected.data.feeRateID=rate.ID.toString();
 
-             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');
 
-             $.bootstrapLoading.end();
 
-         });
 
-     },
 
-     submitFeeRateFromCalc:function () {
 
-         var rate = feeRateObject.feeRateSelection;
 
-         var calInfo = calcProgramManage.getSelectionInfo();
 
-         calInfo.calcItem.feeRateID=rate.ID;
 
-         calInfo.calcItem.feeRate=null;
 
-         var data={'projectID': projectObj.project.ID(),'templatesID': calInfo.template.ID,'calcItem': calInfo.calcItem};
 
-         $.bootstrapLoading.start();
 
-         calcProgramManage.saveCalcItem(data,function (result) {
 
-             calInfo.calcItem.feeRate=rate.rate;
 
-             projectObj.project.calcProgram.compileAllTemps();
 
-             projectObj.project.calcProgram.calcAllNodesAndSave();
 
-             calcProgramManage.refreshDetailSheet();
 
-             $("#fee_rate_tree").modal('hide');
 
-             $.bootstrapLoading.end();
 
-         });
 
-         console.log(calInfo);
 
-     },
 
-     submitFeeRateBySelect:function () {
 
-         var validate = this.checkSelectedFeeRate();
 
-         if(validate){
 
-             if($('#edit_from').val()=='calc_detail'){
 
-                 this.submitFeeRateFromCalc();
 
-             }else {
 
-                 this.submitFeeRateFromBill();
 
-             }
 
-         }else {
 
-             //$("#fee_rate_tree").modal('hide');
 
-         }
 
-     }
 
- }
 
- function getPopoverContent() {
 
-     var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
 
-     var usageProjects = feeRateFile.usageProjects;
 
-     var popover_content = "";
 
-     _.forEach(usageProjects,function (p,index) {
 
-         if(index>0){
 
-             popover_content+='<br>';
 
-         }
 
-         popover_content+=p.name;
 
-     })
 
-     return popover_content;
 
- }
 
- $(function(){
 
-     $('#pop-lv').popover({
 
-             placement:"bottom",
 
-             html:true,
 
-             trigger:"hover | focus",
 
-             content:getPopoverContent
 
-         }
 
-     );
 
-     $('#tab_fee_rate').on('shown.bs.tab', function (e) {
 
-         sessionStorage.setItem('mainTab', '#tab_fee_rate');
 
-         let me = feeRateObject;
 
-         $(e.relatedTarget.hash).removeClass('active');
 
-         if(me.mainFeeRateSpread == null){
 
-             me.initFeeRateSpread(0);
 
-         }
 
-         me.showMainFeeRateData();
 
-         me.loadPageContent();
 
-     });
 
-     $('#setNewFeeRate').bind('click', function () {
 
-         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
 
-         var usageProjects = feeRateFile.usageProjects;
 
-         var listString ='';
 
-         _.forEach(usageProjects,function (u) {
 
-             listString+="<li>"+u.name+"</li>"
 
-         })
 
-         $("#usageProjectList").html(listString);
 
-         $("#set-lv-feeRateName").text(feeRateFile.name);
 
-         $("#set-use-feeRateName").text(feeRateFile.name);
 
-         feeRateObject.getFeeRateStandards(function (data) {
 
-             $('#standardSelect').empty();
 
-             _.forEach(data,function (s) {
 
-                 var option =  $("<option>").val(s.ID).text(s.libName);
 
-                 $('#standardSelect').append(option);
 
-             })
 
-             $('#standardSelect').val(feeRateFile.libID);
 
-         });
 
-     });
 
-     $('#changeConfirm').bind('click', function (){
 
-         var newVal=$('#standardSelect').val();
 
-         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
 
-         if(newVal&&newVal!=feeRateFile.libID){
 
-             feeRateObject.changeFeeRateStandard(newVal);
 
-         }
 
-     });
 
-     $('#saveAs').bind('click', function (){
 
-         var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
 
-         $('#copyFeeRateName').val(feeRateFile.name+'副本');
 
-         $('#valid_name').val(feeRateFile.name+'副本');
 
-         $('#nameError').hide();
 
-     });
 
-     $('#saveAsConfirm').bind('click',function () {
 
-         feeRateObject.feeRateFileSaveAs($('#copyFeeRateName').val());
 
-     })
 
-     $('#copyFeeRateName').change(function () {
 
-         feeRateObject.checkFeeRateName(this.value);
 
-     });
 
-     $('#newFeeRateName').change(function () {
 
-         var newName = $(this).val();
 
-         if(!newName||newName==""){
 
-             $('#renameConfirm').attr("disabled","disabled");
 
-             $('#renameError').text("请输入文件名称。").show();
 
-             return;
 
-         }
 
-         var callback=function (data) {
 
-             if(data){
 
-                 $('#renameConfirm').attr("disabled","disabled");
 
-                 $('#renameError').text("本建设项目中已存在同名费率文件。").show();
 
-             }else {
 
-                 $('#renameConfirm').removeAttr("disabled");
 
-                 $('#renameError').hide();
 
-             }
 
-         };
 
-         projectObj.project.FeeRate.checkFeeRateName(newName,callback);
 
-     });
 
-     $('#changeFeeRateConfirm').bind('click',function (){
 
-         var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
 
-         if(radioV==='0'){
 
-             feeRateObject.changeFeeRateFileFromCurrent();
 
-         }else {
 
-             feeRateObject.changeFeeRateFileFromOthers();
 
-         }
 
-     })
 
-     $('#changFeeRateFile').bind('click',function (){
 
-         $("input[name='chaneg-lv-Radio']")[0].checked=true;
 
-         $("#fromProject").show();
 
-         $("#fromOther").hide();
 
-         feeRateObject.getChangeInfo();
 
-     })
 
-     $('#otherProject').change(function(){
 
-         var newVal = $(this).val();
 
-         var projects = feeRateObject.changeInfo.others;
 
-         var selected = _.find(projects,{ID:parseInt(newVal)});
 
-         $('#otherFeeRateOption').empty();
 
-         _.forEach(selected.optionList,function (f) {
 
-             var option =  $("<option>").val(f.ID).text(f.name);
 
-             $('#otherFeeRateOption').append(option);
 
-         });
 
-     })
 
-     $('#renameConfirm').bind('click',function (){
 
-         var feeRateFileID= $("#newFeeRateID").val();
 
-         var name = $("#newFeeRateName").val();
 
-         feeRateObject.changeFeeRateFileConfirm(feeRateFileID,name);
 
-     })
 
-     $('#inlineFormCustomSelect').change(function(){
 
-         var updateTask = [];
 
-         var selectID = $(this).val();
 
-         var oldValue=0;
 
-         _.forEach(projectObj.project.FeeRate.datas,function (feeRate) {
 
-             if(feeRate.status=='activate'){
 
-                 oldValue=feeRate.ID;
 
-             }
 
-             if(feeRate.ID ==selectID){
 
-                 feeRate.status='activate';
 
-             }else {
 
-                 feeRate.status='disable';
 
-             }
 
-             updateTask.push({query:{ID:feeRate.feeRateID},doc:{status:feeRate.status}});
 
-         })
 
-         projectObj.project.FeeRate.updateStatusBySelected(updateTask);
 
-         feeRateObject.createSpreadView();
 
-         subRateObject.destorySpreadView();
 
-         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);
 
-     });
 
-     $('#fee_rate_tree').on('hidden.bs.modal', function (e) {
 
-         if(feeRateObject.feeRateSpreads){
 
-             feeRateObject.feeRateSpreads.destroy();
 
-             feeRateObject.feeRateSpreads=null;
 
-             $('#edit_from').val('');
 
-             $('#edit_row').val('');
 
-         }
 
-     });
 
-     $('#fee_selected_conf').bind('click',function (){
 
-         feeRateObject.submitFeeRateBySelect();
 
-     })
 
- })
 
- function changeFRadioClick() {
 
-     var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
 
-     if(radioV==='0'){
 
-         $("#fromProject").show();
 
-         $("#fromOther").hide();
 
-     }else {
 
-         $("#fromProject").hide();
 
-         $("#fromOther").show();
 
-     }
 
- }
 
 
  |