- 后端:pickingBinSalesAnalysis 配置/服务/路由,仓位库存取 rpt.jst_packInventoryInfo (bin_group 空值=拣选位、存货=存货位),销量按「SKU 占用同类仓位数平均分摊」, 恒等式「全部库位销量之和 = 有库位 SKU 销量之和」差异为 0 - 动销等级(近 N 天日销,默认 15):爆款>=20、热卖款 10-20、平销款 3-10、 滞销款-1 1-3、滞销款-2 (0,1)、销售=0 - 前端:大货库存监控下新增二级菜单 + 页面(等级卡片、仓库/类型/天数/仓位筛选、 分页表格、xlsx 导出),路由/菜单/页面权限四处注册 - 测试:后端 8 项单测通过;前端 lint/test/build 通过
73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
const ROLES = ['admin', 'analyst', 'user', 'guest'];
|
|
|
|
const DEFAULT_PLANNING_ROLES = { admin: true, analyst: true, user: true, guest: false };
|
|
const DEFAULT_SYSTEM_ROLES = { admin: true, analyst: false, user: false, guest: false };
|
|
|
|
const buildPlanningPage = ({ pageKey, pageName, path, allowSubPaths = false }) => ({
|
|
pageKey,
|
|
pageName,
|
|
path,
|
|
category: 'planning',
|
|
defaultRoles: DEFAULT_PLANNING_ROLES,
|
|
departmentDefaultAllowed: false,
|
|
...(allowSubPaths ? { allowSubPaths: true } : {}),
|
|
});
|
|
|
|
const SIDEBAR_PAGES = [
|
|
buildPlanningPage({ pageKey: 'ops_b_incentive', pageName: '激励看板', path: '/planning/operation/ops-b-incentive' }),
|
|
buildPlanningPage({
|
|
pageKey: 'dashboard_preview',
|
|
pageName: '仪表盘(开发预览)',
|
|
path: '/planning/dev-style-preview',
|
|
}),
|
|
buildPlanningPage({
|
|
pageKey: 'marketing_events',
|
|
pageName: '营销活动',
|
|
path: '/planning/operation/marketing-events',
|
|
allowSubPaths: true,
|
|
}),
|
|
buildPlanningPage({ pageKey: 'promotion_module', pageName: '推广模块', path: '/planning/operation/promotion-module' }),
|
|
buildPlanningPage({ pageKey: 'new_product_test', pageName: '新品测款', path: '/planning/operation/new-product-test' }),
|
|
buildPlanningPage({ pageKey: 'product_analysis', pageName: '商品分析', path: '/planning/operation/product-analysis' }),
|
|
buildPlanningPage({
|
|
pageKey: 'modular_stock_monitor',
|
|
pageName: '模块化库存监控 · 配件库存监控',
|
|
path: '/planning/operation/modular-stock-monitor',
|
|
}),
|
|
buildPlanningPage({
|
|
pageKey: 'mkh_bom',
|
|
pageName: '模块化库存监控 · MKH-BOM资料',
|
|
path: '/planning/operation/mkh-bom-data',
|
|
}),
|
|
buildPlanningPage({ pageKey: 'work_orders', pageName: '工单待办', path: '/planning/operation/work-orders' }),
|
|
buildPlanningPage({
|
|
pageKey: 'stock_sales_analysis',
|
|
pageName: '大货库存监控 · 库存动销分析',
|
|
path: '/planning/operation/stock-sales-analysis',
|
|
}),
|
|
buildPlanningPage({
|
|
pageKey: 'picking_bin_sales_analysis',
|
|
pageName: '大货库存监控 · 拣选库位动销分析',
|
|
path: '/planning/operation/picking-bin-sales-analysis',
|
|
}),
|
|
{
|
|
pageKey: 'settings',
|
|
pageName: '系统设置',
|
|
path: '/settings',
|
|
category: 'system',
|
|
defaultRoles: DEFAULT_SYSTEM_ROLES,
|
|
departmentDefaultAllowed: false,
|
|
},
|
|
];
|
|
|
|
const SIDEBAR_PAGE_MAP = SIDEBAR_PAGES.reduce((acc, page) => {
|
|
acc[page.pageKey] = page;
|
|
return acc;
|
|
}, {});
|
|
|
|
module.exports = {
|
|
ROLES,
|
|
SIDEBAR_PAGES,
|
|
SIDEBAR_PAGE_MAP,
|
|
};
|