smart-admin-web 10.20.1 → 10.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/api/index.d.ts +19 -1
  2. package/dist/api/index.js +85 -66
  3. package/dist/api/index.js.map +1 -1
  4. package/dist/api/schema.d.ts +448 -1
  5. package/dist/assets/icons/ph-subset.json.js +1 -1
  6. package/dist/components/FormContainer/index.vue.js +87 -75
  7. package/dist/components/FormContainer/index.vue.js.map +1 -1
  8. package/dist/components/UserPicker/UserAvatar.vue.d.ts +8 -0
  9. package/dist/components/UserPicker/UserAvatar.vue.js +8 -0
  10. package/dist/components/UserPicker/UserAvatar.vue.js.map +1 -0
  11. package/dist/components/UserPicker/UserAvatar2.vue.js +38 -0
  12. package/dist/components/UserPicker/UserAvatar2.vue.js.map +1 -0
  13. package/dist/components/UserPicker/index.vue.js +1 -1
  14. package/dist/components/UserPicker/index2.vue.js +328 -186
  15. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  16. package/dist/composables/authMenuRoute.d.ts +10 -0
  17. package/dist/composables/authMenuRoute.js +39 -23
  18. package/dist/composables/authMenuRoute.js.map +1 -1
  19. package/dist/composables/useModule.d.ts +3 -1
  20. package/dist/composables/useModule.js +44 -32
  21. package/dist/composables/useModule.js.map +1 -1
  22. package/dist/index.js +246 -242
  23. package/dist/layouts/components/SideNav.vue.js +2 -2
  24. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  25. package/dist/lib/runtime.js +1 -1
  26. package/dist/lib/watermark.d.ts +1 -1
  27. package/dist/locales/en-US.d.ts +68 -3
  28. package/dist/locales/en-US.js +74 -8
  29. package/dist/locales/en-US.js.map +1 -1
  30. package/dist/locales/kernelMenuTitles.js +1 -0
  31. package/dist/locales/kernelMenuTitles.js.map +1 -1
  32. package/dist/locales/zh-CN.d.ts +68 -3
  33. package/dist/locales/zh-CN.js +74 -8
  34. package/dist/locales/zh-CN.js.map +1 -1
  35. package/dist/router/viewRegistry.js +6 -6
  36. package/dist/router/viewRegistry.js.map +1 -1
  37. package/dist/style.css +1 -1
  38. package/dist/theme/naive-theme.js +80 -77
  39. package/dist/theme/naive-theme.js.map +1 -1
  40. package/dist/types/api.d.ts +91 -0
  41. package/dist/types/api.js +17 -15
  42. package/dist/types/api.js.map +1 -1
  43. package/dist/utils/shake.d.ts +1 -0
  44. package/dist/utils/shake.js +30 -0
  45. package/dist/utils/shake.js.map +1 -0
  46. package/dist/utils/tree.d.ts +15 -0
  47. package/dist/utils/tree.js +43 -29
  48. package/dist/utils/tree.js.map +1 -1
  49. package/dist/utils/treeCard.d.ts +6 -0
  50. package/dist/utils/treeCard.js +9 -0
  51. package/dist/utils/treeCard.js.map +1 -0
  52. package/dist/views/error/404.vue.js +2 -2
  53. package/dist/views/error/4042.vue.js +81 -24
  54. package/dist/views/error/4042.vue.js.map +1 -1
  55. package/dist/views/login/LoginForm.vue.js +2 -2
  56. package/dist/views/login/LoginForm2.vue.js +135 -135
  57. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  58. package/dist/views/login/components/LoginDesk.vue.js +2 -2
  59. package/dist/views/login/components/LoginDesk2.vue.js +59 -47
  60. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -1
  61. package/dist/views/login/components/LoginHeroPanel.vue.js +2 -2
  62. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -1
  63. package/dist/views/personal/notice2.vue.js +1 -1
  64. package/dist/views/personal/notice2.vue.js.map +1 -1
  65. package/dist/views/personal/sessions.vue.js +2 -2
  66. package/dist/views/personal/sessions2.vue.js +41 -40
  67. package/dist/views/personal/sessions2.vue.js.map +1 -1
  68. package/dist/views/system/ai-usage/index.vue.js +3 -3
  69. package/dist/views/system/ai-usage/index2.vue.js +13 -12
  70. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  71. package/dist/views/system/config/components/AdvancedSection.vue.js +3 -3
  72. package/dist/views/system/config/components/AdvancedSection2.vue.js +2 -1
  73. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -1
  74. package/dist/views/system/dict/index.vue.js +2 -2
  75. package/dist/views/system/dict/index2.vue.js +12 -1
  76. package/dist/views/system/dict/index2.vue.js.map +1 -1
  77. package/dist/views/system/file/index2.vue.js +1 -0
  78. package/dist/views/system/file/index2.vue.js.map +1 -1
  79. package/dist/views/system/job/index.vue.js +3 -3
  80. package/dist/views/system/job/index2.vue.js +182 -181
  81. package/dist/views/system/job/index2.vue.js.map +1 -1
  82. package/dist/views/system/job-log/components/AttemptTable2.vue.js +8 -3
  83. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -1
  84. package/dist/views/system/job-log/index.vue.js +1 -1
  85. package/dist/views/system/job-log/index2.vue.js +5 -5
  86. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  87. package/dist/views/system/job-monitor/index.vue.js +2 -2
  88. package/dist/views/system/job-monitor/index2.vue.js +46 -46
  89. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  90. package/dist/views/system/log/exception/index.vue.js +2 -2
  91. package/dist/views/system/log/exception/index2.vue.js +8 -5
  92. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  93. package/dist/views/system/log/login/index2.vue.js +21 -12
  94. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  95. package/dist/views/system/log/op/index.vue.js +2 -2
  96. package/dist/views/system/log/op/index2.vue.js +50 -40
  97. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  98. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  99. package/dist/views/system/menu/components/ButtonManager2.vue.js +45 -36
  100. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  101. package/dist/views/system/menu/index.vue.js +1 -1
  102. package/dist/views/system/menu/index2.vue.js +162 -151
  103. package/dist/views/system/menu/index2.vue.js.map +1 -1
  104. package/dist/views/system/module/index.vue.js +1 -1
  105. package/dist/views/system/module/index2.vue.js +171 -117
  106. package/dist/views/system/module/index2.vue.js.map +1 -1
  107. package/dist/views/system/notice/index.vue.js +3 -3
  108. package/dist/views/system/notice/index2.vue.js +1 -0
  109. package/dist/views/system/notice/index2.vue.js.map +1 -1
  110. package/dist/views/system/org/index.vue.js +2 -2
  111. package/dist/views/system/org/index2.vue.js +204 -195
  112. package/dist/views/system/org/index2.vue.js.map +1 -1
  113. package/dist/views/system/position/index.vue.js +2 -2
  114. package/dist/views/system/position/index2.vue.js +57 -48
  115. package/dist/views/system/position/index2.vue.js.map +1 -1
  116. package/dist/views/system/recycle/index.vue.js +1 -1
  117. package/dist/views/system/recycle/index2.vue.js +3 -1
  118. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  119. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +2 -0
  120. package/dist/views/system/role/components/GrantMenuSheet.vue.js +2 -2
  121. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +54 -49
  122. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -1
  123. package/dist/views/system/role/components/GrantMenuTable.vue.js +1 -1
  124. package/dist/views/system/role/components/GrantMenuTable2.vue.js +159 -195
  125. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  126. package/dist/views/system/role/components/grantMenuGroups.d.ts +54 -0
  127. package/dist/views/system/role/components/grantMenuGroups.js +116 -76
  128. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  129. package/dist/views/system/role/index.vue.js +2 -2
  130. package/dist/views/system/role/index2.vue.js +152 -145
  131. package/dist/views/system/role/index2.vue.js.map +1 -1
  132. package/dist/views/system/session/index2.vue.js +39 -35
  133. package/dist/views/system/session/index2.vue.js.map +1 -1
  134. package/dist/views/system/user/components/UserGrantEffectiveTable.vue.d.ts +10 -0
  135. package/dist/views/system/user/components/UserGrantEffectiveTable.vue.js +5 -0
  136. package/dist/views/system/user/components/UserGrantEffectiveTable.vue.js.map +1 -0
  137. package/dist/views/system/user/components/UserGrantEffectiveTable2.vue.js +96 -0
  138. package/dist/views/system/user/components/UserGrantEffectiveTable2.vue.js.map +1 -0
  139. package/dist/views/system/user/components/UserGrantMenuSheet.vue.d.ts +13 -0
  140. package/dist/views/system/user/components/UserGrantMenuSheet.vue.js +8 -0
  141. package/dist/views/system/user/components/UserGrantMenuSheet.vue.js.map +1 -0
  142. package/dist/views/system/user/components/UserGrantMenuSheet2.vue.js +216 -0
  143. package/dist/views/system/user/components/UserGrantMenuSheet2.vue.js.map +1 -0
  144. package/dist/views/system/user/components/UserGrantMenuTable.vue.d.ts +13 -0
  145. package/dist/views/system/user/components/UserGrantMenuTable.vue.js +8 -0
  146. package/dist/views/system/user/components/UserGrantMenuTable.vue.js.map +1 -0
  147. package/dist/views/system/user/components/UserGrantMenuTable2.vue.js +186 -0
  148. package/dist/views/system/user/components/UserGrantMenuTable2.vue.js.map +1 -0
  149. package/dist/views/system/user/components/UserGrantNodeRow.vue.d.ts +31 -0
  150. package/dist/views/system/user/components/UserGrantNodeRow.vue.js +8 -0
  151. package/dist/views/system/user/components/UserGrantNodeRow.vue.js.map +1 -0
  152. package/dist/views/system/user/components/UserGrantNodeRow2.vue.js +171 -0
  153. package/dist/views/system/user/components/UserGrantNodeRow2.vue.js.map +1 -0
  154. package/dist/views/system/user/components/UserGrantOverviewDrawer.vue.d.ts +21 -0
  155. package/dist/views/system/user/components/UserGrantOverviewDrawer.vue.js +5 -0
  156. package/dist/views/system/user/components/UserGrantOverviewDrawer.vue.js.map +1 -0
  157. package/dist/views/system/user/components/UserGrantOverviewDrawer2.vue.js +178 -0
  158. package/dist/views/system/user/components/UserGrantOverviewDrawer2.vue.js.map +1 -0
  159. package/dist/views/system/user/components/userGrantState.d.ts +64 -0
  160. package/dist/views/system/user/components/userGrantState.js +117 -0
  161. package/dist/views/system/user/components/userGrantState.js.map +1 -0
  162. package/dist/views/system/user/index.vue.js +2 -2
  163. package/dist/views/system/user/index2.vue.js +369 -295
  164. package/dist/views/system/user/index2.vue.js.map +1 -1
  165. package/package.json +3 -3
