@vtx/components 2.5.13 → 2.5.15

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 (242) hide show
  1. package/CHANGELOG.md +842 -0
  2. package/lib/_util/filterSpecialCharacters.js +43 -54
  3. package/lib/_util/filterSpecialCharacters.js.map +1 -1
  4. package/lib/_util/getComponentProps.js +3 -0
  5. package/lib/_util/getComponentProps.js.map +1 -1
  6. package/lib/_util/getUrlParam.js +6 -0
  7. package/lib/_util/getUrlParam.js.map +1 -1
  8. package/lib/_util/isFunction.js +1 -0
  9. package/lib/_util/isFunction.js.map +1 -1
  10. package/lib/_util/isObject.js +1 -0
  11. package/lib/_util/isObject.js.map +1 -1
  12. package/lib/_util/useInterval.js +3 -0
  13. package/lib/_util/useInterval.js.map +1 -1
  14. package/lib/_util/useSet.js +32 -14
  15. package/lib/_util/useSet.js.map +1 -1
  16. package/lib/config.js.map +1 -1
  17. package/lib/index.js +22 -0
  18. package/lib/index.js.map +1 -1
  19. package/lib/vtx-color-picker/index.js +21 -5
  20. package/lib/vtx-color-picker/index.js.map +1 -1
  21. package/lib/vtx-color-picker/style/css.js +2 -0
  22. package/lib/vtx-color-picker/style/css.js.map +1 -1
  23. package/lib/vtx-color-picker/style/index.js +2 -0
  24. package/lib/vtx-color-picker/style/index.js.map +1 -1
  25. package/lib/vtx-combogrid/Combogrid.js +73 -33
  26. package/lib/vtx-combogrid/Combogrid.js.map +1 -1
  27. package/lib/vtx-combogrid/index.js +45 -20
  28. package/lib/vtx-combogrid/index.js.map +1 -1
  29. package/lib/vtx-combogrid/style/css.js +7 -0
  30. package/lib/vtx-combogrid/style/css.js.map +1 -1
  31. package/lib/vtx-combogrid/style/index.js +7 -0
  32. package/lib/vtx-combogrid/style/index.js.map +1 -1
  33. package/lib/vtx-combogrid/style/index.less +29 -29
  34. package/lib/vtx-datagrid/Alert.js +11 -3
  35. package/lib/vtx-datagrid/Alert.js.map +1 -1
  36. package/lib/vtx-datagrid/ColumnSetting.js +44 -19
  37. package/lib/vtx-datagrid/ColumnSetting.js.map +1 -1
  38. package/lib/vtx-datagrid/ResizeableTitle.js +13 -2
  39. package/lib/vtx-datagrid/ResizeableTitle.js.map +1 -1
  40. package/lib/vtx-datagrid/index.js +137 -77
  41. package/lib/vtx-datagrid/index.js.map +1 -1
  42. package/lib/vtx-datagrid/renderColumnButtons.js +35 -5
  43. package/lib/vtx-datagrid/renderColumnButtons.js.map +1 -1
  44. package/lib/vtx-datagrid/style/css.js +10 -0
  45. package/lib/vtx-datagrid/style/css.js.map +1 -1
  46. package/lib/vtx-datagrid/style/index.js +10 -0
  47. package/lib/vtx-datagrid/style/index.js.map +1 -1
  48. package/lib/vtx-datagrid/style/index.less +131 -131
  49. package/lib/vtx-date-picker/QdatePicker.js +46 -16
  50. package/lib/vtx-date-picker/QdatePicker.js.map +1 -1
  51. package/lib/vtx-date-picker/YearPicker.js +30 -7
  52. package/lib/vtx-date-picker/YearPicker.js.map +1 -1
  53. package/lib/vtx-date-picker/generatePicker.js +46 -5
  54. package/lib/vtx-date-picker/generatePicker.js.map +1 -1
  55. package/lib/vtx-date-picker/index.js +8 -2
  56. package/lib/vtx-date-picker/index.js.map +1 -1
  57. package/lib/vtx-date-picker/style/css.js +1 -0
  58. package/lib/vtx-date-picker/style/css.js.map +1 -1
  59. package/lib/vtx-date-picker/style/index.js +1 -0
  60. package/lib/vtx-date-picker/style/index.js.map +1 -1
  61. package/lib/vtx-date-picker/style/index.less +38 -38
  62. package/lib/vtx-editor/index.js +23 -5
  63. package/lib/vtx-editor/index.js.map +1 -1
  64. package/lib/vtx-editor/style/css.js +2 -0
  65. package/lib/vtx-editor/style/css.js.map +1 -1
  66. package/lib/vtx-editor/style/index.js +2 -0
  67. package/lib/vtx-editor/style/index.js.map +1 -1
  68. package/lib/vtx-editor/style/index.less +6 -6
  69. package/lib/vtx-export/index.js +55 -23
  70. package/lib/vtx-export/index.js.map +1 -1
  71. package/lib/vtx-export/style/css.js +6 -0
  72. package/lib/vtx-export/style/css.js.map +1 -1
  73. package/lib/vtx-export/style/index.js +6 -0
  74. package/lib/vtx-export/style/index.js.map +1 -1
  75. package/lib/vtx-form-layout/Card.js +26 -5
  76. package/lib/vtx-form-layout/Card.js.map +1 -1
  77. package/lib/vtx-form-layout/Divider.js +5 -0
  78. package/lib/vtx-form-layout/Divider.js.map +1 -1
  79. package/lib/vtx-form-layout/FormItem.js +34 -9
  80. package/lib/vtx-form-layout/FormItem.js.map +1 -1
  81. package/lib/vtx-form-layout/Pane.js +7 -2
  82. package/lib/vtx-form-layout/Pane.js.map +1 -1
  83. package/lib/vtx-form-layout/Row.js +6 -0
  84. package/lib/vtx-form-layout/Row.js.map +1 -1
  85. package/lib/vtx-form-layout/context.js +2 -0
  86. package/lib/vtx-form-layout/context.js.map +1 -1
  87. package/lib/vtx-form-layout/demo/Modal.less +41 -41
  88. package/lib/vtx-form-layout/index.js +22 -8
  89. package/lib/vtx-form-layout/index.js.map +1 -1
  90. package/lib/vtx-form-layout/style/css.js +8 -0
  91. package/lib/vtx-form-layout/style/css.js.map +1 -1
  92. package/lib/vtx-form-layout/style/index.js +8 -0
  93. package/lib/vtx-form-layout/style/index.js.map +1 -1
  94. package/lib/vtx-form-layout/style/index.less +148 -148
  95. package/lib/vtx-image/Image.js +92 -56
  96. package/lib/vtx-image/Image.js.map +1 -1
  97. package/lib/vtx-image/Preview.js +51 -20
  98. package/lib/vtx-image/Preview.js.map +1 -1
  99. package/lib/vtx-image/PreviewGroup.js +40 -11
  100. package/lib/vtx-image/PreviewGroup.js.map +1 -1
  101. package/lib/vtx-image/index.js +6 -0
  102. package/lib/vtx-image/index.js.map +1 -1
  103. package/lib/vtx-image/style/css.js +1 -0
  104. package/lib/vtx-image/style/css.js.map +1 -1
  105. package/lib/vtx-image/style/index.js +1 -0
  106. package/lib/vtx-image/style/index.js.map +1 -1
  107. package/lib/vtx-image/style/index.less +46 -46
  108. package/lib/vtx-import/index.js +72 -37
  109. package/lib/vtx-import/index.js.map +1 -1
  110. package/lib/vtx-import/result.js +24 -7
  111. package/lib/vtx-import/result.js.map +1 -1
  112. package/lib/vtx-import/style/css.js +2 -0
  113. package/lib/vtx-import/style/css.js.map +1 -1
  114. package/lib/vtx-import/style/index.js +2 -0
  115. package/lib/vtx-import/style/index.js.map +1 -1
  116. package/lib/vtx-input/TextArea.js +22 -6
  117. package/lib/vtx-input/TextArea.js.map +1 -1
  118. package/lib/vtx-input/index.js +37 -11
  119. package/lib/vtx-input/index.js.map +1 -1
  120. package/lib/vtx-input/style/css.js +1 -0
  121. package/lib/vtx-input/style/css.js.map +1 -1
  122. package/lib/vtx-input/style/index.js +1 -0
  123. package/lib/vtx-input/style/index.js.map +1 -1
  124. package/lib/vtx-input/style/index.less +20 -20
  125. package/lib/vtx-input/useLength.js +16 -4
  126. package/lib/vtx-input/useLength.js.map +1 -1
  127. package/lib/vtx-modal/Title.js +6 -1
  128. package/lib/vtx-modal/Title.js.map +1 -1
  129. package/lib/vtx-modal/index.js +70 -32
  130. package/lib/vtx-modal/index.js.map +1 -1
  131. package/lib/vtx-modal/style/css.js +2 -0
  132. package/lib/vtx-modal/style/css.js.map +1 -1
  133. package/lib/vtx-modal/style/index.js +2 -0
  134. package/lib/vtx-modal/style/index.js.map +1 -1
  135. package/lib/vtx-modal/style/index.less +83 -83
  136. package/lib/vtx-page-layout/Basic.js +6 -2
  137. package/lib/vtx-page-layout/Basic.js.map +1 -1
  138. package/lib/vtx-page-layout/Content.js +19 -7
  139. package/lib/vtx-page-layout/Content.js.map +1 -1
  140. package/lib/vtx-page-layout/Pane.js +10 -2
  141. package/lib/vtx-page-layout/Pane.js.map +1 -1
  142. package/lib/vtx-page-layout/TableLayout.js +52 -22
  143. package/lib/vtx-page-layout/TableLayout.js.map +1 -1
  144. package/lib/vtx-page-layout/TableWrap.js +15 -3
  145. package/lib/vtx-page-layout/TableWrap.js.map +1 -1
  146. package/lib/vtx-page-layout/container.js +34 -4
  147. package/lib/vtx-page-layout/container.js.map +1 -1
  148. package/lib/vtx-page-layout/index.js +8 -0
  149. package/lib/vtx-page-layout/index.js.map +1 -1
  150. package/lib/vtx-page-layout/style/index.less +139 -139
  151. package/lib/vtx-rps-frame/index.js +44 -21
  152. package/lib/vtx-rps-frame/index.js.map +1 -1
  153. package/lib/vtx-scrollable-row/index.js +55 -19
  154. package/lib/vtx-scrollable-row/index.js.map +1 -1
  155. package/lib/vtx-scrollable-row/style/css.js +1 -0
  156. package/lib/vtx-scrollable-row/style/css.js.map +1 -1
  157. package/lib/vtx-scrollable-row/style/index.js +1 -0
  158. package/lib/vtx-scrollable-row/style/index.js.map +1 -1
  159. package/lib/vtx-scrollable-row/style/index.less +111 -111
  160. package/lib/vtx-search/VtxCol.js +21 -0
  161. package/lib/vtx-search/VtxCol.js.map +1 -1
  162. package/lib/vtx-search/VtxRow.js +12 -6
  163. package/lib/vtx-search/VtxRow.js.map +1 -1
  164. package/lib/vtx-search/index.js +87 -36
  165. package/lib/vtx-search/index.js.map +1 -1
  166. package/lib/vtx-search/style/css.js +5 -0
  167. package/lib/vtx-search/style/css.js.map +1 -1
  168. package/lib/vtx-search/style/index.js +5 -0
  169. package/lib/vtx-search/style/index.js.map +1 -1
  170. package/lib/vtx-search/style/index.less +81 -81
  171. package/lib/vtx-search-map-input/index.js +68 -39
  172. package/lib/vtx-search-map-input/index.js.map +1 -1
  173. package/lib/vtx-search-map-input/style/css.js +2 -0
  174. package/lib/vtx-search-map-input/style/css.js.map +1 -1
  175. package/lib/vtx-search-map-input/style/index.js +2 -0
  176. package/lib/vtx-search-map-input/style/index.js.map +1 -1
  177. package/lib/vtx-select/index.js +64 -20
  178. package/lib/vtx-select/index.js.map +1 -1
  179. package/lib/vtx-select/style/css.js +8 -0
  180. package/lib/vtx-select/style/css.js.map +1 -1
  181. package/lib/vtx-select/style/index.js +8 -0
  182. package/lib/vtx-select/style/index.js.map +1 -1
  183. package/lib/vtx-select/style/index.less +66 -66
  184. package/lib/vtx-signature/index.js +28 -14
  185. package/lib/vtx-signature/index.js.map +1 -1
  186. package/lib/vtx-signature/style/css.js +2 -0
  187. package/lib/vtx-signature/style/css.js.map +1 -1
  188. package/lib/vtx-signature/style/index.js +2 -0
  189. package/lib/vtx-signature/style/index.js.map +1 -1
  190. package/lib/vtx-signature/style/index.less +32 -32
  191. package/lib/vtx-split-pane/Pane.js +14 -2
  192. package/lib/vtx-split-pane/Pane.js.map +1 -1
  193. package/lib/vtx-split-pane/Resizer.js +30 -10
  194. package/lib/vtx-split-pane/Resizer.js.map +1 -1
  195. package/lib/vtx-split-pane/SplitPane.js +104 -52
  196. package/lib/vtx-split-pane/SplitPane.js.map +1 -1
  197. package/lib/vtx-split-pane/index.js +4 -0
  198. package/lib/vtx-split-pane/index.js.map +1 -1
  199. package/lib/vtx-split-pane/style/css.js +3 -0
  200. package/lib/vtx-split-pane/style/css.js.map +1 -1
  201. package/lib/vtx-split-pane/style/index.js +3 -0
  202. package/lib/vtx-split-pane/style/index.js.map +1 -1
  203. package/lib/vtx-split-pane/style/index.less +59 -59
  204. package/lib/vtx-statistics-column/Back.js +7 -1
  205. package/lib/vtx-statistics-column/Back.js.map +1 -1
  206. package/lib/vtx-statistics-column/Item.js +22 -5
  207. package/lib/vtx-statistics-column/Item.js.map +1 -1
  208. package/lib/vtx-statistics-column/Total.js +22 -5
  209. package/lib/vtx-statistics-column/Total.js.map +1 -1
  210. package/lib/vtx-statistics-column/context.js +2 -0
  211. package/lib/vtx-statistics-column/context.js.map +1 -1
  212. package/lib/vtx-statistics-column/index.js +16 -0
  213. package/lib/vtx-statistics-column/index.js.map +1 -1
  214. package/lib/vtx-statistics-column/style/index.less +61 -61
  215. package/lib/vtx-time-picker/index.js +16 -3
  216. package/lib/vtx-time-picker/index.js.map +1 -1
  217. package/lib/vtx-time-picker/style/css.js.map +1 -1
  218. package/lib/vtx-time-picker/style/index.js.map +1 -1
  219. package/lib/vtx-upload/FilePreview.js +28 -9
  220. package/lib/vtx-upload/FilePreview.js.map +1 -1
  221. package/lib/vtx-upload/index.js +136 -67
  222. package/lib/vtx-upload/index.js.map +1 -1
  223. package/lib/vtx-upload/style/css.js +6 -0
  224. package/lib/vtx-upload/style/css.js.map +1 -1
  225. package/lib/vtx-upload/style/index.js +6 -0
  226. package/lib/vtx-upload/style/index.js.map +1 -1
  227. package/lib/vtx-upload/style/index.less +59 -59
  228. package/lib/vtx-ztree/index.js +103 -51
  229. package/lib/vtx-ztree/index.js.map +1 -1
  230. package/lib/vtx-ztree/style/css.js +1 -0
  231. package/lib/vtx-ztree/style/css.js.map +1 -1
  232. package/lib/vtx-ztree/style/index.js +1 -0
  233. package/lib/vtx-ztree/style/index.js.map +1 -1
  234. package/lib/vtx-ztree/style/index.less +30 -30
  235. package/lib/vtx-ztree-select/index.js +97 -38
  236. package/lib/vtx-ztree-select/index.js.map +1 -1
  237. package/lib/vtx-ztree-select/style/css.js +4 -0
  238. package/lib/vtx-ztree-select/style/css.js.map +1 -1
  239. package/lib/vtx-ztree-select/style/index.js +4 -0
  240. package/lib/vtx-ztree-select/style/index.js.map +1 -1
  241. package/lib/vtx-ztree-select/style/index.less +76 -76
  242. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FilePreview.js","names":["Preview","props","type","name","url","downloadUrl","visible","onCancel","player","timer","setTimeout","document","getElementById","Player","id","width","height","controlPlugins","volume","playbackRate","modalProps","title","cancel","footer","createForm","wrapClassName","destroy","clearTimeout","border","propTypes","PropTypes","string","bool","func","reqURL","formDom","createElement","method","action","style","body","appendChild","submit","remove"],"sources":["vtx-upload/FilePreview.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Player from 'xgplayer/dist/simple_player';\nimport { volume, playbackRate } from 'xgplayer/dist/controls';\nimport Modal from 'antd/es/modal';\nimport Button from 'antd/es/button';\n\nfunction Preview(props) {\n const { type, name, url, downloadUrl, visible, onCancel } = props;\n\n let player = null,\n timer = null;\n timer = setTimeout(() => {\n if (type == 'video' && document.getElementById('vs')) {\n player = new Player({\n id: 'vs',\n url: url,\n width: 600,\n height: 337.5,\n controlPlugins: [\n volume, //音量\n playbackRate, //播放倍速\n ],\n playbackRate: [0.5, 0.75, 1, 1.5, 2], //传入倍速可选数组\n });\n }\n }, 500);\n\n let modalProps = {\n title: name,\n visible,\n onCancel: () => cancel(),\n footer: [\n <Button key=\"close\" onClick={() => cancel()}>\n 关闭\n </Button>,\n <Button key=\"download\" type=\"primary\" onClick={() => createForm(downloadUrl)}>\n 下载\n </Button>,\n ],\n };\n if (type == 'file') {\n modalProps = {\n ...modalProps,\n wrapClassName: 'vtx-modal-maxClass',\n };\n }\n if (type == 'video') {\n modalProps = {\n ...modalProps,\n width: 648,\n };\n }\n\n const cancel = () => {\n //销毁播放器\n player && player.destroy();\n timer && clearTimeout(timer);\n onCancel();\n };\n\n return (\n <Modal {...modalProps}>\n {type == 'file' ? (\n <iframe\n src={url}\n style={{ height: '100%', width: '100%', border: 'none' }}\n ></iframe>\n ) : null}\n {type == 'video' ? <div id=\"vs\"></div> : null}\n </Modal>\n );\n}\n\nPreview.propTypes = {\n type: PropTypes.string,\n name: PropTypes.string,\n url: PropTypes.string,\n visible: PropTypes.bool,\n onCancel: PropTypes.func,\n downloadUrl: PropTypes.string,\n};\n\nexport default Preview;\n\nconst createForm = function(reqURL) {\n let formDom = document.createElement('form'); //定义一个form表单\n formDom.method = 'post';\n formDom.action = reqURL;\n formDom.style = 'display:none';\n document.body.appendChild(formDom); //将表单放置在web中\n formDom.submit(); //表单提交\n formDom.remove();\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilePreview.js","names":["Preview","props","type","name","url","downloadUrl","visible","onCancel","player","timer","setTimeout","document","getElementById","Player","id","width","height","controlPlugins","volume","playbackRate","modalProps","title","cancel","footer","createForm","wrapClassName","destroy","clearTimeout","border","propTypes","PropTypes","string","bool","func","reqURL","formDom","createElement","method","action","style","body","appendChild","submit","remove"],"sources":["vtx-upload/FilePreview.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Player from 'xgplayer/dist/simple_player';\r\nimport { volume, playbackRate } from 'xgplayer/dist/controls';\r\nimport Modal from 'antd/es/modal';\r\nimport Button from 'antd/es/button';\r\n\r\nfunction Preview(props) {\r\n const { type, name, url, downloadUrl, visible, onCancel } = props;\r\n\r\n let player = null,\r\n timer = null;\r\n timer = setTimeout(() => {\r\n if (type == 'video' && document.getElementById('vs')) {\r\n player = new Player({\r\n id: 'vs',\r\n url: url,\r\n width: 600,\r\n height: 337.5,\r\n controlPlugins: [\r\n volume, //音量\r\n playbackRate, //播放倍速\r\n ],\r\n playbackRate: [0.5, 0.75, 1, 1.5, 2], //传入倍速可选数组\r\n });\r\n }\r\n }, 500);\r\n\r\n let modalProps = {\r\n title: name,\r\n visible,\r\n onCancel: () => cancel(),\r\n footer: [\r\n <Button key=\"close\" onClick={() => cancel()}>\r\n 关闭\r\n </Button>,\r\n <Button key=\"download\" type=\"primary\" onClick={() => createForm(downloadUrl)}>\r\n 下载\r\n </Button>,\r\n ],\r\n };\r\n if (type == 'file') {\r\n modalProps = {\r\n ...modalProps,\r\n wrapClassName: 'vtx-modal-maxClass',\r\n };\r\n }\r\n if (type == 'video') {\r\n modalProps = {\r\n ...modalProps,\r\n width: 648,\r\n };\r\n }\r\n\r\n const cancel = () => {\r\n //销毁播放器\r\n player && player.destroy();\r\n timer && clearTimeout(timer);\r\n onCancel();\r\n };\r\n\r\n return (\r\n <Modal {...modalProps}>\r\n {type == 'file' ? (\r\n <iframe\r\n src={url}\r\n style={{ height: '100%', width: '100%', border: 'none' }}\r\n ></iframe>\r\n ) : null}\r\n {type == 'video' ? <div id=\"vs\"></div> : null}\r\n </Modal>\r\n );\r\n}\r\n\r\nPreview.propTypes = {\r\n type: PropTypes.string,\r\n name: PropTypes.string,\r\n url: PropTypes.string,\r\n visible: PropTypes.bool,\r\n onCancel: PropTypes.func,\r\n downloadUrl: PropTypes.string,\r\n};\r\n\r\nexport default Preview;\r\n\r\nconst createForm = function(reqURL) {\r\n let formDom = document.createElement('form'); //定义一个form表单\r\n formDom.method = 'post';\r\n formDom.action = reqURL;\r\n formDom.style = 'display:none';\r\n document.body.appendChild(formDom); //将表单放置在web中\r\n formDom.submit(); //表单提交\r\n formDom.remove();\r\n};\r\n"],"mappings":"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"}
@@ -1,47 +1,80 @@
1
1
  "use strict";
2
2
 
3
3
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
9
+
8
10
  var _react = _interopRequireWildcard(require("react"));
11
+
9
12
  var _useSetState3 = _interopRequireDefault(require("ahooks/es/useSetState"));
13
+
10
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
+
11
16
  var _viewerjs = _interopRequireDefault(require("viewerjs"));
17
+
12
18
  var _upload = _interopRequireDefault(require("antd/es/upload"));
19
+
13
20
  var _button = _interopRequireDefault(require("antd/es/button"));
21
+
14
22
  var _icon = _interopRequireDefault(require("antd/es/icon"));
23
+
15
24
  var _message = _interopRequireDefault(require("antd/es/message"));
25
+
16
26
  var _downloadFile = _interopRequireDefault(require("@vtx/utils/lib/downloadFile"));
27
+
17
28
  var _lodash = _interopRequireDefault(require("lodash.debounce"));
29
+
18
30
  var _FilePreview = _interopRequireDefault(require("./FilePreview"));
31
+
19
32
  var _getUrlParam = _interopRequireDefault(require("../_util/getUrlParam"));
33
+
20
34
  var _excluded = ["isDragger", "draggerConfig", "accept", "mode", "viewMode", "showUploadList", "customizedButton", "listType", "onSuccess", "onError", "onRemove", "maxFileSize", "beforeUpload", "maxNum", "flag"];
35
+
21
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
37
+
22
38
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
+
23
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
+
24
42
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
43
+
25
44
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
45
+
26
46
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
47
+
27
48
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
49
+
28
50
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
51
+
29
52
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
53
+
30
54
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
55
+
31
56
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
57
+
32
58
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
59
+
33
60
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
61
+
34
62
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
63
+
35
64
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
65
+
36
66
  function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
67
+
37
68
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
69
+
38
70
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
71
+
39
72
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
73
+
40
74
  var debouncedMessage = (0, _lodash["default"])(function (msg) {
41
75
  _message["default"].error(msg);
42
- }, 500);
76
+ }, 500); //文件预览
43
77
 
44
- //文件预览
45
78
  var initVPrev = {
46
79
  type: '',
47
80
  //video or file
@@ -53,87 +86,99 @@ var initVPrev = {
53
86
  var initUrl = {
54
87
  action: '/cloudFile/common/uploadFile',
55
88
  downloadUrl: '/cloudFile/common/downloadFile?id=',
56
- thumbnailUrl: '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id='
57
- //previewUrl: '/onlinePreview',
58
- };
59
- //禁止上传的文件类型
89
+ thumbnailUrl: '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=' //previewUrl: '/onlinePreview',
90
+
91
+ }; //禁止上传的文件类型
92
+
60
93
  var rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];
61
94
  var Dragger = _upload["default"].Dragger;
62
95
  var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
63
96
  var _window;
97
+
64
98
  var _props$isDragger = props.isDragger,
65
- isDragger = _props$isDragger === void 0 ? false : _props$isDragger,
66
- _props$draggerConfig = props.draggerConfig,
67
- draggerConfig = _props$draggerConfig === void 0 ? {} : _props$draggerConfig,
68
- accept = props.accept,
69
- _props$mode = props.mode,
70
- mode = _props$mode === void 0 ? 'multiple' : _props$mode,
71
- viewMode = props.viewMode,
72
- showUploadList = props.showUploadList,
73
- customizedButton = props.customizedButton,
74
- _props$listType = props.listType,
75
- listType = _props$listType === void 0 ? 'text' : _props$listType,
76
- onSuccess = props.onSuccess,
77
- onError = props.onError,
78
- _onRemove = props.onRemove,
79
- _props$maxFileSize = props.maxFileSize,
80
- maxFileSize = _props$maxFileSize === void 0 ? 5 * 1024 * 1024 : _props$maxFileSize,
81
- _beforeUpload = props.beforeUpload,
82
- maxNum = props.maxNum,
83
- flag = props.flag,
84
- rest = _objectWithoutProperties(props, _excluded);
85
- // 是否使用缩略图
99
+ isDragger = _props$isDragger === void 0 ? false : _props$isDragger,
100
+ _props$draggerConfig = props.draggerConfig,
101
+ draggerConfig = _props$draggerConfig === void 0 ? {} : _props$draggerConfig,
102
+ accept = props.accept,
103
+ _props$mode = props.mode,
104
+ mode = _props$mode === void 0 ? 'multiple' : _props$mode,
105
+ viewMode = props.viewMode,
106
+ showUploadList = props.showUploadList,
107
+ customizedButton = props.customizedButton,
108
+ _props$listType = props.listType,
109
+ listType = _props$listType === void 0 ? 'text' : _props$listType,
110
+ onSuccess = props.onSuccess,
111
+ onError = props.onError,
112
+ _onRemove = props.onRemove,
113
+ _props$maxFileSize = props.maxFileSize,
114
+ maxFileSize = _props$maxFileSize === void 0 ? 5 * 1024 * 1024 : _props$maxFileSize,
115
+ _beforeUpload = props.beforeUpload,
116
+ maxNum = props.maxNum,
117
+ flag = props.flag,
118
+ rest = _objectWithoutProperties(props, _excluded); // 是否使用缩略图
119
+
120
+
86
121
  var useThumbnail = (props.useThumbnail === undefined ? true : props.useThumbnail) && (listType == 'picture' || listType == 'picture-card');
122
+
87
123
  var _useState = (0, _react.useState)([]),
88
- _useState2 = _slicedToArray(_useState, 2),
89
- fileList = _useState2[0],
90
- setFileList = _useState2[1]; //初始化文件列表
124
+ _useState2 = _slicedToArray(_useState, 2),
125
+ fileList = _useState2[0],
126
+ setFileList = _useState2[1]; //初始化文件列表
127
+
128
+
91
129
  var _useState3 = (0, _react.useState)(null),
92
- _useState4 = _slicedToArray(_useState3, 2),
93
- imageViewer = _useState4[0],
94
- setImageViewer = _useState4[1]; //图片预览
130
+ _useState4 = _slicedToArray(_useState3, 2),
131
+ imageViewer = _useState4[0],
132
+ setImageViewer = _useState4[1]; //图片预览
133
+
134
+
95
135
  var _useState5 = (0, _react.useState)([]),
96
- _useState6 = _slicedToArray(_useState5, 2),
97
- imageList = _useState6[0],
98
- setImageList = _useState6[1];
136
+ _useState6 = _slicedToArray(_useState5, 2),
137
+ imageList = _useState6[0],
138
+ setImageList = _useState6[1];
139
+
99
140
  var _useState7 = (0, _react.useState)(null),
100
- _useState8 = _slicedToArray(_useState7, 2),
101
- imageCt = _useState8[0],
102
- setImageCt = _useState8[1];
103
- var _useSetState = (0, _useSetState3["default"])(initVPrev),
104
- _useSetState2 = _slicedToArray(_useSetState, 2),
105
- vPrev = _useSetState2[0],
106
- setVPrev = _useSetState2[1]; //文件预览相关
141
+ _useState8 = _slicedToArray(_useState7, 2),
142
+ imageCt = _useState8[0],
143
+ setImageCt = _useState8[1];
107
144
 
145
+ var _useSetState = (0, _useSetState3["default"])(initVPrev),
146
+ _useSetState2 = _slicedToArray(_useSetState, 2),
147
+ vPrev = _useSetState2[0],
148
+ setVPrev = _useSetState2[1]; //文件预览相关
108
149
  // 参数中拼接token
150
+
151
+
109
152
  function joinToken(str) {
110
153
  if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {
111
154
  return str.replace('?', "?token=".concat((0, _getUrlParam["default"])('token') || '', "&"));
112
155
  } else if (str.indexOf('?') === -1) {
113
156
  return str + "?token=".concat((0, _getUrlParam["default"])('token') || '');
114
157
  }
158
+
115
159
  return str;
116
160
  }
161
+
117
162
  var url = {
118
163
  action: props.action || initUrl.action,
119
164
  downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),
120
- thumbnailUrl: joinToken((_window = window) !== null && _window !== void 0 && _window.flsPrefix ? "".concat(window.flsPrefix).concat(initUrl.thumbnailUrl) : "".concat(props.thumbnailUrl || initUrl.thumbnailUrl))
121
- //previewUrl: props.previewUrl || initUrl.previewUrl,
122
- };
165
+ thumbnailUrl: joinToken((_window = window) !== null && _window !== void 0 && _window.flsPrefix ? "".concat(window.flsPrefix).concat(initUrl.thumbnailUrl) : "".concat(props.thumbnailUrl || initUrl.thumbnailUrl)) //previewUrl: props.previewUrl || initUrl.previewUrl,
123
166
 
167
+ };
124
168
  var action = url.action,
125
- downloadUrl = url.downloadUrl,
126
- thumbnailUrl = url.thumbnailUrl;
169
+ downloadUrl = url.downloadUrl,
170
+ thumbnailUrl = url.thumbnailUrl;
127
171
  (0, _react.useEffect)(function () {
128
172
  setFileList(getSynFileList(props) || []);
129
173
  }, [flag]);
130
174
  (0, _react.useEffect)(function () {
131
175
  if (Array.isArray(fileList)) {
132
176
  // 只有图片的才可以预览,这边需要判断是否是图片
133
- var imagelist = [];
134
- // 只能通过后缀来判断
177
+ var imagelist = []; // 只能通过后缀来判断
178
+
135
179
  fileList.map(function (file) {
136
180
  var _file$type;
181
+
137
182
  if (((_file$type = file.type) === null || _file$type === void 0 ? void 0 : _file$type.indexOf('image')) > -1) {
138
183
  imagelist.push(file);
139
184
  }
@@ -146,8 +191,10 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
146
191
  setImageViewer(new _viewerjs["default"](imageCt, {}));
147
192
  }
148
193
  }, [imageCt]);
194
+
149
195
  var getConfig = function getConfig() {
150
196
  var token = (0, _getUrlParam["default"])('token') || '';
197
+
151
198
  var config = _objectSpread(_objectSpread({}, rest), {}, {
152
199
  accept: accept,
153
200
  action: action,
@@ -159,14 +206,18 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
159
206
  }, rest.headers),
160
207
  onChange: function onChange(info) {
161
208
  setFileList(info.fileList);
209
+
162
210
  if (info.file.response && info.file.response.result === 1) {
163
211
  _message["default"].error(info.file.response.errMsg || '上传失败!');
212
+
164
213
  var flt = _toConsumableArray(fileList);
214
+
165
215
  flt.pop();
166
216
  setFileList(flt);
167
217
  return;
168
- }
169
- // 此处根据后台返回的数据结构取得文件ID
218
+ } // 此处根据后台返回的数据结构取得文件ID
219
+
220
+
170
221
  if (info.file.status !== 'uploading' && info.file.status !== 'removed') {
171
222
  var vtxId = info.file.response && Array.isArray(info.file.response.data) && info.file.response.data.length > 0 ? info.file.response.data[0].id : undefined;
172
223
  var newFileList = info.fileList;
@@ -187,21 +238,23 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
187
238
  thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined
188
239
  });
189
240
  }
241
+
190
242
  return item;
191
243
  });
244
+
192
245
  if (mode == 'single') {
193
246
  setFileList([newFile]);
194
247
  } else {
195
248
  setFileList(newFileList);
196
- }
197
- // 更新组件状态
249
+ } // 更新组件状态
198
250
  // if (mode == 'single' && info.file.status === 'done') {
199
251
  // setFileList([newFile]);
200
252
  // } else {
201
253
  // setFileList(newFileList);
202
254
  // }
203
-
204
255
  // 触发外部方法
256
+
257
+
205
258
  if (info.file.status === 'done') {
206
259
  if (typeof onSuccess == 'function') {
207
260
  onSuccess(newFile);
@@ -222,37 +275,48 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
222
275
  //限制文件大小
223
276
  if (maxFileSize && typeof maxFileSize === 'number') {
224
277
  var limit = file.size < maxFileSize;
278
+
225
279
  if (!limit) {
226
280
  _message["default"].error("\u8BF7\u4E0A\u4F20".concat(maxFileSize / 1024 / 1024, "M\u4EE5\u5185\u7684\u6587\u4EF6"));
281
+
227
282
  return false;
228
283
  }
229
- }
230
- //限制不允许上传的文件类型(通过文件名后缀)
284
+ } //限制不允许上传的文件类型(通过文件名后缀)
285
+
286
+
231
287
  var pointIndex = file.name ? file.name.lastIndexOf('.') : -1;
288
+
232
289
  if (pointIndex > -1) {
233
290
  var fileType = file.name.substring(pointIndex);
291
+
234
292
  if (rejectTypes.includes(fileType)) {
235
293
  _message["default"].error('不支持该文件类型');
294
+
236
295
  return false;
237
296
  }
238
- }
239
- // 多选限制文件数量
297
+ } // 多选限制文件数量
298
+
299
+
240
300
  if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {
241
301
  // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传
242
302
  debouncedMessage("\u6700\u591A\u4E0A\u4F20".concat(maxNum, "\u4E2A"));
243
303
  return false;
244
304
  }
305
+
245
306
  if (typeof _beforeUpload === 'function') {
246
307
  return _beforeUpload(file, afterFileList);
247
308
  }
309
+
248
310
  return true;
249
311
  }
