style(文件管理): 文件转存提示及样式调整

--bug=1016286 --user=赵勇 除了图片外,不能预览的展示文件类型,如JAR、XLSX https://www.tapd.cn/55049933/s/1233267
This commit is contained in:
fit2-zhao 2022-08-25 10:10:15 +08:00 committed by fit2-zhao
parent 69bd601b3f
commit f089e943b5
7 changed files with 78 additions and 16 deletions

View File

@ -112,4 +112,9 @@ public class FileMetadataController {
public boolean exist(@PathVariable("fileId") String fileId) { public boolean exist(@PathVariable("fileId") String fileId) {
return fileMetadataService.exist(fileId); return fileMetadataService.exist(fileId);
} }
@PostMapping(value = "/exists")
public List<String> exist(@RequestBody List<String> fileIds) {
return fileMetadataService.exists(fileIds);
}
} }

View File

@ -430,4 +430,14 @@ public class FileMetadataService {
public boolean exist(String fileId) { public boolean exist(String fileId) {
return fileMetadataMapper.selectByPrimaryKey(fileId) != null; return fileMetadataMapper.selectByPrimaryKey(fileId) != null;
} }
public List<String> exists(List<String> fileIds) {
if (CollectionUtils.isEmpty(fileIds)) {
return new LinkedList<>();
}
FileMetadataExample example = new FileMetadataExample();
example.createCriteria().andIdIn(fileIds);
List<FileMetadata> fileMetadataList = fileMetadataMapper.selectByExample(example);
return fileMetadataList.stream().map(FileMetadata::getId).collect(Collectors.toList());
}
} }

View File

@ -35,16 +35,20 @@
<div class="upload-item" slot="file" slot-scope="{file}" v-loading="loading"> <div class="upload-item" slot="file" slot-scope="{file}" v-loading="loading">
<span>{{ file.file && file.file.name ? file.file.name : file.name }}</span> <span>{{ file.file && file.file.name ? file.file.name : file.name }}</span>
<span class="el-upload-list__item-actions" v-if="file.storage === 'FILE_REF'"> <span class="el-upload-list__item-actions" v-if="file.storage === 'FILE_REF'">
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleUnlock(file)"> <span v-if="!disabled" class="ms-list__item-delete" @click="handleUnlock(file)">
<i class="el-icon-unlock"/> <i class="el-icon-unlock"/>
<span style="font-size: 13px">{{ file.isExist ? '文件已经被删除' : '' }}</span> <span style="font-size: 13px">
{{ file.isExist ? $t('permission.project_file.file_delete_tip') : '' }}
</span>
</span> </span>
</span> </span>
<span class="el-upload-list__item-actions" v-else> <span class="el-upload-list__item-actions" v-else>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleUpload(file)"> <span v-if="!disabled" class="ms-list__item-delete" @click="handleUpload(file)">
<i class="el-icon-upload" style="font-size: 23px"/> <el-tooltip :content="$t('permission.project_file.save_to_file_manage')" placement="top">
<i class="el-icon-upload" style="font-size: 23px"/>
</el-tooltip>
</span> </span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)"> <span v-if="!disabled" class="ms-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"/> <i class="el-icon-delete"/>
</span> </span>
</span> </span>
@ -273,4 +277,11 @@ export default {
overflow: hidden; overflow: hidden;
width: 180px; width: 180px;
} }
.ms-list__item-delete {
margin-top: -10px;
padding-top: -10px;
text-align: center;
vertical-align: middle;
}
</style> </style>

View File

