From 3575113655be751d19f88c64491e98a89042d6a2 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Mon, 25 Aug 2025 23:58:03 +0800 Subject: [PATCH 01/17] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=AE=9D=E5=A1=94=E8=AF=81=E4=B9=A6=E5=A4=B9=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E8=BF=87=E6=9C=9F=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/ui/certd-server/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/ui/certd-server/README.md b/packages/ui/certd-server/README.md index 0745defec..5af672331 100755 --- a/packages/ui/certd-server/README.md +++ b/packages/ui/certd-server/README.md @@ -9,8 +9,6 @@ ``` - - ```shell npm run heap ``` From f1a168fa530cf6b0ea001cc3c384ad7916c8cc83 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 26 Aug 2025 18:42:54 +0800 Subject: [PATCH 02/17] chore: plugin config --- .../src/router/source/modules/sys.ts | 2 +- .../src/views/certd/access/common.tsx | 1 + .../src/views/certd/access/crud.tsx | 1 + .../certd-client/src/views/sys/plugin/api.ts | 9 ++ .../plugin/{config.vue => config-common.vue} | 0 .../src/views/sys/plugin/config-editor.vue | 86 ++++++++++++++++ .../src/views/sys/plugin/crud.tsx | 98 +++++-------------- .../src/views/sys/plugin/use-config.tsx | 50 ++++++++++ .../src/views/sys/plugin/use-import.ts | 80 +++++++++++++++ .../plugin/service/plugin-config-service.ts | 10 +- 10 files changed, 263 insertions(+), 74 deletions(-) rename packages/ui/certd-client/src/views/sys/plugin/{config.vue => config-common.vue} (100%) create mode 100644 packages/ui/certd-client/src/views/sys/plugin/config-editor.vue create mode 100644 packages/ui/certd-client/src/views/sys/plugin/use-config.tsx create mode 100644 packages/ui/certd-client/src/views/sys/plugin/use-import.ts diff --git a/packages/ui/certd-client/src/router/source/modules/sys.ts b/packages/ui/certd-client/src/router/source/modules/sys.ts index 22937dd45..b634f254f 100644 --- a/packages/ui/certd-client/src/router/source/modules/sys.ts +++ b/packages/ui/certd-client/src/router/source/modules/sys.ts @@ -133,7 +133,7 @@ export const sysResources = [ title: "certd.sysResources.sysPluginConfig", name: "SysPluginConfig", path: "/sys/plugin/config", - component: "/sys/plugin/config.vue", + component: "/sys/plugin/config-common.vue", meta: { show: () => { const settingStore = useSettingStore(); diff --git a/packages/ui/certd-client/src/views/certd/access/common.tsx b/packages/ui/certd-client/src/views/certd/access/common.tsx index 55ce6fe8d..65d30afe6 100644 --- a/packages/ui/certd-client/src/views/certd/access/common.tsx +++ b/packages/ui/certd-client/src/views/certd/access/common.tsx @@ -84,6 +84,7 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) { component: { color: "auto", }, + order: -1, }, form: { component: { diff --git a/packages/ui/certd-client/src/views/certd/access/crud.tsx b/packages/ui/certd-client/src/views/certd/access/crud.tsx index 0e8aea819..c0490c426 100644 --- a/packages/ui/certd-client/src/views/certd/access/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/access/crud.tsx @@ -82,6 +82,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat }, column: { width: 300, + order: -11, }, }, from: { diff --git a/packages/ui/certd-client/src/views/sys/plugin/api.ts b/packages/ui/certd-client/src/views/sys/plugin/api.ts index f31a2b4c9..a773fc9bb 100644 --- a/packages/ui/certd-client/src/views/sys/plugin/api.ts +++ b/packages/ui/certd-client/src/views/sys/plugin/api.ts @@ -97,6 +97,7 @@ export type CertApplyPluginSysInput = { export type PluginSysSetting = { sysSetting: { input?: T; + metadata?: Record; }; }; export type CommPluginConfig = { @@ -118,6 +119,14 @@ export async function SaveCommPluginConfigs(data: CommPluginConfig): Promise { + return await request({ + url: apiPrefix + "/saveSetting", + method: "post", + data: req, + }); +} + export async function DoTest(req: { id: number; input: any }): Promise { return await request({ url: apiPrefix + "/doTest", diff --git a/packages/ui/certd-client/src/views/sys/plugin/config.vue b/packages/ui/certd-client/src/views/sys/plugin/config-common.vue similarity index 100% rename from packages/ui/certd-client/src/views/sys/plugin/config.vue rename to packages/ui/certd-client/src/views/sys/plugin/config-common.vue diff --git a/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue b/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue new file mode 100644 index 000000000..26ab22c5f --- /dev/null +++ b/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue @@ -0,0 +1,86 @@ + + + diff --git a/packages/ui/certd-client/src/views/sys/plugin/crud.tsx b/packages/ui/certd-client/src/views/sys/plugin/crud.tsx index adfda4dbc..456791288 100644 --- a/packages/ui/certd-client/src/views/sys/plugin/crud.tsx +++ b/packages/ui/certd-client/src/views/sys/plugin/crud.tsx @@ -1,11 +1,14 @@ import * as api from "./api"; import { useI18n } from "/src/locales"; -import { Ref, ref } from "vue"; +import { Ref, ref, computed } from "vue"; import { useRouter } from "vue-router"; -import { AddReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, useFormWrapper, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud"; -import { Modal, notification } from "ant-design-vue"; +import { AddReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud"; +import { Modal } from "ant-design-vue"; //@ts-ignore import yaml from "js-yaml"; +import { usePluginImport } from "./use-import"; +import { usePluginConfig } from "./use-config"; +import { useSettingStore } from "/src/store/settings/index"; export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { const router = useRouter(); @@ -35,75 +38,11 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat const selectedRowKeys: Ref = ref([]); context.selectedRowKeys = selectedRowKeys; - const { openCrudFormDialog } = useFormWrapper(); - async function openImportDialog() { - function createCrudOptions() { - return { - crudOptions: { - columns: { - content: { - title: t("certd.pluginFile"), - type: "text", - form: { - component: { - name: "pem-input", - vModel: "modelValue", - textarea: { - rows: 8, - }, - }, - col: { - span: 24, - }, - helper: t("certd.selectPluginFile"), - }, - }, - override: { - title: t("certd.overrideSameName"), - type: "dict-switch", - dict: dict({ - data: [ - { - value: true, - label: t("certd.override"), - }, - { - value: false, - label: t("certd.noOverride"), - }, - ], - }), - form: { - value: false, - col: { - span: 24, - }, - helper: t("certd.overrideHelper"), - }, - }, - }, - form: { - wrapper: { - title: t("certd.importPlugin"), - saveRemind: false, - }, - afterSubmit() { - notification.success({ message: t("certd.operationSuccess") }); - crudExpose.doRefresh(); - }, - async doSubmit({ form }: any) { - return await api.ImportPlugin({ - ...form, - }); - }, - }, - }, - }; - } - const { crudOptions } = createCrudOptions(); - await openCrudFormDialog({ crudOptions }); - } + const { openImportDialog } = usePluginImport(); + const { openConfigDialog } = usePluginConfig(); + + const settingStore = useSettingStore(); return { crudOptions: { settings: { @@ -139,7 +78,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat text: t("certd.import"), type: "primary", async click() { - await openImportDialog(); + await openImportDialog({ crudExpose }); }, }, }, @@ -186,6 +125,21 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat } }, }, + config: { + show: computed(() => { + return settingStore.isComm; + }), + text: null, + icon: "ion:settings-outline", + title: t("certd.config"), + type: "link", + async click({ row }) { + await openConfigDialog({ + row, + crudExpose, + }); + }, + }, }, }, table: { diff --git a/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx b/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx new file mode 100644 index 000000000..3cefb4626 --- /dev/null +++ b/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx @@ -0,0 +1,50 @@ +import * as api from "/@/views/sys/plugin/api"; +import { useFormWrapper } from "@fast-crud/fast-crud"; +import { useI18n } from "/@/locales"; +import { Modal, notification } from "ant-design-vue"; +import ConfigEditor from "./config-editor.vue"; +export function usePluginConfig() { + const { openCrudFormDialog } = useFormWrapper(); + const { t } = useI18n(); + + async function openConfigDialog({ row, crudExpose }) { + function createCrudOptions() { + return { + crudOptions: { + columns: {}, + form: { + wrapper: { + width: "80%", + title: "插件元数据配置", + saveRemind: false, + slots: { + "form-body-top": () => { + return ( +
+ +
+ ); + }, + }, + }, + afterSubmit() { + notification.success({ message: t("certd.operationSuccess") }); + crudExpose.doRefresh(); + }, + async doSubmit({ form }: any) { + return await api.ImportPlugin({ + ...form, + }); + }, + }, + }, + }; + } + const { crudOptions } = createCrudOptions(); + await openCrudFormDialog({ crudOptions }); + } + + return { + openConfigDialog, + }; +} diff --git a/packages/ui/certd-client/src/views/sys/plugin/use-import.ts b/packages/ui/certd-client/src/views/sys/plugin/use-import.ts new file mode 100644 index 000000000..b398752a3 --- /dev/null +++ b/packages/ui/certd-client/src/views/sys/plugin/use-import.ts @@ -0,0 +1,80 @@ +import * as api from "/@/views/sys/plugin/api"; +import { useFormWrapper } from "@fast-crud/fast-crud"; +import { useI18n } from "/@/locales"; +import { Modal, notification } from "ant-design-vue"; +export function usePluginImport() { + const { openCrudFormDialog } = useFormWrapper(); + const { t } = useI18n(); + + async function openImportDialog({ crudExpose }) { + function createCrudOptions() { + return { + crudOptions: { + columns: { + content: { + title: t("certd.pluginFile"), + type: "text", + form: { + component: { + name: "pem-input", + vModel: "modelValue", + textarea: { + rows: 8, + }, + }, + col: { + span: 24, + }, + helper: t("certd.selectPluginFile"), + }, + }, + override: { + title: t("certd.overrideSameName"), + type: "dict-switch", + dict: dict({ + data: [ + { + value: true, + label: t("certd.override"), + }, + { + value: false, + label: t("certd.noOverride"), + }, + ], + }), + form: { + value: false, + col: { + span: 24, + }, + helper: t("certd.overrideHelper"), + }, + }, + }, + form: { + wrapper: { + title: t("certd.importPlugin"), + saveRemind: false, + }, + afterSubmit() { + notification.success({ message: t("certd.operationSuccess") }); + crudExpose.doRefresh(); + }, + async doSubmit({ form }: any) { + return await api.ImportPlugin({ + ...form, + }); + }, + }, + }, + }; + } + const { crudOptions } = createCrudOptions(); + await openCrudFormDialog({ crudOptions }); + } + + return { + openImportDialog, + }; +} diff --git a/packages/ui/certd-server/src/modules/plugin/service/plugin-config-service.ts b/packages/ui/certd-server/src/modules/plugin/service/plugin-config-service.ts index 697a79208..cc8bbd9b7 100644 --- a/packages/ui/certd-server/src/modules/plugin/service/plugin-config-service.ts +++ b/packages/ui/certd-server/src/modules/plugin/service/plugin-config-service.ts @@ -6,6 +6,7 @@ export type PluginConfig = { disabled: boolean; sysSetting: { input?: Record; + metadata?: Record; }; }; @@ -57,7 +58,14 @@ export class PluginConfigService { author: "certd", }); } else { - await this.pluginService.getRepository().update({ name }, { sysSetting: JSON.stringify(sysSetting) }); + let setting = JSON.parse(pluginEntity.sysSetting || "{}"); + if (sysSetting.metadata) { + setting.metadata = sysSetting.metadata; + } + if (sysSetting.input) { + setting.input = sysSetting.input; + } + await this.pluginService.getRepository().update({ name }, { sysSetting: JSON.stringify(setting) }); } } From 8e3d6998564c662f5137489950fef7eac4bfd592 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 27 Aug 2025 09:56:36 +0800 Subject: [PATCH 03/17] chore: --- .../src/views/sys/plugin/config-editor.vue | 117 ++++++++++++------ .../src/views/sys/plugin/rollbackable.vue | 32 +++++ .../src/views/sys/plugin/use-config.tsx | 78 +++++++----- 3 files changed, 154 insertions(+), 73 deletions(-) create mode 100644 packages/ui/certd-client/src/views/sys/plugin/rollbackable.vue diff --git a/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue b/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue index 26ab22c5f..b0a2f3715 100644 --- a/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue +++ b/packages/ui/certd-client/src/views/sys/plugin/config-editor.vue @@ -1,74 +1,111 @@ + + diff --git a/packages/ui/certd-client/src/views/sys/plugin/rollbackable.vue b/packages/ui/certd-client/src/views/sys/plugin/rollbackable.vue new file mode 100644 index 000000000..3fb43fbac --- /dev/null +++ b/packages/ui/certd-client/src/views/sys/plugin/rollbackable.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx b/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx index 3cefb4626..11b4fda16 100644 --- a/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx +++ b/packages/ui/certd-client/src/views/sys/plugin/use-config.tsx @@ -3,45 +3,55 @@ import { useFormWrapper } from "@fast-crud/fast-crud"; import { useI18n } from "/@/locales"; import { Modal, notification } from "ant-design-vue"; import ConfigEditor from "./config-editor.vue"; +import { useModal } from "/@/use/use-modal"; export function usePluginConfig() { const { openCrudFormDialog } = useFormWrapper(); const { t } = useI18n(); + const modal = useModal(); async function openConfigDialog({ row, crudExpose }) { - function createCrudOptions() { - return { - crudOptions: { - columns: {}, - form: { - wrapper: { - width: "80%", - title: "插件元数据配置", - saveRemind: false, - slots: { - "form-body-top": () => { - return ( -
- -
- ); - }, - }, - }, - afterSubmit() { - notification.success({ message: t("certd.operationSuccess") }); - crudExpose.doRefresh(); - }, - async doSubmit({ form }: any) { - return await api.ImportPlugin({ - ...form, - }); - }, - }, - }, - }; - } - const { crudOptions } = createCrudOptions(); - await openCrudFormDialog({ crudOptions }); + // function createCrudOptions() { + // return { + // crudOptions: { + // columns: {}, + // form: { + // wrapper: { + // width: "80%", + // title: "插件元数据配置", + // saveRemind: false, + // slots: { + // "form-body-top": () => { + // return ( + //
+ // + //
+ // ); + // }, + // }, + // }, + // afterSubmit() { + // notification.success({ message: t("certd.operationSuccess") }); + // crudExpose.doRefresh(); + // }, + // async doSubmit({ form }: any) { + // return await api.ImportPlugin({ + // ...form, + // }); + // }, + // }, + // }, + // }; + // } + // const { crudOptions } = createCrudOptions(); + // await openCrudFormDialog({ crudOptions }); + + modal.confirm({ + title: "插件元数据配置", + width: "80%", + content: () => { + return ; + }, + }); } return { From 17f23f37516af925d5049291d67d41e4271f81f8 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 27 Aug 2025 18:23:24 +0800 Subject: [PATCH 04/17] =?UTF-8?q?perf:=20=E5=95=86=E4=B8=9A=E7=89=88?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/locales/langs/en-US/certd.ts | 2 +- .../src/locales/langs/zh-CN/certd.ts | 2 +- .../ui/certd-client/src/store/plugin/index.ts | 26 ++++- .../ui/certd-client/src/style/common.less | 8 ++ .../views/certd/pipeline/certd-form/use.tsx | 1 + .../src/views/certd/pipeline/index.vue | 9 ++ .../src/views/framework/login/index.vue | 3 +- .../src/views/sys/plugin/config-editor.vue | 104 +++++++++++++----- .../src/views/sys/plugin/rollbackable.vue | 37 +++++-- .../src/views/sys/plugin/use-config.tsx | 95 +++++++++------- .../sys/plugin/plugin-controller.ts | 12 +- .../plugin/service/plugin-config-service.ts | 8 +- .../modules/plugin/service/plugin-service.ts | 64 ++++++++--- 13 files changed, 265 insertions(+), 106 deletions(-) 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 4e734a54e..60c1d71a5 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 @@ -564,7 +564,7 @@ export default { ipv6Priority: "IPv6 Priority", dualStackNetworkHelper: "If IPv6 priority is selected, enable IPv6 in docker-compose.yaml", enableCommonCnameService: "Enable Public CNAME Service", - commonCnameHelper: "Allow use of public CNAME service. If disabled and no custom CNAME service is set, CNAME proxy certificate application will not work.", + commonCnameHelper: "Allow use of public CNAME service. If disabled and no custom CNAME service is set, CNAME proxy certificate application will not work.", enableCommonSelfServicePasswordRetrieval: "Enable self-service password recovery", saveButton: "Save", stopSuccess: "Stopped successfully", 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 ec9612202..60ea53a58 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 @@ -570,7 +570,7 @@ export default { ipv6Priority: "IPV6优先", dualStackNetworkHelper: "如果选择IPv6优先,需要在docker-compose.yaml中启用ipv6", enableCommonCnameService: "启用公共CNAME服务", - commonCnameHelper: "是否可以使用公共CNAME服务,如果禁用,且没有设置自定义CNAME服务,则无法使用CNAME代理方式申请证书", + commonCnameHelper: "是否可以使用公共CNAME服务,如果禁用,且没有设置自定义CNAME服务,则无法使用CNAME代理方式申请证书", enableCommonSelfServicePasswordRetrieval: "启用自助找回密码", saveButton: "保存", stopSuccess: "停止成功", diff --git a/packages/ui/certd-client/src/store/plugin/index.ts b/packages/ui/certd-client/src/store/plugin/index.ts index 7f600f08d..079fab203 100644 --- a/packages/ui/certd-client/src/store/plugin/index.ts +++ b/packages/ui/certd-client/src/store/plugin/index.ts @@ -1,7 +1,8 @@ import { defineStore } from "pinia"; import * as api from "./api.plugin"; -import { DynamicType, FormItemProps } from "@fast-crud/fast-crud"; +import { DynamicType, FormItemProps, useMerge } from "@fast-crud/fast-crud"; import { i18n } from "/src/locales/i18n"; +import { cloneDeep } from "lodash-es"; interface PluginState { group?: PluginGroups; } @@ -32,14 +33,17 @@ export class PluginGroups { groups!: { [key: string]: PluginGroup }; map!: { [key: string]: PluginDefine }; t: any; - constructor(groups: { [key: string]: PluginGroup }) { + mergeSetting?: boolean; + constructor(groups: { [key: string]: PluginGroup }, opts?: { mergeSetting?: boolean }) { this.groups = groups; this.t = i18n.global.t; + this.mergeSetting = opts?.mergeSetting ?? false; this.initGroup(groups); this.initMap(); } private initGroup(groups: { [p: string]: PluginGroup }) { + const { merge } = useMerge(); const all: PluginGroup = { key: "all", title: this.t("certd.all"), @@ -48,6 +52,14 @@ export class PluginGroups { icon: "material-symbols:border-all-rounded", }; for (const key in groups) { + if (this.mergeSetting) { + for (const plugin of groups[key].plugins) { + if (plugin.sysSetting) { + merge(plugin.input, plugin.sysSetting.metadata); + } + } + } + all.plugins.push(...groups[key].plugins); } this.groups = { @@ -132,11 +144,15 @@ export const usePluginStore = defineStore({ id: "app.plugin", state: (): PluginState => ({ group: null, + originGroup: null, }), actions: { async reload() { const groups = await api.GetGroups({}); - this.group = new PluginGroups(groups); + this.group = new PluginGroups(groups, { mergeSetting: true }); + this.originGroup = new PluginGroups(cloneDeep(groups)); + console.log("group", this.group); + console.log("originGroup", this.originGroup); }, async init() { if (!this.group) { @@ -159,6 +175,10 @@ export const usePluginStore = defineStore({ await this.init(); return this.group.get(name); }, + async getPluginDefineFromOrigin(name: string): Promise { + await this.init(); + return this.originGroup.get(name); + }, async getPluginConfig(query: any) { return await api.GetPluginConfig(query); }, diff --git a/packages/ui/certd-client/src/style/common.less b/packages/ui/certd-client/src/style/common.less index 8f5c3b543..70336dd0f 100644 --- a/packages/ui/certd-client/src/style/common.less +++ b/packages/ui/certd-client/src/style/common.less @@ -304,3 +304,11 @@ h6 { padding: 10px; color: #6e6e6e; } + +.ant-modal-body{ + .fs-form-body{ + max-height: 66vh; + overflow-y: auto; + } + +} \ No newline at end of file diff --git a/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx b/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx index 74c891951..dd6ff4d57 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx @@ -138,6 +138,7 @@ export function useCertPipelineCreator() { form: { doSubmit, wrapper: { + wrapClassName: "cert_pipeline_create_form", width: 1350, saveRemind: false, title: t("certd.pipelineForm.createTitle"), diff --git a/packages/ui/certd-client/src/views/certd/pipeline/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/index.vue index b337fda45..164a1a793 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/index.vue @@ -115,4 +115,13 @@ function batchRerun() { padding-left: 10px; } } + +.cert_pipeline_create_form { + .ant-collapse { + margin: 10px; + } + .ant-collapse-header { + text-align: right; + } +} diff --git a/packages/ui/certd-client/src/views/framework/login/index.vue b/packages/ui/certd-client/src/views/framework/login/index.vue index 1f6a0a713..604aa0d30 100644 --- a/packages/ui/certd-client/src/views/framework/login/index.vue +++ b/packages/ui/certd-client/src/views/framework/login/index.vue @@ -43,7 +43,7 @@ -