feat(meeting): 调整会议列表页UI,状态文案对齐设计稿,入口改为路由跳转

- 状态文案:草稿→待召开,已邀约→正在召开
- 状态 Tag 颜色:待召开 warning,正在召开 success
- 新建/编辑/查看按钮改为 router.push 跳转 ReviewMeetingEdit
- 操作列新增「项目列表」快捷入口,移除冗余的独立列
- 「发送邮件邀请函」改为「发送议程」
- 移除 MeetingForm 弹窗引用(后续由全页面 MeetingEdit 承接)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pull/874/head
Codewoc 2026-03-23 13:54:21 +08:00
parent 167af744b9
commit 83adecdcb8
1 changed files with 20 additions and 27 deletions

View File

@ -29,8 +29,8 @@
<!-- 操作按钮 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button v-hasPermi="['review:meeting:create']" type="primary" plain @click="openForm('create')">
<el-icon><Plus /></el-icon>
<el-button v-hasPermi="['review:meeting:create']" type="primary" plain @click="goToEdit()">
<el-icon><Plus /></el-icon>
</el-button>
</el-col>
</el-row>
@ -61,22 +61,19 @@
<el-tag :type="STATUS_TAG_TYPE[row.status]">{{ STATUS_LABEL[row.status] }}</el-tag>
</template>
</el-table-column>
<el-table-column label="进入评审项目列表" width="130" align="center">
<el-table-column label="操作" width="380" align="center" fixed="right">
<template #default="{ row }">
<el-button type="primary" link @click="goToProjectList(row)"></el-button>
</template>
</el-table-column>
<el-table-column label="操作" width="430" align="center" fixed="right">
<template #default="{ row }">
<!-- 草稿状态 -->
<!-- 待召开 -->
<template v-if="row.status === 0">
<el-button v-hasPermi="['review:meeting:update']" type="primary" link @click="openForm('update', row)"></el-button>
<el-button v-hasPermi="['review:meeting:update']" type="primary" link @click="goToEdit(row.id)"></el-button>
<el-button type="primary" link @click="goToProjectList(row)"></el-button>
<el-button v-hasPermi="['review:meeting:send-sms']" type="success" link @click="handleSendSms(row)"></el-button>
<el-button v-hasPermi="['review:meeting:cancel']" type="danger" link @click="handleCancel(row)"></el-button>
</template>
<!-- 已邀约状态 -->
<!-- 正在召开 -->
<template v-else-if="row.status === 1">
<el-button type="info" link @click="openForm('view', row)">查看</el-button>
<el-button type="info" link @click="goToEdit(row.id, 'view')">查看</el-button>
<el-button type="primary" link @click="goToProjectList(row)"></el-button>
<el-button v-hasPermi="['review:meeting:send-sms']" type="info" link @click="openSmsStatus(row)"></el-button>
<el-button
v-if="row.mailSent"
@ -94,14 +91,15 @@
link
@click="handleSendMail(row)"
>
发送邮件邀请函
发送议程
</el-button>
<el-button v-hasPermi="['review:meeting:finish']" type="warning" link @click="handleFinish(row)"></el-button>
<el-button v-hasPermi="['review:meeting:cancel']" type="danger" link @click="handleCancel(row)"></el-button>
</template>
<!-- 终态 -->
<!-- 终态已结束/已取消 -->
<template v-else>
<el-button type="info" link @click="openForm('view', row)">查看</el-button>
<el-button type="info" link @click="goToEdit(row.id, 'view')">查看</el-button>
<el-button type="primary" link @click="goToProjectList(row)"></el-button>
</template>
</template>
</el-table-column>
@ -110,9 +108,6 @@
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 新增/编辑弹窗 -->
<MeetingForm ref="formRef" @success="getList" />
<!-- 短信状态弹窗 -->
<SmsStatusDialog ref="smsStatusRef" />
@ -135,7 +130,6 @@ import {
type ReviewMeetingRespVO,
type ReviewMeetingPageReqVO
} from '@/api/review/meeting'
import MeetingForm from './MeetingForm.vue'
import SmsStatusDialog from './SmsStatusDialog.vue'
import MailStatusDialog from './MailStatusDialog.vue'
import { formatDate } from '@/utils/formatTime'
@ -148,13 +142,13 @@ const list = ref<ReviewMeetingRespVO[]>([])
const total = ref(0)
const MEETING_STATUS_OPTIONS = [
{ value: 0, label: '草稿' },
{ value: 1, label: '已邀约' },
{ value: 0, label: '待召开' },
{ value: 1, label: '正在召开' },
{ value: 2, label: '已结束' },
{ value: 3, label: '已取消' }
]
const STATUS_LABEL: Record<number, string> = { 0: '草稿', 1: '已邀约', 2: '已结束', 3: '已取消' }
const STATUS_TAG_TYPE: Record<number, string> = { 0: 'info', 1: 'primary', 2: 'success', 3: 'danger' }
const STATUS_LABEL: Record<number, string> = { 0: '待召开', 1: '正在召开', 2: '已结束', 3: '已取消' }
const STATUS_TAG_TYPE: Record<number, string> = { 0: 'warning', 1: 'success', 2: 'info', 3: 'danger' }
const queryParams = reactive<ReviewMeetingPageReqVO & { pageNo: number; pageSize: number }>({
pageNo: 1,
@ -165,7 +159,6 @@ const queryParams = reactive<ReviewMeetingPageReqVO & { pageNo: number; pageSize
})
const queryFormRef = ref()
const formRef = ref()
const smsStatusRef = ref()
const mailStatusRef = ref()
@ -183,8 +176,8 @@ const getList = async () => {
const handleQuery = () => { queryParams.pageNo = 1; getList() }
const resetQuery = () => { queryFormRef.value?.resetFields(); handleQuery() }
const openForm = (type: 'create' | 'update' | 'view', row?: ReviewMeetingRespVO) => {
formRef.value?.open(type, row?.id)
const goToEdit = (id?: number, mode?: string) => {
router.push({ name: 'ReviewMeetingEdit', params: id ? { id } : {}, query: mode ? { mode } : {} })
}
const goToProjectList = (row: ReviewMeetingRespVO) => {
@ -224,7 +217,7 @@ const handleSendMail = async (row: ReviewMeetingRespVO) => {
)
await sendMailInvitation(row.id)
row.mailSent = true
ElMessage.success('邮件邀请函发送任务已触发,请点击“邮件状态”查看结果')
ElMessage.success('邮件邀请函发送任务已触发,请点击"邮件状态"查看结果')
}
const openSmsStatus = (row: ReviewMeetingRespVO) => {