From e719834c800532bb8adcc031686d57f862bf7c4b Mon Sep 17 00:00:00 2001 From: bicochan Date: Mon, 21 Apr 2025 18:35:13 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=A1=B0=EC=A7=81=EB=8F=84=20=ED=8A=B8?= =?UTF-8?q?=EB=A6=AC=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/api/organization-service.ts | 11 +++++++++++ .../organization/model/organization-interface.ts | 1 + .../pages/organization/ui/organization-page.tsx | 15 ++++++++++++++- apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx | 4 ++-- apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx | 2 +- 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/apps/cs/src/entities/organization/api/organization-service.ts b/apps/cs/src/entities/organization/api/organization-service.ts index 3a362df19..ba66c5b76 100644 --- a/apps/cs/src/entities/organization/api/organization-service.ts +++ b/apps/cs/src/entities/organization/api/organization-service.ts @@ -1,6 +1,7 @@ import { client } from "@/shared/api"; import { ENDPOINT } from "@/shared/config"; import { + type Organization, type OrganizationFormData, type OrganizationService, type OrganizationTree, @@ -28,6 +29,16 @@ export class OrganizationApiService implements OrganizationService { `${ENDPOINT.CMS_SERVICE.ORGANIZATIONS}/${ognzSn}`, ); } + + public async updateOrganizationName( + ognzSn: number, + name: string, + ): Promise { + const response = await client.put( + `${ENDPOINT.CMS_SERVICE.ORGANIZATIONS}/${ognzSn}/${name}`, + ); + return response.data; + } } export const OrganizationApi = new OrganizationApiService(); diff --git a/apps/cs/src/entities/organization/model/organization-interface.ts b/apps/cs/src/entities/organization/model/organization-interface.ts index ad8167708..d22ce2dc1 100644 --- a/apps/cs/src/entities/organization/model/organization-interface.ts +++ b/apps/cs/src/entities/organization/model/organization-interface.ts @@ -23,4 +23,5 @@ export interface OrganizationService { getOrganizationsTreeList(): Promise; createOrganization(organization: OrganizationFormData): Promise; deleteOrganization(ognzSn: number): Promise; + updateOrganizationName(ognzSn: number, name: string): Promise; } diff --git a/apps/cs/src/pages/organization/ui/organization-page.tsx b/apps/cs/src/pages/organization/ui/organization-page.tsx index 5a767ba6b..a7766b756 100644 --- a/apps/cs/src/pages/organization/ui/organization-page.tsx +++ b/apps/cs/src/pages/organization/ui/organization-page.tsx @@ -55,6 +55,17 @@ function OrganizationPage() { }, }); + const { mutateAsync: updateOrganizationName } = useMutation({ + mutationFn: ({ ognzSn, name }: { ognzSn: number; name: string }) => + OrganizationApi.updateOrganizationName(ognzSn, name), + onSuccess: () => { + alert("저장되었습니다."); + queryClient.invalidateQueries({ + queryKey: [ENDPOINT.CMS_SERVICE.ORGANIZATIONS], + }); + }, + }); + const additionalNodeForm = useForm({ resolver: zodResolver(organizationFormSchema), defaultValues: { @@ -145,7 +156,9 @@ function OrganizationPage() { )} handleSelectNode={handleNodeSelect} handleDropNode={() => {}} - updateNodeName={async () => {}} + updateNodeName={async (id, name) => { + await updateOrganizationName({ ognzSn: id as number, name }); + }} /> diff --git a/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx b/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx index b909f1bfb..ccd5ce75e 100644 --- a/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx +++ b/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx @@ -17,7 +17,7 @@ type CustomNodeProps = { treeMethods: TreeMethods | null; onToggle: (id: NodeModel["id"]) => void; onSelect: (node: NodeModel) => void; - updateNodeName: (nodeName: string) => Promise; + updateNodeName: (id: NodeModel["id"], nodeName: string) => Promise; }; function CustomNode({ @@ -41,7 +41,7 @@ function CustomNode({ const handleSelect = () => onSelect(node); const handleSave = async () => { - await updateNodeName(nodeName); + await updateNodeName(id, nodeName); setEditMode(false); }; diff --git a/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx b/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx index 98386f09c..1a0a36816 100644 --- a/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx +++ b/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx @@ -25,7 +25,7 @@ type TreeProps = { renderEditableNode: (props: EditableNodeProps) => ReactElement; handleSelectNode: (node: NodeModel) => void; handleDropNode: (newTree: NodeModel[], options: DropOptions) => void; - updateNodeName: (nodeName: string) => Promise; + updateNodeName: (id: NodeModel["id"], nodeName: string) => Promise; }; function DndTree({