浏览代码

上线ETA1.1.0,合并冲突解决

jwyu 1 年之前
父节点
当前提交
31b07860bc
共有 24 个文件被更改,包括 524 次插入605 次删除
  1. 15 1
      src/api/modules/chartApi.js
  2. 11 1
      src/api/modules/predictEdbApi.js
  3. 2 0
      src/utils/buttonConfig.js
  4. 4 3
      src/views/chartRelevance_manage/components/saveEdbToBaseDia.vue
  5. 4 3
      src/views/dataEntry_manage/adjustdata/adjustData.vue
  6. 5 4
      src/views/dataEntry_manage/codecount/index.vue
  7. 6 1
      src/views/dataEntry_manage/databaseComponents/batchComptedDialog.vue
  8. 3 2
      src/views/dataEntry_manage/databaseComponents/completeTargetDia.vue
  9. 3 2
      src/views/dataEntry_manage/databaseComponents/computedDialog.vue
  10. 3 7
      src/views/dataEntry_manage/databaseComponents/diffusionIndexDia.vue
  11. 5 7
      src/views/dataEntry_manage/databaseComponents/fittingResidueDia.vue
  12. 6 5
      src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue
  13. 49 72
      src/views/dataEntry_manage/databaseComponents/openDialog.vue
  14. 3 2
      src/views/dataEntry_manage/databaseComponents/operationDialog.vue
  15. 18 1
      src/views/dataEntry_manage/databaseComponents/smoothEdbDialog.vue
  16. 153 246
      src/views/dataEntry_manage/databaseList.vue
  17. 19 7
      src/views/predictEdb_manage/addPredicEdb.vue
  18. 22 12
      src/views/predictEdb_manage/components/classifyDia.vue
  19. 13 0
      src/views/predictEdb_manage/components/computedDialog.vue
  20. 1 1
      src/views/predictEdb_manage/components/edbDetail.vue
  21. 17 4
      src/views/predictEdb_manage/components/operationDialog.vue
  22. 91 133
      src/views/predictEdb_manage/mixins/mixin.js
  23. 68 89
      src/views/predictEdb_manage/predictEdb.vue
  24. 3 2
      src/views/supply_manage/components/createTargetDia.vue

+ 15 - 1
src/api/modules/chartApi.js

@@ -2,6 +2,19 @@ import http from "@/api/http.js"
 
 /* 数据库管理模块  */
 const dataBaseInterface = {
+	/**
+	 * 指标库目录
+	 */
+	targetCatalog:params=>{
+		return http.get('/datamanage/classify/simple',params)
+	},
+	/**
+	 * 指标和目录拖动排序
+	 */
+	classifyMoveSort:params=>{
+		return http.post('/datamanage/edb_classify/move',params)
+	},
+
 	/**
 	 * 新增分类
 	 * @param {ClassifyName} params 
@@ -58,7 +71,8 @@ const dataBaseInterface = {
 		return http.get('/datamanage/classify/items/v2',params)
 	},
 	menuListV3: params => {
-		return http.get('/datamanage/classify/items/v3',params)
+		// return http.get('/datamanage/classify/items/v3',params)
+		return http.get('/datamanage/classify/tree',params)
 	},
 	/**
 	 * 通过分类查找指标列表数据

+ 11 - 1
src/api/modules/predictEdbApi.js

@@ -12,8 +12,18 @@ export const classifyList = params => {
  * @returns 
  */
 export const classifyListV2 = params => {
-    return http.get('/datamanage/predict_classify/list/v2',params)
+    return http.get('/datamanage/predict_classify/tree',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)
+}
+
+
 /**
  * 分类的图表列表 IsOnlyMe ClassifyId
  * @param {*} params 

+ 2 - 0
src/utils/buttonConfig.js

@@ -245,6 +245,7 @@ export const edbDataPermission = {
     edbData_switchEn:'edbData:switchEn',//切换英文版
     edbData_classifyOpt_add:'edbData:classifyOpt:add',//添加/编辑分类
     edbData_classifyOpt_delete:'edbData:classifyOpt:delete',//删除分类
+    edbData_classifyOpt_move:'edbData:classifyOpt:move',//移动分类
     edbData_checkRelatedChart:'edbData:checkRelatedChart',//查看关联图表
     edbData_checkRelatedEdb:'edbData:checkRelatedEdb',//查看关联指标
     edbData_checkCalcChart:'edbData:checkCalcChart',//查看计算指标
@@ -272,6 +273,7 @@ export const predictEdbPermission = {
     edbPreData_isOnlyMine:'edbPreData:isOnlyMine',//只看我的
     edbPreData_classifyOpt_add:'edbPreData:classifyOpt:add',//添加/编辑分类
     edbPreData_classifyOpt_delete:'edbPreData:classifyOpt:delete',//删除分类
+    edbPreData_classifyOpt_move:'edbPreData:classifyOpt:move',//移动分类
     edbPreData_checkRelatedChart:'edbPreData:checkRelatedChart',//查看关联图表
     edbPreData_checkRelatedEdb:'edbPreData:checkRelatedEdb',//查看关联指标
     edbPreData_checkPreRule:'edbPreData:checkPreRule',//查看预测规则

+ 4 - 3
src/views/chartRelevance_manage/components/saveEdbToBaseDia.vue

@@ -125,7 +125,8 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
-				emitPath: false
+				emitPath: false,
+				checkStrictly: true
 			},
 			frequencyArr:['日度','周度','旬度','月度','季度','年度'],
 		};
@@ -144,13 +145,13 @@ export default {
 				if(res.Ret !== 200) return
 				//this.filterNodes(res.Data.AllNodes,2);
 			}
-
+			this.filterNodes(res.Data.AllNodes||[]);
 			this.options = res.Data.AllNodes || [];
 		},
 		filterNodes(arr,n) {
 			arr.length && arr.forEach(item => {
 				item.Children && item.Children.length && this.filterNodes(item.Children,n)
-				if(item.Level === n) {
+				if(!item.Children.length) {
 					delete item.Children
 				}
 			})

+ 4 - 3
src/views/dataEntry_manage/adjustdata/adjustData.vue

@@ -68,7 +68,8 @@
                 label: 'ClassifyName',
                 value: 'ClassifyId',
                 children: 'Children',
-                emitPath: false
+                emitPath: false,
+                checkStrictly: true
               }"
               clearable
               placeholder="请选择指标目录"
@@ -351,7 +352,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then((res) => {
 				if (res.Ret === 200) {
-					//this.filterNodes(res.Data.AllNodes)
+					this.filterNodes(res.Data.AllNodes||[])
 					this.classifyOptions = res.Data.AllNodes || [];
 				}
 			});
@@ -361,7 +362,7 @@ export default {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});

+ 5 - 4
src/views/dataEntry_manage/codecount/index.vue

@@ -67,6 +67,7 @@
 									label: 'ClassifyName',
 									value: 'ClassifyId',
 									children: 'Children',
+									checkStrictly: true
 								}"
 								@change="menuChange"
 								clearable
@@ -341,7 +342,7 @@ export default {
 				EdbName: edb_name,
 				Frequency: frequency,
 				Unit: unit,
-				ClassifyId: menu
+				ClassifyId: menu&&menu[menu.length-1]
 			}
 			
 			const { Ret,Data } = this.$route.query.edbid ? await dataBaseInterface.editCountCode({ ...params,EdbInfoId: Number(this.$route.query.edbid) }) : await dataBaseInterface.addCountCode(params);
@@ -362,7 +363,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then((res) => {
 				if (res.Ret !== 200) return
-					//this.filterNodes(res.Data.AllNodes);
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.menuOptions = res.Data.AllNodes || [];
 			});
 		},
@@ -371,7 +372,7 @@ export default {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});
@@ -379,7 +380,7 @@ export default {
 
 		/* 选择目录 */
 		menuChange(val) {
-			this.formData.menu = val.length ? val[val.length - 1] : '';
+			// this.formData.menu = val.length ? val[val.length - 1] : '';
 		},
 
 		/* 搜索 */

+ 6 - 1
src/views/dataEntry_manage/databaseComponents/batchComptedDialog.vue

@@ -249,6 +249,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr: ['日度', '周度','旬度', '月度', '季度', '年度'],
 			fre_options: ['天','周','月','季','年'],
@@ -374,14 +375,18 @@ export default {
 				: await dataBaseInterface.menuListV3()
 				if (res.Ret !== 200) return
 				//this.edbSource !== 'predict' && this.filterNodes(res.Data.AllNodes);
+				// this.options = res.Data.AllNodes || [];
+				
+				this.filterNodes(res.Data.AllNodes||[]);
 				this.options = res.Data.AllNodes || [];
+				
 		},
 		// 递归改变第三级目录结构
 		filterNodes(arr) {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});

