2026-01-06 15:24:18 +08:00
|
|
|
import { request } from "@cqsjjb/jjb-common-lib/http.js";
|
2025-11-08 12:07:29 +08:00
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
import { DICTIONARY_APP_KEY_ENUM } from "../../../enum/dictionary";
|
2026-05-07 15:00:41 +08:00
|
|
|
import { executeWithCache } from "../../../utils";
|
2025-11-08 12:07:29 +08:00
|
|
|
import BasicSelect from "../Basic";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 数据字典下拉组件
|
|
|
|
|
*/
|
|
|
|
|
function DictionarySelect(props) {
|
|
|
|
|
const {
|
|
|
|
|
appKey = DICTIONARY_APP_KEY_ENUM.DEFAULT,
|
|
|
|
|
dictValue = "",
|
|
|
|
|
nameKey = "dictLabel",
|
|
|
|
|
idKey = "dictValue",
|
|
|
|
|
...restProps
|
|
|
|
|
} = props;
|
|
|
|
|
|
|
|
|
|
const [data, setData] = useState([]);
|
|
|
|
|
|
|
|
|
|
const getData = async () => {
|
2025-12-20 16:42:46 +08:00
|
|
|
if (!Object.values(DICTIONARY_APP_KEY_ENUM).includes(appKey)) {
|
2026-01-13 09:05:08 +08:00
|
|
|
console.error(`【DictionarySelect】 传入的 appKey 不在 DICTIONARY_APP_KEY_ENUM 中,当前传入的 appKey 是 ${appKey}`);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!dictValue) {
|
|
|
|
|
console.error(`【DictionarySelect】 缺少 dictValue 参数`);
|
2025-12-20 16:42:46 +08:00
|
|
|
return;
|
|
|
|
|
}
|
2025-11-08 12:07:29 +08:00
|
|
|
|
2026-05-07 15:00:41 +08:00
|
|
|
const cacheKey = { appKey, dictValue };
|
2026-05-07 14:34:37 +08:00
|
|
|
|
2026-05-07 15:00:41 +08:00
|
|
|
await executeWithCache(cacheKey, async () => {
|
|
|
|
|
const { data } = await request("/config/dict-trees/list/by/dictValues", "get", { appKey, dictValue });
|
|
|
|
|
return data;
|
|
|
|
|
}, setData);
|
2025-11-08 12:07:29 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
2026-02-06 15:52:51 +08:00
|
|
|
getData();
|
2025-11-08 12:07:29 +08:00
|
|
|
}, [dictValue]);
|
|
|
|
|
|
|
|
|
|
return (
|
2025-11-10 16:00:14 +08:00
|
|
|
<BasicSelect data={data} nameKey={nameKey} idKey={idKey} {...restProps} />
|
2025-11-08 12:07:29 +08:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DictionarySelect.displayName = "DictionarySelect";
|
|
|
|
|
|
|
|
|
|
export default DictionarySelect;
|