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 @@
+
+ 基本信息 waiting for development
+
+
+
+
+
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 @@
+
+
+
{{ t('project.member.addMember') }}
+
+
+ {{
+ t(item.name)
+ }}
+ {{ t('project.member.tableColumnUserGroup') }}
+
+
+
+
+
+
+
+
+ {{ org.name }}
+
+
+ +{{ record.userRoleIdNameMap.length - 3 }}
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+ {{ t('organization.member.statusEnable') }}
+
+
+
+ {{ t('organization.member.statusDisable') }}
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+ 菜单管理 waiting for development
+
+
+
+
+
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 @@
+
+ 项目版本 waiting for development
+
+
+
+
+
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 @@
+
+ 用户组 waiting for development
+
+
+
+
+