Blame view

src/pages/mkt/ActivityCreate/BasicInformation/components/ImageUploader/index.tsx 6.61 KB
f52f21be   莫红玲   市场活动配置管理列表页面
1
2
3
  import React from 'react';
  import { Button, Card, message, Upload } from 'antd';
  import CardDetailPreview from '../CardDetailPreview';
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
4
  import { UploadOutlined } from '@ant-design/icons';
f52f21be   莫红玲   市场活动配置管理列表页面
5
  import { UploadProps, UploadFile, UploadChangeParam } from 'antd/lib/upload/interface';
f52f21be   莫红玲   市场活动配置管理列表页面
6
7
8
9
10
11
12
13
14
15
  import detailS from './index.less';
  import COS from "@/utils/COS";
  import { setFormData, stateTransforToStore, beforeUpload } from '@/pages/mkt/ActivityCreate/BasicInformation/entity';
  import ImgCropItem from '@/components/ImgCrop';
  import { getFidFile } from "@/utils";
  // import { useStore } from '../../index';
  import Form, { FormInstance } from 'antd/lib/form';
  
  interface Props {
    form: FormInstance,
42efb549   莫红玲   活动轮播图根据售前售后尺寸调整优化
16
17
    readOnly: boolean,
    bizType?: number
f52f21be   莫红玲   市场活动配置管理列表页面
18
19
20
21
  }
  
  const FormItem = Form.Item;
  
