8
0
ZaiZai 1 год назад
Родитель
Сommit
b88bb33582
2 измененных файлов с 77 добавлено и 60 удалено
  1. 24 0
      src/api/modules/project/tree.js
  2. 53 60
      src/views/project/tree/drawer-temp.vue

+ 24 - 0
src/api/modules/project/tree.js

@@ -9,4 +9,28 @@ export default {
             params: form,
         })
     },
+    //树节点懒加载
+    async lazyTree(form) {
+        return HcApi({
+            url: '/api/blade-manager/archiveTree/lazy-tree',
+            method: 'get',
+            params: form,
+        })
+    },
+    //初始化根节点
+    async treeInit(form) {
+        return HcApi({
+            url: '/api/blade-manager/archiveTree/init',
+            method: 'post',
+            params: form,
+        })
+    },
+    //全加载树形结构
+    async allTree(form) {
+        return HcApi({
+            url: '/api/blade-manager/archiveTree/tree',
+            method: 'get',
+            params: form,
+        })
+    },
 }

+ 53 - 60
src/views/project/tree/drawer-temp.vue

@@ -8,21 +8,21 @@
                     </template>
                     <template v-if="isTreeMode === 1">
                         <hc-lazy-tree
-                            v-if="isShow" :root-menu="treeMenuRoot" is-load-menu :h-props="treeProps" tree-key="id"
-                            @load-menu="treeLazyMenu" @load="treeLoadNode" @node-tap="treeNodeTap" @menu-tap="treeMenuClick"
+                            v-if="isShow" ref="treeRef1" is-load-menu :h-props="treeProps" tree-key="id"
+                            @load-menu="treeMenu" @load="treeLoadNode" @node-tap="treeNodeTap" @menu-tap="treeMenuClick"
                         >
                             <template #name="{ data }">
-                                <span class="text-16px font-400">{{ data.name }}</span>
+                                <span class="text-16px font-400">{{ data.title }}</span>
                             </template>
                         </hc-lazy-tree>
                     </template>
                     <template v-if="isTreeMode === 2">
                         <hc-data-tree
-                            ref="treeRef" :root-menu="treeMenuRoot" is-load-menu :h-props="treeProps" tree-key="id" :datas="treeData"
-                            @load-menu="treeDataMenu" @node-tap="treeNodeTap" @menu-tap="treeMenuClick"
+                            ref="treeRef2" is-load-menu :h-props="treeProps" tree-key="id" :datas="treeData"
+                            @load-menu="treeMenu" @node-tap="treeNodeTap" @menu-tap="treeMenuClick"
                         >
                             <template #name="{ data }">
-                                <span class="text-16px font-400">{{ data.name }}</span>
+                                <span class="text-16px font-400">{{ data.title }}</span>
                             </template>
                         </hc-data-tree>
                     </template>
@@ -36,10 +36,9 @@
 </template>
 
 <script setup>
-import { getArrValue, isNullES } from 'js-fast-way'
 import { ref, watch } from 'vue'