@@ -47,6 +47,7 @@ const e = {
47
47
  "用户-启停": "menuTitle.button.userToggle",
48
48
  "用户-导入": "menuTitle.button.userImport",
49
49
  "用户-导出": "menuTitle.button.userExport",
50
+ "用户-授权菜单": "menuTitle.button.userGrantMenus",
50
51
  "角色-查询": "menuTitle.button.roleQuery",
51
52
  "角色-新增": "menuTitle.button.roleCreate",
52
53
  "角色-更新": "menuTitle.button.roleUpdate",
@@ -1 +1 @@
1
- {"version":3,"file":"kernelMenuTitles.js","sources":["../../src/locales/kernelMenuTitles.ts"],"sourcesContent":["// 内核种子(DefaultMenuSeed / DefaultModuleSeed)里中文标题原文 → i18n key 的映射。\n// 种子只插不更新,库里存的是中文,所以侧栏等处按标题原文查表翻译;文案本体在 locales 的 menuTitle 命名空间。\n// createSmartAdmin 把它作为最底层注册(内核 < 插件 < 应用),应用的 menuTitles 同键覆盖它。\n// 后端新增 / 改名种子标题时,同批在这里与两份语言包补键;kernelMenuTitles.spec.ts 校验表与语言包对得上。\n// 用户在菜单管理页改过标题的节点查不到表,按原文显示,这是有意的:改名即自定义,不替他翻译。\nexport const KERNEL_MENU_TITLES: Record<string, string> = {\n 系统: 'menuTitle.module.system',\n 业务中心: 'menuTitle.module.business',\n 组织管理: 'menuTitle.catalog.org',\n 系统运维: 'menuTitle.catalog.ops',\n 任务调度: 'menuTitle.catalog.schedule',\n 日志审计: 'menuTitle.catalog.audit',\n 'AI 网关管理': 'menuTitle.catalog.ai',\n 工作台: 'menuTitle.page.workbench',\n 机构管理: 'menuTitle.page.org',\n 岗位管理: 'menuTitle.page.position',\n 用户管理: 'menuTitle.page.user',\n 角色管理: 'menuTitle.page.role',\n 系统配置: 'menuTitle.page.config',\n 字典管理: 'menuTitle.page.dict',\n 菜单管理: 'menuTitle.page.menu',\n 模块管理: 'menuTitle.page.module',\n 消息通知: 'menuTitle.page.notice',\n 回收站: 'menuTitle.page.recycle',\n 服务器监控: 'menuTitle.page.monitor',\n 缓存管理: 'menuTitle.page.cache',\n 接口文档: 'menuTitle.page.apiDocs',\n 定时任务: 'menuTitle.page.job',\n 执行记录: 'menuTitle.page.jobLog',\n 任务监控: 'menuTitle.page.jobMonitor',\n 登录日志: 'menuTitle.page.loginLog',\n 操作日志: 'menuTitle.page.opLog',\n 异常日志: 'menuTitle.page.exceptionLog',\n 在线会话: 'menuTitle.page.session',\n 文件管理: 'menuTitle.page.file',\n 'AI 模型': 'menuTitle.page.aiModel',\n 用量统计: 'menuTitle.page.aiUsage',\n '机构-查询': 'menuTitle.button.orgQuery',\n '机构-新增': 'menuTitle.button.orgCreate',\n '机构-更新': 'menuTitle.button.orgUpdate',\n '机构-删除': 'menuTitle.button.orgDelete',\n '机构-复制': 'menuTitle.button.orgCopy',\n '岗位-查询': 'menuTitle.button.positionQuery',\n '岗位-新增': 'menuTitle.button.positionCreate',\n '岗位-更新': 'menuTitle.button.positionUpdate',\n '岗位-删除': 'menuTitle.button.positionDelete',\n '用户-查询': 'menuTitle.button.userQuery',\n '用户-新增': 'menuTitle.button.userCreate',\n '用户-更新': 'menuTitle.button.userUpdate',\n '用户-删除': 'menuTitle.button.userDelete',\n '用户-重置密码': 'menuTitle.button.userResetPassword',\n '用户-启停': 'menuTitle.button.userToggle',\n '用户-导入': 'menuTitle.button.userImport',\n '用户-导出': 'menuTitle.button.userExport',\n '角色-查询': 'menuTitle.button.roleQuery',\n '角色-新增': 'menuTitle.button.roleCreate',\n '角色-更新': 'menuTitle.button.roleUpdate',\n '角色-删除': 'menuTitle.button.roleDelete',\n '角色-授权菜单': 'menuTitle.button.roleGrantMenus',\n '角色-数据范围': 'menuTitle.button.roleDataScope',\n '角色-授权用户': 'menuTitle.button.roleGrantUsers',\n 连通性探针: 'menuTitle.button.ping',\n '配置-查询': 'menuTitle.button.configQuery',\n '配置-新增': 'menuTitle.button.configCreate',\n '配置-更新': 'menuTitle.button.configUpdate',\n '配置-删除': 'menuTitle.button.configDelete',\n '配置-上传Logo': 'menuTitle.button.configUploadLogo',\n '高敏权限-查询': 'menuTitle.button.sensitiveQuery',\n '高敏权限-新增': 'menuTitle.button.sensitiveCreate',\n '高敏权限-删除': 'menuTitle.button.sensitiveDelete',\n 'MFA-清除用户二因子': 'menuTitle.button.mfaClear',\n '字典类型-查询': 'menuTitle.button.dictTypeQuery',\n '字典类型-新增': 'menuTitle.button.dictTypeCreate',\n '字典类型-更新': 'menuTitle.button.dictTypeUpdate',\n '字典类型-删除': 'menuTitle.button.dictTypeDelete',\n '字典项-查询': 'menuTitle.button.dictItemQuery',\n '字典项-新增': 'menuTitle.button.dictItemCreate',\n '字典项-更新': 'menuTitle.button.dictItemUpdate',\n '字典项-删除': 'menuTitle.button.dictItemDelete',\n '菜单-查询': 'menuTitle.button.menuQuery',\n '菜单-新增': 'menuTitle.button.menuCreate',\n '菜单-更新': 'menuTitle.button.menuUpdate',\n '菜单-删除': 'menuTitle.button.menuDelete',\n '模块-查询': 'menuTitle.button.moduleQuery',\n '模块-新增': 'menuTitle.button.moduleCreate',\n '模块-更新': 'menuTitle.button.moduleUpdate',\n '模块-删除': 'menuTitle.button.moduleDelete',\n '通知-查询': 'menuTitle.button.noticeQuery',\n '通知-发布': 'menuTitle.button.noticePublish',\n '通知-删除': 'menuTitle.button.noticeDelete',\n '回收站-查询': 'menuTitle.button.recycleQuery',\n '回收站-彻底删除': 'menuTitle.button.recyclePurge',\n '回收站-恢复': 'menuTitle.button.recycleRestore',\n '服务器监控-查询': 'menuTitle.button.monitorQuery',\n '缓存-清授权': 'menuTitle.button.cacheFlushAuth',\n '缓存-清字典': 'menuTitle.button.cacheFlushDict',\n '缓存-清配置': 'menuTitle.button.cacheFlushConfig',\n '缓存-重建门户菜单': 'menuTitle.button.cacheRebuildPortal',\n '接口文档-查看契约': 'menuTitle.button.apiDocsView',\n '任务-查询': 'menuTitle.button.jobQuery',\n '任务-新增': 'menuTitle.button.jobCreate',\n '任务-更新': 'menuTitle.button.jobUpdate',\n '任务-删除': 'menuTitle.button.jobDelete',\n '任务-启停': 'menuTitle.button.jobToggle',\n '任务-执行一次': 'menuTitle.button.jobRun',\n '记录-查询': 'menuTitle.button.jobLogQuery',\n '记录-终止': 'menuTitle.button.jobLogKill',\n '记录-清空': 'menuTitle.button.jobLogClear',\n '监控-查询': 'menuTitle.button.jobMonitorQuery',\n '登录日志-查询': 'menuTitle.button.loginLogQuery',\n '登录日志-清空': 'menuTitle.button.loginLogClear',\n '操作日志-查询': 'menuTitle.button.opLogQuery',\n '操作日志-清空': 'menuTitle.button.opLogClear',\n '操作日志-导出': 'menuTitle.button.opLogExport',\n '异常日志-查询': 'menuTitle.button.exceptionLogQuery',\n '异常日志-清空': 'menuTitle.button.exceptionLogClear',\n '在线会话-查询': 'menuTitle.button.sessionQuery',\n 强制下线: 'menuTitle.button.sessionKick',\n '文件-查询': 'menuTitle.button.fileQuery',\n '文件-上传': 'menuTitle.button.fileUpload',\n '文件-删除': 'menuTitle.button.fileDelete',\n '文件-下载': 'menuTitle.button.fileDownload',\n 'AI 厂商-查询': 'menuTitle.button.aiProviderQuery',\n 'AI 厂商-新增': 'menuTitle.button.aiProviderCreate',\n 'AI 厂商-更新': 'menuTitle.button.aiProviderUpdate',\n 'AI 厂商-删除': 'menuTitle.button.aiProviderDelete',\n 'AI 厂商-测试连接': 'menuTitle.button.aiProviderTest',\n 'AI 用量-查询': 'menuTitle.button.aiUsageQuery',\n}\n"],"names":["KERNEL_MENU_TITLES"],"mappings":"AAKO,MAAMA,IAA6C;AAAA,EACxD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AACd;"}
1
+ {"version":3,"file":"kernelMenuTitles.js","sources":["../../src/locales/kernelMenuTitles.ts"],"sourcesContent":["// 内核种子(DefaultMenuSeed / DefaultModuleSeed)里中文标题原文 → i18n key 的映射。\n// 种子只插不更新,库里存的是中文,所以侧栏等处按标题原文查表翻译;文案本体在 locales 的 menuTitle 命名空间。\n// createSmartAdmin 把它作为最底层注册(内核 < 插件 < 应用),应用的 menuTitles 同键覆盖它。\n// 后端新增 / 改名种子标题时,同批在这里与两份语言包补键;kernelMenuTitles.spec.ts 校验表与语言包对得上。\n// 用户在菜单管理页改过标题的节点查不到表,按原文显示,这是有意的:改名即自定义,不替他翻译。\nexport const KERNEL_MENU_TITLES: Record<string, string> = {\n 系统: 'menuTitle.module.system',\n 业务中心: 'menuTitle.module.business',\n 组织管理: 'menuTitle.catalog.org',\n 系统运维: 'menuTitle.catalog.ops',\n 任务调度: 'menuTitle.catalog.schedule',\n 日志审计: 'menuTitle.catalog.audit',\n 'AI 网关管理': 'menuTitle.catalog.ai',\n 工作台: 'menuTitle.page.workbench',\n 机构管理: 'menuTitle.page.org',\n 岗位管理: 'menuTitle.page.position',\n 用户管理: 'menuTitle.page.user',\n 角色管理: 'menuTitle.page.role',\n 系统配置: 'menuTitle.page.config',\n 字典管理: 'menuTitle.page.dict',\n 菜单管理: 'menuTitle.page.menu',\n 模块管理: 'menuTitle.page.module',\n 消息通知: 'menuTitle.page.notice',\n 回收站: 'menuTitle.page.recycle',\n 服务器监控: 'menuTitle.page.monitor',\n 缓存管理: 'menuTitle.page.cache',\n 接口文档: 'menuTitle.page.apiDocs',\n 定时任务: 'menuTitle.page.job',\n 执行记录: 'menuTitle.page.jobLog',\n 任务监控: 'menuTitle.page.jobMonitor',\n 登录日志: 'menuTitle.page.loginLog',\n 操作日志: 'menuTitle.page.opLog',\n 异常日志: 'menuTitle.page.exceptionLog',\n 在线会话: 'menuTitle.page.session',\n 文件管理: 'menuTitle.page.file',\n 'AI 模型': 'menuTitle.page.aiModel',\n 用量统计: 'menuTitle.page.aiUsage',\n '机构-查询': 'menuTitle.button.orgQuery',\n '机构-新增': 'menuTitle.button.orgCreate',\n '机构-更新': 'menuTitle.button.orgUpdate',\n '机构-删除': 'menuTitle.button.orgDelete',\n '机构-复制': 'menuTitle.button.orgCopy',\n '岗位-查询': 'menuTitle.button.positionQuery',\n '岗位-新增': 'menuTitle.button.positionCreate',\n '岗位-更新': 'menuTitle.button.positionUpdate',\n '岗位-删除': 'menuTitle.button.positionDelete',\n '用户-查询': 'menuTitle.button.userQuery',\n '用户-新增': 'menuTitle.button.userCreate',\n '用户-更新': 'menuTitle.button.userUpdate',\n '用户-删除': 'menuTitle.button.userDelete',\n '用户-重置密码': 'menuTitle.button.userResetPassword',\n '用户-启停': 'menuTitle.button.userToggle',\n '用户-导入': 'menuTitle.button.userImport',\n '用户-导出': 'menuTitle.button.userExport',\n '用户-授权菜单': 'menuTitle.button.userGrantMenus',\n '角色-查询': 'menuTitle.button.roleQuery',\n '角色-新增': 'menuTitle.button.roleCreate',\n '角色-更新': 'menuTitle.button.roleUpdate',\n '角色-删除': 'menuTitle.button.roleDelete',\n '角色-授权菜单': 'menuTitle.button.roleGrantMenus',\n '角色-数据范围': 'menuTitle.button.roleDataScope',\n '角色-授权用户': 'menuTitle.button.roleGrantUsers',\n 连通性探针: 'menuTitle.button.ping',\n '配置-查询': 'menuTitle.button.configQuery',\n '配置-新增': 'menuTitle.button.configCreate',\n '配置-更新': 'menuTitle.button.configUpdate',\n '配置-删除': 'menuTitle.button.configDelete',\n '配置-上传Logo': 'menuTitle.button.configUploadLogo',\n '高敏权限-查询': 'menuTitle.button.sensitiveQuery',\n '高敏权限-新增': 'menuTitle.button.sensitiveCreate',\n '高敏权限-删除': 'menuTitle.button.sensitiveDelete',\n 'MFA-清除用户二因子': 'menuTitle.button.mfaClear',\n '字典类型-查询': 'menuTitle.button.dictTypeQuery',\n '字典类型-新增': 'menuTitle.button.dictTypeCreate',\n '字典类型-更新': 'menuTitle.button.dictTypeUpdate',\n '字典类型-删除': 'menuTitle.button.dictTypeDelete',\n '字典项-查询': 'menuTitle.button.dictItemQuery',\n '字典项-新增': 'menuTitle.button.dictItemCreate',\n '字典项-更新': 'menuTitle.button.dictItemUpdate',\n '字典项-删除': 'menuTitle.button.dictItemDelete',\n '菜单-查询': 'menuTitle.button.menuQuery',\n '菜单-新增': 'menuTitle.button.menuCreate',\n '菜单-更新': 'menuTitle.button.menuUpdate',\n '菜单-删除': 'menuTitle.button.menuDelete',\n '模块-查询': 'menuTitle.button.moduleQuery',\n '模块-新增': 'menuTitle.button.moduleCreate',\n '模块-更新': 'menuTitle.button.moduleUpdate',\n '模块-删除': 'menuTitle.button.moduleDelete',\n '通知-查询': 'menuTitle.button.noticeQuery',\n '通知-发布': 'menuTitle.button.noticePublish',\n '通知-删除': 'menuTitle.button.noticeDelete',\n '回收站-查询': 'menuTitle.button.recycleQuery',\n '回收站-彻底删除': 'menuTitle.button.recyclePurge',\n '回收站-恢复': 'menuTitle.button.recycleRestore',\n '服务器监控-查询': 'menuTitle.button.monitorQuery',\n '缓存-清授权': 'menuTitle.button.cacheFlushAuth',\n '缓存-清字典': 'menuTitle.button.cacheFlushDict',\n '缓存-清配置': 'menuTitle.button.cacheFlushConfig',\n '缓存-重建门户菜单': 'menuTitle.button.cacheRebuildPortal',\n '接口文档-查看契约': 'menuTitle.button.apiDocsView',\n '任务-查询': 'menuTitle.button.jobQuery',\n '任务-新增': 'menuTitle.button.jobCreate',\n '任务-更新': 'menuTitle.button.jobUpdate',\n '任务-删除': 'menuTitle.button.jobDelete',\n '任务-启停': 'menuTitle.button.jobToggle',\n '任务-执行一次': 'menuTitle.button.jobRun',\n '记录-查询': 'menuTitle.button.jobLogQuery',\n '记录-终止': 'menuTitle.button.jobLogKill',\n '记录-清空': 'menuTitle.button.jobLogClear',\n '监控-查询': 'menuTitle.button.jobMonitorQuery',\n '登录日志-查询': 'menuTitle.button.loginLogQuery',\n '登录日志-清空': 'menuTitle.button.loginLogClear',\n '操作日志-查询': 'menuTitle.button.opLogQuery',\n '操作日志-清空': 'menuTitle.button.opLogClear',\n '操作日志-导出': 'menuTitle.button.opLogExport',\n '异常日志-查询': 'menuTitle.button.exceptionLogQuery',\n '异常日志-清空': 'menuTitle.button.exceptionLogClear',\n '在线会话-查询': 'menuTitle.button.sessionQuery',\n 强制下线: 'menuTitle.button.sessionKick',\n '文件-查询': 'menuTitle.button.fileQuery',\n '文件-上传': 'menuTitle.button.fileUpload',\n '文件-删除': 'menuTitle.button.fileDelete',\n '文件-下载': 'menuTitle.button.fileDownload',\n 'AI 厂商-查询': 'menuTitle.button.aiProviderQuery',\n 'AI 厂商-新增': 'menuTitle.button.aiProviderCreate',\n 'AI 厂商-更新': 'menuTitle.button.aiProviderUpdate',\n 'AI 厂商-删除': 'menuTitle.button.aiProviderDelete',\n 'AI 厂商-测试连接': 'menuTitle.button.aiProviderTest',\n 'AI 用量-查询': 'menuTitle.button.aiUsageQuery',\n}\n"],"names":["KERNEL_MENU_TITLES"],"mappings":"AAKO,MAAMA,IAA6C;AAAA,EACxD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AACd;"}
@@ -41,16 +41,27 @@ declare const _default: {
41
41
  };
42
42
  userPicker: {
43
43
  title: string;
44
+ org: string;
44
45
  available: string;
45
46
  selected: string;
46
- add: string;
47
- added: string;
48
- addChecked: string;
47
+ searchName: string;
48
+ searchAccount: string;
49
+ selectPage: string;
50
+ unselectPage: string;
51
+ total: string;
52
+ existing: string;
53
+ remove: string;
54
+ emptySelected: string;
55
+ prevPage: string;
56
+ nextPage: string;
49
57
  clear: string;
50
58
  };
51
59
  notFound: {
52
60
  desc: string;
53
61
  back: string;
62
+ currentApp: string;
63
+ otherApp: string;
64
+ switchAndOpen: string;
54
65
  };
55
66
  errorBoundary: {
56
67
  title: string;
@@ -241,6 +252,9 @@ declare const _default: {
241
252
  deleteConfirm: string;
242
253
  disableConfirm: string;
243
254
  builtinNoDisable: string;
255
+ delegatable: string;
256
+ delegatableHint: string;
257
+ builtinNotDelegatable: string;
244
258
  saved: string;
245
259
  deleted: string;
246
260
  };
@@ -355,6 +369,7 @@ declare const _default: {
355
369
  userToggle: string;
356
370
  userImport: string;
357
371
  userExport: string;
372
+ userGrantMenus: string;
358
373
  roleQuery: string;
359
374
  roleCreate: string;
360
375
  roleUpdate: string;
@@ -503,6 +518,9 @@ declare const _default: {
503
518
  org: string;
504
519
  allOrgs: string;
505
520
  orgFilter: string;
521
+ collapseToFirstLevel: string;
522
+ hideOrgPanel: string;
523
+ showOrgPanel: string;
506
524
  orgPlaceholder: string;
507
525
  position: string;
508
526
  positionPlaceholder: string;
@@ -551,6 +569,47 @@ declare const _default: {
551
569
  totpInviteToken: string;
552
570
  totpInviteExpires: string;
553
571
  };
572
+ userGrant: {
573
+ action: string;
574
+ title: string;
575
+ tabGrant: string;
576
+ tabEffective: string;
577
+ hint: string;
578
+ noRoles: string;
579
+ readonly: string;
580
+ readonlyNoReason: string;
581
+ follow: string;
582
+ allow: string;
583
+ deny: string;
584
+ effective: string;
585
+ ineffective: string;
586
+ expired: string;
587
+ deniedByAncestor: string;
588
+ notGrantable: string;
589
+ expireLongTerm: string;
590
+ remark: string;
591
+ leaked: string;
592
+ leakedFrom: string;
593
+ summary: string;
594
+ unsaved: string;
595
+ invalidExpiry: string;
596
+ saved: string;
597
+ overview: string;
598
+ colUser: string;
599
+ colMenu: string;
600
+ colState: string;
601
+ colSource: string;
602
+ colEffect: string;
603
+ colStatus: string;
604
+ colExpire: string;
605
+ colGrantor: string;
606
+ colGrantTime: string;
607
+ colRemark: string;
608
+ adjust: string;
609
+ statusActive: string;
610
+ statusExpiring: string;
611
+ statusExpired: string;
612
+ };
554
613
  mfa: {
555
614
  bindTitle: string;
556
615
  recoveryTitle: string;
@@ -1247,6 +1306,7 @@ declare const _default: {
1247
1306
  grantSummary: string;
1248
1307
  grantSummarySplit: string;
1249
1308
  grantUnsaved: string;
1309
+ systemMenusBuiltinOnly: string;
1250
1310
  dataScope: string;
1251
1311
  scopeType: string;
1252
1312
  customOrgs: string;
@@ -1747,6 +1807,9 @@ declare const _default: {
1747
1807
  denied: string;
1748
1808
  demoReadOnly: string;
1749
1809
  superAdminRequired: string;
1810
+ menuNotGrantable: string;
1811
+ targetIsDelegatedAdmin: string;
1812
+ delegatedGrantExpiryInvalid: string;
1750
1813
  };
1751
1814
  user: {
1752
1815
  notFound: string;
@@ -1757,11 +1820,13 @@ declare const _default: {
1757
1820
  outOfDataScope: string;
1758
1821
  avatarUrlInvalid: string;
1759
1822
  cannotOperateSelf: string;
1823
+ menuGrantInvalid: string;
1760
1824
  };
1761
1825
  role: {
1762
1826
  notFound: string;
1763
1827
  codeExists: string;
1764
1828
  notDelegatable: string;
1829
+ systemMenuNotAssignable: string;
1765
1830
  };
1766
1831
  org: {
1767
1832
  notFound: string;
@@ -41,16 +41,27 @@ const e = {
41
41
  },
42
42
  userPicker: {
43
43
  title: "选择用户",
44
+ org: "机构",
44
45
  available: "可选用户",
45
46
  selected: "已选",
46
- add: "添加",
47
- added: "已选",
48
- addChecked: "添加选中",
47
+ searchName: "搜索姓名",
48
+ searchAccount: "搜索账号",
49
+ selectPage: "全选本页",
50
+ unselectPage: "取消本页",
51
+ total: "共 {n} 人",
52
+ existing: "已有",
53
+ remove: "移除",
54
+ emptySelected: "尚未选择用户",
55
+ prevPage: "上一页",
56
+ nextPage: "下一页",
49
57
  clear: "清空"
50
58
  },
51
59
  notFound: {
52
60
  desc: "页面不存在",
53
- back: "返回工作台"
61
+ back: "返回工作台",
62
+ currentApp: "当前应用:{app}",
63
+ otherApp: "该页面属于「{app}」应用,不在当前应用里",
64
+ switchAndOpen: "切换到「{app}」并打开"
54
65
  },
55
66
  // 内容区渲染异常兜底(components/ErrorBoundary)
56
67
  errorBoundary: {
@@ -243,6 +254,9 @@ const e = {
243
254
  deleteConfirm: "确定删除应用「{title}」?",
244
255
  disableConfirm: "确定停用应用「{title}」?门户将不再显示该应用",
245
256
  builtinNoDisable: "内置应用不可停用",
257
+ delegatable: "可转授",
258
+ delegatableHint: "打开后,普通管理员能把本应用的菜单单独授给或拒给用户(限时)",
259
+ builtinNotDelegatable: "内置应用固定不可转授",
246
260
  saved: "保存成功",
247
261
  deleted: "已删除"
248
262
  },
@@ -359,6 +373,7 @@ const e = {
359
373
  userToggle: "用户-启停",
360
374
  userImport: "用户-导入",
361
375
  userExport: "用户-导出",
376
+ userGrantMenus: "用户-授权菜单",
362
377
  roleQuery: "角色-查询",
363
378
  roleCreate: "角色-新增",
364
379
  roleUpdate: "角色-更新",
@@ -513,8 +528,12 @@ const e = {
513
528
  passwordHint: "留空则自动生成随机密码(创建后显示一次)",
514
529
  org: "归属机构",
515
530
  allOrgs: "全部",
516
- // 内容区较窄时机构树收进抽屉:工具栏按钮与抽屉标题
531
+ // 机构分组栏的分组名;内容区较窄时机构树收进抽屉,它同时是工具栏按钮与抽屉标题
517
532
  orgFilter: "机构",
533
+ // 分组栏头部按钮的提示:展开到底后变成「折叠到一级」;「收起」向左收起整栏,收起后工具栏按钮的提示是「展开」
534
+ collapseToFirstLevel: "折叠到一级",
535
+ hideOrgPanel: "收起机构栏",
536
+ showOrgPanel: "展开机构栏",
518
537
  orgPlaceholder: "选择机构(可空)",
519
538
  position: "职位",
520
539
  positionPlaceholder: "选择职位(可空)",
@@ -563,6 +582,47 @@ const e = {
563
582
  totpInviteToken: "邀请令牌",
564
583
  totpInviteExpires: "过期时间"
565
584
  },
585
+ userGrant: {
586
+ action: "授权菜单",
587
+ title: "授权菜单 · {name}",
588
+ tabGrant: "单独授权",
589
+ tabEffective: "有效权限",
590
+ hint: "常规授权请走角色,这里只放例外。允许只作用于这一个节点;拒绝连同下级一起收回,且优先于任何允许。",
591
+ noRoles: "该用户没有任何角色,数据范围为「仅本人」:能打开授权的页面,但只看得到自己创建的数据。",
592
+ readonly: "只能查看,不能修改:{reason}",
593
+ readonlyNoReason: "只能查看,不能修改",
594
+ follow: "跟随角色",
595
+ allow: "允许",
596
+ deny: "拒绝",
597
+ effective: "有效",
598
+ ineffective: "无效",
599
+ expired: "已过期",
600
+ deniedByAncestor: "被上级拒绝",
601
+ notGrantable: "该模块只允许超管授权",
602
+ expireLongTerm: "长期",
603
+ remark: "授权理由(选填)",
604
+ leaked: "以下接口仍可调用:",
605
+ leakedFrom: "{code}(来自 {from})",
606
+ summary: "允许 {allow} · 拒绝 {deny}",
607
+ unsaved: "有未保存的修改",
608
+ invalidExpiry: "有 {count} 条记录的到期日缺失或超出可选范围",
609
+ saved: "授权已保存",
610
+ overview: "单独授权一览",
611
+ colUser: "用户",
612
+ colMenu: "菜单",
613
+ colState: "状态",
614
+ colSource: "来源",
615
+ colEffect: "效果",
616
+ colStatus: "有效期",
617
+ colExpire: "到期",
618
+ colGrantor: "授权人",
619
+ colGrantTime: "授权时间",
620
+ colRemark: "授权理由",
621
+ adjust: "去调整",
622
+ statusActive: "生效中",
623
+ statusExpiring: "7 天内到期",
624
+ statusExpired: "已过期"
625
+ },
566
626
  mfa: {
567
627
  bindTitle: "设置身份验证器",
568
628
  recoveryTitle: "使用恢复码",
@@ -1250,6 +1310,7 @@ const e = {
1250
1310
  grantSummary: "已授权 {on} / {total} 项",
1251
1311
  grantSummarySplit: "页面 {pages} · 按钮 {buttons}",
1252
1312
  grantUnsaved: "有未保存的修改",
1313
+ systemMenusBuiltinOnly: "除「用户管理」「角色管理」外,系统自带的菜单只能授给内置角色,这里不显示",
1253
1314
  dataScope: "数据范围",
1254
1315
  scopeType: "范围类型",
1255
1316
  customOrgs: "自定义机构",
@@ -1749,7 +1810,10 @@ const e = {
1749
1810
  perm: {
1750
1811
  denied: "无权限访问",
1751
1812
  demoReadOnly: "当前为演示环境,禁止修改操作",
1752
- superAdminRequired: "该操作仅限超级管理员执行"
1813
+ superAdminRequired: "该操作仅限超级管理员执行",
1814
+ menuNotGrantable: "该菜单所属模块不允许转授",
1815
+ targetIsDelegatedAdmin: "对方是管理员,只有超管能为其单独授权",
1816
+ delegatedGrantExpiryInvalid: "允许必须设置到期日,且最长 {maxDays} 天"
1753
1817
  },
1754
1818
  user: {
1755
1819
  notFound: "用户不存在",
@@ -1759,12 +1823,14 @@ const e = {
1759
1823
  passwordReused: "新密码不能与当前或最近使用过的密码相同",
1760
1824
  outOfDataScope: "目标用户超出当前数据范围",
1761
1825
  avatarUrlInvalid: "头像地址不合法",
1762
- cannotOperateSelf: "不能对自己执行此操作"
1826
+ cannotOperateSelf: "不能对自己执行此操作",
1827
+ menuGrantInvalid: "授权变更不合法:同一菜单只能出现一次,到期时间须晚于当前时间"
1763
1828
  },
1764
1829
  role: {
1765
1830
  notFound: "角色不存在",
1766
1831
  codeExists: "角色编码已存在",
1767
- notDelegatable: "目标角色不可转授"
1832
+ notDelegatable: "目标角色不可转授",
1833
+ systemMenuNotAssignable: "除「用户管理」「角色管理」外,系统自带的菜单只能授给内置角色"
1768
1834
  },
1769
1835
  org: {
1770
1836
  notFound: "机构不存在",