cloud-b2b 1.1.58 → 1.1.59

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 (308) 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 -6
  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/{es → src}/ModalWithDrag/drag.js +128 -116
  27. package/src/NumberInput/NumberInput.js +137 -0
  28. package/src/Search/Search.js +368 -0
  29. package/src/Search2/Search.js +436 -0
  30. package/{lib/Search → src/Search2}/Search.less +65 -63
  31. package/{lib/Search → src/Search2}/package.json +6 -6
  32. package/src/Sidebar/Sidebar.js +111 -0
  33. package/src/Sidebar2/Sidebar.js +143 -0
  34. package/src/SuperForm/SuperForm.js +519 -0
  35. package/src/SuperForm2/SuperForm.js +588 -0
  36. package/src/SuperIcon/SuperIcon.js +14 -0
  37. package/src/SuperPagination/SuperPagination.js +65 -0
  38. package/src/SuperTab/SuperTab.js +84 -0
  39. package/src/SuperTab2/SuperTab2.js +94 -0
  40. package/src/SuperTable/DragSortRow.js +62 -0
  41. package/src/SuperTable/FilterDropDown.js +111 -0
  42. package/src/SuperTable/SuperTable.js +590 -0
  43. package/src/SuperTable/fixed.js +34 -0
  44. package/src/SuperTable2/SuperTable2.js +624 -0
  45. package/src/SuperTable2/SuperTableCell.js +175 -0
  46. package/src/SuperTable3/FilterDropDown.js +111 -0
  47. package/src/SuperTable3/SuperTable.js +498 -0
  48. package/src/SuperTable3/fixed.js +34 -0
  49. package/src/SuperToolbar/SuperToolbar.js +128 -0
  50. package/src/SuperUpload/SuperUpload.js +137 -0
  51. package/src/Title/Title.js +18 -0
  52. package/src/Viewer/ImageViews.js +220 -0
  53. package/src/Viewer/Viewer.js +97 -0
  54. package/src/WingBlank/WingBlank.js +14 -0
  55. package/src/helper.js +185 -0
  56. package/{es → src}/history.js +6 -6
  57. package/src/index.js +39 -0
  58. package/src/variables.js +5 -0
  59. package/test/index.html +10 -0
  60. package/test/test.js +16 -0
  61. package/test/test.less +12 -0
  62. package/test/webpack.config.js +71 -0
  63. package/tools/babel.config.js +14 -0
  64. package/tools/build.js +70 -0
  65. package/tools/publish.js +9 -0
  66. package/tools/util.js +53 -0
  67. package/es/Area/Area.js +0 -141
  68. package/es/Card/Card.js +0 -19
  69. package/es/CodeInput/CodeInput.js +0 -123
  70. package/es/Control/Control.js +0 -444
  71. package/es/Control/event.js +0 -43
  72. package/es/Enhance/Dialogs.js +0 -52
  73. package/es/Enhance/Loading.js +0 -131
  74. package/es/Header/Header.js +0 -162
  75. package/es/Header/Vertical.js +0 -106
  76. package/es/ImageView/ImageView.js +0 -100
  77. package/es/Indent/Indent.js +0 -19
  78. package/es/InpurCascader/InputCascader.js +0 -117
  79. package/es/InputEditor/InputEditor.js +0 -173
  80. package/es/InputSearch/InputSearch.js +0 -266
  81. package/es/InputSelect/InputSelect.js +0 -160
  82. package/es/InputTreeSelect/InputTreeSelect.js +0 -121
  83. package/es/InputWriting/InputWriting.js +0 -85
  84. package/es/Layout/Layout.js +0 -201
  85. package/es/LayoutLink/LayoutLink.js +0 -73
  86. package/es/Link/Link.js +0 -85
  87. package/es/Loading/Loading.js +0 -13
  88. package/es/Loading2/Loading2.js +0 -9
  89. package/es/ModalWithDrag/ModalWithDrag.js +0 -29
  90. package/es/NumberInput/NumberInput.js +0 -200
  91. package/es/Search/Search.js +0 -497
  92. package/es/Sidebar/Sidebar.js +0 -144
  93. package/es/Sidebar2/Sidebar.js +0 -165
  94. package/es/SuperForm/SuperForm.js +0 -598
  95. package/es/SuperForm2/SuperForm.js +0 -687
  96. package/es/SuperIcon/SuperIcon.js +0 -27
  97. package/es/SuperPagination/SuperPagination.js +0 -109
  98. package/es/SuperTab/SuperTab.js +0 -107
  99. package/es/SuperTab2/SuperTab2.js +0 -145
  100. package/es/SuperTable/DragSortRow.js +0 -97
  101. package/es/SuperTable/FilterDropDown.js +0 -164
  102. package/es/SuperTable/SuperTable.js +0 -808
  103. package/es/SuperTable/fixed.js +0 -34
  104. package/es/SuperTable2/SuperTable2.js +0 -926
  105. package/es/SuperTable2/SuperTableCell.js +0 -225
  106. package/es/SuperTable3/FilterDropDown.js +0 -164
  107. package/es/SuperTable3/SuperTable.js +0 -665
  108. package/es/SuperTable3/fixed.js +0 -34
  109. package/es/SuperToolbar/SuperToolbar.js +0 -195
  110. package/es/SuperUpload/SuperUpload.js +0 -356
  111. package/es/Title/Title.js +0 -33
  112. package/es/Viewer/ImageViews.js +0 -258
  113. package/es/Viewer/Viewer.js +0 -122
  114. package/es/WingBlank/WingBlank.js +0 -16
  115. package/es/helper.js +0 -240
  116. package/es/index.js +0 -37
  117. package/es/variables.js +0 -6
  118. package/lib/Area/Area.js +0 -149
  119. package/lib/Area/package.json +0 -6
  120. package/lib/Card/Card.js +0 -27
  121. package/lib/Card/package.json +0 -6
  122. package/lib/CodeInput/CodeInput.js +0 -131
  123. package/lib/CodeInput/package.json +0 -6
  124. package/lib/Control/Control.js +0 -450
  125. package/lib/Control/event.js +0 -51
  126. package/lib/Control/package.json +0 -6
  127. package/lib/Enhance/Dialogs.js +0 -60
  128. package/lib/Enhance/Loading.js +0 -138
  129. package/lib/Enhance/index.js +0 -25
  130. package/lib/Enhance/package.json +0 -6
  131. package/lib/Header/Header.js +0 -169
  132. package/lib/Header/Header.less +0 -95
  133. package/lib/Header/Vertical.js +0 -114
  134. package/lib/Header/Vertical.less +0 -60
  135. package/lib/Header/package.json +0 -6
  136. package/lib/ImageView/ImageView.js +0 -108
  137. package/lib/ImageView/ImageView.less +0 -14
  138. package/lib/ImageView/package.json +0 -6
  139. package/lib/Indent/Indent.js +0 -27
  140. package/lib/Indent/package.json +0 -6
  141. package/lib/InpurCascader/InputCascader.js +0 -124
  142. package/lib/InpurCascader/package.json +0 -6
  143. package/lib/InputEditor/InputEditor.js +0 -181
  144. package/lib/InputEditor/inputEditor.less +0 -8
  145. package/lib/InputEditor/package.json +0 -6
  146. package/lib/InputSearch/InputSearch.js +0 -274
  147. package/lib/InputSearch/package.json +0 -6
  148. package/lib/InputSelect/InputSelect.js +0 -168
  149. package/lib/InputSelect/package.json +0 -6
  150. package/lib/InputTreeSelect/InputTreeSelect.js +0 -128
  151. package/lib/InputTreeSelect/package.json +0 -6
  152. package/lib/InputWriting/InputWriting.js +0 -93
  153. package/lib/InputWriting/package.json +0 -6
  154. package/lib/Layout/Layout.js +0 -209
  155. package/lib/Layout/Layout.less +0 -28
  156. package/lib/Layout/package.json +0 -6
  157. package/lib/LayoutLink/LayoutLink.js +0 -86
  158. package/lib/LayoutLink/LayoutLink.less +0 -53
  159. package/lib/LayoutLink/package.json +0 -6
  160. package/lib/Link/Link.js +0 -93
  161. package/lib/Link/package.json +0 -6
  162. package/lib/Loading/Loading.js +0 -21
  163. package/lib/Loading/Loading.less +0 -13
  164. package/lib/Loading/package.json +0 -6
  165. package/lib/Loading2/Loading2.js +0 -17
  166. package/lib/Loading2/Loading2.less +0 -19
  167. package/lib/Loading2/package.json +0 -6
  168. package/lib/ModalWithDrag/ModalWithDrag.js +0 -37
  169. package/lib/ModalWithDrag/ModalWithDrag.less +0 -6
  170. package/lib/ModalWithDrag/drag.js +0 -124
  171. package/lib/ModalWithDrag/package.json +0 -6
  172. package/lib/NumberInput/NumberInput.js +0 -208
  173. package/lib/NumberInput/package.json +0 -6
  174. package/lib/Search/Search.js +0 -510
  175. package/lib/Sidebar/Sidebar.js +0 -152
  176. package/lib/Sidebar/Sidebar.less +0 -78
  177. package/lib/Sidebar/package.json +0 -6
  178. package/lib/Sidebar2/Sidebar.js +0 -173
  179. package/lib/Sidebar2/Sidebar.less +0 -153
  180. package/lib/Sidebar2/package.json +0 -6
  181. package/lib/SuperForm/SuperForm.js +0 -610
  182. package/lib/SuperForm/SuperForm.less +0 -52
  183. package/lib/SuperForm/package.json +0 -6
  184. package/lib/SuperForm2/SuperForm.js +0 -699
  185. package/lib/SuperForm2/SuperForm.less +0 -52
  186. package/lib/SuperForm2/package.json +0 -6
  187. package/lib/SuperIcon/SuperIcon.js +0 -35
  188. package/lib/SuperIcon/package.json +0 -6
  189. package/lib/SuperPagination/SuperPagination.js +0 -117
  190. package/lib/SuperPagination/package.json +0 -6
  191. package/lib/SuperTab/SuperTab.js +0 -115
  192. package/lib/SuperTab/SuperTab.less +0 -43
  193. package/lib/SuperTab/package.json +0 -6
  194. package/lib/SuperTab2/SuperTab2.js +0 -153
  195. package/lib/SuperTab2/SuperTab2.less +0 -18
  196. package/lib/SuperTab2/package.json +0 -6
  197. package/lib/SuperTable/DragSortRow.js +0 -105
  198. package/lib/SuperTable/DragSortRow.less +0 -17
  199. package/lib/SuperTable/FilterDropDown.js +0 -172
  200. package/lib/SuperTable/FilterDropDown.less +0 -30
  201. package/lib/SuperTable/SuperTable.js +0 -816
  202. package/lib/SuperTable/SuperTable.less +0 -132
  203. package/lib/SuperTable/fixed.js +0 -42
  204. package/lib/SuperTable/package.json +0 -6
  205. package/lib/SuperTable2/SuperTable2.js +0 -939
  206. package/lib/SuperTable2/SuperTable2.less +0 -118
  207. package/lib/SuperTable2/SuperTableCell.js +0 -230
  208. package/lib/SuperTable2/package.json +0 -6
  209. package/lib/SuperTable3/FilterDropDown.js +0 -172
  210. package/lib/SuperTable3/FilterDropDown.less +0 -29
  211. package/lib/SuperTable3/SuperTable.js +0 -673
  212. package/lib/SuperTable3/SuperTable.less +0 -99
  213. package/lib/SuperTable3/fixed.js +0 -42
  214. package/lib/SuperTable3/package.json +0 -6
  215. package/lib/SuperToolbar/SuperToolbar.js +0 -203
  216. package/lib/SuperToolbar/SuperToolbar.less +0 -17
  217. package/lib/SuperToolbar/package.json +0 -6
  218. package/lib/SuperUpload/SuperUpload.js +0 -368
  219. package/lib/SuperUpload/SuperUpload.less +0 -28
  220. package/lib/SuperUpload/package.json +0 -6
  221. package/lib/Title/Title.js +0 -41
  222. package/lib/Title/Title.less +0 -35
  223. package/lib/Title/package.json +0 -6
  224. package/lib/Viewer/ImageViews.js +0 -266
  225. package/lib/Viewer/Viewer.js +0 -130
  226. package/lib/Viewer/Viewer.less +0 -67
  227. package/lib/Viewer/imgView.less +0 -59
  228. package/lib/Viewer/package.json +0 -7
  229. package/lib/WingBlank/WingBlank.js +0 -24
  230. package/lib/WingBlank/WingBlank.less +0 -12
  231. package/lib/WingBlank/package.json +0 -6
  232. package/lib/adjust.less +0 -89
  233. package/lib/helper.js +0 -246
  234. package/lib/history.js +0 -12
  235. package/lib/index.js +0 -271
  236. package/lib/index.less +0 -31
  237. package/lib/style.less +0 -30
  238. package/lib/variables.js +0 -14
  239. package/lib/variables.less +0 -73
  240. /package/{es → src}/Area/package.json +0 -0
  241. /package/{es → src}/Card/package.json +0 -0
  242. /package/{es → src}/CodeInput/package.json +0 -0
  243. /package/{es → src}/Control/package.json +0 -0
  244. /package/{es → src}/Enhance/package.json +0 -0
  245. /package/{es → src}/Header/Header.less +0 -0
  246. /package/{es → src}/Header/Vertical.less +0 -0
  247. /package/{es → src}/Header/package.json +0 -0
  248. /package/{es → src}/ImageView/ImageView.less +0 -0
  249. /package/{es → src}/ImageView/package.json +0 -0
  250. /package/{es → src}/Indent/package.json +0 -0
  251. /package/{es → src}/InpurCascader/package.json +0 -0
  252. /package/{es → src}/InputEditor/inputEditor.less +0 -0
  253. /package/{es → src}/InputEditor/package.json +0 -0
  254. /package/{es → src}/InputSearch/package.json +0 -0
  255. /package/{es → src}/InputSelect/package.json +0 -0
  256. /package/{es → src}/InputTreeSelect/package.json +0 -0
  257. /package/{es → src}/InputWriting/package.json +0 -0
  258. /package/{es → src}/Layout/Layout.less +0 -0
  259. /package/{es → src}/Layout/package.json +0 -0
  260. /package/{es → src}/LayoutLink/LayoutLink.less +0 -0
  261. /package/{es → src}/LayoutLink/package.json +0 -0
  262. /package/{es → src}/Link/package.json +0 -0
  263. /package/{es → src}/Loading/Loading.less +0 -0
  264. /package/{es → src}/Loading/package.json +0 -0
  265. /package/{es → src}/Loading2/Loading2.less +0 -0
  266. /package/{es → src}/Loading2/package.json +0 -0
  267. /package/{es → src}/ModalWithDrag/ModalWithDrag.less +0 -0
  268. /package/{es → src}/ModalWithDrag/package.json +0 -0
  269. /package/{es → src}/NumberInput/package.json +0 -0
  270. /package/{es → src}/Search/Search.less +0 -0
  271. /package/{es → src}/Search/package.json +0 -0
  272. /package/{es → src}/Sidebar/Sidebar.less +0 -0
  273. /package/{es → src}/Sidebar/package.json +0 -0
  274. /package/{es → src}/Sidebar2/Sidebar.less +0 -0
  275. /package/{es → src}/Sidebar2/package.json +0 -0
  276. /package/{es → src}/SuperForm/SuperForm.less +0 -0
  277. /package/{es → src}/SuperForm/package.json +0 -0
  278. /package/{es → src}/SuperForm2/SuperForm.less +0 -0
  279. /package/{es → src}/SuperForm2/package.json +0 -0
  280. /package/{es → src}/SuperIcon/package.json +0 -0
  281. /package/{es → src}/SuperPagination/package.json +0 -0
  282. /package/{es → src}/SuperTab/SuperTab.less +0 -0
  283. /package/{es → src}/SuperTab/package.json +0 -0
  284. /package/{es → src}/SuperTab2/SuperTab2.less +0 -0
  285. /package/{es → src}/SuperTab2/package.json +0 -0
  286. /package/{es → src}/SuperTable/DragSortRow.less +0 -0
  287. /package/{es → src}/SuperTable/FilterDropDown.less +0 -0
  288. /package/{es → src}/SuperTable/SuperTable.less +0 -0
  289. /package/{es → src}/SuperTable/package.json +0 -0
  290. /package/{es → src}/SuperTable2/SuperTable2.less +0 -0
  291. /package/{es → src}/SuperTable2/package.json +0 -0
  292. /package/{es → src}/SuperTable3/FilterDropDown.less +0 -0
  293. /package/{es → src}/SuperTable3/SuperTable.less +0 -0
  294. /package/{es → src}/SuperTable3/package.json +0 -0
  295. /package/{es → src}/SuperToolbar/SuperToolbar.less +0 -0
  296. /package/{es → src}/SuperToolbar/package.json +0 -0
  297. /package/{es → src}/SuperUpload/SuperUpload.less +0 -0
  298. /package/{es → src}/SuperUpload/package.json +0 -0
  299. /package/{es → src}/Title/Title.less +0 -0
  300. /package/{es → src}/Title/package.json +0 -0
  301. /package/{es → src}/Viewer/Viewer.less +0 -0
  302. /package/{es → src}/Viewer/imgView.less +0 -0
  303. /package/{es → src}/Viewer/package.json +0 -0
  304. /package/{es → src}/WingBlank/WingBlank.less +0 -0
  305. /package/{es → src}/WingBlank/package.json +0 -0
  306. /package/{es → src}/adjust.less +0 -0
  307. /package/{es → src}/style.less +0 -0
  308. /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;
@@ -1,6 +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();
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();