cloud-b2b 1.1.50 → 1.1.51

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 (309) hide show
  1. package/package.json +44 -22
  2. package/src/Area/Area.js +94 -0
  3. package/src/Card/Card.js +16 -0
  4. package/src/CodeInput/CodeInput.js +76 -0
  5. package/src/Control/Control.js +338 -0
  6. package/src/Control/event.js +45 -0
  7. package/src/Enhance/Dialogs.js +24 -0
  8. package/src/Enhance/Loading.js +83 -0
  9. package/{es → src}/Enhance/index.js +8 -8
  10. package/src/Header/Header.js +149 -0
  11. package/src/Header/Vertical.js +74 -0
  12. package/src/ImageView/ImageView.js +62 -0
  13. package/src/Indent/Indent.js +12 -0
  14. package/src/InpurCascader/InputCascader.js +83 -0
  15. package/src/InputEditor/InputEditor.js +93 -0
  16. package/src/InputSearch/InputSearch.js +186 -0
  17. package/src/InputSelect/InputSelect.js +103 -0
  18. package/src/InputTreeSelect/InputTreeSelect.js +87 -0
  19. package/src/InputWriting/InputWriting.js +65 -0
  20. package/src/Layout/Layout.js +121 -0
  21. package/src/LayoutLink/LayoutLink.js +59 -0
  22. package/src/Link/Link.js +57 -0
  23. package/src/Loading/Loading.js +15 -0
  24. package/src/Loading2/Loading2.js +15 -0
  25. package/src/ModalWithDrag/ModalWithDrag.js +17 -0
  26. package/src/ModalWithDrag/drag.js +128 -0
  27. package/src/NumberInput/NumberInput.js +137 -0
  28. package/src/Search/Search.js +368 -0
  29. package/src/Sidebar/Sidebar.js +111 -0
  30. package/src/Sidebar2/Sidebar.js +143 -0
  31. package/src/SuperForm/SuperForm.js +516 -0
  32. package/src/SuperForm2/SuperForm.js +588 -0
  33. package/src/SuperIcon/SuperIcon.js +14 -0
  34. package/src/SuperPagination/SuperPagination.js +65 -0
  35. package/src/SuperTab/SuperTab.js +84 -0
  36. package/src/SuperTab2/SuperTab2.js +94 -0
  37. package/src/SuperTable/DragSortRow.js +62 -0
  38. package/src/SuperTable/FilterDropDown.js +111 -0
  39. package/src/SuperTable/SuperTable.js +590 -0
  40. package/src/SuperTable/fixed.js +34 -0
  41. package/src/SuperTable2/SuperTable2.js +600 -0
  42. package/src/SuperTable2/SuperTableCell.js +144 -0
  43. package/src/SuperTable3/FilterDropDown.js +111 -0
  44. package/src/SuperTable3/SuperTable.js +498 -0
  45. package/src/SuperTable3/fixed.js +34 -0
  46. package/src/SuperToolbar/SuperToolbar.js +128 -0
  47. package/src/SuperUpload/SuperUpload.js +137 -0
  48. package/src/Title/Title.js +18 -0
  49. package/src/Viewer/ImageViews.js +220 -0
  50. package/src/Viewer/Viewer.js +97 -0
  51. package/src/WingBlank/WingBlank.js +14 -0
  52. package/src/helper.js +185 -0
  53. package/src/history.js +6 -0
  54. package/src/index.js +38 -0
  55. package/src/variables.js +5 -0
  56. package/test/index.html +10 -0
  57. package/test/test.js +16 -0
  58. package/test/test.less +12 -0
  59. package/test/webpack.config.js +71 -0
  60. package/tools/babel.config.js +14 -0
  61. package/tools/build.js +70 -0
  62. package/tools/publish.js +9 -0
  63. package/tools/util.js +53 -0
  64. package/es/Area/Area.js +0 -170
  65. package/es/Card/Card.js +0 -20
  66. package/es/CodeInput/CodeInput.js +0 -152
  67. package/es/Control/Control.js +0 -496
  68. package/es/Control/event.js +0 -57
  69. package/es/Enhance/Dialogs.js +0 -67
  70. package/es/Enhance/Loading.js +0 -151
  71. package/es/Header/Header.js +0 -194
  72. package/es/Header/Vertical.js +0 -129
  73. package/es/ImageView/ImageView.js +0 -117
  74. package/es/Indent/Indent.js +0 -23
  75. package/es/InpurCascader/InputCascader.js +0 -135
  76. package/es/InputEditor/InputEditor.js +0 -113
  77. package/es/InputSearch/InputSearch.js +0 -311
  78. package/es/InputSelect/InputSelect.js +0 -191
  79. package/es/InputTreeSelect/InputTreeSelect.js +0 -147
  80. package/es/InputWriting/InputWriting.js +0 -107
  81. package/es/Layout/Layout.js +0 -232
  82. package/es/LayoutLink/LayoutLink.js +0 -82
  83. package/es/Link/Link.js +0 -108
  84. package/es/Loading/Loading.js +0 -15
  85. package/es/Loading2/Loading2.js +0 -11
  86. package/es/ModalWithDrag/ModalWithDrag.js +0 -34
  87. package/es/ModalWithDrag/drag.js +0 -133
  88. package/es/NumberInput/NumberInput.js +0 -240
  89. package/es/Search/Search.js +0 -595
  90. package/es/Sidebar/Sidebar.js +0 -165
  91. package/es/Sidebar2/Sidebar.js +0 -192
  92. package/es/SuperForm/SuperForm.js +0 -720
  93. package/es/SuperForm2/SuperForm.js +0 -828
  94. package/es/SuperIcon/SuperIcon.js +0 -30
  95. package/es/SuperPagination/SuperPagination.js +0 -126
  96. package/es/SuperTab/SuperTab.js +0 -130
  97. package/es/SuperTab2/SuperTab2.js +0 -167
  98. package/es/SuperTable/DragSortRow.js +0 -125
  99. package/es/SuperTable/FilterDropDown.js +0 -188
  100. package/es/SuperTable/SuperTable.js +0 -940
  101. package/es/SuperTable/fixed.js +0 -42
  102. package/es/SuperTable2/SuperTable2.js +0 -1019
  103. package/es/SuperTable2/SuperTableCell.js +0 -242
  104. package/es/SuperTable3/FilterDropDown.js +0 -188
  105. package/es/SuperTable3/SuperTable.js +0 -790
  106. package/es/SuperTable3/fixed.js +0 -42
  107. package/es/SuperToolbar/SuperToolbar.js +0 -223
  108. package/es/SuperUpload/SuperUpload.js +0 -434
  109. package/es/Title/Title.js +0 -36
  110. package/es/Viewer/ImageViews.js +0 -311
  111. package/es/Viewer/Viewer.js +0 -149
  112. package/es/WingBlank/WingBlank.js +0 -20
  113. package/es/helper.js +0 -169
  114. package/es/history.js +0 -5
  115. package/es/index.js +0 -37
  116. package/es/variables.js +0 -4
  117. package/lib/Area/Area.js +0 -198
  118. package/lib/Area/package.json +0 -6
  119. package/lib/Card/Card.js +0 -38
  120. package/lib/Card/package.json +0 -6
  121. package/lib/CodeInput/CodeInput.js +0 -179
  122. package/lib/CodeInput/package.json +0 -6
  123. package/lib/Control/Control.js +0 -548
  124. package/lib/Control/event.js +0 -68
  125. package/lib/Control/package.json +0 -6
  126. package/lib/Enhance/Dialogs.js +0 -87
  127. package/lib/Enhance/Loading.js +0 -175
  128. package/lib/Enhance/index.js +0 -35
  129. package/lib/Enhance/package.json +0 -6
  130. package/lib/Header/Header.js +0 -215
  131. package/lib/Header/Header.less +0 -95
  132. package/lib/Header/Vertical.js +0 -150
  133. package/lib/Header/Vertical.less +0 -60
  134. package/lib/Header/package.json +0 -6
  135. package/lib/ImageView/ImageView.js +0 -134
  136. package/lib/ImageView/ImageView.less +0 -14
  137. package/lib/ImageView/package.json +0 -6
  138. package/lib/Indent/Indent.js +0 -38
  139. package/lib/Indent/package.json +0 -6
  140. package/lib/InpurCascader/InputCascader.js +0 -156
  141. package/lib/InpurCascader/package.json +0 -6
  142. package/lib/InputEditor/InputEditor.js +0 -131
  143. package/lib/InputEditor/inputEditor.less +0 -8
  144. package/lib/InputEditor/package.json +0 -6
  145. package/lib/InputSearch/InputSearch.js +0 -327
  146. package/lib/InputSearch/package.json +0 -6
  147. package/lib/InputSelect/InputSelect.js +0 -214
  148. package/lib/InputSelect/package.json +0 -6
  149. package/lib/InputTreeSelect/InputTreeSelect.js +0 -169
  150. package/lib/InputTreeSelect/package.json +0 -6
  151. package/lib/InputWriting/InputWriting.js +0 -123
  152. package/lib/InputWriting/package.json +0 -6
  153. package/lib/Layout/Layout.js +0 -258
  154. package/lib/Layout/Layout.less +0 -28
  155. package/lib/Layout/package.json +0 -6
  156. package/lib/LayoutLink/LayoutLink.js +0 -114
  157. package/lib/LayoutLink/LayoutLink.less +0 -53
  158. package/lib/LayoutLink/package.json +0 -6
  159. package/lib/Link/Link.js +0 -130
  160. package/lib/Link/package.json +0 -6
  161. package/lib/Loading/Loading.js +0 -30
  162. package/lib/Loading/Loading.less +0 -13
  163. package/lib/Loading/package.json +0 -6
  164. package/lib/Loading2/Loading2.js +0 -26
  165. package/lib/Loading2/Loading2.less +0 -19
  166. package/lib/Loading2/package.json +0 -6
  167. package/lib/ModalWithDrag/ModalWithDrag.js +0 -53
  168. package/lib/ModalWithDrag/ModalWithDrag.less +0 -6
  169. package/lib/ModalWithDrag/drag.js +0 -147
  170. package/lib/ModalWithDrag/package.json +0 -6
  171. package/lib/NumberInput/NumberInput.js +0 -262
  172. package/lib/NumberInput/package.json +0 -6
  173. package/lib/Search/Search.js +0 -616
  174. package/lib/Search/Search.less +0 -63
  175. package/lib/Search/package.json +0 -6
  176. package/lib/Sidebar/Sidebar.js +0 -186
  177. package/lib/Sidebar/Sidebar.less +0 -78
  178. package/lib/Sidebar/package.json +0 -6
  179. package/lib/Sidebar2/Sidebar.js +0 -213
  180. package/lib/Sidebar2/Sidebar.less +0 -153
  181. package/lib/Sidebar2/package.json +0 -6
  182. package/lib/SuperForm/SuperForm.js +0 -731
  183. package/lib/SuperForm/SuperForm.less +0 -52
  184. package/lib/SuperForm/package.json +0 -6
  185. package/lib/SuperForm2/SuperForm.js +0 -834
  186. package/lib/SuperForm2/SuperForm.less +0 -52
  187. package/lib/SuperForm2/package.json +0 -6
  188. package/lib/SuperIcon/SuperIcon.js +0 -47
  189. package/lib/SuperIcon/package.json +0 -6
  190. package/lib/SuperPagination/SuperPagination.js +0 -145
  191. package/lib/SuperPagination/package.json +0 -6
  192. package/lib/SuperTab/SuperTab.js +0 -146
  193. package/lib/SuperTab/SuperTab.less +0 -43
  194. package/lib/SuperTab/package.json +0 -6
  195. package/lib/SuperTab2/SuperTab2.js +0 -191
  196. package/lib/SuperTab2/SuperTab2.less +0 -18
  197. package/lib/SuperTab2/package.json +0 -6
  198. package/lib/SuperTable/DragSortRow.js +0 -142
  199. package/lib/SuperTable/DragSortRow.less +0 -17
  200. package/lib/SuperTable/FilterDropDown.js +0 -205
  201. package/lib/SuperTable/FilterDropDown.less +0 -30
  202. package/lib/SuperTable/SuperTable.js +0 -945
  203. package/lib/SuperTable/SuperTable.less +0 -132
  204. package/lib/SuperTable/fixed.js +0 -55
  205. package/lib/SuperTable/package.json +0 -6
  206. package/lib/SuperTable2/SuperTable2.js +0 -1047
  207. package/lib/SuperTable2/SuperTable2.less +0 -118
  208. package/lib/SuperTable2/SuperTableCell.js +0 -258
  209. package/lib/SuperTable2/package.json +0 -6
  210. package/lib/SuperTable3/FilterDropDown.js +0 -205
  211. package/lib/SuperTable3/FilterDropDown.less +0 -29
  212. package/lib/SuperTable3/SuperTable.js +0 -795
  213. package/lib/SuperTable3/SuperTable.less +0 -99
  214. package/lib/SuperTable3/fixed.js +0 -55
  215. package/lib/SuperTable3/package.json +0 -6
  216. package/lib/SuperToolbar/SuperToolbar.js +0 -248
  217. package/lib/SuperToolbar/SuperToolbar.less +0 -17
  218. package/lib/SuperToolbar/package.json +0 -6
  219. package/lib/SuperUpload/SuperUpload.js +0 -481
  220. package/lib/SuperUpload/SuperUpload.less +0 -28
  221. package/lib/SuperUpload/package.json +0 -6
  222. package/lib/Title/Title.js +0 -54
  223. package/lib/Title/Title.less +0 -35
  224. package/lib/Title/package.json +0 -6
  225. package/lib/Viewer/ImageViews.js +0 -323
  226. package/lib/Viewer/Viewer.js +0 -167
  227. package/lib/Viewer/Viewer.less +0 -67
  228. package/lib/Viewer/imgView.less +0 -59
  229. package/lib/Viewer/package.json +0 -7
  230. package/lib/WingBlank/WingBlank.js +0 -37
  231. package/lib/WingBlank/WingBlank.less +0 -12
  232. package/lib/WingBlank/package.json +0 -6
  233. package/lib/adjust.less +0 -89
  234. package/lib/helper.js +0 -204
  235. package/lib/history.js +0 -18
  236. package/lib/index.js +0 -347
  237. package/lib/index.less +0 -31
  238. package/lib/style.less +0 -30
  239. package/lib/variables.js +0 -16
  240. package/lib/variables.less +0 -73
  241. /package/{es → src}/Area/package.json +0 -0
  242. /package/{es → src}/Card/package.json +0 -0
  243. /package/{es → src}/CodeInput/package.json +0 -0
  244. /package/{es → src}/Control/package.json +0 -0
  245. /package/{es → src}/Enhance/package.json +0 -0
  246. /package/{es → src}/Header/Header.less +0 -0
  247. /package/{es → src}/Header/Vertical.less +0 -0
  248. /package/{es → src}/Header/package.json +0 -0
  249. /package/{es → src}/ImageView/ImageView.less +0 -0
  250. /package/{es → src}/ImageView/package.json +0 -0
  251. /package/{es → src}/Indent/package.json +0 -0
  252. /package/{es → src}/InpurCascader/package.json +0 -0
  253. /package/{es → src}/InputEditor/inputEditor.less +0 -0
  254. /package/{es → src}/InputEditor/package.json +0 -0
  255. /package/{es → src}/InputSearch/package.json +0 -0
  256. /package/{es → src}/InputSelect/package.json +0 -0
  257. /package/{es → src}/InputTreeSelect/package.json +0 -0
  258. /package/{es → src}/InputWriting/package.json +0 -0
  259. /package/{es → src}/Layout/Layout.less +0 -0
  260. /package/{es → src}/Layout/package.json +0 -0
  261. /package/{es → src}/LayoutLink/LayoutLink.less +0 -0
  262. /package/{es → src}/LayoutLink/package.json +0 -0
  263. /package/{es → src}/Link/package.json +0 -0
  264. /package/{es → src}/Loading/Loading.less +0 -0
  265. /package/{es → src}/Loading/package.json +0 -0
  266. /package/{es → src}/Loading2/Loading2.less +0 -0
  267. /package/{es → src}/Loading2/package.json +0 -0
  268. /package/{es → src}/ModalWithDrag/ModalWithDrag.less +0 -0
  269. /package/{es → src}/ModalWithDrag/package.json +0 -0
  270. /package/{es → src}/NumberInput/package.json +0 -0
  271. /package/{es → src}/Search/Search.less +0 -0
  272. /package/{es → src}/Search/package.json +0 -0
  273. /package/{es → src}/Sidebar/Sidebar.less +0 -0
  274. /package/{es → src}/Sidebar/package.json +0 -0
  275. /package/{es → src}/Sidebar2/Sidebar.less +0 -0
  276. /package/{es → src}/Sidebar2/package.json +0 -0
  277. /package/{es → src}/SuperForm/SuperForm.less +0 -0
  278. /package/{es → src}/SuperForm/package.json +0 -0
  279. /package/{es → src}/SuperForm2/SuperForm.less +0 -0
  280. /package/{es → src}/SuperForm2/package.json +0 -0
  281. /package/{es → src}/SuperIcon/package.json +0 -0
  282. /package/{es → src}/SuperPagination/package.json +0 -0
  283. /package/{es → src}/SuperTab/SuperTab.less +0 -0
  284. /package/{es → src}/SuperTab/package.json +0 -0
  285. /package/{es → src}/SuperTab2/SuperTab2.less +0 -0
  286. /package/{es → src}/SuperTab2/package.json +0 -0
  287. /package/{es → src}/SuperTable/DragSortRow.less +0 -0
  288. /package/{es → src}/SuperTable/FilterDropDown.less +0 -0
  289. /package/{es → src}/SuperTable/SuperTable.less +0 -0
  290. /package/{es → src}/SuperTable/package.json +0 -0
  291. /package/{es → src}/SuperTable2/SuperTable2.less +0 -0
  292. /package/{es → src}/SuperTable2/package.json +0 -0
  293. /package/{es → src}/SuperTable3/FilterDropDown.less +0 -0
  294. /package/{es → src}/SuperTable3/SuperTable.less +0 -0
  295. /package/{es → src}/SuperTable3/package.json +0 -0
  296. /package/{es → src}/SuperToolbar/SuperToolbar.less +0 -0
  297. /package/{es → src}/SuperToolbar/package.json +0 -0
  298. /package/{es → src}/SuperUpload/SuperUpload.less +0 -0
  299. /package/{es → src}/SuperUpload/package.json +0 -0
  300. /package/{es → src}/Title/Title.less +0 -0
  301. /package/{es → src}/Title/package.json +0 -0
  302. /package/{es → src}/Viewer/Viewer.less +0 -0
  303. /package/{es → src}/Viewer/imgView.less +0 -0
  304. /package/{es → src}/Viewer/package.json +0 -0
  305. /package/{es → src}/WingBlank/WingBlank.less +0 -0
  306. /package/{es → src}/WingBlank/package.json +0 -0
  307. /package/{es → src}/adjust.less +0 -0
  308. /package/{es → src}/style.less +0 -0
  309. /package/{es → src}/variables.less +0 -0
