fix(purchase): 待采购清单的参考价格改按 material_list:referencePrice 管控
修复一个权限旁路:待采购清单的「参考单价」原本后端无条件返回、前端列也没有 任何门控,而 material_list:referencePrice 只授予 SUPER_ADMIN 与 SUPERVISOR。 结果是 WAREHOUSE_MGR(库管) / INBOUND(入库员) / SALES(销售) 虽然都持有 inbound_purchase:pending_pool、能打开待采购清单,就会看到参考价格 —— 而这个 数字他们在物料列表里是被挡住的。等于本页面成了绕过该权限的后门。 参考价格来自 material_base.reference_price,与物料列表同源,因此复用同一个 权限码管控,不另造新码(同源数据用同码,口径才不会漂)。 改动: - 后端 get_pending_purchase_pool 新增 include_reference_price 参数, fail-closed 默认 False;无权限时**整个字段不返回**而不是给 None - 新增 _has_material_reference_price_perm(),判定方式与既有的 _filter_purchase_prices 保持一致(超管/主管放行 + 逐个权限码比对) - 前端「参考单价」列加 hasPermission 门控,TS 类型改为可选 ★ 只挡前端等于没挡(接口仍然裸奔),前后端必须同时改。
This commit is contained in:
@ -175,7 +175,8 @@ export interface PendingPoolItem {
|
||||
company_name: string
|
||||
image: string
|
||||
purchase_link: string
|
||||
reference_price: number | null
|
||||
// 仅供参考展示,受 material_list:referencePrice 管控 —— 无权限时后端**不返回该字段**
|
||||
reference_price?: number | null
|
||||
inventory_count: number
|
||||
available_count: number
|
||||
// 在途量 = 该物料所有活跃采购单的剩余待入库量之和
|
||||
|
||||
@ -184,7 +184,15 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="参考单价" width="110" align="right">
|
||||
<!-- ★ 参考价格是受 material_list:referencePrice 管控的价格数据(与物料列表同源
|
||||
同码)。这里与后端 include_reference_price 一一对应:后端无权限时整字段
|
||||
不返回,前端也不渲染该列 —— 只挡前端等于没挡,接口仍然裸奔。 -->
|
||||
<el-table-column
|
||||
v-if="userStore.hasPermission('material_list:referencePrice')"
|
||||
label="参考单价"
|
||||
width="110"
|
||||
align="right"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.reference_price != null">{{ row.reference_price.toFixed(2) }}</span>
|
||||
<span v-else style="color: #c0c4cc;">-</span>
|
||||
|
||||
Reference in New Issue
Block a user