yeg
2026-09-06 4c88dd070511f19f266e0050c83e5f0468cb8b96
整理对比报表历史与编辑权限注释

说明最新编辑基准与历史查看的权限边界,以及历史弹窗和更新来源的旧请求隔离。
3个文件已修改
6 ■■■■■ 已修改文件
src/api/compareReports.ts 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/CompareReportHistoryDialog.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ReportCompareForm.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/compareReports.ts
@@ -80,7 +80,7 @@
    method: 'POST', body: JSON.stringify(data),
  })).data
}
/** 读取已保存快照,不依赖来源测试仍存在或保持原值。 */
/** 读取独立快照;编辑权限入口只返回最新基准,指定历史版须使用查看权限入口。 */
export async function getCompareReport(id: number, versionNo?: number, editing = false) {
  const suffix = editing ? '/editing' : versionNo === undefined ? '' : `/versions/${versionNo}`
  return (await request<ApiResponse & { data: SavedCompareReport }>(`/system/compare-report/${id}${suffix}`)).data
@@ -98,7 +98,7 @@
  return (await request<ApiResponse & { data: CompareVersionSummary[] }>(`/system/compare-report/${id}/versions`)).data
}
/** 普通编辑只提交展示值,来源范围与测量沿用后端基准快照。 */
/** 普通编辑只提交展示值,来源范围与测量沿用快照;后端拒绝陈旧基准。 */
export async function editCompareReport(id: number, data: Omit<CreateCompareReport, 'selections'> & { baseVersionNo: number; changeSummary: string }) {
  return (await request<ApiResponse & { data: SavedCompareReport }>(`/system/compare-report/${id}/versions`, {
    method: 'POST', body: JSON.stringify(data),
src/components/CompareReportHistoryDialog.vue
@@ -10,6 +10,7 @@
const loading = ref(false)
const error = ref('')
// 切换报表或关闭弹窗后,旧请求不能覆盖下次打开的历史列表。
watch(() => [visible.value, props.reportId] as const, async ([open, id], _old, onCleanup) => {
  let cancelled = false
  onCleanup(() => { cancelled = true })
src/views/ReportCompareForm.vue
@@ -441,6 +441,7 @@
async function generateFromLatestSource() {
  if (saving.value || !editingRecord.value || !editingId.value) return
  // 确认框与更新请求都绑定当前版本,导航或重载后不再用旧结果替换页面。
  const baseRecord = editingRecord.value
  let reason: string
  try {