All checks were successful
Build and Deploy Front / deploy (push) Successful in 5m37s
菜单走 SPA 回退;附件增加 POD;调试页去掉接口调试 tab。 Co-authored-by: Cursor <cursoragent@cursor.com>
1171 lines
42 KiB
TypeScript
1171 lines
42 KiB
TypeScript
/**
|
||
* 前端页面三级按钮目录(与菜单 permissionCode 关联)
|
||
*
|
||
* - parentPermissionCode:与菜单表二级节点一致(如 Rbac.Menus、Order.MyOrders)
|
||
* - permissionCode:三级按钮权限码,通常为 `{Parent}.{Action}`
|
||
*
|
||
* 维护:node scripts/collect-page-buttons.mjs 扫描变更后合并到此文件
|
||
*/
|
||
|
||
export interface PageButtonDef {
|
||
permissionCode: string;
|
||
name: string;
|
||
order?: number;
|
||
}
|
||
|
||
export interface PageButtonGroup {
|
||
parentPermissionCode: string;
|
||
buttons: PageButtonDef[];
|
||
}
|
||
|
||
/** 权限动作后缀 → 中文名称 */
|
||
export const PERMISSION_ACTION_LABELS: Record<string, string> = {
|
||
Query: '查询',
|
||
Create: '新增',
|
||
Update: '修改',
|
||
Delete: '删除',
|
||
Move: '移动',
|
||
AssignRoles: '分配角色',
|
||
AssignPermissions: '分配权限',
|
||
ResetPassword: '重置密码',
|
||
Template: '模板管理',
|
||
Audit: '审计',
|
||
Use: '使用',
|
||
Save: '保存',
|
||
Export: '导出',
|
||
Import: '导入',
|
||
Publish: '发布',
|
||
Pay: '支付',
|
||
Print: '打印',
|
||
BatchPrint: '批量打印',
|
||
Intercept: '拦截',
|
||
CancelIntercept: '取消拦截',
|
||
PreDeclare: '预报',
|
||
Refresh: '刷新',
|
||
Reset: '重置',
|
||
Search: '搜索',
|
||
Submit: '提交',
|
||
Copy: '复制',
|
||
Transfer: '转余额',
|
||
Withdraw: '提现',
|
||
Download: '下载',
|
||
Upload: '上传',
|
||
Sync: '同步',
|
||
Pull: '拉单同步',
|
||
Rts: '准备发货',
|
||
Label: '重新获取面单',
|
||
MatchInventory: '匹配库存',
|
||
CreateLogistics: '创建物流订单',
|
||
CreateFulfill: '创建物流&代发订单',
|
||
ToggleSuspend: '搁置/恢复',
|
||
Auth: '授权',
|
||
Retry: '重试',
|
||
RetryFailed: '重试失败',
|
||
Cancel: '取消',
|
||
CancelPending: '取消待处理',
|
||
Enable: '启用',
|
||
Disable: '禁用',
|
||
View: '查看',
|
||
Edit: '编辑',
|
||
SaveConfig: '保存配置',
|
||
TestConnection: '测试连接',
|
||
BatchSend: '批量发送',
|
||
BatchImport: '批量导入',
|
||
BatchExport: '批量导出',
|
||
BatchOrder: '批量下单',
|
||
SingleOrder: '单票下单',
|
||
SampleOrder: 'Mock下单',
|
||
Recharge: '充值',
|
||
Inbound: '入库',
|
||
Outbound: '出库',
|
||
Push: '推送',
|
||
ChainPull: '串联拉取',
|
||
CreateTrack: '创建轨迹',
|
||
ForwardDownstream: '预报下游',
|
||
MarkProblematic: '创建问题件',
|
||
MarkClaimed: '创建理赔件',
|
||
MarkProcessed: '标记已处理',
|
||
EditOrder: '修改订单',
|
||
StockBind: '绑定包裹/库存',
|
||
AddMapping: '添加映射',
|
||
AddInterface: '新增接口',
|
||
RefreshList: '刷新列表',
|
||
CreateApplication: '创建应用',
|
||
NewPort: '新增接口',
|
||
SaveTemplate: '保存模板',
|
||
DeleteTemplate: '删除模板',
|
||
PublishPrice: '价格发布',
|
||
SaveOnly: '仅保存',
|
||
SaveAndActivate: '保存并生效',
|
||
ExportPrice: '导出价格',
|
||
ImportPrice: '导入价格',
|
||
SyncLevel3Buttons: '同步三级按钮',
|
||
SetDefault: '设为默认',
|
||
AddChild: '新增子菜单',
|
||
AddChildOrg: '新增子组织',
|
||
SaveProvider: '保存提供商',
|
||
Chat: '对话',
|
||
Analyze: '执行分析',
|
||
Like: '点赞',
|
||
Favorite: '收藏',
|
||
Comment: '评论',
|
||
AiCreate: 'AI创作',
|
||
SchedulePublish: '定时发布',
|
||
Preview: '预览',
|
||
Grant: '发放',
|
||
Adjust: '调账',
|
||
Rebind: '改绑',
|
||
Approve: '通过',
|
||
Reject: '拒绝',
|
||
End: '结束',
|
||
PublishNow: '立即发布',
|
||
ImportOfficial: '导入官方示例',
|
||
MatchSkill: '搭配新技能',
|
||
DeleteOrder: '删除订单',
|
||
BatchUpdatePullConfig: '批量修改拉取配置',
|
||
DeleteTrack: '删除轨迹',
|
||
UpdateTrack: '更新轨迹',
|
||
RefreshTrack: '刷新轨迹',
|
||
PushTrack: '推送轨迹',
|
||
AddTrack: '新增轨迹',
|
||
AddProduct: '新增产品',
|
||
AddProvider: '新增服务商',
|
||
AddWarningRule: '新增预警规则',
|
||
SendDebug: '发送调试',
|
||
AddAnnouncement: '新增公告',
|
||
AddDict: '新增字典',
|
||
AddWarehouse: '新增仓库',
|
||
Relocate: '换库位',
|
||
ConfirmReceive: '确认收货',
|
||
AddConfig: '新增配置',
|
||
Debug: '调试',
|
||
Rollback: '回滚到此版本',
|
||
RollbackVersion: '回滚到此版本',
|
||
PublishConfirm: '发布',
|
||
ConfirmPublish: '确定',
|
||
SelectPublishDate: '选择发布日期',
|
||
EditPrice: '编辑',
|
||
AddZone: '新增分区',
|
||
AddRule: '新增规则',
|
||
AddRounding: '新增进位',
|
||
AddScene: '新增场景',
|
||
EditScene: '编辑场景',
|
||
AppReset: '应用重置',
|
||
ImportCurl: '导入cURL',
|
||
Send: '发送',
|
||
SmartFill: '智能填充',
|
||
ParamConfig: '参数配置',
|
||
ReturnConfig: '返回配置',
|
||
FillToForm: '填充到表单',
|
||
AiScript: 'AI脚本',
|
||
PrefixScript: '前置脚本',
|
||
SuffixScript: '后置脚本',
|
||
GenerateScript: '生成脚本',
|
||
Parse: '解析',
|
||
Format: '格式化',
|
||
AddParam: '新增参数',
|
||
AddSystemParam: '新增系统参数',
|
||
ColumnConfig: '字段配置',
|
||
PushRecord: '推送记录',
|
||
ConfirmDelete: '确认删除',
|
||
EditBasic: '编辑基本信息',
|
||
SaveBasic: '保存基本信息',
|
||
EditWeight: '编辑件重尺',
|
||
SaveWeight: '保存件重尺',
|
||
AddFee: '添加费用',
|
||
RecalculateReceivable: '重算应收',
|
||
RecalculatePayable: '重算应付',
|
||
ImportDownstreamWeight: '导入对账件重尺',
|
||
AddDeclarationRow: '添加申报行',
|
||
DownstreamForecastResult: '下游预报结果',
|
||
More: '更多',
|
||
OrderNow: '立刻下单',
|
||
SavePermissions: '保存权限',
|
||
SelectAll: '全选',
|
||
DeselectAll: '取消全选',
|
||
ExpandAll: '全部展开',
|
||
CollapseAll: '全部收起',
|
||
NewTemplate: '新建模板',
|
||
ApplyToUser: '套用到用户',
|
||
WriteRolePerm: '写入角色权限',
|
||
AddDetailRow: '添加明细行',
|
||
AddSampleConfig: '添加示例配置',
|
||
BatchImportDict: '批量导入字典',
|
||
DownloadPresetDict: '下载 OMS 预置字典',
|
||
RejectRecharge: '拒绝充值申请',
|
||
RechargeScreenshot: '充值截图',
|
||
DisableAi: '禁用 AI 服务',
|
||
ClearChat: '清空',
|
||
EditProvider: '编辑提供商',
|
||
RestoreDefault: '恢复默认',
|
||
Reload: '重新加载',
|
||
GenerateName: '生成名称',
|
||
EngineStart: '启动引擎',
|
||
EngineStop: '停止引擎',
|
||
RefreshStatus: '刷新状态',
|
||
BrowserLogin: '浏览器登录',
|
||
CheckLogin: '登录校验',
|
||
Logout: '退出登录',
|
||
AgentGuide: 'Agent 连接指南',
|
||
AiAnalyze: 'AI分析',
|
||
StartAnalyze: '开始分析',
|
||
AutoComment: '自动评论',
|
||
SaveLabel: '保存模板',
|
||
OmsLogin: 'OMS登录',
|
||
ComingSoon: '敬请期待',
|
||
};
|
||
|
||
export function inferButtonName(permissionCode: string, fallbackName?: string | null): string {
|
||
if (fallbackName?.trim()) return fallbackName.trim();
|
||
const action = permissionCode.split('.').pop() || permissionCode;
|
||
return PERMISSION_ACTION_LABELS[action] || action;
|
||
}
|
||
|
||
/** 菜单 permissionCode → 目录分组 key(处理历史命名与路由 RBAC 不一致) */
|
||
export const PAGE_BUTTON_PARENT_ALIASES: Record<string, string> = {
|
||
'Api.UpstreamInterface': 'Api.UpstreamInterface',
|
||
'Api.Interfaces': 'Api.UpstreamInterface',
|
||
'Api.DownstreamInterface': 'Api.DownstreamInterface',
|
||
'Api.ServiceProviders': 'Api.DownstreamInterface',
|
||
'Api.AppList': 'Api.AppList',
|
||
'Api.Applications': 'Api.AppList',
|
||
'Track.Order': 'Track.Order',
|
||
'Track.Orders': 'Track.Order',
|
||
'Track.WarningOrder': 'Track.WarningOrder',
|
||
'Track.Warnings': 'Track.WarningOrder',
|
||
'Track.State': 'Track.State',
|
||
'Track.States': 'Track.State',
|
||
'Track.Flag': 'Track.Flag',
|
||
'Track.Flags': 'Track.Flag',
|
||
'Track.Content': 'Track.Content',
|
||
'Track.Pull': 'Track.Pull',
|
||
'Track.Push': 'Track.Push',
|
||
'Track.Mapping': 'Track.Pull',
|
||
'Track.KpiEarlyWarningConfig': 'Track.KpiEarlyWarningConfig',
|
||
'Track.Kpi': 'Track.KpiEarlyWarningConfig',
|
||
'Rbac.Menus.Query': 'Rbac.Menus',
|
||
'Rbac.Roles.Query': 'Rbac.Roles',
|
||
'Rbac.Users.Query': 'Rbac.Users',
|
||
'Rbac.Organizations.Query': 'Rbac.Organizations',
|
||
'Rbac.DataPerm.Query': 'Rbac.DataPerm',
|
||
'Rbac.DataPermUsers': 'Rbac.DataPerm',
|
||
'System.AiAssistant': 'System.Ai',
|
||
'System.AiSkills': 'System.AiSkill',
|
||
'System.McpTools': 'System.McpTools',
|
||
'System.McpTools.Use': 'System.McpTools',
|
||
'System.Ai.Use': 'System.Ai',
|
||
'System.AiSkill.Use': 'System.AiSkill',
|
||
'Xhs.StartService': 'Xhs.Agent',
|
||
'Xhs.PublishHistory': 'Xhs.Publish',
|
||
'Xhs.Analysis.Use': 'Xhs.Analysis',
|
||
'Xhs.Creation.Use': 'Xhs.Creation',
|
||
'Xhs.HumanSettings.Save': 'Xhs.HumanSettings',
|
||
'User.Recharge': 'User.Recharge',
|
||
'User.Sub-account': 'User.SubAccount',
|
||
'Track.TrackOrder': 'Track.Order',
|
||
'Track.TrackWarningOrder': 'Track.WarningOrder',
|
||
'Track.TrackState': 'Track.State',
|
||
'Track.TrackFlag': 'Track.Flag',
|
||
'Track.TrackContent': 'Track.Content',
|
||
'System.Permission.Menu': 'Rbac.Menus',
|
||
'System.Permission.Role': 'Rbac.Roles',
|
||
'System.Organization': 'Rbac.Organizations',
|
||
'System.Organization.User': 'Rbac.Users',
|
||
'System.DataPerm.Audit': 'Rbac.DataPerm.Audit',
|
||
'System.DataPerm.Templates': 'Rbac.DataPerm.Template',
|
||
'System.DataPerm.Users': 'Rbac.DataPerm',
|
||
'Rbac.email': 'System.BatchEmail',
|
||
'System.BatchEmail.Use': 'System.BatchEmail',
|
||
'System.BatchEmail': 'System.BatchEmail',
|
||
'Api.ApiTest': 'Api.ApiTest',
|
||
'Api.Test.Query': 'Api.ApiTest',
|
||
'Api.OpenApi.Query': 'Api.OpenApi',
|
||
'Channel.LabelDesign': 'Channel.LabelDesign',
|
||
'Order.BatchJobs.Query': 'Order.BatchJobs',
|
||
'Order.WaybillManage.Query': 'Order.WaybillManage',
|
||
'Order.Pickup.Query': 'Order.Pickup',
|
||
'Order.Customs9610.Query': 'Order.Customs9610',
|
||
'Order.SenderAddress.Query': 'Order.SenderAddress',
|
||
'User.ExportQualification.Query': 'User.ExportQualification',
|
||
'Order.PlatformStore.Query': 'Order.PlatformStore',
|
||
'Order.PlatformStoreOrder.Query': 'Order.PlatformStoreOrder',
|
||
'Warehouse.Sku.Query': 'Warehouse.Sku',
|
||
'Warehouse.Inventory.Query': 'Warehouse.Inventory',
|
||
'Warehouse.Parcel.Query': 'Warehouse.Parcel',
|
||
'Warehouse.InboundNotice.Query': 'Warehouse.InboundNotice',
|
||
'Warehouse.BinLocation.Query': 'Warehouse.BinLocation',
|
||
'Operation.InboundScan.Query': 'Operation.InboundScan',
|
||
'Operation.OutboundScan.Query': 'Operation.OutboundScan',
|
||
'Operation.PrintLabel.Query': 'Operation.PrintLabel',
|
||
'Operation.FulfillPack.Query': 'Operation.FulfillPack',
|
||
'Operation.FulfillPack.BatchPrint': 'Operation.FulfillPack',
|
||
'Operation.FulfillPack.ConfirmOutbound': 'Operation.FulfillPack',
|
||
'Operation.ParcelArrival.Query': 'Operation.ParcelArrival',
|
||
'Marketing.Level.View': 'Marketing.Level',
|
||
'Marketing.PointsRule.Edit': 'Marketing.PointsRule',
|
||
'Marketing.Points.View': 'Marketing.Points',
|
||
'Marketing.Coupon.Template.View': 'Marketing.CouponTemplate',
|
||
'Marketing.Coupon.Grant': 'Marketing.CouponGrant',
|
||
'Marketing.Commission.Rule.Edit': 'Marketing.CommissionRule',
|
||
'Marketing.Commission.View': 'Marketing.CommissionDetail',
|
||
'Marketing.Commission.Withdraw.View': 'Marketing.CommissionWithdraw',
|
||
'Marketing.Referral.View': 'Marketing.ReferralTree',
|
||
'User.Marketing.Invite': 'User.Marketing.Invite',
|
||
'User.Marketing.Member': 'User.Marketing.Member',
|
||
'User.Marketing.Coupons': 'User.Marketing.Coupons',
|
||
'User.Marketing.Commission': 'User.Marketing.Commission',
|
||
'Kb.Category.Query': 'Knowledge.Category',
|
||
'Kb.Article.Query': 'Knowledge.Article',
|
||
'Knowledge.Category.Query': 'Knowledge.Category',
|
||
'Knowledge.Article.Query': 'Knowledge.Article',
|
||
};
|
||
|
||
type BtnInput = { code: string; name: string };
|
||
|
||
/** 快捷定义:code 可为完整权限码或相对后缀 */
|
||
function B(parent: string, items: BtnInput[]): PageButtonGroup {
|
||
return {
|
||
parentPermissionCode: parent,
|
||
buttons: items.map((item, order) => ({
|
||
permissionCode: item.code.includes('.') ? item.code : `${parent}.${item.code}`,
|
||
name: item.name,
|
||
order,
|
||
})),
|
||
};
|
||
}
|
||
|
||
const CORE_GROUPS: PageButtonGroup[] = [
|
||
// ── 首页 ──
|
||
B('Home.Workplace', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'View', name: '查看' },
|
||
]),
|
||
B('Home.Monitor', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'View', name: '查看监控' },
|
||
]),
|
||
|
||
// ── API ──
|
||
B('Api.UpstreamInterface', [
|
||
{ code: 'Api.Interfaces.Query', name: '查询' },
|
||
{ code: 'Api.Interfaces.Create', name: '新增接口' },
|
||
{ code: 'Api.Interfaces.Update', name: '修改' },
|
||
{ code: 'Api.Interfaces.Delete', name: '删除' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'AddMapping', name: '添加映射' },
|
||
{ code: 'Debug', name: '调试' },
|
||
{ code: 'PublishConfirm', name: '发布' },
|
||
{ code: 'Rollback', name: '回滚' },
|
||
{ code: 'RollbackVersion', name: '回滚到此版本' },
|
||
{ code: 'Import', name: '导入' },
|
||
{ code: 'AiScript', name: 'AI脚本' },
|
||
{ code: 'PrefixScript', name: '前置脚本' },
|
||
{ code: 'SuffixScript', name: '后置脚本' },
|
||
{ code: 'GenerateScript', name: '生成脚本' },
|
||
{ code: 'Parse', name: '解析' },
|
||
{ code: 'Format', name: '格式化' },
|
||
{ code: 'AddParam', name: '新增参数' },
|
||
{ code: 'AddSystemParam', name: '新增系统参数' },
|
||
]),
|
||
B('Api.UpstreamInterfaceConfig', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
]),
|
||
B('Api.UpstreamInterfaceConfigEdit', [
|
||
{ code: 'Save', name: '保存' },
|
||
]),
|
||
B('Api.DownstreamInterface', [
|
||
{ code: 'Api.ServiceProviders.Query', name: '查询' },
|
||
{ code: 'Api.ServiceProviders.Create', name: '新增服务商' },
|
||
{ code: 'NewPort', name: '新增接口' },
|
||
{ code: 'AddInterface', name: '新增接口' },
|
||
{ code: 'RefreshList', name: '刷新接口列表' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'Debug', name: '调试' },
|
||
{ code: 'SmartFill', name: '智能填充' },
|
||
{ code: 'ParamConfig', name: '参数配置' },
|
||
{ code: 'ReturnConfig', name: '返回配置' },
|
||
{ code: 'FillToForm', name: '填充到表单' },
|
||
]),
|
||
B('Api.AppList', [
|
||
{ code: 'Api.Applications.Query', name: '查询' },
|
||
{ code: 'Api.Applications.Create', name: '新增应用' },
|
||
{ code: 'CreateApplication', name: '创建应用' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Copy', name: '复制' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'AppReset', name: '应用重置' },
|
||
]),
|
||
B('Api.RequestLog', [
|
||
{ code: 'Api.Logs.Query', name: '查询' },
|
||
{ code: 'Export', name: '导出' },
|
||
]),
|
||
B('Api.CallStatistics', [
|
||
{ code: 'Api.Statistics.Query', name: '查询' },
|
||
{ code: 'Export', name: '导出' },
|
||
]),
|
||
B('Api.ApiDebugger', [
|
||
{ code: 'Api.Debugger.Query', name: '查询' },
|
||
{ code: 'SendDebug', name: '发送调试' },
|
||
{ code: 'Save', name: '保存' },
|
||
]),
|
||
B('Api.ApiTest', [
|
||
{ code: 'Api.Test.Query', name: '查询' },
|
||
{ code: 'Send', name: '发送' },
|
||
{ code: 'ImportCurl', name: '导入cURL' },
|
||
{ code: 'Copy', name: '复制' },
|
||
{ code: 'Format', name: '格式化' },
|
||
]),
|
||
B('Api.OpenApi', [
|
||
{ code: 'Api.OpenApi.Query', name: '查询' },
|
||
{ code: 'SendDebug', name: '发送调试' },
|
||
{ code: 'ImportCurl', name: '导入cURL' },
|
||
{ code: 'Copy', name: '复制' },
|
||
]),
|
||
|
||
// ── 轨迹 ──
|
||
B('Track.Order', [
|
||
{ code: 'Track.Orders.Query', name: '查询' },
|
||
{ code: 'AddTrack', name: '新增轨迹' },
|
||
{ code: 'UpdateTrack', name: '更新轨迹' },
|
||
{ code: 'RefreshTrack', name: '刷新轨迹' },
|
||
{ code: 'DeleteTrack', name: '删除轨迹' },
|
||
{ code: 'PushTrack', name: '推送轨迹' },
|
||
{ code: 'DeleteOrder', name: '删除订单' },
|
||
{ code: 'BatchUpdatePullConfig', name: '批量修改拉取配置' },
|
||
{ code: 'ColumnConfig', name: '字段配置' },
|
||
{ code: 'PushRecord', name: '推送记录' },
|
||
]),
|
||
B('Track.WarningOrder', [
|
||
{ code: 'Track.Warnings.Query', name: '查询' },
|
||
{ code: 'PushTrack', name: '推送轨迹' },
|
||
{ code: 'AddTrack', name: '新增轨迹' },
|
||
{ code: 'RefreshTrack', name: '刷新轨迹' },
|
||
{ code: 'PushRecord', name: '推送记录' },
|
||
]),
|
||
B('Track.State', [
|
||
{ code: 'Track.States.Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Track.Flag', [
|
||
{ code: 'Track.Flags.Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Track.Content', [
|
||
{ code: 'Track.Content.Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Track.Pull', [
|
||
{ code: 'Track.Mapping.Query', name: '查询' },
|
||
{ code: 'ChainPull', name: '串联拉取' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Track.Push', [
|
||
{ code: 'Track.Mapping.Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Track.KpiEarlyWarningConfig', [
|
||
{ code: 'Track.Kpi.Query', name: '查询' },
|
||
{ code: 'AddWarningRule', name: '新增预警规则' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
{ code: 'AddScene', name: '新增场景' },
|
||
{ code: 'EditScene', name: '编辑场景' },
|
||
]),
|
||
|
||
// ── 订单 ──
|
||
B('Order.PriceCheck', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Reset', name: '重置条件' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'OrderNow', name: '立刻下单' },
|
||
]),
|
||
B('Order.PlaceOrder', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'BatchOrder', name: '批量下单' },
|
||
{ code: 'SingleOrder', name: '单票下单' },
|
||
{ code: 'SampleOrder', name: 'Mock下单' },
|
||
{ code: 'Import', name: '上传文件' },
|
||
{ code: 'Download', name: '下载模板' },
|
||
{ code: 'Create', name: '新增申报行' },
|
||
{ code: 'Delete', name: '删除申报行' },
|
||
]),
|
||
B('Order.MyOrders', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Pay', name: '支付' },
|
||
{ code: 'PreDeclare', name: '预报' },
|
||
{ code: 'CreateTrack', name: '创建轨迹订单' },
|
||
{ code: 'ForwardDownstream', name: '预报下游订单' },
|
||
{ code: 'Print', name: '单个打印' },
|
||
{ code: 'BatchPrint', name: '批量打印' },
|
||
{ code: 'Intercept', name: '拦截' },
|
||
{ code: 'CancelIntercept', name: '取消拦截' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'ConfirmDelete', name: '确认删除' },
|
||
{ code: 'Export', name: '导出' },
|
||
{ code: 'MarkProblematic', name: '创建问题件' },
|
||
{ code: 'MarkClaimed', name: '创建理赔件' },
|
||
{ code: 'MarkProcessed', name: '标记已处理' },
|
||
{ code: 'EditOrder', name: '修改订单' },
|
||
{ code: 'StockBind', name: '绑定包裹/库存' },
|
||
{ code: 'View', name: '查看详情' },
|
||
{ code: 'More', name: '更多' },
|
||
{ code: 'DownstreamForecastResult', name: '下游预报结果' },
|
||
{ code: 'EditBasic', name: '编辑' },
|
||
{ code: 'SaveBasic', name: '保存' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'AddFee', name: '添加费用' },
|
||
{ code: 'RecalculateReceivable', name: '重算应收' },
|
||
{ code: 'RecalculatePayable', name: '重算应付' },
|
||
{ code: 'AddDeclarationRow', name: '添加申报行' },
|
||
]),
|
||
B('Order.FulfillOrders', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'StockBind', name: '管理绑定' },
|
||
{ code: 'View', name: '查看详情' },
|
||
{ code: 'Export', name: '导出' },
|
||
{ code: 'Print', name: '单个打印' },
|
||
{ code: 'BatchPrint', name: '批量打印' },
|
||
]),
|
||
B('Order.WaybillManage', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Pay', name: '支付' },
|
||
{ code: 'PreDeclare', name: '预报' },
|
||
{ code: 'CreateTrack', name: '创建轨迹订单' },
|
||
{ code: 'ForwardDownstream', name: '预报下游订单' },
|
||
{ code: 'Print', name: '单个打印' },
|
||
{ code: 'BatchPrint', name: '批量打印' },
|
||
{ code: 'Intercept', name: '拦截' },
|
||
{ code: 'CancelIntercept', name: '取消拦截' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'ConfirmDelete', name: '确认删除' },
|
||
{ code: 'Export', name: '导出' },
|
||
{ code: 'MarkProblematic', name: '创建问题件' },
|
||
{ code: 'MarkClaimed', name: '创建理赔件' },
|
||
{ code: 'MarkProcessed', name: '标记已处理' },
|
||
{ code: 'EditOrder', name: '修改订单' },
|
||
{ code: 'View', name: '查看详情' },
|
||
{ code: 'More', name: '更多' },
|
||
{ code: 'DownstreamForecastResult', name: '下游预报结果' },
|
||
{ code: 'EditBasic', name: '编辑' },
|
||
{ code: 'SaveBasic', name: '保存' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'AddFee', name: '添加费用' },
|
||
{ code: 'RecalculateReceivable', name: '重算应收' },
|
||
{ code: 'RecalculatePayable', name: '重算应付' },
|
||
{ code: 'ImportDownstreamWeight', name: '导入对账件重尺' },
|
||
{ code: 'AddDeclarationRow', name: '添加申报行' },
|
||
]),
|
||
B('Order.BatchJobs', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'View', name: '查看' },
|
||
{ code: 'Retry', name: '重试失败' },
|
||
{ code: 'Cancel', name: '取消待处理' },
|
||
]),
|
||
B('Order.PlatformStore', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Auth', name: '授权' },
|
||
]),
|
||
B('Order.PlatformStoreOrder', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Pull', name: '拉单同步' },
|
||
{ code: 'Sync', name: '同步状态' },
|
||
{ code: 'Rts', name: '准备发货' },
|
||
{ code: 'Label', name: '重新获取面单' },
|
||
{ code: 'MatchInventory', name: '匹配库存' },
|
||
{ code: 'CreateLogistics', name: '创建物流订单' },
|
||
{ code: 'CreateFulfill', name: '创建物流&代发订单' },
|
||
{ code: 'ToggleSuspend', name: '搁置/恢复' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Order.Pickup', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Create', name: '创建揽收订单' },
|
||
{ code: 'CreateTrack', name: '创建轨迹订单' },
|
||
{ code: 'ForwardDownstream', name: '预报下游订单' },
|
||
{ code: 'DownstreamForecastResult', name: '下游预报结果' },
|
||
]),
|
||
B('Order.Customs9610', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Update', name: '编辑' },
|
||
{ code: 'Declare', name: '申报' },
|
||
{ code: 'DeclareBatch', name: '批量申报' },
|
||
{ code: 'FetchManifestBatch', name: '批量获取清单数据' },
|
||
{ code: 'FetchDeclarationFormBatch', name: '预报下游' },
|
||
]),
|
||
B('Order.SenderAddress', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'SetDefault', name: '设为默认' },
|
||
]),
|
||
B('Warehouse.Sku', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Warehouse.Inventory', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Relocate', name: '换库位' },
|
||
]),
|
||
B('Warehouse.Parcel', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Warehouse.InboundNotice', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'ConfirmReceive', name: '确认收货' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Warehouse.BinLocation', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '保存' },
|
||
]),
|
||
|
||
// ── 渠道 ──
|
||
B('Channel.SalesProducts', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'AddProduct', name: '新增产品' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'EditPrice', name: '编辑' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'PublishPrice', name: '价格发布' },
|
||
{ code: 'PublishConfirm', name: '发布' },
|
||
{ code: 'SaveOnly', name: '仅保存' },
|
||
{ code: 'SaveAndActivate', name: '保存并生效' },
|
||
{ code: 'ExportPrice', name: '导出价格' },
|
||
{ code: 'ImportPrice', name: '导入价格' },
|
||
{ code: 'RollbackVersion', name: '回滚到此版本' },
|
||
{ code: 'ConfirmPublish', name: '确定' },
|
||
{ code: 'SelectPublishDate', name: '选择发布日期' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.ServiceChannels', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'AddProvider', name: '新增服务商' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'EditPrice', name: '编辑' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'PublishPrice', name: '价格发布' },
|
||
{ code: 'PublishConfirm', name: '发布' },
|
||
{ code: 'SaveOnly', name: '仅保存' },
|
||
{ code: 'SaveAndActivate', name: '保存并生效' },
|
||
{ code: 'ExportPrice', name: '导出价格' },
|
||
{ code: 'ImportPrice', name: '导入价格' },
|
||
{ code: 'RollbackVersion', name: '回滚到此版本' },
|
||
{ code: 'ConfirmPublish', name: '确定' },
|
||
{ code: 'SelectPublishDate', name: '选择发布日期' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.PriceArea', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'AddZone', name: '新增分区' },
|
||
{ code: 'Import', name: '导入' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.Blacklist', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'AddZone', name: '新增分区' },
|
||
{ code: 'Import', name: '导入' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.RemoteZones', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'AddZone', name: '新增分区' },
|
||
{ code: 'Import', name: '导入' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.WeightRules', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'AddRule', name: '新增规则' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.WeightRounding', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'AddRounding', name: '新增进位' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Channel.AutoTrigger', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Channel.IssueTemplate', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Channel.LabelDesign', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'SaveLabel', name: '保存模板' },
|
||
]),
|
||
|
||
// ── 操作 ──
|
||
B('Operation.InboundScan', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'Inbound', name: '入库' },
|
||
]),
|
||
B('Operation.OutboundScan', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'Outbound', name: '出库' },
|
||
]),
|
||
B('Operation.PrintLabel', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'Print', name: '打印' },
|
||
]),
|
||
B('Operation.FulfillPack', [
|
||
{ code: 'Query', name: '查询队列' },
|
||
{ code: 'BatchPrint', name: '批量打印面单' },
|
||
{ code: 'ConfirmOutbound', name: '确认打包' },
|
||
{ code: 'Reset', name: '重置' },
|
||
]),
|
||
B('Operation.ParcelArrival', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Save', name: '到仓' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
|
||
// ── 客户 / 用户 ──
|
||
B('User.Recharge', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Recharge', name: '充值' },
|
||
{ code: 'Submit', name: '提交' },
|
||
]),
|
||
B('User.Customer', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Edit', name: '编辑' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'ResetPassword', name: '重置密码' },
|
||
{ code: 'OmsLogin', name: 'OMS登录' },
|
||
{ code: 'ApiKey', name: '开放接口凭证' },
|
||
{ code: 'ApiKeyReset', name: '重置开放接口密钥' },
|
||
{ code: 'ApiKeyEnable', name: '启停开放接口' },
|
||
]),
|
||
B('User.SubAccount', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增子账号' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'AssignRoles', name: '分配权限' },
|
||
{ code: 'SelectAll', name: '全选' },
|
||
{ code: 'DeselectAll', name: '取消全选' },
|
||
{ code: 'ExpandAll', name: '全部展开' },
|
||
{ code: 'CollapseAll', name: '全部收起' },
|
||
]),
|
||
B('User.ExportQualification', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'SetDefault', name: '设默认' },
|
||
]),
|
||
B('User.Marketing.Invite', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Copy', name: '复制邀请链接' },
|
||
]),
|
||
B('User.Marketing.Member', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'View', name: '查看等级权益' },
|
||
]),
|
||
B('User.Marketing.Coupons', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'View', name: '查看券包' },
|
||
]),
|
||
B('User.Marketing.Commission', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Transfer', name: '转余额' },
|
||
{ code: 'Withdraw', name: '提现' },
|
||
]),
|
||
|
||
// ── 财务 ──
|
||
B('Finance.RechargeRecord', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'Export', name: '导出' },
|
||
{ code: 'RechargeScreenshot', name: '充值截图' },
|
||
{ code: 'RejectRecharge', name: '拒绝充值申请' },
|
||
]),
|
||
B('Finance.AccountFlow', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'Export', name: '导出' },
|
||
]),
|
||
B('Finance.ReceivablePayable', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Search', name: '搜索' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'Export', name: '导出' },
|
||
]),
|
||
|
||
// ── 营销 ──
|
||
B('Marketing.Level', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Marketing.Level.Create', name: '新增' },
|
||
{ code: 'Marketing.Level.Update', name: '修改' },
|
||
{ code: 'Marketing.Level.Delete', name: '删除' },
|
||
]),
|
||
B('Marketing.PointsRule', [
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Reset', name: '重置' },
|
||
]),
|
||
B('Marketing.Points', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Marketing.Points.Adjust', name: '人工调账' },
|
||
]),
|
||
B('Marketing.CouponTemplate', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Marketing.Coupon.Template.Create', name: '新增' },
|
||
{ code: 'Marketing.Coupon.Template.Update', name: '修改' },
|
||
{ code: 'Publish', name: '发布' },
|
||
{ code: 'End', name: '结束活动' },
|
||
]),
|
||
B('Marketing.CouponGrant', [
|
||
{ code: 'Preview', name: '预览' },
|
||
{ code: 'Query', name: '查询' },
|
||
]),
|
||
B('Marketing.CommissionRule', [
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Reset', name: '重置' },
|
||
]),
|
||
B('Marketing.CommissionDetail', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Marketing.Commission.Adjust', name: '人工调整' },
|
||
]),
|
||
B('Marketing.CommissionWithdraw', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Marketing.Commission.Withdraw.Audit', name: '审核' },
|
||
{ code: 'Approve', name: '通过' },
|
||
{ code: 'Reject', name: '拒绝' },
|
||
]),
|
||
B('Marketing.ReferralTree', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Marketing.Referral.Rebind', name: '改绑' },
|
||
]),
|
||
|
||
// ── 知识库 ──
|
||
B('Knowledge.Category', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Knowledge.Category.Edit', name: '编辑' },
|
||
]),
|
||
B('Knowledge.Article', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Knowledge.Article.Edit', name: '编辑' },
|
||
{ code: 'Knowledge.Article.Publish', name: '发布/下线' },
|
||
]),
|
||
|
||
// ── RBAC / 系统 ──
|
||
B('Rbac.Menus', [
|
||
{ code: 'Rbac.Menus.Query', name: '查询' },
|
||
{ code: 'Rbac.Menus.Create', name: '新增菜单' },
|
||
{ code: 'AddChild', name: '新增子菜单' },
|
||
{ code: 'Rbac.Menus.Update', name: '修改' },
|
||
{ code: 'Rbac.Menus.Delete', name: '删除' },
|
||
{ code: 'Rbac.Menus.Move', name: '移动' },
|
||
{ code: 'SyncLevel3Buttons', name: '同步三级按钮' },
|
||
]),
|
||
B('Rbac.Roles', [
|
||
{ code: 'Rbac.Roles.Query', name: '查询' },
|
||
{ code: 'Rbac.Roles.Create', name: '新增角色' },
|
||
{ code: 'Rbac.Roles.Update', name: '修改' },
|
||
{ code: 'Rbac.Roles.Delete', name: '删除' },
|
||
{ code: 'Rbac.Roles.AssignPermissions', name: '分配权限' },
|
||
{ code: 'SavePermissions', name: '保存权限' },
|
||
{ code: 'SelectAll', name: '全选' },
|
||
{ code: 'DeselectAll', name: '取消全选' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Rbac.Users', [
|
||
{ code: 'Rbac.Users.Query', name: '查询' },
|
||
{ code: 'Rbac.Users.Create', name: '新增用户' },
|
||
{ code: 'Rbac.Users.Update', name: '修改' },
|
||
{ code: 'Rbac.Users.Delete', name: '删除' },
|
||
{ code: 'Rbac.Users.AssignRoles', name: '分配角色' },
|
||
{ code: 'Rbac.Users.ResetPassword', name: '重置密码' },
|
||
]),
|
||
B('Rbac.Organizations', [
|
||
{ code: 'Rbac.Organizations.Query', name: '查询' },
|
||
{ code: 'Rbac.Organizations.Create', name: '新增组织' },
|
||
{ code: 'AddChildOrg', name: '新增子组织' },
|
||
{ code: 'Rbac.Organizations.Update', name: '修改' },
|
||
{ code: 'Rbac.Organizations.Delete', name: '删除' },
|
||
{ code: 'Rbac.Organizations.Move', name: '移动' },
|
||
]),
|
||
B('Rbac.DataPerm', [
|
||
{ code: 'Rbac.DataPerm.Query', name: '查询' },
|
||
{ code: 'Rbac.DataPerm.Update', name: '修改' },
|
||
{ code: 'Rbac.DataPerm.Template', name: '模板管理' },
|
||
{ code: 'Rbac.DataPerm.Audit', name: '审计' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Rbac.DataPerm.Template', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'NewTemplate', name: '新建模板' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'ApplyToUser', name: '套用到用户' },
|
||
{ code: 'WriteRolePerm', name: '写入角色权限' },
|
||
{ code: 'AddDetailRow', name: '添加明细行' },
|
||
{ code: 'AddSampleConfig', name: '添加示例配置' },
|
||
{ code: 'RefreshList', name: '刷新列表' },
|
||
]),
|
||
B('Rbac.DataPerm.Audit', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'Export', name: '导出' },
|
||
]),
|
||
B('System.Announcement', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'AddAnnouncement', name: '新增公告' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('System.Dict', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'AddDict', name: '新增字典' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'BatchImport', name: '批量导入' },
|
||
{ code: 'BatchImportDict', name: '批量导入字典' },
|
||
{ code: 'DownloadPresetDict', name: '下载 OMS 预置字典' },
|
||
{ code: 'BatchExport', name: '批量导出' },
|
||
{ code: 'Download', name: '下载模板' },
|
||
]),
|
||
B('System.WarehouseAddress', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'AddWarehouse', name: '新增仓库' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Edit', name: '编辑' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Copy', name: '复制' },
|
||
]),
|
||
B('System.OtherConfig', [
|
||
{ code: 'Query', name: '查询' },
|
||
{ code: 'AddConfig', name: '新增配置' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('System.BatchEmail', [
|
||
{ code: 'System.BatchEmail.Use', name: '使用' },
|
||
{ code: 'Import', name: '导入文件' },
|
||
{ code: 'BatchSend', name: '批量发送' },
|
||
{ code: 'SaveTemplate', name: '保存模板' },
|
||
{ code: 'DeleteTemplate', name: '删除模板' },
|
||
{ code: 'SaveConfig', name: '保存配置' },
|
||
{ code: 'TestConnection', name: '测试连接' },
|
||
]),
|
||
|
||
// ── 小红书 ──
|
||
B('Xhs.Agent', [
|
||
{ code: 'Xhs.Agent.Query', name: '查询' },
|
||
{ code: 'Refresh', name: '刷新' },
|
||
{ code: 'View', name: '连接指南' },
|
||
{ code: 'AgentGuide', name: 'Agent 连接指南' },
|
||
{ code: 'EngineStart', name: '启动引擎' },
|
||
{ code: 'EngineStop', name: '停止引擎' },
|
||
{ code: 'RefreshStatus', name: '刷新状态' },
|
||
{ code: 'Logout', name: '退出登录' },
|
||
{ code: 'BrowserLogin', name: '浏览器登录' },
|
||
{ code: 'CheckLogin', name: '登录校验' },
|
||
{ code: 'ComingSoon', name: '敬请期待' },
|
||
]),
|
||
B('System.Ai', [
|
||
{ code: 'System.Ai.Use', name: '使用' },
|
||
{ code: 'SaveProvider', name: '保存提供商' },
|
||
{ code: 'Chat', name: '对话' },
|
||
{ code: 'DisableAi', name: '禁用 AI 服务' },
|
||
{ code: 'EditProvider', name: '编辑提供商' },
|
||
{ code: 'ClearChat', name: '清空' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Refresh', name: '刷新' },
|
||
]),
|
||
B('System.AiSkill', [
|
||
{ code: 'System.AiSkill.Use', name: '使用' },
|
||
{ code: 'System.AiSkill.Save', name: '保存' },
|
||
{ code: 'Create', name: '新建' },
|
||
{ code: 'Delete', name: '删除' },
|
||
{ code: 'Refresh', name: '刷新' },
|
||
]),
|
||
B('Xhs.Analysis', [
|
||
{ code: 'Xhs.Analysis.Use', name: '使用' },
|
||
{ code: 'Analyze', name: '执行分析' },
|
||
{ code: 'AiAnalyze', name: 'AI分析' },
|
||
{ code: 'StartAnalyze', name: '开始分析' },
|
||
{ code: 'Like', name: '点赞' },
|
||
{ code: 'Favorite', name: '收藏' },
|
||
{ code: 'Comment', name: '评论' },
|
||
{ code: 'AutoComment', name: '自动评论' },
|
||
]),
|
||
B('Xhs.Creation', [
|
||
{ code: 'Xhs.Creation.Use', name: '使用' },
|
||
{ code: 'AiCreate', name: 'AI创作' },
|
||
{ code: 'SchedulePublish', name: '定时发布' },
|
||
{ code: 'Preview', name: '预览' },
|
||
{ code: 'PublishNow', name: '立即发布' },
|
||
]),
|
||
B('Xhs.Publish', [
|
||
{ code: 'Xhs.Publish.Query', name: '查询' },
|
||
{ code: 'Cancel', name: '取消' },
|
||
{ code: 'Retry', name: '重试' },
|
||
]),
|
||
B('Xhs.Skills', [
|
||
{ code: 'Xhs.Skills.Query', name: '查询' },
|
||
{ code: 'ImportOfficial', name: '导入官方示例' },
|
||
{ code: 'MatchSkill', name: '搭配新技能' },
|
||
{ code: 'GenerateName', name: '生成名称' },
|
||
{ code: 'Create', name: '新增' },
|
||
{ code: 'Update', name: '修改' },
|
||
{ code: 'Delete', name: '删除' },
|
||
]),
|
||
B('Xhs.HumanSettings', [
|
||
{ code: 'Xhs.HumanSettings.Save', name: '保存' },
|
||
{ code: 'Save', name: '保存' },
|
||
{ code: 'Reset', name: '重置' },
|
||
{ code: 'RestoreDefault', name: '恢复默认' },
|
||
{ code: 'Reload', name: '重新加载' },
|
||
]),
|
||
];
|
||
|
||
function buildCatalogLookup(): Map<string, PageButtonDef[]> {
|
||
const map = new Map<string, PageButtonDef[]>();
|
||
|
||
const register = (key: string, buttons: PageButtonDef[]) => {
|
||
const normalized = key.trim();
|
||
if (!normalized) return;
|
||
map.set(normalized, buttons.map((item) => ({ ...item })));
|
||
};
|
||
|
||
CORE_GROUPS.forEach((group) => {
|
||
register(group.parentPermissionCode, group.buttons);
|
||
register(`${group.parentPermissionCode}.Query`, group.buttons);
|
||
register(normalizeResourcePermissionCode(group.parentPermissionCode), group.buttons);
|
||
});
|
||
|
||
Object.entries(PAGE_BUTTON_PARENT_ALIASES).forEach(([alias, canonical]) => {
|
||
const buttons = map.get(canonical);
|
||
if (buttons) {
|
||
register(alias, buttons);
|
||
}
|
||
});
|
||
|
||
return map;
|
||
}
|
||
|
||
/**
|
||
* 将菜单 permissionCode 规范化为资源级
|
||
*/
|
||
export function normalizeResourcePermissionCode(permissionCode: string): string {
|
||
const code = permissionCode?.trim() || '';
|
||
if (!code) return '';
|
||
if (/\.Query$/i.test(code)) {
|
||
return code.replace(/\.Query$/i, '');
|
||
}
|
||
return code;
|
||
}
|
||
|
||
const catalogLookup = buildCatalogLookup();
|
||
|
||
/** 导出完整目录(canonical 分组) */
|
||
export const PAGE_BUTTON_CATALOG: PageButtonGroup[] = CORE_GROUPS;
|
||
|
||
/** 按菜单 permissionCode 获取三级按钮 */
|
||
export function getCatalogButtons(menuPermissionCode: string): PageButtonDef[] {
|
||
const code = menuPermissionCode?.trim();
|
||
if (!code) return [];
|
||
|
||
const resourceCode = normalizeResourcePermissionCode(code);
|
||
const aliasKey = PAGE_BUTTON_PARENT_ALIASES[code];
|
||
|
||
const buttons =
|
||
catalogLookup.get(code) ??
|
||
(aliasKey ? catalogLookup.get(aliasKey) : undefined) ??
|
||
catalogLookup.get(resourceCode) ??
|
||
catalogLookup.get(`${resourceCode}.Query`) ??
|
||
[];
|
||
|
||
return buttons.map((item) => ({ ...item }));
|
||
}
|
||
|
||
/** 全部三级按钮(去重) */
|
||
export function getAllCatalogButtons(): PageButtonDef[] {
|
||
const map = new Map<string, PageButtonDef>();
|
||
CORE_GROUPS.forEach((group) => {
|
||
group.buttons.forEach((btn) => {
|
||
if (!map.has(btn.permissionCode)) {
|
||
map.set(btn.permissionCode, { ...btn });
|
||
}
|
||
});
|
||
});
|
||
return Array.from(map.values());
|
||
}
|
||
|
||
/** 已收录的页面菜单 permissionCode 列表 */
|
||
export function getCatalogParentCodes(): string[] {
|
||
return CORE_GROUPS.map((g) => g.parentPermissionCode).sort();
|
||
}
|