250
312
  });
313
+
251
314
  if (props.onPreview && typeof props.onPreview === 'function') {
252
315
  config.onPreview = props.onPreview;
253
316
  } else {
254
317
  config.onPreview = function (file) {
255
318
  var _file$type2, _file$type3;
319
+
256
320
  if (!file.type) {
257
321
  (0, _downloadFile["default"])(downloadUrl + file.id, {
258
322
  fileName: file.name
@@ -272,9 +336,7 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
272
336
  (0, _downloadFile["default"])(downloadUrl + file.id, {
273
337
  fileName: file.name
274
338
  }, 'blob');
275
- }
276
-
277
- // TODO 暂无好的文件预览服务,等后续完善,只提供下载
339
+ } // TODO 暂无好的文件预览服务,等后续完善,只提供下载
278
340
  // else if (
279
341
  // file.type == 'application/PDF' ||
280
342
  // file.type == 'application/vnd.ms-excel' ||
@@ -292,7 +354,6 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
292
354
  // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\s*/g, ''),
293
355
  // )}`;
294
356
  // }
295
-
296
357
  // setVPrev({
297
358
  // type: 'file',
298
359
  // name: file.name || '文件预览',
@@ -301,17 +362,20 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
301
362
  // visible: true,
302
363
  // });
303
364
  // }
365
+
304
366
  };
305
- }
367
+ } // viewMode
368
+
306
369
 
