|
@@ -1,36 +1,36 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="info-container">
|
|
<div class="info-container">
|
|
|
<header class="info-container__header">
|
|
<header class="info-container__header">
|
|
|
- <span class="title">{{ defenseNoticeDetail?.noticeTitle }}</span>
|
|
|
|
|
|
|
+ <span class="title">{{ defenseNoticeDetail?.title }}</span>
|
|
|
<div class="disaster">
|
|
<div class="disaster">
|
|
|
<p class="info-item">
|
|
<p class="info-item">
|
|
|
- 类型:<span class="info-content">{{ defenseNoticeDetail?.disasterType }}</span>
|
|
|
|
|
|
|
+ 类型:<span class="info-content">{{ formatDisasterType(defenseNoticeDetail?.disasterType || '') }}</span>
|
|
|
</p>
|
|
</p>
|
|
|
<p class="info-item">
|
|
<p class="info-item">
|
|
|
- 灾害等级:<span class="info-content">{{ defenseNoticeDetail?.disasterLevel }}</span>
|
|
|
|
|
|
|
+ 灾害等级:<span class="info-content">{{ formatDisasterLevel(defenseNoticeDetail?.disasterLevel || '') }}</span>
|
|
|
</p>
|
|
</p>
|
|
|
</div>
|
|
</div>
|
|
|
<span class="publish-info">
|
|
<span class="publish-info">
|
|
|
<p class="info-item">
|
|
<p class="info-item">
|
|
|
- 发布人:<span class="info-content"
|
|
|
|
|
- >{{ defenseNoticeDetail?.createUser }}{{ defenseNoticeDetail?.publishTime }}</span
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ 发布人:<span class="info-content">
|
|
|
|
|
+ {{ defenseNoticeDetail?.realname }}
|
|
|
|
|
+ </span>
|
|
|
</p>
|
|
</p>
|
|
|
</span>
|
|
</span>
|
|
|
</header>
|
|
</header>
|
|
|
<section class="divider"></section>
|
|
<section class="divider"></section>
|
|
|
<section class="content">
|
|
<section class="content">
|
|
|
- <div v-html="defenseNoticeDetail?.noticeContent"></div>
|
|
|
|
|
|
|
+ <div v-html="defenseNoticeDetail?.content"></div>
|
|
|
</section>
|
|
</section>
|
|
|
<section class="attachment">
|
|
<section class="attachment">
|
|
|
- <span class="info-content">附件({{ defenseNoticeDetail?.noticeAttachment.length }})</span>
|
|
|
|
|
|
|
+ <span class="info-content">附件({{ defenseNoticeDetail?.attachmentListRes.length }})</span>
|
|
|
<a @click="downloadAll">下载全部</a>
|
|
<a @click="downloadAll">下载全部</a>
|
|
|
<div class="attachment-list">
|
|
<div class="attachment-list">
|
|
|
<div
|
|
<div
|
|
|
class="attachment-item"
|
|
class="attachment-item"
|
|
|
- v-for="item in defenseNoticeDetail?.noticeAttachment"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- @click="previewOnline(item.downloadUrl, item.fileType as keyof typeof FILE_TYPE_ICON)"
|
|
|
|
|
|
|
+ v-for="item in defenseNoticeDetail?.attachmentListRes"
|
|
|
|
|
+ :key="item.fileId"
|
|
|
|
|
+ @click="previewOnline(item.fileUrl, item.fileType as keyof typeof FILE_TYPE_ICON)"
|
|
|
>
|
|
>
|
|
|
<span class="attachment-item--name">{{ item.fileName }}</span>
|
|
<span class="attachment-item--name">{{ item.fileName }}</span>
|
|
|
<div class="attachment-item--footer">
|
|
<div class="attachment-item--footer">
|
|
@@ -38,7 +38,7 @@
|
|
|
<img :src="FILE_TYPE_ICON[item.fileType as keyof typeof FILE_TYPE_ICON]" />
|
|
<img :src="FILE_TYPE_ICON[item.fileType as keyof typeof FILE_TYPE_ICON]" />
|
|
|
<span>{{ item.fileSize }}</span>
|
|
<span>{{ item.fileSize }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <a @click.stop="downloadFile(item.downloadUrl, item.fileName)">下载</a>
|
|
|
|
|
|
|
+ <a @click.stop="downloadFile(item.fileUrl, item.fileName)">下载</a>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -54,6 +54,7 @@
|
|
|
import type { DefenseNoticeDetailResponse } from '@/types/disaster-warning';
|
|
import type { DefenseNoticeDetailResponse } from '@/types/disaster-warning';
|
|
|
import { downloadFile } from '@/views/disaster/utils/download';
|
|
import { downloadFile } from '@/views/disaster/utils/download';
|
|
|
import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
|
|
import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
|
|
|
|
|
+ import { formatDisasterType, formatDisasterLevel } from '@/views/disaster/utils/formatTable';
|
|
|
|
|
|
|
|
const props = defineProps<{
|
|
const props = defineProps<{
|
|
|
id: number;
|
|
id: number;
|
|
@@ -61,15 +62,17 @@
|
|
|
|
|
|
|
|
const previewOnlineRef = ref<InstanceType<typeof PreviewOnline>>();
|
|
const previewOnlineRef = ref<InstanceType<typeof PreviewOnline>>();
|
|
|
|
|
|
|
|
- const previewOnline = (url: string, type: keyof typeof FILE_TYPE_ICON) => {
|
|
|
|
|
- previewOnlineRef.value?.open(url, type);
|
|
|
|
|
|
|
+ const previewOnline = (url: string | undefined, type: keyof typeof FILE_TYPE_ICON) => {
|
|
|
|
|
+ if (url) {
|
|
|
|
|
+ previewOnlineRef.value?.open(url, type);
|
|
|
|
|
+ }
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const defenseNoticeDetail = ref<DefenseNoticeDetailResponse>();
|
|
const defenseNoticeDetail = ref<DefenseNoticeDetailResponse>();
|
|
|
|
|
|
|
|
const downloadAll = () => {
|
|
const downloadAll = () => {
|
|
|
- defenseNoticeDetail.value?.noticeAttachment.forEach((item) => {
|
|
|
|
|
- downloadFile(item.downloadUrl, item.fileName);
|
|
|
|
|
|
|
+ defenseNoticeDetail.value?.attachmentListRes.forEach((item) => {
|
|
|
|
|
+ downloadFile(item.fileUrl, item.fileName);
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|