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