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,368 @@
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;