import { useAjax } from "@/Hook/useAjax" import { getFolderListApi } from "@/services/adqV3/cloudNew" import { DataNode, DirectoryTreeProps, EventDataNode } from "antd/lib/tree"; import React, { useEffect, useState } from "react" import { updateTreeData } from "./const"; import style from './index.less' import { Button, Empty, Spin, Tree } from "antd"; interface Props { selectedKeys?: number onChange?: (selectedKeys?: number) => void } /** * 文件夹 * @returns */ const SelectFolder: React.FC = ({ selectedKeys, onChange }) => { /******************************/ const [treeData, setTreeData] = useState([]); const getFolderList = useAjax((params) => getFolderListApi(params)) /******************************/ useEffect(() => { getFolder() }, []) const getFolder = () => { getFolderList.run({}).then(res => { setTreeData(() => res?.map((item: { folderName: any; id: any; createBy: number }) => ({ title: item.folderName, value: item.id, key: item.id, })) || []) }) } // 下级目录 const handleUpdateFolder = (parentId: number) => { return getFolderListApi({ parentId }).then(res => { setTreeData(origin => updateTreeData(origin, parentId, res?.data?.map((item: { folderName: any; id: any; createBy: number }) => ({ title: item.folderName, value: item.id, key: item.id, })) || []), ); }) } // 选中文件 const onSelect: DirectoryTreeProps['onSelect'] = (keys, info) => { console.log('Trigger Expand', keys, info); onChange?.(keys?.length > 0 ? keys[0] : undefined as any) }; return
) => { return new Promise(async (resolve) => { console.log('Trigger Select', treeNode); await handleUpdateFolder(Number(treeNode.key)) resolve() }) }} onSelect={onSelect} treeData={treeData} /> {!(treeData?.length > 0) && (getFolderList.loading ?
: )}
} export default React.memo(SelectFolder)