From 1235fcb78d7a45062874fb57980625f0e4874186 Mon Sep 17 00:00:00 2001 From: jmal Date: Mon, 2 Mar 2020 10:36:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E6=89=BE=E4=B8=8B?= =?UTF-8?q?=E7=BA=A7=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/upload-api.js | 27 +++++- src/components/Icon/IconFile.vue | 2 +- src/icons/svg/open-folder.svg | 1 + src/layout/index.vue | 2 + src/views/home/index.vue | 156 ++++++++++++++++++++++++++++++- 5 files changed, 180 insertions(+), 8 deletions(-) create mode 100644 src/icons/svg/open-folder.svg diff --git a/src/api/upload-api.js b/src/api/upload-api.js index 9191503..ed67a21 100644 --- a/src/api/upload-api.js +++ b/src/api/upload-api.js @@ -74,13 +74,36 @@ export default { params }) }, - // 搜索文件🔍 + // 搜索文件🔍-打开目录 searchFileAndOpenDir: function(params) { return request({ url: 'search-file-open', method: 'get', params }) + }, + // 查找下级目录 + queryFileTree: function(params) { + return request({ + url: 'query-file-tree', + method: 'get', + params + }) + }, + // 移动文件/文件夹 + move: function(params) { + return request({ + url: 'move', + method: 'get', + params + }) + }, + // 复制文件/文件夹 + copy: function(params) { + return request({ + url: 'copy', + method: 'get', + params + }) } - } diff --git a/src/components/Icon/IconFile.vue b/src/components/Icon/IconFile.vue index a706b95..a1368fd 100644 --- a/src/components/Icon/IconFile.vue +++ b/src/components/Icon/IconFile.vue @@ -6,7 +6,7 @@ - + diff --git a/src/icons/svg/open-folder.svg b/src/icons/svg/open-folder.svg new file mode 100644 index 0000000..c346bbd --- /dev/null +++ b/src/icons/svg/open-folder.svg @@ -0,0 +1 @@ + diff --git a/src/layout/index.vue b/src/layout/index.vue index 990d151..3876e65 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -50,8 +50,10 @@ export default { mounted() { if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) { this.isShow = false + window.pc = false } else { this.isShow = true + window.pc = true } }, methods: { diff --git a/src/views/home/index.vue b/src/views/home/index.vue index 8e8ae01..f0fb6cb 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -56,6 +56,7 @@ +
    @@ -79,6 +80,34 @@
+ + + + + + + 1){ + fileId = node.data.id + } + + api.queryFileTree({ + userId: this.$store.state.user.userId, + username: this.$store.state.user.name, + fileId: fileId, + }).then(res => { + const nextNodes = res.data + return resolve(nextNodes) + }) + }, + // 点击文件树 + treeNodeClick(row,node,event) { + this.selectTreeNode = row + this.selectTreeNode.showName = ' "' + row.name + '"' + }, + // 节点被展开时触发 + treeNodeExpand(row,node,event) { + }, + // 移动文件 + moveFileTree() { + this.$refs.directoryTree.append(this.rowContextData,this.selectTreeNode.id) + // this.dialogMoveOrCopyVisible = false + }, + // 复制文件 + copyFileTree() { + // this.dialogMoveOrCopyVisible = false + console.log(this.selectTreeNode) + this.$refs.directoryTree.append(this.rowContextData,this.selectTreeNode.id) + api.copy({ + userId: this.$store.state.user.userId, + username: this.$store.state.user.username, + from: this.rowContextData.id, + to: this.selectTreeNode.id + }).then(res => { + console.log(res) + }) + }, + renderContent(h, { node, data, store }) { + if(node.expanded){ + return ( + + + {node.label} + + + ); + }else{ + return ( + + + {node.label} + + + ); + } + }, downloadFile() { let totalSize = 0 this.selectRowData.forEach(item => { @@ -958,11 +1073,11 @@ export default { }) if (totalSize > 0) { var fileIds = []; - if (this.menusIsMultiple) { - this.selectRowData.forEach(value => { + if (this.menusIsMultiple) { + this.selectRowData.forEach(value => { fileIds.push(value.id) - }) - } else { + }) + } else { fileIds.push(this.rowContextData.id) } window.open(process.env.VUE_APP_BASE_FILE_API + 'download?jmal-token=' + this.$store.state.user.token + '&fileIds=' + fileIds, '_self') @@ -1265,5 +1380,36 @@ export default { margin-top: 50px; } + /deep/ .el-dialog__header { + padding: 20px 20px 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + /deep/ .el-dialog__title { + font-size: 16px; + } + /deep/ .el-dialog__body { + padding: 0 20px 0 20px; + } + /deep/ .el-tree-node__content { + height: 35px; + /*border-bottom: 1px solid #ccc;*/ + position: relative; + } + + /deep/ .custom-tree-node { + flex: 1; + display: flex; + align-items: center; + font-size: 14px; + padding-right: 8px; + } + + /deep/ .el-tree-node.is-expanded>.el-tree-node__children { + max-height: 500px; + overflow: auto; + } +