diff --git a/src/components/FancyTree/index.vue b/src/components/FancyTree/index.vue index 68b9f91..05adf16 100644 --- a/src/components/FancyTree/index.vue +++ b/src/components/FancyTree/index.vue @@ -26,7 +26,6 @@ - 搜索 @@ -135,7 +134,7 @@ let input = data.node.span.querySelector('.fancytree-title .fancytree-edit-input') let width = input.style.width.substring(0,input.style.width.length-2) input.style.width = parseInt(width)+50+'px' - if(input.value.length -1 > data.node.data.suffix.length){ + if(input.value && input.value.length -1 > data.node.data.suffix.length){ input.selectionStart = 0 input.selectionEnd = input.value.length - 1 - data.node.data.suffix.length } @@ -246,6 +245,7 @@ username: this.$store.state.user.name, path: data.path }).then(()=>{ + this.$emit('removeFile', data.path) let node = this.tree.getActiveNode() node.remove() this.$message.success("删除成功!") diff --git a/src/components/preview/SimTextPreview.vue b/src/components/preview/SimTextPreview.vue index 32277ad..7c00472 100644 --- a/src/components/preview/SimTextPreview.vue +++ b/src/components/preview/SimTextPreview.vue @@ -76,6 +76,7 @@ @treeNodeClick="treeNodeClick" @onLoadTreePath="onLoadTreePath" @onRename="onRename" + @removeFile="removeFile" > @@ -85,7 +86,7 @@
- + {{item.title}}
{ @@ -479,6 +482,12 @@ onLoadTreePath(path){ this.filePathNav = path }, + removeFile(filepath) { + let findIndex = this.editableTabs.findIndex(editable => editable.name === filepath) + if(findIndex > -1){ + this.editableTabs.splice(findIndex, 1) + } + }, treeNodeClick(row) { if(row.isFolder){ return @@ -519,17 +528,19 @@ copyTitle:row.name, status: undefined, language: this.getEditorLanguage(row.suffix), - name:row.path, - content:res.data.contentText + name:row.path } if(row.isAddTab){ this.editableTabs.push(tab) + this.setEditMap(this.editableTabs.length -1, res.data.contentText) }else{ let thisTabIndex = this.editableTabs.findIndex(tab=> tab.status===undefined) if(thisTabIndex > -1){ this.editableTabs[thisTabIndex] = tab + this.setEditMap(thisTabIndex, res.data.contentText) }else{ this.editableTabs.push(tab) + this.setEditMap(this.editableTabs.length - 1, res.data.contentText) } } this.editableTabsValue = row.path @@ -538,8 +549,19 @@ }) }else{ this.editableTabsValue = row.path + this.clickTab() } }, + setEditMap(index, text) { + this.editableValueMap.set(index, text) + this.$nextTick(()=> { + let ref = 'monacoEditor' + index + this.$refs[ref][0]._setValue(text) + if (!this.$pc && this.dialogWidthPercent < 1) { + this.fullScreen() + } + }) + }, containerResize() { this.loadEditorSize() }, @@ -554,7 +576,9 @@ if(this.$store.state.user.token && this.$store.state.user.userId === fileUserId){ this.options.readOnly = false } - console.log(this.options.readOnly, this.moblie) + if (!this.$pc) { + this.options.readOnly = true + } if(this.options.readOnly || this.moblie){ this.$nextTick(()=> { this.editorWidth += this.contentsWidth @@ -598,9 +622,15 @@ this.isSaveDialogVisible = false this.isShowUpdateBtn = false }, + // 放弃修改 closeTabDialog(){ this.isTabSaveDialogVisible = false + this.editableTabsValue = this.nextActiveName this.editableTabs.splice(this.removeIndex,1) + let modifyingIndex = this.editableTabs.findIndex(editable => editable.status === 'Modifying') + if (modifyingIndex < 0){ + this.isShowUpdateBtn = false + } }, closeDialog() { this.textPreviewVisible = false @@ -610,7 +640,7 @@ this.closeAllTabs() }, change(value,index) { - if(value === this.editableTabs[index].content){ + if(value === this.editableValueMap.get(index)){ if(this.editableTabs[index].copyTitle !== this.editableTabs[index].title){ this.editableTabs[index].title = this.editableTabs[index].copyTitle this.editableTabs[index].status = 'Modified' @@ -759,7 +789,17 @@ } }, changePreviewMode() { + let currentIndex = this.editableTabs.findIndex(editable => editable.name === this.editableTabsValue) + if (currentIndex > -1){ + let ref = 'vditor' + currentIndex + this.$refs[ref][0].setContent(this.editableValueMap.get(currentIndex)) + } this.previewMode = !this.previewMode + this.clickTab() + }, + clickTab() { + this.editorWidth += 0.001 + this.editorHieght += 0.001 }, removeTab(targetName) { let tabs = this.editableTabs; @@ -776,6 +816,7 @@ } }); } + this.nextActiveName = activeName if(this.editableTabs[removeIndex].status !== 'Modifying'){ this.editableTabsValue = activeName; this.editableTabs = tabs.filter(tab => tab.name !== targetName); diff --git a/src/components/preview/VditorPreview.vue b/src/components/preview/VditorPreview.vue index 299bf6f..ffb7d6d 100644 --- a/src/components/preview/VditorPreview.vue +++ b/src/components/preview/VditorPreview.vue @@ -30,10 +30,7 @@ import "vditor/src/assets/scss/index.scss" }, watch: { content(val){ - if(!this.vditorPreviewShow){ - this.vditorPreviewInit(val) - this.vditorPreviewShow = true - } + this.setContent(val) } }, mounted() { @@ -43,6 +40,12 @@ import "vditor/src/assets/scss/index.scss" } }, methods:{ + setContent(val) { + if(!this.vditorPreviewShow){ + this.vditorPreviewInit(val) + this.vditorPreviewShow = true + } + }, vditorPreviewInit(content){ const that = this vditor.preview(document.getElementById('vditor'),