@@ -0,0 +1,137 @@
1
+ import React, {useState, useEffect} from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import {Upload, Button, Icon} from 'antd';
4
+ import helper from '../helper';
5
+ import Title from '../Title';
6
+ import variables from '../variables';
7
+ const FORMATS = ['image/jpeg', 'image/gif', 'image/bmp', 'image/jpg', 'image/png', 'image/tiff', 'image/gif', 'image/pcx', 'image/tga', 'image/exif', 'image/fpx', 'image/svg', 'image/psd', 'image/cdr', 'image/pcd', 'image/dxf', 'image/ufo', 'image/eps', 'image/ai', 'image/raw', 'image/WMF','video/mp4'];
8
+ const FORMATS1 = ['.jpeg', '.gif', '.bmp', '.jpg', '.png', '.tiff', '.pcx', '.tga', '.exif', '.fpx', '.svg', '.psd', '.cdr', '.pcd', '.dxf', '.ufo', '.eps', '.ai', '.raw', '.WMF'];
9
+
10
+ //组件属性定义
11
+ const propTypes = {
12
+ fileList: PropTypes.array, //文件列表
13
+ fileDeleteList: PropTypes.array, //需要在页面关闭时删除的服务端文件
14
+ title: PropTypes.string, //附件组的标题
15
+ required: PropTypes.bool, //是否必须上传,默认false
16
+ listType: PropTypes.oneOf['text', 'picture', 'picture-card'], //上传列表的内建样式,支持三种,默认picture-card
17
+ readonly: PropTypes.bool, //所在页面是否只读,默认false
18
+ multiple: PropTypes.bool, //可否多选文件上传,默认true
19
+ limitNumber: PropTypes.number, //附件限制个数,默认10
20
+ limitText: PropTypes.any, //附件个数达到时的文本,或者设置为false则不显示,为true时显示默认文本,默认值true
21
+ limitSize: PropTypes.number, //单个附件限制大小,单位M,默认5
22
+ buttonTitle: PropTypes.string, //上传按钮的标题,默认‘上传’
23
+ onFileChange: PropTypes.func, //文件变更的回掉函数,func({fileList, fileDeleteList})
24
+ };
25
+
26
+ const convertFileList = (fileList) => {
27
+ return fileList.map(item => ({fileFormat: item.fileFormat || 'id', fileName: item.name, fileUrl: item.response ? item.response.result : ''}));
28
+ };
29
+
30
+ const getUploadProps = (props, onPreview, fileList, setFileList) => {
31
+ const {readonly = false, multiple=true, limitSize = 5, listType='picture-card', fileDeleteList=[], onFileChange} = props;
32
+ const onChange = ({file, fileList}) => {
33
+ const {limitNumber}=props
34
+ if (fileList.length>limitNumber)return helper.showError(`文件最多可上传${limitNumber}个`);
35
+ if (!file) return; //过滤掉不符合条件的响应
36
+ let newList = [];
37
+ if (file.response && file.response.returnCode !== 0) { //检查是否上传到文件服务器成功
38
+ helper.showError(`上传失败,${file.response.returnMsg || ''}`);
39
+ newList = fileList.filter(item => item.uid !== file.uid);
40
+ }else {
41
+ newList = fileList.filter(item => item.status).map(item => (FORMATS.indexOf(item.type) === -1) ? {...item, thumbUrl: '/default.png'} : item);
42
+ }
43
+ file.response && onFileChange && onFileChange({
44
+ fileList: convertFileList(newList),
45
+ fileDeleteList
46
+ });
47
+ newList.fileName=newList.name
48
+ setFileList(newList);
49
+ };
50
+ const onRemove = async (fileRemove) => {
51
+ props.onRemove && props.onRemove(fileRemove, fileList, fileDeleteList);
52
+ };
53
+ return{
54
+ action: props.action || '/api/proxy/zuul/archiver-service/file/upload/document',
55
+ fileList,
56
+ listType,
57
+ multiple,
58
+ onChange,
59
+ onRemove,
60
+ onPreview: listType === 'text' ? undefined : onPreview,
61
+ beforeUpload: (currentFile) => {
62
+ const isLt = currentFile.size / 1024 / 1024 < limitSize; // 附件大小限制,单位M
63
+ if (!isLt) {
64
+ helper.showError(`附件大小不能超过${limitSize}M`);
65
+ }
66
+ return isLt;
67
+ },
68
+ showUploadList: {
69
+ showPreviewIcon: listType !== 'text',
70
+ showRemoveIcon: !readonly,
71
+ showDownloadIcon: true,
72
+ }
73
+ };
74
+ };
75
+
76
+ function UploadButton({buttonLabel='上传', title='附件', required=false, fileList=[], limitText=true, limitNumber=10, listType='picture-card', needText = false,remark='大小>=5M'}) {
77
+ const canUpload = fileList.length < limitNumber;
78
+ return canUpload ? (
79
+ listType === 'picture-card' ? (
80
+ <div>
81
+ <Icon type="plus" />
82
+ <div className="ant-upload-text">Upload</div>
83
+ </div>
84
+ ) : (
85
+ <Title title={title} required={required}>
86
+ <Button size='small' style={{marginLeft: '-10px'}}>{buttonLabel}</Button>
87
+ </Title>
88
+ )
89
+ ) : (
90
+ listType === 'picture-card' ? null : <Title title={title} required={required}>{!limitText ? null : <span>{limitText === true ? `附件个数若大于${limitNumber}个请压缩后上传` : limitText}</span>}</Title>
91
+ )
92
+ }
93
+
94
+
95
+ function SuperUpload(props) {
96
+ const [loading, setLoading] = useState(true);
97
+ const [fileList, setFileList] = useState( []);
98
+ let initFileList=[]
99
+ useEffect( () => {
100
+ async function fetchImgData() {
101
+ if (props.fileList.length>0 || fileList.length>0) {
102
+ for(let item of props.fileList) {
103
+ if (item.fileUrl=='') {
104
+ initFileList = props.getFileList ? await props.getFileList(fileList) : [];
105
+ }else{
106
+ initFileList = props.getFileList ? await props.getFileList(props.fileList) : [];
107
+ }
108
+ }
109
+ for(let item of fileList) {
110
+ initFileList = props.getFileList ? await props.getFileList(fileList) : [];
111
+ }
112
+ }
113
+ //const initFileList = props.getFileList ? await props.getFileList(props.fileList) : [];
114
+ setFileList(initFileList?initFileList:[]);
115
+ setLoading(false);
116
+ }
117
+ fetchImgData();
118
+ }, [props.fileList]);
119
+ const onPreview = async (file) => {
120
+ props.onPreview && props.onPreview(file, fileList);
121
+ };
122
+ const uploadProps = getUploadProps(props, onPreview, fileList, setFileList);
123
+ const {listType='picture-card', limitNumber=10, readonly, title} = props;
124
+ const className = listType === 'picture-card' && fileList?.length < limitNumber ? variables('SuperUpload') : variables('SuperUpload2');
125
+ const canUpload = fileList?.length >= limitNumber;
126
+ return loading ? <div>loading...</div> : (
127
+ <div className={className}>
128
+ {(listType === 'picture-card' || readonly) && title ? <Title title={props.title || '附件'} required={props.required} /> : null}
129
+ <Upload {...uploadProps}>
130
+ {readonly || canUpload ? null : <UploadButton {...{...props, fileList}} />}
131
+ </Upload>
132
+ {props.needText ? <span>{props.remark}</span> : null}
133
+ </div>
134
+ );
135
+ }
136
+
137
+ export default SuperUpload;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import variables from '../variables';
3
+ import {Icon} from "antd";
4
+
5
+ function Title({title, children, className, required=false, fold=false, isFold=false, noBorder=false, onFold, ...props}) {
6
+ return (
7
+ <div className={variables('title')} {...props}>
8
+ <span data-border={!noBorder} data-fold={fold} data-required={required}
9
+ onClick={fold && onFold ? onFold.bind(null, !isFold) : undefined}>
10
+ {title}
11
+ {fold ? <Icon type={isFold ? 'down' : 'up'} /> : null}
12
+ </span>
13
+ {isFold ? null : children}
14
+ </div>
15
+ );
16
+ }
17
+
18
+ export default Title;
@@ -0,0 +1,220 @@
1
+ import React from "react";
2
+ import { Icon } from "antd";
3
+ import variables from '../variables';
4
+
5
+ const addEvent = (el, event, handler) => {
6
+ if (!el) return;
7
+ if (el.attachEvent) {
8
+ el.attachEvent('on' + event, handler);
9
+ } else if (el.addEventListener) {
10
+ el.addEventListener(event, handler, false);
11
+ } else {
12
+ el['on' + event] = handler;
13
+ }
14
+ };
15
+
16
+ const removeEvent = (el, event, handler) => {
17
+ if (!el) return;
18
+ if (el.detachEvent) {
19
+ el.detachEvent('on' + event, handler);
20
+ } else if (el.removeEventListener) {
21
+ el.removeEventListener(event, handler, false);
22
+ } else {
23
+ el['on' + event] = null;
24
+ }
25
+ };
26
+
27
+ const getCss = (o, key) => {
28
+ return o.currentStyle ? o.currentStyle[key] : document.defaultView.getComputedStyle(o)[key];
29
+ };
30
+
31
+ // 获取元素旋转的角度
32
+ const getRotateDeg = (target) => {
33
+ const rotateMatrix = getCss(target, 'transform');
34
+ const [a, b] = rotateMatrix.split('(')[1].split(')')[0].split(',');
35
+ return Math.round(Math.atan2(b, a) * (180 / Math.PI));
36
+ };
37
+
38
+ class ImageViews extends React.Component {
39
+
40
+ constructor(props) {
41
+ super(props);
42
+ this.state = { zoom: 1, startTouch: {}};
43
+ }
44
+
45
+ _onwheel = (e) => {
46
+ const { zoom } = this.state;
47
+ /*事件兼容*/
48
+ const event = e || window.event;
49
+
50
+ const imageDOM = this.imgRef;
51
+
52
+ let delta;
53
+ if (event.nativeEvent.wheelDelta) {
54
+ delta = event.nativeEvent.wheelDelta / 1200;
55
+ } else if (event.nativeEvent.deltaY) {
56
+ delta = -event.nativeEvent.deltaY / 1200;
57
+ }
58
+
59
+ let zoomVal = zoom + delta;
60
+
61
+ if (zoomVal >= 0.2) {
62
+ imageDOM.style.transform = `translate(-50%,-50%) scale(${zoomVal})`;
63
+ } else {
64
+ zoomVal = 0.2;
65
+ imageDOM.style.transform = `translate(-50%,-50%) scale(${zoomVal})`;
66
+ }
67
+
68
+ this.setState({ zoom: zoomVal });
69
+
70
+ };
71
+
72
+ _onMouseDown = (e) => {
73
+ /*事件兼容*/
74
+ const event = e || window.event;
75
+ const imageDOM = this.imgRef;
76
+
77
+ event.preventDefault();//阻止浏览器的默认事件
78
+
79
+ const startTouch = {};
80
+ startTouch.initiated = true; //initiated为true表示开始滑动
81
+ /*获取鼠标按下的地方距离元素左侧和上侧的距离*/
82
+ startTouch.startX = event.nativeEvent.clientX - imageDOM.offsetLeft;
83
+ startTouch.startY = event.nativeEvent.clientY - imageDOM.offsetTop;
84
+
85
+ this.setState({ startTouch });
86
+ addEvent(document, 'mousemove', this._onMouseMove);
87
+ addEvent(document, 'mouseup', this._onMouseUp);
88
+ };
89
+
90
+ _onMouseMove = (e) => {
91
+ const event = e || window.event;
92
+ const imageDOM = this.imgRef;
93
+ const { startTouch } = this.state;
94
+ if (!startTouch.initiated) return;
95
+ //滑动距离
96
+ const deltaX = event.clientX - startTouch.startX;
97
+ const deltaY = event.clientY - startTouch.startY;
98
+
99
+ imageDOM.style.left = `${deltaX}px`;
100
+ imageDOM.style.top = `${deltaY}px`;
101
+ };
102
+
103
+ _onMouseUp = () => {
104
+ const { startTouch } = this.state;
105
+ if (!startTouch.initiated) return;
106
+ const endTouch = JSON.parse(JSON.stringify(startTouch));
107
+ endTouch.initiated = false;
108
+ this.setState({ startTouch });
109
+ removeEvent(document, 'mousemove', this._onMouseMove);
110
+ removeEvent(document, 'mouseup', this._onMouseDown);
111
+ };
112
+
113
+ _onPlus = (event) => {
114
+ const { zoom } = this.state;
115
+ const imageDOM = this.imgRef;
116
+ let zoomVal = zoom + 0.1;
117
+ const originDeg = getRotateDeg(imageDOM);
118
+ event.stopPropagation()
119
+ if (zoomVal >= 0.2) {
120
+ imageDOM.style.transform = `translate(-50%,-50%) scale(${zoomVal}) rotate(${originDeg}deg)`;
121
+ }
122
+ this.setState({ zoom: zoomVal })
123
+ };
124
+
125
+ _onMinus = () => {
126
+ const { zoom } = this.state;
127
+ const imageDOM = this.imgRef;
128
+ let zoomVal = zoom - 0.1;
129
+ const originDeg = getRotateDeg(imageDOM);
130
+
131
+ if (zoomVal < 0.2) {
132
+ zoomVal = 0.2
133
+ }
134
+ imageDOM.style.transform = `translate(-50%,-50%) scale(${zoomVal}) rotate(${originDeg}deg)`;
135
+ this.setState({ zoom: zoomVal })
136
+ };
137
+
138
+ _reload = () => {
139
+ const imageDOM = this.imgRef;
140
+ imageDOM.style.transform = `translate(-50%,-50%) scale(1) rotate(0deg)`;
141
+ imageDOM.style.left = `50%`;
142
+ imageDOM.style.top = `50%`;
143
+
144
+ this.setState({
145
+ zoom: 1,
146
+ })
147
+ };
148
+
149
+
150
+ _arrowLeft = () => {
151
+ const { onLeft } = this.props;
152
+ onLeft && onLeft();
153
+ const imageDOM = this.imgRef;
154
+ imageDOM.style.transform = `translate(-50%,-50%) scale(1) rotate(0deg)`;
155
+ imageDOM.style.left = `50%`;
156
+ imageDOM.style.top = `50%`;
157
+
158
+ this.setState({
159
+ zoom: 1,
160
+ })
161
+ };
162
+
163
+
164
+
165
+ _arrowRight = () => {
166
+ const { onRight } = this.props;
167
+ onRight && onRight();
168
+
169
+ const imageDOM = this.imgRef;
170
+ imageDOM.style.transform = `translate(-50%,-50%) scale(1) rotate(0deg)`;
171
+ imageDOM.style.left = `50%`;
172
+ imageDOM.style.top = `50%`;
173
+
174
+ this.setState({
175
+ zoom: 1,
176
+ })
177
+ };
178
+
179
+ rotate = (isLeft) => () => {
180
+ const imageDOM = this.imgRef;
181
+ const originDeg = getRotateDeg(imageDOM);
182
+ const {zoom} = this.state;
183
+ const rotateDeg = isLeft ? originDeg - 90 : originDeg + 90;
184
+ imageDOM.style.transform = `translate(-50%,-50%) rotate(${rotateDeg}deg) scale(${zoom})`;
185
+ };
186
+
187
+ render() {
188
+ const {image} = this.props;
189
+
190
+ return (
191
+ <div className={variables('ImageViews')}>
192
+ <div role={"imgWrapper"}>
193
+ <img src={image.src}
194
+ alt={image.alt}
195
+ ref={imgRef => {
196
+ this.imgRef = imgRef
197
+ }}
198
+ onWheel={this._onwheel}//缩放事件
199
+ onMouseDown={this._onMouseDown} //拖拽事件
200
+ />
201
+ </div>
202
+ <div className={variables('ImageViews').footer}>
203
+ <div className={variables('ImageViews').toolBar}>
204
+ <ul>
205
+ <li title='放大' onClick={this._onPlus} onDoubleClick={event => event.preventDefault()}><Icon type="plus" /></li>
206
+ <li title='缩小' onClick={this._onMinus}><Icon type="minus" /></li>
207
+ <li title='上一张' onClick={this._arrowLeft}><Icon type="arrow-left" /></li>
208
+ <li title='下一张' onClick={this._arrowRight}><Icon type="arrow-right" /></li>
209
+ <li title='向左旋转' onClick={this.rotate(true)}><Icon type='pld-rotateleft' /></li>
210
+ <li title='向右旋转' onClick={this.rotate(false)}><Icon type='pld-rotateright' /></li>
211
+ <li title='复原' onClick={this._reload}><Icon type="delete" /></li>
212
+ </ul>
213
+ </div>
214
+ </div>
215
+ </div>
216
+ )
217
+ }
218
+ }
219
+
220
+ export default ImageViews;
@@ -0,0 +1,97 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import ImageViews from "./ImageViews";
4
+ import { Icon } from "antd";
5
+ import variables from '../variables';
6
+
7
+ class Viewers extends React.Component {
8
+
9
+ static propTypes = {
10
+ /** viewer是否可见 */
11
+ visible: PropTypes.bool.isRequired,
12
+ /** 点击关闭按钮的回调 */
13
+ onCancel: PropTypes.func.isRequired,
14
+ /** 需要进行浏览的图片地址集合 */
15
+ images: PropTypes.array.isRequired,
16
+ /** 需要进行浏览的图片名称集合 */
17
+ titles: PropTypes.array.isRequired,
18
+ };
19
+
20
+ constructor(props) {
21
+ super(props);
22
+ this.state = {
23
+ imageIndex: props.imageIndex
24
+ }
25
+ }
26
+
27
+ //修复Warning报错
28
+ componentWillUnmount = () => {
29
+ this.timeout = null
30
+ }
31
+
32
+ closeViewers = () => {
33
+ const { onCancel, onClose } = this.props;
34
+ this.containerRef.style['opacity'] = 0;
35
+ this.timeout = setTimeout(() => {
36
+ onCancel && onCancel(onClose)
37
+ }, 1000)
38
+
39
+ };
40
+
41
+ _onLeft = () => {
42
+ const { imageIndex } = this.state;
43
+ const { images } = this.props;
44
+ let index = imageIndex - 1;
45
+ if (index < 0) {
46
+ index = images.length - 1;
47
+ }
48
+ this.setState({ imageIndex: index })
49
+ };
50
+
51
+ _onRight = () => {
52
+ const { imageIndex } = this.state;
53
+ const { images } = this.props;
54
+ let index = imageIndex + 1;
55
+ if (index > images.length - 1) {
56
+ index = 0;
57
+ }
58
+ this.setState({ imageIndex: index })
59
+ };
60
+
61
+ _onSelect = (index) => {
62
+ this.setState({ imageIndex: index })
63
+ };
64
+
65
+ render() {
66
+ const { visible, images, titles } = this.props;
67
+ const { imageIndex } = this.state;
68
+ return (
69
+ <div>
70
+ {
71
+ visible ? (
72
+ <div
73
+ className={variables('Viewers')}
74
+ ref={container => {
75
+ this.containerRef = container
76
+ }}>
77
+ <div className={variables('Viewers').mask} />
78
+ <div className={variables('Viewers').title}>
79
+ {titles.map((item, index) => {
80
+ return <div key={index} onClick={this._onSelect.bind(this, index)} className={index === imageIndex ? variables('Viewers').selectTitle : ''}>{item}</div>
81
+ })}
82
+ </div>
83
+ <ImageViews image={images[imageIndex]} onLeft={this._onLeft} onRight={this._onRight} />
84
+ <div className={variables('Viewers').close} onClick={() => this.closeViewers()}>
85
+ <Icon type="close" />
86
+ </div>
87
+ </div>
88
+ ) : null
89
+ }
90
+ </div>
91
+ )
92
+ }
93
+ }
94
+
95
+
96
+
97
+ export default Viewers;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import variables from '../variables';
3
+
4
+ function WingBlank({className, children, ...props}) {
5
+ return (
6
+ <div className={`${className} ${variables('WingBlank')}`} {...props}>
7
+ <div>
8
+ {children}
9
+ </div>
10
+ </div>
11
+ );
12
+ }
13
+
14
+ export default WingBlank;
package/src/helper.js ADDED
@@ -0,0 +1,185 @@
1
+ import message from 'antd/lib/message';
2
+
3
+ /**
4
+ * 功能:从obj中取出不包含keys指定的属性,并组成一个新的子对象
5
+ */
6
+ const getObjectExclude = (obj, keys) => {
7
+ const inKeys = key => keys.some(k => k === key);
8
+ return Object.keys(obj).reduce((newObj, key) => {
9
+ !inKeys(key) && (newObj[key] = obj[key]);
10
+ return newObj;
11
+ }, {});
12
+ };
13
+
14
+ // 获取当前登录的用户名
15
+ const getUsername = () => {
16
+ const username = 'username=';
17
+ const cookie = document.cookie;
18
+ const begin = cookie.indexOf(username) + username.length;
19
+ const end = cookie.indexOf(';', begin);
20
+ return unescape(cookie.substring(begin, end < 0 ? cookie.length : end));
21
+ };
22
+
23
+ /**
24
+ * 确保path为数组
25
+ */
26
+ const makeArray = (path) => {
27
+ if (Array.isArray(path)) {
28
+ return path;
29
+ } else if (!path) {
30
+ return [];
31
+ } else {
32
+ return [path];
33
+ }
34
+ };
35
+
36
+ /**
37
+ * 功能:获取对象关键路径的值,不存在则返回undefined
38
+ * obj:对象
39
+ * path:字符串或字符串数组,指定关键路径
40
+ */
41
+ const getPathValue = (obj, path) => {
42
+ if (!path) {
43
+ return undefined;
44
+ } else {
45
+ return makeArray(path).reduce((value, key) => typeof value !== 'object' ? undefined : value[key], obj);
46
+ }
47
+ };
48
+
49
+ /**
50
+ * 功能:判断一个值是否为空(null,undefined和''属于空)
51
+ */
52
+ const isEmpty = (value) => {
53
+ const type = typeof value;
54
+ if (type === 'number' || type === 'boolean') {
55
+ return false;
56
+ } else {
57
+ return !value;
58
+ }
59
+ };
60
+
61
+ /**
62
+ * 功能:判断一个值是否为空(null,undefined,''和[]属于空)
63
+ */
64
+ const isEmpty2 = (value) => {
65
+ const type = typeof value;
66
+ if (type === 'number' || type === 'boolean') {
67
+ return false;
68
+ } else if (Array.isArray(value)) {
69
+ return !value.length;
70
+ } else {
71
+ return !value;
72
+ }
73
+ };
74
+ const toThousands = (number, fractionDigits = 2, removeTrailingZeros = false) => {
75
+ if (!isNaN(Number(number))) {
76
+ let formattedNumber;
77
+ if (!Number.isInteger(parseFloat(number))) {
78
+ formattedNumber = Number(number).toFixed(fractionDigits);
79
+ }
80
+ if (removeTrailingZeros) {
81
+ //去除整数和小数部分末尾的零
82
+ formattedNumber = formattedNumber.replace(/(\.\d*?[1-9])0*$/, '$1').replace(/\.0*$/, '');
83
+ }
84
+ else {
85
+ formattedNumber = Number(number).toLocaleString(undefined, {
86
+ minimumFractionDigits: fractionDigits,
87
+ maximumFractionDigits: fractionDigits
88
+ });
89
+ }
90
+ return formattedNumber;
91
+ } else if (typeof number === 'string' && number.includes('~')) {
92
+ let numberList = number.split('~');
93
+ let formattedArr = numberList.map((num, index) => {
94
+ if (index === numberList.length - 1) {
95
+ return parseFloat(num).toFixed(fractionDigits);
96
+ } else {
97
+ return parseFloat(num).toFixed(fractionDigits);
98
+ }
99
+ });
100
+ let result = formattedArr.join('~');
101
+ return result;
102
+ }
103
+ }
104
+
105
+ const showError = (msg) => {
106
+ message.error(msg);
107
+ };
108
+
109
+ const showSuccessMsg = (msg) => {
110
+ message.success(msg);
111
+ };
112
+ const getObject = (obj, keys) => {
113
+ return keys.reduce((newObj, key) => {
114
+ newObj[key] = obj[key];
115
+ return newObj;
116
+ }, {});
117
+ };
118
+
119
+ export const fetchJson = async (url, option, cookie=true, jump=true) => {
120
+ if (cookie) {
121
+ if (typeof option === 'undefined') {
122
+ option = {credentials: 'include'};
123
+ } else if (typeof option === 'string') {
124
+ option = {method: option, credentials: 'include'};
125
+ } else if (!option.credentials) {
126
+ Object.assign(option, {credentials: 'include'});
127
+ }
128
+ } else {
129
+ if (typeof option === 'string') {
130
+ option = {method: option};
131
+ }
132
+ }
133
+
134
+ try {
135
+ const res = await fetch(url, option);
136
+ if (!res.ok) {
137
+ return {returnCode: res.status, returnMsg: `${res.status} - ${res.statusText}`};
138
+ } else {
139
+ const json = await res.json();
140
+ if (json.returnCode !== 0 && json.errorCode) {
141
+ json.returnCode = Number(json.errorCode) || 10001;
142
+ }
143
+ if (jump && (json.returnCode === 9998)) {
144
+ json.returnMsg = '登录超时,请重新登录';
145
+ window.localStorage.removeItem('login');
146
+ const roleKey = getRoleKey();
147
+ if(roleKey) {
148
+ window.location.href = `/portal/${roleKey}_login`;
149
+ } else {
150
+ window.location.href = `/`;
151
+ }
152
+ }
153
+ return json;
154
+ }
155
+ } catch (e) {
156
+ return {returnCode: 10000, returnMsg: '无法请求资源'};
157
+ }
158
+ };
159
+ const helper = {
160
+ getObjectExclude,
161
+ getUsername,
162
+ getPathValue,
163
+ isEmpty,
164
+ isEmpty2,
165
+ showError,
166
+ showSuccessMsg,
167
+ toThousands,
168
+ getObject,
169
+ fetchJson
170
+ };
171
+
172
+ export {
173
+ getObject,
174
+ getObjectExclude,
175
+ getUsername,
176
+ getPathValue,
177
+ isEmpty,
178
+ isEmpty2,
179
+ showError,
180
+ showSuccessMsg,
181
+ toThousands,
182
+
183
+ };
184
+
185
+ export default helper;
package/src/history.js ADDED
@@ -0,0 +1,6 @@
1
+ // import createBrowserHistory from 'history/createBrowserHistory';
2
+ import {createBrowserHistory} from 'history';
3
+
4
+ // Navigation manager, e.g. history.push('/home')
5
+ // https://github.com/mjackson/history
6
+ export default process.env.BROWSER && createBrowserHistory();