feat(review-meeting): 议程附件和会议纪要支持在线预览

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
pull/874/head
Codewoc 2026-04-10 15:38:46 +08:00
parent 422fd7fa2e
commit 916db3cbe7
1 changed files with 18 additions and 2 deletions

View File

@ -244,6 +244,15 @@
</el-button>
</template>
</el-dialog>
<!-- 文件预览对话框 -->
<FilePreviewDialog
v-if="formData.id"
v-model="previewDialogVisible"
:meeting-id="formData.id"
:attachment-type="previewAttachmentType"
:file-name="previewAttachmentType === 'agenda' ? formData.agendaAttachmentName : formData.minutesAttachmentName"
/>
</ContentWrap>
</template>
@ -269,6 +278,7 @@ import { getReviewProjectPage, updateReviewProjectTimeBatch } from '@/api/review
import { getExpertUserList } from '@/api/system/user/index'
import download from '@/utils/download'
import ExpertSelectTable from './components/ExpertSelectTable.vue'
import FilePreviewDialog from './components/FilePreviewDialog.vue'
import { applyDefaultReviewDate } from './projectReviewDate'
import {
buildScheduledProjectItems,
@ -297,6 +307,10 @@ const isSubmitting = ref(false) // 防止重复提交
const agendaDialogVisible = ref(false)
const agendaDialogLoading = ref(false)
//
const previewDialogVisible = ref(false)
const previewAttachmentType = ref<'agenda' | 'minutes'>('agenda')
//
const meetingId = computed(() => {
const id = route.params.id
@ -537,13 +551,15 @@ const clearAgendaAttachment = () => {
const previewAgendaAttachment = () => {
if (formData.agendaAttachmentUrl) {
window.open(formData.agendaAttachmentUrl, '_blank')
previewAttachmentType.value = 'agenda'
previewDialogVisible.value = true
}
}
const previewMinutesAttachment = () => {
if (formData.minutesAttachmentUrl) {
window.open(formData.minutesAttachmentUrl, '_blank')
previewAttachmentType.value = 'minutes'
previewDialogVisible.value = true
}
}