| | |
| | | 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() |
| | |
| | | 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 { |
| | |
| | | |
| | | async function generateFromLatestSource() { |
| | | if (saving.value || !editingRecord.value || !editingId.value) return |
| | | const baseRecord = editingRecord.value |
| | | let reason: string |
| | | try { |
| | | const result = await ElMessageBox.prompt('将重新读取当前来源并生成新版本,保留已有人工表格值。', '按最新来源生成版本', { |
| | |
| | | }) |
| | | 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}`) |
| | |
| | | .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; } |