diff --git a/frontend/src/views/BudgetManagement.vue b/frontend/src/views/BudgetManagement.vue
index 3d41a8f2..ef759609 100644
--- a/frontend/src/views/BudgetManagement.vue
+++ b/frontend/src/views/BudgetManagement.vue
@@ -714,11 +714,11 @@
对比 {{ diffData.summary.version_a }} → {{ diffData.summary.version_b }}
-
- {{ formatNumber(row.old_value) }}
- {{ formatNumber(row.new_value) }}
- {{ row.diff_value > 0 ? '+' : '' }}{{ formatNumber(row.diff_value) }}
- 持平{{ row.diff_rate > 0 ? '+' : '' }}{{ row.diff_rate }}%
+
+ {{ formatNumber(row.version_a) }}
+ {{ formatNumber(row.version_b) }}
+ {{ row.diff > 0 ? '+' : '' }}{{ formatNumber(row.diff) }}
+ 持平-{{ row.diff_rate > 0 ? '+' : '' }}{{ row.diff_rate }}%
关闭
@@ -1089,7 +1089,7 @@ async function resubmitVersion(row: any) { try { await ElMessageBox.confirm(`确
const versionYear = ref(currentYear); const versionsList = ref([]); const versionsLoading = ref(false); const selectedVersions = ref([]); const showVersionDiff = ref(false); const diffLoading = ref(false); const diffData = ref(null); const currentVersion = ref('')
async function loadVersions() { versionsLoading.value = true; try { const r: any = await budgetApi.versions({ year: versionYear.value, entity_id: getEntityId() }); const d = Array.isArray(r) ? r : (r.data || []); versionsList.value = d.map((v: any) => ({ ...v, _selected: false })); currentVersion.value = d[0]?.version || '' } catch (e) { ElMessage.error('加载版本列表失败') }; versionsLoading.value = false }
function onVersionSelect(row: any) { selectedVersions.value = versionsList.value.filter((v: any) => v._selected); if (selectedVersions.value.length > 2) { row._selected = false; selectedVersions.value = versionsList.value.filter((v: any) => v._selected) } }
-async function loadVersionDiff() { if (selectedVersions.value.length !== 2) return; diffLoading.value = true; try { const [a, b] = selectedVersions.value; const r: any = await budgetApi.versionDiff({ version_a: a.version, version_b: b.version, year: versionYear.value }); diffData.value = r; showVersionDiff.value = true } catch (e) { ElMessage.error('加载版本对比失败') }; diffLoading.value = false }
+async function loadVersionDiff() { if (selectedVersions.value.length !== 2) return; diffLoading.value = true; try { const [a, b] = selectedVersions.value; const r: any = await budgetApi.versionDiff({ version_a: a.version, version_b: b.version, year: versionYear.value }); const diffs: any[] = (r && Array.isArray(r.diffs)) ? r.diffs : []; diffs.forEach((d: any) => { d.diff_rate = (typeof d.version_a === 'number' && d.version_a > 0 && typeof d.diff === 'number') ? Math.round(d.diff / d.version_a * 100) : null }); diffData.value = r; showVersionDiff.value = true } catch (e) { ElMessage.error('加载版本对比失败') }; diffLoading.value = false }
const execFilterYear = ref(currentYear); const execFilterMonth = ref(new Date().getMonth()); const execFilterDim = ref(''); const execLoading = ref(false); const execReport = ref([]); const execSummaryCards = ref([])
async function loadExecutionReport() {