307
- // viewMode
308
370
  if (viewMode) {
309
371
  config.showUploadList = {
310
372
  showRemoveIcon: false
311
373
  };
312
374
  }
375
+
313
376
  return config;
314
377
  };
378
+
315
379
  var handlePreview = function handlePreview(file) {
316
380
  var imageIndex = imageList.map(function (item) {
317
381
  return item.id;
@@ -320,18 +384,21 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
320
384
  imageViewer.update();
321
385
  imageViewer.view(imageIndex);
322
386
  };
387
+
323
388
  var getSynFileList = function getSynFileList(props) {
324
- var processedFileList = props.fileList || [];
325
- // 单文件模式只取第一个
389
+ var processedFileList = props.fileList || []; // 单文件模式只取第一个
390
+
326
391
  if (props.mode == 'single' && processedFileList.length > 1) {
327
392
  processedFileList = [processedFileList[0]];
328
393
  }
394
+
329
395
  processedFileList = processedFileList.map(function (item, index) {
330
396
  // 将外部传入的简易文件数组处理成为组件需要的数组结构
331
397
  if (item.name === undefined || item.id === undefined) {
332
398
  // eslint-disable-next-line no-console
333
399
  console.error('文件列表的name和id属性不能为空');
334
400
  }
401
+
335
402
  return _objectSpread(_objectSpread({}, item), {}, {
336
403
  uid: -1 - index,
337
404
  status: 'done',
@@ -341,6 +408,7 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
341
408
  });
342
409
  return processedFileList;
343
410
  };
411
+
344
412
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, isDragger ? /*#__PURE__*/_react["default"].createElement(Dragger, _extends({}, getConfig(), {
345
413
  ref: ref
346
414
  }), draggerConfig !== null && draggerConfig !== void 0 && draggerConfig.img ? /*#__PURE__*/_react["default"].createElement("img", {
@@ -382,6 +450,7 @@ var VtxUpload = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
382
450
  }
383
451
  }, imageList.filter(function (item) {
384
452
  var _item$type;
453
+
385
454
  return item.type && ((_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.indexOf('image')) > -1;
386
455
  }).map(function (item, index) {
387
456
  return /*#__PURE__*/_react["default"].createElement("li", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["debouncedMessage","debounce","msg","message","error","initVPrev","type","name","url","downloadUrl","visible","initUrl","action","thumbnailUrl","rejectTypes","Dragger","Upload","VtxUpload","forwardRef","props","ref","isDragger","draggerConfig","accept","mode","viewMode","showUploadList","customizedButton","listType","onSuccess","onError","onRemove","maxFileSize","beforeUpload","maxNum","flag","rest","useThumbnail","undefined","useState","fileList","setFileList","imageViewer","setImageViewer","imageList","setImageList","imageCt","setImageCt","useSetState","vPrev","setVPrev","joinToken","str","indexOf","replace","getUrlParam","window","flsPrefix","useEffect","getSynFileList","Array","isArray","imagelist","map","file","push","Viewer","getConfig","token","config","headers","Authorization","onChange","info","response","result","errMsg","flt","pop","status","vtxId","data","length","id","newFileList","newFile","thumbUrl","filter","item","uid","afterFileList","limit","size","pointIndex","lastIndexOf","fileType","substring","includes","onPreview","downloadFile","fileName","handlePreview","showRemoveIcon","imageIndex","update","view","processedFileList","index","console","img","maxWidth","maxHeight","marginTop","marginBottom","mainText","subText","fontSize","color","display","ins","propTypes","PropTypes","bool","object","string","node","previewUrl","func","number","array"],"sources":["vtx-upload/index.jsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef } from 'react';\nimport useSetState from 'ahooks/es/useSetState';\nimport PropTypes from 'prop-types';\nimport Viewer from 'viewerjs';\nimport Upload from 'antd/es/upload';\nimport Button from 'antd/es/button';\nimport Icon from 'antd/es/icon';\nimport message from 'antd/es/message';\nimport downloadFile from '@vtx/utils/lib/downloadFile';\nimport debounce from 'lodash.debounce';\nimport Prev from './FilePreview';\nimport getUrlParam from '../_util/getUrlParam';\n\nconst debouncedMessage = debounce(msg => {\n message.error(msg);\n}, 500);\n\n//文件预览\nconst initVPrev = {\n type: '', //video or file\n name: '',\n url: '',\n downloadUrl: '',\n visible: false,\n};\n\nconst initUrl = {\n action: '/cloudFile/common/uploadFile',\n downloadUrl: '/cloudFile/common/downloadFile?id=',\n thumbnailUrl:\n '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\n //previewUrl: '/onlinePreview',\n};\n//禁止上传的文件类型\nconst rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];\n\nconst Dragger = Upload.Dragger;\nconst VtxUpload = forwardRef((props, ref) => {\n const {\n isDragger = false, //是否拖拽模式\n draggerConfig = {}, //拖动配置\n accept, //接受上传的文件类型\n mode = 'multiple', //单文件模式or多文件模式\n viewMode, //是否查看模式(隐藏上传按钮)\n showUploadList, //是否展示文件列表\n customizedButton, //自定义上传文字描述\n listType = 'text', //上传列表的样式\n onSuccess, //上传成功\n onError, //上传失败\n onRemove, //删除\n maxFileSize = 5 * 1024 * 1024, //文件大小限制,默认最大5M\n beforeUpload, //上传前回调\n maxNum, //最多上传的文件数量\n flag, //同步数据标记\n ...rest\n } = props;\n // 是否使用缩略图\n const useThumbnail =\n (props.useThumbnail === undefined ? true : props.useThumbnail) &&\n (listType == 'picture' || listType == 'picture-card');\n\n\n const [fileList, setFileList] = useState([]); //初始化文件列表\n const [imageViewer, setImageViewer] = useState(null); //图片预览\n const [imageList, setImageList] = useState([]);\n const [imageCt, setImageCt] = useState(null);\n const [vPrev, setVPrev] = useSetState(initVPrev); //文件预览相关\n\n // 参数中拼接token\n function joinToken(str) {\n if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {\n return str.replace('?', `?token=${getUrlParam('token') || ''}&`);\n } else if (str.indexOf('?') === -1) {\n return str + `?token=${getUrlParam('token') || ''}`;\n }\n return str;\n }\n\n const url = {\n action: props.action || initUrl.action,\n downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),\n thumbnailUrl: joinToken(window?.flsPrefix ? `${window.flsPrefix}${initUrl.thumbnailUrl}` : `${props.thumbnailUrl || initUrl.thumbnailUrl}`),\n //previewUrl: props.previewUrl || initUrl.previewUrl,\n };\n const { action, downloadUrl, thumbnailUrl } = url;\n\n useEffect(() => {\n setFileList(getSynFileList(props) || []);\n }, [flag]);\n\n useEffect(() => {\n if (Array.isArray(fileList)) {\n // 只有图片的才可以预览,这边需要判断是否是图片\n const imagelist = [];\n // 只能通过后缀来判断\n fileList.map(file => {\n if (file.type?.indexOf('image') > -1) {\n imagelist.push(file);\n }\n });\n setImageList(imagelist);\n }\n }, [fileList]);\n\n useEffect(() => {\n if (imageCt) {\n setImageViewer(new Viewer(imageCt, {}));\n }\n }, [imageCt]);\n\n const getConfig = () => {\n let token = getUrlParam('token') || '';\n let config = {\n ...rest,\n accept,\n action,\n fileList: fileList,\n listType,\n showUploadList,\n headers: {\n Authorization: token ? `Bearer ${token}` : '',\n ...rest.headers,\n },\n onChange(info) {\n setFileList(info.fileList);\n if (info.file.response && info.file.response.result === 1) {\n message.error(info.file.response.errMsg || '上传失败!');\n let flt = [...fileList];\n flt.pop();\n setFileList(flt);\n return;\n }\n // 此处根据后台返回的数据结构取得文件ID\n if (info.file.status !== 'uploading' && info.file.status !== 'removed') {\n let vtxId =\n info.file.response &&\n Array.isArray(info.file.response.data) &&\n info.file.response.data.length > 0\n ? info.file.response.data[0].id\n : undefined;\n let newFileList = info.fileList;\n let newFile = vtxId\n ? {\n ...info.file,\n id: vtxId,\n url: downloadUrl + vtxId,\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\n }\n : {\n ...info.file,\n };\n newFileList = info.fileList\n .filter(item => {\n // 有vtxId代表上传成功,有item.id代表之前上传成功的\n if (vtxId || item.id) return true;\n return false;\n })\n .map(item => {\n if (item.uid == info.file.uid) {\n return {\n ...item,\n id: vtxId,\n url: downloadUrl + vtxId,\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\n };\n }\n return item;\n });\n\n if (mode == 'single') {\n setFileList([newFile]);\n } else {\n setFileList(newFileList);\n }\n // 更新组件状态\n // if (mode == 'single' && info.file.status === 'done') {\n // setFileList([newFile]);\n // } else {\n // setFileList(newFileList);\n // }\n\n // 触发外部方法\n if (info.file.status === 'done') {\n if (typeof onSuccess == 'function') {\n onSuccess(newFile);\n }\n } else if (info.file.status === 'error') {\n if (typeof onError == 'function') {\n onError(info.file);\n }\n }\n }\n },\n onRemove(file) {\n if (typeof onRemove == 'function') {\n return onRemove(file);\n }\n },\n beforeUpload(file, afterFileList) {\n //限制文件大小\n if (maxFileSize && typeof maxFileSize === 'number') {\n const limit = file.size < maxFileSize;\n if (!limit) {\n message.error(`请上传${maxFileSize / 1024 / 1024}M以内的文件`);\n return false;\n }\n }\n //限制不允许上传的文件类型(通过文件名后缀)\n let pointIndex = file.name ? file.name.lastIndexOf('.') : -1;\n if (pointIndex > -1) {\n let fileType = file.name.substring(pointIndex);\n if (rejectTypes.includes(fileType)) {\n message.error('不支持该文件类型');\n return false;\n }\n }\n // 多选限制文件数量\n if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {\n // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传\n debouncedMessage(`最多上传${maxNum}个`);\n return false;\n }\n\n if (typeof beforeUpload === 'function') {\n return beforeUpload(file, afterFileList);\n }\n return true;\n },\n };\n\n if (props.onPreview && typeof props.onPreview === 'function') {\n config.onPreview = props.onPreview;\n } else {\n config.onPreview = file => {\n if (!file.type) {\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\n } else if (file.type?.indexOf('image') > -1) {\n handlePreview(file);\n } else if (file.type?.indexOf('video') > -1) {\n // 视频\n setVPrev({\n type: 'video',\n name: file.name || '视频预览',\n url: downloadUrl + file.id,\n downloadUrl: downloadUrl + file.id,\n visible: true,\n });\n } else {\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\n }\n\n // TODO 暂无好的文件预览服务,等后续完善,只提供下载\n // else if (\n // file.type == 'application/PDF' ||\n // file.type == 'application/vnd.ms-excel' ||\n // file.type ==\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\n // file.type == 'application/msword' ||\n // file.type ==\n // 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n // ) {\n // let url = '';\n // if (props.previewUrl) {\n // url = `${props.previewUrl}?id=${file.id}&fileName=${file.name}`;\n // } else {\n // url = `http://183.215.89.162:8012/onlinePreview?url=http://183.136.177.108:8003/cloudFile/common/downloadFile${encodeURIComponent(\n // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\\s*/g, ''),\n // )}`;\n // }\n\n // setVPrev({\n // type: 'file',\n // name: file.name || '文件预览',\n // url: url,\n // downloadUrl: downloadUrl + file.id,\n // visible: true,\n // });\n // }\n };\n }\n\n // viewMode\n if (viewMode) {\n config.showUploadList = { showRemoveIcon: false };\n }\n\n return config;\n };\n\n const handlePreview = file => {\n const imageIndex = imageList.map(item => item.id).indexOf(file.id);\n if (imageIndex == -1) return;\n imageViewer.update();\n imageViewer.view(imageIndex);\n };\n\n const getSynFileList = props => {\n let processedFileList = props.fileList || [];\n // 单文件模式只取第一个\n if (props.mode == 'single' && processedFileList.length > 1) {\n processedFileList = [processedFileList[0]];\n }\n processedFileList = processedFileList.map((item, index) => {\n // 将外部传入的简易文件数组处理成为组件需要的数组结构\n if (item.name === undefined || item.id === undefined) {\n // eslint-disable-next-line no-console\n console.error('文件列表的name和id属性不能为空');\n }\n return {\n ...item,\n uid: -1 - index,\n status: 'done',\n url: item.url || downloadUrl + item.id,\n thumbUrl: useThumbnail ? item.thumbUrl || thumbnailUrl + item.id : undefined,\n };\n });\n return processedFileList;\n };\n return (\n <>\n {isDragger ? (\n <Dragger {...getConfig()} ref={ref}>\n {draggerConfig?.img ? (\n <img\n src={draggerConfig.img}\n alt=\"\"\n style={{\n maxWidth: 100,\n maxHeight: 100,\n marginTop: '3%',\n marginBottom: '5%',\n }}\n />\n ) : (\n <p className=\"ant-upload-drag-icon\">\n <Icon type=\"inbox\" />\n </p>\n )}\n <p className=\"ant-upload-text\">{draggerConfig?.mainText || '点击或拖拽上传'}</p>\n <p className=\"ant-upload-hint\">\n {draggerConfig?.subText || '支持上传word,excel,png...'}\n </p>\n </Dragger>\n ) : (\n <Upload {...getConfig()} ref={ref}>\n {viewMode || fileList.length >= maxNum\n ? null\n : customizedButton ||\n (listType == 'picture-card' ? (\n <div>\n <Icon type=\"plus\" style={{ fontSize: '28px', color: '#999' }} />\n <div className=\"ant-upload-text\">上传</div>\n </div>\n ) : (\n <Button>\n <Icon type=\"upload\" />\n 上传\n </Button>\n ))}\n </Upload>\n )}\n <div style={{ display: 'none' }}>\n <ul\n ref={ins => {\n if (ins) setImageCt(ins);\n }}\n >\n {imageList\n .filter(item => item.type && item.type?.indexOf('image') > -1)\n .map((item, index) => (\n <li key={item.uid}>\n <img\n src={item.url || downloadUrl + item.id}\n alt={item.name || `picture-${index + 1}`}\n />\n </li>\n ))}\n </ul>\n </div>\n {/* 视频预览 */}\n <Prev onCancel={() => setVPrev(initVPrev)} {...vPrev} />\n </>\n );\n});\n\nVtxUpload.propTypes = {\n isDragger: PropTypes.bool,\n draggerConfig: PropTypes.object,\n accept: PropTypes.string,\n mode: PropTypes.string,\n viewMode: PropTypes.bool,\n showUploadList: PropTypes.bool,\n customizedButton: PropTypes.node,\n listType: PropTypes.string,\n action: PropTypes.string,\n downloadUrl: PropTypes.string,\n thumbnailUrl: PropTypes.string,\n previewUrl: PropTypes.string,\n onSuccess: PropTypes.func,\n onError: PropTypes.func,\n onRemove: PropTypes.func,\n onPreview: PropTypes.func,\n maxFileSize: PropTypes.number,\n beforeUpload: PropTypes.func,\n maxNum: PropTypes.number,\n fileList: PropTypes.array,\n flag: PropTypes.number,\n useThumbnail: PropTypes.bool,\n};\nexport default VtxUpload;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["debouncedMessage","debounce","msg","message","error","initVPrev","type","name","url","downloadUrl","visible","initUrl","action","thumbnailUrl","rejectTypes","Dragger","Upload","VtxUpload","forwardRef","props","ref","isDragger","draggerConfig","accept","mode","viewMode","showUploadList","customizedButton","listType","onSuccess","onError","onRemove","maxFileSize","beforeUpload","maxNum","flag","rest","useThumbnail","undefined","useState","fileList","setFileList","imageViewer","setImageViewer","imageList","setImageList","imageCt","setImageCt","useSetState","vPrev","setVPrev","joinToken","str","indexOf","replace","getUrlParam","window","flsPrefix","useEffect","getSynFileList","Array","isArray","imagelist","map","file","push","Viewer","getConfig","token","config","headers","Authorization","onChange","info","response","result","errMsg","flt","pop","status","vtxId","data","length","id","newFileList","newFile","thumbUrl","filter","item","uid","afterFileList","limit","size","pointIndex","lastIndexOf","fileType","substring","includes","onPreview","downloadFile","fileName","handlePreview","showRemoveIcon","imageIndex","update","view","processedFileList","index","console","img","maxWidth","maxHeight","marginTop","marginBottom","mainText","subText","fontSize","color","display","ins","propTypes","PropTypes","bool","object","string","node","previewUrl","func","number","array"],"sources":["vtx-upload/index.jsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef } from 'react';\r\nimport useSetState from 'ahooks/es/useSetState';\r\nimport PropTypes from 'prop-types';\r\nimport Viewer from 'viewerjs';\r\nimport Upload from 'antd/es/upload';\r\nimport Button from 'antd/es/button';\r\nimport Icon from 'antd/es/icon';\r\nimport message from 'antd/es/message';\r\nimport downloadFile from '@vtx/utils/lib/downloadFile';\r\nimport debounce from 'lodash.debounce';\r\nimport Prev from './FilePreview';\r\nimport getUrlParam from '../_util/getUrlParam';\r\n\r\nconst debouncedMessage = debounce(msg => {\r\n message.error(msg);\r\n}, 500);\r\n\r\n//文件预览\r\nconst initVPrev = {\r\n type: '', //video or file\r\n name: '',\r\n url: '',\r\n downloadUrl: '',\r\n visible: false,\r\n};\r\n\r\nconst initUrl = {\r\n action: '/cloudFile/common/uploadFile',\r\n downloadUrl: '/cloudFile/common/downloadFile?id=',\r\n thumbnailUrl:\r\n '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\r\n //previewUrl: '/onlinePreview',\r\n};\r\n//禁止上传的文件类型\r\nconst rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];\r\n\r\nconst Dragger = Upload.Dragger;\r\nconst VtxUpload = forwardRef((props, ref) => {\r\n const {\r\n isDragger = false, //是否拖拽模式\r\n draggerConfig = {}, //拖动配置\r\n accept, //接受上传的文件类型\r\n mode = 'multiple', //单文件模式or多文件模式\r\n viewMode, //是否查看模式(隐藏上传按钮)\r\n showUploadList, //是否展示文件列表\r\n customizedButton, //自定义上传文字描述\r\n listType = 'text', //上传列表的样式\r\n onSuccess, //上传成功\r\n onError, //上传失败\r\n onRemove, //删除\r\n maxFileSize = 5 * 1024 * 1024, //文件大小限制,默认最大5M\r\n beforeUpload, //上传前回调\r\n maxNum, //最多上传的文件数量\r\n flag, //同步数据标记\r\n ...rest\r\n } = props;\r\n // 是否使用缩略图\r\n const useThumbnail =\r\n (props.useThumbnail === undefined ? true : props.useThumbnail) &&\r\n (listType == 'picture' || listType == 'picture-card');\r\n\r\n\r\n const [fileList, setFileList] = useState([]); //初始化文件列表\r\n const [imageViewer, setImageViewer] = useState(null); //图片预览\r\n const [imageList, setImageList] = useState([]);\r\n const [imageCt, setImageCt] = useState(null);\r\n const [vPrev, setVPrev] = useSetState(initVPrev); //文件预览相关\r\n\r\n // 参数中拼接token\r\n function joinToken(str) {\r\n if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {\r\n return str.replace('?', `?token=${getUrlParam('token') || ''}&`);\r\n } else if (str.indexOf('?') === -1) {\r\n return str + `?token=${getUrlParam('token') || ''}`;\r\n }\r\n return str;\r\n }\r\n\r\n const url = {\r\n action: props.action || initUrl.action,\r\n downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),\r\n thumbnailUrl: joinToken(window?.flsPrefix ? `${window.flsPrefix}${initUrl.thumbnailUrl}` : `${props.thumbnailUrl || initUrl.thumbnailUrl}`),\r\n //previewUrl: props.previewUrl || initUrl.previewUrl,\r\n };\r\n const { action, downloadUrl, thumbnailUrl } = url;\r\n\r\n useEffect(() => {\r\n setFileList(getSynFileList(props) || []);\r\n }, [flag]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(fileList)) {\r\n // 只有图片的才可以预览,这边需要判断是否是图片\r\n const imagelist = [];\r\n // 只能通过后缀来判断\r\n fileList.map(file => {\r\n if (file.type?.indexOf('image') > -1) {\r\n imagelist.push(file);\r\n }\r\n });\r\n setImageList(imagelist);\r\n }\r\n }, [fileList]);\r\n\r\n useEffect(() => {\r\n if (imageCt) {\r\n setImageViewer(new Viewer(imageCt, {}));\r\n }\r\n }, [imageCt]);\r\n\r\n const getConfig = () => {\r\n let token = getUrlParam('token') || '';\r\n let config = {\r\n ...rest,\r\n accept,\r\n action,\r\n fileList: fileList,\r\n listType,\r\n showUploadList,\r\n headers: {\r\n Authorization: token ? `Bearer ${token}` : '',\r\n ...rest.headers,\r\n },\r\n onChange(info) {\r\n setFileList(info.fileList);\r\n if (info.file.response && info.file.response.result === 1) {\r\n message.error(info.file.response.errMsg || '上传失败!');\r\n let flt = [...fileList];\r\n flt.pop();\r\n setFileList(flt);\r\n return;\r\n }\r\n // 此处根据后台返回的数据结构取得文件ID\r\n if (info.file.status !== 'uploading' && info.file.status !== 'removed') {\r\n let vtxId =\r\n info.file.response &&\r\n Array.isArray(info.file.response.data) &&\r\n info.file.response.data.length > 0\r\n ? info.file.response.data[0].id\r\n : undefined;\r\n let newFileList = info.fileList;\r\n let newFile = vtxId\r\n ? {\r\n ...info.file,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n }\r\n : {\r\n ...info.file,\r\n };\r\n newFileList = info.fileList\r\n .filter(item => {\r\n // 有vtxId代表上传成功,有item.id代表之前上传成功的\r\n if (vtxId || item.id) return true;\r\n return false;\r\n })\r\n .map(item => {\r\n if (item.uid == info.file.uid) {\r\n return {\r\n ...item,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n if (mode == 'single') {\r\n setFileList([newFile]);\r\n } else {\r\n setFileList(newFileList);\r\n }\r\n // 更新组件状态\r\n // if (mode == 'single' && info.file.status === 'done') {\r\n // setFileList([newFile]);\r\n // } else {\r\n // setFileList(newFileList);\r\n // }\r\n\r\n // 触发外部方法\r\n if (info.file.status === 'done') {\r\n if (typeof onSuccess == 'function') {\r\n onSuccess(newFile);\r\n }\r\n } else if (info.file.status === 'error') {\r\n if (typeof onError == 'function') {\r\n onError(info.file);\r\n }\r\n }\r\n }\r\n },\r\n onRemove(file) {\r\n if (typeof onRemove == 'function') {\r\n return onRemove(file);\r\n }\r\n },\r\n beforeUpload(file, afterFileList) {\r\n //限制文件大小\r\n if (maxFileSize && typeof maxFileSize === 'number') {\r\n const limit = file.size < maxFileSize;\r\n if (!limit) {\r\n message.error(`请上传${maxFileSize / 1024 / 1024}M以内的文件`);\r\n return false;\r\n }\r\n }\r\n //限制不允许上传的文件类型(通过文件名后缀)\r\n let pointIndex = file.name ? file.name.lastIndexOf('.') : -1;\r\n if (pointIndex > -1) {\r\n let fileType = file.name.substring(pointIndex);\r\n if (rejectTypes.includes(fileType)) {\r\n message.error('不支持该文件类型');\r\n return false;\r\n }\r\n }\r\n // 多选限制文件数量\r\n if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {\r\n // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传\r\n debouncedMessage(`最多上传${maxNum}个`);\r\n return false;\r\n }\r\n\r\n if (typeof beforeUpload === 'function') {\r\n return beforeUpload(file, afterFileList);\r\n }\r\n return true;\r\n },\r\n };\r\n\r\n if (props.onPreview && typeof props.onPreview === 'function') {\r\n config.onPreview = props.onPreview;\r\n } else {\r\n config.onPreview = file => {\r\n if (!file.type) {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n } else if (file.type?.indexOf('image') > -1) {\r\n handlePreview(file);\r\n } else if (file.type?.indexOf('video') > -1) {\r\n // 视频\r\n setVPrev({\r\n type: 'video',\r\n name: file.name || '视频预览',\r\n url: downloadUrl + file.id,\r\n downloadUrl: downloadUrl + file.id,\r\n visible: true,\r\n });\r\n } else {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n }\r\n\r\n // TODO 暂无好的文件预览服务,等后续完善,只提供下载\r\n // else if (\r\n // file.type == 'application/PDF' ||\r\n // file.type == 'application/vnd.ms-excel' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n // file.type == 'application/msword' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\r\n // ) {\r\n // let url = '';\r\n // if (props.previewUrl) {\r\n // url = `${props.previewUrl}?id=${file.id}&fileName=${file.name}`;\r\n // } else {\r\n // url = `http://183.215.89.162:8012/onlinePreview?url=http://183.136.177.108:8003/cloudFile/common/downloadFile${encodeURIComponent(\r\n // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\\s*/g, ''),\r\n // )}`;\r\n // }\r\n\r\n // setVPrev({\r\n // type: 'file',\r\n // name: file.name || '文件预览',\r\n // url: url,\r\n // downloadUrl: downloadUrl + file.id,\r\n // visible: true,\r\n // });\r\n // }\r\n };\r\n }\r\n\r\n // viewMode\r\n if (viewMode) {\r\n config.showUploadList = { showRemoveIcon: false };\r\n }\r\n\r\n return config;\r\n };\r\n\r\n const handlePreview = file => {\r\n const imageIndex = imageList.map(item => item.id).indexOf(file.id);\r\n if (imageIndex == -1) return;\r\n imageViewer.update();\r\n imageViewer.view(imageIndex);\r\n };\r\n\r\n const getSynFileList = props => {\r\n let processedFileList = props.fileList || [];\r\n // 单文件模式只取第一个\r\n if (props.mode == 'single' && processedFileList.length > 1) {\r\n processedFileList = [processedFileList[0]];\r\n }\r\n processedFileList = processedFileList.map((item, index) => {\r\n // 将外部传入的简易文件数组处理成为组件需要的数组结构\r\n if (item.name === undefined || item.id === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.error('文件列表的name和id属性不能为空');\r\n }\r\n return {\r\n ...item,\r\n uid: -1 - index,\r\n status: 'done',\r\n url: item.url || downloadUrl + item.id,\r\n thumbUrl: useThumbnail ? item.thumbUrl || thumbnailUrl + item.id : undefined,\r\n };\r\n });\r\n return processedFileList;\r\n };\r\n return (\r\n <>\r\n {isDragger ? (\r\n <Dragger {...getConfig()} ref={ref}>\r\n {draggerConfig?.img ? (\r\n <img\r\n src={draggerConfig.img}\r\n alt=\"\"\r\n style={{\r\n maxWidth: 100,\r\n maxHeight: 100,\r\n marginTop: '3%',\r\n marginBottom: '5%',\r\n }}\r\n />\r\n ) : (\r\n <p className=\"ant-upload-drag-icon\">\r\n <Icon type=\"inbox\" />\r\n </p>\r\n )}\r\n <p className=\"ant-upload-text\">{draggerConfig?.mainText || '点击或拖拽上传'}</p>\r\n <p className=\"ant-upload-hint\">\r\n {draggerConfig?.subText || '支持上传word,excel,png...'}\r\n </p>\r\n </Dragger>\r\n ) : (\r\n <Upload {...getConfig()} ref={ref}>\r\n {viewMode || fileList.length >= maxNum\r\n ? null\r\n : customizedButton ||\r\n (listType == 'picture-card' ? (\r\n <div>\r\n <Icon type=\"plus\" style={{ fontSize: '28px', color: '#999' }} />\r\n <div className=\"ant-upload-text\">上传</div>\r\n </div>\r\n ) : (\r\n <Button>\r\n <Icon type=\"upload\" />\r\n 上传\r\n </Button>\r\n ))}\r\n </Upload>\r\n )}\r\n <div style={{ display: 'none' }}>\r\n <ul\r\n ref={ins => {\r\n if (ins) setImageCt(ins);\r\n }}\r\n >\r\n {imageList\r\n .filter(item => item.type && item.type?.indexOf('image') > -1)\r\n .map((item, index) => (\r\n <li key={item.uid}>\r\n <img\r\n src={item.url || downloadUrl + item.id}\r\n alt={item.name || `picture-${index + 1}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n {/* 视频预览 */}\r\n <Prev onCancel={() => setVPrev(initVPrev)} {...vPrev} />\r\n </>\r\n );\r\n});\r\n\r\nVtxUpload.propTypes = {\r\n isDragger: PropTypes.bool,\r\n draggerConfig: PropTypes.object,\r\n accept: PropTypes.string,\r\n mode: PropTypes.string,\r\n viewMode: PropTypes.bool,\r\n showUploadList: PropTypes.bool,\r\n customizedButton: PropTypes.node,\r\n listType: PropTypes.string,\r\n action: PropTypes.string,\r\n downloadUrl: PropTypes.string,\r\n thumbnailUrl: PropTypes.string,\r\n previewUrl: PropTypes.string,\r\n onSuccess: PropTypes.func,\r\n onError: PropTypes.func,\r\n onRemove: PropTypes.func,\r\n onPreview: PropTypes.func,\r\n maxFileSize: PropTypes.number,\r\n beforeUpload: PropTypes.func,\r\n maxNum: PropTypes.number,\r\n fileList: PropTypes.array,\r\n flag: PropTypes.number,\r\n useThumbnail: PropTypes.bool,\r\n};\r\nexport default VtxUpload;\r\n"],"mappings":"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"}