|
|
@@ -27,7 +27,7 @@ |
|
|
|
<collapse-unit |
|
|
|
title="正在进行的项目" |
|
|
|
:list="aliveProjectList" |
|
|
|
v-model="selectedProjectId" |
|
|
|
v-model="selectedProject" |
|
|
|
itemKey="id" |
|
|
|
itemLabel="projName" |
|
|
|
style="max-height: 45%" |
|
|
@@ -35,7 +35,7 @@ |
|
|
|
<collapse-unit |
|
|
|
title="被删除的项目" |
|
|
|
:list="removedProjectList" |
|
|
|
v-model="selectedProjectId" |
|
|
|
v-model="selectedProject" |
|
|
|
itemKey="id" |
|
|
|
itemLabel="projName" |
|
|
|
style="max-height: 45%" |
|
|
@@ -75,11 +75,11 @@ |
|
|
|
class="bottom-button" |
|
|
|
type="primary" |
|
|
|
:disabled="!canShowButton" |
|
|
|
>放回原处</el-button> |
|
|
|
@click.stop="selectedProject.deleted ? copyFiles() : recoverFiles()" |
|
|
|
>{{selectedProject.deleted ? '拷贝转移至' : '放回原处'}}</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script> |
|
|
@@ -88,7 +88,8 @@ import AppHeader from "@/components/app-header/app-header.vue"; |
|
|
|
import CollapseUnit from "./components/collapse-unit.vue"; |
|
|
|
import ItemList from "./components/item-list"; |
|
|
|
import { VirtualFolder } from "../workspace/helper"; |
|
|
|
import { firstCharToLowerCase } from "@/utils/tool"; |
|
|
|
import { firstCharToLowerCase, notify } from "@/utils/tool"; |
|
|
|
import { wrapErrorHint } from '@/utils/request'; |
|
|
|
export default { |
|
|
|
components: { AppHeader, /* SearchBar, */ CollapseUnit, ItemList }, |
|
|
|
mounted() { |
|
|
@@ -101,15 +102,15 @@ export default { |
|
|
|
// -------------------------------------- |
|
|
|
aliveProjectList: [], |
|
|
|
removedProjectList: [], |
|
|
|
selectedProjectId: undefined, |
|
|
|
selectedProject: {}, |
|
|
|
rightPanelItemList: [], |
|
|
|
selectable: false, |
|
|
|
selectedKeyMap: {}, // 选中的文件的hash |
|
|
|
}; |
|
|
|
}, |
|
|
|
watch: { |
|
|
|
selectedProjectId(projectId) { |
|
|
|
this.fetchProjectRemovedFiles(projectId); |
|
|
|
selectedProject(project) { |
|
|
|
this.fetchProjectRemovedFiles(project.id); |
|
|
|
this.selectable = false; |
|
|
|
}, |
|
|
|
selectable() { |
|
|
@@ -144,11 +145,11 @@ export default { |
|
|
|
this.aliveProjectList = aliveProjectList; |
|
|
|
this.removedProjectList = removedProjectList; |
|
|
|
|
|
|
|
this.selectedProjectId = aliveProjectList.length |
|
|
|
? aliveProjectList[0].id |
|
|
|
this.selectedProject = aliveProjectList.length |
|
|
|
? aliveProjectList[0] |
|
|
|
: removedProjectList.length |
|
|
|
? removedProjectList[0].id |
|
|
|
: undefined; |
|
|
|
? removedProjectList[0] |
|
|
|
: {}; |
|
|
|
}, |
|
|
|
async fetchProjectRemovedFiles(projectId) { |
|
|
|
if (!projectId) { |
|
|
@@ -188,6 +189,20 @@ export default { |
|
|
|
this.selectedKeyMap = { ...tempMap, ...stateMap }; |
|
|
|
} |
|
|
|
}, |
|
|
|
async recoverFiles() { |
|
|
|
const project = this.selectedProject; |
|
|
|
const fileIds = Object.keys(this.selectedKeyMap).filter((fileId) => { |
|
|
|
return this.selectedKeyMap[fileId]; |
|
|
|
}); |
|
|
|
const res = await this.$fetchApi('file/removeFromRecycleBin', { Ids: fileIds }); |
|
|
|
wrapErrorHint(res); |
|
|
|
if(res.Code !== 0) { return; } |
|
|
|
notify.success('文件已放回原处'); |
|
|
|
this.fetchProjectRemovedFiles(project.id); |
|
|
|
}, |
|
|
|
copyFiles() { |
|
|
|
|
|
|
|
} |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|