+ 3 - 2
src/views/dataEntry_manage/databaseComponents/completeTargetDia.vue

@@ -117,6 +117,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr:['日度','周度','旬度','月度','季度','年度']
 		};
@@ -126,7 +127,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then(res => {
 				if(res.Ret === 200) {
-					//this.filterNodes(res.Data.AllNodes);
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];
 				}
 			})
@@ -135,7 +136,7 @@ export default {
 		filterNodes(arr) {
 			arr.length && arr.forEach(item => {
 				item.Children.length && this.filterNodes(item.Children)
-				if(item.Level === 2) {
+				if(!item.Children.length) {
 					delete item.Children
 				}
 			})

+ 3 - 2
src/views/dataEntry_manage/databaseComponents/computedDialog.vue

@@ -209,6 +209,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr: ['日度', '周度','旬度','月度', '季度', '年度'],
 			formRules,
@@ -260,7 +261,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then((res) => {
 				if (res.Ret === 200) {
-					//this.filterNodes(res.Data.AllNodes);
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];
 				}
 			});
@@ -270,7 +271,7 @@ export default {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});

+ 3 - 7
src/views/dataEntry_manage/databaseComponents/diffusionIndexDia.vue

@@ -225,6 +225,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr: ['日度', '周度','旬度', '月度', '季度', '年度'],
 			fre_options: ['天','周','月','季','年'],
@@ -328,12 +329,7 @@ export default {
       ? await preDictEdbInterface.classifyListV2()
       : await dataBaseInterface.menuListV3()
 				if (res.Ret === 200) {
-					/* if(!this.isPredict){
-						this.filterNodes(res.Data.AllNodes);
-						this.options = res.Data.AllNodes || [];
-					}else{
-						this.options = res.Data.AllNodes || [];
-					} */
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];
 				}
 		},
@@ -342,7 +338,7 @@ export default {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});

+ 5 - 7
src/views/dataEntry_manage/databaseComponents/fittingResidueDia.vue

@@ -278,6 +278,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr: ['日度', '周度','旬度', '月度', '季度', '年度'],
 			fre_options: ['天','周','月','季','年'],
@@ -352,13 +353,10 @@ export default {
 			const res=this.isPredict?await preDictEdbInterface.classifyListV2():await dataBaseInterface.menuListV3()
 			// dataBaseInterface.menuList().then((res) => {
 				if (res.Ret === 200) {
-					/* if(!this.isPredict){
-						this.filterNodes(res.Data.AllNodes);
-						this.options = res.Data.AllNodes || [];
-					}else{
-						this.options = res.Data.AllNodes || [];
-					} */
+					
+					this.filterNodes(res.Data.AllNodes);
 					this.options = res.Data.AllNodes || [];
+					
 				}
 			// });
 		},
@@ -367,7 +365,7 @@ export default {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});

+ 6 - 5
src/views/dataEntry_manage/databaseComponents/jointTargetDia.vue

@@ -157,6 +157,7 @@
 					label: 'ClassifyName',
 					value: 'ClassifyId',
 					children: 'Children',
+					checkStrictly: true
 				}"
 				style="width: 70%"
 				clearable
@@ -424,13 +425,13 @@ export default {
 			const res=this.isPredict?await preDictEdbInterface.classifyListV2():await dataBaseInterface.menuListV3()
 			// dataBaseInterface.menuList().then(res => {
 				if(res.Ret === 200) {
-					/* if(!this.isPredict){
-						this.filterNodes(res.Data.AllNodes);
+					if(!this.isPredict){
+						this.filterNodes(res.Data.AllNodes||[]);
 						this.menuOptions = res.Data.AllNodes || [];
 					}else{
 						this.menuOptions = res.Data.AllNodes || [];
-					} */
-					this.menuOptions = res.Data.AllNodes || [];
+					} 
+					// this.menuOptions = res.Data.AllNodes || [];
 				}
 			// })
 		},
