diff --git a/frontend/src/components/pure/ms-card/index.vue b/frontend/src/components/pure/ms-card/index.vue index 31a7161ab1..ba3897ae66 100644 --- a/frontend/src/components/pure/ms-card/index.vue +++ b/frontend/src/components/pure/ms-card/index.vue @@ -19,11 +19,13 @@ class="pr-[5px]" :style="{ overflow: 'auto', - width: props.width ? props.width : `calc(100vw - ${menuWidth}px - 58px)`, + width: props.otherWidth + ? `calc(100vw - ${menuWidth}px - ${props.otherWidth}px)` + : `calc(100vw - ${menuWidth}px - 58px)`, height: props.autoHeight ? 'auto' : `calc(100vh - ${cardOverHeight}px)`, }" > -
+
@@ -70,7 +72,8 @@ specialHeight: number; // 特殊高度,例如某些页面有面包屑 hideBack: boolean; // 隐藏返回按钮 autoHeight: boolean; // 内容区域高度是否自适应 - width?: string; // 卡片宽度 + otherWidth?: number; // 该宽度为卡片外部同级容器的宽度 + minWidth?: number; // 卡片最小宽度 hasBreadcrumb: boolean; // 是否有面包屑,如果有面包屑,高度需要减去面包屑的高度 noContentPadding: boolean; // 内容区域是否有padding handleBack: () => void; // 自定义返回按钮触发事件 diff --git a/frontend/src/enums/routeEnum.ts b/frontend/src/enums/routeEnum.ts index 22a615be67..2a0e941362 100644 --- a/frontend/src/enums/routeEnum.ts +++ b/frontend/src/enums/routeEnum.ts @@ -18,6 +18,12 @@ export enum ProjectManagementRouteEnum { PROJECT_MANAGEMENT = 'projectManagement', PROJECT_MANAGEMENT_INDEX = 'projectManagementIndex', PROJECT_MANAGEMENT_LOG = 'projectManagementLog', + PROJECT_MANAGEMENT_PERMISSION = 'projectManagementPermission', + PROJECT_MANAGEMENT_PERMISSION_BASICINFO = 'projectManagementPermissionBasicInfo', + PROJECT_MANAGEMENT_PERMISSION_MENUMANAGEMENT = 'projectManagementPermissionMenuManagement', + PROJECT_MANAGEMENT_PERMISSION_VERSION = 'projectManagementPermissionVersion', + PROJECT_MANAGEMENT_PERMISSION_USERGROUP = 'projectManagementPermissionUserGroup', + PROJECT_MANAGEMENT_PERMISSION_MEMBER = 'projectManagementPermissionMember', } export enum TestPlanRouteEnum { diff --git a/frontend/src/enums/tableEnum.ts b/frontend/src/enums/tableEnum.ts index 7d5139670f..1ffddc7bbd 100644 --- a/frontend/src/enums/tableEnum.ts +++ b/frontend/src/enums/tableEnum.ts @@ -15,6 +15,7 @@ export enum TableKeyEnum { SYSTEM_ORGANIZATION = 'systemOrganization', SYSTEM_PROJECT = 'systemProject', SYSTEM_LOG = 'systemLog', + PROJECT_MEMBER = 'projectMember', ORGANIZATION_MEMBER = 'organizationMember', ORGANIZATION_PROJECT = 'organizationProject', } diff --git a/frontend/src/locale/en-US/index.ts b/frontend/src/locale/en-US/index.ts index afff78c042..5a870de041 100644 --- a/frontend/src/locale/en-US/index.ts +++ b/frontend/src/locale/en-US/index.ts @@ -27,6 +27,7 @@ export default { 'menu.uiTest': 'UI test', 'menu.performanceTest': 'Performance test', 'menu.projectManagement': 'Project management', + 'menu.projectManagement.projectPermission': 'Project Permission', 'menu.projectManagement.log': 'Log', 'menu.settings': 'Settings', 'menu.settings.system': 'System', diff --git a/frontend/src/locale/zh-CN/index.ts b/frontend/src/locale/zh-CN/index.ts index 1f56db3fe9..98b3d76650 100644 --- a/frontend/src/locale/zh-CN/index.ts +++ b/frontend/src/locale/zh-CN/index.ts @@ -27,6 +27,7 @@ export default { 'menu.performanceTest': '性能测试', 'menu.projectManagement': '项目管理', 'menu.projectManagement.log': '日志', + 'menu.projectManagement.projectPermission': '项目与权限', 'menu.settings': '系统设置', 'menu.settings.system': '系统', 'menu.settings.system.user': '用户', diff --git a/frontend/src/router/routes/modules/projectManagement.ts b/frontend/src/router/routes/modules/projectManagement.ts index f903516f88..74a61219b6 100644 --- a/frontend/src/router/routes/modules/projectManagement.ts +++ b/frontend/src/router/routes/modules/projectManagement.ts @@ -6,7 +6,7 @@ import type { AppRouteRecordRaw } from '../types'; const ProjectManagement: AppRouteRecordRaw = { path: '/project-management', name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT, - redirect: '/project-management/index', + redirect: '/project-management/permission', component: DEFAULT_LAYOUT, meta: { locale: 'menu.projectManagement', @@ -23,6 +23,71 @@ const ProjectManagement: AppRouteRecordRaw = { roles: ['*'], }, }, + // 项目与权限 + { + path: 'permission', + name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_PERMISSION, + component: () => import('@/views/project-management/projectAndPermission/index.vue'), + redirect: '/project-management/permission/basicInfo', + meta: { + locale: 'menu.projectManagement.projectPermission', + roles: ['*'], + isTopMenu: true, + }, + children: [ + // 基本信息 + { + path: 'basicInfo', + name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_PERMISSION_BASICINFO, + component: () => import('@/views/project-management/projectAndPermission/basicInfos/index.vue'), + meta: { + locale: 'project.permission.basicInfo', + roles: ['*'], + }, + }, + // 菜单管理 + { + path: 'menuManagement', + name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_PERMISSION_MENUMANAGEMENT, + component: () => import('@/views/project-management/projectAndPermission/menuManagement/index.vue'), + meta: { + locale: 'project.permission.menuManagement', + roles: ['*'], + }, + }, + // 项目版本 + { + path: 'projectVersion', + name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_PERMISSION_VERSION, + component: () => import('@/views/project-management/projectAndPermission/projectVersion/index.vue'), + meta: { + locale: 'project.permission.projectVersion', + roles: ['*'], + }, + }, + // 成员 + { + path: 'member', + name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_PERMISSION_MEMBER, + component: () => import('@/views/project-management/projectAndPermission/member/index.vue'), + meta: { + locale: 'menu.settings.system.member', + roles: ['*'], + }, + }, + // 用户组 + { + path: 'projectUserGroup', + name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_PERMISSION_USERGROUP, + component: () => import('@/views/project-management/projectAndPermission/userGroup/index.vue'), + meta: { + locale: 'project.permission.userGroup', + roles: ['*'], + }, + }, + ], + }, + // 项目日志 { path: 'log', name: ProjectManagementRouteEnum.PROJECT_MANAGEMENT_LOG, diff --git a/frontend/src/views/project-management/projectAndPermission/basicInfos/index.vue b/frontend/src/views/project-management/projectAndPermission/basicInfos/index.vue new file mode 100644 index 0000000000..57a9bf763c --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/basicInfos/index.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/frontend/src/views/project-management/projectAndPermission/index.vue b/frontend/src/views/project-management/projectAndPermission/index.vue new file mode 100644 index 0000000000..0c88053590 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/index.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/frontend/src/views/project-management/projectAndPermission/locale/en-US.ts b/frontend/src/views/project-management/projectAndPermission/locale/en-US.ts new file mode 100644 index 0000000000..691aa6ac6a --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/locale/en-US.ts @@ -0,0 +1,10 @@ +export default { + 'project.permission.projectAndPermission': 'Project & Permission', + 'project.permission.project': 'Project', + 'project.permission.basicInfo': 'Basic Info', + 'project.permission.menuManagement': 'Menu Management', + 'project.permission.projectVersion': 'Project Version', + 'project.permission.memberPermission': 'Member Permission', + 'project.permission.member': 'Member', + 'project.permission.userGroup': 'User Group', +}; diff --git a/frontend/src/views/project-management/projectAndPermission/locale/zh-CN.ts b/frontend/src/views/project-management/projectAndPermission/locale/zh-CN.ts new file mode 100644 index 0000000000..7d05664606 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/locale/zh-CN.ts @@ -0,0 +1,10 @@ +export default { + 'project.permission.projectAndPermission': '项目与权限', + 'project.permission.project': '项目', + 'project.permission.basicInfo': '基本信息', + 'project.permission.menuManagement': '菜单管理', + 'project.permission.projectVersion': '项目版本', + 'project.permission.memberPermission': '成员权限', + 'project.permission.member': '成员', + 'project.permission.userGroup': '用户组', +}; diff --git a/frontend/src/views/project-management/projectAndPermission/member/components/addMemberModal.vue b/frontend/src/views/project-management/projectAndPermission/member/components/addMemberModal.vue new file mode 100644 index 0000000000..c2ff38925b --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/member/components/addMemberModal.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/frontend/src/views/project-management/projectAndPermission/member/index.vue b/frontend/src/views/project-management/projectAndPermission/member/index.vue new file mode 100644 index 0000000000..f755f3b75a --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/member/index.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/frontend/src/views/project-management/projectAndPermission/member/locale/en-US.ts b/frontend/src/views/project-management/projectAndPermission/member/locale/en-US.ts new file mode 100644 index 0000000000..2605bf5073 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/member/locale/en-US.ts @@ -0,0 +1,39 @@ +export default { + 'project.member.addMember': 'Add Member', + 'project.member.updateMember': 'Update Member', + 'project.member.searchMember': 'Search by name or email address', + 'project.member.remove': 'Remove', + 'project.member.edit': 'Edit', + 'project.member.add': 'Add', + 'project.member.batchActionAddProject': 'Add to project', + 'project.member.batchActionAddUserGroup': 'Add to usergroup', + 'project.member.tableEnable': 'Enabled', + 'project.member.tableDisable': 'Disabled', + 'project.member.tableColumnEmail': 'Email', + 'project.member.tableColumnName': 'Name', + 'project.member.tableColumnPhone': 'Phone', + 'project.member.tableColumnPro': 'Project', + 'project.member.tableColumnUserGroup': 'UserGroup', + 'project.member.tableColumnStatus': 'Status', + 'project.member.tableColumnActions': 'Actions', + 'project.member.member': 'Member', + 'project.member.selectMemberScope': 'Select the member you want to add. Multiple selection is supported', + 'project.member.selectProjectScope': 'Select the project you want to add. Multiple selection is supported', + 'project.member.selectMemberEmptyTip': 'The member can not be empty', + 'project.member.selectProjectEmptyTip': 'The project can not be empty', + 'project.member.selectUserEmptyTip': 'The user group can not be empty', + 'project.member.Confirm': 'Confirm', + 'project.member.Cancel': 'Cancel', + 'project.member.deleteMemberTip': 'Are you sure to remove the user `{name}` ?', + 'system.user.deleteUserTip': 'Are you sure to delete the user `{name}` ?', + 'project.member.deleteMemberConfirm': 'Delete', + 'project.member.deleteMemberCancel': 'Cancel', + 'project.member.deleteMemberSuccess': 'Delete successful', + 'project.member.batchModalSuccess': 'Successfully added', + 'project.member.batchUpdateSuccess': 'Successfully updated', + 'project.member.project': 'Project', + 'project.member.selectUserScope': 'Please select a user group for the above members', + 'project.member.statusEnable': 'Normal', + 'project.member.statusDisable': 'Disabled', + 'project.member.subTitle': 'When removed, you lose your organization privileges', +}; diff --git a/frontend/src/views/project-management/projectAndPermission/member/locale/zh-CN.ts b/frontend/src/views/project-management/projectAndPermission/member/locale/zh-CN.ts new file mode 100644 index 0000000000..b7f5824e43 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/member/locale/zh-CN.ts @@ -0,0 +1,38 @@ +export default { + 'project.member.addMember': '添加成员', + 'project.member.updateMember': '更新成员', + 'project.member.searchMember': '通过名称或邮箱搜索搜索', + 'project.member.remove': '移除', + 'project.member.edit': '编辑', + 'project.member.add': '添加', + 'project.member.batchActionAddProject': '添加至项目', + 'project.member.batchActionAddUserGroup': '添加至用户组', + 'project.member.tableEnable': '正常', + 'project.member.tableDisable': '禁用', + 'project.member.tableColumnEmail': '邮箱', + 'project.member.tableColumnName': '姓名', + 'project.member.tableColumnPhone': '手机', + 'project.member.tableColumnPro': '项目', + 'project.member.tableColumnUserGroup': '用户组', + 'project.member.tableColumnStatus': '状态', + 'project.member.tableColumnActions': '操作', + 'project.member.member': '成员', + 'project.member.selectMemberScope': '请选择需要添加的成员支持多选', + 'project.member.selectProjectScope': '请选择需要添加的项目支持多选', + 'project.member.selectMemberEmptyTip': '成员不能为空', + 'project.member.selectProjectEmptyTip': '项目不能为空', + 'project.member.selectUserEmptyTip': '用户组不能为空', + 'project.member.Confirm': '确定', + 'project.member.Cancel': '取消', + 'project.member.deleteMemberTip': '确认移除 {name} 这个成员吗?', + 'project.member.deleteMemberConfirm': '确认删除', + 'project.member.deleteMemberCancel': '取消', + 'project.member.deleteMemberSuccess': '删除成功', + 'project.member.batchModalSuccess': '添加成功', + 'project.member.batchUpdateSuccess': '更新成功', + 'project.member.project': '项目', + 'project.member.selectUserScope': '请为以上成员选择用户组', + 'project.member.statusEnable': '正常', + 'project.member.statusDisable': '禁用', + 'project.member.subTitle': '移除后,将失去组织权限', +}; diff --git a/frontend/src/views/project-management/projectAndPermission/menuManagement/index.vue b/frontend/src/views/project-management/projectAndPermission/menuManagement/index.vue new file mode 100644 index 0000000000..2142131263 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/menuManagement/index.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/frontend/src/views/project-management/projectAndPermission/projectVersion/index.vue b/frontend/src/views/project-management/projectAndPermission/projectVersion/index.vue new file mode 100644 index 0000000000..29563f9126 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/projectVersion/index.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/frontend/src/views/project-management/projectAndPermission/userGroup/index.vue b/frontend/src/views/project-management/projectAndPermission/userGroup/index.vue new file mode 100644 index 0000000000..e528ee6238 --- /dev/null +++ b/frontend/src/views/project-management/projectAndPermission/userGroup/index.vue @@ -0,0 +1,9 @@ + + + + +