diff --git a/components/SelectTree/HiddenLevel/Gwj/index.d.ts b/components/SelectTree/HiddenLevel/Gwj/index.d.ts new file mode 100644 index 0000000..893abff --- /dev/null +++ b/components/SelectTree/HiddenLevel/Gwj/index.d.ts @@ -0,0 +1,21 @@ +import type { FC } from "react"; +import type { BasicSelectTreeProps } from "../../Basic"; + +/** + * 组件属性 + */ +export interface HiddenLevelSelectTreeProps extends Omit { + /** 是否显示忽略隐患,默认 true */ + isShowNeglect?: boolean; + /** 是否显示较大隐患,默认 true */ + isShowLarger?: boolean; + /** 是否显示重大隐患,默认 true */ + isShowMajor?: boolean; +} + +/** + * 隐患级别下拉树组件(港务局版本) + */ +declare const HiddenLevelSelectTree: FC; + +export default HiddenLevelSelectTree; diff --git a/components/SelectTree/HiddenLevel/Gwj/index.js b/components/SelectTree/HiddenLevel/Gwj/index.js new file mode 100644 index 0000000..942c940 --- /dev/null +++ b/components/SelectTree/HiddenLevel/Gwj/index.js @@ -0,0 +1,72 @@ +import { request } from "@cqsjjb/jjb-common-lib/http"; +import { useEffect, useState } from "react"; +import { DICTIONARY_APP_KEY_ENUM } from "../../../../enum/dictionary"; +import BasicSelectTree from "../../Basic"; + +/** + * 隐患级别下拉树组件(港务局版本) + */ +function HiddenLevelSelectTree(props) { + const { + isShowNeglect = true, + isShowLarger = true, + isShowMajor = true, + ...restProps + } = props; + + const [treeData, setTreeData] = useState([]); + + // 过滤隐患级别的树数据 + const filterTreeData = (treeData) => { + // 隐患级别的特定ID + const HIDDEN_LEVEL_IDS = { + neglect: "hiddenLevel1001", // 忽略隐患 + larger: "jdyh001", // 较大隐患 + major: "hiddenLevel0002", // 重大隐患 + }; + + // 递归过滤树数据 + const filterTree = (nodes) => { + if (!nodes || !Array.isArray(nodes)) + return []; + + return nodes.filter((node) => { + // 根据不同的ID和对应的props来决定是否显示 + if (node.dictValue === HIDDEN_LEVEL_IDS.neglect) + return isShowNeglect; + if (node.dictValue === HIDDEN_LEVEL_IDS.larger) + return isShowLarger; + if (node.dictValue === HIDDEN_LEVEL_IDS.major) + return isShowMajor; + + // 如果有子节点,递归过滤子节点 + if (node.children && node.children.length > 0) + node.children = filterTree(node.children); + + // 默认显示其他节点 + return true; + }); + }; + + return filterTree(treeData); + }; + + const getData = async () => { + setTreeData([]); + const { data } = await request("/config/dict-trees/list/by/dictValues", "get", { appKey: DICTIONARY_APP_KEY_ENUM.GWJ, dictValue: "hiddenLevel" }); + const filterData = filterTreeData(data); + setTreeData(filterData); + }; + + useEffect(() => { + getData(); + }, []); + + return ( + + ); +} + +HiddenLevelSelectTree.displayName = "HiddenLevelSelectTree"; + +export default HiddenLevelSelectTree;