GroupSelect.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { ProFormSelect } from "@ant-design/pro-components";
  2. import { useIntl } from "react-intl";
  3. import { get } from "../../request";
  4. import type { IGroupListResponse } from "../../api/Group";
  5. interface IWidget {
  6. name?: string;
  7. width?: number | "md" | "sm" | "xl" | "xs" | "lg";
  8. multiple?: boolean;
  9. hidden?: boolean;
  10. }
  11. const GroupSelectWidget = ({
  12. name = "user",
  13. multiple = false,
  14. width = "md",
  15. hidden = false,
  16. }: IWidget) => {
  17. const intl = useIntl();
  18. return (
  19. <ProFormSelect
  20. name={name}
  21. label={intl.formatMessage({ id: "group.fields.name.label" })}
  22. hidden={hidden}
  23. width={width}
  24. showSearch
  25. debounceTime={300}
  26. fieldProps={{
  27. mode: multiple ? "multiple" : undefined,
  28. }}
  29. request={async ({ keyWords }) => {
  30. const url = `/v2/group?view=all&search=${keyWords}`;
  31. console.log("group keyWord", url);
  32. const json = await get<IGroupListResponse>(url);
  33. const userList = json.data.rows.map((item) => {
  34. return {
  35. value: item.uid,
  36. label: `${item.studio.studioName}/${item.name}`,
  37. };
  38. });
  39. return userList;
  40. }}
  41. rules={[
  42. {
  43. required: true,
  44. },
  45. ]}
  46. />
  47. );
  48. };
  49. export default GroupSelectWidget;