jwyu 1 жил өмнө
parent
commit
d253ba3495

+ 4 - 0
src/api/modules/predictEdbApi.js

@@ -18,6 +18,10 @@ export const classifyListV2 = params => {
 export const predictEdbCatalog=params=>{
 	return http.get('/datamanage/predict_classify/simple',params)
 }
+//目录指标移动
+export const classifyMoveSort=params=>{
+	return http.post('/datamanage/predict_classify/move',params)
+}
 
 
 /**

+ 2 - 2
src/views/dataEntry_manage/databaseList.vue

@@ -67,7 +67,7 @@
 						:allow-drop="canDropHandle"
 						:current-node-key="select_node"
 						:default-expanded-keys="defaultShowNodes"
-						:draggable="!isEdbBtnShow('moveCatalog')"
+						:draggable="isEdbBtnShow('moveCatalog')"
 						:expand-on-click-node="false"
 						check-strictly
 						empty-text="暂无目录"
@@ -111,7 +111,7 @@
 									src="~@/assets/img/data_m/move_ico.png"
 									alt=""
 									style="width: 14px; height: 14px; margin-right: 8px"
-									v-if="data.Button.MoveButton"
+									v-if="data.Button.MoveButton&&isEdbBtnShow('moveCatalog')"
 								/>
 								<!-- 添加子项 -->
 								<img

+ 18 - 7
src/views/predictEdb_manage/addPredicEdb.vue

@@ -591,6 +591,7 @@ export default {
           if (res.Ret !== 200) return;
           const {
             ClassifyId,
+            ClassifyList,
             EdbName,
             Frequency,
             LatestValue,
@@ -599,9 +600,10 @@ export default {
             LatestDate,
             DataDateType
           } = res.Data;
+          const classifyArr = ClassifyList.length&&ClassifyList.map(item=>item.ClassifyId).reverse()
           this.formData = {
             edb_id: EdbInfoId,
-            classify: ClassifyId,
+            classify: classifyArr||[],
             oldEdb: res.Data.CalculateList[0].FromEdbInfoId,
             oldEdbName: res.Data.CalculateList[0].FromEdbName,
             edbName: EdbName,
@@ -653,17 +655,26 @@ export default {
           };
         });
     },
-
+    // 递归改变目录结构
+		filterNodes(arr) {
+			arr.length &&
+				arr.forEach((item) => {
+					item.Children.length && this.filterNodes(item.Children);
+					if (!item.Children.length) {
+						delete item.Children;
+					}
+				});
+		},
     getClassifyOne() {
       preDictEdbInterface.classifyListV2().then((res) => {
         if (res.Ret !== 200) return;
-
+        this.filterNodes(res.Data.AllNodes || [])
         this.classifyArr = res.Data.AllNodes || [];
 
-        if (this.$route.path == "/editpredictEdb") {
-          //将formData.classify转为数组的格式
-          this.formData.classify = this.findParentNodeHandle(this.classifyArr,this.formData.classify).reverse()
-        } 
+        // if (this.$route.path == "/editpredictEdb") {
+        //   //将formData.classify转为数组的格式
+        //   this.formData.classify = this.findParentNodeHandle(this.classifyArr,this.formData.classify).reverse()
+        // } 
 
       });
     },

+ 1 - 1
src/views/predictEdb_manage/components/edbDetail.vue

@@ -139,7 +139,7 @@ export default {
                 })
                 this.$emit('setOpera',res.Data.Button)
 
-                this.$emit('setCurrentClassify',res.Data.EdbInfo.ClassifyList||[])
+                this.$emit('setCurrentClassify',res.Data.ClassifyList||[])
                 //更新图片
                 if(type==='updateImg' || !res.Data.EdbInfo.ChartImage) {
                     console.log(type);

+ 74 - 124
src/views/predictEdb_manage/mixins/mixin.js

@@ -110,106 +110,68 @@ export default {
     dropOverHandle(b, a, i, e) {
       // console.log(i, a);
       // 被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置
-      // 一/二/三级目录
-      if ([1,2,3].includes(b.level)) this.handleMoveCatalogue(b, a, i, e);
-
-      // 指标层
-      if (b.level === 4) this.handleMoveSheet(b, a, i, e);
-    },
-
-    // 移动的为一/二/三级目录
-    handleMoveCatalogue(b, a, i, e) {
-      let list = a.parent.childNodes,
-        targetIndex = 0,
-        PrevClassifyId = 0,
-        NextClassifyId = 0,
-        ParentClassifyId = 0;
-
-      list.forEach((item, index) => {
-        if (item.data.ClassifyId === b.data.ClassifyId) {
-          targetIndex = index;
-          return;
-        }
-      });
-
-      if (targetIndex === 0) {
-        PrevClassifyId = 0;
-        NextClassifyId = list.length>1?list[targetIndex + 1].data.ClassifyId:0;
-      } else if (targetIndex === list.length - 1) {
-        PrevClassifyId = list[targetIndex - 1].data.ClassifyId;
-        NextClassifyId = 0;
-      } else {
-        PrevClassifyId = list[targetIndex - 1].data.ClassifyId;
-        NextClassifyId = list[targetIndex + 1].data.ClassifyId;
-      }
-      
-      if(b.level===2||b.level===3){
-        if(i==='inner'){
-            ParentClassifyId=a.data.ClassifyId
-            PrevClassifyId=0
-            NextClassifyId=a.data.Children.length>1?a.data.Children[1].ClassifyId:0
-        }else{
-            ParentClassifyId=a.data.ParentId
-        }
-      }
-
-      preDictEdbInterface
-        .classifyMove({
-          ClassifyId: b.data.ClassifyId,
-          ParentClassifyId: ParentClassifyId,
-          PrevClassifyId: PrevClassifyId,
-          NextClassifyId: NextClassifyId,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.$message.success("移动成功!");
-          this.getTreeData();
-        });
-    },
-
-    // 移动的为指标
-    handleMoveSheet(b, a, i, e) {
-      let PrevEdbInfoId = 0,
-        NextEdbInfoId = 0,
-        targetIndex = 0,
-        list = a.parent.data.Children;
-      if (i === "inner") {
-        PrevEdbInfoId = 0;
-        NextEdbInfoId =
-          a.data.Children.length > 1 ? a.data.Children[1].EdbInfoId : 0;
-      } else {
-        list.forEach((item, index) => {
-          if (item.EdbInfoId === b.data.EdbInfoId) {
-            targetIndex = index;
-            return;
-          }
-        });
-
-        if (targetIndex === 0) {
-          PrevEdbInfoId = 0;
-          NextEdbInfoId = list[targetIndex + 1].EdbInfoId;
-        } else if (targetIndex === list.length - 1) {
-          PrevEdbInfoId = list[targetIndex - 1].EdbInfoId;
-          NextEdbInfoId = 0;
-        } else {
-          PrevEdbInfoId = list[targetIndex - 1].EdbInfoId;
-          NextEdbInfoId = list[targetIndex + 1].EdbInfoId;
-        }
-      }
-
-      preDictEdbInterface
-        .ebdMove({
-          ClassifyId: a.data.ClassifyId,
-          EdbInfoId: b.data.EdbInfoId,
-          PrevEdbInfoId,
-          NextEdbInfoId,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.$message.success("移动成功!");
-          this.getTreeData();
-        });
-
+      const isEDB=b.data.EdbCode?true:false
+			let list=a.parent.childNodes;
+			let targetIndex=0,PrevClassifyId=0,NextClassifyId=0,ParentClassifyId=0;
+			let ClassifyId=0,EdbInfoId=0,PrevEdbInfoId=0,NextEdbInfoId=0;
+
+			ClassifyId=isEDB?0:b.data.ClassifyId
+			EdbInfoId=isEDB?b.data.EdbInfoId:0
+			ParentClassifyId=a.parent.data.ClassifyId||0
+
+			if(i!=='inner'){
+				list.forEach((item,index)=>{
+					if(isEDB){
+						if(item.data.EdbInfoId===b.data.EdbInfoId){
+							targetIndex=index
+						}
+					}else{
+						if(item.data.ClassifyId===b.data.ClassifyId){
+							targetIndex=index
+						}
+					}
+					
+				})
+
+				console.log(targetIndex);
+				
+				
+				if(targetIndex===0){
+					const data=list[targetIndex+1].data
+					NextClassifyId=data.EdbCode?0:data.ClassifyId
+					NextEdbInfoId=data.EdbCode?data.EdbInfoId:0
+				}else if(targetIndex===list.length-1){
+					const data=list[targetIndex-1].data
+					PrevClassifyId=data.EdbCode?0:data.ClassifyId
+					PrevEdbInfoId=data.EdbCode?data.EdbInfoId:0
+				}else{
+					const pData=list[targetIndex-1].data
+					PrevClassifyId=pData.EdbCode?0:pData.ClassifyId
+
+					PrevEdbInfoId=pData.EdbCode?pData.EdbInfoId:0
+
+					const nData=list[targetIndex+1].data
+					NextClassifyId=nData.EdbCode?0:nData.ClassifyId
+					NextEdbInfoId=nData.EdbCode?nData.EdbInfoId:0
+				}
+			}
+
+			const params={
+				ClassifyId,
+				ParentClassifyId,
+				EdbInfoId,
+				PrevClassifyId,
+				NextClassifyId,
+				PrevEdbInfoId,
+				NextEdbInfoId
+			}
+			console.log(params);
+			preDictEdbInterface.classifyMoveSort(params).then(res=>{
+				if(res.Ret===200){
+					this.$message.success('移动成功!')
+				}
+				this.getTreeData()
+			})
     },
 
     /* 拖拽覆盖添加背景色 */
@@ -263,30 +225,18 @@ export default {
     /* 判断节点是否能被拖入 */
     canDropHandle(draggingNode, dropNode, type) {
       let canDrop = false;
-      // 移动的是一级目录
-      if (draggingNode.level === 1 && dropNode.level === 1 &&type!=='inner') {
-        canDrop = true;
-      }
-
-      // 二级目录
-        if(draggingNode.level===2){
-            if((dropNode.level===1&&type==='inner')||(dropNode.level===2&&type!=='inner')){
-                canDrop=true
-            }
-        }
-
-        //三级目录
-        if(draggingNode.level===3){
-            if((dropNode.level===2&&type==='inner')||(dropNode.level===3&&type!=='inner')){
-                canDrop=true
-            }
-        }
-        //四级指标层
-        if(draggingNode.level===4){
-            if((dropNode.level===3&&type==='inner')||(dropNode.level===4&&type!=='inner')){
-                canDrop=true
-            }
-        }
+      // 如果拖动的是指标
+			if(draggingNode.data.EdbCode){
+				if(!(dropNode.level===1&&type!=='inner')){
+					canDrop=true
+				}
+			}else{//拖动的是目录
+				// console.log(dropNode.level,draggingNode.level);
+				//目录只能拖动到层级比他大的里面去
+				if(dropNode.level<draggingNode.level||(dropNode.level===draggingNode.level&&type!=='inner')){
+					canDrop=true
+				}
+			}
 
       return canDrop;
     },

+ 8 - 8
src/views/predictEdb_manage/predictEdb.vue

@@ -707,13 +707,14 @@ export default {
 		setCurrentClassify(ClassifyList){
 			//获取指标详情后才能拿到准确的classifyId
 			//根据准备的id查找指标的父级目录并展开
+			console.log(ClassifyList);
 			
 			// 展开目录
 			this.defaultShowNodes=ClassifyList.reverse().map(item=>item.UniqueCode)
 			
 
 			//滚动到高亮节点位置
-			this.$nextTick(()=>{
+			// this.$nextTick(()=>{
 				setTimeout(() => {
 					const dom = document.querySelector(".el-tree-node.is-current");
 					const parentDom = document.querySelector(".target_tree");
@@ -739,11 +740,11 @@ export default {
 						parentDom.scrollTop =  dom.offsetTop - parentDom.offsetHeight/2
 					}
 					this.searchLoading = false;
-				}, 300);
+				}, 1000);
 				setTimeout(() => {
 					this.$refs.treeRef.setCurrentKey(this.select_node);//设置高亮
 				}, 1500);
-			})
+			// })
 		},
 		setNameBack({edb_name,edb_nameEn,userid}) {
 			this.edbName=edb_name;
@@ -1107,10 +1108,9 @@ export default {
 		},
 
 		/* 计算指标回显 */
-		setComputedDialogForm({Source,CalculateList,CalculateFormula,EdbInfoId,EdbName,Unit,Frequency,ClassifyId,MoveType,MoveFrequency,Calendar},type='') {
+		setComputedDialogForm({Source,CalculateList,CalculateFormula,EdbInfoId,EdbName,Unit,Frequency,ClassifyId,ClassifyList,MoveType,MoveFrequency,Calendar},type='') {
 			//找到指标的父级
-			let deep_arr = _.cloneDeep(this.treeData);
-			const parentNodes = this.findParentNodeHandle(deep_arr,ClassifyId,'ClassifyId')
+			const parentNodes = ClassifyList.length&&ClassifyList.map(item=>item.ClassifyId).reverse()
 			//指标运算 or 其他计算类型指标
 			if( Source === 31 ) {
 				/* 回显指标和表单 */
@@ -1127,7 +1127,7 @@ export default {
 				this.calulateForm =  {
 					edb_id:EdbInfoId,
 					formula: CalculateFormula,
-					menu: parentNodes.reverse(),
+					menu: parentNodes,
 					targetName: EdbName,
 					unit: Unit,
 					frequency: Frequency,
@@ -1140,7 +1140,7 @@ export default {
 						targetName: EdbName,
 						frequency: Frequency,
 						unit: Unit,
-						menu: parentNodes.reverse(),
+						menu: parentNodes,
 						view: type === 'view',
 						source: Source,
 						date: CalculateFormula,