AddStudent.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { useIntl } from "react-intl";
  2. import { ProForm, ProFormSelect } from "@ant-design/pro-components";
  3. import { Button, message, Popover } from "antd";
  4. import { UserAddOutlined } from "@ant-design/icons";
  5. import { get } from "../../request";
  6. import type { IUserListResponse } from "../../api/Auth";
  7. interface IFormData {
  8. userId: string;
  9. }
  10. const AddStudentWidget = () => {
  11. const intl = useIntl();
  12. const form = (
  13. <ProForm<IFormData>
  14. onFinish={async (values: IFormData) => {
  15. console.log(values);
  16. message.success(intl.formatMessage({ id: "flashes.success" }));
  17. }}
  18. >
  19. <ProForm.Group>
  20. <ProFormSelect
  21. name="userId"
  22. label={intl.formatMessage({ id: "forms.fields.user.label" })}
  23. showSearch
  24. debounceTime={300}
  25. request={async ({ keyWord }) => {
  26. console.log("keyWord", keyWord);
  27. const json = await get<IUserListResponse>(`/v2/user?view=key&key=`);
  28. const userList = json.data.rows.map((item) => {
  29. return {
  30. value: item.id,
  31. label: `${item.userName}-${item.nickName}`,
  32. };
  33. });
  34. console.log("json", userList);
  35. return userList;
  36. }}
  37. placeholder={intl.formatMessage({ id: "forms.fields.user.required" })}
  38. rules={[
  39. {
  40. required: true,
  41. message: intl.formatMessage({
  42. id: "forms.message.user.required",
  43. }),
  44. },
  45. ]}
  46. />
  47. <ProFormSelect
  48. colProps={{ xl: 8, md: 12 }}
  49. name="userType"
  50. label={intl.formatMessage({ id: "forms.fields.type.label" })}
  51. valueEnum={{
  52. 3: intl.formatMessage({ id: "forms.fields.student.label" }),
  53. 2: intl.formatMessage({ id: "forms.fields.assistant.label" }),
  54. }}
  55. />
  56. </ProForm.Group>
  57. </ProForm>
  58. );
  59. return (
  60. <Popover placement="bottom" content={form} trigger="click">
  61. <Button icon={<UserAddOutlined />} key="add" type="primary">
  62. {intl.formatMessage({ id: "buttons.group.add.member" })}
  63. </Button>
  64. </Popover>
  65. );
  66. };
  67. export default AddStudentWidget;