编辑 | blame | 历史 | 原始文档

管理员全模块全权限豁免

功能说明

管理员账号(admin、普通2、最高1 角色)在全部模块拥有所有查看、编辑、新增、删除权限,不再受各模块"归属人/维护人"等硬编码限制约束。

全局权限层(*:*:* 权限、数据范围过滤、租户行级过滤)原本已对 admin 放行,本改动解除的是各模块中**归属人/维护人校验**的额外限制。

admin 判定方式

前端统一使用(与 approvalProcess/index.vuesafeWorkApproval/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.valuesummarizeChildrenTable 同样豁免
客户 basicData/customerFileOpenSea/index.vue 公海删除拦截"不可删除他人维护的数据" 删除 filter 加 && !isAdminUser.value
客户 basicData/customerFile/index.vue 私海删除拦截"公海分配的客户不能删除" 删除 filter 加 && !isAdminUser.value
供应商 basicData/supplierManage/components/HomeTab.vueBlacklistTab.vue 删除拦截他人维护 删除 filter 加 && !isAdminUser.value
采购 collaborativeApproval/purchaseApproval/index.vue 删除拦截他人维护 删除 filter 加 && !isAdminUser.value
质量 qualityManagement/rawMaterialInspection/index.vueprocessInspection/index.vuefinalInspection/index.vue 检验/提交按钮仅检验员本人可操作 disabled 判定加 && !isAdminUser.value
客服 customerService/feedbackRegistration/index.vue 删除拦截他人数据 删除 filter 加 && !isAdminUser.value
安全 safeProduction/dangerInvestigation/index.vue 整改按钮仅归属人可操作 isRectify 对 admin 恒为 false(按钮不禁用)
生产 productionManagement/workOrder/index.vue 报工仅工单/工序报工人可操作;排产仅工序人员可操作 canCurrentUserReportisAdminUser.valuecanScheduleByWorkOrderNo 对 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.xmlboundId != null 动态条件天然支持空值跳过,无需改 mapper。

注意事项

  • 各页面需在 <script setup> 中引入 computed(部分页面原本未引入)并定义 isAdminUser
  • 质量检验三模块中"检验/提交"两处 disabled 逻辑均需同步修改
  • 工单页此前未使用 userStore,本次新增 import useUserStore from "@/store/modules/user" 引入
  • 非 admin 账号上述限制保持原样,不受影响