feat(review-meeting): 议程附件和会议纪要支持在线预览
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>pull/874/head
parent
422fd7fa2e
commit
916db3cbe7
|
|
@ -244,6 +244,15 @@
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</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>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -269,6 +278,7 @@ import { getReviewProjectPage, updateReviewProjectTimeBatch } from '@/api/review
|
||||||
import { getExpertUserList } from '@/api/system/user/index'
|
import { getExpertUserList } from '@/api/system/user/index'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import ExpertSelectTable from './components/ExpertSelectTable.vue'
|
import ExpertSelectTable from './components/ExpertSelectTable.vue'
|
||||||
|
import FilePreviewDialog from './components/FilePreviewDialog.vue'
|
||||||
import { applyDefaultReviewDate } from './projectReviewDate'
|
import { applyDefaultReviewDate } from './projectReviewDate'
|
||||||
import {
|
import {
|
||||||
buildScheduledProjectItems,
|
buildScheduledProjectItems,
|
||||||
|
|
@ -297,6 +307,10 @@ const isSubmitting = ref(false) // 防止重复提交
|
||||||
const agendaDialogVisible = ref(false)
|
const agendaDialogVisible = ref(false)
|
||||||
const agendaDialogLoading = ref(false)
|
const agendaDialogLoading = ref(false)
|
||||||
|
|
||||||
|
// 预览对话框
|
||||||
|
const previewDialogVisible = ref(false)
|
||||||
|
const previewAttachmentType = ref<'agenda' | 'minutes'>('agenda')
|
||||||
|
|
||||||
// 从路由参数判断模式
|
// 从路由参数判断模式
|
||||||
const meetingId = computed(() => {
|
const meetingId = computed(() => {
|
||||||
const id = route.params.id
|
const id = route.params.id
|
||||||
|
|
@ -537,13 +551,15 @@ const clearAgendaAttachment = () => {
|
||||||
|
|
||||||
const previewAgendaAttachment = () => {
|
const previewAgendaAttachment = () => {
|
||||||
if (formData.agendaAttachmentUrl) {
|
if (formData.agendaAttachmentUrl) {
|
||||||
window.open(formData.agendaAttachmentUrl, '_blank')
|
previewAttachmentType.value = 'agenda'
|
||||||
|
previewDialogVisible.value = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const previewMinutesAttachment = () => {
|
const previewMinutesAttachment = () => {
|
||||||
if (formData.minutesAttachmentUrl) {
|
if (formData.minutesAttachmentUrl) {
|
||||||
window.open(formData.minutesAttachmentUrl, '_blank')
|
previewAttachmentType.value = 'minutes'
|
||||||
|
previewDialogVisible.value = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue