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,436 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import ReactDOM from 'react-dom';
4
+ import withStyles from 'isomorphic-style-loader/withStyles';
5
+ import {Button, Form, Row, Col, Icon} from 'antd';
6
+ import Control, {getTitle, makeString} from '../Control';
7
+ // import helper from '../../common/common';
8
+ // import s from './Search.less';
9
+ import {getPathValue} from "../helper";
10
+ // import showAddDialog from './AddDialog';
11
+ // import showDeleteDialog from './DeleteDialog';
12
+ import variables from "../variables";
13
+
14
+ const FormItem = Form.Item;
15
+ const defaultSize = 'small';
16
+ const defaultColNum = 6;
17
+ const insertTimeKeyMap = {
18
+ from:["insertTimeTo","insertTimeFrom"],
19
+ start:["insertTimeStart","insertTimeEnd"]
20
+ }
21
+ const TYPE = [
22
+ 'text',
23
+ 'search',
24
+ 'searchText',
25
+ 'select',
26
+ 'number',
27
+ 'date',
28
+ 'readonly',
29
+ 'selectSearch',
30
+ 'cascader' //级联选择下拉
31
+ ];
32
+
33
+ /**
34
+ * search: 搜索按钮的标题
35
+ * more:更多按钮的标题
36
+ * reset:重置按钮的标题
37
+ * sort:排序按钮的标题
38
+ */
39
+ const ConfigType = {
40
+ search: PropTypes.string.isRequired,
41
+ reset: PropTypes.string,
42
+ sort: PropTypes.string,
43
+ more: PropTypes.string
44
+ };
45
+
46
+ /**
47
+ * key: 唯一标识一个表单元素
48
+ * title:表单元素旁边的标题
49
+ * type:表单元素的类型
50
+ * props:传递给表单元素的额外属性
51
+ */
52
+ const FilterType = {
53
+ key: PropTypes.string.isRequired,
54
+ title: PropTypes.string.isRequired,
55
+ type: PropTypes.oneOf(TYPE).isRequired,
56
+ options: PropTypes.array,
57
+ props: PropTypes.object
58
+ };
59
+
60
+ /**
61
+ * data:传递给filters的默认值,为key:value的形式,此处的key为FilterType中的key
62
+ * isSort:是否需要排序按钮,默认false,当设置为true时,onClick函数需要实现key为sort的响应函数
63
+ * options: 作用同FilterType.options类似,但优先级高于它
64
+ * onClick:按钮点击事件,原型为func(key)
65
+ * onChange:表单控件内容改变时触发,原型为func(key, value)
66
+ * onSearch:search控件发出的事件,原型为func(key, value)
67
+ * displayRow:折叠时需要展示的行数,整数,默认为2
68
+ */
69
+ class Search2 extends React.Component {
70
+ static propTypes = {
71
+ config: PropTypes.shape(ConfigType).isRequired,
72
+ filters: PropTypes.arrayOf(PropTypes.shape(FilterType)).isRequired,
73
+ data: PropTypes.object,
74
+ options: PropTypes.object,
75
+ getContainer: PropTypes.func,
76
+ onClick: PropTypes.func,
77
+ onChange: PropTypes.func,
78
+ onSearch: PropTypes.func,
79
+ onHeightChange: PropTypes.func,
80
+ displayRow: PropTypes.number,
81
+ };
82
+
83
+ state = {more: false};
84
+
85
+ getPathFun = async (key) => {
86
+ const pathArr = global.location.pathname.split('/');
87
+ const {sidebars,navigation} = global.store.getState().layout;
88
+ const title = Object.keys(sidebars).reduce((t,i) => {
89
+ sidebars[i].map(item => {
90
+ if (item.children){
91
+ const filterArr = item.children.filter(c => c.href === global.location.pathname);
92
+ if (filterArr.length !== 0){
93
+ t = navigation.filter(n => n.key === i)[0].title.concat(`-${item.title}-${filterArr[0].title}`);
94
+ }
95
+ }else{
96
+ if (item.href === global.location.pathname){
97
+ t = navigation.filter(n => n.key === i)[0].title.concat(`-${item.title}`);
98
+ }
99
+ }
100
+ return item;
101
+ })
102
+ return t;
103
+ },'');
104
+ const body = {
105
+ action: `${pathArr[pathArr.length - 1]}_${key}`,
106
+ actionName: `${title}-搜索`,
107
+ menuName: title
108
+ }
109
+ const url = '/api/standard/log';
110
+ // await helper.fetchJson(url, helper.postOption(body))
111
+ };
112
+
113
+ onClick = (key) => {
114
+ const {onClick} = this.props;
115
+ if (key === 'search'){
116
+ // this.getPathFun(key);
117
+ }
118
+ onClick && onClick(key);
119
+ };
120
+
121
+ onMore = () => {
122
+ const {onHeightChange} = this.props;
123
+ this.setState({more: !this.state.more});
124
+ onHeightChange && onHeightChange(this.calHeight(!this.state.more));
125
+ };
126
+
127
+ onChange = (dictionary, key, value) => {
128
+ const {onChange} = this.props;
129
+ if (value && key === 'queryGroup' && dictionary && global.dictionary && global.dictionary[dictionary]
130
+ && !global.dictionary[dictionary].map(item => item.value).includes(value)) {
131
+ const realValue = JSON.parse(value);
132
+ this.onClick('reset');
133
+ Object.keys(realValue).map(objectKey => {
134
+ onChange && objectKey !== 'queryId' && onChange(objectKey, realValue[objectKey]);
135
+ });
136
+ }
137
+ onChange && onChange(key, value);
138
+ };
139
+
140
+ onPressEnter = () => {
141
+ ReactDOM.findDOMNode(this.refs.search).click();
142
+ };
143
+
144
+ toButton = (key, props={}) => {
145
+ const {config} = this.props;
146
+ const onClick = this.onClick.bind(this, key);
147
+ return <Button size={defaultSize} onClick={onClick} {...props}>{config[key]}</Button>;
148
+ };
149
+
150
+ toMore = () => {
151
+ return (
152
+ <a role='more' onClick={this.onMore}>
153
+ {this.props.config.more}
154
+ <Icon type='down' data-status={!this.state.more ? 'down' : 'up'} />
155
+ </a>
156
+ );
157
+ };
158
+
159
+ toButtons = () => {
160
+ const {config} = this.props;
161
+ return (
162
+ <div role='buttons'>
163
+ {this.toButton('search', {ref: 'search', type: 'primary'})}
164
+ {config.reset ? this.toButton('reset') : null}
165
+ {this.isSort() ? this.toButton('sort') : null}
166
+ {this.isMore() ? this.toMore() : null}
167
+ </div>
168
+ );
169
+ };
170
+
171
+ isSort = () => {
172
+ const {config, colNum=defaultColNum, filters, isSort=false} = this.props;
173
+ return isSort && config.sort && (filters.length > colNum);
174
+ };
175
+
176
+ isMore = () => {
177
+ const {config, colNum=defaultColNum, filters, displayRow=filters.length > 4 ? 2 : 1} = this.props;
178
+ return config.more && (filters.filter(item => !item.hide).length > colNum * displayRow);
179
+ };
180
+
181
+ getOptions = (filter) => {
182
+ const options = this.props.options;
183
+ if (options && Array.isArray(options[filter.key])) {
184
+ return options[filter.key];
185
+ } else {
186
+ return filter.options || filter.typeRelated || [];
187
+ }
188
+ };
189
+
190
+ getContainer = () => {
191
+ return this.props.getContainer;
192
+ };
193
+
194
+ getControlProps = (control) => {
195
+ const {data={}} = this.props;
196
+ return {
197
+ ...(control.props || {}),
198
+ size: defaultSize,
199
+ type: control.type,
200
+ value: makeString(data[control.key]),
201
+ onChange: this.onChange.bind(this, control.dictionary, control.key)
202
+ };
203
+ };
204
+ validDate = ({key, type}) => (date) => {
205
+ const {data={}} = this.props;
206
+ if (!date || !data[key]) {
207
+ return false;
208
+ } else {
209
+ if (type === '>') {
210
+ return date.format('YYYY-MM-DD HH:mm:ss') <= data[key].valueOf();
211
+ } else if (type === '<') {
212
+ return date.format('YYYY-MM-DD HH:mm:ss') >= data[key].valueOf();
213
+ } else {
214
+ return false;
215
+ }
216
+ }
217
+ };
218
+
219
+ toText = (props) => {
220
+ props.onPressEnter = this.onPressEnter;
221
+ return <Control {...props} />;
222
+ };
223
+
224
+ toNumber = (props) => {
225
+ props.defaultValue = props.value;
226
+ delete props.value;
227
+ return <Control {...props} />;
228
+ };
229
+
230
+ getQueryGroupOptions = ({dictionary, configCode='unknown'}) => {
231
+ let realOptions = [];
232
+ if (dictionary && global.dictionary) {
233
+ const dicOptions = global.dictionary[dictionary] || [];
234
+ realOptions = realOptions.concat(dicOptions);
235
+ }
236
+ const state = global.store.getState();
237
+ const path = ['layout', 'tableColsSetting', configCode];
238
+ const {queryList = []} = getPathValue(state, path) || {};
239
+ return realOptions.concat(queryList.map(item => ({title: item.name, value: JSON.stringify(item.query)})));
240
+ };
241
+
242
+ toSelect = (props, filter) => {
243
+ const container = this.getContainer();
244
+ container && (props.getPopupContainer = container);
245
+ props.options = filter.key === 'queryGroup' ? this.getQueryGroupOptions(filter) : this.getOptions(filter);
246
+ props.dropdownMatchSelectWidth = false;
247
+ return <Control {...props} />;
248
+ };
249
+
250
+ createSearchEvent = (filter) => {
251
+ if (this.props.onSearch) {
252
+ return value => this.props.onSearch(filter.key, value, filter);
253
+ } else {
254
+ return null;
255
+ }
256
+ };
257
+
258
+ toSearch = (props, filter) => {
259
+ const container = this.getContainer();
260
+ container && (props.getPopupContainer = container);
261
+ props.options = this.getOptions(filter);
262
+ props.onSearch = this.createSearchEvent(filter);
263
+ props.dropdownMatchSelectWidth = false;
264
+ return <Control {...props} />;
265
+ };
266
+
267
+ selectSearch = (props, filter) => {
268
+ const container = this.getContainer();
269
+ container && (props.getPopupContainer = container);
270
+ props.options = this.getOptions(filter);
271
+ props.onSearch = this.createSearchEvent(filter);
272
+ props.dropdownMatchSelectWidth = false;
273
+ return <Control {...props} />;
274
+ };
275
+
276
+
277
+ toDate = (props,{rule}) => {
278
+ const container = this.getContainer();
279
+ container && (props.getCalendarContainer = container);
280
+ rule && (props.disabledDate = this.validDate(rule));
281
+ props.style = {width: '100%'};
282
+ return <Control {...props} />;
283
+ };
284
+
285
+ toReadonly = (props, filter) => {
286
+ props.value = getTitle(props.value, this.getOptions(filter));
287
+ return <Control {...props} />;
288
+ };
289
+
290
+ toCascader = (props,filter) => {
291
+ const container = this.getContainer();
292
+ container && (props.getPopupContainer = container);
293
+ props.options = this.getOptions(filter);
294
+ props.onSearch = this.createSearchEvent(filter);
295
+ props.placeholder = filter.placeholder || '';
296
+ return <Control {...props} />;
297
+ };
298
+
299
+ toControl = (control) => {
300
+ const props = this.getControlProps(control);
301
+ switch (control.type) {
302
+ case 'text':
303
+ return this.toText(props, control);
304
+ case 'number':
305
+ return this.toNumber(props, control);
306
+ case 'select':
307
+ return this.toSelect(props, control);
308
+ case 'selectSearch':
309
+ return this.selectSearch(props, control);
310
+ case 'search':
311
+ case 'searchText':
312
+ return this.toSearch(props, control);
313
+ case 'date':
314
+ return this.toDate(props, control);
315
+ case 'readonly':
316
+ return this.toReadonly(props, control);
317
+ case 'cascader':
318
+ return this.toCascader(props,control)
319
+ default:
320
+ return 'type error';
321
+ }
322
+ };
323
+
324
+ async onAddQueryGroup(configCode, searchData, dictionary) {
325
+ const filter = Object.keys(searchData).reduce((state, key) => {
326
+ if (searchData[key] && key !== 'queryGroup') {
327
+ state[key] = searchData[key];
328
+ }
329
+ return state;
330
+ }, {});
331
+ // if (Object.keys(filter).length < 1) return helper.showError(`查询条件不能为空`);
332
+ let dicOptionNameArr = [];
333
+ if (dictionary && global.dictionary) {
334
+ const dicOptions = global.dictionary[dictionary] || [];
335
+ dicOptionNameArr = dicOptions.map(item => item.title);
336
+ }
337
+ // if (true === await showAddDialog(configCode, filter, dicOptionNameArr)) {
338
+ // this.onChange(undefined, 'queryGroup', '');
339
+ // }
340
+ };
341
+
342
+ async onDelQueryGroup(configCode, searchData, dictionary) {
343
+ const {queryGroup} = searchData;
344
+ // if (!queryGroup) return helper.showError(`请先选择要删除的查询组合`);
345
+ if (dictionary && global.dictionary) {
346
+ const dicOptions = global.dictionary[dictionary] || [];
347
+ // if (dicOptions.map(item => item.value).includes(queryGroup)) return helper.showError(`系统固定查询组合不允许删除`);
348
+ }
349
+ const {queryId} = JSON.parse(queryGroup);
350
+ // if(true === await showDeleteDialog(configCode, queryId)) {
351
+ // this.onClick('reset');
352
+ // }
353
+ };
354
+
355
+ toLabel = ({title, key, dictionary, configCode='unknown'}) => {
356
+ if (key === 'queryGroup') { //查询组合
357
+ return (
358
+ <span>
359
+ {title}
360
+ <Icon role='icon' type='plus-circle-o' onClick={this.onAddQueryGroup.bind(this, configCode, this.props.data, dictionary)}/>
361
+ <Icon role='icon' type="minus-circle-o" onClick={this.onDelQueryGroup.bind(this, configCode, this.props.data, dictionary)}/>
362
+ </span>
363
+ );
364
+ } else {
365
+ return title;
366
+ }
367
+ };
368
+
369
+ toCol = (span, control, more) => {
370
+ const factor = control.span || 1;
371
+ return (
372
+ <Col span={span * factor} key={control.key} onFocus={more ? ()=>{this.setState({more: true})} : undefined}>
373
+ <FormItem label={this.toLabel(control)} required={control.required}>
374
+ {this.toControl(control)}
375
+ </FormItem>
376
+ </Col>
377
+ );
378
+ };
379
+
380
+ toCols = () => {
381
+ const {insertTimeKey='from',colNum=defaultColNum, filters, displayRow=filters.length > defaultColNum ? 2 :1} = this.props;
382
+ let span = 24 / Math.min(colNum, filters.filter(item => !item.hide).length);
383
+ let newFilters = filters.filter(item => !item.hide);
384
+ const insertKeys = insertTimeKeyMap[insertTimeKey];
385
+ const insertTimeCols = newFilters.filter(x=>insertKeys.includes(x.key));
386
+ const otherCols = newFilters.filter(x=>!insertKeys.includes(x.key));
387
+ if (insertTimeCols.length>0){
388
+ if (otherCols.length>=defaultColNum){
389
+ otherCols.splice(6,0,...insertTimeCols);
390
+ newFilters = otherCols;
391
+ }else{
392
+ newFilters = otherCols.concat(insertTimeCols);
393
+ }
394
+ }
395
+ if (span == 4.8){ //特殊处理filters为5的时候,span不能为小数
396
+ return newFilters.map((control, index) => this.toCol(index==0?4:5, control, index >= colNum * displayRow));
397
+ }else{
398
+ return newFilters.map((control, index) => this.toCol(span, control, index >= colNum * displayRow));
399
+ }
400
+ };
401
+
402
+ calWidth = () => {
403
+ const {colNum=defaultColNum, filters} = this.props;
404
+ const length = filters.filter(item => !item.hide).length;
405
+ if (length < colNum) {
406
+ return `${length * 13.6}%`;
407
+ } else {
408
+ return `${defaultColNum * 13.6}%`;
409
+ }
410
+ };
411
+
412
+ calHeight = (more) => {
413
+ const {colNum=defaultColNum, filters, displayRow=filters.length > defaultColNum ? 2 :1} = this.props;
414
+ if (more) {
415
+ const row = Math.ceil(filters.filter(item => !item.hide).length / colNum);
416
+ return row * 36 + (row - 1) * 10;
417
+ } else {
418
+ return displayRow * 36 + (displayRow - 1) * 10;
419
+ }
420
+ };
421
+
422
+ render() {
423
+ return (
424
+ <div className={variables('Search2')} style={{height: this.calHeight(this.state.more)}}>
425
+ <Form layout='vertical' style={{width: this.calWidth()}}>
426
+ <Row gutter={20}>
427
+ {this.toCols()}
428
+ </Row>
429
+ </Form>
430
+ {this.toButtons()}
431
+ </div>
432
+ );
433
+ }
434
+ }
435
+
436
+ export default Search2;
@@ -1,63 +1,65 @@
1
- @import '../variables.less';
2
-
3
- .@{cloudlink-prefix}-Search {
4
- transition: all 0.3s;
5
-
6
- > *:first-child {
7
- display: inline-block;
8
- vertical-align: top;
9
- margin-bottom: -10px;
10
-
11
- :global(.ant-form-item) {
12
- margin-bottom: 10px;
13
-
14
- :global(.ant-select-selection--multiple) {
15
- border-top-width: 1px;
16
- height: 22px;
17
- overflow: auto;
18
- }
19
-
20
- [role='icon'] {
21
- cursor: pointer;
22
- margin-left: 10px;
23
- color: @primary-color;
24
- }
25
- }
26
- }
27
-
28
- > *:last-child {
29
- display: inline-block;
30
- vertical-align: top;
31
- padding-left: 20px;
32
- padding-top: 14px;
33
- width: 25%;
34
- }
35
-
36
- :global(.ant-form-item-control) input,
37
- :global(.ant-calendar-picker),
38
- :global(.ant-select) {
39
- display: block;
40
- }
41
-
42
- [role='buttons'] > * {
43
- margin-right: 5px;
44
- }
45
-
46
- [role='more'] {
47
- color: rgba(0, 0, 0, 0.65);
48
- user-select: none;
49
-
50
- &:hover {
51
- color: @brand-primary;
52
- }
53
-
54
- > i {
55
- transform: scale(0.75);
56
- transition: all 0.2s;
57
-
58
- &[data-status='up'] {
59
- transform: scale(0.75) rotate(-180deg);
60
- }
61
- }
62
- }
63
- }
1
+ @import '../variables.less';
2
+
3
+ .@{cloudlink-prefix}-Search2 {
4
+ transition: all 0.3s;
5
+
6
+ > *:first-child {
7
+ display: inline-block;
8
+ vertical-align: top;
9
+ margin-bottom: -10px;
10
+
11
+ :global(.ant-form-item) {
12
+ margin-bottom: 10px;
13
+
14
+ :global(.ant-select-selection--multiple) {
15
+ border-top-width: 1px;
16
+ height: 22px;
17
+ overflow: auto;
18
+ }
19
+
20
+ [role='icon'] {
21
+ cursor: pointer;
22
+ margin-left: 10px;
23
+ color: @primary-color;
24
+ }
25
+ }
26
+ }
27
+
28
+ > *:last-child {
29
+ display: inline-block;
30
+ vertical-align: top;
31
+ padding-left: 20px;
32
+ padding-top: 14px;
33
+ width: 18%;
34
+ }
35
+
36
+ :global(.ant-form-item-control) input,
37
+ :global(.ant-calendar-picker),
38
+ :global(.ant-select) {
39
+ display: block;
40
+ }
41
+ :global(.ant-calendar-picker-small) {
42
+ min-width: 100px !important;
43
+ }
44
+ [role='buttons'] > * {
45
+ margin-right: 5px;
46
+ }
47
+
48
+ [role='more'] {
49
+ color: rgba(0, 0, 0, 0.65);
50
+ user-select: none;
51
+
52
+ &:hover {
53
+ color: @brand-primary;
54
+ }
55
+
56
+ > i {
57
+ transform: scale(0.75);
58
+ transition: all 0.2s;
59
+
60
+ &[data-status='up'] {
61
+ transform: scale(0.75) rotate(-180deg);
62
+ }
63
+ }
64
+ }
65
+ }
@@ -1,6 +1,6 @@
1
- {
2
- "name": "Search",
3
- "version": "0.0.0",
4
- "private": true,
5
- "main": "./Search.js"
6
- }
1
+ {
2
+ "name": "Search",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "main": "./Search.js"
6
+ }
@@ -0,0 +1,111 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Link from '../Link';
4
+ import SuperIcon from '../SuperIcon';
5
+ import {Menu} from 'antd';
6
+ import variables from '../variables';
7
+
8
+ const SubMenu = Menu.SubMenu;
9
+ const MenuItem = Menu.Item;
10
+
11
+ /** 侧边栏二级条目的类型
12
+ * key: 唯一标识一个条目
13
+ * title:条目的标题
14
+ * href: 为跳转页面的url
15
+ */
16
+ const ChildType = {
17
+ key: PropTypes.string.isRequired,
18
+ title: PropTypes.string.isRequired,
19
+ href: PropTypes.string.isRequired
20
+ };
21
+
22
+ /** 侧边栏一级条目的类型
23
+ * key: 唯一标识一个条目
24
+ * title:条目的标题
25
+ * icon:条目左边图标url,大小为20*20px
26
+ * isFolder:为true表明有下级菜单,此时href被忽略,children存放下级菜单的信息
27
+ * href: isFolder为false时,为跳转页面的url,否则被忽略
28
+ * children:isFolder为true时,存放下级菜单的信息,否则被忽略
29
+ */
30
+ const ItemType = {
31
+ key: PropTypes.string.isRequired,
32
+ title: PropTypes.string.isRequired,
33
+ icon: PropTypes.string,
34
+ isFolder: PropTypes.bool,
35
+ href: PropTypes.string,
36
+ children: PropTypes.arrayOf(PropTypes.shape(ChildType))
37
+ };
38
+
39
+ /**
40
+ * activeKey:指定被选中的一级条目的key,不能是二级条目的key
41
+ * items:存放所有侧边栏条目的信息
42
+ * style: 样式
43
+ */
44
+ class Sidebar extends React.Component {
45
+ static propTypes = {
46
+ activeKey: PropTypes.string.isRequired,
47
+ items: PropTypes.arrayOf(PropTypes.shape(ItemType)).isRequired,
48
+ style: PropTypes.object
49
+ };
50
+
51
+ onOpenChange = (openKeys) => {
52
+ const {onOpenChange} = this.props;
53
+ if (onOpenChange) {
54
+ onOpenChange(openKeys);
55
+ }
56
+ };
57
+
58
+ toIcon = (type) => {
59
+ if (type) {
60
+ return <SuperIcon type={type} style={{fontSize: 16, verticalAlign: -2}} />
61
+ } else {
62
+ return null;
63
+ }
64
+ };
65
+
66
+ toItem = ({key, title, isFolder, children, href, icon, unreadTotal}) => {
67
+ if (isFolder) {
68
+ const t = <div>{this.toIcon(icon)}{title}</div>;
69
+ return (
70
+ <SubMenu key={key} title={t}>
71
+ {this.toItems(children)}
72
+ </SubMenu>
73
+ );
74
+ } else {
75
+ return (
76
+ <MenuItem key={key}>
77
+ <Link to={href} title={title} className={variables('Sidebar').unreadTotalLink}>
78
+ {this.toIcon(icon)}
79
+ {title}
80
+ {unreadTotal && unreadTotal>0 && <span className={variables('Sidebar').unreadTotalLink.unreadTotal}>{unreadTotal}</span>}
81
+ </Link>
82
+ </MenuItem>
83
+ );
84
+ }
85
+ };
86
+
87
+ toItems = (items) => {
88
+ return items.map(this.toItem);
89
+ };
90
+
91
+ getProps = () => {
92
+ const {style, activeKey, openKeys=[]} = this.props;
93
+ return {
94
+ style, openKeys,
95
+ selectedKeys: [activeKey],
96
+ mode: 'inline',
97
+ onOpenChange: this.onOpenChange,
98
+ className: variables('Sidebar')
99
+ }
100
+ };
101
+
102
+ render() {
103
+ return (
104
+ <Menu {...this.getProps()}>
105
+ {this.toItems(this.props.items)}
106
+ </Menu>
107
+ );
108
+ }
109
+ }
110
+
111
+ export default Sidebar;