|
@@ -1,36 +1,15 @@
|
1
|
1
|
import React, { useEffect, useMemo, useState, useCallback } from 'react'
|
2
|
|
-import { Icon, Upload, Modal } from 'antd'
|
|
2
|
+import { Icon, Upload, Button } from 'antd'
|
3
|
3
|
import { fetch, apis } from '@/utils/request'
|
4
|
4
|
|
5
|
5
|
const postMiniApp = fetch(apis.mp.miniapp)
|
6
|
6
|
|
7
|
|
-export default props => {
|
8
|
|
- const [previewVisible, setPreviewVisible] = useState(false)
|
9
|
|
- const [previewImage, setPreviewImage] = useState()
|
10
|
|
- const [imageUrl, setImageUrl] = useState()
|
11
|
|
- const [fileList, setFileList] = useState([])
|
12
|
|
-
|
13
|
|
- const uploadButton = useMemo(() => {
|
14
|
|
- return (
|
15
|
|
- <div>
|
16
|
|
- <Icon type="plus" />
|
17
|
|
- <div>Upload</div>
|
18
|
|
- </div>
|
19
|
|
- )
|
20
|
|
- }, [])
|
21
|
|
-
|
|
7
|
+export default props => {
|
22
|
8
|
const customRequest = useCallback(({file, onError, onSuccess}) => {
|
23
|
9
|
const data = new FormData()
|
24
|
10
|
data.append('file', file)
|
25
|
11
|
|
26
|
12
|
postMiniApp({ data }).then((res) => {
|
27
|
|
- setImageUrl(res.url)
|
28
|
|
- setFileList([{
|
29
|
|
- uid: '-1',
|
30
|
|
- name: 'image.png',
|
31
|
|
- status: 'done',
|
32
|
|
- url: res.url,
|
33
|
|
- }])
|
34
|
13
|
props.onChange(res)
|
35
|
14
|
onSuccess(res.url, file)
|
36
|
15
|
}).catch(onError)
|
|
@@ -42,32 +21,15 @@ export default props => {
|
42
|
21
|
}
|
43
|
22
|
}, [])
|
44
|
23
|
|
45
|
|
- useEffect(() => {
|
46
|
|
- if (props.value) {
|
47
|
|
- setFileList([{
|
48
|
|
- uid: '-1',
|
49
|
|
- name: 'image.png',
|
50
|
|
- status: 'done',
|
51
|
|
- url: props.value,
|
52
|
|
- }])
|
53
|
|
- }
|
54
|
|
- }, [props.value])
|
55
|
|
-
|
56
|
24
|
return (
|
57
|
25
|
<div>
|
58
|
26
|
<Upload
|
59
|
27
|
name="file"
|
60
|
28
|
accept=".jpg, .jpeg"
|
61
|
|
- listType="picture-card"
|
62
|
|
- fileList={fileList}
|
63
|
29
|
customRequest={customRequest}
|
64
|
|
- onPreview={() => setPreviewVisible(true)}
|
65
|
30
|
>
|
66
|
|
- {fileList.length >= 1 ? null : uploadButton}
|
|
31
|
+ <Button><Icon type="upload" /> 上传</Button>
|
67
|
32
|
</Upload>
|
68
|
|
- <Modal visible={previewVisible} footer={null} onCancel={() => setPreviewVisible(false)}>
|
69
|
|
- <img alt="" style={{ width: '100%' }} src={previewImage} />
|
70
|
|
- </Modal>
|
71
|
33
|
</div>
|
72
|
34
|
)
|
73
|
35
|
}
|