diff --git a/packages/ui/certd-client/src/router/source/modules/certd.ts b/packages/ui/certd-client/src/router/source/modules/certd.ts index 7c93924dc..cc00711a8 100644 --- a/packages/ui/certd-client/src/router/source/modules/certd.ts +++ b/packages/ui/certd-client/src/router/source/modules/certd.ts @@ -32,6 +32,16 @@ export const certdResources = [ isMenu: false, }, }, + { + title: "执行历史记录", + name: "PipelineHistory", + path: "/certd/history", + component: "/certd/history/index.vue", + meta: { + icon: "ion:timer-outline", + keepAlive: true, + }, + }, { title: "流水线模版", name: "PipelineTemplate", @@ -39,6 +49,7 @@ export const certdResources = [ component: "/certd/pipeline/template/index.vue", meta: { isMenu: true, + icon: "ion:duplicate-outline", }, }, { @@ -50,16 +61,6 @@ export const certdResources = [ isMenu: false, }, }, - { - title: "执行历史记录", - name: "PipelineHistory", - path: "/certd/history", - component: "/certd/history/index.vue", - meta: { - icon: "ion:timer-outline", - keepAlive: true, - }, - }, { title: "证书仓库", name: "CertStore", diff --git a/packages/ui/certd-client/src/views/certd/pipeline/api.ts b/packages/ui/certd-client/src/views/certd/pipeline/api.ts index 7a2764da3..c501aaff2 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/api.ts +++ b/packages/ui/certd-client/src/views/certd/pipeline/api.ts @@ -12,6 +12,16 @@ export async function GetList(query: any) { }); } +export async function GetSimpleByIds(ids: any) { + return await request({ + url: apiPrefix + "/getSimpleByIds", + method: "post", + data: { + ids, + }, + }); +} + export async function AddObj(obj: any) { return await request({ url: apiPrefix + "/add", @@ -100,7 +110,6 @@ export async function BatchUpdateNotificaiton(pipelineIds: number[], notificatio }); } - export async function BatchDelete(pipelineIds: number[]): Promise { return await request({ url: apiPrefix + "/batchDelete", @@ -116,8 +125,6 @@ export async function BatchRerun(pipelineIds: number[]): Promise { }); } - - export async function GetFiles(pipelineId: number) { return await request({ url: historyApiPrefix + "/files", diff --git a/packages/ui/certd-client/src/views/certd/pipeline/crud.tsx b/packages/ui/certd-client/src/views/certd/pipeline/crud.tsx index 50c5f0647..1ee1864a5 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/crud.tsx @@ -17,7 +17,6 @@ import { useCertViewer } from "/@/views/certd/pipeline/use"; export default function ({ crudExpose, context: { groupDictRef, selectedRowKeys } }: CreateCrudOptionsProps): CreateCrudOptionsRet { const router = useRouter(); - const { t } = useI18n(); const lastResRef = ref(); const { openAddCertdPipelineDialog } = useCertPipelineCreator(); @@ -481,6 +480,7 @@ export default function ({ crudExpose, context: { groupDictRef, selectedRowKeys { value: "cert", label: "证书申请" }, { value: "cert_upload", label: "证书上传" }, { value: "custom", label: "自定义" }, + { value: "template", label: "模版" }, ], }), form: { diff --git a/packages/ui/certd-client/src/views/certd/pipeline/template/crud.tsx b/packages/ui/certd-client/src/views/certd/pipeline/template/crud.tsx index 1e101d2df..5bbc14209 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/template/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/template/crud.tsx @@ -1,10 +1,9 @@ -// @ts-ignore -import { useI18n } from "vue-i18n"; -import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, EditReq, useFormWrapper, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud"; +import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, useFormWrapper, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud"; import { templateApi } from "./api"; import { useRouter } from "vue-router"; import { useModal } from "/@/use/use-modal"; - +import createCrudOptionsPipeline from "../crud"; +import * as pipelineApi from "../api"; export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { const api = templateApi; const pageRequest = async (query: UserPageQuery): Promise => { @@ -66,6 +65,10 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat rowHandle: { // width: 100, fixed: "right", + buttons: { + edit: { show: false }, + copy: { show: false }, + }, }, columns: { id: { @@ -94,17 +97,50 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat column: { width: 200, sorter: true, + cellRender({ row, value }) { + return {value}; + }, }, }, pipelineId: { title: "流水线ID", - type: "text", - search: { - show: true, + type: "table-select", + search: { show: true }, + dict: dict({ + value: "id", + label: "title", + //重要,根据value懒加载数据 + getNodesByValues: async (values: any[]) => { + return await pipelineApi.GetSimpleByIds(values); + }, + }), + editForm: { + show: false, }, - column: { - width: 200, - sorter: true, + form: { + component: { + valuesFormat: { + labelFormatter: (item: any) => { + return `${item.id}.${item.title}`; + }, + }, + select: { + placeholder: "点击选择", + }, + showSelect: false, + createCrudOptions: createCrudOptionsPipeline, + crudOptionsOverride: { + actionbar: { + show: false, + }, + toolbar: { + show: false, + }, + tabs: { + name: "type", + }, + }, + }, }, }, }, diff --git a/packages/ui/certd-client/src/views/certd/pipeline/template/edit.vue b/packages/ui/certd-client/src/views/certd/pipeline/template/edit.vue index d10e8deb6..584a424d5 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/template/edit.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/template/edit.vue @@ -1,49 +1,75 @@ diff --git a/packages/ui/certd-client/src/views/certd/pipeline/template/form.vue b/packages/ui/certd-client/src/views/certd/pipeline/template/form.vue new file mode 100644 index 000000000..1035ef174 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/pipeline/template/form.vue @@ -0,0 +1,64 @@ + + diff --git a/packages/ui/certd-client/src/views/certd/pipeline/template/utils.ts b/packages/ui/certd-client/src/views/certd/pipeline/template/utils.ts new file mode 100644 index 000000000..ebddc043b --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/pipeline/template/utils.ts @@ -0,0 +1,38 @@ +import { eachSteps } from "/@/views/certd/pipeline/utils"; + +export function useStepHelper(pluginStore: any) { + function getStepsMap(pipeline: any) { + const stepMap: any = {}; + eachSteps(pipeline, (step: any) => { + const plugin = pluginStore.getPluginDefineSync(step.type); + if (!plugin) { + return; + } + + const inputs: any = {}; + for (const key in plugin.input) { + const input: any = plugin.input[key]; + if (input.template === false || input.component?.name === "output-selector") { + continue; + } + inputs[key] = { + value: step.input[key], + define: { + ...plugin.input[key], + name: [step.id, key], + }, + }; + } + stepMap[step.id] = { + id: step.id, + title: step.title, + type: step.type, + input: inputs, + }; + }); + return stepMap; + } + return { + getStepsMap, + }; +} diff --git a/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts b/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts index 94f440b2b..6d9ebe749 100644 --- a/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts +++ b/packages/ui/certd-server/src/controller/user/pipeline/pipeline-controller.ts @@ -53,6 +53,13 @@ export class PipelineController extends CrudController { return this.ok(pageRet); } + @Post('/getSimpleByIds', { summary: Constants.per.authOnly }) + async getSimpleById(@Body(ALL) body) { + const ret = await this.getService().getSimplePipelines(body.ids,this.getUserId() ); + return this.ok(ret); + } + + @Post('/add', { summary: Constants.per.authOnly }) async add(@Body(ALL) bean: PipelineEntity) { bean.userId = this.getUserId(); diff --git a/packages/ui/certd-server/src/modules/pipeline/entity/pipeline.ts b/packages/ui/certd-server/src/modules/pipeline/entity/pipeline.ts index 6579bc25f..3d2d24ecf 100644 --- a/packages/ui/certd-server/src/modules/pipeline/entity/pipeline.ts +++ b/packages/ui/certd-server/src/modules/pipeline/entity/pipeline.ts @@ -29,7 +29,7 @@ export class PipelineEntity { @Column({ comment: '启用/禁用', nullable: true, default: false }) disabled: boolean; - // cert_apply: 证书申请;cert_upload: 证书上传; backup: 备份; custom:自定义; + // cert_apply: 证书申请;cert_upload: 证书上传; backup: 备份; custom:自定义; template: 模板 @Column({ comment: '类型', nullable: true, default: 'cert' }) type: string;