【后端】/tree 支持 ?prefixes=Y 或 ?prefixes=C,L(逗号分隔) 只在**顶层**按 name / full_path 前缀过滤,命中即整棵子树保留 —— 不递归裁剪,避免把子树打散导致前端勾选语义错乱。不传则全量。 刻意不用懒加载:setCheckedKeys / getCheckedNodes 依赖全树已构建。 实测节点数(含子树): 全量 3371 → IRIS (Y) 500(↓85%)→ LICA (C,L) 2871(↓15%) IRIS 收益很大;LICA 的前缀覆盖了树的大部分分支,故提升有限。 【前端】 - getWarehouseTree(prefixes?) 透传前缀,loadLocationTree 从 getAllowedLocPrefixes(selectedCompany) 取;后端已做过滤, 前端不再重复过滤,删掉冗余的 filterTreeByCompany。 - fetchRecommendLocations 改为 Promise.all 并行拉树与推荐, 取代原来的串行 await(两段网络等待不再叠加); setCheckedKeys 前仍保留 await nextTick() 等树渲染完。 【顺带修一个上一轮引入的 bug】 右侧自 leafOnly 改造后只存末级路径,而推荐返回的是库存级路径、可能是 非末级,原来的逐字比对必然对不上,会把正常勾选的库位误报成 「未能勾选」。改为按「自身或其祖先」判定覆盖。 实测: prefixes 过滤正确(IRIS 8 个顶层 / LICA 25 个 / 不传 33 个)
Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.
Learn more about the recommended Project Setup and IDE Support in the Vue Docs TypeScript Guide.