Browse Source

修复ETA指标库、预测指标库、图库目录滚动条的问题

cxmo 1 year ago
parent
commit
59c6930be0

+ 23 - 10
src/views/dataEntry_manage/chartSetting.vue

@@ -896,7 +896,14 @@ export default {
           let node = document.getElementById(`node${this.select_node}`);
           let parent = document.getElementsByClassName('tree-cont')[0];
 
-          if(node.offsetTop > parent.offsetHeight) {
+          //parent可视区间:[scrollTop,scrollTop+offsetHeight]
+          //node位置:node.offsetTop
+          const overTop = node.offsetTop+node.clientHeight+15<parent.scrollTop
+          const overBottom = node.offsetTop+node.clientHeight+15>parent.scrollTop+parent.offsetHeight
+          if(overTop){
+              parent.scrollTop = node.offsetTop-30
+          }
+          if(overBottom){
             parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
           }
         },400)
@@ -2028,15 +2035,21 @@ export default {
       this.selected_chartid = id;
 
       //滚动到高亮节点位置
-			setTimeout(() => {
-        this.$refs.treeRef.setCurrentKey(this.select_node);
-        let node = document.getElementById(`node${this.select_node}`);
-        let parent = document.getElementsByClassName('tree-cont')[0];
-
-        if(node.offsetTop > parent.offsetHeight) {
-          parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
-        }
-      },400)
+        setTimeout(() => {
+            this.$refs.treeRef.setCurrentKey(this.select_node);
+            let node = document.getElementById(`node${this.select_node}`);
+            let parent = document.getElementsByClassName('tree-cont')[0];
+            //parent可视区间:[scrollTop,scrollTop+offsetHeight]
+            //node位置:node.offsetTop
+            const overTop = node.offsetTop+node.clientHeight+15<parent.scrollTop
+            const overBottom = node.offsetTop+node.clientHeight+15>parent.scrollTop+parent.offsetHeight
+            if(overTop){
+                parent.scrollTop = node.offsetTop-30
+            }
+            if(overBottom){
+                parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
+            }
+        },400)
     },
     
     /* 根据图表id 查找对象 */

+ 10 - 3
src/views/dataEntry_manage/databaseList.vue

@@ -809,7 +809,14 @@ export default {
 						setTimeout(() => {
 							let node = document.getElementById(`node${this.select_node}`)||{}
 							let parent = document.getElementsByClassName('tree-cont')[0];
-							if(node.offsetTop > parent.offsetHeight) {
+							//parent可视区间:[scrollTop,scrollTop+offsetHeight]
+							//node位置:node.offsetTop
+							const overTop = node.offsetTop+node.clientHeight+30<parent.scrollTop
+							const overBottom = node.offsetTop+node.clientHeight+30>parent.scrollTop+parent.offsetHeight
+							if(overTop){
+								parent.scrollTop = node.offsetTop-60
+							}
+							if(overBottom){
 								parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
 							}
 						},400)
@@ -1429,7 +1436,7 @@ export default {
 			//this.defaultShowNodes=this.findParentNodeForClassifyId(classifyId,code)
 			
 			 //滚动到高亮节点位置
-			this.$nextTick(()=>{
+			/* this.$nextTick(()=>{
 				setTimeout(() => {
 					let node = document.getElementById(`node${this.select_node}`)||{}
 					let parent = document.getElementsByClassName('tree-cont')[0];
@@ -1438,7 +1445,7 @@ export default {
 						parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
 					}
 				},400)
-			})
+			}) */
 		},
 		// 查找树节点所有父节点
 		findParentNodeHandle(arr, id) {

+ 11 - 1
src/views/predictEdb_manage/predictEdb.vue

@@ -678,12 +678,22 @@ export default {
 					this.searchLoading = false;
 					return;
 				}
-				if (dom.offsetTop > parentDom.offsetHeight) {
+				/* if (dom.offsetTop > parentDom.offsetHeight) {
 					parentDom.scrollTo({
 						top: dom.offsetTop - parentDom.offsetHeight / 2,
 						left: 0,
 						behavior: "smooth",
 					});
+				} */
+				//parent可视区间:[scrollTop,scrollTop+offsetHeight]
+				//node位置:node.offsetTop
+				const overTop = dom.offsetTop+dom.clientHeight<parentDom.scrollTop
+				const overBottom = dom.offsetTop+dom.clientHeight+30>parentDom.scrollTop+parentDom.offsetHeight
+				if(overTop){
+					parentDom.scrollTop = dom.offsetTop-30
+				}
+				if(overBottom){
+					parentDom.scrollTop =  dom.offsetTop - parentDom.offsetHeight/2
 				}
 				this.searchLoading = false;
 			}, 300);