fix: 修复列表筛选空参与树数据展示

将后端 status/audit_status 筛选从 has() 改为 filled(),避免空字符串导致列表被误筛空;修复预定 status=0 筛选失效;前端兼容财务分类树形返回与菜单/字典数组返回,解决新增成功但列表空。
This commit is contained in:
li
2026-03-15 00:06:11 +08:00
parent a29faa3b47
commit c778639f05
38 changed files with 99 additions and 40 deletions
+29
View File
@@ -1,6 +1,30 @@
import axios from 'axios'
import { ElMessage } from 'element-plus'
function normalizeParams(params) {
if (!params || typeof params !== 'object') return params
const p = { ...params }
// Normalize pagination params (some endpoints use per_page, some use page_size)
if (p.per_page !== undefined && p.per_page !== null && p.page_size === undefined) {
p.page_size = p.per_page
}
if (p.page_size !== undefined && p.page_size !== null && p.per_page === undefined) {
p.per_page = p.page_size
}
// Remove empty filters to avoid backend `has('status')` treating '' as a real filter
for (const key of Object.keys(p)) {
const v = p[key]
if (v === '' || v === null || v === undefined) {
delete p[key]
}
}
return p
}
const request = axios.create({
baseURL: '/api/v1',
timeout: 15000,
@@ -17,6 +41,11 @@ request.interceptors.request.use(
if (token) {
config.headers['Authorization'] = `Bearer ${token}`
}
if (config.params) {
config.params = normalizeParams(config.params)
}
return config
},
(error) => {
@@ -25,7 +25,7 @@ async function fetchList() {
loading.value = true
try {
const res = await financeCategoryApi.getList({ ...searchForm, ...pagination })
tableData.value = res.data?.list || res.data?.data || []
tableData.value = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || [])
total.value = res.data?.total || 0
} finally { loading.value = false }
}
@@ -73,7 +73,8 @@ async function fetchTypeList() {
keyword: typeSearch.keyword,
...typePagination
})
typeList.value = res.data?.list || []
const types = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || [])
typeList.value = types
typeTotal.value = res.data?.total || 0
// Auto-select first type
if (!selectedType.value && typeList.value.length > 0) {
+2 -2
View File
@@ -64,8 +64,8 @@ async function fetchTree() {
loading.value = true
try {
const res = await menuApi.getList({ per_page: 500 })
const flat = res.data?.list || res.data?.data || []
treeData.value = buildTree(flat)
const raw = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || [])
treeData.value = buildTree(raw)
} catch {
//
} finally {