From d3309778f6a212f3bf080d0b9216df0d6df75eda Mon Sep 17 00:00:00 2001 From: Alan Yeh Date: Sun, 31 Mar 2024 22:50:08 +0800 Subject: [PATCH] =?UTF-8?q?[ADD]=20=E6=B7=BB=E5=8A=A0=20central-dashboard-?= =?UTF-8?q?view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 完成基本框架的搭建 2. 完成基本框架的调试 Signed-off-by: Alan Yeh --- .../Dockerfile | 2 +- .../Dockerfile.debug | 7 +- .../src/main/resources/application.yml | 14 +++- .../controller/index/IndexController.java | 15 ++-- central-identity/Dockerfile | 13 ---- central-logging/Dockerfile | 13 ---- central-multicast/Dockerfile | 13 ---- central-provider/Dockerfile | 13 ---- central-storage/Dockerfile | 13 ---- .../central-dashboard-view/pom.xml | 28 +++---- .../src/main/node/index.html | 2 +- .../brokers/identity/IdentityBroker.ts | 58 ++++++++++++++ .../node/library/brokers/identity/index.ts | 1 + .../src/main/node/library/brokers/index.ts | 2 + .../library/brokers/portal/PortalBroker.ts | 28 +++++++ .../main/node/library/brokers/portal/index.ts | 1 + .../main/node/library/types/authority/Role.ts | 19 +++++ .../node/library/types/authority/index.ts | 3 + .../main/node/library/types/gateway/index.ts | 1 + .../main/node/library/types/identity/index.ts | 1 + .../src/main/node/library/types/index.ts | 9 +++ .../src/main/node/library/types/log/index.ts | 1 + .../node/library/types/multicast/index.ts | 1 + .../library/types/organization/Account.ts | 20 +++++ .../library/types/organization/AccountUnit.ts | 23 ++++++ .../node/library/types/organization/Area.ts | 21 ++++++ .../library/types/organization/Department.ts | 21 ++++++ .../node/library/types/organization/Rank.ts | 18 +++++ .../node/library/types/organization/Unit.ts | 23 ++++++ .../node/library/types/organization/index.ts | 8 ++ .../src/main/node/library/types/saas/index.ts | 1 + .../main/node/library/types/storage/index.ts | 1 + .../main/node/library/types/system/index.ts | 1 + .../src/main/node/package.json | 7 +- .../src/main/node/src/App.vue | 15 ++-- .../src/main/node/src/assets/images/logo.svg | 6 ++ .../assets/{main.css => styles/global.scss} | 0 .../src/main/node/src/assets/styles/main.css | 0 .../src/main/node/src/http.ts | 16 ++++ .../src/main/node/src/layouts/Index.vue | 29 +++++++ .../src/layouts/components/header/Index.vue | 53 +++++++++++++ .../src/layouts/components/menu/Index.vue | 0 .../src/layouts/components/menu/MenuItem.vue | 0 .../src/layouts/components/sidebar/Index.vue | 75 +++++++++++++++++++ .../components/sidebar/SidebarItem.vue | 0 .../src/layouts/components/tags/Index.vue | 0 .../main/node/src/layouts/default/Index.vue | 68 +++++++++++++++++ .../src/main/node/src/main.ts | 21 +++--- .../src/main/node/src/router/index.ts | 9 --- .../src/main/node/src/routers/index.ts | 27 +++++++ .../main/node/src/routers/modules/identity.ts | 23 ++++++ .../node/src/routers/modules/organization.ts | 23 ++++++ .../src/main/node/src/stores/index.ts | 3 + .../src/main/node/src/stores/session.ts | 30 ++++++++ .../src/main/node/src/stores/tab.ts | 43 +++++++++++ .../src/main/node/src/stores/theme.ts | 33 ++++++++ .../node/src/views/identity/StrategyView.vue | 5 ++ .../node/src/views/organization/AreaView.vue | 5 ++ .../src/main/node/tsconfig.app.json | 19 ++++- .../src/main/node/vite.config.ts | 21 +++++- .../central-identity-view/pom.xml | 28 +++---- .../src/main/node/src/api/IdentityService.ts | 10 +-- .../src/main/node/vite.config.ts | 2 +- docker-bake.hcl | 8 +- 64 files changed, 819 insertions(+), 155 deletions(-) rename {central-dashboard => central-bootstrap}/Dockerfile (96%) rename central-gateway/Dockerfile => central-bootstrap/Dockerfile.debug (67%) delete mode 100644 central-identity/Dockerfile delete mode 100644 central-logging/Dockerfile delete mode 100644 central-multicast/Dockerfile delete mode 100644 central-provider/Dockerfile delete mode 100644 central-storage/Dockerfile create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/IdentityBroker.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/brokers/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/PortalBroker.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/authority/Role.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/authority/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/gateway/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/identity/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/log/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/multicast/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Account.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/AccountUnit.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Area.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Department.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Rank.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Unit.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/organization/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/saas/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/storage/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/library/types/system/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/assets/images/logo.svg rename central-studio-views/central-dashboard-view/src/main/node/src/assets/{main.css => styles/global.scss} (100%) create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/assets/styles/main.css create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/http.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/Index.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/header/Index.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/menu/Index.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/menu/MenuItem.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/Index.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/SidebarItem.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/tags/Index.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/layouts/default/Index.vue delete mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/router/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/routers/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/identity.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/organization.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/stores/index.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/stores/session.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/stores/tab.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/stores/theme.ts create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/views/identity/StrategyView.vue create mode 100644 central-studio-views/central-dashboard-view/src/main/node/src/views/organization/AreaView.vue diff --git a/central-dashboard/Dockerfile b/central-bootstrap/Dockerfile similarity index 96% rename from central-dashboard/Dockerfile rename to central-bootstrap/Dockerfile index 6b5867c9..5f89f612 100644 --- a/central-dashboard/Dockerfile +++ b/central-bootstrap/Dockerfile @@ -10,4 +10,4 @@ ARG STUDIO_VERSION COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar # 暴露端口 -EXPOSE 3100 \ No newline at end of file +EXPOSE 8080 \ No newline at end of file diff --git a/central-gateway/Dockerfile b/central-bootstrap/Dockerfile.debug similarity index 67% rename from central-gateway/Dockerfile rename to central-bootstrap/Dockerfile.debug index edec5f15..a4441147 100644 --- a/central-gateway/Dockerfile +++ b/central-bootstrap/Dockerfile.debug @@ -1,13 +1,12 @@ ######################################################## # 使用 Spring Runner 运行本程序 ######################################################## -FROM image +FROM centralx/spring-runner:17 -ARG STUDIO_COMPONENT ARG STUDIO_VERSION # 复制应用到工作目录 -COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar +COPY central-bootstrap-${STUDIO_VERSION}.jar application.jar # 暴露端口 -EXPOSE 3000 \ No newline at end of file +EXPOSE 8080 \ No newline at end of file diff --git a/central-bootstrap/src/main/resources/application.yml b/central-bootstrap/src/main/resources/application.yml index 1923a659..b6f75ec8 100644 --- a/central-bootstrap/src/main/resources/application.yml +++ b/central-bootstrap/src/main/resources/application.yml @@ -14,12 +14,18 @@ spring: name: central-studio secret: AkJSi2kmH7vSO5lJcvY version: @{ project.version }@ +# datasource: +# name: master +# driver-class-name: com.mysql.cj.jdbc.Driver +# url: jdbc:mysql://mysql:3306/centralx?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true +# username: root +# password: root datasource: name: master - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://mysql:3306/centralx?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true - username: root - password: root + driver-class-name: org.h2.Driver + url: jdbc:h2:./centralx-h2 + username: centralx + password: central.x servlet: multipart: # 限制请求的大小和上传文件的大小 diff --git a/central-dashboard/src/main/java/central/studio/dashboard/controller/index/IndexController.java b/central-dashboard/src/main/java/central/studio/dashboard/controller/index/IndexController.java index 5d29d23b..0cfc68d9 100644 --- a/central-dashboard/src/main/java/central/studio/dashboard/controller/index/IndexController.java +++ b/central-dashboard/src/main/java/central/studio/dashboard/controller/index/IndexController.java @@ -24,10 +24,11 @@ package central.studio.dashboard.controller.index; -import central.studio.dashboard.logic.organization.AccountLogic; import central.data.organization.Account; +import central.lang.Stringx; +import central.studio.dashboard.logic.organization.AccountLogic; +import jakarta.annotation.Nullable; import lombok.Setter; -import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -46,7 +47,6 @@ * @since 2023/10/07 */ @Controller -@RequiresAuthentication @RequestMapping("/dashboard") public class IndexController { @@ -57,8 +57,7 @@ public class IndexController { * 返回首页静态页面 */ @GetMapping("/") - public View index(@RequestAttribute String accountId) { - accountLogic.findById(accountId); + public View index() { return new InternalResourceView("index.html"); } @@ -67,8 +66,10 @@ public View index(@RequestAttribute String accountId) { */ @ResponseBody @GetMapping("/api/account") - public Account getAccount(@RequestAttribute String accountId) { + public @Nullable Account getAccount(@RequestAttribute(required = false) String accountId) { + if (Stringx.isNullOrBlank(accountId)) { + return null; + } return accountLogic.findById(accountId); } - } diff --git a/central-identity/Dockerfile b/central-identity/Dockerfile deleted file mode 100644 index 2429de3e..00000000 --- a/central-identity/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -######################################################## -# 使用 Spring Runner 运行本程序 -######################################################## -FROM image - -ARG STUDIO_COMPONENT -ARG STUDIO_VERSION - -# 复制应用到工作目录 -COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar - -# 暴露端口 -EXPOSE 3200 \ No newline at end of file diff --git a/central-logging/Dockerfile b/central-logging/Dockerfile deleted file mode 100644 index 567342c2..00000000 --- a/central-logging/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -######################################################## -# 使用 Spring Runner 运行本程序 -######################################################## -FROM image - -ARG STUDIO_COMPONENT -ARG STUDIO_VERSION - -# 复制应用到工作目录 -COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar - -# 暴露端口 -EXPOSE 3400 \ No newline at end of file diff --git a/central-multicast/Dockerfile b/central-multicast/Dockerfile deleted file mode 100644 index 3f04e113..00000000 --- a/central-multicast/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -######################################################## -# 使用 Spring Runner 运行本程序 -######################################################## -FROM image - -ARG STUDIO_COMPONENT -ARG STUDIO_VERSION - -# 复制应用到工作目录 -COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar - -# 暴露端口 -EXPOSE 3600 \ No newline at end of file diff --git a/central-provider/Dockerfile b/central-provider/Dockerfile deleted file mode 100644 index 1077c7f9..00000000 --- a/central-provider/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -######################################################## -# 使用 Spring Runner 运行本程序 -######################################################## -FROM image - -ARG STUDIO_COMPONENT -ARG STUDIO_VERSION - -# 复制应用到工作目录 -COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar - -# 暴露端口 -EXPOSE 3300 \ No newline at end of file diff --git a/central-storage/Dockerfile b/central-storage/Dockerfile deleted file mode 100644 index 2c66cbdc..00000000 --- a/central-storage/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -######################################################## -# 使用 Spring Runner 运行本程序 -######################################################## -FROM image - -ARG STUDIO_COMPONENT -ARG STUDIO_VERSION - -# 复制应用到工作目录 -COPY ${STUDIO_COMPONENT}-${STUDIO_VERSION}.jar application.jar - -# 暴露端口 -EXPOSE 3500 \ No newline at end of file diff --git a/central-studio-views/central-dashboard-view/pom.xml b/central-studio-views/central-dashboard-view/pom.xml index 380163d1..8a61d8c1 100644 --- a/central-studio-views/central-dashboard-view/pom.xml +++ b/central-studio-views/central-dashboard-view/pom.xml @@ -32,20 +32,20 @@ org.codehaus.mojo exec-maven-plugin - - npm-install - generate-sources - - ${project.basedir}/src/main/node - npm - - install - - - - exec - - + + + + + + + + + + + + + + npm-run-build generate-sources diff --git a/central-studio-views/central-dashboard-view/src/main/node/index.html b/central-studio-views/central-dashboard-view/src/main/node/index.html index a8885448..a688a4c8 100644 --- a/central-studio-views/central-dashboard-view/src/main/node/index.html +++ b/central-studio-views/central-dashboard-view/src/main/node/index.html @@ -4,7 +4,7 @@ - Vite App + CentralX
diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/IdentityBroker.ts b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/IdentityBroker.ts new file mode 100644 index 00000000..4e153df2 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/IdentityBroker.ts @@ -0,0 +1,58 @@ +import { sha256 } from 'js-sha256' +import type { Account } from '@centralx/types' +import type { AxiosInstance } from 'axios' + +/** + * 认证中心接口 + */ +export class IdentityBroker { + private http: AxiosInstance + + public constructor(private client: AxiosInstance) { + this.http = client + } + + /** + * 登录 + * @param account 帐户名 + * @param password 密码 + */ + public async login(account: string, password: string): Promise { + // 对密码进行 sha256 摘要后再提交 + // 防止原始密码被截取 + const hash = sha256.create() + hash.update(password) + + const response = await this.http.post('/identity/api/login', { + account: account, + password: hash.hex(), + secret: 'lLS4p6skBbBVZX30zR5' + }) + + if (response.status !== 200) { + throw new Error(response.data.message) + } + } + + /** + * 退出登录 + */ + public async logout(): Promise { + return this.http.get('/identity/api/logout') + } + + /** + * 获取当前已登录用户 + */ + public async getAccount(): Promise { + try { + const response = await this.http.get('/identity/api/account') + if (response.status !== 200) { + return null + } + return response.data + } catch (error) { + return null + } + } +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/index.ts new file mode 100644 index 00000000..fbf6c872 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/identity/index.ts @@ -0,0 +1 @@ +export * from "./IdentityBroker"; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/brokers/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/index.ts new file mode 100644 index 00000000..4b82651b --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/index.ts @@ -0,0 +1,2 @@ +export * from "./identity"; +export * from "./portal"; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/PortalBroker.ts b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/PortalBroker.ts new file mode 100644 index 00000000..083984f0 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/PortalBroker.ts @@ -0,0 +1,28 @@ +import type { Account } from '@centralx/types' +import type { AxiosInstance } from 'axios' + +/** + * 门户(首页)接口 + */ +export class PortalBroker { + private http: AxiosInstance + + public constructor(private client: AxiosInstance) { + this.http = client + } + + /** + * 获取当前用户信息 + */ + public async getAccount(): Promise { + const response = await this.http.get('/dashboard/api/account') + return response.data + } + + /** + * 退出登录 + */ + public async logout(): Promise { + return this.http.get('/dashboard/__logout') + } +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/index.ts new file mode 100644 index 00000000..ddef7986 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/brokers/portal/index.ts @@ -0,0 +1 @@ +export * from "./PortalBroker"; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/authority/Role.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/authority/Role.ts new file mode 100644 index 00000000..8e371426 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/authority/Role.ts @@ -0,0 +1,19 @@ +import type { Account, Unit } from "../organization"; + +export interface Role { + id?: string; + applicationId?: string; + code?: string; + name?: string; + unitId?: string; + unit?: Unit; + enabled?: boolean; + remark?: string; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/authority/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/authority/index.ts new file mode 100644 index 00000000..c414a70b --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/authority/index.ts @@ -0,0 +1,3 @@ +import type { Role } from "./Role"; + +export type { Role }; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/gateway/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/gateway/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/gateway/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/identity/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/identity/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/identity/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/index.ts new file mode 100644 index 00000000..084cd253 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/index.ts @@ -0,0 +1,9 @@ +export * from "./authority"; +export * from "./gateway"; +export * from "./identity"; +export * from "./log"; +export * from "./multicast"; +export * from "./organization"; +export * from "./saas"; +export * from "./storage"; +export * from "./system"; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/log/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/log/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/log/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/multicast/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/multicast/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/multicast/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Account.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Account.ts new file mode 100644 index 00000000..a454bb24 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Account.ts @@ -0,0 +1,20 @@ +export interface Account { + id?: string; + username?: string; + email?: string; + mobile?: string; + name?: string; + avatar?: string; + admin?: boolean; + supervisor?: boolean; + + enabled?: boolean; + deleted?: boolean; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/AccountUnit.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/AccountUnit.ts new file mode 100644 index 00000000..f23cac63 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/AccountUnit.ts @@ -0,0 +1,23 @@ +import type { Account } from "./Account"; +import type { Department } from "./Department"; +import type { Unit } from "./Unit"; +import type { Rank } from "./Rank"; + +export interface AccountUnit { + id?: string; + accountId?: string; + account?: Account; + unitId?: string; + unit?: Unit; + departments?: Department[]; + rankId?: string; + rank?: Rank; + primary?: boolean; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Area.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Area.ts new file mode 100644 index 00000000..9563bfc2 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Area.ts @@ -0,0 +1,21 @@ +import type { Unit } from "./Unit"; +import type { Account } from "./Account"; + +export interface Area { + id?: string; + parentId?: string; + parent?: Area; + code?: string; + name?: string; + type?: string; + order?: number; + children?: Area[]; + units?: Unit[]; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Department.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Department.ts new file mode 100644 index 00000000..f546b158 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Department.ts @@ -0,0 +1,21 @@ +import type { Unit } from "./Unit"; +import type { Account } from "./Account"; + +export interface Department { + id?: string; + parentId?: string; + parent?: Department; + unitId?: string; + unit?: Unit; + code?: string; + name?: string; + type?: string; + children?: Department[]; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Rank.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Rank.ts new file mode 100644 index 00000000..6debc147 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Rank.ts @@ -0,0 +1,18 @@ +import type { Unit } from "./Unit"; +import type { Account } from "./Account"; + +export interface Rank { + id?: string; + code?: string; + name?: string; + unitId?: string; + unit?: Unit; + order?: number; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Unit.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Unit.ts new file mode 100644 index 00000000..92e2ead9 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/Unit.ts @@ -0,0 +1,23 @@ +import type { Area } from "./Area"; +import type { Department } from "./Department"; +import type { Account } from "./Account"; + +export interface Unit { + id?: string; + parentId?: string; + parent?: Unit; + code?: string; + name?: string; + areaId?: string; + area?: Area; + order?: number; + children?: Unit[]; + departments?: Department[]; + + creatorId?: string; + createDate?: number; + creator?: Account; + modifierId?: string; + modifiedDate?: number; + modifier?: Account; +} diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/index.ts new file mode 100644 index 00000000..023dba10 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/organization/index.ts @@ -0,0 +1,8 @@ +import type { Account } from "./Account"; +import type { AccountUnit } from "./AccountUnit"; +import type { Area } from "./Area"; +import type { Department } from "./Department"; +import type { Rank } from "./Rank"; +import type { Unit } from "./Unit"; + +export type { Account, AccountUnit, Area, Department, Rank, Unit }; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/saas/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/saas/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/saas/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/storage/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/storage/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/storage/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/library/types/system/index.ts b/central-studio-views/central-dashboard-view/src/main/node/library/types/system/index.ts new file mode 100644 index 00000000..e4ea7770 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/library/types/system/index.ts @@ -0,0 +1 @@ +export type {}; diff --git a/central-studio-views/central-dashboard-view/src/main/node/package.json b/central-studio-views/central-dashboard-view/src/main/node/package.json index d862c43a..0dea30a0 100644 --- a/central-studio-views/central-dashboard-view/src/main/node/package.json +++ b/central-studio-views/central-dashboard-view/src/main/node/package.json @@ -10,13 +10,15 @@ "build-only": "vite build", "type-check": "vue-tsc --build --force", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", - "format": "prettier --write src/" + "format": "prettier --write src/ library/" }, "dependencies": { "axios": "^1.6.8", "element-plus": "^2.6.1", + "js-sha256": "^0.11.0", "pinia": "^2.1.7", "vue": "^3.4.21", + "vue-i18n": "^9.10.2", "vue-router": "^4.3.0" }, "devDependencies": { @@ -31,6 +33,9 @@ "eslint-plugin-vue": "^9.17.0", "npm-run-all2": "^6.1.2", "prettier": "^3.0.3", + "saas": "^1.0.0", + "sass-embedded": "^1.79.3", + "sass-loader": "^16.0.2", "typescript": "~5.4.0", "vite": "^5.1.6", "vite-plugin-vue-devtools": "^7.0.18", diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/App.vue b/central-studio-views/central-dashboard-view/src/main/node/src/App.vue index ef1d16e1..ae06c89a 100644 --- a/central-studio-views/central-dashboard-view/src/main/node/src/App.vue +++ b/central-studio-views/central-dashboard-view/src/main/node/src/App.vue @@ -1,11 +1,14 @@ - - + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/assets/images/logo.svg b/central-studio-views/central-dashboard-view/src/main/node/src/assets/images/logo.svg new file mode 100644 index 00000000..92691c17 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/assets/images/logo.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/assets/main.css b/central-studio-views/central-dashboard-view/src/main/node/src/assets/styles/global.scss similarity index 100% rename from central-studio-views/central-dashboard-view/src/main/node/src/assets/main.css rename to central-studio-views/central-dashboard-view/src/main/node/src/assets/styles/global.scss diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/assets/styles/main.css b/central-studio-views/central-dashboard-view/src/main/node/src/assets/styles/main.css new file mode 100644 index 00000000..e69de29b diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/http.ts b/central-studio-views/central-dashboard-view/src/main/node/src/http.ts new file mode 100644 index 00000000..a51c7c86 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/http.ts @@ -0,0 +1,16 @@ +import axios from "axios"; + +export const http = axios.create({ + timeout: 10000, + headers: { + Accept: "application/json", + }, + validateStatus: function (status: number) { + if (status === 401) { + // 未登录 + + // window.location.reload(); + } + return true; + }, +}); diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/Index.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/Index.vue new file mode 100644 index 00000000..73da6b37 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/Index.vue @@ -0,0 +1,29 @@ + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/header/Index.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/header/Index.vue new file mode 100644 index 00000000..426289c9 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/header/Index.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/menu/Index.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/menu/Index.vue new file mode 100644 index 00000000..e69de29b diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/menu/MenuItem.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/menu/MenuItem.vue new file mode 100644 index 00000000..e69de29b diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/Index.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/Index.vue new file mode 100644 index 00000000..237d64a4 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/Index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/SidebarItem.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/sidebar/SidebarItem.vue new file mode 100644 index 00000000..e69de29b diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/tags/Index.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/components/tags/Index.vue new file mode 100644 index 00000000..e69de29b diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/layouts/default/Index.vue b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/default/Index.vue new file mode 100644 index 00000000..422f554c --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/layouts/default/Index.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/main.ts b/central-studio-views/central-dashboard-view/src/main/node/src/main.ts index 5dcad83c..9096dd53 100644 --- a/central-studio-views/central-dashboard-view/src/main/node/src/main.ts +++ b/central-studio-views/central-dashboard-view/src/main/node/src/main.ts @@ -1,14 +1,17 @@ -import './assets/main.css' +import "./assets/styles/main.css"; +import "element-plus/dist/index.css"; -import { createApp } from 'vue' -import { createPinia } from 'pinia' +import { createApp } from "vue"; +import { createPinia } from "pinia"; +import ElementPlus from "element-plus"; -import App from './App.vue' -import router from './router' +import App from "./App.vue"; +import router from "./routers"; -const app = createApp(App) +const app = createApp(App); -app.use(createPinia()) -app.use(router) +app.use(createPinia()); +app.use(router); +app.use(ElementPlus); -app.mount('#app') +app.mount("#app"); diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/router/index.ts b/central-studio-views/central-dashboard-view/src/main/node/src/router/index.ts deleted file mode 100644 index 85633791..00000000 --- a/central-studio-views/central-dashboard-view/src/main/node/src/router/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createRouter, createWebHashHistory } from 'vue-router' - -const router = createRouter({ - history: createWebHashHistory(import.meta.env.BASE_URL), - routes: [ - ] -}) - -export default router diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/routers/index.ts b/central-studio-views/central-dashboard-view/src/main/node/src/routers/index.ts new file mode 100644 index 00000000..a4f02d76 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/routers/index.ts @@ -0,0 +1,27 @@ +import { + createRouter, + createWebHashHistory, + type RouteRecordRaw, +} from "vue-router"; + +const modules = import.meta.glob("./modules/**/*.ts", { eager: true }); + +let routes: RouteRecordRaw[] = [ + { + path: "/", + redirect: "/organization", + }, +]; + +Object.values(modules).forEach((it: any) => { + const module = it.default || []; + const moduleRoutes = Array.isArray(module) ? [...module] : [module]; + routes.push(...moduleRoutes); +}); + +const router = createRouter({ + history: createWebHashHistory(import.meta.env.BASE_URL), + routes: routes, +}); + +export default router; diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/identity.ts b/central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/identity.ts new file mode 100644 index 00000000..3c46c84e --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/identity.ts @@ -0,0 +1,23 @@ +import type { RouteRecordRaw } from "vue-router"; +import Layout from "@/layouts/Index.vue"; + +const routes: RouteRecordRaw[] = [ + { + path: "/identity", + name: "Identity", + redirect: "/identity/credential", + meta: { + title: "认证中心", + }, + }, + { + path: "/identity/strategies", + name: "Strategies", + component: Layout, + meta: { + title: "策略管理", + }, + }, +]; + +export default routes; diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/organization.ts b/central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/organization.ts new file mode 100644 index 00000000..f68c7dcc --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/routers/modules/organization.ts @@ -0,0 +1,23 @@ +import type { RouteRecordRaw } from "vue-router"; +import Layout from "@/layouts/Index.vue"; + +const routes: RouteRecordRaw[] = [ + { + path: "/organization", + name: "Organization", + redirect: "/organization/area", + meta: { + title: "组织机构管理", + }, + }, + { + path: "/organization/area", + name: "Area", + component: Layout, + meta: { + title: "行政区划管理", + }, + }, +]; + +export default routes; diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/stores/index.ts b/central-studio-views/central-dashboard-view/src/main/node/src/stores/index.ts new file mode 100644 index 00000000..ce50253f --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/stores/index.ts @@ -0,0 +1,3 @@ +export * from "./session"; +export * from "./tab"; +export * from "./theme"; diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/stores/session.ts b/central-studio-views/central-dashboard-view/src/main/node/src/stores/session.ts new file mode 100644 index 00000000..06865567 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/stores/session.ts @@ -0,0 +1,30 @@ +import { ref } from 'vue' +import { defineStore } from 'pinia' +import { http } from '@/http' +import type { Account } from '@centralx/types' +import { PortalBroker } from '@centralx/brokers' + +export const useSessionStore = defineStore('session', () => { + const account = ref(null) + const broker = new PortalBroker(http) + + /** + * 获取当前已登录的用户信息 + * 如果当前用户未登录,将返回 null + */ + async function getAccount(): Promise { + if (!account.value) { + account.value = await broker.getAccount() + } + return account.value + } + + /** + * 退出登录 + */ + async function logout(): Promise { + return broker.logout() + } + + return { getAccount, logout } +}) diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/stores/tab.ts b/central-studio-views/central-dashboard-view/src/main/node/src/stores/tab.ts new file mode 100644 index 00000000..303ba637 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/stores/tab.ts @@ -0,0 +1,43 @@ +import { defineStore } from "pinia"; +import { ref, computed } from "vue"; + +/** + * 标签页项 + */ +interface TabItem { + /** + * 标签页标识 + */ + code: string; + /** + * 标签页名称 + */ + title: string; + /** + * 标签页路径 + */ + path: string; +} + +/** + * 标签页管理 + */ +export const useTabStore = defineStore( + "tab", + () => { + // 主题 + const list = ref([]); + + // + const codes = computed(() => { + return list.value.map((item) => item.title); + }); + + return { list, codes }; + }, + { + // persist: { + // storage: sessionStorage + // } + }, +); diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/stores/theme.ts b/central-studio-views/central-dashboard-view/src/main/node/src/stores/theme.ts new file mode 100644 index 00000000..7119da2f --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/stores/theme.ts @@ -0,0 +1,33 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; + +/** + * 主题管理 + */ +export const useThemeStore = defineStore( + "theme", + () => { + // 主题 + const theme = ref(); + + // 布局 + const layout = ref("default"); + + /** + * 设置主题 + * @param value 主题标识 + */ + function setTheme(value: string) { + theme.value = value; + } + + function setLayout(value: string) { + layout.value = value; + } + + return { theme, setTheme, layout, setLayout }; + }, + { + // persist: true + }, +); diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/views/identity/StrategyView.vue b/central-studio-views/central-dashboard-view/src/main/node/src/views/identity/StrategyView.vue new file mode 100644 index 00000000..6049e0ea --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/views/identity/StrategyView.vue @@ -0,0 +1,5 @@ + + + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/src/views/organization/AreaView.vue b/central-studio-views/central-dashboard-view/src/main/node/src/views/organization/AreaView.vue new file mode 100644 index 00000000..de886361 --- /dev/null +++ b/central-studio-views/central-dashboard-view/src/main/node/src/views/organization/AreaView.vue @@ -0,0 +1,5 @@ + + + + + diff --git a/central-studio-views/central-dashboard-view/src/main/node/tsconfig.app.json b/central-studio-views/central-dashboard-view/src/main/node/tsconfig.app.json index e14c754d..47433136 100644 --- a/central-studio-views/central-dashboard-view/src/main/node/tsconfig.app.json +++ b/central-studio-views/central-dashboard-view/src/main/node/tsconfig.app.json @@ -1,14 +1,25 @@ { "extends": "@vue/tsconfig/tsconfig.dom.json", - "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], - "exclude": ["src/**/__tests__/*"], + "include": [ + "env.d.ts", + "src/**/*", + "src/**/*.vue", + "library/**/*" + ], + "exclude": [ + "src/**/__tests__/*" + ], "compilerOptions": { "composite": true, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "baseUrl": ".", "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ], + "@centralx/*": [ + "./library/*" + ] } } } diff --git a/central-studio-views/central-dashboard-view/src/main/node/vite.config.ts b/central-studio-views/central-dashboard-view/src/main/node/vite.config.ts index 08c5a12d..131d673a 100644 --- a/central-studio-views/central-dashboard-view/src/main/node/vite.config.ts +++ b/central-studio-views/central-dashboard-view/src/main/node/vite.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ base: './', server: { proxy: { - '/identity/api': { + '/identity': { target: 'http://localhost:8080', configure: (proxy, options) => { options.headers = { 'X-Forwarded-Tenant': 'master' } @@ -21,6 +21,12 @@ export default defineConfig({ options.headers = { 'X-Forwarded-Tenant': 'master' } } }, + '/dashboard/__logout': { + target: 'http://localhost:8080', + configure: (proxy, options) => { + options.headers = { 'X-Forwarded-Tenant': 'master' } + } + }, '/storage/api': { target: 'http://localhost:8080', configure: (proxy, options) => { @@ -47,10 +53,19 @@ export default defineConfig({ ], resolve: { alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) + '@': fileURLToPath(new URL('./src', import.meta.url)), + '@centralx': fileURLToPath(new URL('./library', import.meta.url)) + } + }, + css: { + preprocessorOptions: { + scss: { + additionalData: `@use "@/assets/styles/global.scss" as *;` + } } }, build: { - outDir: '../resources/dashboard' + outDir: '../resources/dashboard', + emptyOutDir: true } }) diff --git a/central-studio-views/central-identity-view/pom.xml b/central-studio-views/central-identity-view/pom.xml index e1ec8cd0..72d7c155 100644 --- a/central-studio-views/central-identity-view/pom.xml +++ b/central-studio-views/central-identity-view/pom.xml @@ -32,20 +32,20 @@ org.codehaus.mojo exec-maven-plugin - - npm-install - generate-sources - - ${project.basedir}/src/main/node - npm - - install - - - - exec - - + + + + + + + + + + + + + + npm-run-build generate-sources diff --git a/central-studio-views/central-identity-view/src/main/node/src/api/IdentityService.ts b/central-studio-views/central-identity-view/src/main/node/src/api/IdentityService.ts index a3d62e07..4af252f1 100644 --- a/central-studio-views/central-identity-view/src/main/node/src/api/IdentityService.ts +++ b/central-studio-views/central-identity-view/src/main/node/src/api/IdentityService.ts @@ -3,6 +3,10 @@ import axios from 'axios' import { sha256 } from 'js-sha256' const client = axios.create({ + timeout: 10000, + headers: { + 'Accept': 'application/json' + }, validateStatus: function(status: number) { return true } @@ -35,11 +39,7 @@ class IdentityService { * 退出登录 */ public async logout(): Promise { - return client.get('/identity/api/logout', { - headers: { - 'Accept': 'application/json' - } - }) + return client.get('/identity/api/logout') } /** diff --git a/central-studio-views/central-identity-view/src/main/node/vite.config.ts b/central-studio-views/central-identity-view/src/main/node/vite.config.ts index 6aea2eca..db4db2dc 100644 --- a/central-studio-views/central-identity-view/src/main/node/vite.config.ts +++ b/central-studio-views/central-identity-view/src/main/node/vite.config.ts @@ -15,7 +15,7 @@ export default defineConfig({ options.headers = { 'X-Forwarded-Tenant': 'master' } } }, - '/dashboard/api': { + '/dashboard': { target: 'http://localhost:8080', configure: (proxy, options) => { options.headers = { 'X-Forwarded-Tenant': 'master' } diff --git a/docker-bake.hcl b/docker-bake.hcl index 5709ac63..cdcdbc76 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -58,13 +58,7 @@ target "central-studio" { name = "${STUDIO_COMPONENT}" matrix = { STUDIO_COMPONENT = [ - "central-gateway", - "central-dashboard", - "central-identity", - "central-provider", - "central-logging", - "central-storage", - "central-multicast" + "central-bootstrap" ] } inherits = ["_contexts", "_platforms", "_labels"]