42efb549   莫红玲   活动轮播图根据售前售后尺寸调整优化
22
  export default function Detail({ form, readOnly, bizType }: Props) {
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
23
    const uploadProps: UploadProps = {
f52f21be   莫红玲   市场活动配置管理列表页面
24
      accept: "image/*",
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
25
26
27
      action: "/file/upload",
      // action: "/activity/util/file/uploadStatic",
      listType: "picture-card",
f52f21be   莫红玲   市场活动配置管理列表页面
28
29
      showUploadList: { showPreviewIcon: true, showRemoveIcon: !readOnly },
      disabled: readOnly,
4124acda   莫红玲   banner图限制1张
30
      // beforeUpload
f52f21be   莫红玲   市场活动配置管理列表页面
31
    };
95042a91   莫红玲   活动图片上传地址变更 腾讯云
32
33
34
35
    const ImageUploadProps: UploadProps = {
      accept: "image/*",
      // action: "/file/upload",
      // action: "/activity/util/file/uploadStatic",
4124acda   莫红玲   banner图限制1张
36
      listType: "picture-card",
95042a91   莫红玲   活动图片上传地址变更 腾讯云
37
38
39
40
41
42
      showUploadList: { showPreviewIcon: true, showRemoveIcon: !readOnly },
      customRequest: (data) => COS.cosUpload({ ...data, uploadPath: "/api/file/upload" }),
      disabled: readOnly,
      onPreview: (file) => onPreView(file, false),
      beforeUpload
    };
f52f21be   莫红玲   市场活动配置管理列表页面
43
44
45
46
47
48
49
  
    const onPreView = (file: UploadFile, isFid?: boolean) => {
      getFidFile(file.response.data, isFid);
    };
  
    const videoProps: UploadProps = {
      accept: "video/mp4",
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
50
      listType: "text",
25dde648   莫红玲   变更活动基础信息
51
      disabled: readOnly,
f52f21be   莫红玲   市场活动配置管理列表页面
52
53
54
55
56
57
58
59
60
61
62
63
64
65
      customRequest: (data) => COS.cosUpload({ ...data, uploadPath: "/api/file/upload" }),
      onPreview: (file) => onPreView(file, false),
      beforeUpload(file: any, fileList: any): boolean {
        if (file.type !== "video/mp4") {
          message.error("仅限传入 MP4 文件!");
          return false;
        }
        if (file.size / 1024 / 1024 > 50) {
          message.error("视频上传大小不能超过50MB!");
          return false;
        }
        return true;
      },
    };
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
66
67
68
69
70
  
    function valueFromEvent(e: any) {
      if (Array.isArray(e)) {
        return e;
      }
95042a91   莫红玲   活动图片上传地址变更 腾讯云
71
      const { status, response } = e.file;
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
72
73
74
75
76
77
78
      if (!e.file.status) {
        return [];
      }
      if (e.file.status == "error") {
        message.error("图片上传出错,请重新上传");
        return [];
      }
95042a91   莫红玲   活动图片上传地址变更 腾讯云
79
80
81
      if (status == "removed" && response) {
        COS.cosDelete({ filePath: response.data });
      }
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
82
83
84
85
86
87
88
89
      return e?.fileList;
    }
  
    const uploadButton = (
      <div>
        <Button icon={<UploadOutlined />}>上传</Button>
      </div>
    );
f52f21be   莫红玲   市场活动配置管理列表页面
90
91
92
    return (
      <Card
        type="inner"
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
93
        title="活动图片"
f52f21be   莫红玲   市场活动配置管理列表页面
94
95
96
        className={detailS.detailBox}
      >
        <div className={detailS.left}>
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
97
          <ImgCropItem
4124acda   莫红玲   banner图限制1张
98
            // multiple
ff7b0afa   莫红玲   活动图片上传提示优化
99
            required
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
100
            fidFile
42efb549   莫红玲   活动轮播图根据售前售后尺寸调整优化
101
            label="活动轮播图"
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
102
103
104
            name="bannerId"
            labelCol={{ span: 4 }}
            form={form}
42efb549   莫红玲   活动轮播图根据售前售后尺寸调整优化
105
106
            extra={
              <div style={{ fontSize: 10 }}>
2dbde97d   莫红玲   活动轮播图大小调整
107
                <p style={{ margin: 0 }}>(售前)建议宽高尺寸: 750*750;</p>
42efb549   莫红玲   活动轮播图根据售前售后尺寸调整优化
108
109
110
                <p style={{ margin: 0 }}>(售后)建议宽高尺寸: 670*240</p>
              </div>
            }
2dbde97d   莫红玲   活动轮播图大小调整
111
            aspectXY={bizType == 2 ? { width: 670, height: 240 } : { width: 750, height: 750 }}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
112
113
114
            // setFormStorage={setFormStorage}
            {...uploadProps}
          >
ff7b0afa   莫红玲   活动图片上传提示优化
115
            {!readOnly ? uploadButton : null}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
116
117
118
119
          </ImgCropItem>
  
          <FormItem
            name="bgId"
ff7b0afa   莫红玲   活动图片上传提示优化
120
            required
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
121
122
            label="活动主图"
            labelCol={{ span: 4 }}
ff7b0afa   莫红玲   活动图片上传提示优化
123
124
125
126
127
128
            extra={
              <div style={{ fontSize: 10 }}>
                <div>活动概括,用于活动列表展示,(建议尺寸 750*520)</div>
                <div>图片格式要求png、jpg、gif、jpeg,大小限制 5 MB 以内</div>
              </div>
            }
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
129
130
131
132
            valuePropName="fileList"
            getValueFromEvent={valueFromEvent}
          >
            <Upload
95042a91   莫红玲   活动图片上传地址变更 腾讯云
133
134
              maxCount={1}
              {...ImageUploadProps}
f52f21be   莫红玲   市场活动配置管理列表页面
135
            >
ff7b0afa   莫红玲   活动图片上传提示优化
136
              {!readOnly ? uploadButton : null}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
137
            </Upload>
f52f21be   莫红玲   市场活动配置管理列表页面
138
139
140
141
          </FormItem>
  
          <FormItem
            labelCol={{ span: 4 }}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
142
143
            name="videoId"
            label="活动视频"
f52f21be   莫红玲   市场活动配置管理列表页面
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
            extra="视频格式要求 MP4,大小限制 50 MB 以内"
            valuePropName="fileList"
            getValueFromEvent={(e) => {
              if (Array.isArray(e)) {
                return e;
              }
              const { status, response } = e.file;
              if (!status) {
                return [];
              }
              if (status == "error") {
                message.error("视频上传出错,请重新上传");
                return [];
              }
              if (status == "removed" && response) {
                COS.cosDelete({ filePath: response.data });
              }
              return e && e.fileList;
            }}
          >
b89ffacc   莫红玲   活动视频限制1
164
            <Upload maxCount={1} multiple {...videoProps}>
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
165
              {uploadButton}
f52f21be   莫红玲   市场活动配置管理列表页面
166
167
168
169
            </Upload>
          </FormItem>
  
          <FormItem
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
170
171
            name="content"
            label="图文详情"
ff7b0afa   莫红玲   活动图片上传提示优化
172
            required
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
173
            labelCol={{ span: 4 }}
ff7b0afa   莫红玲   活动图片上传提示优化
174
175
176
177
178
179
            extra={
              <div style={{ fontSize: 10 }}>
                <div>图文详情一般上传活动规则,时间,流程等内容,可以多张(建议尺寸 750*任意高)</div>
                <div>图片格式要求png、jpg、gif、jpeg,大小限制 5 MB 以内</div>
              </div>
            }
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
180
181
182
183
184
            valuePropName="fileList"
            getValueFromEvent={valueFromEvent}
          >
            <Upload
              multiple
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
185
              maxCount={10}
95042a91   莫红玲   活动图片上传地址变更 腾讯云
186
              {...ImageUploadProps}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
187
            >
ff7b0afa   莫红玲   活动图片上传提示优化
188
              {!readOnly ? uploadButton : null}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
189
190
191
192
193
194
            </Upload>
          </FormItem>
  
          <FormItem
            name="shareId"
            label="分享图"
ff7b0afa   莫红玲   活动图片上传提示优化
195
            required
f52f21be   莫红玲   市场活动配置管理列表页面
196
            labelCol={{ span: 4 }}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
197
198
            extra={
              <>
ff7b0afa   莫红玲   活动图片上传提示优化
199
                <span style={{ fontSize: 10 }}>建议尺寸 750*1206</span>
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
200
201
              </>
            }
f52f21be   莫红玲   市场活动配置管理列表页面
202
            valuePropName="fileList"
95042a91   莫红玲   活动图片上传地址变更 腾讯云
203
            getValueFromEvent={valueFromEvent}
f52f21be   莫红玲   市场活动配置管理列表页面
204
205
          >
            <Upload
95042a91   莫红玲   活动图片上传地址变更 腾讯云
206
207
208
209
210
              // accept="image/*"
              // listType="picture"
              // action="/api/file/upload"
              // beforeUpload={beforeUpload}
              // onPreview={(file: UploadFile) => onPreView(file, true)}
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
211
              maxCount={1}
95042a91   莫红玲   活动图片上传地址变更 腾讯云
212
              {...ImageUploadProps}
f52f21be   莫红玲   市场活动配置管理列表页面
213
            >
ff7b0afa   莫红玲   活动图片上传提示优化
214
              {!readOnly ? uploadButton : null}
f52f21be   莫红玲   市场活动配置管理列表页面
215
216
            </Upload>
          </FormItem>
f52f21be   莫红玲   市场活动配置管理列表页面
217
218
        </div>
        <div className={detailS.right}>
457b0b6b   莫红玲   活动基础内容对接接口,图片上传裁剪...
219
          <CardDetailPreview form={form} />
f52f21be   莫红玲   市场活动配置管理列表页面
220
221
222
223
        </div>
      </Card>
    );
  }