|
@@ -113,77 +113,86 @@ const deleteNode = item => {
|
|
|
}
|
|
|
}
|
|
|
const onContextMenu = (item, event) => {
|
|
|
- if(!item.id){
|
|
|
- return
|
|
|
- }
|
|
|
- const menus = [{
|
|
|
- label: $i('message.update'),
|
|
|
- icon: 'update',
|
|
|
- divided: true,
|
|
|
- onClick: () => {
|
|
|
- loading.value = true
|
|
|
- dataResourceDialogTitle.value = $i('message.updateTips', props.title)
|
|
|
- saveButtonText.value = $i('message.update')
|
|
|
- dataResourceDialogVisible.value = true
|
|
|
- bus.status('message.getDetail', `${props.title}「${getFullPath(item)}」`)
|
|
|
- request.sendGet(`/resource/file/${item.id}`).success(data => dataResourceObj.value = data).end(() => {
|
|
|
- loading.value = false
|
|
|
+ const menus = []
|
|
|
+ if(item.id){
|
|
|
+ [{
|
|
|
+ label: $i('message.update'),
|
|
|
+ icon: 'update',
|
|
|
+ divided: true,
|
|
|
+ onClick: () => {
|
|
|
+ loading.value = true
|
|
|
+ dataResourceDialogTitle.value = $i('message.updateTips', props.title)
|
|
|
+ saveButtonText.value = $i('message.update')
|
|
|
+ dataResourceDialogVisible.value = true
|
|
|
+ bus.status('message.getDetail', `${props.title}「${getFullPath(item)}」`)
|
|
|
+ request.sendGet(`/resource/file/${item.id}`).success(data => dataResourceObj.value = data).end(() => {
|
|
|
+ loading.value = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },{
|
|
|
+ label: $i('resource.contextmenu.delete'),
|
|
|
+ icon: 'delete',
|
|
|
+ onClick: () => {
|
|
|
+ const msg = `${props.title}「${getFullPath(item)}」`
|
|
|
+ proxy.$confirm($i('message.deleteTips', props.title), $i('message.deleteConfirm', msg), () => {
|
|
|
+ request.send('/resource/delete', { id: item.id }).success(ret => {
|
|
|
+ bus.status(ret ? 'message.deleteSuccess': 'message.deleteFailed', ret, msg)
|
|
|
+ if(!ret) {
|
|
|
+ proxy.$alert(ret ? 'message.deleteSuccess': 'message.deleteFailed', msg)
|
|
|
+ }else{
|
|
|
+ deleteNode(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ label: $i('message.copy'),
|
|
|
+ icon: 'copy',
|
|
|
+ divided: true,
|
|
|
+ onClick: () => {
|
|
|
+ request.send(`/resource/file/${item.id}`).success(res => {
|
|
|
+ res.id = undefined
|
|
|
+ res.name = res.name + `(${$i('message.copy')})`
|
|
|
+ res.key = res.key + '_copy'
|
|
|
+ doSaveObj(res, 'datasource.copy',`${props.title}「${getFullPath(res)}」`)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }].forEach(m => menus.push(m))
|
|
|
+ if(item.lock === constants.LOCKED){
|
|
|
+ menus.push({
|
|
|
+ label: $i('resource.contextmenu.unlock'),
|
|
|
+ icon: 'unlock',
|
|
|
+ onClick: () => request.sendPost('/resource/unlock', { id: item.id}).success(ret => {
|
|
|
+ bus.status(ret ? 'message.unlockSuccess': 'message.unlockFailed', ret, `${props.title}「${getFullPath(item)}」`)
|
|
|
+ if(ret) {
|
|
|
+ item.lock = constants.UNLOCK
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
})
|
|
|
- }
|
|
|
- },{
|
|
|
- label: $i('resource.contextmenu.delete'),
|
|
|
- icon: 'delete',
|
|
|
- onClick: () => {
|
|
|
- const msg = `${props.title}「${getFullPath(item)}」`
|
|
|
- proxy.$confirm($i('message.deleteTips', props.title), $i('message.deleteConfirm', msg), () => {
|
|
|
- request.send('/resource/delete', { id: item.id }).success(ret => {
|
|
|
- bus.status(ret ? 'message.deleteSuccess': 'message.deleteFailed', ret, msg)
|
|
|
- if(!ret) {
|
|
|
- proxy.$alert(ret ? 'message.deleteSuccess': 'message.deleteFailed', msg)
|
|
|
- }else{
|
|
|
- deleteNode(item)
|
|
|
+ } else {
|
|
|
+ menus.push({
|
|
|
+ label: $i('resource.contextmenu.lock'),
|
|
|
+ icon: 'lock',
|
|
|
+ onClick: () => request.sendPost('/resource/lock', { id: item.id}).success(ret => {
|
|
|
+ bus.status(ret ? 'message.lockSuccess': 'message.lockFailed', ret, `${props.title}「${getFullPath(item)}」`)
|
|
|
+ if(ret) {
|
|
|
+ item.lock = constants.LOCKED
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
- }, {
|
|
|
- label: $i('message.copy'),
|
|
|
- icon: 'copy',
|
|
|
- divided: true,
|
|
|
- onClick: () => {
|
|
|
- request.send(`/resource/file/${item.id}`).success(res => {
|
|
|
- res.id = undefined
|
|
|
- res.name = res.name + `(${$i('message.copy')})`
|
|
|
- res.key = res.key + '_copy'
|
|
|
- doSaveObj(res, 'datasource.copy',`${props.title}「${getFullPath(res)}」`)
|
|
|
+ }
|
|
|
+ constants.PLUGINS.forEach(it => {
|
|
|
+ if(it.contextmenu && typeof it.contextmenu === 'function'){
|
|
|
+ const pMenus = it.contextmenu({
|
|
|
+ ...item,
|
|
|
+ menuType: 'datasource'
|
|
|
})
|
|
|
+ pMenus && pMenus.length && pMenus.forEach(m => menus.push(m))
|
|
|
}
|
|
|
- }]
|
|
|
- if(item.lock === constants.LOCKED){
|
|
|
- menus.push({
|
|
|
- label: $i('resource.contextmenu.unlock'),
|
|
|
- icon: 'unlock',
|
|
|
- onClick: () => request.sendPost('/resource/unlock', { id: item.id}).success(ret => {
|
|
|
- bus.status(ret ? 'message.unlockSuccess': 'message.unlockFailed', ret, `${props.title}「${getFullPath(item)}」`)
|
|
|
- if(ret) {
|
|
|
- item.lock = constants.UNLOCK
|
|
|
- }
|
|
|
-
|
|
|
- })
|
|
|
- })
|
|
|
- } else {
|
|
|
- menus.push({
|
|
|
- label: $i('resource.contextmenu.lock'),
|
|
|
- icon: 'lock',
|
|
|
- onClick: () => request.sendPost('/resource/lock', { id: item.id}).success(ret => {
|
|
|
- bus.status(ret ? 'message.lockSuccess': 'message.lockFailed', ret, `${props.title}「${getFullPath(item)}」`)
|
|
|
- if(ret) {
|
|
|
- item.lock = constants.LOCKED
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
- proxy.$contextmenu({ menus, event})
|
|
|
+ })
|
|
|
+ menus.length && proxy.$contextmenu({ menus, event})
|
|
|
}
|
|
|
</script>
|
|
|
<style scoped>
|