|  | @@ -66,12 +66,32 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |      pos.loadDatas(posData);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const billsTreeSpreadObj = {
 | 
	
		
			
				|  |  | +        getDefaultSelectInfo: function (sheet) {
 | 
	
		
			
				|  |  | +            const tree = sheet.zh_tree;
 | 
	
		
			
				|  |  | +            if (!tree) return;
 | 
	
		
			
				|  |  | +            const sel = sheet.getSelections()[0];
 | 
	
		
			
				|  |  | +            const node = sheet.zh_tree.nodes[sel.row];
 | 
	
		
			
				|  |  | +            if (!node) return;
 | 
	
		
			
				|  |  | +            let count = 1;
 | 
	
		
			
				|  |  | +            if (sel.rowCount > 1) {
 | 
	
		
			
				|  |  | +                for (let r = 1; r < sel.rowCount; r++) {
 | 
	
		
			
				|  |  | +                    const rNode = sheet.zh_tree.nodes[sel.row + r];
 | 
	
		
			
				|  |  | +                    if (rNode.level > node.level) continue;
 | 
	
		
			
				|  |  | +                    if ((rNode.level < node.level) || (rNode.level === node.level && rNode.pid !== node.pid)) {
 | 
	
		
			
				|  |  | +                        toast('请选择同一清单下的节点,进行该操作');
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    count += 1;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return [tree, node, count];
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  |          /**
 | 
	
		
			
				|  |  |           * 刷新顶部按钮是否可用
 | 
	
		
			
				|  |  |           * @param sheet
 | 
	
		
			
				|  |  |           * @param selections
 | 
	
		
			
				|  |  |           */
 | 
	
		
			
				|  |  | -        refreshOperationValid: function (sheet) {
 | 
	
		
			
				|  |  | +        refreshOperationValid: function (sheet, selection) {
 | 
	
		
			
				|  |  |              const setObjEnable = function (obj, enable) {
 | 
	
		
			
				|  |  |                  if (enable) {
 | 
	
		
			
				|  |  |                      obj.removeClass('disabled');
 | 
	
	
		
			
				|  | @@ -79,23 +99,38 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                      obj.addClass('disabled');
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  | +            const sel = selection ? selection[0] : sheet.getSelections()[0];
 | 
	
		
			
				|  |  | +            const row = sel ? sel.row : -1;
 | 
	
		
			
				|  |  |              const tree = sheet.zh_tree;
 | 
	
		
			
				|  |  | -            const node = SpreadJsObj.getSelectObject(sheet);
 | 
	
		
			
				|  |  | -            const preNode = tree.getPreSiblingNode(node);
 | 
	
		
			
				|  |  | +            if (!tree) return;
 | 
	
		
			
				|  |  | +            const first = sheet.zh_tree.nodes[row];
 | 
	
		
			
				|  |  | +            let last = first, sameParent = true;
 | 
	
		
			
				|  |  | +            if (sel.rowCount > 1) {
 | 
	
		
			
				|  |  | +                for (let r = 1; r < sel.rowCount; r++) {
 | 
	
		
			
				|  |  | +                    const rNode = tree.nodes[sel.row + r];
 | 
	
		
			
				|  |  | +                    if (rNode.level > first.level) continue;
 | 
	
		
			
				|  |  | +                    if ((rNode.level < first.level) || (rNode.level === first.level && rNode.pid !== first.pid)) {
 | 
	
		
			
				|  |  | +                        sameParent = false;
 | 
	
		
			
				|  |  | +                        break;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    last = rNode;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            const preNode = tree.getPreSiblingNode(first);
 | 
	
		
			
				|  |  |              const valid = !sheet.zh_setting.readOnly;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            setObjEnable($('a[type="add"]'), valid);
 | 
	
		
			
				|  |  | -            setObjEnable($('a[type="delete"]'), valid && node);
 | 
	
		
			
				|  |  | -            setObjEnable($('a[type="up-move"]'), valid && node && preNode);
 | 
	
		
			
				|  |  | -            setObjEnable($('a[type="down-move"]'), valid && node && !tree.isLastSibling(node));
 | 
	
		
			
				|  |  | -            if (isTz) {
 | 
	
		
			
				|  |  | -                const posRange = node ? pos.getLedgerPos(node.id) : [];
 | 
	
		
			
				|  |  | -                setObjEnable($('a[type="up-level"]'), valid && node && tree.getParent(node) && node.level > 2 && (!posRange || posRange.length === 0));
 | 
	
		
			
				|  |  | +            setObjEnable($('#insert'), valid && first && first.level > 1);
 | 
	
		
			
				|  |  | +            setObjEnable($('#delete'), valid && first && sameParent && first.level > 1);
 | 
	
		
			
				|  |  | +            setObjEnable($('#up-move'), valid && first && sameParent && first.level > 1 && preNode);
 | 
	
		
			
				|  |  | +            setObjEnable($('#down-move'), valid && first && sameParent && first.level > 1 && !tree.isLastSibling(last));
 | 
	
		
			
				|  |  | +            if (checkTzMeasureType()) {
 | 
	
		
			
				|  |  | +                const posRange = last ? pos.getLedgerPos(last.id) : [];
 | 
	
		
			
				|  |  | +                setObjEnable($('#up-level'), valid && first && sameParent && tree.getParent(first) && first.level > 2 && (!posRange || posRange.length === 0));
 | 
	
		
			
				|  |  |                  const preNodePosRange = preNode ? pos.getLedgerPos(preNode.id) : [];
 | 
	
		
			
				|  |  | -                setObjEnable($('a[type="down-level"]'), valid && node && preNode && (!preNodePosRange || preNodePosRange.length === 0));
 | 
	
		
			
				|  |  | +                setObjEnable($('#down-level'), valid && first && sameParent && first.level > 1 && preNode && (!preNodePosRange || preNodePosRange.length === 0));
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  | -                setObjEnable($('#up-level'), valid && node && tree.getParent(node));
 | 
	
		
			
				|  |  | -                setObjEnable($('#down-level'), valid && node && preNode);
 | 
	
		
			
				|  |  | +                setObjEnable($('#up-level'), valid && first && sameParent && first.level > 2 && tree.getParent(first));
 | 
	
		
			
				|  |  | +                setObjEnable($('#down-level'), valid && first && sameParent && first.level > 1 && preNode);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              setObjEnable($('#cut'), valid);
 | 
	
		
			
				|  |  |              setObjEnable($('#paste'), valid);
 |