Quellcode durchsuchen

进入文件夹功能 兼容搜索功能

任一存 vor 2 Jahren
Ursprung
Commit
df394449d3

+ 2 - 2
packages/qjkankan-editor/src/api/index.js

@@ -522,7 +522,6 @@ export function editMaterial(data, ok, no) {
 /**
  * 文件夹相关
  */
-
 function folderTreeSortRoutine(folderList) {
   if (folderList.children) {
     folderList.children.sort((a, b) => {
@@ -566,8 +565,9 @@ export function renameFolder(data, ok, no) {
 }
 
 // 移动素材或文件夹到一个文件夹
-export function moveToFolder(list, targetId) {
+export function moveToFolder(list, targetId, ancestors) {
   const param = {
+    ancestors,
     dirIds: list.filter((item) => {
       return item.type === 'dir'
     }).map((item) => {

+ 24 - 0
packages/qjkankan-editor/src/utils/other.js

@@ -209,4 +209,28 @@ export function postOrderTraversal(root, routine) {
     }
   }
   routine(root)
+}
+
+export function nodeIdList2nodeInfoListByNodeTree(nodeIdList, nodeTree) {
+  console.assert(nodeIdList && nodeTree && nodeTree.id && nodeTree.name, 'nodeIdList2nodeInfoListByNodeTree: invalid param!')
+  if (nodeIdList.length === 0) {
+    return null
+  }
+  console.assert(nodeTree.id === nodeIdList[0], 'nodeIdList2nodeInfoListByNodeTree: 不可能的任务!')
+  let ret = [
+    {
+      id: nodeTree.id,
+      name: nodeTree.name,
+    }
+  ]
+  if (nodeIdList[1] || nodeIdList[1] === 0) {
+    console.assert(nodeTree.children && nodeTree.children.length > 0, 'nodeIdList2nodeInfoListByNodeTree: 不可能的任务2!')
+    const nextLevelRoot = nodeTree.children.find((item) => {
+      return item.id === nodeIdList[1]
+    })
+    console.assert(nextLevelRoot, 'nodeIdList2nodeInfoListByNodeTree: invalid param 2!')
+    ret = ret.concat(nodeIdList2nodeInfoListByNodeTree(nodeIdList.slice(1, nodeIdList.length), nextLevelRoot))
+  }
+
+  return ret
 }

+ 2 - 2
packages/qjkankan-editor/src/views/material/audio/index.vue

@@ -159,7 +159,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.vName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
                 <!-- 素材名称 -->
@@ -168,7 +168,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
               </div>

+ 33 - 7
packages/qjkankan-editor/src/views/material/folderMixinFactory.js

@@ -1,7 +1,7 @@
 import CreateFolder from "./popup/CreateFolder";
 import RenameFolder from "./popup/RenameFolder";
 import MoveFolder from "./popup/MoveFolder";
-
+import { nodeIdList2nodeInfoListByNodeTree } from "@/utils/other.js";
 import {
   getMaterialList,
   getFolderTree,
@@ -79,6 +79,9 @@ export default function(materialType) {
         this.isShowNewFolder = false
         createFolderApi(
           {
+            ancestors: this.folderPath.map((item) => {
+              return item.id
+            }).join(','),
             name: v,
             parentId: this.currentFolderId,
             type: materialType,
@@ -157,7 +160,10 @@ export default function(materialType) {
         })
       },
       onSubmitMoveFolder(targetFolderId) {
-        moveToFolder(this.selectedList, targetFolderId).then(() => {
+        const ancestors = this.folderPath.map((item) => {
+          return item.id
+        }).join(',')
+        moveToFolder(this.selectedList, targetFolderId, ancestors).then(() => {
           this.$msg.success(this.$i18n.t('gather.success'))
           this.isShowMoveFolder = false
           this.refreshListDebounced()
@@ -190,14 +196,34 @@ export default function(materialType) {
         this.folderPath = this.folderPath.slice(0, idx + 1)
         this.selectedList = []
       },
+
       onClickFolder(folder) {
-        this.folderPath.push({
-          name: folder.name,
-          id: folder.id,
+        getFolderTree({
+          type: materialType,
+        }).then((res) => {
+          this.folderTree = res.data
+          const targetPathIdList = folder.ancestors.split(',').map((item) => {
+            return Number(item)
+          })
+          targetPathIdList.push(folder.id)
+          this.folderPath = nodeIdList2nodeInfoListByNodeTree(targetPathIdList, this.folderTree)
+          this.searchKey = ''
+          this.selectedList = []
         })
-        this.searchKey = ''
-        this.selectedList = []
       },
+      onClickParentFolder(folder) {
+        getFolderTree({
+          type: materialType,
+        }).then((res) => {
+          this.folderTree = res.data
+          const targetPathIdList = folder.ancestors.split(',').map((item) => {
+            return Number(item)
+          })
+          this.folderPath = nodeIdList2nodeInfoListByNodeTree(targetPathIdList, this.folderTree)
+          this.searchKey = ''
+          this.selectedList = []
+        })
+      }
     }
   }
 }

+ 3 - 2
packages/qjkankan-editor/src/views/material/image/index.vue

@@ -111,6 +111,7 @@
           </div>
 
 
+
           <!-- 文字型单元格 -->
           <div
             v-else
@@ -152,7 +153,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
                 <!-- 素材名称 -->
@@ -161,7 +162,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
               </div>

+ 2 - 2
packages/qjkankan-editor/src/views/material/pano/index.vue

@@ -154,7 +154,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
                 <!-- 素材名称 -->
@@ -163,7 +163,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
               </div>

+ 2 - 2
packages/qjkankan-editor/src/views/material/video/index.vue

@@ -159,7 +159,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
                 <!-- 素材名称 -->
@@ -168,7 +168,7 @@
                     {{ itemData || "-" }}
                   </div>
                   <div class="parent-name-wrap">
-                    目录 <span class="parent-name">{{lineData.dirName}}</span>
+                    目录 <span class="parent-name" @click="onClickParentFolder(lineData)">{{lineData.dirName}}</span>
                   </div>
                 </div>
               </div>