| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 | | import { chooseMedia, ChooseMediaOptions, ChooseFileItem } from '@12333/utils'; |  | import _ from 'lodash'; |  | import Taro from '@tarojs/taro'; |  | import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type'; |  | import { ref } from 'vue'; |  |   |  | export type UseChooseOptions = { |  |   defaultFileList?: FileItem[]; |  | }; |  |   |  | export function useChooseMedia(options: UseChooseOptions = {}) { |  |   const { defaultFileList = [] } = options; |  |   const innerFiles = ref<ChooseFileItem[]>( |  |     defaultFileList.map((x) => ({ |  |       ...x, |  |       previewUrl: x.url, |  |     })) |  |   ); |  |   |  |   function choose(chooseOptions: ChooseMediaOptions) { |  |     chooseMedia({ |  |       ...chooseOptions, |  |       onSuccess(result, ossRes, { file }) { |  |         innerFiles.value = innerFiles.value.map((x) => { |  |           if (x.uid === file.uid) { |  |             // console.log('file: ', file); |  |             // console.log('ossRes.url: ', ossRes.url); |  |             return { |  |               ...x, |  |               status: 'success', |  |               message: 'success', |  |               url: ossRes.url, |  |               path: ossRes.path, |  |             }; |  |           } else { |  |             return { ...x }; |  |           } |  |         }); |  |       }, |  |       onStart(fileList) { |  |         // console.log('fileList: ', fileList); |  |         innerFiles.value.push(...fileList); |  |       }, |  |       onFail(e, { file }) { |  |         innerFiles.value = innerFiles.value.map((x) => { |  |           if (x.uid === file.uid) { |  |             return { |  |               ...x, |  |               status: 'error', |  |               message: '上传失败', |  |             }; |  |           } else { |  |             return { ...x }; |  |           } |  |         }); |  |       }, |  |     }); |  |   } |  |   |  |   const actions = { |  |     remove: (index: number) => { |  |       innerFiles.value = innerFiles.value.filter((_, i) => i != index); |  |     }, |  |   }; |  |   |  |   return { |  |     files: innerFiles, |  |     choose, |  |     actions, |  |   }; |  | } | 
 |