feat(product): 新增产品管理模块与字典组件功能

- 新增产品管理相关路由和页面(dashboard、list、requirement、setting)
- 实现产品基础信息编辑弹窗组件(base-info-dialog.vue)
- 添加运行时字典功能(dict-select、dict-text、dict-tag组件)
- 集成字典管理store和API调用
- 规范ID类型定义为string避免精度丢失问题
- 完善国际化资源文件支持中英文对照
- 新增对象上下文业务域入口页导航实现说明
- 添加Vue DevTools浮动入口注释说明
- 统一权限控制支持全局和对象作用域区分
- 规范分页查询参数类型定义与使用方式
This commit is contained in:
2026-04-23 09:05:55 +08:00
parent c5911ea34b
commit 4122dfa50d
95 changed files with 9581 additions and 801 deletions

View File

@@ -169,6 +169,11 @@ const local: App.I18n.Schema = {
function_request: '请求',
'function_toggle-auth': '切换权限',
'function_super-page': '超级管理员可见',
product: '产品管理',
product_list: '产品列表',
product_dashboard: '产品仪表盘',
product_requirement: '需求池',
product_setting: '产品设置',
system: '系统管理',
system_user: '用户管理',
'system_user-detail': '用户详情',
@@ -343,6 +348,14 @@ const local: App.I18n.Schema = {
status: {
enable: '启用',
disable: '禁用'
},
scopeType: {
global: '全域',
object: '对象域'
},
objectType: {
product: '产品',
project: '项目'
}
},
role: {
@@ -358,7 +371,7 @@ const local: App.I18n.Schema = {
roleStatus: '角色状态',
roleDesc: '角色描述',
remark: '备注',
sort: '显示顺序',
sort: '序',
createTime: '创建时间',
menuAuth: '菜单权限',
buttonAuth: '按钮权限',
@@ -366,6 +379,13 @@ const local: App.I18n.Schema = {
selectedCount: '已选资源',
disabledTip: '禁用角色不允许分配菜单权限',
emptyRole: '请先选择角色',
currentRoleCount: '当前角色数',
globalRoleTitle: '全域角色',
objectRoleTitle: '对象域角色模板',
globalRoleSummary: '当前维护登录态全域角色及其资源授权关系。',
objectRoleSummary: '当前维护对象域角色模板及其可授权资源关系,不参与登录态全局菜单导航。',
objectRoleSummaryProduct: '当前维护产品域角色模板及其可授权资源关系,不参与登录态全局菜单导航。',
objectRoleSummaryProject: '当前维护项目域角色模板及其可授权资源关系,不参与登录态全局菜单导航。',
lastAuthSave: '最近一次授权保存',
unsavedTip: '授权变更后请记得保存',
form: {
@@ -374,7 +394,7 @@ const local: App.I18n.Schema = {
roleStatus: '请选择角色状态',
roleDesc: '请输入角色描述',
remark: '请输入备注',
sort: '请输入显示顺序',
sort: '请输入序',
resourceKeyword: '输入资源名称过滤权限树',
startTime: '开始时间',
endTime: '结束时间'
@@ -491,6 +511,7 @@ const local: App.I18n.Schema = {
routeKind: '路由类型',
routePropsJson: '路由参数 JSON',
pageResource: '页面资源',
boundRoute: '绑定路由',
component: '组件路径',
componentName: '组件名称',
iframeUrl: 'iframe 地址',
@@ -520,6 +541,36 @@ const local: App.I18n.Schema = {
alwaysShow: '总是显示子菜单',
createTime: '创建时间',
topLevel: '顶级菜单',
scopeType: '作用域',
objectType: '对象类型',
resourceCode: '资源编码',
contextEyebrow: '菜单配置上下文',
contextTitle: '统一作用域资源配置',
contextDescription: '用同一套菜单页同时承接全域路由资源与对象域权限资源,避免为产品和项目再拆多套重复页面。',
currentContext: '当前上下文',
currentResourceCount: '当前资源数',
editorMode: '编辑模式',
editorModeGlobal: '路由型资源编辑器',
editorModeObject: '对象导航编辑器',
globalResourceTitle: '全域菜单资源',
objectResourceTitle: '对象域资源',
globalResourceSummary: '当前维护登录态菜单、路由映射与全局按钮权限资源。',
objectResourceSummary: '当前维护对象域导航项与操作按钮。导航项绑定真实页面路由,操作按钮用于对象内权限点。',
objectResourceSummaryProduct:
'当前维护产品域导航项与操作按钮。导航项绑定真实页面路由,操作按钮用于产品对象内权限点。',
objectResourceSummaryProject:
'当前维护项目域导航项与操作按钮。导航项绑定真实页面路由,操作按钮用于项目对象内权限点。',
scopeHintGlobal: '全域模式下保留现有路由型资源编辑方式,用于登录态菜单与全局按钮权限链路。',
scopeHintObject: '对象域模式下维护导航项和操作按钮。导航项绑定真实页面资源,操作按钮只维护权限标识。',
objectTypePlaceholder: '请选择对象类型',
contextReady: '已选定配置范围',
contextPending: '等待选择对象类型',
objectTypeRequiredTitle: '请先选择对象类型',
objectTypeRequiredDescription:
'对象域资源必须先明确配置范围,例如产品或项目。选定后再加载树形资源列表和编辑弹层。',
objectModeTipTitle: '对象域当前配置的是对象导航项和操作按钮',
objectModeTipDescription:
'第一版对象域菜单页只开放导航项和操作按钮。导航项通过绑定真实页面路由建立对象内头部导航,操作按钮只维护权限标识;暂不开放目录配置。',
sections: {
basic: '基础信息',
route: '路由信息',
@@ -531,6 +582,7 @@ const local: App.I18n.Schema = {
parentId: '请选择父级菜单',
menuName: '请输入菜单名称',
permission: '请输入权限标识',
resourceCode: '请输入资源编码',
routeName: '请输入路由名称',
routePath: '请输入路由路径',
path: '请输入路由地址',
@@ -538,6 +590,7 @@ const local: App.I18n.Schema = {
componentName: '请输入组件名称',
routeKind: '请选择路由类型',
pageResource: '请选择页面资源',
boundRoute: '请选择绑定路由',
pageResourceParentMismatch: '所选页面资源与当前父级菜单层级不匹配',
routePropsJson: '请输入合法的 JSON 字符串',
routePropsJsonHint: '例如 {"url":"https://example.com"}',
@@ -581,6 +634,8 @@ const local: App.I18n.Schema = {
routePath: '路由地址填写访问路径中的末级段。以“角色管理”为例,完整地址是 /system/role这里通常填写 role。',
pageResource:
'普通页面请从前端页面资源白名单中选择。例如角色管理对应 /system/role与组件键 view.system_role。',
boundRoute:
'对象域导航项请绑定真实对象页面路由。例如产品域可绑定 /product/dashboard、/product/requirement 等页面。',
component:
'组件路径填写前端页面资源白名单中的组件键,不是 src 下的文件路径。以“角色管理”为例,可填写或选择 view.system_role。'
},
@@ -590,7 +645,9 @@ const local: App.I18n.Schema = {
type: {
directory: '目录',
menu: '菜单',
button: '按钮'
button: '按钮',
navigation: '导航项',
actionButton: '操作按钮'
},
iconType: {
iconify: 'iconify图标',