diff --git a/src/views/main_web/workspace/components/file-item.vue b/src/views/main_web/workspace/components/file-item.vue index 947e686d..2bc34450 100644 --- a/src/views/main_web/workspace/components/file-item.vue +++ b/src/views/main_web/workspace/components/file-item.vue @@ -15,14 +15,14 @@ :class="`${file.extension}-mid ${ fileIsLoading || (isInWorkFolder && otherUserIsWorking) || showDownloadMask ? 'toumin' : '' }`" - @contextmenu.prevent.stop="rightShowMenu($event, file, 1)" + @contextmenu.prevent.stop="fileRightBtnClick" />
@@ -41,7 +41,7 @@
@@ -129,6 +129,17 @@ + +
+
    +
  • 打开
  • +
  • 打开
  • +
  • 创建文件副本
  • +
+
+
@@ -229,7 +240,10 @@ export default { WORKING, NOT_WORKING, DOWNLOADING, UPLOADING, - imgExtensionList + imgExtensionList, + isFileRightMenuVisible: false,//控制文件右键菜单显示与隐藏 + fileRightMenuLeft: 0,//文件右键菜单位置 + fileRightMenuTop: 0, }; }, computed: { @@ -283,7 +297,32 @@ export default { }, methods: { oneOf, + fileRightBtnClick(e) { + this.isFileRightMenuVisible = true; + this.fileRightMenuLeft = e.offsetX; + this.fileRightMenuTop = e.offsetY; + }, + closeFileRightMenu() { + this.isFileRightMenuVisible = false; + }, + openfileBtnClick() { + this.isFileRightMenuVisible = false; + this.$emit('openfileBtnClick', this.file); + }, + copyFileBtnClick() { + this.isFileRightMenuVisible = false; + this.$emit('copyFileBtnClick', this.file); + } }, + watch: { + isFileRightMenuVisible(value) { + if (value) { + document.body.addEventListener("click", this.closeFileRightMenu); + } else { + document.body.removeEventListener("click", this.closeFileRightMenu); + } + }, + } }; @@ -318,4 +357,16 @@ export default { .have-modified-icon { background-color: #cccdd7; } + .fileRightMenu li { + white-space: nowrap; + } + .function-disabled { + color: rgb(216,216,216); + } + .function-disabled:hover { + cursor: not-allowed; + background-color: #ecf5ff; + color:rgb(167,168,183); + } + \ No newline at end of file diff --git a/src/views/main_web/workspace/service.js b/src/views/main_web/workspace/service.js index e7f9baa8..eebe2465 100644 --- a/src/views/main_web/workspace/service.js +++ b/src/views/main_web/workspace/service.js @@ -78,4 +78,11 @@ export async function changeFileWorkStatus(fileId, workStatus) { export async function queryFileExchange(currentTemplateId, currentNodeId, nestedNodeId){ const res = await fetchApi('template/queryFileExchange', { currentTemplateId, currentNodeId, nestedNodeId }); return wrapErrorHint(res); +} +/** + * addFile 复制文件副本 + */ +export async function addFile(file) { + const res = await fetchApi('file/addFile', file); + return res; } \ No newline at end of file diff --git a/src/views/main_web/workspace/workspace.new.vue b/src/views/main_web/workspace/workspace.new.vue index 77ac55e8..c10c3154 100644 --- a/src/views/main_web/workspace/workspace.new.vue +++ b/src/views/main_web/workspace/workspace.new.vue @@ -98,6 +98,8 @@ :currentFolder="currentFolder" :commitFile="commitFile" @dblclick.native="fileClick(file)" + @openfileBtnClick="fileClick(file)" + @copyFileBtnClick="copyWorkFileBtnClick(file)" :localFileHashMap="localFileHashMap" :loadingState="localFileLoadStateMap[file.id]" /> @@ -1046,6 +1048,31 @@ export default { this.neibianju = "neibianju"; this.closepageH = ""; }, + /** + * 点击了复制文件副本的按钮 + */ + async copyWorkFileBtnClick(targetFile) { + const copyFile = {...targetFile}; + let nowNum = 1, tempName = ""; + + //先添加 - 副本字样 再判断是否重复 如果重复就修改版本信息 + tempName = targetFile.archName + ' - 副本'; + let isExists = this.workFileList.find(file => file.archName === tempName); + while(isExists) { + // - 副本存在 -》修改为 -副本(x) 的字样 + tempName = targetFile.archName + ` - 副本(${ ++ nowNum})`; + isExists = this.workFileList.find(file => file.archName === tempName); + } + copyFile.archName = tempName; + copyFile.modifyUserId = sessionStorage.userId; + copyFile.modifyTime = new Date(); + copyFile.createUserId = sessionStorage.userId; + copyFile.createTime = new Date(); + console.log(copyFile); + + const addFileRes = await services.addFile(copyFile); + this.fetchFolderFiles(); + }, }, watch: { rightMenuvisible(value) {