Account.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {
  2. ProForm,
  3. ProFormSelect,
  4. ProFormText,
  5. } from "@ant-design/pro-components";
  6. import { message } from "antd";
  7. import { get, put } from "../../request";
  8. import type { IUserApiData, IUserRequest, IUserResponse } from "../../api/Auth";
  9. import { useIntl } from "react-intl";
  10. interface IWidget {
  11. userId?: string;
  12. onLoad?: Function;
  13. }
  14. const AccountWidget = ({ userId, onLoad }: IWidget) => {
  15. const intl = useIntl();
  16. return (
  17. <ProForm<IUserApiData>
  18. onFinish={async (values: IUserApiData) => {
  19. console.log(values);
  20. const url = `/v2/user/${userId}`;
  21. const postData = {
  22. roles: values.role,
  23. };
  24. console.log("account put ", url, postData);
  25. const res = await put<IUserRequest, IUserResponse>(url, postData);
  26. if (res.ok) {
  27. message.success(intl.formatMessage({ id: "flashes.success" }));
  28. } else {
  29. message.error(res.message);
  30. }
  31. }}
  32. params={{}}
  33. request={async () => {
  34. const url = `/v2/user/${userId}`;
  35. console.log("url", url);
  36. const res = await get<IUserResponse>(url);
  37. if (res.ok) {
  38. if (typeof onLoad !== "undefined") {
  39. onLoad(res.data);
  40. }
  41. }
  42. return res.data;
  43. }}
  44. >
  45. <ProFormText width="md" readonly name="userName" label="User Name" />
  46. <ProFormText width="md" readonly name="nickName" label="Nick Name" />
  47. <ProFormText width="md" readonly name="email" label="Email" />
  48. <ProFormSelect
  49. options={["administrator", "member", "uploader", "basic"].map(
  50. (item) => {
  51. return {
  52. value: item,
  53. label: item,
  54. };
  55. }
  56. )}
  57. fieldProps={{
  58. mode: "tags",
  59. }}
  60. width="md"
  61. name="role"
  62. allowClear={true}
  63. label={intl.formatMessage({ id: "forms.fields.role.label" })}
  64. />
  65. </ProForm>
  66. );
  67. };
  68. export default AccountWidget;