@ -1,5 +1,5 @@
<template> <template>
<span> <span v-if="showHide">
<el-upload <el-upload
action="#" action="#"
class="ms-upload-header" class="ms-upload-header"
@ -28,16 +28,20 @@
<div class="upload-item" slot="file" slot-scope="{file}"> <div class="upload-item" slot="file" slot-scope="{file}">
<span>{{ file.file && file.file.name ? file.file.name : file.name }}</span> <span>{{ file.file && file.file.name ? file.file.name : file.name }}</span>
<span v-if="file.storage === 'FILE_REF'" class="el-upload-list__item-actions"> <span v-if="file.storage === 'FILE_REF'" class="el-upload-list__item-actions">
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)"> <span v-if="!disabled" class="ms-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-unlock"/> <i class="el-icon-unlock"/>
<span style="font-size: 13px">{{ file.isExist ? '文件已经被删除' : '' }}</span> <span style="font-size: 13px;">
{{ file.isExist ? $t('permission.project_file.file_delete_tip') : '' }}
</span>
</span> </span>
</span> </span>
<span class="el-upload-list__item-actions" v-else> <span class="el-upload-list__item-actions" v-else>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleUpload(file)"> <span v-if="!disabled" class="ms-list__item-delete" @click="handleUpload(file)">
<el-tooltip :content="$t('permission.project_file.save_to_file_manage')" placement="top">
<i class="el-icon-upload" style="font-size: 23px"/> <i class="el-icon-upload" style="font-size: 23px"/>
</el-tooltip>
</span> </span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)"> <span v-if="!disabled" class="ms-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"/> <i class="el-icon-delete"/>
</span> </span>
</span> </span>
@ -64,6 +68,7 @@ export default {
return { return {
disabled: false, disabled: false,
file: {}, file: {},
showHide: true,
}; };
}, },
props: { props: {
@ -75,11 +80,29 @@ export default {
}, },
methods: { methods: {
exist() { exist() {
let fileIds = [];
this.parameter.files.forEach(file => { this.parameter.files.forEach(file => {
this.$get('/file/metadata/exist/' + file.fileId, response => { if (file.storage === 'FILE_REF' && file.fileId) {
file.isExist = !response.data; fileIds.push(file.fileId);
}); }
}); });
if (fileIds.length > 0) {
this.result = this.$post('/file/metadata/exists/', fileIds, response => {
let resultIds = response.data;
this.parameter.files.forEach(file => {
if (file.storage === 'FILE_REF' && resultIds.indexOf(file.fileId) === -1) {
file.isExist = true;
}
});
this.reload();
});
}
},
reload() {
this.showHide = false;
this.$nextTick(() => {
this.showHide = true;
})
}, },
setModuleId(moduleId) { setModuleId(moduleId) {
let files = []; let files = [];
@ -204,4 +227,11 @@ export default {
.ms-upload-header >>> .el-upload-list--picture-card .el-upload-list__item { .ms-upload-header >>> .el-upload-list--picture-card .el-upload-list__item {
display: inline-block; display: inline-block;
} }
.ms-list__item-delete {
margin-top: -10px;
padding-top: -10px;
text-align: center;
vertical-align: middle;
}
</style> </style>

View File

@ -2618,7 +2618,9 @@ export default {
batch_download: 'Batch download', batch_download: 'Batch download',
batch_move: 'Batch move', batch_move: 'Batch move',
local_upload: 'Local upload', local_upload: 'Local upload',
associated_files: 'Associated files' associated_files: 'Associated files',
file_delete_tip: 'Source file deleted',
save_to_file_manage: 'Transfer to file management'
}, },
project_track_case: { project_track_case: {
name: "Case", name: "Case",

View File

@ -2622,7 +2622,9 @@ export default {
batch_download: '批量下载', batch_download: '批量下载',
batch_move: '批量移动', batch_move: '批量移动',
local_upload: '本地上传', local_upload: '本地上传',
associated_files: '关联文件' associated_files: '关联文件',
file_delete_tip: '源文件已删除',
save_to_file_manage: '转存至文件管理'
}, },
project_track_case: { project_track_case: {
name: "测试用例", name: "测试用例",

View File

@ -2619,7 +2619,9 @@ export default {
batch_download: '批量下載', batch_download: '批量下載',
batch_move: '批量移動', batch_move: '批量移動',
local_upload: '本地上傳', local_upload: '本地上傳',
associated_files: '關聯文件' associated_files: '關聯文件',
file_delete_tip: '源文件已刪除',
save_to_file_manage: '轉存至文件管理'
}, },
project_track_case: { project_track_case: {
name: "測試用例", name: "測試用例",