ChannelCreate.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { ProForm, ProFormText } from "@ant-design/pro-components";
  2. import { useIntl } from "react-intl";
  3. import { message } from "antd";
  4. import ChannelTypeSelect from "./ChannelTypeSelect";
  5. import { post } from "../../../request";
  6. import { IApiResponseChannel } from "../../api/Channel";
  7. import LangSelect from "../LangSelect";
  8. interface IFormData {
  9. name: string;
  10. type: string;
  11. lang: string;
  12. studio: string;
  13. }
  14. type IWidgetChannelCreate = {
  15. studio: string | undefined;
  16. };
  17. const Widget = (prop: IWidgetChannelCreate) => {
  18. const intl = useIntl();
  19. return (
  20. <ProForm<IFormData>
  21. onFinish={async (values: IFormData) => {
  22. // TODO
  23. console.log(values);
  24. values.studio = prop.studio ? prop.studio : "";
  25. const res: IApiResponseChannel = await post(
  26. `/v2/channel`,
  27. values
  28. );
  29. console.log(res);
  30. if (res.ok) {
  31. message.success(
  32. intl.formatMessage({ id: "flashes.success" })
  33. );
  34. } else {
  35. message.error(res.message);
  36. }
  37. }}
  38. >
  39. <ProForm.Group>
  40. <ProFormText
  41. width="md"
  42. name="name"
  43. required
  44. label={intl.formatMessage({ id: "channel.name" })}
  45. rules={[
  46. {
  47. required: true,
  48. message: intl.formatMessage({
  49. id: "channel.create.message.noname",
  50. }),
  51. },
  52. ]}
  53. />
  54. </ProForm.Group>
  55. <ProForm.Group>
  56. <ChannelTypeSelect />
  57. <LangSelect />
  58. </ProForm.Group>
  59. </ProForm>
  60. );
  61. };
  62. export default Widget;