修改文本编辑器的文件树添加删除功能
This commit is contained in:
parent
089520429e
commit
9d27d24876
@ -228,4 +228,15 @@ export default {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
// 根据path删除文件
|
||||||
|
delFile: function(params) {
|
||||||
|
return request({
|
||||||
|
url: 'delFile',
|
||||||
|
method: 'delete',
|
||||||
|
params,
|
||||||
|
paramsSerializer: function(params) {
|
||||||
|
return qs.stringify(params, { arrayFormat: 'repeat' })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,10 +9,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import $ from 'jquery'
|
||||||
import 'v-contextmenu/dist/index.css'
|
import 'v-contextmenu/dist/index.css'
|
||||||
import { iconClass,suffix } from '@/utils/file-type'
|
import { iconClass,suffix } from '@/utils/file-type'
|
||||||
import 'jquery.fancytree/dist/skin-win8/ui.fancytree.less';
|
import 'jquery.fancytree/dist/skin-win8/ui.fancytree.less';
|
||||||
import {createTree,getNode} from 'jquery.fancytree';
|
import 'jquery.fancytree/dist/modules/jquery.fancytree.edit';
|
||||||
|
import fancytree from 'jquery.fancytree';
|
||||||
|
|
||||||
import api from '@/api/file-api'
|
import api from '@/api/file-api'
|
||||||
export default {
|
export default {
|
||||||
@ -60,7 +62,7 @@
|
|||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
that.rightClicking = false
|
that.rightClicking = false
|
||||||
},200)
|
},200)
|
||||||
this.contextData = getNode(vnode).data
|
this.contextData = fancytree.getNode(vnode).data
|
||||||
// 触发节点的点击事件
|
// 触发节点的点击事件
|
||||||
let evObj = document.createEvent('MouseEvents');
|
let evObj = document.createEvent('MouseEvents');
|
||||||
evObj.initMouseEvent('click',true,true,window,1,12,345,7,220,false,false,true,false,0,null);
|
evObj.initMouseEvent('click',true,true,window,1,12,345,7,220,false,false,true,false,0,null);
|
||||||
@ -81,7 +83,7 @@
|
|||||||
break
|
break
|
||||||
case 'remove':
|
case 'remove':
|
||||||
console.log('remove',this.contextData)
|
console.log('remove',this.contextData)
|
||||||
this.delFile(path)
|
this.delFile(this.contextData.path)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
console.log('default',this.contextData)
|
console.log('default',this.contextData)
|
||||||
@ -89,8 +91,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 删除文件/文件夹
|
// 删除文件/文件夹
|
||||||
delFile(){
|
delFile(path){
|
||||||
|
api.delFile({
|
||||||
|
username: this.$store.state.user.name,
|
||||||
|
path: path
|
||||||
|
}).then(()=>{
|
||||||
|
let node = this.tree.getActiveNode()
|
||||||
|
node.remove()
|
||||||
|
this.$message.success("删除成功!")
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 上级目录
|
// 上级目录
|
||||||
upperLeve(){
|
upperLeve(){
|
||||||
@ -165,7 +174,8 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
initTree(treeData){
|
initTree(treeData){
|
||||||
this.tree = createTree('#dir-tree', {
|
this.tree = fancytree.createTree('#dir-tree', {
|
||||||
|
extensions: ["edit"],
|
||||||
icon: (event,data)=> this.icon(event,data),
|
icon: (event,data)=> this.icon(event,data),
|
||||||
source: this.convert(treeData),
|
source: this.convert(treeData),
|
||||||
lazyLoad: (event,data)=> this.lazyLoad(event,data),
|
lazyLoad: (event,data)=> this.lazyLoad(event,data),
|
||||||
@ -173,7 +183,55 @@
|
|||||||
dblclick: (event,data)=> this.dblclick(event,data),
|
dblclick: (event,data)=> this.dblclick(event,data),
|
||||||
activate: (event,data)=> this.activate(event,data),
|
activate: (event,data)=> this.activate(event,data),
|
||||||
createNode: (event,data)=> this.createNode(event,data),
|
createNode: (event,data)=> this.createNode(event,data),
|
||||||
|
edit: {
|
||||||
|
triggerStart: ["f2", "mac+enter"],
|
||||||
|
beforeEdit: function(event, data){
|
||||||
|
console.log(event.type, data);
|
||||||
|
// Return false to prevent edit mode
|
||||||
|
},
|
||||||
|
edit: function(event, data){
|
||||||
|
console.log(event.type, data);
|
||||||
|
// Editor was opened (available as data.input)
|
||||||
|
},
|
||||||
|
beforeClose: function(event, data){
|
||||||
|
// Return false to prevent cancel/save (data.input is available)
|
||||||
|
console.log(event.type, data);
|
||||||
|
if( data.originalEvent.type === "mousedown" ) {
|
||||||
|
// We could prevent the mouse click from generating a blur event
|
||||||
|
// (which would then again close the editor) and return `false` to keep
|
||||||
|
// the editor open:
|
||||||
|
// data.originalEvent.preventDefault();
|
||||||
|
// return false;
|
||||||
|
// Or go on with closing the editor, but discard any changes:
|
||||||
|
// data.save = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
save: function(event, data){
|
||||||
|
console.log(event.type, data);
|
||||||
|
// Save data.input.val() or return false to keep editor open
|
||||||
|
// Simulate to start a slow ajax request...
|
||||||
|
// setTimeout(function(){
|
||||||
|
// console.log(data.node.span)
|
||||||
|
// $(data.node.span).removeClass("pending");
|
||||||
|
// // Let's pretend the server returned a slightly modified
|
||||||
|
// // title:
|
||||||
|
// data.node.setTitle(data.node.title + "!");
|
||||||
|
// }, 2000);
|
||||||
|
// We return true, so ext-edit will set the current user input
|
||||||
|
// as title
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
close: function(event, data){
|
||||||
|
console.log(event.type, data);
|
||||||
|
// Editor was removed
|
||||||
|
if( data.save ) {
|
||||||
|
// Since we started an async request, mark the node as preliminary
|
||||||
|
// $(data.node.span).addClass("pending");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
console.log(this.tree.getActiveNode(),fancytree._extensions)
|
||||||
},
|
},
|
||||||
icon(event,data) {
|
icon(event,data) {
|
||||||
return { html: this.loadSvg(this.findIconClass(data.node.data)) }
|
return { html: this.loadSvg(this.findIconClass(data.node.data)) }
|
||||||
@ -226,6 +284,7 @@
|
|||||||
},
|
},
|
||||||
click(event, data){
|
click(event, data){
|
||||||
if(!this.rightClicking){
|
if(!this.rightClicking){
|
||||||
|
|
||||||
this.$emit('treeNodeClick',data.node.data)
|
this.$emit('treeNodeClick',data.node.data)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -810,18 +810,26 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onmessage(){
|
onmessage(){
|
||||||
// 订阅系统数据
|
// 订阅消息
|
||||||
console.log("订阅",'/user/queue/sendUser')
|
console.log("订阅",'/user/queue/updateFile')
|
||||||
this.stompClient = ws.stompClient.subscribe('/user/queue/sendUser', (msg) => {
|
this.stompClient = ws.stompClient.subscribe('/user/queue/updateFile', (msg) => {
|
||||||
let fileDoc = JSON.parse(msg.body)
|
let fileDoc = JSON.parse(msg.body)
|
||||||
console.log('/queue/sendUser', fileDoc)
|
console.log('/queue/updateFile', fileDoc)
|
||||||
let index = this.fileList.findIndex(file=>file.id === fileDoc.id)
|
let index = this.fileList.findIndex(file=>file.id === fileDoc.id)
|
||||||
if(index > -1){
|
if(index > -1){
|
||||||
console.log(this.fileList[index])
|
|
||||||
this.fileList[index].size = fileDoc.size
|
this.fileList[index].size = fileDoc.size
|
||||||
this.fileList[index].agoTime = 1
|
this.fileList[index].agoTime = 1
|
||||||
}
|
}
|
||||||
},ws.headers);
|
},ws.headers);
|
||||||
|
console.log("订阅",'/user/queue/deleteFile')
|
||||||
|
this.stompClient = ws.stompClient.subscribe('/user/queue/deleteFile', (msg) => {
|
||||||
|
let fileDoc = JSON.parse(msg.body)
|
||||||
|
console.log('/queue/deleteFile', fileDoc)
|
||||||
|
let index = this.fileList.findIndex(file=>file.id === fileDoc.id)
|
||||||
|
if(index > -1){
|
||||||
|
this.fileList.splice(index,1)
|
||||||
|
}
|
||||||
|
},ws.headers);
|
||||||
},
|
},
|
||||||
load () {
|
load () {
|
||||||
this.getFileList(true)
|
this.getFileList(true)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user