feat: 조직도 트리 이름 수정 기능 작업

This commit is contained in:
2025-04-21 18:35:13 +09:00
parent baf3cb0b11
commit e719834c80
5 changed files with 29 additions and 4 deletions
@@ -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<Organization> {
const response = await client.put<Organization>(
`${ENDPOINT.CMS_SERVICE.ORGANIZATIONS}/${ognzSn}/${name}`,
);
return response.data;
}
}
export const OrganizationApi = new OrganizationApiService();
@@ -23,4 +23,5 @@ export interface OrganizationService {
getOrganizationsTreeList(): Promise<OrganizationTree[]>;
createOrganization(organization: OrganizationFormData): Promise<void>;
deleteOrganization(ognzSn: number): Promise<void>;
updateOrganizationName(ognzSn: number, name: string): Promise<Organization>;
}
@@ -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<OrganizationFormData>({
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 });
}}
/>
</div>
</div>
@@ -17,7 +17,7 @@ type CustomNodeProps<T extends TreeData> = {
treeMethods: TreeMethods | null;
onToggle: (id: NodeModel["id"]) => void;
onSelect: (node: NodeModel<T>) => void;
updateNodeName: (nodeName: string) => Promise<void>;
updateNodeName: (id: NodeModel["id"], nodeName: string) => Promise<void>;
};
function CustomNode<T extends TreeData>({
@@ -41,7 +41,7 @@ function CustomNode<T extends TreeData>({
const handleSelect = () => onSelect(node);
const handleSave = async () => {
await updateNodeName(nodeName);
await updateNodeName(id, nodeName);
setEditMode(false);
};
+1 -1
View File
@@ -25,7 +25,7 @@ type TreeProps<T extends TreeData> = {
renderEditableNode: (props: EditableNodeProps) => ReactElement;
handleSelectNode: (node: NodeModel<T>) => void;
handleDropNode: (newTree: NodeModel<T>[], options: DropOptions<T>) => void;
updateNodeName: (nodeName: string) => Promise<void>;
updateNodeName: (id: NodeModel["id"], nodeName: string) => Promise<void>;
};
function DndTree<T extends TreeData>({