From 24625133e3befc7790499f7a4361c1aa4beca671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E7=A0=81-=E6=96=B9=E6=99=93=E8=BE=89?= Date: Tue, 3 Feb 2026 17:17:28 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用后端 /region/tree 接口,避免前端递归构建树 - 默认折叠树节点,减少 DOM 渲染 --- .../src/views/business/base/region/index.vue | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/frontend/ruoyi-ui/src/views/business/base/region/index.vue b/frontend/ruoyi-ui/src/views/business/base/region/index.vue index f778e23..c3067d8 100644 --- a/frontend/ruoyi-ui/src/views/business/base/region/index.vue +++ b/frontend/ruoyi-ui/src/views/business/base/region/index.vue @@ -118,7 +118,7 @@ const loading = ref(false) const tableData = ref([]) const regionOptions = ref([]) const refreshTable = ref(true) -const isExpandAll = ref(true) +const isExpandAll = ref(false) // 默认折叠,避免渲染大量节点 const queryParams = ref({ regionName: '', @@ -141,13 +141,13 @@ const rules = { regionName: [{ required: true, message: '请输入区域名称', trigger: 'blur' }] } -// 获取区域列表(树形) +// 获取区域列表(树形)- 使用后端已构建好的树接口 const getList = async () => { loading.value = true try { - const res = await request.get('/business/region/list', { params: queryParams.value }) + const res = await request.get('/business/region/tree') if (res.code === 200) { - tableData.value = buildTree(res.data || []) + tableData.value = res.data || [] } } finally { loading.value = false @@ -156,23 +156,12 @@ const getList = async () => { // 获取区域树选项(用于下拉选择) const getRegionOptions = async () => { - const res = await request.get('/business/region/list') + const res = await request.get('/business/region/tree') if (res.code === 200) { - regionOptions.value = [{ regionId: 0, regionName: '顶级区域', children: buildTree(res.data || []) }] + regionOptions.value = [{ regionId: 0, regionName: '顶级区域', children: res.data || [] }] } } -// 构建树形结构 -const buildTree = (data, parentId = 0) => { - return data - .filter(item => item.parentId === parentId) - .map(item => ({ - ...item, - children: buildTree(data, item.regionId) - })) - .filter(item => item.children.length > 0 || data.some(d => d.regionId === item.regionId)) -} - // 展开/折叠 const toggleExpandAll = () => { refreshTable.value = false