diff --git a/furniture-3d-system/src/lib/intake-node-permission-settings.test.ts b/furniture-3d-system/src/lib/intake-node-permission-settings.test.ts index 4e320046..2606b7bf 100644 --- a/furniture-3d-system/src/lib/intake-node-permission-settings.test.ts +++ b/furniture-3d-system/src/lib/intake-node-permission-settings.test.ts @@ -68,7 +68,7 @@ describe('intake node permission settings', () => { '江苏简尚品牌管理有限公司 > 供应链中心 > 品牌 采购部 > 跟单组', ], }), - ).toEqual(['merchandiser']) + ).toEqual(['merchandiser', 'purchase']) expect( resolveIntakeNodePermissionSubjectKeys({ @@ -99,7 +99,7 @@ describe('intake node permission settings', () => { '江苏简尚品牌管理有限公司 > 供应链中心 > 跟单质检部', ], }), - ).toEqual(['merchandiser']) + ).toEqual(['merchandiser', 'purchase']) expect( resolveIntakeNodePermissionSubjectKeys({ @@ -110,7 +110,7 @@ describe('intake node permission settings', () => { '江苏简尚品牌管理有限公司 > 供应链中心 > 跟单质检部', ], }), - ).toEqual(['merchandiser']) + ).toEqual(['merchandiser', 'purchase']) expect( resolveIntakeNodePermissionSubjectKeys({ @@ -188,6 +188,37 @@ describe('intake node permission settings', () => { ).toEqual(['management']) }) + it('lets merchandiser users inherit permissions opened for purchasing', () => { + const subjectKeys = resolveIntakeNodePermissionSubjectKeys({ + name: '雁兰', + role: 'USER', + businessRoles: ['PURCHASING'], + departmentPaths: [ + '江苏简尚品牌管理有限公司 > 供应链中心 > 跟单质检部', + ], + }) + + expect(subjectKeys).toEqual(['merchandiser', 'purchase']) + + expect( + resolveIntakeNodePermissionAccess({}, 'bomCostingWorkbench', subjectKeys), + ).toMatchObject({ + defaultState: 'readonly', + view: true, + edit: false, + }) + + const overrides = sanitizeIntakeNodePermissionOverrides({ + [buildIntakeNodePermissionOverrideKey('warehouseManage', 'purchase', 'view')]: true, + }) + expect( + resolveIntakeNodePermissionAccess(overrides, 'warehouseManage', subjectKeys), + ).toMatchObject({ view: true, download: false, edit: false }) + expect( + resolveIntakeNodePermissionAccess({}, 'warehouseManage', subjectKeys), + ).toMatchObject({ view: false, edit: false }) + }) + it('uses the same matrix for default view, download, and admin-opened overrides', () => { const spaceKeys = ['space'] as const expect( diff --git a/furniture-3d-system/src/lib/intake-node-permission-settings.ts b/furniture-3d-system/src/lib/intake-node-permission-settings.ts index d519c3f3..cc9c00a4 100644 --- a/furniture-3d-system/src/lib/intake-node-permission-settings.ts +++ b/furniture-3d-system/src/lib/intake-node-permission-settings.ts @@ -1055,6 +1055,8 @@ export function resolveIntakeNodePermissionSubjectKeys( hasDepartmentPath(user, isMerchandiserDepartmentPath) ) { pushUniqueSubject(keys, "merchandiser"); + // 采购-跟单必须继承采购负责人主体:给采购开的权限对跟单自动生效,不允许两套分开开 + pushUniqueSubject(keys, "purchase"); } if (