diff --git a/src/components/models/management/DataGroup.ts b/src/components/models/management/DataGroup.ts new file mode 100644 index 0000000..20ff299 --- /dev/null +++ b/src/components/models/management/DataGroup.ts @@ -0,0 +1,21 @@ +export interface DataGroup { + workflowName: string; + workflowDescription?: string; + uploadYn: "Y" | "N"; + regUserId: string; + regDt: string; + modDt: string; + projectId: number; +} + +export interface DataGroupSearch { + projectId: number; // ✅ 유일한 필수 + page?: number; + size?: number; + keyword?: string; + searchType?: "전체" | "제목" | "작성자"; + startDate?: string; + endDate?: string; + sortField?: string; + sortDirection?: "ASC" | "DESC"; +} diff --git a/src/components/service/management/DataGroupService.ts b/src/components/service/management/DataGroupService.ts new file mode 100644 index 0000000..53ed3ea --- /dev/null +++ b/src/components/service/management/DataGroupService.ts @@ -0,0 +1,25 @@ +import { + DataGroup, + DataGroupSearch, +} from "@/components/models/management/DataGroup"; +import { request } from "@/components/service/index"; +export const DataGroupService = { + add: (payload: DataGroup) => { + return request.post("/api/datagroup", payload); + }, + getAll: () => { + return request.get("/api/datagroup", {}); + }, + delete: (id: Number) => { + return request.delete(`/api/datagroup/${id}`, {}); + }, + view: (id: Number) => { + return request.get(`/api/datagroup/${id}`, {}); + }, + update: (id: number, payload: DataGroup) => { + return request.put(`/api/datagroup/${id}`, payload); + }, + search: (payload: DataGroupSearch) => { + return request.get("/api/datagroup/search", payload); + }, +}; diff --git a/src/components/templates/datagroup/ListComponent.vue b/src/components/templates/datagroup/ListComponent.vue new file mode 100644 index 0000000..1679e9d --- /dev/null +++ b/src/components/templates/datagroup/ListComponent.vue @@ -0,0 +1,562 @@ + + + + + + + + + + DataGroup + + + + + + + + + + + + + + + + mdi-magnify + + + + + + + + + 총 {{ data.totalElements.toLocaleString() }}개 + + + + + + + + + + Create Workflow + + + + + + + + + + + + + + + + + + + {{ item.label }} + + + + + + + + + {{ item.no }} + {{ item.name }} + {{ item.description }} + {{ item.version }} + {{ item.kubeflowStatus }} + {{ formatDateTime(item.registDt) }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/templates/run/executions/ListComponent.vue b/src/components/templates/run/executions/ListComponent.vue index 9d908f8..2342b91 100644 --- a/src/components/templates/run/executions/ListComponent.vue +++ b/src/components/templates/run/executions/ListComponent.vue @@ -273,10 +273,6 @@ async function fetchList() { const result = res?.data ?? res; // 1) 응답 정규화 - // - Page 객체: { content, totalElements, totalPages } - // - runs 키: { runs } - // - 루트 배열: [] - // - data 배열: { data: [] } let list: any[] = []; let totalElements: number | undefined; let totalPages: number | undefined; diff --git a/src/pages/Datagroup.vue b/src/pages/Datagroup.vue new file mode 100644 index 0000000..2a4f7b6 --- /dev/null +++ b/src/pages/Datagroup.vue @@ -0,0 +1,9 @@ + + + + + + + diff --git a/src/router/index.js b/src/router/index.js index 5da2208..4f29c50 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -40,6 +40,12 @@ const routes = [ meta: { title: "Workflow Step Config", requiresAuth: false }, component: () => import("@/pages/WorkflowStepConfigView.vue"), }, + { + name: "dataGroup", + path: "/datagroup", + meta: { title: "DataGroup", requiresAuth: false }, + component: () => import("@/pages/Datagroup.vue"), + }, { name: "run", path: "/run/experiment", diff --git a/src/utils/menuUtils.js b/src/utils/menuUtils.js index e7421f2..c6a6373 100644 --- a/src/utils/menuUtils.js +++ b/src/utils/menuUtils.js @@ -12,12 +12,12 @@ export const menuUtils = { value: "workflows", icon: "mdi-code-braces", }, - // { - // title: "Workflow Step Config", - // path: "/workflow-step-config", - // value: "workflow-step-config", - // icon: "mdi-hammer-wrench", - // }, + { + title: "DataGroup", + path: "/DataGroup", + value: "DataGroup", + icon: "mdi-hammer-wrench", + }, { title: "Run", path: "/run", diff --git a/typed-router.d.ts b/typed-router.d.ts index e75a5c5..2232ca6 100644 --- a/typed-router.d.ts +++ b/typed-router.d.ts @@ -19,6 +19,7 @@ declare module 'vue-router/auto-routes' { */ export interface RouteNamedMap { '/': RouteRecordInfo<'/', '/', Record, Record>, + '/Datagroup': RouteRecordInfo<'/Datagroup', '/Datagroup', Record, Record>, '/DatasetView': RouteRecordInfo<'/DatasetView', '/DatasetView', Record, Record>, '/DeploymentView': RouteRecordInfo<'/DeploymentView', '/DeploymentView', Record, Record>, '/ExecutionsView': RouteRecordInfo<'/ExecutionsView', '/ExecutionsView', Record, Record>,