管理员账号(admin、普通2、最高1 角色)在全部模块拥有所有查看、编辑、新增、删除权限,不再受各模块"归属人/维护人"等硬编码限制约束。
全局权限层(*:*:* 权限、数据范围过滤、租户行级过滤)原本已对 admin 放行,本改动解除的是各模块中**归属人/维护人校验**的额外限制。
前端统一使用(与 approvalProcess/index.vue、safeWorkApproval/index.vue 既有模式一致):
const isAdminUser = computed(() =>
["admin", "普通2", "最高1"].some(r => (userStore.roles || []).includes(r))
);
后端对应 SecurityUtils.isAdmin(userId)(SecurityUtils.java)= 拥有 普通2 / admin / 最高1 任一角色。
| 模块 | 页面 | 限制点 | 改动 |
|---|---|---|---|
| 销售 | salesManagement/salesLedger/index.vue |
编辑/删除按钮仅维护人可操作;非维护人金额列显示 *****;合计掩码 |
canEditLedger/canDeleteLedger 加 \|\| isAdminUser.value;两个金额 formatter 加 && !isAdminUser.value;summarizeChildrenTable 同样豁免 |
| 客户 | basicData/customerFileOpenSea/index.vue |
公海删除拦截"不可删除他人维护的数据" | 删除 filter 加 && !isAdminUser.value |
| 客户 | basicData/customerFile/index.vue |
私海删除拦截"公海分配的客户不能删除" | 删除 filter 加 && !isAdminUser.value |
| 供应商 | basicData/supplierManage/components/HomeTab.vue、BlacklistTab.vue |
删除拦截他人维护 | 删除 filter 加 && !isAdminUser.value |
| 采购 | collaborativeApproval/purchaseApproval/index.vue |
删除拦截他人维护 | 删除 filter 加 && !isAdminUser.value |
| 质量 | qualityManagement/rawMaterialInspection/index.vue、processInspection/index.vue、finalInspection/index.vue |
检验/提交按钮仅检验员本人可操作 | disabled 判定加 && !isAdminUser.value |
| 客服 | customerService/feedbackRegistration/index.vue |
删除拦截他人数据 | 删除 filter 加 && !isAdminUser.value |
| 安全 | safeProduction/dangerInvestigation/index.vue |
整改按钮仅归属人可操作 | isRectify 对 admin 恒为 false(按钮不禁用) |
| 生产 | productionManagement/workOrder/index.vue |
报工仅工单/工序报工人可操作;排产仅工序人员可操作 | canCurrentUserReport 加 isAdminUser.value;canScheduleByWorkOrderNo 对 admin 直接返回 true |
basic/controller/CustomerPrivatePoolController.java(客户私海列表)@GetMapping("/listPage")
@ApiOperation("客户(私海)列表")
public R listPage(CustomerPrivatePoolDto customerPrivatePoolDto, Page<CustomerPrivatePoolDto> page){
// 管理员可查看全部客户,不受归属人限制
if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())) {
customerPrivatePoolDto.setBoundId(SecurityUtils.getUserId());
}
IPage<CustomerPrivatePoolDto> listPage = customerPrivatePoolService.listPage(page, customerPrivatePoolDto);
return R.ok(listPage);
}
CustomerPrivatePoolMapper.xml的boundId != null动态条件天然支持空值跳过,无需改 mapper。
<script setup> 中引入 computed(部分页面原本未引入)并定义 isAdminUseruserStore,本次新增 import useUserStore from "@/store/modules/user" 引入