index.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import { FormPageFooter, MemoSpinLoding } from "@/components";
  2. import {
  3. DageUpload,
  4. DageUploadConsumer,
  5. DageUploadProvider,
  6. DageUploadType,
  7. } from "@dage/pc-components";
  8. import { DatePicker, Form, FormInstance, Input } from "antd";
  9. import { useCallback, useRef, useState } from "react";
  10. import { useNavigate, useParams } from "react-router-dom";
  11. import RichText from "@/components/Z_RichText";
  12. export default function InformationCreateOrEditPage() {
  13. const formRef = useRef<FormInstance>(null);
  14. const navigate = useNavigate();
  15. const params = useParams();
  16. const [loading, setLoading] = useState(false);
  17. const richTxtRef = useRef<any>(null);
  18. const [check, setCheck] = useState(false);
  19. // 文件的code码
  20. const [dirCode, setDirCode] = useState("");
  21. const handleCancel = useCallback(() => {
  22. navigate(-1);
  23. }, [navigate]);
  24. const handleSubmit = useCallback(async () => {
  25. if (!(await formRef.current?.validateFields())) return;
  26. const { banner = [], ...rest } = formRef.current?.getFieldsValue();
  27. if (params.id) {
  28. rest.id = params.id;
  29. }
  30. handleCancel();
  31. }, [handleCancel, params]);
  32. return (
  33. <div style={{ position: "relative" }}>
  34. {loading && <MemoSpinLoding />}
  35. <DageUploadProvider>
  36. <DageUploadConsumer>
  37. {(data) => (
  38. <>
  39. <Form ref={formRef} labelCol={{ span: 2 }}>
  40. <Form.Item
  41. label="标题"
  42. name="title"
  43. rules={[{ required: true, message: "请输入内容" }]}
  44. >
  45. <Input
  46. className="w220"
  47. placeholder="请输入内容,最多20字"
  48. maxLength={20}
  49. showCount
  50. />
  51. </Form.Item>
  52. <Form.Item
  53. label="正文"
  54. name="content"
  55. rules={[{ required: true, message: "请输入正文" }]}
  56. >
  57. <RichText
  58. myUrl="cms/goods/upload"
  59. ref={richTxtRef}
  60. check={check}
  61. dirCode={dirCode}
  62. isLook={false}
  63. />
  64. </Form.Item>
  65. <Form.Item
  66. label="发布日期"
  67. name="date"
  68. rules={[{ required: true, message: "请选择发布日期" }]}
  69. >
  70. <DatePicker className="w220" />
  71. </Form.Item>
  72. <Form.Item
  73. label="封面图"
  74. name="banner"
  75. rules={[{ required: true, message: "请上传封面图" }]}
  76. >
  77. <DageUpload
  78. tips="支持png、jpg和jpeg格式;最多1张,最大20M"
  79. action={
  80. process.env.REACT_APP_API_URL + "/api/cms/history/upload"
  81. }
  82. maxSize={20}
  83. maxCount={1}
  84. />
  85. </Form.Item>
  86. <Form.Item label="视频" name="video">
  87. <DageUpload
  88. dType={DageUploadType.VIDEO}
  89. tips="支持avi,mp4,mkv,wmv等格式;最大200M,最多1个"
  90. action={
  91. process.env.REACT_APP_API_URL + "/api/cms/history/upload"
  92. }
  93. maxSize={200}
  94. maxCount={1}
  95. />
  96. </Form.Item>
  97. </Form>
  98. {!loading && (
  99. <FormPageFooter
  100. disabled={data?.uploading}
  101. onSubmit={handleSubmit}
  102. onCancel={handleCancel}
  103. />
  104. )}
  105. </>
  106. )}
  107. </DageUploadConsumer>
  108. </DageUploadProvider>
  109. </div>
  110. );
  111. }