jwyu 1 年之前
父节点
当前提交
85a0dd44c4

+ 2 - 1
src/views/dataEDB/components/EDBClassify.vue

@@ -4,6 +4,7 @@ import { useWindowSize } from '@vueuse/core'
 import apiDataEDB from '@/api/dataEDB'
 import apiDataEDB from '@/api/dataEDB'
 import { showDialog , showToast } from 'vant';
 import { showDialog , showToast } from 'vant';
 import {useEDBDelete} from '../hooks/useEDBDelete'
 import {useEDBDelete} from '../hooks/useEDBDelete'
+import {deleteClassifyItemEmpty} from '../util/util'
 
 
 const {edbClassifyDelete}=useEDBDelete()
 const {edbClassifyDelete}=useEDBDelete()
 const { width } = useWindowSize()
 const { width } = useWindowSize()
@@ -112,7 +113,7 @@ let classifyList=ref([])
 async function getEDBClassifyList(){
 async function getEDBClassifyList(){
     const res=await apiDataEDB.edbClassifyList()
     const res=await apiDataEDB.edbClassifyList()
     if(res.Ret===200){
     if(res.Ret===200){
-        formatClassifyArr(res.Data.AllNodes||[],100)
+        deleteClassifyItemEmpty(res.Data.AllNodes||[])
         classifyList.value=res.Data.AllNodes||[]
         classifyList.value=res.Data.AllNodes||[]
     }
     }
 }
 }

+ 11 - 11
src/views/dataEDB/components/EditBaseEDB.vue

@@ -2,6 +2,7 @@
 import {watch,ref, reactive, computed} from 'vue'
 import {watch,ref, reactive, computed} from 'vue'
 import apiDataEDB from '@/api/dataEDB'
 import apiDataEDB from '@/api/dataEDB'
 import {edbFrequencyOpts,edbUnitOpts} from '../util/config'
 import {edbFrequencyOpts,edbUnitOpts} from '../util/config'
