diff --git a/web/src/lang/en_us.js b/web/src/lang/en_us.js index 1fe01985..9b257f11 100644 --- a/web/src/lang/en_us.js +++ b/web/src/lang/en_us.js @@ -282,7 +282,8 @@ export default { tip: 'Tip', yes: 'Yes', no: 'No', - exportError: 'Export failed' + exportError: 'Export failed', + dragTip: 'Release here to import the file' }, mouseAction: { tip1: diff --git a/web/src/lang/zh_cn.js b/web/src/lang/zh_cn.js index 1d739f80..16b377cc 100644 --- a/web/src/lang/zh_cn.js +++ b/web/src/lang/zh_cn.js @@ -278,7 +278,8 @@ export default { tip: '提示', yes: '是', no: '否', - exportError: '导出失败' + exportError: '导出失败', + dragTip: '在此释放以导入该文件' }, mouseAction: { tip1: '当前:左键拖动画布,右键框选节点', diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue index a68b7790..dd85ec00 100644 --- a/web/src/pages/Edit/components/Edit.vue +++ b/web/src/pages/Edit/components/Edit.vue @@ -1,5 +1,11 @@ @@ -148,7 +163,8 @@ export default { mindMap: null, mindMapData: null, prevImg: '', - storeConfigTimer: null + storeConfigTimer: null, + showDragMask: false } }, computed: { @@ -779,6 +795,20 @@ export default { : '' }) } + }, + + // 拖拽文件到页面导入 + onDragenter() { + this.showDragMask = true + }, + onDragleave() { + this.showDragMask = false + }, + onDrop(e) { + this.showDragMask = false + const dt = e.dataTransfer + const file = dt.files && dt.files[0] + this.$bus.$emit('importFile', file) } } } @@ -792,6 +822,24 @@ export default { top: 0; bottom: 0; + .dragMask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.8); + display: flex; + align-items: center; + justify-content: center; + z-index: 3999; + + .dragTip { + pointer-events: none; + font-weight: bold; + } + } + .mindMapContainer { position: absolute; left: 0px; diff --git a/web/src/pages/Edit/components/Import.vue b/web/src/pages/Edit/components/Import.vue index 4b97fd95..2d5d838d 100644 --- a/web/src/pages/Edit/components/Import.vue +++ b/web/src/pages/Edit/components/Import.vue @@ -63,10 +63,12 @@ export default { created() { this.$bus.$on('showImport', this.handleShowImport) this.$bus.$on('handle_file_url', this.handleFileURL) + this.$bus.$on('importFile', this.handleImportFile) }, beforeDestroy() { this.$bus.$off('showImport', this.handleShowImport) this.$bus.$off('handle_file_url', this.handleFileURL) + this.$bus.$off('importFile', this.handleImportFile) }, methods: { ...mapMutations(['setActiveSidebar']), @@ -286,6 +288,16 @@ export default { this.$message.error(this.$t('import.fileParsingFailed')) } } + }, + + // 导入指定文件 + handleImportFile(file) { + this.onChange({ + raw: file, + name: file.name + }) + if (this.fileList.length <= 0) return + this.confirm() } } }