feat(review-meeting): 项目列表操作改为下拉并补充议程分类
parent
2566d1e311
commit
f4c04a6c69
|
|
@ -25,7 +25,13 @@ export interface ReviewMeetingProjectRespVO {
|
||||||
aiSummaryUpdatedTime?: string
|
aiSummaryUpdatedTime?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export const REVIEW_AGENDA_CATEGORY_OPTIONS = ['项目申报论证', '预验收', '项目终验'] as const
|
export const REVIEW_AGENDA_CATEGORY_OPTIONS = [
|
||||||
|
'项目申报论证',
|
||||||
|
'软件申购论证',
|
||||||
|
'软件报废论证',
|
||||||
|
'预验收',
|
||||||
|
'项目终验'
|
||||||
|
] as const
|
||||||
export type ReviewAgendaCategory = (typeof REVIEW_AGENDA_CATEGORY_OPTIONS)[number]
|
export type ReviewAgendaCategory = (typeof REVIEW_AGENDA_CATEGORY_OPTIONS)[number]
|
||||||
|
|
||||||
export interface ReviewMeetingProjectSeqUpdateReqVO {
|
export interface ReviewMeetingProjectSeqUpdateReqVO {
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,20 @@ const PHASE_MAPPING: Record<string, Record<string, 'before' | 'after'>> = {
|
||||||
PROJECT_EXPERT_OPINION_SIGNED: 'after',
|
PROJECT_EXPERT_OPINION_SIGNED: 'after',
|
||||||
PROJECT_RECTIFICATION_NOTICE: 'after'
|
PROJECT_RECTIFICATION_NOTICE: 'after'
|
||||||
},
|
},
|
||||||
|
软件申购论证: {
|
||||||
|
PROJECT_ARGUMENT_DOC: 'before',
|
||||||
|
PROJECT_DEFENSE_PPT: 'before',
|
||||||
|
PROJECT_DRAFT_EXPERT_OPINION: 'before',
|
||||||
|
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_RECTIFICATION_NOTICE: 'after'
|
||||||
|
},
|
||||||
项目立项: {
|
项目立项: {
|
||||||
PROJECT_ARGUMENT_DOC: 'before',
|
PROJECT_ARGUMENT_DOC: 'before',
|
||||||
PROJECT_DEFENSE_PPT: 'before',
|
PROJECT_DEFENSE_PPT: 'before',
|
||||||
|
|
|
||||||
|
|
@ -181,11 +181,18 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="260" align="center" :fixed="useFixedActionColumn ? 'right' : false">
|
<el-table-column label="操作" width="150" align="center" :fixed="useFixedActionColumn ? 'right' : false">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="op-group">
|
<div class="op-group compact">
|
||||||
<a class="op-link" @click="goToDetail(row)">上传项目资料</a>
|
<el-dropdown trigger="click" @command="(command: string) => handleActionCommand(row, command)">
|
||||||
<a class="op-link op-danger" @click="handleDelete(row.id)">删除</a>
|
<span class="op-dropdown-trigger">更多</span>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item command="upload">上传项目资料</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="delete" class="danger-dropdown-item">删除</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -457,6 +464,16 @@ const handleDelete = async (id: number) => {
|
||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleActionCommand = (row: ReviewMeetingProjectRespVO, command: string) => {
|
||||||
|
if (command === 'upload') {
|
||||||
|
goToDetail(row)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (command === 'delete') {
|
||||||
|
handleDelete(row.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const handleSelectionChange = (rows: ReviewMeetingProjectRespVO[]) => {
|
const handleSelectionChange = (rows: ReviewMeetingProjectRespVO[]) => {
|
||||||
selectedRows.value = rows
|
selectedRows.value = rows
|
||||||
}
|
}
|
||||||
|
|
@ -799,6 +816,40 @@ onBeforeUnmount(() => {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
}
|
}
|
||||||
|
.op-group.compact {
|
||||||
|
gap: 0;
|
||||||
|
}
|
||||||
|
.op-dropdown-trigger {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
color: #295abc;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
.op-dropdown-trigger::after {
|
||||||
|
content: '';
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
margin-top: -3px;
|
||||||
|
border-right: 1.5px solid currentColor;
|
||||||
|
border-bottom: 1.5px solid currentColor;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
.op-dropdown-trigger:hover {
|
||||||
|
color: #1f4ca5;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
:deep(.el-dropdown-menu__item.danger-dropdown-item) {
|
||||||
|
color: #d63b42;
|
||||||
|
}
|
||||||
|
:deep(.el-dropdown-menu__item.danger-dropdown-item:not(.is-disabled):focus) {
|
||||||
|
color: #c22e35;
|
||||||
|
background-color: rgba(252, 79, 84, 0.12);
|
||||||
|
}
|
||||||
|
|
||||||
/* ── 表格 ── */
|
/* ── 表格 ── */
|
||||||
:deep(.review-table .el-table__header-wrapper th) {
|
:deep(.review-table .el-table__header-wrapper th) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue