fix(meetings): onCopy 走 bizAdd 创建副本 (修 0 行误报成功 bug), submit/onSubmit/onBatchSubmit 加 __silentError 修双 toast

This commit is contained in:
郭庆泰
2026-08-18 23:08:32 +08:00
parent a081da82e4
commit 08d81e95bd
+56 -20
View File
@@ -103,8 +103,8 @@
</el-descriptions>
</el-dialog>
<!-- 修改 dialog (基本字段编辑) -->
<el-dialog v-model="editOpen" title="修改会议" width="640px">
<!-- 修改 / 复制 dialog (editMode 区分, 复制走 bizAdd, 修改走 bizUpdate) -->
<el-dialog v-model="editOpen" :title="editMode === 'copy' ? '复制会议' : '修改会议'" width="640px">
<el-form :model="editForm" label-width="100px">
<el-form-item label="会议名称"><el-input v-model="editForm.meetingName" /></el-form-item>
<el-form-item label="项目形式">
@@ -134,7 +134,7 @@
<script setup>
import { ref, reactive, onMounted } from 'vue'
import { bizList, bizUpdate } from '@/api/public'
import { bizList, bizUpdate, bizAdd } from '@/api/public'
import { ElMessage, ElMessageBox } from 'element-plus'
// ========== 筛选 (严格按原型 2 行 8 项: 项目编号/会议ID/会议名称/第几期/会议时间/项目形式/当前阶段/备注) ==========
@@ -216,47 +216,83 @@ const detailOpen = ref(false)
const currentRow = ref(null)
function onView(row) { currentRow.value = row; detailOpen.value = true }
// ========== 修改 ==========
// ========== 修改 / 复制 ==========
const editOpen = ref(false)
const editSubmitting = ref(false)
const editForm = reactive({ meetingId: '', meetingName: '', projectForm: '', startTime: '', endTime: '', totalPeriods: 1, remark: '' })
// editMode 区分当前 dialog 是 "修改" 还是 "复制", 决定 submitEdit 走 bizUpdate 还是 bizAdd
const editMode = ref('edit') // 'edit' | 'copy'
const editForm = reactive({
meetingId: '', meetingName: '',
projectId: null, projectNo: '', projectName: '',
projectForm: '', startTime: '', endTime: '',
totalPeriods: 1, currentStage: '未执行',
remark: ''
})
function onEdit(row) {
editMode.value = 'edit'
Object.assign(editForm, {
meetingId: row.meetingId, meetingName: row.meetingName || '',
projectForm: row.projectForm || '', startTime: row.startTime || '',
endTime: row.endTime || '', totalPeriods: row.totalPeriods || 1,
meetingId: row.meetingId,
projectId: row.projectId ?? null,
projectNo: row.projectNo || '',
projectName: row.projectName || '',
meetingName: row.meetingName || '',
projectForm: row.projectForm || '',
startTime: row.startTime || '',
endTime: row.endTime || '',
totalPeriods: row.totalPeriods || 1,
currentStage: row.currentStage || '未执行',
remark: row.remark || ''
})
editOpen.value = true
}
async function submitEdit() {
editSubmitting.value = true
const isCopy = editMode.value === 'copy'
try {
await bizUpdate('meeting', { ...editForm })
ElMessage.success('修改成功')
const payload = { ...editForm }
if (isCopy) {
// 复制: 走 bizAdd, 不传 meetingId (AUTO_INCREMENT) 和 businessId (后端兜底)
delete payload.meetingId
await bizAdd('meeting', payload, { __silentError: true })
} else {
// 修改: 走 bizUpdate
await bizUpdate('meeting', payload, { __silentError: true })
}
ElMessage.success(isCopy ? '复制成功' : '修改成功')
editOpen.value = false
load()
} catch (e) { ElMessage.error('修改失败') }
finally { editSubmitting.value = false }
} catch (e) {
ElMessage.error(e?.msg || (isCopy ? '复制失败' : '修改失败'))
} finally {
editSubmitting.value = false
}
}
// ========== 提交 (单条) ==========
async function onSubmit(row) {
try { await ElMessageBox.confirm(`确定提交会议「${row.meetingName}」吗?`, '提交确认', { type: 'warning' }) } catch { return }
try {
await bizUpdate('meeting', { meetingId: row.meetingId, currentStage: '执行中' })
await bizUpdate('meeting', { meetingId: row.meetingId, currentStage: '执行中' }, { __silentError: true })
ElMessage.success('提交成功')
load()
} catch { ElMessage.error('提交失败') }
} catch (e) { ElMessage.error(e?.msg || '提交失败') }
}
// ========== 复制 (单条) ==========
function onCopy(row) {
// 复制行到会议名 + ' 副本' 打开新建/编辑表单
// 复制行到会议名 + ' 副本' 打开 dialog, 走 bizAdd 创建新会议 (跟 onEdit 共用同一 dialog, editMode='copy')
editMode.value = 'copy'
Object.assign(editForm, {
meetingId: '', meetingName: (row.meetingName || '') + ' 副本',
projectForm: row.projectForm || '', startTime: row.startTime || '',
endTime: row.endTime || '', totalPeriods: row.totalPeriods || 1,
meetingId: '',
projectId: row.projectId ?? null,
projectNo: row.projectNo || '',
projectName: row.projectName || '',
meetingName: (row.meetingName || '') + ' 副本',
projectForm: row.projectForm || '',
startTime: row.startTime || '',
endTime: row.endTime || '',
totalPeriods: row.totalPeriods || 1,
currentStage: '未执行',
remark: row.remark || ''
})
editOpen.value = true
@@ -269,11 +305,11 @@ async function onBatchSubmit() {
try {
// 逐条更新 (无批量接口)
for (const id of selectedIds.value) {
await bizUpdate('meeting', { meetingId: id, currentStage: '执行中' })
await bizUpdate('meeting', { meetingId: id, currentStage: '执行中' }, { __silentError: true })
}
ElMessage.success('批量提交成功')
load()
} catch { ElMessage.error('批量提交失败') }
} catch (e) { ElMessage.error(e?.msg || '批量提交失败') }
}
onMounted(load)