cloud-b2b 1.1.59 → 1.1.60

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 (314) hide show
  1. package/es/Area/Area.js +141 -0
  2. package/es/Card/Card.js +19 -0
  3. package/es/CodeInput/CodeInput.js +123 -0
  4. package/es/Control/Control.js +444 -0
  5. package/es/Control/event.js +43 -0
  6. package/es/Enhance/Dialogs.js +52 -0
  7. package/es/Enhance/Loading.js +131 -0
  8. package/{src → es}/Enhance/index.js +6 -8
  9. package/es/Header/Header.js +162 -0
  10. package/es/Header/Vertical.js +106 -0
  11. package/es/ImageView/ImageView.js +100 -0
  12. package/es/Indent/Indent.js +19 -0
  13. package/es/InpurCascader/InputCascader.js +117 -0
  14. package/es/InputEditor/InputEditor.js +173 -0
  15. package/es/InputSearch/InputSearch.js +266 -0
  16. package/es/InputSelect/InputSelect.js +160 -0
  17. package/es/InputTreeSelect/InputTreeSelect.js +121 -0
  18. package/es/InputWriting/InputWriting.js +85 -0
  19. package/es/Layout/Layout.js +201 -0
  20. package/es/LayoutLink/LayoutLink.js +73 -0
  21. package/es/Link/Link.js +85 -0
  22. package/es/Loading/Loading.js +13 -0
  23. package/es/Loading2/Loading2.js +9 -0
  24. package/es/ModalWithDrag/ModalWithDrag.js +29 -0
  25. package/{src → es}/ModalWithDrag/drag.js +116 -128
  26. package/es/NumberInput/NumberInput.js +200 -0
  27. package/es/Search/Search.js +497 -0
  28. package/es/Search2/Search.js +597 -0
  29. package/es/Sidebar/Sidebar.js +144 -0
  30. package/es/Sidebar2/Sidebar.js +165 -0
  31. package/es/SuperForm/SuperForm.js +598 -0
  32. package/es/SuperForm2/SuperForm.js +687 -0
  33. package/es/SuperIcon/SuperIcon.js +27 -0
  34. package/es/SuperPagination/SuperPagination.js +109 -0
  35. package/es/SuperTab/SuperTab.js +107 -0
  36. package/es/SuperTab2/SuperTab2.js +145 -0
  37. package/es/SuperTable/DragSortRow.js +97 -0
  38. package/es/SuperTable/FilterDropDown.js +164 -0
  39. package/es/SuperTable/SuperTable.js +808 -0
  40. package/es/SuperTable/fixed.js +34 -0
  41. package/es/SuperTable2/SuperTable2.js +926 -0
  42. package/es/SuperTable2/SuperTableCell.js +234 -0
  43. package/es/SuperTable3/FilterDropDown.js +164 -0
  44. package/es/SuperTable3/SuperTable.js +665 -0
  45. package/es/SuperTable3/fixed.js +34 -0
  46. package/es/SuperToolbar/SuperToolbar.js +195 -0
  47. package/es/SuperUpload/SuperUpload.js +356 -0
  48. package/es/Title/Title.js +33 -0
  49. package/es/Viewer/ImageViews.js +258 -0
  50. package/es/Viewer/Viewer.js +122 -0
  51. package/es/WingBlank/WingBlank.js +16 -0
  52. package/es/helper.js +240 -0
  53. package/{src → es}/history.js +6 -6
  54. package/es/index.js +38 -0
  55. package/es/variables.js +6 -0
  56. package/lib/Area/Area.js +149 -0
  57. package/lib/Area/package.json +6 -0
  58. package/lib/Card/Card.js +27 -0
  59. package/lib/Card/package.json +6 -0
  60. package/lib/CodeInput/CodeInput.js +131 -0
  61. package/lib/CodeInput/package.json +6 -0
  62. package/lib/Control/Control.js +450 -0
  63. package/lib/Control/event.js +51 -0
  64. package/lib/Control/package.json +6 -0
  65. package/lib/Enhance/Dialogs.js +60 -0
  66. package/lib/Enhance/Loading.js +138 -0
  67. package/lib/Enhance/index.js +25 -0
  68. package/lib/Enhance/package.json +6 -0
  69. package/lib/Header/Header.js +169 -0
  70. package/lib/Header/Header.less +95 -0
  71. package/lib/Header/Vertical.js +114 -0
  72. package/lib/Header/Vertical.less +60 -0
  73. package/lib/Header/package.json +6 -0
  74. package/lib/ImageView/ImageView.js +108 -0
  75. package/lib/ImageView/ImageView.less +14 -0
  76. package/lib/ImageView/package.json +6 -0
  77. package/lib/Indent/Indent.js +27 -0
  78. package/lib/Indent/package.json +6 -0
  79. package/lib/InpurCascader/InputCascader.js +124 -0
  80. package/lib/InpurCascader/package.json +6 -0
  81. package/lib/InputEditor/InputEditor.js +181 -0
  82. package/lib/InputEditor/inputEditor.less +8 -0
  83. package/lib/InputEditor/package.json +6 -0
  84. package/lib/InputSearch/InputSearch.js +274 -0
  85. package/lib/InputSearch/package.json +6 -0
  86. package/lib/InputSelect/InputSelect.js +168 -0
  87. package/lib/InputSelect/package.json +6 -0
  88. package/lib/InputTreeSelect/InputTreeSelect.js +128 -0
  89. package/lib/InputTreeSelect/package.json +6 -0
  90. package/lib/InputWriting/InputWriting.js +93 -0
  91. package/lib/InputWriting/package.json +6 -0
  92. package/lib/Layout/Layout.js +209 -0
  93. package/lib/Layout/Layout.less +28 -0
  94. package/lib/Layout/package.json +6 -0
  95. package/lib/LayoutLink/LayoutLink.js +86 -0
  96. package/lib/LayoutLink/LayoutLink.less +53 -0
  97. package/lib/LayoutLink/package.json +6 -0
  98. package/lib/Link/Link.js +93 -0
  99. package/lib/Link/package.json +6 -0
  100. package/lib/Loading/Loading.js +21 -0
  101. package/lib/Loading/Loading.less +13 -0
  102. package/lib/Loading/package.json +6 -0
  103. package/lib/Loading2/Loading2.js +17 -0
  104. package/lib/Loading2/Loading2.less +19 -0
  105. package/lib/Loading2/package.json +6 -0
  106. package/lib/ModalWithDrag/ModalWithDrag.js +37 -0
  107. package/lib/ModalWithDrag/ModalWithDrag.less +6 -0
  108. package/lib/ModalWithDrag/drag.js +124 -0
  109. package/lib/ModalWithDrag/package.json +6 -0
  110. package/lib/NumberInput/NumberInput.js +208 -0
  111. package/lib/NumberInput/package.json +6 -0
  112. package/lib/Search/Search.js +510 -0
  113. package/lib/Search/Search.less +63 -0
  114. package/lib/Search/package.json +6 -0
  115. package/lib/Search2/Search.js +609 -0
  116. package/lib/Search2/Search.less +65 -0
  117. package/lib/Search2/package.json +6 -0
  118. package/lib/Sidebar/Sidebar.js +152 -0
  119. package/lib/Sidebar/Sidebar.less +78 -0
  120. package/lib/Sidebar/package.json +6 -0
  121. package/lib/Sidebar2/Sidebar.js +173 -0
  122. package/lib/Sidebar2/Sidebar.less +153 -0
  123. package/lib/Sidebar2/package.json +6 -0
  124. package/lib/SuperForm/SuperForm.js +610 -0
  125. package/lib/SuperForm/SuperForm.less +52 -0
  126. package/lib/SuperForm/package.json +6 -0
  127. package/lib/SuperForm2/SuperForm.js +699 -0
  128. package/lib/SuperForm2/SuperForm.less +52 -0
  129. package/lib/SuperForm2/package.json +6 -0
  130. package/lib/SuperIcon/SuperIcon.js +35 -0
  131. package/lib/SuperIcon/package.json +6 -0
  132. package/lib/SuperPagination/SuperPagination.js +117 -0
  133. package/lib/SuperPagination/package.json +6 -0
  134. package/lib/SuperTab/SuperTab.js +115 -0
  135. package/lib/SuperTab/SuperTab.less +43 -0
  136. package/lib/SuperTab/package.json +6 -0
  137. package/lib/SuperTab2/SuperTab2.js +153 -0
  138. package/lib/SuperTab2/SuperTab2.less +18 -0
  139. package/lib/SuperTab2/package.json +6 -0
  140. package/lib/SuperTable/DragSortRow.js +105 -0
  141. package/lib/SuperTable/DragSortRow.less +17 -0
  142. package/lib/SuperTable/FilterDropDown.js +172 -0
  143. package/lib/SuperTable/FilterDropDown.less +30 -0
  144. package/lib/SuperTable/SuperTable.js +816 -0
  145. package/lib/SuperTable/SuperTable.less +132 -0
  146. package/lib/SuperTable/fixed.js +42 -0
  147. package/lib/SuperTable/package.json +6 -0
  148. package/lib/SuperTable2/SuperTable2.js +939 -0
  149. package/lib/SuperTable2/SuperTable2.less +118 -0
  150. package/lib/SuperTable2/SuperTableCell.js +239 -0
  151. package/lib/SuperTable2/package.json +6 -0
  152. package/lib/SuperTable3/FilterDropDown.js +172 -0
  153. package/lib/SuperTable3/FilterDropDown.less +29 -0
  154. package/lib/SuperTable3/SuperTable.js +673 -0
  155. package/lib/SuperTable3/SuperTable.less +99 -0
  156. package/lib/SuperTable3/fixed.js +42 -0
  157. package/lib/SuperTable3/package.json +6 -0
  158. package/lib/SuperToolbar/SuperToolbar.js +203 -0
  159. package/lib/SuperToolbar/SuperToolbar.less +17 -0
  160. package/lib/SuperToolbar/package.json +6 -0
  161. package/lib/SuperUpload/SuperUpload.js +368 -0
  162. package/lib/SuperUpload/SuperUpload.less +28 -0
  163. package/lib/SuperUpload/package.json +6 -0
  164. package/lib/Title/Title.js +41 -0
  165. package/lib/Title/Title.less +35 -0
  166. package/lib/Title/package.json +6 -0
  167. package/lib/Viewer/ImageViews.js +266 -0
  168. package/lib/Viewer/Viewer.js +130 -0
  169. package/lib/Viewer/Viewer.less +67 -0
  170. package/lib/Viewer/imgView.less +59 -0
  171. package/lib/Viewer/package.json +7 -0
  172. package/lib/WingBlank/WingBlank.js +24 -0
  173. package/lib/WingBlank/WingBlank.less +12 -0
  174. package/lib/WingBlank/package.json +6 -0
  175. package/lib/adjust.less +89 -0
  176. package/lib/helper.js +246 -0
  177. package/lib/history.js +12 -0
  178. package/lib/index.js +278 -0
  179. package/lib/index.less +32 -0
  180. package/lib/style.less +30 -0
  181. package/lib/variables.js +14 -0
  182. package/lib/variables.less +73 -0
  183. package/package.json +22 -44
  184. package/src/Area/Area.js +0 -94
  185. package/src/Card/Card.js +0 -16
  186. package/src/CodeInput/CodeInput.js +0 -76
  187. package/src/Control/Control.js +0 -338
  188. package/src/Control/event.js +0 -45
  189. package/src/Enhance/Dialogs.js +0 -24
  190. package/src/Enhance/Loading.js +0 -83
  191. package/src/Header/Header.js +0 -149
  192. package/src/Header/Vertical.js +0 -74
  193. package/src/ImageView/ImageView.js +0 -62
  194. package/src/Indent/Indent.js +0 -12
  195. package/src/InpurCascader/InputCascader.js +0 -83
  196. package/src/InputEditor/InputEditor.js +0 -93
  197. package/src/InputSearch/InputSearch.js +0 -186
  198. package/src/InputSelect/InputSelect.js +0 -103
  199. package/src/InputTreeSelect/InputTreeSelect.js +0 -87
  200. package/src/InputWriting/InputWriting.js +0 -65
  201. package/src/Layout/Layout.js +0 -121
  202. package/src/LayoutLink/LayoutLink.js +0 -59
  203. package/src/Link/Link.js +0 -57
  204. package/src/Loading/Loading.js +0 -15
  205. package/src/Loading2/Loading2.js +0 -15
  206. package/src/ModalWithDrag/ModalWithDrag.js +0 -17
  207. package/src/NumberInput/NumberInput.js +0 -137
  208. package/src/Search/Search.js +0 -368
  209. package/src/Search2/Search.js +0 -436
  210. package/src/Sidebar/Sidebar.js +0 -111
  211. package/src/Sidebar2/Sidebar.js +0 -143
  212. package/src/SuperForm/SuperForm.js +0 -519
  213. package/src/SuperForm2/SuperForm.js +0 -588
  214. package/src/SuperIcon/SuperIcon.js +0 -14
  215. package/src/SuperPagination/SuperPagination.js +0 -65
  216. package/src/SuperTab/SuperTab.js +0 -84
  217. package/src/SuperTab2/SuperTab2.js +0 -94
  218. package/src/SuperTable/DragSortRow.js +0 -62
  219. package/src/SuperTable/FilterDropDown.js +0 -111
  220. package/src/SuperTable/SuperTable.js +0 -590
  221. package/src/SuperTable/fixed.js +0 -34
  222. package/src/SuperTable2/SuperTable2.js +0 -624
  223. package/src/SuperTable2/SuperTableCell.js +0 -175
  224. package/src/SuperTable3/FilterDropDown.js +0 -111
  225. package/src/SuperTable3/SuperTable.js +0 -498
  226. package/src/SuperTable3/fixed.js +0 -34
  227. package/src/SuperToolbar/SuperToolbar.js +0 -128
  228. package/src/SuperUpload/SuperUpload.js +0 -137
  229. package/src/Title/Title.js +0 -18
  230. package/src/Viewer/ImageViews.js +0 -220
  231. package/src/Viewer/Viewer.js +0 -97
  232. package/src/WingBlank/WingBlank.js +0 -14
  233. package/src/helper.js +0 -185
  234. package/src/index.js +0 -39
  235. package/src/variables.js +0 -5
  236. package/test/index.html +0 -10
  237. package/test/test.js +0 -16
  238. package/test/test.less +0 -12
  239. package/test/webpack.config.js +0 -71
  240. package/tools/babel.config.js +0 -14
  241. package/tools/build.js +0 -70
  242. package/tools/publish.js +0 -9
  243. package/tools/util.js +0 -53
  244. /package/{src → es}/Area/package.json +0 -0
  245. /package/{src → es}/Card/package.json +0 -0
  246. /package/{src → es}/CodeInput/package.json +0 -0
  247. /package/{src → es}/Control/package.json +0 -0
  248. /package/{src → es}/Enhance/package.json +0 -0
  249. /package/{src → es}/Header/Header.less +0 -0
  250. /package/{src → es}/Header/Vertical.less +0 -0
  251. /package/{src → es}/Header/package.json +0 -0
  252. /package/{src → es}/ImageView/ImageView.less +0 -0
  253. /package/{src → es}/ImageView/package.json +0 -0
  254. /package/{src → es}/Indent/package.json +0 -0
  255. /package/{src → es}/InpurCascader/package.json +0 -0
  256. /package/{src → es}/InputEditor/inputEditor.less +0 -0
  257. /package/{src → es}/InputEditor/package.json +0 -0
  258. /package/{src → es}/InputSearch/package.json +0 -0
  259. /package/{src → es}/InputSelect/package.json +0 -0
  260. /package/{src → es}/InputTreeSelect/package.json +0 -0
  261. /package/{src → es}/InputWriting/package.json +0 -0
  262. /package/{src → es}/Layout/Layout.less +0 -0
  263. /package/{src → es}/Layout/package.json +0 -0
  264. /package/{src → es}/LayoutLink/LayoutLink.less +0 -0
  265. /package/{src → es}/LayoutLink/package.json +0 -0
  266. /package/{src → es}/Link/package.json +0 -0
  267. /package/{src → es}/Loading/Loading.less +0 -0
  268. /package/{src → es}/Loading/package.json +0 -0
  269. /package/{src → es}/Loading2/Loading2.less +0 -0
  270. /package/{src → es}/Loading2/package.json +0 -0
  271. /package/{src → es}/ModalWithDrag/ModalWithDrag.less +0 -0
  272. /package/{src → es}/ModalWithDrag/package.json +0 -0
  273. /package/{src → es}/NumberInput/package.json +0 -0
  274. /package/{src → es}/Search/Search.less +0 -0
  275. /package/{src → es}/Search/package.json +0 -0
  276. /package/{src → es}/Search2/Search.less +0 -0
  277. /package/{src → es}/Search2/package.json +0 -0
  278. /package/{src → es}/Sidebar/Sidebar.less +0 -0
  279. /package/{src → es}/Sidebar/package.json +0 -0
  280. /package/{src → es}/Sidebar2/Sidebar.less +0 -0
  281. /package/{src → es}/Sidebar2/package.json +0 -0
  282. /package/{src → es}/SuperForm/SuperForm.less +0 -0
  283. /package/{src → es}/SuperForm/package.json +0 -0
  284. /package/{src → es}/SuperForm2/SuperForm.less +0 -0
  285. /package/{src → es}/SuperForm2/package.json +0 -0
  286. /package/{src → es}/SuperIcon/package.json +0 -0
  287. /package/{src → es}/SuperPagination/package.json +0 -0
  288. /package/{src → es}/SuperTab/SuperTab.less +0 -0
  289. /package/{src → es}/SuperTab/package.json +0 -0
  290. /package/{src → es}/SuperTab2/SuperTab2.less +0 -0
  291. /package/{src → es}/SuperTab2/package.json +0 -0
  292. /package/{src → es}/SuperTable/DragSortRow.less +0 -0
  293. /package/{src → es}/SuperTable/FilterDropDown.less +0 -0
  294. /package/{src → es}/SuperTable/SuperTable.less +0 -0
  295. /package/{src → es}/SuperTable/package.json +0 -0
  296. /package/{src → es}/SuperTable2/SuperTable2.less +0 -0
  297. /package/{src → es}/SuperTable2/package.json +0 -0
  298. /package/{src → es}/SuperTable3/FilterDropDown.less +0 -0
  299. /package/{src → es}/SuperTable3/SuperTable.less +0 -0
  300. /package/{src → es}/SuperTable3/package.json +0 -0
  301. /package/{src → es}/SuperToolbar/SuperToolbar.less +0 -0
  302. /package/{src → es}/SuperToolbar/package.json +0 -0
  303. /package/{src → es}/SuperUpload/SuperUpload.less +0 -0
  304. /package/{src → es}/SuperUpload/package.json +0 -0
  305. /package/{src → es}/Title/Title.less +0 -0
  306. /package/{src → es}/Title/package.json +0 -0
  307. /package/{src → es}/Viewer/Viewer.less +0 -0
  308. /package/{src → es}/Viewer/imgView.less +0 -0
  309. /package/{src → es}/Viewer/package.json +0 -0
  310. /package/{src → es}/WingBlank/WingBlank.less +0 -0
  311. /package/{src → es}/WingBlank/package.json +0 -0
  312. /package/{src → es}/adjust.less +0 -0
  313. /package/{src → es}/style.less +0 -0
  314. /package/{src → es}/variables.less +0 -0
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import {Spin} from 'antd';
3
- import variables from '../variables';
4
-
5
- function Loading() {
6
- return (
7
- <div className={variables('Loading2')}>
8
- <div>
9
- <Spin />
10
- </div>
11
- </div>
12
- );
13
- }
14
-
15
- export default Loading;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import {Modal} from 'antd';
3
- import drag from './drag';
4
- import variables from '../variables';
5
-
6
- const onLoad = (e) => {
7
- const dragElement = e.parentNode.parentNode;
8
- const targetElement = dragElement.parentNode.parentNode;
9
- drag(dragElement, targetElement);
10
- };
11
-
12
- const ModalWithDrag = ({className, children, title, ...props}) => {
13
- props.title = <div ref={(e) => e && onLoad(e)}>{title}</div>;
14
- return <Modal className={`${className} ${variables('ModalWithDrag')}`} {...props}>{children}</Modal>;
15
- };
16
-
17
- export default ModalWithDrag;
@@ -1,137 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import {Input} from 'antd';
4
- import {getObjectExclude} from '../helper';
5
-
6
- const parseNumber = (value, {real, sign, zero, precision, fixed, big}) => {
7
- const invalid = {invalid: true, value: ''};
8
-
9
- if (value === '') {
10
- return {value};
11
- }
12
-
13
- // 非数字
14
- value = big ? value : Number(value);
15
- if (isNaN(value)) {
16
- return invalid;
17
- }
18
-
19
- // 不能为实数,却包含小数点
20
- if (!real && String(value).includes('.')) {
21
- return invalid;
22
- }
23
-
24
- // 不能为负数,却小于0
25
- if (!sign && (value < 0)) {
26
- return invalid;
27
- }
28
-
29
- // 不能为0,却为0
30
- if (!zero && (value === 0)) {
31
- return invalid;
32
- }
33
-
34
- if (real) {
35
- precision = Number(precision);
36
- if (precision) {
37
- value = value.toFixed(precision);
38
- value = value.toString(); // 将数值转换为字符串
39
- value = value.replace(/(\.\d*?[1-9])0+$|\.0*$/, "$1"); // 去除小数点后无意义的零
40
- if (!fixed) {
41
- value = Number(value);
42
- }
43
- }
44
- }
45
-
46
- return {value};
47
- };
48
-
49
- /**
50
- * real: true表示带小数点,默认为false
51
- * sign: true表示带正负号,默认为false
52
- * precision: real为true时,小数的精度;否则无效
53
- * zero:true表示可以输入0,默认为false
54
- * fixed: real为true时生效; true表示固定显示指定精度的小数,精度由precision确定,默认值为false
55
- * big: big为ture时生效; true标识为大数值,与上面所有属性互斥
56
- */
57
- const PROPS = {
58
- defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
59
- real: PropTypes.bool,
60
- sign: PropTypes.bool,
61
- precision: PropTypes.any,
62
- zero: PropTypes.bool,
63
- fixed: PropTypes.bool,
64
- big:PropTypes.bool,
65
- inputRef: PropTypes.func,
66
- onChange: PropTypes.func,
67
- onBlur: PropTypes.func
68
- };
69
-
70
- const PROPS_KEYS = Object.keys(PROPS);
71
-
72
- class NumberInput extends React.Component {
73
- static propTypes = PROPS;
74
- state = {typo: false, value: ''};
75
-
76
- onChange = (event) => {
77
- const value = event.target.value;
78
- if (!this.hasSpecialChar(value)) {
79
- this.setState({value, typo: true});
80
- }
81
- };
82
-
83
- onBlur = (event) => {
84
- const {onBlur, onChange, fixed} = this.props;
85
- if (this.state.typo) {
86
- const {invalid, value} = this.format(this.state.value, fixed);
87
- this.setState({typo: false, value: ''});
88
- if (!invalid) {
89
- onChange && onChange(value);
90
- }
91
- onBlur && onBlur(event); //有输入才触发外部失去焦点事件,避免非必要请求
92
- }
93
- };
94
-
95
- hasSpecialChar = (value) => {
96
- if (value.includes('+')) {
97
- return true;
98
- } else if (!this.props.sign && value.includes('-')) {
99
- return true;
100
- } else {
101
- return !this.props.real && value.includes('.');
102
- }
103
- };
104
-
105
- format = (value, fixed) => {
106
- const {real, sign, zero, precision,big} = this.props;
107
- return parseNumber(value, {real, sign, zero, precision, fixed,big});
108
- };
109
-
110
- getShowValue = () => {
111
- if (this.state.typo) {
112
- // 处于输入状态从state中取值
113
- return this.state.value;
114
- } else {
115
- // 处于非输入状态从props中取值
116
- return this.format(this.props.defaultValue, this.props.fixed).value;
117
- }
118
- };
119
-
120
- getProps = () => {
121
- const props = getObjectExclude(this.props, PROPS_KEYS);
122
- return {
123
- ...props,
124
- type: 'text',
125
- ref: this.props.inputRef || null,
126
- value: this.getShowValue(),
127
- onChange: this.onChange,
128
- onBlur: this.onBlur,
129
- };
130
- };
131
-
132
- render() {
133
- return <Input {...this.getProps()} />;
134
- }
135
- }
136
-
137
- export default NumberInput;
@@ -1,368 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import ReactDOM from 'react-dom';
4
- import {Button, Form, Row, Col, Icon} from 'antd';
5
- import Control, {getTitle, makeString} from '../Control';
6
- import {getPathValue} from "../helper";
7
- import variables from '../variables';
8
-
9
- const FormItem = Form.Item;
10
- const defaultSize = 'small';
11
- const defaultColNum = 4;
12
-
13
- const TYPE = [
14
- 'text',
15
- 'search',
16
- 'select',
17
- 'number',
18
- 'date',
19
- 'readonly',
20
- 'selectSearch',
21
- 'cascader', //级联选择下拉
22
- 'treeSelect' //树选择
23
- ];
24
-
25
- /**
26
- * search: 搜索按钮的标题
27
- * more:更多按钮的标题
28
- * reset:重置按钮的标题
29
- * sort:排序按钮的标题
30
- */
31
- const ConfigType = {
32
- search: PropTypes.string.isRequired,
33
- reset: PropTypes.string,
34
- sort: PropTypes.string,
35
- more: PropTypes.string
36
- };
37
-
38
- /**
39
- * key: 唯一标识一个表单元素
40
- * title:表单元素旁边的标题
41
- * type:表单元素的类型
42
- * props:传递给表单元素的额外属性
43
- */
44
- const FilterType = {
45
- key: PropTypes.string.isRequired,
46
- title: PropTypes.string.isRequired,
47
- type: PropTypes.oneOf(TYPE).isRequired,
48
- options: PropTypes.array,
49
- props: PropTypes.object
50
- };
51
-
52
- /**
53
- * data:传递给filters的默认值,为key:value的形式,此处的key为FilterType中的key
54
- * isSort:是否需要排序按钮,默认false,当设置为true时,onClick函数需要实现key为sort的响应函数
55
- * options: 作用同FilterType.options类似,但优先级高于它
56
- * onClick:按钮点击事件,原型为func(key)
57
- * onChange:表单控件内容改变时触发,原型为func(key, value)
58
- * onSearch:search控件发出的事件,原型为func(key, value)
59
- * displayRow:折叠时需要展示的行数,整数,默认为1
60
- */
61
- class Search extends React.Component {
62
- static propTypes = {
63
- config: PropTypes.shape(ConfigType).isRequired,
64
- filters: PropTypes.arrayOf(PropTypes.shape(FilterType)).isRequired,
65
- data: PropTypes.object,
66
- options: PropTypes.object,
67
- getContainer: PropTypes.func,
68
- onClick: PropTypes.func,
69
- onChange: PropTypes.func,
70
- onSearch: PropTypes.func,
71
- onHeightChange: PropTypes.func,
72
- displayRow: PropTypes.number,
73
- };
74
-
75
- state = {more: false};
76
-
77
- onClick = (key) => {
78
- const {onClick} = this.props;
79
- onClick && onClick(key);
80
- };
81
-
82
- onMore = () => {
83
- const {onHeightChange} = this.props;
84
- this.setState({more: !this.state.more});
85
- onHeightChange && onHeightChange(this.calHeight(!this.state.more));
86
- };
87
-
88
- onChange = (dictionary, key, value) => {
89
- const {onChange} = this.props;
90
- if (value && key === 'queryGroup' && dictionary && global.dictionary && global.dictionary[dictionary]
91
- && !global.dictionary[dictionary].map(item => item.value).includes(value)) {
92
- const realValue = JSON.parse(value);
93
- this.onClick('reset');
94
- Object.keys(realValue).map(objectKey => {
95
- onChange && objectKey !== 'queryId' && onChange(objectKey, realValue[objectKey]);
96
- });
97
- }
98
- onChange && onChange(key, value);
99
- };
100
-
101
- onPressEnter = () => {
102
- ReactDOM.findDOMNode(this.refs.search).click();
103
- };
104
-
105
- toButton = (key, props={}) => {
106
- const {config} = this.props;
107
- const onClick = this.onClick.bind(this, key);
108
- return <Button size={defaultSize} onClick={onClick} {...props}>{config[key]}</Button>;
109
- };
110
-
111
- toMore = () => {
112
- return (
113
- <a role='more' onClick={this.onMore}>
114
- {this.props.config.more}
115
- <Icon type='down' data-status={!this.state.more ? 'down' : 'up'} />
116
- </a>
117
- );
118
- };
119
-
120
- toButtons = () => {
121
- const {config} = this.props;
122
- return (
123
- <div role='buttons'>
124
- {this.toButton('search', {ref: 'search', type: 'primary'})}
125
- {config.reset ? this.toButton('reset') : null}
126
- {this.isSort() ? this.toButton('sort') : null}
127
- {this.isMore() ? this.toMore() : null}
128
- </div>
129
- );
130
- };
131
-
132
- isSort = () => {
133
- const {config, colNum=defaultColNum, filters, isSort=false} = this.props;
134
- return isSort && config.sort && (filters.length > colNum);
135
- };
136
-
137
- isMore = () => {
138
- const {config, colNum=defaultColNum, filters, displayRow=1} = this.props;
139
- return config.more && (filters.filter(item => !item.hide).length > colNum * displayRow);
140
- };
141
-
142
- getOptions = (filter) => {
143
- const options = this.props.options;
144
- if (options && Array.isArray(options[filter.key])) {
145
- return options[filter.key];
146
- } else {
147
- return filter.options || filter.typeRelated || [];
148
- }
149
- };
150
-
151
- getContainer = () => {
152
- return this.props.getContainer;
153
- };
154
-
155
- getControlProps = (control) => {
156
- const {data={}} = this.props;
157
- return {
158
- ...(control.props || {}),
159
- size: defaultSize,
160
- type: control.type,
161
- value: makeString(data[control.key]),
162
- onChange: this.onChange.bind(this, control.dictionary, control.key)
163
- };
164
- };
165
- validDate = ({key, type}) => (date) => {
166
- const {data={}} = this.props;
167
- if (!date || !data[key]) {
168
- return false;
169
- } else {
170
- if (type === '>') {
171
- return date.format('YYYY-MM-DD HH:mm:ss') <= data[key].valueOf();
172
- } else if (type === '<') {
173
- return date.format('YYYY-MM-DD HH:mm:ss') >= data[key].valueOf();
174
- } else {
175
- return false;
176
- }
177
- }
178
- };
179
-
180
- toText = (props) => {
181
- props.onPressEnter = this.onPressEnter;
182
- return <Control {...props} />;
183
- };
184
-
185
- toNumber = (props) => {
186
- props.defaultValue = props.value;
187
- delete props.value;
188
- return <Control {...props} />;
189
- };
190
-
191
- getQueryGroupOptions = ({dictionary, configCode='unknown'}) => {
192
- let realOptions = [];
193
- if (dictionary && global.dictionary) {
194
- const dicOptions = global.dictionary[dictionary] || [];
195
- realOptions = realOptions.concat(dicOptions);
196
- }
197
- const state = global.store.getState();
198
- const path = ['layout', 'tableColsSetting', configCode];
199
- const {queryList = []} = getPathValue(state, path) || {};
200
- return realOptions.concat(queryList.map(item => ({title: item.name, value: JSON.stringify(item.query)})));
201
- };
202
-
203
- toSelect = (props, filter) => {
204
- const container = this.getContainer();
205
- container && (props.getPopupContainer = container);
206
- props.options = filter.key === 'queryGroup' ? this.getQueryGroupOptions(filter) : this.getOptions(filter);
207
- props.dropdownMatchSelectWidth = false;
208
- return <Control {...props} />;
209
- };
210
-
211
- createSearchEvent = (filter) => {
212
- if (this.props.onSearch) {
213
- return value => this.props.onSearch(filter.key, value, filter);
214
- } else {
215
- return null;
216
- }
217
- };
218
-
219
- toSearch = (props, filter) => {
220
- const container = this.getContainer();
221
- container && (props.getPopupContainer = container);
222
- props.options = this.getOptions(filter);
223
- props.onSearch = this.createSearchEvent(filter);
224
- props.dropdownMatchSelectWidth = false;
225
- return <Control {...props} />;
226
- };
227
-
228
- selectSearch = (props, filter) => {
229
- const container = this.getContainer();
230
- container && (props.getPopupContainer = container);
231
- props.options = this.getOptions(filter);
232
- props.onSearch = this.createSearchEvent(filter);
233
- props.dropdownMatchSelectWidth = false;
234
- return <Control {...props} />;
235
- };
236
-
237
-
238
- toDate = (props,{rule}) => {
239
- const container = this.getContainer();
240
- container && (props.getCalendarContainer = container);
241
- rule && (props.disabledDate = this.validDate(rule));
242
- props.style = {width: '100%'};
243
- return <Control {...props} />;
244
- };
245
-
246
- toReadonly = (props, filter) => {
247
- props.value = getTitle(props.value, this.getOptions(filter));
248
- return <Control {...props} />;
249
- };
250
-
251
- toCascader = (props,filter) => {
252
- const container = this.getContainer();
253
- container && (props.getPopupContainer = container);
254
- props.options = this.getOptions(filter);
255
- props.onSearch = this.createSearchEvent(filter);
256
- props.placeholder = filter.placeholder || '';
257
- return <Control {...props} />;
258
- };
259
- toTreeSelect = (props,filter) => {
260
- const container = this.getContainer();
261
- container && (props.getPopupContainer = container);
262
- props.options = this.getOptions(filter);
263
- props.onSearch = this.createSearchEvent(filter);
264
- props.placeholder = filter.placeholder || '';
265
- return <Control {...props} />;
266
- };
267
- toControl = (control) => {
268
- const props = this.getControlProps(control);
269
- switch (control.type) {
270
- case 'text':
271
- return this.toText(props, control);
272
- case 'number':
273
- return this.toNumber(props, control);
274
- case 'select':
275
- return this.toSelect(props, control);
276
- case 'selectSearch':
277
- return this.selectSearch(props, control);
278
- case 'search':
279
- return this.toSearch(props, control);
280
- case 'date':
281
- return this.toDate(props, control);
282
- case 'readonly':
283
- return this.toReadonly(props, control);
284
- case 'cascader':
285
- return this.toCascader(props,control);
286
- case 'treeSelect':
287
- return this.toTreeSelect(props,control)
288
- default:
289
- return 'type error';
290
- }
291
- };
292
-
293
- async onAddQueryGroup(configCode, searchData, dictionary) {
294
- const {onAddQueryGroup} = this.props;
295
- onAddQueryGroup && onAddQueryGroup(configCode, searchData, dictionary)
296
- };
297
-
298
- async onDelQueryGroup(configCode, searchData, dictionary) {
299
- const {onDelQueryGroup} = this.props;
300
- onDelQueryGroup && onDelQueryGroup(configCode, searchData, dictionary)
301
- };
302
-
303
- toLabel = ({title, key, dictionary, configCode='unknown'}) => {
304
- if (key === 'queryGroup') { //查询组合
305
- return (
306
- <span>
307
- {title}
308
- <Icon role='icon' type='plus-circle-o' onClick={this.onAddQueryGroup.bind(this, configCode, this.props.data, dictionary)}/>
309
- <Icon role='icon' type="minus-circle-o" onClick={this.onDelQueryGroup.bind(this, configCode, this.props.data, dictionary)}/>
310
- </span>
311
- );
312
- } else {
313
- return title;
314
- }
315
- };
316
-
317
- toCol = (span, control, more) => {
318
- const factor = control.span || 1;
319
- return (
320
- <Col span={span * factor} key={control.key} onFocus={more ? ()=>{this.setState({more: true})} : undefined}>
321
- <FormItem label={this.toLabel(control)} required={control.required}>
322
- {this.toControl(control)}
323
- </FormItem>
324
- </Col>
325
- );
326
- };
327
-
328
- toCols = () => {
329
- const {colNum=defaultColNum, filters, displayRow=1} = this.props;
330
- const span = 24 / Math.min(colNum, filters.filter(item => !item.hide).length);
331
- return filters.filter(item => !item.hide).map((control, index) => this.toCol(span, control, index >= colNum * displayRow));
332
- };
333
-
334
- calWidth = () => {
335
- const {colNum=defaultColNum, filters} = this.props;
336
- const length = filters.filter(item => !item.hide).length;
337
- if (length < colNum) {
338
- return `${length * 18}%`;
339
- } else {
340
- return `${defaultColNum * 18}%`;
341
- }
342
- };
343
-
344
- calHeight = (more) => {
345
- const {colNum=defaultColNum, filters, displayRow=1} = this.props;
346
- if (more) {
347
- const row = Math.ceil(filters.filter(item => !item.hide).length / colNum);
348
- return row * 36 + (row - 1) * 10;
349
- } else {
350
- return displayRow * 36 + (displayRow - 1) * 10;
351
- }
352
- };
353
-
354
- render() {
355
- return (
356
- <div className={variables('Search')} style={{height: this.calHeight(this.state.more)}}>
357
- <Form layout='vertical' style={{width: this.calWidth()}}>
358
- <Row gutter={20}>
359
- {this.toCols()}
360
- </Row>
361
- </Form>
362
- {this.toButtons()}
363
- </div>
364
- );
365
- }
366
- }
367
-
368
- export default Search;