import { request } from "@cqsjjb/jjb-common-lib/http.js";
import { useEffect, useState } from "react";
import { executeWithCache, getBaseGateway } from "../../../../utils";
import BasicLeftTree from "../../Basic";

/**
 * 部门左侧树组件（港务局版本）
 */
function DepartmentLeftTree(props) {
  const {
    params = {},
    searchType = "current",
    ...restProps
  } = props;

  const [treeData, setTreeData] = useState([]);

  const getData = async () => {
    let requestUrl = "";
    const actualParams = { ...params, time: new Date().getTime() };
    if (searchType === "current") {
      requestUrl = `/${getBaseGateway()}/department/listTree`;
      delete actualParams.inType;
      delete actualParams.enterpriseType;
    }
    if (searchType === "all") {
      requestUrl = `/${getBaseGateway()}/department/listAllTree`;
      delete actualParams.inType;
      delete actualParams.enterpriseType;
      delete actualParams.eqCorpinfoId;
      delete actualParams.eqParentId;
    }
    if (searchType === "inType") {
      requestUrl = `/${getBaseGateway()}/department/listAllTreeByCorpType`;
      delete actualParams.eqCorpinfoId;
      delete actualParams.eqParentId;
      if (actualParams.enterpriseType && !Array.isArray(actualParams.enterpriseType)) {
        actualParams.enterpriseType = [actualParams.enterpriseType];
      }
    }

    const cacheKey = { searchType, params };

    await executeWithCache(cacheKey, async () => {
      const { data } = await request(requestUrl, "post", actualParams);
      return data;
    }, setTreeData);
  };

  useEffect(() => {
    getData();
  }, []);

  return (
    <BasicLeftTree treeData={treeData} childrenKey="childrenList" {...restProps} />
  );
}

DepartmentLeftTree.displayName = "DepartmentLeftTree";

export default DepartmentLeftTree;
