From 27436f5efe53a855e70fdad1708dc8a26563b987 Mon Sep 17 00:00:00 2001 From: yueli Date: Wed, 16 Sep 2026 16:46:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E8=8F=9C=E5=8D=95=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=BF=87=E6=BB=A4=E4=B8=8E=E9=80=80=E5=9B=9E=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 侧边栏支持按权限隐藏菜单(Sidebar/index.vue): - 新增 canSee():读取 meta.permissions(数组,满足任一即可) - ★ 同时修了一个既有缺陷:原实现只过滤顶层路由,**子路由的权限判定不生效**, 未授权用户仍能在菜单里看到入口。现改为递归过滤,父菜单的子项被过滤光后 父菜单本身也不再显示。 - ★ 刻意只认 meta.permissions(新键),历史遗留的 meta.permission(单数, 如「维修管理」的 inbound_repair)保持不生效——一旦开始消费它,会让若干 菜单对部分角色突然消失,属于超出本次范围的静默行为变更。两者若要统一, 建议单独排期逐个核对影响面。 路由守卫(router/index.ts): - 新增 meta.permissions 校验,未授权时提示并跳首页。侧边栏负责「菜单看不见」, 守卫负责「直接敲 URL 也进不去」,后端负责「绕过前端直接调接口也不行」, 三层任一失效都不至于越权。 - 顺带修了原守卫的分支结构:roles 通过时直接 next(),会跳过后续检查; 改为不通过才中断,落到末尾统一 next()。 新增「退回记录」页(views/outbound/returns/index.vue): - 纯只读台账,无任何操作按钮,供库管核对历史退回 - 展示 退回时间 / 原出库单号 / 物料名称 / 规格 / SKU / 退回数量 / 退回类型 / 退回原因 / 操作人 - 退回类型用标签区分(不良品=红,良品=绿) - 源库存行或原单被删除时显示占位文案而非空白,台账不留哑行 api/inbound/return.ts 补 getReturnList()。 --- inventory-web/src/api/inbound/return.ts | 25 +++ .../src/layout/components/Sidebar/index.vue | 30 ++- inventory-web/src/router/index.ts | 45 +++- .../src/views/outbound/returns/index.vue | 193 ++++++++++++++++++ 4 files changed, 285 insertions(+), 8 deletions(-) create mode 100644 inventory-web/src/views/outbound/returns/index.vue diff --git a/inventory-web/src/api/inbound/return.ts b/inventory-web/src/api/inbound/return.ts index 9d7b6f5..0d13310 100644 --- a/inventory-web/src/api/inbound/return.ts +++ b/inventory-web/src/api/inbound/return.ts @@ -84,3 +84,28 @@ export function scrapDefective(id: number, data: { scrap_qty?: number; reason: s data }) } + +/** + * 退回流水台账(只读)。 + * + * @param params { + * page?, page_size?, + * keyword?, 模糊匹配 出库单号 / SKU / 操作人 + * return_type?, '良品' | '不良品';'全部' 或留空 = 不过滤 + * start_date?, end_date? 按退回时间过滤(YYYY-MM-DD) + * } + */ +export function getReturnList(params: { + page?: number + page_size?: number + keyword?: string + return_type?: string + start_date?: string + end_date?: string +}) { + return request({ + url: '/outbound/returns', + method: 'get', + params + }) +} diff --git a/inventory-web/src/layout/components/Sidebar/index.vue b/inventory-web/src/layout/components/Sidebar/index.vue index 9cc0e2e..5ef0137 100644 --- a/inventory-web/src/layout/components/Sidebar/index.vue +++ b/inventory-web/src/layout/components/Sidebar/index.vue @@ -46,18 +46,44 @@ + +