-import { useAppStore } from '~src/store'
-import mainApi from '~api/exctab/exceltab'
+import { getArrValue, isNullES } from 'js-fast-way'
+import mainApi from '~api/project/tree'
 
 const props = defineProps({
     data: {
@@ -50,7 +49,6 @@ const props = defineProps({
 
 //事件
 const emit = defineEmits(['close'])
-const store = useAppStore()
 
 //双向绑定
 const isShow = defineModel('modelValue', {
@@ -82,63 +80,29 @@ const searchTreeNameClick = async () => {
     } else {
         isTreeMode.value = 2
         await getTreeAllData()
-        treeRef.value?.treeRef?.filter(searchTreeName.value)
+        treeRef2.value?.treeRef?.filter(searchTreeName.value)
     }
 }
 
 //树配置
-const treeRef = ref(null)
+const treeRef1 = ref(null)
+const treeRef2 = ref(null)
 const treeProps = {
-    label: 'name',
+    label: 'title',
     children: 'children',
-    isLeaf: (item) => {
-        return !item.hasChildren
-    },
+    isLeaf: 'hasChildren',
 }
 
-//树菜单根节点
-const treeMenuRoot = [
-    { icon: 'add-circle', label: '新增', key: 'add' },
-    { icon: 'delete-bin', label: '删除', key: 'del' },
-]
-
 //懒加载树的菜单
-const treeLazyMenu = ({ item, level }, resolve) => {
+const treeMenu = ({ level }, resolve) => {
     let newMenu = []
-    if (item.fileType !== 3) {
-        newMenu.push({ icon: 'add-circle', label: '新增', key: 'add' })
-    }
-    if (item.fileType !== 1) {
-        newMenu.push({ icon: 'draft', label: '编辑', key: 'edit' })
-    }
     if (level !== 1) {
-        newMenu.push({ icon: 'sort-asc', label: '排序', key: 'sort' })
-    }
-    if (item.fileType !== 3) {
-        newMenu.push({ icon: 'file-upload', label: '上传', key: 'upload' })
-    }
-    newMenu.push({ icon: 'delete-bin', label: '删除', key: 'del' })
-    resolve(newMenu)
-}
-
-
-//全加载树的菜单
-const treeDataMenu = ({ node, item, level }, resolve) => {
-    const { isLeaf } = node
-    let newMenu = []
-    if (item.fileType !== 3) {
         newMenu.push({ icon: 'add-circle', label: '新增', key: 'add' })
-    }
-    if (item.fileType !== 1) {
         newMenu.push({ icon: 'draft', label: '编辑', key: 'edit' })
+        newMenu.push({ icon: 'collapse-vertical', label: '排序', key: 'sort' })
+        newMenu.push({ icon: 'delete-bin', label: '删除', key: 'del' })
     }
-    if (isLeaf) {
-        newMenu.push({ icon: 'sort-asc', label: '排序', key: 'sort' })
-    }
-    if (level !== 1) {
-        newMenu.push({ icon: 'file-upload', label: '上传', key: 'upload' })
-    }
-    newMenu.push({ icon: 'delete-bin', label: '删除', key: 'del' })
+    newMenu.push({ icon: 'refresh', label: '同步', key: 'sync' })
     resolve(newMenu)
 }
 
@@ -159,9 +123,8 @@ const pseudoRefresh = () => {
 //全加载树
 const treeData = ref([])
 const getTreeAllData = async () => {
-    const { data } = await mainApi.tabLazyTreeAll({
-        modeId: dataInfo.value.id,
-        name: '',
+    const { data } = await mainApi.allTree({
+        projectId: dataInfo.value.id,
     })
     treeData.value = getArrValue(data)
 }
@@ -169,11 +132,41 @@ const getTreeAllData = async () => {
 //懒加载树
 const treeLoadNode = async ({ item, level }, resolve) => {
     const parentId = level === 0 ? 0 : item.id
-    const { data } = await mainApi.tabLazyTree({
-        parentId: parentId,
-        modeId: dataInfo.value.id,
+    if (level === 0) {
+        const arr = await lazyNodeTree(parentId)
+        if (arr.length) {
+            resolve(arr)
+        } else {
+            resolve(await archiveTreeInit())
+        }
+    } else {
+        resolve(await lazyNodeTree(parentId))
+    }
+}
+
+//懒加载树接口
+const lazyNodeTree = async (id) => {
+    const { data } = await mainApi.lazyTree({
+        parentId: id,
+        projectId: dataInfo.value.id,
     })
-    resolve(getArrValue(data))
+    const res = getArrValue(data)
+    for (let i = 0; i < res.length; i++) {
+        res[i].hasChildren = !res[i].hasChildren
+    }
+    return res
+}
+
+//初始化根节点
+const archiveTreeInit = async () => {
+    const { data } = await mainApi.treeInit({
+        projectId: dataInfo.value.id,
+    })
+    const res = getArrValue(data)
+    for (let i = 0; i < res.length; i++) {
+        res[i].hasChildren = !res[i].hasChildren
+    }
+    return res
 }
 
 //树节点被点击