|  | @@ -223,6 +223,7 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |          setButtonValid(tree.selected && tree.selected.canUpMove(), $('#upMove'));
 | 
	
		
			
				|  |  |          setButtonValid(tree.selected && tree.selected.canDownMove(), $('#downMove'));
 | 
	
		
			
				|  |  |          setButtonValid(tree.selected ? true : false, $('#delete'));
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |      let RefreshBillsData = function (datas) {
 | 
	
		
			
				|  |  |          datas.forEach(function (data) {
 | 
	
	
		
			
				|  | @@ -326,8 +327,6 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |      let controller = TREE_SHEET_CONTROLLER.createNew(tree, billsSpread.getActiveSheet(), TEMPLATE_BILLS_SETTING);
 | 
	
		
			
				|  |  |      let fixedFlagMap = getNameToValueMap(billsFixedFlagList);
 | 
	
		
			
				|  |  |      let typeMap = getNameToValueMap(billsTypeFlagList);
 | 
	
		
			
				|  |  | -    console.log(fixedFlagMap);
 | 
	
		
			
				|  |  | -    console.log(typeMap);
 | 
	
		
			
				|  |  |      //format code
 | 
	
		
			
				|  |  |      //billsSpread.getSheet(0).setFormatter(-1, 1, '@');
 | 
	
		
			
				|  |  |      controller.bind('refreshBaseActn', RefreshBaseActn);
 | 
	
	
		
			
				|  | @@ -433,44 +432,15 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |      $('#delete').click(function () {
 | 
	
		
			
				|  |  |          let me = this;
 | 
	
		
			
				|  |  |          $(me).addClass('disabled');
 | 
	
		
			
				|  |  | -        let selection = controller.sheet.getSelections()[0], updateData,deleteMap={},deleteNodes=[];
 | 
	
		
			
				|  |  | -        for(let i=0;i < selection.rowCount;i++){
 | 
	
		
			
				|  |  | -            let tem_node = controller.tree.items[selection.row+i];
 | 
	
		
			
				|  |  | -            if(i == 0){//第一个直接添加;
 | 
	
		
			
				|  |  | -                deleteMap[tem_node.getID()] = tem_node;
 | 
	
		
			
				|  |  | -                deleteNodes.push(tem_node);
 | 
	
		
			
				|  |  | -            }else {
 | 
	
		
			
				|  |  | -                setNodeToMapAndArray(tem_node,deleteMap,deleteNodes);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        let [deleteMap,deleteNodes] = getNodesAndMapFromSheet(controller);
 | 
	
		
			
				|  |  |          if (deleteNodes.length > 0) {
 | 
	
		
			
				|  |  | -            updateData = controller.tree.getDeleteDatas(deleteMap,deleteNodes);
 | 
	
		
			
				|  |  | +            let updateData = controller.tree.getDeleteDatas(deleteMap,deleteNodes);
 | 
	
		
			
				|  |  |              CommonAjax.post(updateUrl, updateData, function (data) {
 | 
	
		
			
				|  |  |                  controller.m_delete(deleteNodes);
 | 
	
		
			
				|  |  |                  controller.showTreeData();
 | 
	
		
			
				|  |  |                  $(me).removeClass('disabled');
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        function setNodeToMapAndArray(node,map,array) {
 | 
	
		
			
				|  |  | -            let nodeID = node.getID();
 | 
	
		
			
				|  |  | -            if(map[nodeID]==undefined||map[nodeID]==null){
 | 
	
		
			
				|  |  | -                newMap(node,node.parent,map,array)
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            function newMap(node,parent,map,array) {
 | 
	
		
			
				|  |  | -                let nodeID =node.getID();
 | 
	
		
			
				|  |  | -                if(parent==null){//说明已经是最顶层了
 | 
	
		
			
				|  |  | -                    map[nodeID]=node;
 | 
	
		
			
				|  |  | -                    array.push(node);
 | 
	
		
			
				|  |  | -                }else {
 | 
	
		
			
				|  |  | -                    let parentID = parent.getID();
 | 
	
		
			
				|  |  | -                    if(map[parentID]==undefined||map[parentID]==null){
 | 
	
		
			
				|  |  | -                        newMap(node,parent.parent,map,array);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      $('#upLevel').click(function () {
 | 
	
		
			
				|  |  |          let me = this;
 | 
	
	
		
			
				|  | @@ -488,11 +458,21 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |      $('#downLevel').click(function () {
 | 
	
		
			
				|  |  |          let me = this;
 | 
	
		
			
				|  |  |          $(me).addClass('disabled');
 | 
	
		
			
				|  |  | -        var selected = controller.tree.selected, updateData;
 | 
	
		
			
				|  |  | -        if (selected) {
 | 
	
		
			
				|  |  | -            updateData = selected.getDownLevelData();
 | 
	
		
			
				|  |  | -            CommonAjax.post(updateUrl, updateData, function (data) {
 | 
	
		
			
				|  |  | -                controller.downLevel();
 | 
	
		
			
				|  |  | +        let [dMap,dNodes] = getNodesAndMapFromSheet(controller);
 | 
	
		
			
				|  |  | +        let newNodes = [dNodes[0]];
 | 
	
		
			
				|  |  | +        if(dNodes.length > 1){//如果是多选,则去掉与第一个节点不同级的节点
 | 
	
		
			
				|  |  | +            for(let i = 1;i<dNodes.length;i++){
 | 
	
		
			
				|  |  | +                if(dNodes[i].parent == dNodes[0].parent) newNodes.push(dNodes[i])
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        let updateDatas = controller.tree.getDownLevelDatas(newNodes);
 | 
	
		
			
				|  |  | +        if(updateDatas.length > 0){
 | 
	
		
			
				|  |  | +            CommonAjax.post(updateUrl, updateDatas, function (data) {
 | 
	
		
			
				|  |  | +                controller.m_downLevel(newNodes);
 | 
	
		
			
				|  |  | +                for(let u of updateDatas){
 | 
	
		
			
				|  |  | +                    let node = controller.tree.findNode(u.data.ID);
 | 
	
		
			
				|  |  | +                    refreshNodeData(node,u.data);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  controller.showTreeData();
 | 
	
		
			
				|  |  |                  $(me).removeClass('disabled');
 | 
	
		
			
				|  |  |              });
 | 
	
	
		
			
				|  | @@ -524,4 +504,41 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | +    function getNodesAndMapFromSheet(controller) {//表格中选中的节点整理,只留下父节点
 | 
	
		
			
				|  |  | +        let selection = controller.sheet.getSelections()[0],map={},nodes=[];
 | 
	
		
			
				|  |  | +        for(let i=0;i < selection.rowCount;i++){
 | 
	
		
			
				|  |  | +            let tem_node = controller.tree.items[selection.row+i];
 | 
	
		
			
				|  |  | +            if(i == 0){//第一个直接添加;
 | 
	
		
			
				|  |  | +                map[tem_node.getID()] = tem_node;
 | 
	
		
			
				|  |  | +                nodes.push(tem_node);
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                setNodeToMapAndArray(tem_node,map,nodes);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return [map,nodes];
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    function setNodeToMapAndArray(node,map,array) {
 | 
	
		
			
				|  |  | +        let nodeID = node.getID();
 | 
	
		
			
				|  |  | +        if(map[nodeID]==undefined||map[nodeID]==null){
 | 
	
		
			
				|  |  | +            newMap(node,node.parent,map,array)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        function newMap(node,parent,map,array) {
 | 
	
		
			
				|  |  | +            let nodeID =node.getID();
 | 
	
		
			
				|  |  | +            if(parent==null){//说明已经是最顶层了
 | 
	
		
			
				|  |  | +                map[nodeID]=node;
 | 
	
		
			
				|  |  | +                array.push(node);
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                let parentID = parent.getID();
 | 
	
		
			
				|  |  | +                if(map[parentID]==undefined||map[parentID]==null){
 | 
	
		
			
				|  |  | +                    newMap(node,parent.parent,map,array);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    function refreshNodeData(node,data) {
 | 
	
		
			
				|  |  | +        for(let key in data){
 | 
	
		
			
				|  |  | +            if(key == 'ID') continue;
 | 
	
		
			
				|  |  | +            node.data[key] = data[key];
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  });
 |