|  |  |  | 
|---|
|  |  |  | import request from '@/utils/request'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const DictionarySelect = (props) => { | 
|---|
|  |  |  | const { dictTypeCode, name, multiple = false, ...parmas } = props; | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | dictTypeCode, | 
|---|
|  |  |  | name, | 
|---|
|  |  |  | group, | 
|---|
|  |  |  | multiple = false, | 
|---|
|  |  |  | perPage = 100,  // 默认每页显示100条数据 | 
|---|
|  |  |  | page = 1,       // 默认第一页 | 
|---|
|  |  |  | ...parmas | 
|---|
|  |  |  | } = props; | 
|---|
|  |  |  | const translate = useTranslate(); | 
|---|
|  |  |  | const notify = useNotify(); | 
|---|
|  |  |  | const [list, setList] = useState([]) | 
|---|
|  |  |  | const [list, setList] = useState([]); | 
|---|
|  |  |  | const [loading, setLoading] = useState(false); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEffect(() => { | 
|---|
|  |  |  | http() | 
|---|
|  |  |  | }, [dictTypeCode]); | 
|---|
|  |  |  | http(); | 
|---|
|  |  |  | }, [dictTypeCode, page, perPage]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const http = async () => { | 
|---|
|  |  |  | const res = await request.post('/dictData/page', { dictTypeCode }); | 
|---|
|  |  |  | if (res?.data?.code === 200) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | setList(res.data.data.records.map((item) => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: item.value, | 
|---|
|  |  |  | name: item.label | 
|---|
|  |  |  | } | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | notify(res.data.msg); | 
|---|
|  |  |  | setLoading(true); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | const res = await request.post('/dictData/page', { | 
|---|
|  |  |  | dictTypeCode, | 
|---|
|  |  |  | group, | 
|---|
|  |  |  | current: page, | 
|---|
|  |  |  | pageSize: perPage | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (res?.data?.code === 200) { | 
|---|
|  |  |  | setList(res.data.data.records.map((item) => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: item.value, | 
|---|
|  |  |  | name: item.label | 
|---|
|  |  |  | } | 
|---|
|  |  |  | })); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | notify(res.data.msg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | notify('加载字典数据失败', 'error'); | 
|---|
|  |  |  | console.error('加载字典数据失败:', error); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | setLoading(false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const InputComponent = multiple ? SelectArrayInput : SelectInput; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <InputComponent | 
|---|
|  |  |  | source={name} | 
|---|
|  |  |  | choices={list} | 
|---|
|  |  |  | isLoading={loading} | 
|---|
|  |  |  | {...parmas} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|