|  | @@ -101,6 +101,7 @@ var blockLibObj = {
 | 
	
		
			
				|  |  |          me.mainSheet.name('blockLibSheet');
 | 
	
		
			
				|  |  |          sheetCommonObj.spreadDefaultStyle(me.mainSpread);
 | 
	
		
			
				|  |  |          // me.mainSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, this.onCellDoubleClick);
 | 
	
		
			
				|  |  | +        me.mainSpread.bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          var showblockTree = function (datas) {
 | 
	
		
			
				|  |  |              me.mainTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: false});
 | 
	
	
		
			
				|  | @@ -134,6 +135,8 @@ var blockLibObj = {
 | 
	
		
			
				|  |  |          sheetCommonObj.spreadDefaultStyle(me.rationSpread);
 | 
	
		
			
				|  |  |          me.rationSheet.setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        me.loadTreeContextMenu();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          $.bootstrapLoading.end();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      loadDetailDatas: function (node){
 | 
	
	
		
			
				|  | @@ -439,6 +442,87 @@ var blockLibObj = {
 | 
	
		
			
				|  |  |              sheet.setValue(0, 3, billData.feesIndex.common.unitFee);
 | 
	
		
			
				|  |  |          sheet.resumeEvent();
 | 
	
		
			
				|  |  |          sheet.resumePaint();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    loadTreeContextMenu: function (){
 | 
	
		
			
				|  |  | +        let me = this;
 | 
	
		
			
				|  |  | +        $.contextMenu({
 | 
	
		
			
				|  |  | +            selector: '#div_block_tree',
 | 
	
		
			
				|  |  | +            build: function ($trigger, e) {
 | 
	
		
			
				|  |  | +                SheetDataHelper.safeRightClickSelection($trigger, e, me.mainSpread);
 | 
	
		
			
				|  |  | +                me.onEnterCell();
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            items: {
 | 
	
		
			
				|  |  | +                "oneToOneClone": {
 | 
	
		
			
				|  |  | +                    name: '一对一克隆',
 | 
	
		
			
				|  |  | +                    icon: "fa-battery-empty",
 | 
	
		
			
				|  |  | +                    disabled: function () {
 | 
	
		
			
				|  |  | +                       return me.mainTree.selected.data.type == 1;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    visible: function(key, opt){
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    callback: function (key, opt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                "oneToMoreClone": {
 | 
	
		
			
				|  |  | +                    name: '一对多克隆',
 | 
	
		
			
				|  |  | +                    icon: "fa-battery-half",
 | 
	
		
			
				|  |  | +                    disabled: function () {
 | 
	
		
			
				|  |  | +                        return me.mainTree.selected.data.type == 1;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    visible: function(key, opt){
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    callback: function (key, opt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                "moreToMoreClone": {
 | 
	
		
			
				|  |  | +                    name: '多对多克隆',
 | 
	
		
			
				|  |  | +                    icon: "fa-battery-full",
 | 
	
		
			
				|  |  | +                    disabled: function () {
 | 
	
		
			
				|  |  | +                        return me.mainTree.selected.data.type == 2;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    visible: function(key, opt){
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    callback: function (key, opt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                "delete": {
 | 
	
		
			
				|  |  | +                    name: '删除',
 | 
	
		
			
				|  |  | +                    icon: "delete",
 | 
	
		
			
				|  |  | +                    disabled: function () {
 | 
	
		
			
				|  |  | +                        return false;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    visible: function(key, opt){
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    callback: function (key, opt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                "moveBlock": {
 | 
	
		
			
				|  |  | +                    name: '移动模板',
 | 
	
		
			
				|  |  | +                    icon: "cut",
 | 
	
		
			
				|  |  | +                    disabled: function () {
 | 
	
		
			
				|  |  | +                        return me.mainTree.selected.data.type == 1;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    visible: function(key, opt){
 | 
	
		
			
				|  |  | +                        return true;
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    callback: function (key, opt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onEnterCell: function (sender, args) {
 | 
	
		
			
				|  |  | +        let me = blockLibObj;
 | 
	
		
			
				|  |  | +        me.mainTree.selected = me.mainTree.items[me.mainSheet.getActiveRowIndex()];
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 |