@zkwq/business 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/package.json +2 -2
  2. package/src/components/base/ui/alert/Alert.vue +0 -94
  3. package/src/components/base/ui/autocomplete/autocomplete-suggestions.vue +0 -77
  4. package/src/components/base/ui/autocomplete/autocomplete.vue +0 -305
  5. package/src/components/base/ui/backtop/main.vue +0 -112
  6. package/src/components/base/ui/button/Button.vue +0 -84
  7. package/src/components/base/ui/button/ButtonGroup.vue +0 -10
  8. package/src/components/base/ui/carousel/Carousel.vue +0 -304
  9. package/src/components/base/ui/carousel/CarouselItem.vue +0 -137
  10. package/src/components/base/ui/cascader/cascader.vue +0 -650
  11. package/src/components/base/ui/cascader-panel/cascader-menu.vue +0 -138
  12. package/src/components/base/ui/cascader-panel/cascader-node.vue +0 -246
  13. package/src/components/base/ui/cascader-panel/cascader-panel.vue +0 -382
  14. package/src/components/base/ui/cascader-panel/node.js +0 -166
  15. package/src/components/base/ui/cascader-panel/store.js +0 -62
  16. package/src/components/base/ui/checkbox/checkbox-button.vue +0 -199
  17. package/src/components/base/ui/checkbox/checkbox-group.vue +0 -48
  18. package/src/components/base/ui/checkbox/checkbox.vue +0 -222
  19. package/src/components/base/ui/col/col.js +0 -71
  20. package/src/components/base/ui/collapse/collapse-item.vue +0 -180
  21. package/src/components/base/ui/collapse/collapse.vue +0 -73
  22. package/src/components/base/ui/color-picker/color.js +0 -317
  23. package/src/components/base/ui/color-picker/components/alpha-slider.vue +0 -132
  24. package/src/components/base/ui/color-picker/components/hue-slider.vue +0 -123
  25. package/src/components/base/ui/color-picker/components/picker-dropdown.vue +0 -119
  26. package/src/components/base/ui/color-picker/components/predefine.vue +0 -61
  27. package/src/components/base/ui/color-picker/components/sv-panel.vue +0 -100
  28. package/src/components/base/ui/color-picker/draggable.js +0 -36
  29. package/src/components/base/ui/color-picker/index.js +0 -2
  30. package/src/components/base/ui/color-picker/main.vue +0 -188
  31. package/src/components/base/ui/date-picker/basic/date-table.vue +0 -441
  32. package/src/components/base/ui/date-picker/basic/month-table.vue +0 -254
  33. package/src/components/base/ui/date-picker/basic/time-spinner.vue +0 -304
  34. package/src/components/base/ui/date-picker/basic/year-table.vue +0 -101
  35. package/src/components/base/ui/date-picker/panel/date-range.vue +0 -680
  36. package/src/components/base/ui/date-picker/panel/date.vue +0 -597
  37. package/src/components/base/ui/date-picker/panel/month-range.vue +0 -289
  38. package/src/components/base/ui/date-picker/panel/time-range.vue +0 -248
  39. package/src/components/base/ui/date-picker/panel/time-select.vue +0 -178
  40. package/src/components/base/ui/date-picker/panel/time.vue +0 -186
  41. package/src/components/base/ui/date-picker/picker/date-picker.js +0 -43
  42. package/src/components/base/ui/date-picker/picker/time-picker.js +0 -39
  43. package/src/components/base/ui/date-picker/picker/time-select.js +0 -21
  44. package/src/components/base/ui/date-picker/picker.vue +0 -942
  45. package/src/components/base/ui/dialog/Index.vue +0 -212
  46. package/src/components/base/ui/directive/repeat-click.js +0 -24
  47. package/src/components/base/ui/directive/ripple.js +0 -303
  48. package/src/components/base/ui/divider/Divider.vue +0 -37
  49. package/src/components/base/ui/drawer/Drawer.vue +0 -202
  50. package/src/components/base/ui/dropdown/dropdown-item.vue +0 -39
  51. package/src/components/base/ui/dropdown/dropdown-menu.vue +0 -63
  52. package/src/components/base/ui/dropdown/dropdown.vue +0 -308
  53. package/src/components/base/ui/form/Form.vue +0 -167
  54. package/src/components/base/ui/form/FormItem.vue +0 -334
  55. package/src/components/base/ui/form/LabelWrap.vue +0 -69
  56. package/src/components/base/ui/icon/icon.vue +0 -13
  57. package/src/components/base/ui/image/image-viewer.vue +0 -302
  58. package/src/components/base/ui/image/main.vue +0 -248
  59. package/src/components/base/ui/index.js +0 -189
  60. package/src/components/base/ui/input/Input.vue +0 -438
  61. package/src/components/base/ui/input/calcTextareaHeight.js +0 -104
  62. package/src/components/base/ui/input-number/input-number.vue +0 -285
  63. package/src/components/base/ui/locale/format.js +0 -32
  64. package/src/components/base/ui/locale/index.js +0 -48
  65. package/src/components/base/ui/locale/lang/zh-CN.js +0 -120
  66. package/src/components/base/ui/menu/menu-item-group.vue +0 -45
  67. package/src/components/base/ui/menu/menu-item.vue +0 -112
  68. package/src/components/base/ui/menu/menu-mixin.js +0 -44
  69. package/src/components/base/ui/menu/menu.vue +0 -312
  70. package/src/components/base/ui/menu/submenu.vue +0 -408
  71. package/src/components/base/ui/message/index.js +0 -2
  72. package/src/components/base/ui/message/main.js +0 -87
  73. package/src/components/base/ui/message/main.vue +0 -110
  74. package/src/components/base/ui/message-box/main.js +0 -216
  75. package/src/components/base/ui/message-box/main.vue +0 -323
  76. package/src/components/base/ui/mixin/emitter.js +0 -31
  77. package/src/components/base/ui/mixin/focus.js +0 -9
  78. package/src/components/base/ui/mixin/locale.js +0 -9
  79. package/src/components/base/ui/mixin/migrating.js +0 -33
  80. package/src/components/base/ui/pagination/pager.vue +0 -163
  81. package/src/components/base/ui/pagination/pagination.jsx +0 -391
  82. package/src/components/base/ui/popover/directive.js +0 -20
  83. package/src/components/base/ui/popover/index.js +0 -14
  84. package/src/components/base/ui/popover/main.vue +0 -236
  85. package/src/components/base/ui/progress/Progress.vue +0 -227
  86. package/src/components/base/ui/radio/radio-button.vue +0 -114
  87. package/src/components/base/ui/radio/radio-group.vue +0 -111
  88. package/src/components/base/ui/radio/radio.vue +0 -134
  89. package/src/components/base/ui/row/row.js +0 -47
  90. package/src/components/base/ui/scrollbar/bar.jsx +0 -91
  91. package/src/components/base/ui/scrollbar/index.jsx +0 -203
  92. package/src/components/base/ui/scrollbar/util.js +0 -32
  93. package/src/components/base/ui/select/Option.vue +0 -168
  94. package/src/components/base/ui/select/OptionGroup.vue +0 -60
  95. package/src/components/base/ui/select/Select.vue +0 -920
  96. package/src/components/base/ui/select/SelectDropdown.vue +0 -74
  97. package/src/components/base/ui/select/navigation-mixin.js +0 -54
  98. package/src/components/base/ui/skeleton/index.js +0 -8
  99. package/src/components/base/ui/skeleton/src/img-placeholder.vue +0 -16
  100. package/src/components/base/ui/skeleton/src/index.vue +0 -80
  101. package/src/components/base/ui/skeleton/src/item.vue +0 -22
  102. package/src/components/base/ui/skeleton-item/index.js +0 -8
  103. package/src/components/base/ui/slider/button.vue +0 -238
  104. package/src/components/base/ui/slider/main.vue +0 -427
  105. package/src/components/base/ui/slider/marker.js +0 -18
  106. package/src/components/base/ui/style/alert.scss +0 -147
  107. package/src/components/base/ui/style/animations.scss +0 -65
  108. package/src/components/base/ui/style/autocomplete.scss +0 -81
  109. package/src/components/base/ui/style/backtop.scss +0 -20
  110. package/src/components/base/ui/style/button-group.scss +0 -0
  111. package/src/components/base/ui/style/button.scss +0 -380
  112. package/src/components/base/ui/style/carousel-item.scss +0 -50
  113. package/src/components/base/ui/style/carousel.scss +0 -161
  114. package/src/components/base/ui/style/cascader-panel.scss +0 -120
  115. package/src/components/base/ui/style/cascader.scss +0 -185
  116. package/src/components/base/ui/style/checkbox-button.scss +0 -0
  117. package/src/components/base/ui/style/checkbox-group.scss +0 -0
  118. package/src/components/base/ui/style/checkbox.scss +0 -360
  119. package/src/components/base/ui/style/col.scss +0 -156
  120. package/src/components/base/ui/style/collapse-item.scss +0 -0
  121. package/src/components/base/ui/style/collapse.scss +0 -114
  122. package/src/components/base/ui/style/color-picker.scss +0 -387
  123. package/src/components/base/ui/style/config.scss +0 -4
  124. package/src/components/base/ui/style/date-picker/date-picker.scss +0 -97
  125. package/src/components/base/ui/style/date-picker/date-range-picker.scss +0 -101
  126. package/src/components/base/ui/style/date-picker/date-table.scss +0 -151
  127. package/src/components/base/ui/style/date-picker/month-table.scss +0 -82
  128. package/src/components/base/ui/style/date-picker/picker-panel.scss +0 -117
  129. package/src/components/base/ui/style/date-picker/picker.scss +0 -197
  130. package/src/components/base/ui/style/date-picker/time-picker.scss +0 -85
  131. package/src/components/base/ui/style/date-picker/time-range-picker.scss +0 -31
  132. package/src/components/base/ui/style/date-picker/time-spinner.scss +0 -110
  133. package/src/components/base/ui/style/date-picker/year-table.scss +0 -51
  134. package/src/components/base/ui/style/date-picker.scss +0 -12
  135. package/src/components/base/ui/style/dialog.scss +0 -123
  136. package/src/components/base/ui/style/divider.scss +0 -47
  137. package/src/components/base/ui/style/drawer.scss +0 -218
  138. package/src/components/base/ui/style/dropdown-item.scss +0 -0
  139. package/src/components/base/ui/style/dropdown-menu.scss +0 -0
  140. package/src/components/base/ui/style/dropdown.scss +0 -185
  141. package/src/components/base/ui/style/form-item.scss +0 -0
  142. package/src/components/base/ui/style/form.scss +0 -203
  143. package/src/components/base/ui/style/function.scss +0 -43
  144. package/src/components/base/ui/style/icon.scss +0 -1167
  145. package/src/components/base/ui/style/image.scss +0 -184
  146. package/src/components/base/ui/style/index.scss +0 -57
  147. package/src/components/base/ui/style/input-number.scss +0 -187
  148. package/src/components/base/ui/style/input.scss +0 -477
  149. package/src/components/base/ui/style/menu-item-group.scss +0 -0
  150. package/src/components/base/ui/style/menu-item.scss +0 -0
  151. package/src/components/base/ui/style/menu.scss +0 -294
  152. package/src/components/base/ui/style/message-box.scss +0 -231
  153. package/src/components/base/ui/style/message.scss +0 -120
  154. package/src/components/base/ui/style/mixins.scss +0 -196
  155. package/src/components/base/ui/style/option-group.scss +0 -42
  156. package/src/components/base/ui/style/option.scss +0 -36
  157. package/src/components/base/ui/style/pagination.scss +0 -295
  158. package/src/components/base/ui/style/popover.scss +0 -40
  159. package/src/components/base/ui/style/popper.scss +0 -102
  160. package/src/components/base/ui/style/popup.scss +0 -42
  161. package/src/components/base/ui/style/progress.scss +0 -141
  162. package/src/components/base/ui/style/radio-button.scss +0 -113
  163. package/src/components/base/ui/style/radio-group.scss +0 -9
  164. package/src/components/base/ui/style/radio.scss +0 -203
  165. package/src/components/base/ui/style/ripple.scss +0 -35
  166. package/src/components/base/ui/style/row.scss +0 -39
  167. package/src/components/base/ui/style/scrollbar.scss +0 -75
  168. package/src/components/base/ui/style/select-dropdown.scss +0 -59
  169. package/src/components/base/ui/style/select.scss +0 -154
  170. package/src/components/base/ui/style/skeleton-item.scss +0 -84
  171. package/src/components/base/ui/style/skeleton.scss +0 -40
  172. package/src/components/base/ui/style/slider.scss +0 -250
  173. package/src/components/base/ui/style/switch.scss +0 -116
  174. package/src/components/base/ui/style/tabs.scss +0 -602
  175. package/src/components/base/ui/style/tag.scss +0 -174
  176. package/src/components/base/ui/style/tooltip.scss +0 -146
  177. package/src/components/base/ui/style/transition.scss +0 -138
  178. package/src/components/base/ui/style/upload.scss +0 -603
  179. package/src/components/base/ui/style/utils.scss +0 -39
  180. package/src/components/base/ui/style/var.scss +0 -1011
  181. package/src/components/base/ui/switch/index.vue +0 -174
  182. package/src/components/base/ui/tabs/tab-bar.vue +0 -57
  183. package/src/components/base/ui/tabs/tab-nav.vue +0 -294
  184. package/src/components/base/ui/tabs/tab-pane.vue +0 -56
  185. package/src/components/base/ui/tabs/tabs.vue +0 -191
  186. package/src/components/base/ui/tag/Tag.vue +0 -60
  187. package/src/components/base/ui/tooltip/tooltip.jsx +0 -234
  188. package/src/components/base/ui/upload/Index.vue +0 -340
  189. package/src/components/base/ui/upload/Upload.vue +0 -216
  190. package/src/components/base/ui/upload/UploadDragger.vue +0 -70
  191. package/src/components/base/ui/upload/UploadList.vue +0 -100
  192. package/src/components/base/ui/upload/ajax.js +0 -85
  193. package/src/components/base/ui/util/aria-dialog.js +0 -90
  194. package/src/components/base/ui/util/aria-utils.js +0 -122
  195. package/src/components/base/ui/util/clickoutside.js +0 -76
  196. package/src/components/base/ui/util/date-util.js +0 -292
  197. package/src/components/base/ui/util/date.js +0 -355
  198. package/src/components/base/ui/util/debounce.js +0 -21
  199. package/src/components/base/ui/util/deepmerge.js +0 -100
  200. package/src/components/base/ui/util/dom.js +0 -215
  201. package/src/components/base/ui/util/index.js +0 -262
  202. package/src/components/base/ui/util/menu/aria-menubar.js +0 -14
  203. package/src/components/base/ui/util/menu/aria-menuitem.js +0 -49
  204. package/src/components/base/ui/util/menu/aria-submenu.js +0 -59
  205. package/src/components/base/ui/util/merge.js +0 -14
  206. package/src/components/base/ui/util/popper.js +0 -1235
  207. package/src/components/base/ui/util/popup/index.js +0 -218
  208. package/src/components/base/ui/util/popup/popup-manager.js +0 -194
  209. package/src/components/base/ui/util/resize-events.js +0 -32
  210. package/src/components/base/ui/util/scroll-into-view.js +0 -27
  211. package/src/components/base/ui/util/scrollbar-width.js +0 -29
  212. package/src/components/base/ui/util/shared.js +0 -7
  213. package/src/components/base/ui/util/throttle.js +0 -91
  214. package/src/components/base/ui/util/types.js +0 -24
  215. package/src/components/base/ui/util/vdom.js +0 -5
  216. package/src/components/base/ui/util/vue-popper.js +0 -188
  217. package/src/components/normal/AggsItemH.vue +0 -145
  218. package/src/index.js +0 -10
  219. package/src/static/base-icons.ttf +0 -0
  220. package/src/static/base-icons.woff +0 -0
  221. package/src/static/label_bg.png +0 -0
  222. package/src/static/term-label-bg.png +0 -0
  223. package/src/style/app-article.scss +0 -698
  224. package/src/style/app-comment.scss +0 -259
  225. package/src/style/app-recommend.scss +0 -48
  226. package/src/style/app-richtext.scss +0 -176
  227. package/src/style/index.scss +0 -523
