diff --git a/frontend/src/views/BudgetManagement.vue b/frontend/src/views/BudgetManagement.vue
index 70769363..e28f506a 100644
--- a/frontend/src/views/BudgetManagement.vue
+++ b/frontend/src/views/BudgetManagement.vue
@@ -19,6 +19,9 @@
+
+
+
查询
@@ -452,7 +455,7 @@ function getEntityId() {
return Number(localStorage.getItem('cma_entity_id') || 1)
}
const yearOptions = computed(() => { const y: number[] = []; for (let i = currentYear - 2; i <= currentYear + 2; i++) y.push(i); return y })
-const filterYear = ref(currentYear); const filterMonth = ref(0); const searchKpi = ref('')
+const filterYear = ref(currentYear); const filterMonth = ref(0); const searchKpi = ref(''); const filterVersion = ref('')
const loading = ref(false); const budgetList = ref
([]); const page = ref(1); const pageSize = ref(20); const total = ref(0); const noMap = ref(false)
const batchEditMode = ref(false); const batchSavingAll = ref(false)
@@ -495,6 +498,8 @@ async function loadPublishedMaps() {
function onMapSelect(id: number) {
selectedMap.value = publishedMaps.value.find(m => m.id === id) || null
+ filterVersion.value = '' // 切换地图清空版本筛选(重新加载后由用户选择)
+ loadVersions() // 加载该地图年度版本列表供筛选
loadBudget()
}
@@ -545,7 +550,7 @@ async function loadBudget() {
if (mapCodes.size === 0) { budgetList.value = []; total.value = 0; return }
noMap.value = false; loading.value = true
try {
- const params: any = { page: page.value, page_size: pageSize.value, entity_id: getEntityId(), map_id: selectedMapId.value }; if (filterYear.value) params.year = filterYear.value; if (filterMonth.value > 0) params.budget_month = filterMonth.value; if (searchKpi.value) params.keyword = searchKpi.value
+ const params: any = { page: page.value, page_size: pageSize.value, entity_id: getEntityId(), map_id: selectedMapId.value }; if (filterYear.value) params.year = filterYear.value; if (filterVersion.value) params.version = filterVersion.value; if (filterMonth.value > 0) params.budget_month = filterMonth.value; if (searchKpi.value) params.keyword = searchKpi.value
const r: any = await budgetApi.list(params); const d = r.data || r || []; const allPlans = (Array.isArray(d) ? d : (d.items || [])) as any[]
// 只保留选中地图关联KPI的预算记录
const plans = allPlans.filter((p: any) => mapCodes.has(p.kpi_code))