From f2384cd6229df223707ed48c15bce8f1483e35cc Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期日, 06 九月 2026 17:44:24 +0800
Subject: [PATCH] 修复仅编辑权限的报表预览与更新入口
---
src/views/ReportCompareForm.vue | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/views/ReportCompareForm.vue b/src/views/ReportCompareForm.vue
index 8f25426..a6ad60d 100644
--- a/src/views/ReportCompareForm.vue
+++ b/src/views/ReportCompareForm.vue
@@ -214,7 +214,9 @@
canQuery.value = Boolean(info.permissions?.some(item => item === '*:*:*' || item === 'system:compare-report:query'))
if (id) {
if (mode === 'edit' && (!canEdit.value || version !== undefined)) throw new Error('历史版本只读或无编辑权限')
- const record = await getCompareReport(id, version === undefined ? undefined : Number(version), mode === 'edit')
+ // 编辑权限包含读取最新编辑基准,取消或保存后仍可预览;历史查看单独要求查看权限。
+ const editingAccess = mode === 'edit' || (!canQuery.value && canEdit.value && version === undefined)
+ const record = await getCompareReport(id, version === undefined ? undefined : Number(version), editingAccess)
if (cancelled) return
editingRecord.value = record
loadEditingReport()
@@ -429,13 +431,7 @@
await createCompareReport({ ...content, selections: selectedTests.value.map(item => item.selection) })
}
ElMessage.success('对比报表已保存')
- if (editingId.value && !canQuery.value) {
- editingRecord.value = await getCompareReport(editingId.value, undefined, true)
- loadEditingReport()
- changeSummary.value = ''
- } else {
- await router.push(editingId.value ? { path: `/report-compare/${editingId.value}/edit`, query: { mode: 'view' } } : '/report-compare')
- }
+ await router.push(editingId.value ? { path: `/report-compare/${editingId.value}/edit`, query: { mode: 'view' } } : '/report-compare')
} catch (error) {
ElMessage.error(error instanceof Error ? error.message : '保存失败,请重试')
} finally {
@@ -445,6 +441,7 @@
async function generateFromLatestSource() {
if (saving.value || !editingRecord.value || !editingId.value) return
+ const baseRecord = editingRecord.value
let reason: string
try {
const result = await ElMessageBox.prompt('将重新读取当前来源并生成新版本,保留已有人工表格值。', '按最新来源生成版本', {
@@ -453,9 +450,11 @@
})
reason = result.value.trim()
} catch { return }
+ if (editingRecord.value !== baseRecord) return
saving.value = true
try {
- const record = await refreshCompareSource(editingId.value, editingRecord.value.versionNo, reason)
+ const record = await refreshCompareSource(baseRecord.id, baseRecord.versionNo, reason)
+ if (editingRecord.value !== baseRecord) return
editingRecord.value = record
loadEditingReport()
ElMessage.success(`已生成版本 ${record.versionNo}`)
@@ -574,6 +573,7 @@
.report-name-panel, .compare-info-panel, .detail-panel, .metrics-panel { background: #fff; border: 1px solid #d8e1e9; }
.report-name-panel { padding: 18px 22px; margin-bottom: 16px; }
.report-name-panel label + label { margin-top: 12px; }
+.report-name-panel > span { display: block; margin-top: 12px; overflow-wrap: anywhere; }
.series-swatch { flex: 0 0 12px; width: 12px; height: 12px; display: inline-block; }
.report-name-panel label { display: grid; grid-template-columns: 72px minmax(260px, 420px); align-items: center; gap: 12px; }
.report-name-panel label > span, .detail-meta label > span { color: #52606d; font-size: 12px; font-weight: 500; }
--
Gitblit v1.7.1