import { Checkbox, Input, Pagination, Radio, Space } from 'antd';
import DepartSelect from '../DepartSelect/Controlled';
import { memo, useEffect, useState } from 'react';
import { useIntl, useRequest } from 'umi';
import { formatUserRender } from '../utils';
interface UserDepartProps {
type: 'User' | 'Depart';
data: { id: number }[];
}
const UserDepart = ({
disabled = false,
show = false,
appId,
value = { type: 'User', data: [] },
onChange,
}: {
disabled?: boolean;
show?: boolean;
appId: number;
value?: UserDepartProps;
onChange?: (value: UserDepartProps) => void;
}) => {
const [page, setPage] = useState(1);
const [size, setSize] = useState(10);
const [search, setSearch] = useState('');
const { formatMessage } = useIntl();
const { data, run } = useRequest(
{
url: '/goapi/app/users',
method: 'Post',
data: {
condition: {
appId: appId,
search,
},
pagination: {
page: page,
size: size,
},
},
},
{
manual: true,
debounceInterval: 800,
},
);
const UserList = () => {
return (
setSearch(e.target.value)}
/>
user.id - 0)}>
{data?.list?.map((user) => (
{
if (e.target.checked) {
onChange?.({ ...value, data: [...value?.data, { id: user.id }] });
} else {
onChange?.({
...value,
data: value?.data?.filter((item) => `${item.id}` !== `${user.id}`),
});
}
}}
>
{formatUserRender(user)}
))}
`${formatMessage({
id: 'components.ManageAdmin.userDepart.all',
})} ${total} ${formatMessage({ id: 'components.ManageAdmin.userDepart.item' })}`
}
pageSize={size}
current={page}
onChange={(current, pageSize) => {
setPage(current);
setSize(pageSize);
}}
/>
);
};
useEffect(() => {
if (show && value?.type === 'User') {
run();
}
}, [run, show, value, page, size, search]);
const DepartList = () => {
return (
depart.id)}
onChange={(ids) => {
onChange?.({
...value,
data: ids?.map((id) => ({ id })) as { id: number }[],
});
}}
/>
);
};
return (
onChange?.({ ...value, type: e.target.value, data: [] })}
>
{formatMessage({ id: 'components.ManageAdmin.userDepart.user' })}
{formatMessage({ id: 'components.ManageAdmin.userDepart.depart' })}
{value?.type === 'User' ? UserList() : DepartList()}
);
};
export default memo(UserDepart);