+import {deleteClassifyItemEmpty,findItemWithIdAndParents} from '../util/util'
 import { showToast } from 'vant'
 import { showToast } from 'vant'
 
 
 const props=defineProps({
 const props=defineProps({
@@ -64,6 +65,7 @@ const edbClassifyList=ref([])
 function getEdbClassifyList(){
 function getEdbClassifyList(){
     apiDataEDB.edbClassifyList().then(res=>{
     apiDataEDB.edbClassifyList().then(res=>{
         if(res.Ret===200){
         if(res.Ret===200){
+            deleteClassifyItemEmpty(res.Data.AllNodes||[])
             edbClassifyList.value=res.Data.AllNodes||[]
             edbClassifyList.value=res.Data.AllNodes||[]
         }
         }
     })
     })
@@ -71,18 +73,13 @@ function getEdbClassifyList(){
 const showSelectClassify=ref(false)
 const showSelectClassify=ref(false)
 const selectClassifyNameStr=computed(()=>{
 const selectClassifyNameStr=computed(()=>{
     if(!formState.classify) return ''
     if(!formState.classify) return ''
-    let str=''
-    edbClassifyList.value.forEach(level1=>{
-        level1.Children?.forEach(level2=>{
-            level2.Children?.forEach(level3=>{
-                if(level3.ClassifyId===formState.classify){
-                    str=`${level1.ClassifyName}/${level2.ClassifyName}/${level3.ClassifyName}`
-                }
-            })
-        })
-    })
-    return str
 
 
+    let arr=[]
+    arr=findItemWithIdAndParents(edbClassifyList.value,formState.classify)
+    if(arr?.length){
+        const textArr=arr.map(item=>item.ClassifyName)
+        return `${textArr.join('/')}`
+    }
 })
 })
 
 
 // 选择频率
 // 选择频率
@@ -228,6 +225,9 @@ async function handleSave(){
             :field-names="{text:'ClassifyName',value:'ClassifyId',children:'Children'}"
             :field-names="{text:'ClassifyName',value:'ClassifyId',children:'Children'}"
             @close="showSelectClassify = false"
             @close="showSelectClassify = false"
         />
         />
+        <div style="width:300px;margin:0 auto;padding:20px 0">
+            <van-button type="primary" round block @click="showSelectClassify = false">确定</van-button>
+        </div>
     </van-popup>
     </van-popup>
 
 
     <!-- 选择频率 -->
     <!-- 选择频率 -->

+ 3 - 31
src/views/dataEDB/components/SelectEDBClassify.vue

@@ -1,7 +1,7 @@
 <script setup>
 <script setup>
 import {ref, watch} from 'vue'
 import {ref, watch} from 'vue'
 import apiDataEDB from '@/api/dataEDB'
 import apiDataEDB from '@/api/dataEDB'
-
+import {deleteClassifyItemEmpty,findItemWithIdAndParents} from '../util/util'
 const props=defineProps({
 const props=defineProps({
     show:{
     show:{
         type:Boolean,
         type:Boolean,
@@ -28,22 +28,13 @@ watch(
     }
     }
 )
 )
 
 
-function formatClassifyArr(arr){
-    arr.length&&arr.forEach(item=>{
-        item.Children.length&&formatClassifyArr(item.Children)
-        if(!item.Children.length){
-            delete item.Children
-        }
-    })
-}
-
 // 获取指标库分类
 // 获取指标库分类
 const classify=ref('')
 const classify=ref('')
 const edbClassifyList=ref([])
 const edbClassifyList=ref([])
 function getEdbClassifyList(){
 function getEdbClassifyList(){
     apiDataEDB.edbClassifyList().then(res=>{
     apiDataEDB.edbClassifyList().then(res=>{
         if(res.Ret===200){
         if(res.Ret===200){
-            formatClassifyArr(res.Data.AllNodes||[])
+            deleteClassifyItemEmpty(res.Data.AllNodes||[])
             edbClassifyList.value=res.Data.AllNodes||[]
             edbClassifyList.value=res.Data.AllNodes||[]
         }
         }
     })
     })
@@ -60,29 +51,10 @@ function handleConfirmMove(){
     handleClose()
     handleClose()
 }
 }
 
 
-// 通过classifyid 获取当前目录
-function findItemWithIdAndParents(data, targetId) {
-    for (let i = 0; i < data.length; i++) {
-        const item = data[i];
-        if (item.ClassifyId === targetId) {
-            // 找到目标项
-            return [item];
-        } else if (item.Children) {
-            // 在子项中继续查找
-            const foundInChild = findItemWithIdAndParents(item.Children, targetId);
-            if (foundInChild) {
-                // 如果在子项中找到目标项,将当前项添加到父级数组中
-                return [item, ...foundInChild];
-            }
-        }
-    }
-    return null; // 如果未找到目标项,返回null
-}
-
 function getSelectClassifyOpt(id){
 function getSelectClassifyOpt(id){
     let arr=[]
     let arr=[]
     arr=findItemWithIdAndParents(edbClassifyList.value,id)
     arr=findItemWithIdAndParents(edbClassifyList.value,id)
-    if(arr.length===0){
+    if(arr?.length===0){
         classify.value=''
         classify.value=''
     }
     }
 
 

+ 28 - 0
src/views/dataEDB/util/util.js

@@ -0,0 +1,28 @@
+// 通过classifyid 获取当前目录
+export function findItemWithIdAndParents(data, targetId) {
+    for (let i = 0; i < data.length; i++) {
+        const item = data[i];
+        if (item.ClassifyId === targetId) {
+            // 找到目标项
+            return [item];
+        } else if (item.Children) {
+            // 在子项中继续查找
+            const foundInChild = findItemWithIdAndParents(item.Children, targetId);
+            if (foundInChild) {
+                // 如果在子项中找到目标项,将当前项添加到父级数组中
+                return [item, ...foundInChild];
+            }
+        }
+    }
+    return null; // 如果未找到目标项,返回null
+}
+
+//去除数组中的children为空数组情况
+export function deleteClassifyItemEmpty(arr){
+    arr.length&&arr.forEach(item=>{
+        item.Children.length&&deleteClassifyItemEmpty(item.Children)
+        if(!item.Children.length){
+            delete item.Children
+        }
+    })
+}