整理对比报表历史与编辑权限注释
说明最新编辑基准与历史查看的权限边界,以及历史弹窗和更新来源的旧请求隔离。
| | |
| | | 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 |
| | |
| | | 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), |
| | |
| | | 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 }) |
| | |
| | | |
| | | async function generateFromLatestSource() { |
| | | if (saving.value || !editingRecord.value || !editingId.value) return |
| | | // 确认框与更新请求都绑定当前版本,导航或重载后不再用旧结果替换页面。 |
| | | const baseRecord = editingRecord.value |
| | | let reason: string |
| | | try { |