merge: integrate review-meeting minutes ai notice ui
commit
3bae07cd70
|
|
@ -72,6 +72,10 @@ export interface ReviewMeetingRespVO {
|
|||
minutesAttachmentUrl?: string
|
||||
minutesAttachmentType?: string
|
||||
minutesAttachmentSize?: number
|
||||
minutesAiStatus?: number
|
||||
minutesAiStatusName?: string
|
||||
minutesAiErrorMessage?: string
|
||||
minutesAiUpdatedTime?: string
|
||||
status: number // 0-草稿 1-已邀约 2-已结束 3-已取消
|
||||
expertIds: number[]
|
||||
expertCount: number
|
||||
|
|
|
|||
|
|
@ -130,6 +130,17 @@
|
|||
<el-text type="info" size="small">{{ formatFileSize(formData.minutesAttachmentSize) }}</el-text>
|
||||
<el-button v-if="!isView" type="danger" link @click="clearMinutesAttachment">移除</el-button>
|
||||
</div>
|
||||
<div v-if="formData.minutesAttachmentUrl && formData.minutesAiStatusName" class="minutes-ai-line">
|
||||
<el-tag size="small" :type="getMinutesAiTagType(formData.minutesAiStatus)">
|
||||
{{ formData.minutesAiStatusName }}
|
||||
</el-tag>
|
||||
<el-text v-if="formData.minutesAiUpdatedTime" type="info" size="small">
|
||||
最近生成:{{ formData.minutesAiUpdatedTime }}
|
||||
</el-text>
|
||||
<el-text v-if="formData.minutesAiErrorMessage" type="danger" size="small">
|
||||
{{ formData.minutesAiErrorMessage }}
|
||||
</el-text>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -254,6 +265,10 @@ type FormData = ReviewMeetingSaveReqVO & {
|
|||
organizationUnit?: string
|
||||
meetingTimeRange?: any[]
|
||||
materialViewTimeRange?: any[]
|
||||
minutesAiStatus?: number
|
||||
minutesAiStatusName?: string
|
||||
minutesAiErrorMessage?: string
|
||||
minutesAiUpdatedTime?: string
|
||||
}
|
||||
|
||||
const formData = reactive<FormData>({
|
||||
|
|
@ -272,6 +287,10 @@ const formData = reactive<FormData>({
|
|||
minutesAttachmentUrl: undefined,
|
||||
minutesAttachmentType: undefined,
|
||||
minutesAttachmentSize: undefined,
|
||||
minutesAiStatus: undefined,
|
||||
minutesAiStatusName: undefined,
|
||||
minutesAiErrorMessage: undefined,
|
||||
minutesAiUpdatedTime: undefined,
|
||||
materialViewStartTime: undefined,
|
||||
materialViewEndTime: undefined,
|
||||
materialViewRemark: undefined,
|
||||
|
|
@ -293,6 +312,13 @@ const rules: FormRules = {
|
|||
|
||||
const formRef = ref()
|
||||
|
||||
const getMinutesAiTagType = (status?: number) => {
|
||||
if (status === 2) return 'success'
|
||||
if (status === 3) return 'danger'
|
||||
if (status === 1) return 'warning'
|
||||
return 'info'
|
||||
}
|
||||
|
||||
const mapProjectItems = (projects: any[]): ReviewProjectItemVO[] =>
|
||||
(projects || []).map((item: any) => ({
|
||||
sourceProjectId: item.sourceProjectId ?? item.id,
|
||||
|
|
@ -369,6 +395,10 @@ const loadCopySource = async (id: number) => {
|
|||
formData.minutesAttachmentUrl = undefined
|
||||
formData.minutesAttachmentType = undefined
|
||||
formData.minutesAttachmentSize = undefined
|
||||
formData.minutesAiStatus = undefined
|
||||
formData.minutesAiStatusName = undefined
|
||||
formData.minutesAiErrorMessage = undefined
|
||||
formData.minutesAiUpdatedTime = undefined
|
||||
formData.expertIds = detail.expertIds || []
|
||||
formData.projects = resetProjectReviewDate(mapProjectItems(projectData?.list ?? []))
|
||||
isProjectsModified.value = false
|
||||
|
|
@ -490,7 +520,11 @@ const handleMinutesAttachmentChange = async (uploadFile: UploadFile) => {
|
|||
formData.minutesAttachmentUrl = attachment.url
|
||||
formData.minutesAttachmentType = attachment.type
|
||||
formData.minutesAttachmentSize = attachment.size
|
||||
ElMessage.success('会议纪要上传成功')
|
||||
formData.minutesAiStatus = 1
|
||||
formData.minutesAiStatusName = '生成中'
|
||||
formData.minutesAiErrorMessage = undefined
|
||||
formData.minutesAiUpdatedTime = undefined
|
||||
ElMessage.success('会议纪要上传成功,整改通知后台生成中')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
|
@ -501,6 +535,10 @@ const clearMinutesAttachment = () => {
|
|||
formData.minutesAttachmentUrl = undefined
|
||||
formData.minutesAttachmentType = undefined
|
||||
formData.minutesAttachmentSize = undefined
|
||||
formData.minutesAiStatus = undefined
|
||||
formData.minutesAiStatusName = undefined
|
||||
formData.minutesAiErrorMessage = undefined
|
||||
formData.minutesAiUpdatedTime = undefined
|
||||
}
|
||||
|
||||
const previewAgendaAttachment = () => {
|
||||
|
|
@ -728,6 +766,12 @@ const handleBack = () => {
|
|||
flex-wrap: wrap;
|
||||
font-size: 16px;
|
||||
}
|
||||
.minutes-ai-line {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.agenda-action-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
|
|||
|
|
@ -251,13 +251,15 @@ const PHASE_MAPPING: Record<string, Record<string, 'before' | 'after'>> = {
|
|||
PROJECT_ARGUMENT_DOC: 'before',
|
||||
PROJECT_DEFENSE_PPT: 'before',
|
||||
PROJECT_DRAFT_EXPERT_OPINION: 'before',
|
||||
PROJECT_EXPERT_OPINION_SIGNED: 'after'
|
||||
PROJECT_EXPERT_OPINION_SIGNED: 'after',
|
||||
PROJECT_RECTIFICATION_NOTICE: 'after'
|
||||
},
|
||||
项目立项: {
|
||||
PROJECT_ARGUMENT_DOC: 'before',
|
||||
PROJECT_DEFENSE_PPT: 'before',
|
||||
PROJECT_DRAFT_EXPERT_OPINION: 'before',
|
||||
PROJECT_EXPERT_OPINION_SIGNED: 'after'
|
||||
PROJECT_EXPERT_OPINION_SIGNED: 'after',
|
||||
PROJECT_RECTIFICATION_NOTICE: 'after'
|
||||
},
|
||||
预验收: {
|
||||
PRE_PROJECT_CONTRACT: 'before',
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@ const handleMinutesFileChange = async (event: Event) => {
|
|||
}
|
||||
try {
|
||||
await uploadMinutesAttachment(pendingMinutesMeeting.value.id, file)
|
||||
ElMessage.success('会议纪要上传成功')
|
||||
ElMessage.success('会议纪要上传成功,整改通知后台生成中')
|
||||
getList()
|
||||
} finally {
|
||||
input.value = ''
|
||||
|
|
|
|||
Loading…
Reference in New Issue