@@ -1,340 +0,0 @@
1
- <script lang="jsx" type="text/jsx">
2
- import UploadList from './UploadList'
3
- import Upload from './Upload'
4
- import BaseProgress from '../progress/Progress'
5
- import Migrating from '../mixin/migrating'
6
-
7
- function noop() {}
8
-
9
- export default {
10
- name: 'BaseUpload',
11
-
12
- mixins: [Migrating],
13
-
14
- components: {
15
- BaseProgress,
16
- UploadList,
17
- Upload
18
- },
19
-
20
- provide() {
21
- return {
22
- uploader: this
23
- }
24
- },
25
-
26
- inject: {
27
- baseForm: {
28
- default: ''
29
- }
30
- },
31
-
32
- props: {
33
- action: {
34
- type: String,
35
- required: true
36
- },
37
- headers: {
38
- type: Object,
39
- default() {
40
- return {}
41
- }
42
- },
43
- data: Object,
44
- multiple: Boolean,
45
- name: {
46
- type: String,
47
- default: 'file'
48
- },
49
- drag: Boolean,
50
- dragger: Boolean,
51
- withCredentials: Boolean,
52
- showFileList: {
53
- type: Boolean,
54
- default: true
55
- },
56
- accept: String,
57
- type: {
58
- type: String,
59
- default: 'select'
60
- },
61
- beforeUpload: Function,
62
- beforeRemove: Function,
63
- onRemove: {
64
- type: Function,
65
- default: noop
66
- },
67
- onChange: {
68
- type: Function,
69
- default: noop
70
- },
71
- onPreview: {
72
- type: Function
73
- },
74
- onSuccess: {
75
- type: Function,
76
- default: noop
77
- },
78
- onProgress: {
79
- type: Function,
80
- default: noop
81
- },
82
- onError: {
83
- type: Function,
84
- default: noop
85
- },
86
- fileList: {
87
- type: Array,
88
- default() {
89
- return []
90
- }
91
- },
92
- autoUpload: {
93
- type: Boolean,
94
- default: true
95
- },
96
- listType: {
97
- type: String,
98
- default: 'text' // text,picture,picture-card
99
- },
100
- httpRequest: Function,
101
- disabled: Boolean,
102
- limit: Number,
103
- onExceed: {
104
- type: Function,
105
- default: noop
106
- },
107
- customClass: String
108
- },
109
-
110
- data() {
111
- return {
112
- uploadFiles: [],
113
- dragOver: false,
114
- draging: false,
115
- tempIndex: 1
116
- }
117
- },
118
-
119
- computed: {
120
- uploadDisabled() {
121
- return this.disabled || (this.elForm || {}).disabled
122
- }
123
- },
124
-
125
- watch: {
126
- listType (type) {
127
- if (type === 'picture-card' || type === 'picture') {
128
- this.uploadFiles = this.uploadFiles.map(file => {
129
- if (!file.url && file.raw) {
130
- try {
131
- file.url = URL.createObjectURL(file.raw)
132
- } catch (err) {
133
- console.error('[Element Error][Upload]', err)
134
- }
135
- }
136
- return file
137
- })
138
- }
139
- },
140
- fileList: {
141
- immediate: true,
142
- handler (fileList) {
143
- this.uploadFiles = fileList.map(item => {
144
- item.uid = item.uid || (Date.now() + this.tempIndex++)
145
- item.status = item.status || 'success'
146
- return item
147
- })
148
- }
149
- }
150
- },
151
-
152
- methods: {
153
- handleStart (rawFile) {
154
- rawFile.uid = Date.now() + this.tempIndex++
155
- let file = {
156
- status: 'ready',
157
- name: rawFile.name,
158
- size: rawFile.size,
159
- percentage: 0,
160
- uid: rawFile.uid,
161
- raw: rawFile
162
- }
163
-
164
- if (this.listType === 'picture-card' || this.listType === 'picture') {
165
- try {
166
- file.url = URL.createObjectURL(rawFile)
167
- } catch (err) {
168
- console.error('[Element Error][Upload]', err)
169
- return
170
- }
171
- }
172
-
173
- this.uploadFiles.push(file)
174
- this.onChange(file, this.uploadFiles)
175
- },
176
- handleProgress (ev, rawFile) {
177
- const file = this.getFile(rawFile)
178
- this.onProgress(ev, file, this.uploadFiles)
179
- file.status = 'uploading'
180
- file.percentage = ev.percent || 0
181
- },
182
- handleSuccess (res, rawFile) {
183
- const file = this.getFile(rawFile)
184
-
185
- if (file) {
186
- file.status = 'success'
187
- file.response = res
188
-
189
- this.onSuccess(res, file, this.uploadFiles)
190
- this.onChange(file, this.uploadFiles)
191
- }
192
- },
193
- handleError (err, rawFile) {
194
- const file = this.getFile(rawFile)
195
- const fileList = this.uploadFiles
196
-
197
- file.status = 'fail'
198
-
199
- fileList.splice(fileList.indexOf(file), 1)
200
-
201
- this.onError(err, file, this.uploadFiles)
202
- this.onChange(file, this.uploadFiles)
203
- },
204
- handleRemove (file, raw) {
205
- if (raw) {
206
- file = this.getFile(raw)
207
- }
208
- let doRemove = () => {
209
- this.abort(file)
210
- let fileList = this.uploadFiles
211
- fileList.splice(fileList.indexOf(file), 1)
212
- this.onRemove(file, fileList)
213
- }
214
-
215
- if (!this.beforeRemove) {
216
- doRemove()
217
- } else if (typeof this.beforeRemove === 'function') {
218
- const before = this.beforeRemove(file, this.uploadFiles)
219
- if (before && before.then) {
220
- before.then(() => {
221
- doRemove()
222
- }, noop)
223
- } else if (before !== false) {
224
- doRemove()
225
- }
226
- }
227
- },
228
- getFile (rawFile) {
229
- let fileList = this.uploadFiles
230
- let target
231
- fileList.every(item => {
232
- target = rawFile.uid === item.uid ? item : null
233
- return !target
234
- })
235
- return target
236
- },
237
- abort (file) {
238
- this.$refs['upload-inner'].abort(file)
239
- },
240
- clearFiles () {
241
- this.uploadFiles = []
242
- },
243
- submit () {
244
- this.uploadFiles
245
- .filter(file => file.status === 'ready')
246
- .forEach(file => {
247
- this.$refs['upload-inner'].upload(file.raw)
248
- })
249
- },
250
- getMigratingConfig () {
251
- return {
252
- props: {
253
- 'default-file-list': 'default-file-list is renamed to file-list.',
254
- 'show-upload-list': 'show-upload-list is renamed to show-file-list.',
255
- 'thumbnail-mode': 'thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan'
256
- }
257
- }
258
- }
259
- },
260
-
261
- beforeDestroy () {
262
- this.uploadFiles.forEach(file => {
263
- if (file.url && file.url.indexOf('blob:') === 0) {
264
- URL.revokeObjectURL(file.url)
265
- }
266
- })
267
- },
268
-
269
- render (h) {
270
- let uploadList
271
-
272
- if (this.showFileList) {
273
- uploadList = (
274
- <upload-list
275
- disabled={this.uploadDisabled}
276
- listType={this.listType}
277
- files={this.uploadFiles}
278
- on-remove={this.handleRemove}
279
- handlePreview={this.onPreview}>
280
- {
281
- (props) => {
282
- if (this.$scopedSlots.file) {
283
- return this.$scopedSlots.file({
284
- file: props.file
285
- })
286
- }
287
- }
288
- }
289
- </upload-list>
290
- )
291
- }
292
-
293
- const uploadData = {
294
- props: {
295
- type: this.type,
296
- drag: this.drag,
297
- action: this.action,
298
- multiple: this.multiple,
299
- 'before-upload': this.beforeUpload,
300
- 'with-credentials': this.withCredentials,
301
- headers: this.headers,
302
- name: this.name,
303
- data: this.data,
304
- accept: this.accept,
305
- fileList: this.uploadFiles,
306
- autoUpload: this.autoUpload,
307
- listType: this.listType,
308
- disabled: this.uploadDisabled,
309
- limit: this.limit,
310
- customClass: this.customClass,
311
- 'on-exceed': this.onExceed,
312
- 'on-start': this.handleStart,
313
- 'on-progress': this.handleProgress,
314
- 'on-success': this.handleSuccess,
315
- 'on-error': this.handleError,
316
- 'on-preview': this.onPreview,
317
- 'on-remove': this.handleRemove,
318
- 'http-request': this.httpRequest
319
- },
320
- ref: 'upload-inner'
321
- }
322
-
323
- const trigger = this.$slots.trigger || this.$slots.default
324
- const uploadComponent = <upload {...uploadData}>{trigger}</upload>
325
-
326
- return (
327
- <div>
328
- { this.listType === 'picture-card' ? uploadList : ''}
329
- {
330
- this.$slots.trigger
331
- ? [uploadComponent, this.$slots.default]
332
- : uploadComponent
333
- }
334
- {this.$slots.tip}
335
- { this.listType !== 'picture-card' ? uploadList : ''}
336
- </div>
337
- )
338
- }
339
- }
340
- </script>
@@ -1,216 +0,0 @@
1
- <script lang="jsx">
2
- import ajax from './ajax';
3
- import UploadDragger from './UploadDragger';
4
-
5
- export default {
6
- inject: ['uploader'],
7
- components: {
8
- UploadDragger
9
- },
10
- props: {
11
- type: String,
12
- action: {
13
- type: String,
14
- required: true
15
- },
16
- name: {
17
- type: String,
18
- default: 'file'
19
- },
20
- data: Object,
21
- headers: Object,
22
- withCredentials: Boolean,
23
- multiple: Boolean,
24
- accept: String,
25
- onStart: Function,
26
- onProgress: Function,
27
- onSuccess: Function,
28
- onError: Function,
29
- beforeUpload: Function,
30
- drag: Boolean,
31
- onPreview: {
32
- type: Function,
33
- default: function() {}
34
- },
35
- onRemove: {
36
- type: Function,
37
- default: function() {}
38
- },
39
- fileList: Array,
40
- autoUpload: Boolean,
41
- listType: String,
42
- httpRequest: {
43
- type: Function,
44
- default: ajax
45
- },
46
- disabled: Boolean,
47
- limit: Number,
48
- onExceed: Function,
49
- customClass: String
50
- },
51
-
52
- data() {
53
- return {
54
- mouseover: false,
55
- reqs: {}
56
- }
57
- },
58
-
59
- methods: {
60
- isImage(str) {
61
- return str.indexOf('image') !== -1;
62
- },
63
- handleChange(ev) {
64
- const files = ev.target.files;
65
-
66
- if (!files) return;
67
- this.uploadFiles(files);
68
- },
69
- uploadFiles(files) {
70
- if (this.limit && this.fileList.length + files.length > this.limit) {
71
- this.onExceed && this.onExceed(files, this.fileList);
72
- return;
73
- }
74
-
75
- let postFiles = Array.prototype.slice.call(files);
76
- if (!this.multiple) { postFiles = postFiles.slice(0, 1); }
77
-
78
- if (postFiles.length === 0) { return; }
79
-
80
- postFiles.forEach(rawFile => {
81
- this.onStart(rawFile);
82
- if (this.autoUpload) this.upload(rawFile);
83
- });
84
- },
85
- upload(rawFile) {
86
- this.$refs.input.value = null;
87
-
88
- if (!this.beforeUpload) {
89
- return this.post(rawFile);
90
- }
91
-
92
- const before = this.beforeUpload(rawFile);
93
- if (before && before.then) {
94
- before.then(processedFile => {
95
- const fileType = Object.prototype.toString.call(processedFile);
96
-
97
- if (fileType === '[object File]' || fileType === '[object Blob]') {
98
- if (fileType === '[object Blob]') {
99
- processedFile = new File([processedFile], rawFile.name, {
100
- type: rawFile.type
101
- });
102
- }
103
- for (const p in rawFile) {
104
- if (rawFile.hasOwnProperty(p)) {
105
- processedFile[p] = rawFile[p];
106
- }
107
- }
108
- this.post(processedFile);
109
- } else {
110
- this.post(rawFile);
111
- }
112
- }, () => {
113
- this.onRemove(null, rawFile);
114
- });
115
- } else if (before !== false) {
116
- this.post(rawFile);
117
- } else {
118
- this.onRemove(null, rawFile);
119
- }
120
- },
121
- abort(file) {
122
- const { reqs } = this;
123
- if (file) {
124
- let uid = file;
125
- if (file.uid) uid = file.uid;
126
- if (reqs[uid]) {
127
- reqs[uid].abort();
128
- }
129
- } else {
130
- Object.keys(reqs).forEach((uid) => {
131
- if (reqs[uid]) reqs[uid].abort();
132
- delete reqs[uid];
133
- });
134
- }
135
- },
136
- post(rawFile) {
137
- const { uid } = rawFile;
138
- const options = {
139
- headers: this.headers,
140
- withCredentials: this.withCredentials,
141
- file: rawFile,
142
- data: this.data,
143
- filename: this.name,
144
- action: this.action,
145
- onProgress: e => {
146
- this.onProgress(e, rawFile);
147
- },
148
- onSuccess: res => {
149
- this.onSuccess(res, rawFile);
150
- delete this.reqs[uid];
151
- },
152
- onError: err => {
153
- this.onError(err, rawFile);
154
- delete this.reqs[uid];
155
- }
156
- };
157
- const req = this.httpRequest(options);
158
- this.reqs[uid] = req;
159
- if (req && req.then) {
160
- req.then(options.onSuccess, options.onError);
161
- }
162
- },
163
- handleClick() {
164
- if (!this.disabled) {
165
- this.$refs.input.value = null;
166
- this.$refs.input.click();
167
- }
168
- },
169
- handleKeydown(e) {
170
- if (e.target !== e.currentTarget) return;
171
- if (e.keyCode === 13 || e.keyCode === 32) {
172
- this.handleClick();
173
- }
174
- }
175
- },
176
-
177
- render(h) {
178
- let {
179
- handleClick,
180
- drag,
181
- name,
182
- handleChange,
183
- multiple,
184
- customClass,
185
- accept,
186
- listType,
187
- uploadFiles,
188
- disabled,
189
- handleKeydown
190
- } = this;
191
- const data = {
192
- class: {
193
- 'base-upload': true
194
- },
195
- on: {
196
- click: handleClick,
197
- keydown: handleKeydown
198
- }
199
- };
200
- data.class[`base-upload--${listType}`] = true;
201
- if (customClass) {
202
- data.class[`${customClass}`] = true
203
- }
204
- return (
205
- <div {...data} tabindex="0" >
206
- {
207
- drag
208
- ? <upload-dragger disabled={disabled} on-file={uploadFiles}>{this.$slots.default}</upload-dragger>
209
- : this.$slots.default
210
- }
211
- <input class="base-upload__input" type="file" ref="input" name={name} on-change={handleChange} multiple={multiple} accept={accept}></input>
212
- </div>
213
- );
214
- }
215
- };
216
- </script>
@@ -1,70 +0,0 @@
1
- <template>
2
- <div
3
- class="base-upload-dragger"
4
- :class="{
5
- 'is-dragover': dragover
6
- }"
7
- @drop.prevent="onDrop"
8
- @dragover.prevent="onDragover"
9
- @dragleave.prevent="dragover = false"
10
- >
11
- <slot></slot>
12
- </div>
13
- </template>
14
- <script>
15
- export default {
16
- name: 'BaseUploadDragger',
17
- props: {
18
- disabled: Boolean
19
- },
20
- inject: {
21
- uploader: {
22
- default: ''
23
- }
24
- },
25
- data() {
26
- return {
27
- dragover: false
28
- };
29
- },
30
- methods: {
31
- onDragover() {
32
- if (!this.disabled) {
33
- this.dragover = true;
34
- }
35
- },
36
- onDrop(e) {
37
- if (this.disabled || !this.uploader) return;
38
- const accept = this.uploader.accept;
39
- this.dragover = false;
40
- if (!accept) {
41
- this.$emit('file', e.dataTransfer.files);
42
- return;
43
- }
44
- this.$emit('file', [].slice.call(e.dataTransfer.files).filter(file => {
45
- const { type, name } = file;
46
- const extension = name.indexOf('.') > -1
47
- ? `.${ name.split('.').pop() }`
48
- : '';
49
- const baseType = type.replace(/\/.*$/, '');
50
- return accept.split(',')
51
- .map(type => type.trim())
52
- .filter(type => type)
53
- .some(acceptedType => {
54
- if (/\..+$/.test(acceptedType)) {
55
- return extension === acceptedType;
56
- }
57
- if (/\/\*$/.test(acceptedType)) {
58
- return baseType === acceptedType.replace(/\/\*$/, '');
59
- }
60
- if (/^[^\/]+\/[^\/]+$/.test(acceptedType)) {
61
- return type === acceptedType;
62
- }
63
- return false;
64
- });
65
- }));
66
- }
67
- }
68
- };
69
- </script>
70
-
@@ -1,100 +0,0 @@
1
- <template>
2
- <transition-group
3
- tag="ul"
4
- :class="[
5
- 'base-upload-list',
6
- 'base-upload-list--' + listType,
7
- { 'is-disabled': disabled }
8
- ]"
9
- name="base-list"
10
- >
11
- <li
12
- v-for="file in files"
13
- :class="['base-upload-list__item', 'is-' + file.status, focusing ? 'focusing' : '']"
14
- :key="file.uid"
15
- tabindex="0"
16
- @keydown.delete="!disabled && $emit('remove', file)"
17
- @focus="focusing = true"
18
- @blur="focusing = false"
19
- @click="focusing = false"
20
- >
21
- <slot :file="file">
22
- <img
23
- class="base-upload-list__item-thumbnail"
24
- v-if="file.status !== 'uploading' && ['picture-card', 'picture'].indexOf(listType) > -1"
25
- :src="file.url" alt=""
26
- >
27
- <a class="base-upload-list__item-name" @click="handleClick(file)">
28
- <i class="base-icon-document"></i>{{file.name}}
29
- </a>
30
- <label class="base-upload-list__item-status-label">
31
- <i :class="{
32
- 'base-icon-upload-success': true,
33
- 'base-icon-circle-check': listType === 'text',
34
- 'base-icon-check': ['picture-card', 'picture'].indexOf(listType) > -1
35
- }"></i>
36
- </label>
37
- <i class="base-icon-close" v-if="!disabled" @click="$emit('remove', file)"></i>
38
- <i class="base-icon-close-tip" v-if="!disabled">{{ t('base.upload.deleteTip') }}</i> <!--因为close按钮只在li:focus的时候 display, li blur后就不存在了,所以键盘导航时永远无法 focus到 close按钮上-->
39
- <base-progress
40
- v-if="file.status === 'uploading'"
41
- :type="listType === 'picture-card' ? 'circle' : 'line'"
42
- :stroke-width="listType === 'picture-card' ? 6 : 2"
43
- :percentage="parsePercentage(file.percentage)">
44
- </base-progress>
45
- <span class="base-upload-list__item-actions" v-if="listType === 'picture-card'">
46
- <span
47
- class="base-upload-list__item-preview"
48
- v-if="handlePreview && listType === 'picture-card'"
49
- @click="handlePreview(file)"
50
- >
51
- <i class="base-icon-zoom-in"></i>
52
- </span>
53
- <span
54
- v-if="!disabled"
55
- class="base-upload-list__item-delete"
56
- @click="$emit('remove', file)"
57
- >
58
- <i class="base-icon-delete"></i>
59
- </span>
60
- </span>
61
- </slot>
62
- </li>
63
- </transition-group>
64
- </template>
65
- <script>
66
- import Locale from '../locale'
67
- import BaseProgress from '../progress/Progress'
68
- export default {
69
- name: 'BaseUploadList',
70
- mixins: [Locale],
71
- data() {
72
- return {
73
- focusing: false
74
- }
75
- },
76
- components: { BaseProgress },
77
- props: {
78
- files: {
79
- type: Array,
80
- default() {
81
- return []
82
- }
83
- },
84
- disabled: {
85
- type: Boolean,
86
- default: false
87
- },
88
- handlePreview: Function,
89
- listType: String
90
- },
91
- methods: {
92
- parsePercentage(val) {
93
- return parseInt(val, 10)
94
- },
95
- handleClick(file) {
96
- this.handlePreview && this.handlePreview(file)
97
- }
98
- }
99
- }
100
- </script>