feat(meeting): 调整会议列表页UI,状态文案对齐设计稿,入口改为路由跳转
- 状态文案:草稿→待召开,已邀约→正在召开 - 状态 Tag 颜色:待召开 warning,正在召开 success - 新建/编辑/查看按钮改为 router.push 跳转 ReviewMeetingEdit - 操作列新增「项目列表」快捷入口,移除冗余的独立列 - 「发送邮件邀请函」改为「发送议程」 - 移除 MeetingForm 弹窗引用(后续由全页面 MeetingEdit 承接) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>pull/874/head
parent
167af744b9
commit
83adecdcb8
|
|
@ -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) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue