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