|
|
@@ -66,8 +66,8 @@
|
|
|
<!-- 图片全屏预览(查看非右侧区域时用) -->
|
|
|
<el-image-viewer
|
|
|
v-if="showViewer"
|
|
|
- :url-list="[previewUrl]"
|
|
|
- :initial-index="0"
|
|
|
+ :url-list="preview.list"
|
|
|
+ :initial-index="preview.index"
|
|
|
@close="showViewer = false"
|
|
|
/>
|
|
|
</template>
|
|
|
@@ -96,7 +96,10 @@ const otherTypeId = ref<number | null>(null);
|
|
|
|
|
|
// 文件列表与预览
|
|
|
const files = ref<CaseFile[]>([]);
|
|
|
-const previewUrl = ref<string>('');
|
|
|
+const preview = ref({
|
|
|
+ list: [],
|
|
|
+ index: 0
|
|
|
+});
|
|
|
const showViewer = ref(false);
|
|
|
|
|
|
// 上传限制:100MB,支持 pdf、doc、docx、jpg、jpeg、png、raw、dcm
|
|
|
@@ -127,6 +130,13 @@ const getFileDisplayName = (file: CaseFile) => {
|
|
|
const refresh = async () => {
|
|
|
if (!caseId.value || !otherTypeId.value) return;
|
|
|
files.value = await getCaseFiles({ caseId: caseId.value!, filesTypeId: otherTypeId.value! });
|
|
|
+ const previewList = files.value.filter(file => {
|
|
|
+ const ext = file.filesUrl.substring(file.filesUrl.lastIndexOf('.')).toLocaleLowerCase();
|
|
|
+ const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg'];
|
|
|
+ return imageExts.includes(ext)
|
|
|
+ }) || [];
|
|
|
+ preview.value.list = previewList.map(file => file.filesUrl) || [];
|
|
|
+
|
|
|
};
|
|
|
|
|
|
// 上传请求:直接入库并刷新列表
|
|
|
@@ -156,7 +166,8 @@ const handleView = (file: CaseFile) => {
|
|
|
};
|
|
|
const viewUrl = isOfflineMode() ? toOfflineAbs(file.filesUrl) : file.filesUrl;
|
|
|
if (imageExts.includes(ext)) {
|
|
|
- previewUrl.value = viewUrl;
|
|
|
+
|
|
|
+ preview.value.index = preview.value.list.findIndex(item => item == file.filesUrl);
|
|
|
showViewer.value = true;
|
|
|
} else if ([".raw", ".dcm"].includes(ext)) {
|
|
|
const fileParam = encodeURIComponent(viewUrl);
|