From 6c546b5290ddbe42f7ecc34797918e55602b2617 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 3 Mar 2026 23:31:42 +0800 Subject: [PATCH] chore: project finished --- .../lib-server/src/basic/base-controller.ts | 4 +- .../src/user/access/entity/access.ts | 3 ++ packages/ui/certd-client/src/api/service.ts | 2 +- .../src/locales/langs/en-US/certd.ts | 1 + .../src/locales/langs/zh-CN/certd.ts | 1 + packages/ui/certd-client/src/router/guard.ts | 8 ++-- .../src/views/certd/project/detail/crud.tsx | 8 +++- .../src/views/certd/project/detail/index.vue | 4 ++ .../src/views/certd/project/join.vue | 38 +++++++++++++------ .../sys/enterprise/project/detail/crud.tsx | 6 ++- .../views/sys/enterprise/project/intro.vue | 4 +- .../src/views/sys/settings/tabs/mode.vue | 6 ++- .../sys/access/access-controller.ts | 15 +++++++- .../controller/sys/addon/addon-controller.ts | 5 +++ .../enterprise/project-member-controller.ts | 4 +- .../enterprise/project-member-controller.ts | 5 ++- .../user/pipeline/access-controller.ts | 2 +- 17 files changed, 87 insertions(+), 29 deletions(-) diff --git a/packages/libs/lib-server/src/basic/base-controller.ts b/packages/libs/lib-server/src/basic/base-controller.ts index 39cf55edf..23816ec09 100644 --- a/packages/libs/lib-server/src/basic/base-controller.ts +++ b/packages/libs/lib-server/src/basic/base-controller.ts @@ -69,10 +69,8 @@ export abstract class BaseController { if (!projectIdStr){ projectIdStr = this.ctx.request.query["projectId"] as string; } - if (!projectIdStr){ - return null - } if (!projectIdStr) { + //这里必须抛异常,否则可能会有权限问题 throw new Error("projectId 不能为空") } const userId = this.getUserId() diff --git a/packages/libs/lib-server/src/user/access/entity/access.ts b/packages/libs/lib-server/src/user/access/entity/access.ts index fd635719e..87968bc5f 100644 --- a/packages/libs/lib-server/src/user/access/entity/access.ts +++ b/packages/libs/lib-server/src/user/access/entity/access.ts @@ -24,6 +24,9 @@ export class AccessEntity { @Column({ name: 'project_id', comment: '项目id' }) projectId: number; + @Column({ comment: '权限等级', length: 100 }) + level: string; // user common system + @Column({ name: 'create_time', comment: '创建时间', diff --git a/packages/ui/certd-client/src/api/service.ts b/packages/ui/certd-client/src/api/service.ts index e42647448..a38d92c49 100644 --- a/packages/ui/certd-client/src/api/service.ts +++ b/packages/ui/certd-client/src/api/service.ts @@ -155,7 +155,7 @@ function createRequestFunction(service: any) { } Object.assign(configDefault, config); - if (projectStore.isEnterprise && !config.url.startsWith("/sys") && !config.url.startsWith("http")) { + if (!configDefault.params.projectId && projectStore.isEnterprise && !config.url.startsWith("/sys") && !config.url.startsWith("http")) { configDefault.params.projectId = projectStore.currentProject?.id; } return service(configDefault); diff --git a/packages/ui/certd-client/src/locales/langs/en-US/certd.ts b/packages/ui/certd-client/src/locales/langs/en-US/certd.ts index ac8499944..cee33d466 100644 --- a/packages/ui/certd-client/src/locales/langs/en-US/certd.ts +++ b/packages/ui/certd-client/src/locales/langs/en-US/certd.ts @@ -838,6 +838,7 @@ export default { leaveFailed: "Leave project failed, please try again later", applyJoinConfirm: "Are you sure you want to apply to join this project?", leaveConfirm: "Are you sure you want to leave this project?", + viewDetail: "View Detail", }, addonSelector: { select: "Select", diff --git a/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts b/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts index 4e25f7878..e60b96e65 100644 --- a/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts +++ b/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts @@ -854,5 +854,6 @@ export default { leaveFailed: "退出项目失败,请稍后重试", applyJoinConfirm: "确认加入项目?", leaveConfirm: "确认退出项目?", + viewDetail: "查看详情", }, }; diff --git a/packages/ui/certd-client/src/router/guard.ts b/packages/ui/certd-client/src/router/guard.ts index 12bc772bc..87c84506f 100644 --- a/packages/ui/certd-client/src/router/guard.ts +++ b/packages/ui/certd-client/src/router/guard.ts @@ -10,7 +10,9 @@ import { usePermissionStore } from "/@/plugin/permission/store.permission"; import util from "/@/plugin/permission/util.permission"; import { useUserStore } from "/@/store/user"; import { useProjectStore } from "../store/project"; -export const PROJECT_JOIN_PATH = "/certd/project/join"; +export const PROJECT_PATH_PREFIX = "/certd/project"; +export const SYS_PATH_PREFIX = "/sys"; + function buildAccessedMenus(menus: any) { if (menus == null) { return; @@ -131,10 +133,10 @@ function setupAccessGuard(router: Router) { if (projectStore.isEnterprise) { //加载我的项目 await projectStore.init(); - if (!projectStore.currentProject && to.path !== PROJECT_JOIN_PATH) { + if (!projectStore.currentProject && !to.path.startsWith(PROJECT_PATH_PREFIX) && !to.path.startsWith(SYS_PATH_PREFIX)) { //没有项目 return { - path: PROJECT_JOIN_PATH, + path: `${PROJECT_PATH_PREFIX}/join`, replace: true, }; } diff --git a/packages/ui/certd-client/src/views/certd/project/detail/crud.tsx b/packages/ui/certd-client/src/views/certd/project/detail/crud.tsx index 67a7a300c..c44ff5024 100644 --- a/packages/ui/certd-client/src/views/certd/project/detail/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/project/detail/crud.tsx @@ -109,7 +109,10 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat search: { show: true, }, - form: {}, + form: { + show: true, + rules: [{ required: true, message: "请选择用户" }], + }, editForm: { show: false, }, @@ -126,6 +129,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat }, form: { show: true, + rules: [{ required: true, message: "请选择权限" }], }, column: { width: 200, @@ -140,6 +144,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat }, form: { show: true, + rules: [{ required: true, message: "请选择状态" }], }, column: { width: 200, @@ -156,6 +161,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat id: row.id, permission: row.permission, onSubmit: async (form: any) => { + form.userId = row.userId; await api.ApproveJoin(form); crudExpose.doRefresh(); }, diff --git a/packages/ui/certd-client/src/views/certd/project/detail/index.vue b/packages/ui/certd-client/src/views/certd/project/detail/index.vue index de9a125de..6358c644b 100644 --- a/packages/ui/certd-client/src/views/certd/project/detail/index.vue +++ b/packages/ui/certd-client/src/views/certd/project/detail/index.vue @@ -97,6 +97,10 @@ const handleBatchDelete = () => { // 页面打开后获取列表数据 onMounted(async () => { + if (!projectId) { + message.error("您还未选择项目"); + return; + } await loadProjectDetail(); crudExpose.doRefresh(); }); diff --git a/packages/ui/certd-client/src/views/certd/project/join.vue b/packages/ui/certd-client/src/views/certd/project/join.vue index 9ed5a675a..2c19cd4ca 100644 --- a/packages/ui/certd-client/src/views/certd/project/join.vue +++ b/packages/ui/certd-client/src/views/certd/project/join.vue @@ -5,6 +5,10 @@ {{ t("certd.sysResources.projectJoin") }} {{ t("certd.project.noProjectJoined") }} + +
+ {{ t("certd.project.projectManager") }} +

{{ t("certd.project.projectList") }}

@@ -13,20 +17,20 @@
-

{{ project.name }}

-

{{ formatDate(project.createTime) }}

+
{{ project.name }}
+
管理员:
+

创建时间:{{ formatDate(project.createTime) }}

-
-
管理员:
-
-
- -
-
-
+
+
状态:
+
权限: