dlt-for-react 1.0.12 → 1.0.13

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.
package/README.md CHANGED
@@ -8,7 +8,7 @@ npm publish
8
8
 
9
9
  ## 前端 dlt-for-react 依赖包版本更新记录
10
10
 
11
- ##### 当前最新版本:1.0.12
11
+ ##### 当前最新版本:1.0.13
12
12
 
13
13
  ##### 安装依赖
14
14
 
@@ -16,6 +16,10 @@ npm publish
16
16
 
17
17
  ##### 版本修改记录
18
18
 
19
+ #### V1.0.13—2023 年 10 月 24 日
20
+
21
+ 1. 补充 KyTree 组件
22
+
19
23
  #### V1.0.11—2023 年 10 月 23 日
20
24
 
21
25
  1. 优化 NHFetch 支持文件上传模式兼容请求头配置 FormData
@@ -0,0 +1,129 @@
1
+ :global {
2
+ .Ky_tree {
3
+ position: relative;
4
+ // float: left;
5
+ margin-right: 20px;
6
+ background: transparent;
7
+ border-right: 1px solid #ddd;
8
+ .ant-input-search .ant-input {
9
+ margin-left: 4px;
10
+ border: 0px;
11
+ box-shadow: none;
12
+ }
13
+ // 滚动组件
14
+ .Ky_scroll {
15
+ & > div:nth-child(1) {
16
+ margin-bottom: 15px !important;
17
+ overflow-x: auto !important;
18
+ overflow-y: scroll !important;
19
+ }
20
+
21
+ & > div:nth-child(2) {
22
+ display: none;
23
+ }
24
+
25
+ .ant-tree {
26
+ padding-bottom: 16px;
27
+ ul,
28
+ li {
29
+ // overflow: hidden;
30
+ text-overflow: ellipsis;
31
+ }
32
+ li {
33
+ .ant-tree-node-content-wrapper {
34
+ display: inline-block;
35
+ }
36
+ // 子菜单
37
+ ul {
38
+ margin: 0;
39
+ padding: 0 16px;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ // 搜索框
45
+ .Ky_tree_headerBox {
46
+ width: 100%;
47
+ padding: 3px, 0, 0, 8px;
48
+ line-height: 40px;
49
+ text-align: right;
50
+ // 隐藏搜索框右边图标
51
+ .ant-input-affix-wrapper .ant-input-suffix {
52
+ display: none;
53
+ }
54
+ .Ky_tree_searchInput {
55
+ margin: 0 5px;
56
+ padding: 0;
57
+ text-indent: 10px;
58
+ border: none;
59
+ border-bottom: 1px solid #ccc;
60
+ border-radius: 0;
61
+ box-shadow: none;
62
+ transition: all linear 0.5s;
63
+ .Ky_tree_search_icon {
64
+ // color: rgba(0, 0, 0, 0.8);
65
+ cursor: pointer;
66
+ }
67
+ input {
68
+ // margin-left: -8px;
69
+ border-width: 0px;
70
+ &:active,
71
+ &:focus,
72
+ &:hover {
73
+ border: none;
74
+ // border-bottom: 1px solid #ccc;
75
+ border-radius: 0;
76
+ box-shadow: none;
77
+ }
78
+ }
79
+ }
80
+ // 添加图标
81
+ .Ky_tree_addBtn {
82
+ margin-right: 8px;
83
+ font-size: 16px;
84
+ cursor: pointer;
85
+ }
86
+ }
87
+ // 切换栏按钮
88
+ .Ky_tree_btn {
89
+ position: absolute;
90
+ top: 48%;
91
+ right: -18px;
92
+ width: 18px;
93
+ height: 36px;
94
+ line-height: 36px;
95
+ background-color: #f1f2f6;
96
+ border-radius: 0 36px 36px 0;
97
+ cursor: pointer;
98
+ .trigger {
99
+ color: #1890ff;
100
+ font-size: 12px;
101
+ transition: color 0.3s;
102
+ }
103
+ &:hover {
104
+ background-color: #1890ff;
105
+ .trigger {
106
+ color: #fff;
107
+ }
108
+ }
109
+ }
110
+ // 右键弹出栏
111
+ .Ky_tree_menu {
112
+ list-style: none;
113
+ a {
114
+ padding: 5px 10px;
115
+ cursor: pointer;
116
+ &:hover {
117
+ background: #e6f7ff;
118
+ }
119
+ }
120
+ }
121
+ // 侧边栏关闭时的样式
122
+ &.ant-layout-sider-collapsed {
123
+ flex: 0 0 0px !important;
124
+ width: 0px !important;
125
+ min-width: 0px !important;
126
+ max-width: 0px !important;
127
+ }
128
+ }
129
+ }
@@ -0,0 +1,840 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = undefined;
7
+
8
+ var _hasAuth2 = require("xgui-for-react/lib/utils/hasAuth");
9
+
10
+ var _hasAuth3 = _interopRequireDefault(_hasAuth2);
11
+
12
+ var _stringify = require("babel-runtime/core-js/json/stringify");
13
+
14
+ var _stringify2 = _interopRequireDefault(_stringify);
15
+
16
+ var _NHFetch2 = require("xgui-for-react/lib/utils/NHFetch");
17
+
18
+ var _NHFetch3 = _interopRequireDefault(_NHFetch2);
19
+
20
+ var _extends2 = require("babel-runtime/helpers/extends");
21
+
22
+ var _extends3 = _interopRequireDefault(_extends2);
23
+
24
+ var _tooltip = require("antd/lib/tooltip");
25
+
26
+ var _tooltip2 = _interopRequireDefault(_tooltip);
27
+
28
+ var _icon = require("antd/lib/icon");
29
+
30
+ var _icon2 = _interopRequireDefault(_icon);
31
+
32
+ var _assign = require("babel-runtime/core-js/object/assign");
33
+
34
+ var _assign2 = _interopRequireDefault(_assign);
35
+
36
+ var _popover = require("antd/lib/popover");
37
+
38
+ var _popover2 = _interopRequireDefault(_popover);
39
+
40
+ var _createUuid2 = require("xgui-for-react/lib/utils/createUuid");
41
+
42
+ var _createUuid3 = _interopRequireDefault(_createUuid2);
43
+
44
+ var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
45
+
46
+ var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
47
+
48
+ var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
49
+
50
+ var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
51
+
52
+ var _createClass2 = require("babel-runtime/helpers/createClass");
53
+
54
+ var _createClass3 = _interopRequireDefault(_createClass2);
55
+
56
+ var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
57
+
58
+ var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
59
+
60
+ var _inherits2 = require("babel-runtime/helpers/inherits");
61
+
62
+ var _inherits3 = _interopRequireDefault(_inherits2);
63
+
64
+ var _input = require("antd/lib/input");
65
+
66
+ var _input2 = _interopRequireDefault(_input);
67
+
68
+ var _tree = require("antd/lib/tree");
69
+
70
+ var _tree2 = _interopRequireDefault(_tree);
71
+
72
+ var _layout = require("antd/lib/layout");
73
+
74
+ var _layout2 = _interopRequireDefault(_layout);
75
+
76
+ require("antd/lib/tooltip/style");
77
+
78
+ require("antd/lib/icon/style");
79
+
80
+ require("antd/lib/popover/style");
81
+
82
+ require("antd/lib/input/style");
83
+
84
+ require("antd/lib/tree/style");
85
+
86
+ require("antd/lib/layout/style");
87
+
88
+ var _react = require("react");
89
+
90
+ var _react2 = _interopRequireDefault(_react);
91
+
92
+ var _reactCustomScrollbars = require("react-custom-scrollbars");
93
+
94
+ var _reactDom = require("react-dom");
95
+
96
+ var _reactDom2 = _interopRequireDefault(_reactDom);
97
+
98
+ var _equalsObj = require("../../utils/equalsObj");
99
+
100
+ var _equalsObj2 = _interopRequireDefault(_equalsObj);
101
+
102
+ require("../../../assets/components/KyTree/index.less");
103
+
104
+ var _one = require("../../../assets/components/KyTree/image/one.png");
105
+
106
+ var _one2 = _interopRequireDefault(_one);
107
+
108
+ var _one_a = require("../../../assets/components/KyTree/image/one_a.png");
109
+
110
+ var _one_a2 = _interopRequireDefault(_one_a);
111
+
112
+ var _two = require("../../../assets/components/KyTree/image/two.png");
113
+
114
+ var _two2 = _interopRequireDefault(_two);
115
+
116
+ var _two_a = require("../../../assets/components/KyTree/image/two_a.png");
117
+
118
+ var _two_a2 = _interopRequireDefault(_two_a);
119
+
120
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
121
+
122
+ var Sider = _layout2.default.Sider;
123
+
124
+ var TreeNode = _tree2.default.TreeNode;
125
+ var Search = _input2.default.Search; //扩展菜单-未激活
126
+ //扩展菜单-激活
127
+ //子菜单-未激活
128
+ //子菜单-激活
129
+
130
+ /**
131
+ * 树选择器
132
+ * sql语句基础字段:key(value值),title:(显示的值)、select_flag(是否可以选择,1:可以选择,0或null,不能选择)、fid(父Key)、icon(图标、1:扩展菜单,2:子菜单)
133
+ *
134
+ */
135
+ var MAXNUM = 50; // 支持实时搜索的最大条数
136
+
137
+ var KyTree = function (_React$Component) {
138
+ (0, _inherits3.default)(KyTree, _React$Component);
139
+
140
+ function KyTree(props) {
141
+ (0, _classCallCheck3.default)(this, KyTree);
142
+
143
+ var _this = (0, _possibleConstructorReturn3.default)(this, (KyTree.__proto__ || (0, _getPrototypeOf2.default)(KyTree)).call(this, props));
144
+
145
+ _initialiseProps.call(_this);
146
+
147
+ _this.state = {
148
+ checkedKeys: props.checkedKeys ? props.checkedKeys : [], //选中的值
149
+ selectedKeys: props.selectedKeys ? props.selectedKeys : [], //选中节点的数据
150
+ expandedKeys: [],
151
+ searchValue: "",
152
+ autoExpandParent: true,
153
+ data: [], //树数据
154
+ dataList: [], //树列表数据,主要在过滤的时候使用
155
+ singerDataMap: {}, //单选时可以选择的数据,主要在选中数据的时候获取key所对应的完整的值
156
+ multiDataMap: {}, //多选时可以选择的数据,主要在选中数据的时候获取key所对应的完整的值
157
+ collapsed: props.collapsed ? props.collapsed : false, //展开、关闭标识
158
+ tempValue: "" //用于点击图标搜索缓存值
159
+ };
160
+ return _this;
161
+ }
162
+ //设置可以传递参数的默认值
163
+
164
+
165
+ (0, _createClass3.default)(KyTree, [{
166
+ key: "componentDidMount",
167
+ value: function componentDidMount() {
168
+ this.ansysParams();
169
+ this.loadData();
170
+ }
171
+ }, {
172
+ key: "componentWillReceiveProps",
173
+ value: function componentWillReceiveProps(nextProps) {
174
+ // 当父组件的checkedKeys改变时,改变树选择的数据
175
+ if ("checkedKeys" in nextProps && !(0, _equalsObj2.default)(this.props.checkedKeys, nextProps.checkedKeys)) {
176
+ this.setState({
177
+ checkedKeys: nextProps.checkedKeys
178
+ });
179
+ }
180
+ if ("selectedKeys" in nextProps && !(0, _equalsObj2.default)(this.props.selectedKeys, nextProps.selectedKeys)) {
181
+ this.setState({
182
+ selectedKeys: nextProps.selectedKeys
183
+ });
184
+ }
185
+ if ("collapsed" in nextProps && !(0, _equalsObj2.default)(this.props.collapsed, nextProps.collapsed)) {
186
+ this.setState({
187
+ collapsed: nextProps.collapsed
188
+ });
189
+ }
190
+ }
191
+
192
+ /**
193
+ * 查询数据
194
+ */
195
+
196
+
197
+ /**
198
+ * 获取数据最上一个节点的父节点
199
+ */
200
+
201
+
202
+ /**
203
+ * 转换数据的格式
204
+ */
205
+
206
+
207
+ //获取所有节点数据
208
+
209
+
210
+ //多选时个数据select属性不能是0(0表示不能选择)
211
+
212
+
213
+ //单选时数据select属性不能是false(false表示不能选择)
214
+
215
+ //搜索输入变化事件
216
+
217
+
218
+ //字段限制返回
219
+
220
+
221
+ //树字段限制
222
+
223
+
224
+ //单选,选中了数据
225
+
226
+ //多选,选中了选择框
227
+
228
+
229
+ //渲染tree
230
+
231
+
232
+ //右击事件
233
+
234
+ }, {
235
+ key: "renderRightMenu",
236
+
237
+
238
+ //右击菜单
239
+ value: function renderRightMenu(e, rightMenuList) {
240
+ if (this.popover) {
241
+ _reactDom2.default.unmountComponentAtNode(this.cmContainer);
242
+ this.popover = null;
243
+ }
244
+ var content = _react2.default.createElement(
245
+ "ul",
246
+ { className: "Ky_tree_menu" },
247
+ rightMenuList.map(function (item) {
248
+ return _react2.default.createElement(
249
+ "a",
250
+ {
251
+ style: { display: "block", color: "inherit" },
252
+ key: (0, _createUuid3.default)(),
253
+ onClick: function onClick() {
254
+ return item.onClick(e.node.props.dataRef, e.node.props.eventKey, e);
255
+ }
256
+ },
257
+ " ",
258
+ item.name
259
+ );
260
+ })
261
+ );
262
+ this.popover = _react2.default.createElement(_popover2.default, {
263
+ placement: "bottom",
264
+ content: content,
265
+ trigger: "hover",
266
+ defaultVisible: true
267
+ });
268
+
269
+ var container = this.getContainer();
270
+ (0, _assign2.default)(this.cmContainer.style, {
271
+ position: "absolute",
272
+ left: e.event.pageX + "px",
273
+ top: e.event.pageY + "px"
274
+ });
275
+
276
+ _reactDom2.default.render(this.popover, container);
277
+ }
278
+ }, {
279
+ key: "getContainer",
280
+ value: function getContainer() {
281
+ if (!this.cmContainer) {
282
+ this.cmContainer = document.createElement("div");
283
+
284
+ document.body.appendChild(this.cmContainer);
285
+ }
286
+ return this.cmContainer;
287
+ }
288
+
289
+ /**
290
+ * 是否存在加号新增按钮
291
+ */
292
+
293
+ }, {
294
+ key: "render",
295
+ value: function render() {
296
+ var _this2 = this;
297
+
298
+ var _state = this.state,
299
+ collapsed = _state.collapsed,
300
+ expandedKeys = _state.expandedKeys,
301
+ autoExpandParent = _state.autoExpandParent,
302
+ checkedKeys = _state.checkedKeys,
303
+ selectedKeys = _state.selectedKeys,
304
+ data = _state.data,
305
+ dataList = _state.dataList,
306
+ tempValue = _state.tempValue;
307
+ var _props = this.props,
308
+ collapseShow = _props.collapseShow,
309
+ search = _props.search,
310
+ width = _props.width,
311
+ height = _props.height,
312
+ showIcon = _props.showIcon,
313
+ checkable = _props.checkable,
314
+ defaultExpandAll = _props.defaultExpandAll;
315
+
316
+ var nHeight = search || this.isExistsAddBtn() ? parseInt(height, 10) - 43 : parseInt(height, 10);
317
+ var reduceWidth = this.isExistsAddBtn() ? 50 : 20;
318
+ return _react2.default.createElement(
319
+ Sider,
320
+ {
321
+ style: { height: nHeight },
322
+ className: "Ky_tree",
323
+ theme: "light",
324
+ trigger: null,
325
+ collapsible: true,
326
+ collapsed: collapsed,
327
+ width: width
328
+ },
329
+ !collapsed && (search || this.isExistsAddBtn()) && _react2.default.createElement(
330
+ "div",
331
+ { className: "Ky_tree_headerBox" },
332
+ _react2.default.createElement(
333
+ _tooltip2.default,
334
+ {
335
+ placement: "top",
336
+ title: this.state.dataList.length > MAXNUM ? "\u8D85\u8FC7" + MAXNUM + "\u6761\u6570\u636E\uFF0C\u9700\u8981\u70B9\u51FB\u56DE\u8F66\u952E\u8FDB\u884C\u641C\u7D22" : null
337
+ },
338
+ _react2.default.createElement(Search, {
339
+ className: "Ky_tree_searchInput",
340
+ placeholder: "\u8BF7\u8F93\u5165\u67E5\u8BE2\u6761\u4EF6",
341
+ prefix: _react2.default.createElement(_icon2.default, {
342
+ type: "search",
343
+ className: "Ky_tree_search_icon",
344
+ onClick: function onClick() {
345
+ _this2.onSearch(tempValue);
346
+ }
347
+ }),
348
+ onChange: this.onChange,
349
+ onSearch: this.onSearch,
350
+ ref: function ref(node) {
351
+ _this2.input = node;
352
+ },
353
+ style: { width: width - reduceWidth, float: "left" }
354
+ })
355
+ ),
356
+ this.isExistsAddBtn() && _react2.default.createElement(_icon2.default, {
357
+ type: "plus",
358
+ className: "Ky_tree_addBtn",
359
+ onClick: this.handleAdd
360
+ })
361
+ ),
362
+ collapseShow && _react2.default.createElement(
363
+ "div",
364
+ {
365
+ className: "Ky_tree_btn",
366
+ onClick: function onClick() {
367
+ _this2.setState({ collapsed: !collapsed });
368
+ }
369
+ },
370
+ _react2.default.createElement(_icon2.default, { className: "trigger", type: collapsed ? "right" : "left" })
371
+ ),
372
+ dataList && dataList.length > 0 && _react2.default.createElement(
373
+ _reactCustomScrollbars.Scrollbars,
374
+ {
375
+ className: "Ky_scroll",
376
+ style: { width: "100%", height: "100%" }
377
+ },
378
+ _react2.default.createElement(
379
+ _tree2.default,
380
+ (0, _extends3.default)({}, this.props, {
381
+ showIcon: showIcon,
382
+ checkable: checkable,
383
+ onExpand: this.onExpand,
384
+ expandedKeys: expandedKeys,
385
+ autoExpandParent: autoExpandParent,
386
+ onCheck: this.onCheck,
387
+ checkedKeys: checkedKeys //选中复选框的数据
388
+ , selectedKeys: selectedKeys //选中节点的数据
389
+ , onSelect: this.onSelect,
390
+ onRightClick: this.onRightClick,
391
+ defaultExpandAll: defaultExpandAll
392
+ }),
393
+ this.loop(data, 1)
394
+ )
395
+ )
396
+ );
397
+ }
398
+ }]);
399
+ return KyTree;
400
+ }(_react2.default.Component);
401
+
402
+ KyTree.defaultProps = {
403
+ sign: undefined, //标志
404
+ showIcon: false, //是否显示树图标
405
+ url: undefined, //查询数据的url,如果不给的话,则使用通用的查询数据的路径
406
+ checkable: true, //默认开启多选框
407
+ width: undefined, //树的宽度
408
+ height: undefined, //树的高度
409
+ onSelect: undefined, //选中数据的回调方法
410
+ params: {}, //查询条件
411
+ sqlParams: {}, //用于sql语句中的查询条件
412
+ search: true, //加搜索框
413
+ buttons: [], //鼠标右键点击事件回调type,name,onClick(item,key),isShow(),auth
414
+ addBtn: undefined, //加号触发事件方法()=>{}
415
+ addBtnAuth: undefined, //加号的权限控制标志
416
+ expandedKeys: [], //展开指定的树节点,如果设置了展开的节点,则使用此属性,如果没有设置则默认展开第一个节点
417
+ disabled: false, //是否禁用树
418
+ baseUrl: undefined, //请求路径的前缀,可通过改参数控制访问的后端服务,如果不设置,则会去访问当前前端服务对应的后端服务,例如:api/sm-bpm-expansion
419
+ defaultExpandAll: false, //默认展开所有树节, 默认为false
420
+ collapseShow: true //默认使用切换开关栏
421
+ };
422
+
423
+ var _initialiseProps = function _initialiseProps() {
424
+ var _this3 = this;
425
+
426
+ this.loadData = function () {
427
+ var obj = _this3;
428
+ var baseUrl = _this3.props.baseUrl;
429
+ var url = _this3.props.url ? _this3.props.url : (baseUrl || window.baseUrl || "") + "/proData/getTreeList";
430
+ (0, _NHFetch3.default)(url, "POST", {
431
+ params: _this3.props.params,
432
+ sqlParams: _this3.props.sqlParams,
433
+ sign: _this3.props.sign
434
+ }).then(function (res) {
435
+ if (res && res.data) {
436
+ var root = _this3.getDataRoot(res.data);
437
+ var data = _this3.buildData(res.data, root);
438
+ var dataList = obj.generateList(data);
439
+ var singerDataMap = obj.getSingerDataMap(data);
440
+ var multiDataMap = obj.getMultiDataMap(data);
441
+ var key = data[0].KEY || data[0].key; //默认展开第一个
442
+ obj.setState({
443
+ data: data,
444
+ expandedKeys: _this3.props.expandedKeys.length > 0 ? _this3.props.expandedKeys : [key],
445
+ // expandedKeys: this.props.expandedKeys,
446
+ dataList: dataList,
447
+ singerDataMap: singerDataMap,
448
+ multiDataMap: multiDataMap
449
+ });
450
+ }
451
+ });
452
+ };
453
+
454
+ this.ansysParams = function () {
455
+ //先从缓存中获取配置信息,如果再缓存中没有配置信息则说明配置时在前端书写
456
+ var paramsStr = sessionStorage.getItem("nhParams");
457
+ var params = undefined;
458
+ if (paramsStr != undefined) {
459
+ var params1 = JSON.parse(paramsStr);
460
+ if (params1.tree !== undefined && params1.tree[_this3.props.sign]) {
461
+ params = params1.tree[_this3.props.sign];
462
+ }
463
+ if (params === undefined && _this3.props.rowKey === undefined && _this3.props.baseUrl) {
464
+ var treeStr = sessionStorage.getItem(_this3.props.sign);
465
+ if (treeStr) {
466
+ var treeParam = JSON.parse(treeStr);
467
+ params = treeParam;
468
+ } else {
469
+ var t = new Date().getTime();
470
+ (0, _NHFetch3.default)(_this3.props.baseUrl + "/proData/queryAllConfig", "GET", t).then(function (res) {
471
+ if (res && res.code === 200) {
472
+ var _treeParam = res.data.tree[_this3.props.sign];
473
+ if (_treeParam) {
474
+ sessionStorage.setItem(_this3.props.sign, (0, _stringify2.default)(_treeParam));
475
+ _this3.ansysParams();
476
+ } else {
477
+ console.warn("无法获取" + _this3.props.sign + "配置");
478
+ }
479
+ }
480
+ });
481
+ return;
482
+ }
483
+ }
484
+ }
485
+ };
486
+
487
+ this.getDataRoot = function (data) {
488
+ var keys = {};
489
+ var parentKeys = [];
490
+ for (var i = 0; i < data.length; i++) {
491
+ var key = data[i].KEY || data[i].key;
492
+ var fid = data[i].FID || data[i].fid;
493
+ keys[key] = 1;
494
+ parentKeys.push(fid);
495
+ }
496
+ for (var _i = 0; _i < parentKeys.length; _i++) {
497
+ if (keys[parentKeys[_i]] !== 1) {
498
+ return parentKeys[_i];
499
+ }
500
+ }
501
+ return "-1";
502
+ };
503
+
504
+ this.buildData = function (data, parentKey) {
505
+ if (!data || data.length <= 0) {
506
+ return null;
507
+ }
508
+ var resultList = [];
509
+ for (var i = 0; i < data.length; i++) {
510
+ var fid = data[i].FID || data[i].fid;
511
+ var key = data[i].KEY || data[i].key;
512
+ if (fid === parentKey) {
513
+ var childrenList = _this3.buildData(data, key);
514
+ if (childrenList.length > 0) {
515
+ data[i].children = childrenList;
516
+ }
517
+ resultList.push(data[i]);
518
+ }
519
+ }
520
+ return resultList;
521
+ };
522
+
523
+ this.onExpand = function (expandedKeys) {
524
+ _this3.setState({
525
+ expandedKeys: expandedKeys,
526
+ autoExpandParent: false
527
+ });
528
+ };
529
+
530
+ this.generateList = function (data, fid) {
531
+ var dataList = [];
532
+ if (!data || !data.length) {
533
+ return [];
534
+ }
535
+ for (var i = 0; i < data.length; i++) {
536
+ var key = data[i].KEY || data[i].key;
537
+ var title = data[i].TITLE || data[i].title;
538
+ dataList.push({ key: key, title: title, fid: fid });
539
+ if (data[i].children && data[i].children.length > 0) {
540
+ dataList = dataList.concat(_this3.generateList(data[i].children, key));
541
+ }
542
+ }
543
+ return dataList;
544
+ };
545
+
546
+ this.getMultiDataMap = function (data) {
547
+ var map = {};
548
+ if (!data || data.length <= 0) {
549
+ return {};
550
+ }
551
+ for (var i = 0; i < data.length; i++) {
552
+ var selectFlag = data[i].SELECT_FLAG || data[i].selectFlag || data[i].select_flag;
553
+ var mapKey = data[i].KEY || data[i].key;
554
+ if (selectFlag !== "0" && selectFlag !== 0) {
555
+ var value = _this3.copyMap(data[i]);
556
+ map[mapKey] = value;
557
+ } else if (data[i].children && data[i].children.length > 0) {
558
+ var childrenMap = _this3.getMultiDataMap(data[i].children);
559
+ for (var key in childrenMap) {
560
+ map[key] = childrenMap[key];
561
+ }
562
+ }
563
+ }
564
+ return map;
565
+ };
566
+
567
+ this.getSingerDataMap = function (data) {
568
+ var map = {};
569
+ if (!data || data.length <= 0) {
570
+ return {};
571
+ }
572
+ for (var i = 0; i < data.length; i++) {
573
+ var selectFlag = data[i].SELECT_FLAG || data[i].selectFlag || data[i].select_flag;
574
+ var mapKey = data[i].KEY || data[i].key;
575
+ if (selectFlag !== "0" && selectFlag !== 0) {
576
+ var value = _this3.copyMap(data[i]);
577
+ map[mapKey] = value;
578
+ }
579
+ if (data[i].children && data[i].children.length > 0) {
580
+ var childrenMap = _this3.getSingerDataMap(data[i].children);
581
+ for (var key in childrenMap) {
582
+ map[key] = childrenMap[key];
583
+ }
584
+ }
585
+ }
586
+ return map;
587
+ };
588
+
589
+ this.copyMap = function (map) {
590
+ var resultMap = {};
591
+ for (var key in map) {
592
+ if (key !== "children") {
593
+ resultMap[key] = map[key];
594
+ }
595
+ }
596
+ return resultMap;
597
+ };
598
+
599
+ this.onChange = function (e) {
600
+ var value = e.target.value;
601
+ if (_this3.state.dataList && _this3.state.dataList.length > MAXNUM) {
602
+ if (!value || value.trim()) return _this3.onSearch(value);
603
+ _this3.setState({ tempValue: value ? value.trim() : "" });
604
+ return;
605
+ }
606
+ _this3.onSearch(value);
607
+ };
608
+
609
+ this.onSearch = function (value) {
610
+ value = value ? value.trim() : "";
611
+ var expandedKeys = _this3.state.dataList.map(function (item) {
612
+ if (item.title.indexOf(value) > -1) {
613
+ return item.fid ? item.fid : null;
614
+ }
615
+ return null;
616
+ }).filter(function (item, i, self) {
617
+ return item && self.indexOf(item) === i;
618
+ });
619
+ if (!value || !expandedKeys) {
620
+ if (_this3.state.data && _this3.state.data.length > 0) {
621
+ var key = _this3.state.data[0].KEY || _this3.state.data[0].key;
622
+ expandedKeys = [key];
623
+ } else {
624
+ expandedKeys = [];
625
+ }
626
+ }
627
+ _this3.setState({
628
+ expandedKeys: expandedKeys,
629
+ searchValue: value,
630
+ autoExpandParent: true
631
+ });
632
+ };
633
+
634
+ this.modifyTextLength = function (str, len) {
635
+ if (str.length * 2 <= len || len === undefined) {
636
+ return str;
637
+ }
638
+ var strlen = 0;
639
+ var val = "";
640
+ for (var i = 0; i < str.length; i++) {
641
+ val = val + str.charAt(i);
642
+ if (str.charCodeAt(i) > 128) {
643
+ strlen = strlen + 2;
644
+ if (strlen >= len) {
645
+ return val.substring(0, val.length - 1) + "...";
646
+ }
647
+ } else {
648
+ strlen = strlen + 1;
649
+ if (strlen >= len) {
650
+ return val.substring(0, val.length - 2) + "...";
651
+ }
652
+ }
653
+ }
654
+ return val;
655
+ };
656
+
657
+ this.getTextLength = function (val) {
658
+ var width = parseInt(_this3.props.width, 10) - (_this3.props.checkable ? 55 : 35);
659
+ var count = width / 15;
660
+ count = count + 1 - val;
661
+ //如果需要显示图标,则能够显示的字减少一个
662
+ if (_this3.props.showIcon) {
663
+ count = count - 1;
664
+ }
665
+ return parseInt(count, 10) * 2;
666
+ };
667
+
668
+ this.onSelect = function (checkedKeys) {
669
+ var singerDataMap = _this3.state.singerDataMap;
670
+ var _props2 = _this3.props,
671
+ checkable = _props2.checkable,
672
+ onSelect = _props2.onSelect;
673
+
674
+ if (!checkable) {
675
+ var selectKeys = [];
676
+ var selectNodes = [];
677
+ var checkedKey = checkedKeys[0];
678
+ if (singerDataMap[checkedKey]) {
679
+ selectKeys.push(checkedKey);
680
+ selectNodes.push(singerDataMap[checkedKey]);
681
+ }
682
+ if (onSelect) onSelect(selectKeys, selectNodes);
683
+ }
684
+ _this3.setState({
685
+ selectedKeys: checkedKeys
686
+ });
687
+ };
688
+
689
+ this.onCheck = function (checkedKeys) {
690
+ _this3.setState({ checkedKeys: checkedKeys });
691
+ if (_this3.props.checkable === true) {
692
+ var selectKeys = [];
693
+ var selectNodes = [];
694
+ for (var seq in checkedKeys) {
695
+ var checkedKey = checkedKeys[seq];
696
+ if (_this3.state.multiDataMap[checkedKey]) {
697
+ selectKeys.push(checkedKey);
698
+ selectNodes.push(_this3.state.multiDataMap[checkedKey]);
699
+ }
700
+ }
701
+ if (_this3.props.onSelect) {
702
+ _this3.props.onSelect(selectKeys, selectNodes);
703
+ }
704
+ }
705
+ };
706
+
707
+ this.handleTreeIcon = function (props) {
708
+ var icon = props.dataRef.ICON || props.dataRef.icon;
709
+ if (Number(icon) === 1) {
710
+ return _react2.default.createElement("img", { alt: "", style: { marginBottom: "4px" }, src: _one2.default });
711
+ } else if (Number(icon) === 2) {
712
+ return _react2.default.createElement("img", { alt: "", style: { marginBottom: "4px" }, src: _two2.default });
713
+ }
714
+ return _react2.default.createElement("img", { alt: "", style: { marginBottom: "4px" }, src: _one2.default });
715
+ };
716
+
717
+ this.loop = function (data, level) {
718
+ return data.map(function (item) {
719
+ var searchValue = _this3.state.searchValue;
720
+
721
+ var bt = item.TITLE || item.title;
722
+ var val = _this3.modifyTextLength(bt, _this3.getTextLength(level));
723
+ var index = val.indexOf(searchValue);
724
+ var beforeStr = val.substr(0, index);
725
+ var afterStr = val.substr(index + searchValue.length);
726
+ var titleContent = _react2.default.createElement(
727
+ "div",
728
+ { style: { padding: "5px" } },
729
+ bt
730
+ );
731
+ var title = index > -1 ? _react2.default.createElement(
732
+ "span",
733
+ null,
734
+ beforeStr,
735
+ _react2.default.createElement(
736
+ "span",
737
+ { style: { color: "#f50" } },
738
+ searchValue
739
+ ),
740
+ afterStr
741
+ ) : _react2.default.createElement(
742
+ "span",
743
+ null,
744
+ val
745
+ );
746
+ if (val.indexOf("...") > -1) {
747
+ title = _react2.default.createElement(
748
+ _popover2.default,
749
+ { placement: "right", content: titleContent, trigger: "hover" },
750
+ title
751
+ );
752
+ }
753
+ var key = item.KEY || item.key;
754
+ if (item.CHILDREN || item.children) {
755
+ return _react2.default.createElement(
756
+ TreeNode,
757
+ {
758
+ key: key,
759
+ icon: _this3.handleTreeIcon,
760
+ title: title,
761
+ dataRef: item,
762
+ disabled: _this3.props.disabled
763
+ },
764
+ _this3.loop(item.CHILDREN || item.children, level + 1)
765
+ );
766
+ }
767
+ return _react2.default.createElement(TreeNode, {
768
+ key: key,
769
+ icon: _this3.handleTreeIcon,
770
+ title: title,
771
+ dataRef: item,
772
+ disabled: _this3.props.disabled
773
+ });
774
+ });
775
+ };
776
+
777
+ this.renderTreeNodes = function (data) {
778
+ return data.map(function (item) {
779
+ var title = item.TITLE || item.title;
780
+ var key = item.KEY || item.key;
781
+ if (item.children) {
782
+ return _react2.default.createElement(
783
+ TreeNode,
784
+ { title: title, key: key, dataRef: item },
785
+ _this3.renderTreeNodes(item.children)
786
+ );
787
+ }
788
+ return _react2.default.createElement(TreeNode, { dataRef: item });
789
+ });
790
+ };
791
+
792
+ this.setCheckedKeys = function (checkedKeys) {
793
+ _this3.setState({
794
+ checkedKeys: checkedKeys
795
+ });
796
+ };
797
+
798
+ this.setSelectedKeys = function (selectedKeys) {
799
+ _this3.setState({
800
+ selectedKeys: selectedKeys
801
+ });
802
+ };
803
+
804
+ this.onRightClick = function (e) {
805
+ //先过滤没有权限的菜单
806
+ var rightMenuList = _this3.props.buttons;
807
+ if (rightMenuList && rightMenuList.length > 0) {
808
+ var newMenuList = [];
809
+ rightMenuList.map(function (item, index) {
810
+ //是否满足显示这个按钮的要求
811
+ if (item.isShow === undefined || item.isShow(e.node.props.dataRef, e.node.props.eventKey, e)) {
812
+ //是否满足权限的要求
813
+ if (item.auth === undefined || (0, _hasAuth3.default)(item.auth)) {
814
+ newMenuList.push(item);
815
+ }
816
+ }
817
+ return item;
818
+ });
819
+ if (newMenuList.length > 0) {
820
+ _this3.renderRightMenu(e, newMenuList);
821
+ }
822
+ } else {
823
+ return false;
824
+ }
825
+ };
826
+
827
+ this.isExistsAddBtn = function () {
828
+ //TODO:测试:先不要权限控制
829
+ // return this.props.addBtn && (!this.props.addBtnAuth || hasAuth(this.props.addBtnAuth));
830
+ return Boolean(_this3.props.addBtn);
831
+ };
832
+
833
+ this.handleAdd = function () {
834
+ var addBtn = _this3.props.addBtn;
835
+
836
+ if (addBtn) return addBtn();
837
+ };
838
+ };
839
+
840
+ exports.default = KyTree;
package/lib/index.js CHANGED
@@ -229,6 +229,15 @@ Object.defineProperty(exports, 'HqLsrySelector', {
229
229
  }
230
230
  });
231
231
 
232
+ var _KyTree = require('./components/KyTree');
233
+
234
+ Object.defineProperty(exports, 'KyTree', {
235
+ enumerable: true,
236
+ get: function get() {
237
+ return _interopRequireDefault(_KyTree).default;
238
+ }
239
+ });
240
+
232
241
  var _getSize = require('./utils/getSize.js');
233
242
 
234
243
  Object.defineProperty(exports, 'getSize', {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dlt-for-react",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "dlt for react",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {