import { Button, Input, message, Tree } from "antd"; import { useState, useEffect } from "react"; import { resourceCategory } from "../../api/index"; interface Option { key: string | number; title: any; children?: Option[]; } interface PropInterface { text: string; categoryCount: any; onUpdate: (keys: any, title: any) => void; } export const TreeCategory = (props: PropInterface) => { const [treeData, setTreeData] = useState([]); const [loading, setLoading] = useState(true); const [selectKey, setSelectKey] = useState([]); useEffect(() => { resourceCategory.resourceCategoryList().then((res: any) => { const categories = res.data.categories; if (JSON.stringify(categories) !== "{}") { const new_arr: Option[] = checkArr(categories, 0); setTreeData(new_arr); } }); }, [props.categoryCount]); const checkArr = (categories: any[], id: number) => { const arr = []; for (let i = 0; i < categories[id].length; i++) { if (!categories[categories[id][i].id]) { let name = (
{categories[id][i].name} ({props.categoryCount[categories[id][i].id] || 0})
); arr.push({ title: name, key: categories[id][i].id, }); } else { let name = (
{categories[id][i].name} ({props.categoryCount[categories[id][i].id] || 0})
); const new_arr: Option[] = checkArr(categories, categories[id][i].id); arr.push({ title: name, key: categories[id][i].id, children: new_arr, }); } } return arr; }; const onSelect = (selectedKeys: any, info: any) => { let label = "全部" + props.text; if (info) { label = info.node.title; } props.onUpdate(selectedKeys, label); setSelectKey(selectedKeys); }; const onExpand = (selectedKeys: any, info: any) => { let label = "全部" + props.text; if (info) { label = info.node.title; } props.onUpdate(selectedKeys, label); setSelectKey(selectedKeys); }; return (
{ onSelect([], ""); }} > 全部{props.text} {JSON.stringify(props.categoryCount) !== "{}" && ( ({props.categoryCount["0"]}) )}
); };