@@ -438,7 +439,7 @@ export default {
 		filterNodes(arr) {
 			arr.length && arr.forEach(item => {
 				item.Children.length && this.filterNodes(item.Children)
-				if(item.Level === 2) {
+				if(!item.Children.length) {
 					delete item.Children
 				}
 			})

+ 49 - 72
src/views/dataEntry_manage/databaseComponents/openDialog.vue

@@ -1,4 +1,4 @@
-<template>
+ <template>
 	<div class="Dialog-box">
 		<el-dialog
 		:visible.sync="isOpenDialog"
@@ -21,53 +21,24 @@
 				label-width="80px"
 				:model="formData"
 				:rules="formRules">
-					<!-- 添加/编辑1级目录 -->
-					<template 
-					v-if="(title=='添加'&&formData.level === 0)
-					|| (title=='编辑'&&formData.level === 1)">
-						<el-form-item label="目录名称" prop="level_1">
-							<el-input
-							v-model="formData.level_1"
-							style="width: 80%"
-							placeholder="必填项"></el-input>
+					<template v-if="!formData.isEDB">
+						<el-form-item label="上级目录" v-if="formData.level>0">
+							<el-tooltip class="item" effect="dark" :content="getParentName" placement="top">
+      							<span class="parentStr">{{getParentName}}</span>
+    						</el-tooltip>
 						</el-form-item>
-					</template>
-					<!-- 添加/编辑2级目录 -->
-					<template 
-					v-else-if="(title=='添加'&&formData.level === 1)
-					|| (title=='编辑'&&formData.level === 2)">
-						<el-form-item label="一级目录" prop="level_1">
-							<span>{{formData.level_1}}</span>
-						</el-form-item>
-						<el-form-item label="目录名称" prop="level_2">
+						<el-form-item label="目录名称" prop="levelVal">
 							<el-input
-							v-model="formData.level_2"
-							style="width: 80%"
-							placeholder="必填项"></el-input>
-						</el-form-item>
-					</template>
-					<!-- 添加/编辑3级目录 -->
-					<template 
-					v-else-if="(title=='添加'&&formData.level === 2)
-					|| (title=='编辑'&&formData.level === 3)">
-						<el-form-item label="一级目录" prop="level_1">
-							<span>{{formData.level_1}}</span>
-						</el-form-item>
-						<el-form-item label="二级目录" prop="level_2">
-							<span>{{formData.level_2}}</span>
-						</el-form-item>
-						<el-form-item label="目录名称" prop="level_3">
-							<el-input
-							v-model="formData.level_3"
+							v-model="formData.levelVal"
 							style="width: 80%"
 							placeholder="必填项"></el-input>
 						</el-form-item>
 					</template>
 					<!-- 编辑具体指标 -->
-					<template v-else-if="title=='编辑' && formData.level === 4">
-						<el-form-item label="指标名称" prop="level_4">
+					<template v-if="title=='编辑' && formData.isEDB">
+						<el-form-item label="指标名称" prop="levelVal">
 							<el-input
-							v-model="formData.level_4"
+							v-model="formData.levelVal"
 							style="width: 80%"
 							placeholder="指标名称"></el-input>
 						</el-form-item>
@@ -124,34 +95,44 @@ export default {
 			default: '添加'
 		},
 		formData: {
-			type: Object,
+			type: Object,//{parentArr父级数据,isEDB:true 是否为指标}
 		}
 	},
 	watch: {
 		'isOpenDialog': {
 			handler(newval) {
-				if(newval && this.formData.level === 4) {
+				if(newval && this.formData.isEDB) {
 					this.getMenu();
 				}
 				// console.log(this.formData);
 			}
 		}
 	},
+	computed:{
+		getParentName(){
+			const arr=this.formData.parentArr||[]
+			let strArr=arr.reverse().map(item=>{
+				return item.classifyName
+			})
+			
+			return strArr.join('/')
+		}
+	},
 	data () {
 		return {
 			formRules: {
-				level_1:[
-					{ required: true, message: '目录名称不能为空', trigger: 'blur' },
-				],
-				level_2:[
-					{ required: true, message: '目录名称不能为空', trigger: 'blur' },
-				],
-				level_3:[
+				levelVal:[
 					{ required: true, message: '目录名称不能为空', trigger: 'blur' },
 				],
-				level_4:[
-					{ required: true, message: '指标名称不能为空', trigger: 'blur' },
-				],
+				// level_2:[
+				// 	{ required: true, message: '目录名称不能为空', trigger: 'blur' },
+				// ],
+				// level_3:[
+				// 	{ required: true, message: '目录名称不能为空', trigger: 'blur' },
+				// ],
+				// level_4:[
+				// 	{ required: true, message: '指标名称不能为空', trigger: 'blur' },
+				// ],
 				level_menu:[
 					{ required: true, message: '所属目录不能为空', trigger: 'blur' },
 				],
@@ -168,6 +149,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr:['日度','周度','旬度','月度','季度','年度'],
 
@@ -180,33 +162,21 @@ export default {
 
 			if(this.title==='添加') {
 				res = await dataBaseInterface.nodeAdd({
-						ClassifyName: this.formData.level === 0 
-							? this.formData.level_1
-							: this.formData.level === 1
-							? this.formData.level_2
-							: this.formData.level === 2
-							? this.formData.level_3
-							:'',
+						ClassifyName: this.formData.levelVal||'',
 						ParentId:this.formData.parent_id || 0,
 						Level: this.formData.level
 					})
 			}else if(this.title==='编辑') {
-				res = this.formData.level===4
+				res = this.formData.isEDB
 					? await dataBaseInterface.targetEdit({
 							ClassifyId: this.formData.level_menu[this.formData.level_menu.length - 1],
 							EdbInfoId: this.formData.edbinfo_id,
-							EdbName: this.formData.level_4,
+							EdbName: this.formData.levelVal,
 							Frequency: this.formData.frequency,
 							Unit: this.formData.unit
 						})
 					: await dataBaseInterface.nodeEdit({
-							ClassifyName: this.formData.level === 1
-								? this.formData.level_1
-								: this.formData.level === 2
-								? this.formData.level_2
-								: this.formData.level === 3
-								?this.formData.level_3
-								:'',
+							ClassifyName: this.formData.levelVal||'',
 							ClassifyId:this.formData.classify_id || 0
 						})
 			}
@@ -214,8 +184,8 @@ export default {
 			this.$message.success(res.Msg);
 
 		 if(this.title==='添加') this.callbackHandle('add');
-		 else if(this.title==='编辑' && this.formData.level===4) this.callbackHandle('update');
-		 else if(this.title==='编辑' && this.formData.level!==4) this.callbackHandle();
+		 else if(this.title==='编辑' && this.formData.isEDB) this.callbackHandle('update');
+		 else if(this.title==='编辑' && !this.formData.isEDB) this.callbackHandle();
 
 				
 		},
@@ -234,7 +204,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then(res => {
 				if(res.Ret === 200) {
-					//this.filterNodes(res.Data.AllNodes);
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];
 				}
 			})
@@ -243,7 +213,7 @@ export default {
 		filterNodes(arr) {
 			arr.length && arr.forEach(item => {
 				item.Children.length && this.filterNodes(item.Children)
-				if(item.Level === 2) {
+				if(!item.Children.length) {
 					delete item.Children
 				}
 			})
@@ -255,6 +225,13 @@ export default {
 </script>
 <style lang='scss'>
 .Dialog-box {
+	.parentStr{
+		display: block;
+		width: 304px;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
 	.dialog-main {
 		padding-left: 50px;
 	}

+ 3 - 2
src/views/dataEntry_manage/databaseComponents/operationDialog.vue

@@ -411,6 +411,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr: ['日度', '周度','旬度', '月度', '季度', '年度'],
 			fre_options: ['天','周','月','季','年'],
@@ -488,7 +489,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then((res) => {
 				if (res.Ret === 200) {
-					//this.filterNodes(res.Data.AllNodes);
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];
 				}
 			});
@@ -498,7 +499,7 @@ export default {
 			arr.length &&
 				arr.forEach((item) => {
 					item.Children.length && this.filterNodes(item.Children);
-					if (item.Level === 2) {
+					if (!item.Children.length) {
 						delete item.Children;
 					}
 				});

+ 18 - 1
src/views/dataEntry_manage/databaseComponents/smoothEdbDialog.vue

@@ -312,6 +312,7 @@ export default {
                 value: 'ClassifyId',
                 children: 'Children',
                 emitPath: false,
+                checkStrictly: true
             },
 
             select_target:'',
@@ -432,8 +433,24 @@ export default {
                 ? await preDictEdbInterface.classifyListV2()
                 : await dataBaseInterface.menuListV3()
             if(res.Ret!==200) return 
-            this.catalogArr = res.Data.AllNodes || [];
+            // this.catalogArr = res.Data.AllNodes || [];
+            if(!this.isPredict){
+				this.filterNodes(res.Data.AllNodes||[]);
+				this.catalogArr = res.Data.AllNodes || [];
+			}else{
+				this.catalogArr = res.Data.AllNodes || [];
+			} 
         },
+        // 递归改变第三级目录结构
+		filterNodes(arr) {
+			arr.length &&
+				arr.forEach((item) => {
+					item.Children.length && this.filterNodes(item.Children);
+					if (!item.Children.length) {
+						delete item.Children;
+					}
+				});
+		},
         /* 选择指标 */
         chooseTarget(val) {
             if(val) {

+ 153 - 246
src/views/dataEntry_manage/databaseList.vue

@@ -54,6 +54,7 @@
 				/>
 		</div>
 		<div class="database_main box" id="box" v-if="showData">
+			<!-- <target-tree /> -->
 			<div class="main-left left" id="left">
 				<div class="tree-cont">
 					<el-tree
@@ -66,7 +67,7 @@
 						:allow-drop="canDropHandle"
 						:current-node-key="select_node"
 						:default-expanded-keys="defaultShowNodes"
-						draggable
+						:draggable="isEdbBtnShow('moveCatalog')"
 						:expand-on-click-node="false"
 						check-strictly
 						empty-text="暂无目录"
@@ -79,6 +80,7 @@
 						@node-drag-end="dropMouseLeave"
 						@node-drag-leave="dropMouseLeave"
 						@node-drag-enter="dropMouseOver"
+						@node-drag-over="dropMouseOver"
 					>
 						<span
 							class="custom-tree-node"
@@ -110,7 +112,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
@@ -118,9 +120,9 @@
 									alt=""
 									style="width: 14px; height: 14px; margin-right: 8px"
 									@click.stop="addNode(node,data)"
-									v-if="data.Button.AddButton&&isEdbBtnShow('editCatalog')"
+									v-if="data.Button.AddButton&&isEdbBtnShow('editCatalog')&&node.level<6"
 								/>
-								<!--编辑节点 如果是分类,判断data.Button.OpButton不变;如果是指标,不显示(ETA1.0.3)-->
+								<!-- 编辑节点 如果是分类,判断data.Button.OpButton不变;如果是指标,不显示(ETA1.0.3) -->
 								<img
 									src="~@/assets/img/set_m/edit.png"
 									alt=""
@@ -128,7 +130,7 @@
 									@click.stop="editNode(node,data)"
 									v-if="!data.EdbCode&&(data.Button.OpButton)&&isEdbBtnShow('editCatalog')"
 								/>
-								<!-- 删除节点 如果是分类,判断data.Button.DeleteButton不变;如果是指标,不显示(ETA1.0.3)-->
+								<!-- 删除节点 如果是分类,判断data.Button.DeleteButton不变;如果是指标,不显示(ETA1.0.3) -->
 								<img
 									slot="reference"
 									src="~@/assets/img/set_m/del.png"
@@ -215,18 +217,7 @@
 							type="text" @click="refreshTargetHandle" >刷新</el-button>
 						<el-button v-if="isEdbBtnShow('edit')"
 								type="text" :disabled="!(EdbData.Button.OpButton)"
-								@click="editNode({
-									level: 4,
-									parent: {
-										data: { ClassifyId:edb_levels[2].ClassifyId },
-										parent:{
-											data: { ClassifyId:edb_levels[1].ClassifyId },
-											parent:{
-												data: { ClassifyId:edb_levels[0].ClassifyId },
-											}
-										},
-									}
-								},EdbData)"
+								@click="editNode({},EdbData)"
 							>编辑</el-button>
 						<!-- 指保存指标的上下限,在走势图才显示 -->
 						<el-button v-if="activeTab==='Chart'&&isEdbBtnShow('saveEdb')"
@@ -518,7 +509,7 @@ export default {
 		EdbLabelList,
 		chartTrendRender,
 		edbDetailData,
-		SmoothEdbDialog
+		SmoothEdbDialog,
 	},
 	directives: {
     drag(el, bindings) {
@@ -799,6 +790,7 @@ export default {
 
 				'editCatalog':edbDataPermission.edbData_classifyOpt_add,//添加编辑目录
 				'deleteCatalog':edbDataPermission.edbData_classifyOpt_delete,//删除目录
+				'moveCatalog':edbDataPermission.edbData_classifyOpt_move,//删除目录
 				'checkRelatedChart':edbDataPermission.edbData_checkRelatedChart,//查看关联图表
 				'checkRelatedEdb':edbDataPermission.edbData_checkRelatedEdb,//查看关联指标
 				'checkCalcChart':edbDataPermission.edbData_checkCalcChart,//查看计算指标
@@ -808,13 +800,13 @@ export default {
 		/* 获取树分类数据 */
 		getTreeData(params) {
 			
-			dataBaseInterface.menuListV3().then(res=>{
+			dataBaseInterface.targetCatalog({ParentId:0}).then(res=>{
 				if(res.Ret===200){
 					const arr=res.Data.AllNodes || []
 					this.treeData=arr.map(item=>{
 						return {
 							...item,
-							isLeaf:item.Children.length?false:true
+							// isLeaf:item.Children.length?false:true
 						}
 					})
 					this.CanOpClassify = res.Data.CanOpClassify;
@@ -863,10 +855,15 @@ export default {
 						//将指标添加进标签列表中
 						const {EdbNameEn,EdbName,EdbInfoId,UniqueCode,ClassifyId}=res.Data.Item
 						this.addLabel({code:UniqueCode,id:EdbInfoId,classifyId:ClassifyId,EdbName,EdbNameEn})
-						let deep_arr = _.cloneDeep(this.treeData);
-						this.defaultShowNodes=this.findParentNodeHandle(deep_arr,ClassifyId).reverse()||[]
+						// 展开目录
+						this.defaultShowNodes=classify_arr.reverse().map(item=>item.UniqueCode)
 						//设置tree高亮
-						this.$refs.menuTree.setCurrentKey(UniqueCode);
+						this.$nextTick(()=>{
+							setTimeout(() => {
+								this.$refs.menuTree.setCurrentKey(UniqueCode);
+							}, 1000);
+						})
+						
 
 					}else {
 						this.tableData = [];
@@ -902,7 +899,7 @@ export default {
 							if(overBottom){
 								parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
 							}
-						},400)
+						},1500)
 					})
 					
 				}
@@ -1111,7 +1108,7 @@ export default {
 					? 'auto'
 					: width <= 260
 					? 80
-					: 0.5 * width;
+					: 0.4 * width;
 			this.$set(node, 'Nodewidth', label_wid + 'px');
 		},200),
 		/* 双击label出现input修改框 */
@@ -1151,27 +1148,28 @@ export default {
 			}
 			this.isOpenDialog = true;
 		},
+		// 递归节点
+		getNodeParentData(data,arr){
+			if(data.level===0) return
+			arr.push({classifyName:data.data.ClassifyName,classifyId:data.data.ClassifyId})
+			this.getNodeParentData(data.parent,arr)
+			return arr
+		},
 		/* 添加节点 */
 		addNode(node,data) {
-			// console.log(node,data);
+			console.log(node);
 			this.dialog_title = '添加';
+			let arr=[]
+			arr=this.getNodeParentData(node,arr)
+			// console.log(arr);
+			
 				/* 添加目录 */
 			this.dialogForm = {
-				level_1: node.level === 1 
-				? data.ClassifyName
-				:node.level === 2
-				? node.parent.data.ClassifyName
-				: node.parent.parent.data.ClassifyName,
-				level_2: node.level === 1 
-				? ''
-				:node.level === 2
-				? data.ClassifyName
-				: node.parent.data.ClassifyName,
-				// level_3: node.level === 3
-				// ? data.ClassifyName
-				// : '',
+				parentArr:arr,
 				parent_id: data.ClassifyId,
-				level: node.level
+				level: node.level,
+				levelVal:'',
+				isEDB:false
 			}
 			//存储当前要新增子级的目录code
 			sessionStorage.setItem('expandCode', data.UniqueCode);
@@ -1179,25 +1177,27 @@ export default {
 		},
 		/* 编辑节点 */
 		editNode(node,data) {
+			// console.log(node);
 			this.dialog_title = '编辑';
 			if(data.EdbCode) {
 				/* 编辑指标 */
-				
 				(data.EdbType===1 || [58,59,67,68].includes(data.Source)) && dataBaseInterface.targetDetail({
 					EdbInfoId: data.EdbInfoId
 				}).then(res => {
 					if(res.Ret === 200) {
+						// 处理所在目录
+						let menuArrId=res.Data.ClassifyList&&res.Data.ClassifyList.map(item=>{
+							return item.ClassifyId
+						}).reverse()
 						this.dialogForm = {
-							level: node.level,
-							level_4: res.Data.EdbName,
-							level_menu:[
-								node.parent.parent.parent.data.ClassifyId,
-								node.parent.parent.data.ClassifyId,
-								node.parent.data.ClassifyId
-							],
+							parentArr:[],
+							level: 0,
+							levelVal: res.Data.EdbName,
+							level_menu:menuArrId||[],
 							edbinfo_id: res.Data.EdbInfoId,
 							frequency:res.Data.Frequency,
-							unit:res.Data.Unit
+							unit:res.Data.Unit,
+							isEDB:true
 						}
 						this.isOpenDialog = true;
 					}
@@ -1232,23 +1232,15 @@ export default {
 
 
 			}else {
+				let arr=[]
+				arr=this.getNodeParentData(node.parent,arr)
 				/* 编辑目录 */
 				this.dialogForm = {
-					level_1: node.level === 1 
-					? data.ClassifyName
-					:node.level === 2
-					? node.parent.data.ClassifyName
-					: node.parent.parent.data.ClassifyName,
-					level_2: node.level === 1 
-					? ''
-					:node.level === 2
-					? data.ClassifyName
-					: node.parent.data.ClassifyName,
-					level_3: node.level === 3
-					? data.ClassifyName
-					: '',
+					isEDB:false,
+					parentArr:arr,
+					levelVal: data.ClassifyName||'',
 					classify_id: data.ClassifyId,
-					level: node.level
+					level: node.level-1
 				}
 				this.isOpenDialog = true;
 			}
@@ -1355,155 +1347,119 @@ export default {
 		},
 		/* 判断节点是否能被拖拽 */
 		canDragHandle({data}) {
-      return data.Button.MoveButton;
+      		return data.Button.MoveButton;
 		},
 		/* 判断节点是否能被拖入 */
 		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')){
+			
+			// 如果拖动的是指标
+			if(draggingNode.data.EdbCode){
+				if(!(dropNode.level===1&&type!=='inner')){
 					canDrop=true
 				}
-			}
-			//四级指标
-			if(draggingNode.level===4){
-				if((dropNode.level===3&&type==='inner')||(dropNode.level===4&&type!=='inner')){
+			}else{//拖动的是目录
+				// console.log(dropNode.level,draggingNode.level);
+				//目录只能拖动到层级比他大的里面去
+				if(dropNode.level<draggingNode.level||(dropNode.level===draggingNode.level&&type!=='inner')){
 					canDrop=true
 				}
 			}
-			
 			return canDrop
 		},
 		/* 拖拽完成 */
 		dropOverHandle(b,a,i,e) {
 			// 被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置
-			if(b.level===1||b.level===2||b.level===3){
-				this.handleMoveCatalogue(b,a,i,e)
-			}
-
-			// 指标层
-			if(b.level===4){
-				this.handleMoveEdb(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[targetIndex+1].data.ClassifyId
-			}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){
-				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
-				}
-			}
-
-			if(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
-				}
-			}
-
-			dataBaseInterface.classifyMove({
-				ClassifyId:b.data.ClassifyId,
-				ParentClassifyId:ParentClassifyId,
-				PrevClassifyId:PrevClassifyId,
-				NextClassifyId:NextClassifyId
-			}).then(res=>{
-				if(res.Ret===200){
-					this.$message.success('移动成功!')
-				}
-				this.getTreeData();
-			})
-		},
+			console.log(b,a,i);
+			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
+			
 
-		// 移动的为指标层 四级
-		handleMoveEdb(b,a,i,e){
-			let PrevEdbInfoId=0,NextEdbInfoId=0,targetIndex=0,list=a.parent.childNodes.map(_ => _.data)
-			if(i==='inner'){
-				PrevEdbInfoId=0
-				NextEdbInfoId=a.data.Children.length>1?a.data.Children[1].EdbInfoId:0
-			}else{
+			if(i!=='inner'){
+				ParentClassifyId=a.parent.data.ClassifyId||0
 				list.forEach((item,index)=>{
-					if(item.EdbInfoId===b.data.EdbInfoId){
-						targetIndex=index
-						return
+					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){
-					PrevEdbInfoId=0
-					NextEdbInfoId=list[targetIndex+1].EdbInfoId
+					const data=list[targetIndex+1].data
+					NextClassifyId=data.EdbCode?0:data.ClassifyId
+					NextEdbInfoId=data.EdbCode?data.EdbInfoId:0
 				}else if(targetIndex===list.length-1){
-					PrevEdbInfoId=list[targetIndex-1].EdbInfoId
-					NextEdbInfoId=0
+					const data=list[targetIndex-1].data
+					PrevClassifyId=data.EdbCode?0:data.ClassifyId
+					PrevEdbInfoId=data.EdbCode?data.EdbInfoId:0
 				}else{
-					PrevEdbInfoId=list[targetIndex-1].EdbInfoId
-					NextEdbInfoId=list[targetIndex+1].EdbInfoId
+					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
 				}
-			}	
-			
-			dataBaseInterface.targetMove({
-				ClassifyId: a.data.ClassifyId,
-				EdbInfoId: b.data.EdbInfoId,
-				PrevEdbInfoId:PrevEdbInfoId,
-				NextEdbInfoId:NextEdbInfoId
-			}).then(res => {
-				if(res.Ret === 200) {
+			}else{
+				ParentClassifyId=a.data.ClassifyId||0
+			}
+
+			const params={
+				ClassifyId,
+				ParentClassifyId,
+				EdbInfoId,
+				PrevClassifyId,
+				NextClassifyId,
+				PrevEdbInfoId,
+				NextEdbInfoId
+			}
+			console.log(params);
+			dataBaseInterface.classifyMoveSort(params).then(res=>{
+				if(res.Ret===200){
 					this.$message.success('移动成功!')
 				}
-				this.getTreeData();
+				this.getTreeData()
+				this.getDataList();
 			})
 		},
 
 		/* 拖拽覆盖添加背景色 */
 		dropMouseOver(node1,node2,e) {
+			// console.log(e.layerY);
+			
 			// 被拖拽节点对应的 Node、所进入节点对应的 Node、event
-			if(((node1.level===2&&node2.level === 1)||(node1.level===3&&node2.level === 2)) && (e.target.childNodes[0].className.includes('el-tree-node__content') 
+			if((node1.level>node2.level||(node1.data.EdbInfoId>0&&!node2.data.EdbInfoId)) && (e.target.childNodes[0].className.includes('el-tree-node__content') 
 			|| e.target.className.includes('el-tree-node__content'))) {
 				// console.log(e.target.childNodes[0])
 				e.target.childNodes[0].className.includes('el-tree-node__content') 
 				? e.target.childNodes[0].style.backgroundColor = '#409eff' 
 				: e.target.style.backgroundColor = '#409eff';
 			}
+			const dropLine=$('.el-tree__drop-indicator')[0]
+			if(dropLine){
+				// console.log(dropLine);
+				setTimeout(() => {
+					dropLine.style.top=e.layerY+'px'
+					// console.log(e.layerY,dropLine);
+				}, 10);
+			}
+			
 		},
 		/* 拖拽离开/拖拽完成重置背景色 */
 		dropMouseLeave(node1,node2,e) {
@@ -1586,41 +1542,6 @@ export default {
 			})
 			return [...arr,code]
 		},
-		// 懒加载tree
-		handleTreeLoad(node,resolve){
-			if(node.level===0){
-				resolve(this.treeData)
-			}
-			if(node.level===1){
-				let arr=[]
-				this.treeData.forEach(item=>{
-					if(item.UniqueCode===node.data.UniqueCode){
-						arr=item.Children
-					}
-				})
-				resolve(arr)
-			}
-			if(node.level===2){
-				dataBaseInterface.getEdbListForClassify({ClassifyId:node.data.ClassifyId}).then(res=>{
-					if(res.Ret===200){
-						let arr=res.Data.EdbInfoList||[]
-						arr=arr.map(item=>{
-							return {
-								...item,
-								isLeaf:true
-							}
-						})
-						resolve(arr)
-					}else{
-						resolve([])
-					}
-					this.changeTreeNode()
-				})
-			}
-			if(node.level>2){
-				resolve([])
-			}
-		},
 		/* 添加计算指标 */
 		addComputedHandler() {
 			this.computedTit = '计算指标';
@@ -1699,6 +1620,12 @@ export default {
 		/* 设置回显计算指标的表单 */
 		setComputedDialogForm(type,node,data,res,view=false) {
 			//指标运算 or 其他计算类型指标
+
+			// 处理所在目录
+			let menuArrId=res.EdbInfoDetail.ClassifyList&&res.EdbInfoDetail.ClassifyList.map(item=>{
+				return item.ClassifyId
+			}).reverse()
+
 			if( type === 4 ) {
 				/* 回显指标和表单 */
 				const list = res.CalculateList;
@@ -1717,11 +1644,7 @@ export default {
 				this.calulateForm =  {
 					edb_id:res.EdbInfoDetail.EdbInfoId,
 					formula: res.EdbInfoDetail.CalculateFormula,
-					menu: [
-						node.parent.parent.parent.data.ClassifyId,
-						node.parent.parent.data.ClassifyId,
-						data.ClassifyId
-					],
+					menu: menuArrId||[],
 					targetName: res.EdbInfoDetail.EdbName,
 					unit: res.EdbInfoDetail.Unit,
 					frequency: res.EdbInfoDetail.Frequency,
@@ -1736,11 +1659,7 @@ export default {
 					targetName: dataInfo.EdbName,
 					frequency: dataInfo.Frequency,
 					unit: dataInfo.Unit,
-					menu: [
-						node.parent.parent.parent.data.ClassifyId,
-						node.parent.parent.data.ClassifyId,
-						data.ClassifyId
-					],
+					menu: menuArrId||[],
 					view
 				}
 
@@ -1917,34 +1836,22 @@ export default {
 			})
 		},
 		//绑定el-tree的load属性
-		getLazyTreeData (node,resolve,maxLevel=3){
+		async getLazyTreeData (node,resolve){
 			if(node.level===0){
 				resolve(this.treeData)
-			}
-			if(node.level>0&&node.level<=maxLevel){
-				//获取对应层级的Child
-				resolve(node.data.Children||[])
-			}
-			if(node.level===maxLevel){
-				//调接口获取该分类下指标的数据
-				dataBaseInterface.getEdbListForClassify({ClassifyId:node.data.ClassifyId}).then(res=>{
-					if(res.Ret===200){
-						let arr=res.Data.EdbInfoList||[]
-						arr=arr.map(item=>{
-							return {
-								...item,
-								isLeaf:true
-							}
-						})
-						resolve(arr)
-					}else{
-						resolve([])
-					}
-					this.changeTreeNode()
-				})
-			}
-			if(node.level>maxLevel){
-				resolve([])
+			}else{
+				let arr=[]
+				const res=await dataBaseInterface.targetCatalog({ParentId:node.data.ClassifyId})
+				if (res.Ret === 200) {
+					const temarr = res.Data.AllNodes || [];
+					arr=temarr.map(item=>{
+						return {
+							...item,
+							isLeaf:item.EdbInfoId?true:false
+						}
+					})
+				}
+				resolve(arr)
 			}
 		},
 		//保存指标上下限

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

@@ -36,6 +36,7 @@
                         label: 'ClassifyName',
                         value: 'ClassifyId',
                         children: 'Children',
+                        checkStrictly: true
                     }"
                     style="width: 90%"
                     placeholder="请选择所属分类"
@@ -591,6 +592,7 @@ export default {
           if (res.Ret !== 200) return;
           const {
             ClassifyId,
+            ClassifyList,
             EdbName,
             Frequency,
             LatestValue,
@@ -599,9 +601,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 +656,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()
+        // } 
 
       });
     },

+ 22 - 12
src/views/predictEdb_manage/components/classifyDia.vue

@@ -19,18 +19,11 @@
 				:model="formData"
 				:rules="formRules">
 				
-				<!-- 添加一级目录的子分类/编辑二级目录时显示 -->
-				<template v-if="(title=='添加'&&formData.Level >= 1)||(title=='编辑'&&formData.Level >= 2)">
-					<el-form-item label="一级目录" prop="level_1_Name">
-						<span>{{formData.level_1_Name}}</span>
-					</el-form-item>
-				</template>
-				<!-- 添加二级目录的子分类/编辑三级目录时显示 -->
-				<template v-if="(title=='添加'&&formData.Level === 2)||(title=='编辑'&&formData.Level === 3)">
-					<el-form-item label="二级目录" prop="level_2_Name">
-						<span>{{formData.level_2_Name}}</span>
-					</el-form-item>
-				</template>
+				<el-form-item label="上级目录" v-if="formData.Level>0">
+					<el-tooltip class="item" effect="dark" :content="getParentName" placement="top">
+      					<span class="parentStr">{{getParentName}}</span>
+    				</el-tooltip>
+				</el-form-item>
 
 				<el-form-item label="目录名称" prop="classify_name">
 					<el-input
@@ -73,6 +66,16 @@ export default {
 			}
 		}
 	},
+	computed:{
+		getParentName(){
+			const arr=this.formData.parentArr||[]
+			let strArr=arr.reverse().map(item=>{
+				return item.classifyName
+			})
+			
+			return strArr.join('/')
+		}
+	},
 	data () {
 		return {			
 			formData: {},
@@ -113,6 +116,13 @@ export default {
 </script>
 <style lang='scss'>
 .predict-classify-dialog {
+	.parentStr{
+		display: block;
+		width: 304px;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
 	.dialog-main {
 		padding-left: 50px;
 	}

+ 13 - 0
src/views/predictEdb_manage/components/computedDialog.vue

@@ -121,6 +121,7 @@
 							label: 'ClassifyName',
 							value: 'ClassifyId',
 							children: 'Children',
+							checkStrictly: true
 						}"
 						style="width: 90%"
 						placeholder="请选择所属分类"
@@ -266,11 +267,23 @@ export default {
 		};
 	},
 	methods: {
+		// 递归改变目录结构
+		filterNodes(arr) {
+			arr.length &&
+				arr.forEach((item) => {
+					item.Children.length && this.filterNodes(item.Children);
+					if (!item.Children.length) {
+						delete item.Children;
+					}
+				});
+		},
+
 		/* 获取目录结构 */
 		getMenu() {
 			preDictEdbInterface.classifyListV2().then(res => {
 				if(res.Ret !== 200) return
 
+				this.filterNodes(res.Data.AllNodes||[]);
 				this.options = res.Data.AllNodes || [];
 			}) 
 		},

+ 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.ClassifyId)
+                this.$emit('setCurrentClassify',res.Data.ClassifyList||[])
                 //更新图片
                 if(type==='updateImg' || !res.Data.EdbInfo.ChartImage) {
                     console.log(type);

+ 17 - 4
src/views/predictEdb_manage/components/operationDialog.vue

@@ -191,6 +191,7 @@
 									label: 'ClassifyName',
 									value: 'ClassifyId',
 									children: 'Children',
+									checkStrictly: true
 								}"
 								style="width: 90%"
 								placeholder="请选择所属分类"
@@ -490,13 +491,25 @@ export default {
 			this.searchApi(this.current_search,++this.search_page)
 		},
 
+		// 递归改变目录结构
+		filterNodes(arr) {
+			arr.length &&
+				arr.forEach((item) => {
+					item.Children.length && this.filterNodes(item.Children);
+					if (!item.Children.length) {
+						delete item.Children;
+					}
+				});
+		},
+
 		/* 获取目录结构 */
 		getMenu() {
-      preDictEdbInterface.classifyListV2().then(res => {
-        if(res.Ret !== 200) return
+			preDictEdbInterface.classifyListV2().then(res => {
+				if(res.Ret !== 200) return
 
-        this.options = res.Data.AllNodes || [];
-      }) 
+				this.filterNodes(res.Data.AllNodes||[]);
+				this.options = res.Data.AllNodes || [];
+			}) 
 		},
 
 		/* 获取指标数据 */

+ 91 - 133
src/views/predictEdb_manage/mixins/mixin.js

@@ -75,7 +75,7 @@ export default {
 					? 'auto'
 					: width <= 260
 					? 80
-					: 0.5 * width;
+					: 0.35 * width;
 			this.$set(node, 'Nodewidth', label_wid + 'px');
 		},200),
 
@@ -108,121 +108,91 @@ export default {
 
     /* 拖拽完成 */
     dropOverHandle(b, a, i, e) {
-      // console.log(i, a);
+      console.log(b,a,i);
       // 被拖拽节点对应的 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
-        }
+      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
+
+			if(i!=='inner'){
+        ParentClassifyId=a.parent.data.ClassifyId||0
+				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
+				}
+			}else{
+        ParentClassifyId=a.data.ClassifyId||0
       }
 
-      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 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()
+        this.$refs.detailComponentRef.getDetail()
+			})
     },
 
     /* 拖拽覆盖添加背景色 */
     dropMouseOver(node1, node2, e) {
-      if (
-        (node1.level === 2 && node2.level === 1) &&
-        (e.target.childNodes[0].className.includes("el-tree-node__content") ||
-          e.target.className.includes("el-tree-node__content"))
-      ) {
-        e.target.childNodes[0].className.includes("el-tree-node__content")
-          ? (e.target.childNodes[0].style.backgroundColor = "#409eff")
-          : (e.target.style.backgroundColor = "#409eff");
-      }
+      // 被拖拽节点对应的 Node、所进入节点对应的 Node、event
+			if((node1.level>node2.level||(node1.data.EdbInfoId>0&&!node2.data.EdbInfoId)) && (e.target.childNodes[0].className.includes('el-tree-node__content') 
+			|| e.target.className.includes('el-tree-node__content'))) {
+				// console.log(e.target.childNodes[0])
+				e.target.childNodes[0].className.includes('el-tree-node__content') 
+				? e.target.childNodes[0].style.backgroundColor = '#409eff' 
+				: e.target.style.backgroundColor = '#409eff';
+			}
+      const dropLine=$('.el-tree__drop-indicator')[0]
+			if(dropLine){
+				setTimeout(() => {
+					dropLine.style.top=e.layerY+'px'
+				}, 10);
+			}
     },
 
     /* 拖拽离开/拖拽完成重置背景色 */
@@ -263,30 +233,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;
     },

+ 68 - 89
src/views/predictEdb_manage/predictEdb.vue

@@ -56,7 +56,7 @@
 						:allow-drop="canDropHandle"
 						:current-node-key="select_node"
 						:default-expanded-keys="defaultShowNodes"
-						draggable
+						:draggable="isEdbBtnShow('edbPreData_classifyOpt_move')"
 						:expand-on-click-node="false"
 						check-strictly
 						empty-text="暂无分类"
@@ -69,6 +69,7 @@
 						@node-drag-end="dropMouseLeave"
 						@node-drag-leave="dropMouseLeave"
 						@node-drag-enter="dropMouseOver"
+						@node-drag-over="dropMouseOver"
 					>
 						<span class="custom-tree-node" slot-scope="{ node, data }">
 							<el-input
@@ -87,6 +88,7 @@
 								:style="`width:${
 									(select_node === data.UniqueCode && node.Nodewidth) || ''
 								}`"
+								:id="`node${data.UniqueCode}`"
 							>
 								<span>{{ currentLang==='en' ? (data.ClassifyNameEn||data.ClassifyName) : data.ClassifyName }}</span>
 							</span>
@@ -106,7 +108,7 @@
 									alt=""
 									style="width: 14px; height: 14px; margin-right: 8px"
 									@click.stop="addNode(node, data)"
-									v-if="data.Button.AddButton&&!data.EdbInfoId&&isEdbBtnShow('edbPreData_classifyOpt_add')"
+									v-if="data.Button.AddButton&&!data.EdbInfoId&&isEdbBtnShow('edbPreData_classifyOpt_add')&&node.level<6"
 								/>
 								<!-- 编辑目录 -->
 								<img
@@ -704,44 +706,43 @@ export default {
 			const {predictEdbPermission,checkPermissionBtn}=this.permissionBtn
 			return checkPermissionBtn(predictEdbPermission[type])||false
 		},
-		setCurrentClassify(classifyId){
+		setCurrentClassify(ClassifyList){
 			//获取指标详情后才能拿到准确的classifyId
 			//根据准备的id查找指标的父级目录并展开
-			let deep_arr = _.cloneDeep(this.treeData);
-			let arr = this.findParentNodeHandle(deep_arr, classifyId).reverse();
-
-			this.defaultShowNodes = arr;
-			this.$refs.treeRef.setCurrentKey(this.select_node);
+			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");
-				if (!dom || !parentDom) {
+					const dom = document.getElementById(`node${this.select_node}`)||{}
+					const parentDom = document.getElementsByClassName('target_tree')[0];
+					/* 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;
-					return;
-				}
-				/* 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);
-			})
+				}, 1500);
+				setTimeout(() => {
+					this.$refs.treeRef.setCurrentKey(this.select_node);//设置高亮
+				}, 1500);
+			// })
 		},
 		setNameBack({edb_name,edb_nameEn,userid}) {
 			this.edbName=edb_name;
@@ -759,7 +760,7 @@ export default {
 
 		/* 获取分类 */
 		getTreeData(params=null) {
-			preDictEdbInterface.classifyListV2({IsOnlyMe:this.isOnlyMe||false}).then(res => {
+			preDictEdbInterface.predictEdbCatalog({IsOnlyMe:this.isOnlyMe||false,ParentId:0}).then(res => {
 				const { Ret,Data } = res;
 				
 				if(Ret !== 200) return
@@ -851,23 +852,23 @@ export default {
 			}
 			this.classifyDia = true;
 		},
+		// 递归节点
+		getNodeParentData(data,arr){
+			if(data.level===0) return
+			arr.push({classifyName:data.data.ClassifyName,classifyId:data.data.ClassifyId})
+			this.getNodeParentData(data.parent,arr)
+			return arr
+		},
 		addNode(node,{ClassifyName,ClassifyId}){
 			this.dialog_title = '添加'
+			let arr=[]
+			arr=this.getNodeParentData(node,arr)
 			/* 添加目录 */
 			this.classifyForm = {
 				classify_name:'',
 				Level:node.level,
 				ParentId:ClassifyId,
-				level_1_Name:node.level === 1
-				? ClassifyName
-				: node.level === 2
-				? node.parent.data.ClassifyName
-				: node.parent.parent.data.ClassifyName,
-				level_2_Name:node.level === 1
-				? ''
-				: node.level === 2
-				? ClassifyName
-				: node.parent.data.ClassifyName,
+				parentArr:arr,
 			}
 			this.classifyDia = true;
 		},
@@ -875,22 +876,15 @@ export default {
     editNode(node, { ClassifyName,ClassifyId,Level,ParentId}) {
 
       this.dialog_title = '编辑';
+	  let arr=[]
+	  arr=this.getNodeParentData(node.parent,arr)
       /* 编辑目录 */
       this.classifyForm = {
         classify_name: ClassifyName,
         classify_id: ClassifyId,
-        Level:node.level,
+        Level:node.level-1,
         ParentId:ParentId,
-        level_1_Name:node.level === 1
-            ? ClassifyName
-            : node.level === 2
-            ? node.parent.data.ClassifyName
-            : node.parent.parent.data.ClassifyName,
-        level_2_Name:node.level === 1
-            ? ''
-            : node.level === 2
-            ? ClassifyName
-            : node.parent.data.ClassifyName,
+        parentArr:arr,
       };
       this.classifyDia = true;
     },
@@ -1112,10 +1106,9 @@ export default {
 		},
 
 		/* 计算指标回显 */
-		setComputedDialogForm({Source,CalculateList,CalculateFormula,EdbInfoId,EdbName,Unit,Frequency,ClassifyId,MoveType,MoveFrequency,Calendar,CorrelationStr},type='') {
+		setComputedDialogForm({Source,CalculateList,CalculateFormula,EdbInfoId,EdbName,Unit,Frequency,ClassifyId,ClassifyList,MoveType,MoveFrequency,Calendar,CorrelationStr},type='') {
 			//找到指标的父级
-			let deep_arr = _.cloneDeep(this.treeData);
-			const parentNodes = this.findParentNodeHandle(deep_arr,ClassifyId,'ClassifyId')
+			const parentNodes = ClassifyList.length&&ClassifyList.map(item=>item.ClassifyId)
 			//指标运算 or 其他计算类型指标
 			if( Source === 31 ) {
 				/* 回显指标和表单 */
@@ -1132,7 +1125,7 @@ export default {
 				this.calulateForm =  {
 					edb_id:EdbInfoId,
 					formula: CalculateFormula,
-					menu: parentNodes.reverse(),
+					menu: parentNodes,
 					targetName: EdbName,
 					unit: Unit,
 					frequency: Frequency,
@@ -1145,7 +1138,7 @@ export default {
 						targetName: EdbName,
 						frequency: Frequency,
 						unit: Unit,
-						menu: parentNodes.reverse(),
+						menu: parentNodes,
 						view: type === 'view',
 						source: Source,
 						date: CalculateFormula,
@@ -1368,38 +1361,24 @@ export default {
       this.getPublicList();
     },
 		//懒加载el-tree
-		getLazyTreeData(node,resolve,maxLevel=3){
+		async getLazyTreeData(node,resolve,maxLevel=3){
 			if(node.level===0){
-					resolve(this.treeData)
-				}
-				if(node.level>0&&node.level<=maxLevel){
-					//获取对应层级的Child
-					resolve(node.data.Children||[])
-				}
-				if(node.level===maxLevel){
-					//调接口获取该分类下图表的数据
-					preDictEdbInterface.classifyChartList({
-						ClassifyId:node.data.ClassifyId,
-						IsShowMe:this.isOnlyMe
-					}).then(res=>{
-						if(res.Ret===200){
-							let arr=res.Data.EdbInfoList||[]
-							arr=arr.map(item=>{
-								return {
-									...item,
-									isLeaf:true
-								}
-							})
-							resolve(arr)
-						}else{
-							resolve([])
+				resolve(this.treeData)
+			}else{
+				let arr=[]
+				const res=await preDictEdbInterface.predictEdbCatalog({IsOnlyMe:this.isOnlyMe||false,ParentId:node.data.ClassifyId})
+				if (res.Ret === 200) {
+					const temarr = res.Data.AllNodes || [];
+					arr=temarr.map(item=>{
+						return {
+							...item,
+							isLeaf:item.EdbInfoId?true:false
 						}
-						this.changeTreeNode()
 					})
 				}
-				if(node.level>maxLevel){
-					resolve([])
-				}
+				resolve(arr)
+			}
+				
 		},
 		changeTreeNode(){
 			this.$refs.treeRef.setCurrentKey(this.select_node);

+ 3 - 2
src/views/supply_manage/components/createTargetDia.vue

@@ -126,6 +126,7 @@ export default {
 				label: 'ClassifyName',
 				value: 'ClassifyId',
 				children: 'Children',
+				checkStrictly: true
 			},
 			frequencyArr:['日度','周度','旬度','月度','季度','年度']
 		};
@@ -135,7 +136,7 @@ export default {
 		getMenu() {
 			dataBaseInterface.menuListV3().then(res => {
 				if(res.Ret === 200) {
-					//this.filterNodes(res.Data.AllNodes);
+					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];
 				}
 			})
@@ -144,7 +145,7 @@ export default {
 		filterNodes(arr) {
 			arr.length && arr.forEach(item => {
 				item.Children.length && this.filterNodes(item.Children)
-				if(item.Level === 2) {
+				if(!item.Children.length) {
 					delete item.Children
 				}
 			})