fix(material): 附件备注输入框按写权限置灰,消除 UI 与后端口径撕裂

背景
----
读权限(material_list:files,6 角色)决定「产品图」整块是否显示;
但写权限已收紧到 material_list:remark_edit(3 角色)。若前端不区分,
入库员/出库员/销售会看到可输入的备注框,填完却被后端静默丢弃 ——
正是本次要消灭的「能填却存不进去」的撕裂。

改动
----
list.vue(基础信息)与 buyOdoo.vue(基础信息(Odoo))各新增 canEditRemark,
两个备注输入框绑定 :disabled="!canEditRemark",并把占位文案切换为
「无编辑权限,仅可查看」,避免用户对着灰框发懵。

三处口径必须一致,已交叉核对:
    前端 list.vue / buyOdoo.vue 的 canEditRemark
    后端 base.py 的 field_to_perm(写)
    后端 field_permissions.py 的映射(读)
This commit is contained in:
yueli
2026-09-17 11:07:58 +08:00
parent fd084bf8fd
commit 70071e111a
2 changed files with 33 additions and 4 deletions

View File

@ -546,7 +546,8 @@
v-model="form.productImageRemark"
type="textarea"
:rows="1"
placeholder="请输入产品图备注信息"
:disabled="!canEditRemark"
:placeholder="canEditRemark ? '请输入产品图备注信息' : '无编辑权限,仅可查看'"
style="margin-top: 8px;"
clearable
/>
@ -600,7 +601,8 @@
v-model="form.manualLinkRemark"
type="textarea"
:rows="1"
placeholder="请输入说明书备注信息"
:disabled="!canEditRemark"
:placeholder="canEditRemark ? '请输入说明书备注信息' : '无编辑权限,仅可查看'"
style="margin-top: 8px;"
clearable
/>
@ -742,6 +744,16 @@ import { imageSearch as imageSearchApi, type ImageSearchItem } from '@/api/commo
const userStore = useUserStore();
const isSuperAdmin = computed(() => userStore.role === 'SUPER_ADMIN');
// ★ 附件备注(产品图备注 / 说明书备注)的**写**权限,与读权限分离。
// 与 list.vue、后端 base.py 三处同口径:
// 读 → material_list:files (区块整体可见,6 个角色)
// 写 → material_list:remark_edit (3 个核心管理角色)
// 无写权限时输入框置灰但仍可见 —— 读权限决定可见性。
const canEditRemark = computed(() => {
if (userStore.role === 'SUPER_ADMIN' || userStore.username === 'IRIS') return true;
return userStore.hasPermission('material_list:remark_edit');
});
// --- 类型定义 ---
interface MaterialBaseVO {
id: number;