feat: 조직도 트리 이름 수정 기능 작업
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
@@ -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>({
|
||||
|
||||
Reference in New Issue
Block a user