@bchr/bchr-front-lib 0.3.113 → 0.3.117

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.
@@ -0,0 +1,602 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _treeview = _interopRequireDefault(require("@progress/kendo-treeview-react-wrapper/dist/npm/treeview"));
11
+
12
+ var _antd = require("antd");
13
+
14
+ var _kendoReactGrid = require("@progress/kendo-react-grid");
15
+
16
+ var _bchrFrontLib = require("@bchr/bchr-front-lib");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
+
20
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
21
+
22
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
+
24
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
25
+
26
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
27
+
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
29
+
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
+
32
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
33
+
34
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
35
+
36
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
37
+
38
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
39
+
40
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
41
+
42
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
43
+
44
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
45
+
46
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
47
+
48
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
49
+
50
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
51
+
52
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
53
+
54
+ var Search = _antd.Input.Search;
55
+
56
+ var LeftOrgTreeRightPersonGridForSelectPsnModal = /*#__PURE__*/function (_React$Component) {
57
+ _inherits(LeftOrgTreeRightPersonGridForSelectPsnModal, _React$Component);
58
+
59
+ var _super = _createSuper(LeftOrgTreeRightPersonGridForSelectPsnModal);
60
+
61
+ function LeftOrgTreeRightPersonGridForSelectPsnModal(_props) {
62
+ var _this2;
63
+
64
+ _classCallCheck(this, LeftOrgTreeRightPersonGridForSelectPsnModal);
65
+
66
+ _this2 = _super.call(this, _props);
67
+
68
+ _defineProperty(_assertThisInitialized(_this2), "buildQueryOrgTreeNodeURL", function (e) {
69
+ var parent_org_node_pk = 0;
70
+
71
+ if (_this2.orgTreeRef.current && _this2.orgTreeRef.current.widgetInstance) {
72
+ parent_org_node_pk = e.pk;
73
+ }
74
+
75
+ return _this2.http().getRequestPath("queryOrgDataByCurrentUserAuthOfLazyLoad?&parent_org_pk=".concat(parent_org_node_pk, "&org_expanded_level=").concat(_this2.props.org_expanded_level, "&is_implicit_auth=").concat(_this2.props.is_implicit_auth));
76
+ });
77
+
78
+ _defineProperty(_assertThisInitialized(_this2), "treeNodeTemplate", function (props) {
79
+ if (props.item.org_type == 1) {
80
+ return "<div class=\"tree-node-box\" key={props.item.pk}>\n <span class=\"iconfont icon-bchr-corporate-repor\"></span><span>".concat(props.item.name, "</span>\n </div>");
81
+ } else if (props.item.org_type == 2) {
82
+ return "<div class=\"tree-node-box\" key={props.item.pk}>\n <span class=\"iconfont icon-bchr-virtual-dept\"></span><span>".concat(props.item.name, "</span>\n </div>");
83
+ } else if (props.item.org_type == 3) {
84
+ return "<div class=\"tree-node-box\" key={props.item.pk}>\n <span class=\"iconfont icon-bchr-post-manage\"></span><span>".concat(props.item.name, "</span>\n </div>");
85
+ } else {
86
+ return "<div class=\"tree-node-box\" key={props.item.pk}>\n <span class=\"iconfont icon-bchr-person1\"></span><span>".concat(props.item.name, "</span>\n </div>");
87
+ }
88
+ });
89
+
90
+ _defineProperty(_assertThisInitialized(_this2), "onPersonSearch", function (e) {
91
+ var that = _assertThisInitialized(_this2);
92
+
93
+ Promise.all([function () {
94
+ var currentState = that.state;
95
+ var personNameKeyWords = currentState.personNameKeyWords;
96
+
97
+ if (!e && e.trim() == personNameKeyWords) {
98
+ return;
99
+ }
100
+
101
+ that.setState(_objectSpread(_objectSpread({}, currentState), {}, {
102
+ personNameKeyWords: e ? e.trim() : null
103
+ }));
104
+ }()]).then(_this2.queryPsnList);
105
+ });
106
+
107
+ _defineProperty(_assertThisInitialized(_this2), "onSelect", function (event) {
108
+ var that = _assertThisInitialized(_this2);
109
+
110
+ if (!event) {
111
+ return;
112
+ }
113
+
114
+ Promise.all([function () {
115
+ var selectedOrgNode;
116
+
117
+ if (event.node) {
118
+ selectedOrgNode = that.orgTreeRef.current.widgetInstance.dataItem(event.node);
119
+ } else {
120
+ selectedOrgNode = event;
121
+ }
122
+
123
+ var currentState = that.state;
124
+ var gridOperator = {
125
+ skip: 0,
126
+ take: currentState.gridOperator.take
127
+ };
128
+ that.setState(_objectSpread(_objectSpread({}, currentState), {}, {
129
+ selectedOrg: selectedOrgNode,
130
+ gridOperator: gridOperator,
131
+ selectedPsnList: [],
132
+ isAllPsnSelected: false
133
+ }));
134
+ }()]).then(_this2.queryPsnList);
135
+ });
136
+
137
+ _defineProperty(_assertThisInitialized(_this2), "onGridHeaderSelectionChange", function () {
138
+ var currentState = _this2.state;
139
+ var pagerData = currentState.pagerData;
140
+ var isAllPsnSelected = !currentState.isAllPsnSelected;
141
+
142
+ if (pagerData.data && pagerData.data.length > 0) {
143
+ pagerData.data.forEach(function (dataItem) {
144
+ dataItem.selected = isAllPsnSelected;
145
+ });
146
+ }
147
+
148
+ _this2.setState(_objectSpread(_objectSpread({}, currentState), {}, {
149
+ pagerData: pagerData,
150
+ isAllPsnSelected: isAllPsnSelected,
151
+ selectedPsnList: []
152
+ }));
153
+ });
154
+
155
+ _defineProperty(_assertThisInitialized(_this2), "onGridRowSelectionChange", function (e) {
156
+ var selectedRowData = e.dataItem;
157
+ selectedRowData.selected = !selectedRowData.selected;
158
+ var currentState = _this2.state;
159
+ var selectedPsnList = [];
160
+ var psnList = currentState.pagerData.data;
161
+ var isAllPsnSelected = true;
162
+
163
+ if (psnList && psnList.length > 0) {
164
+ psnList.forEach(function (dataItem) {
165
+ if (dataItem.selected) {
166
+ selectedPsnList.push(dataItem);
167
+ }
168
+ });
169
+ }
170
+
171
+ if (selectedPsnList.length != currentState.pagerData.total) {
172
+ isAllPsnSelected = false;
173
+ }
174
+
175
+ _this2.setState(_objectSpread(_objectSpread({}, currentState), {}, {
176
+ selectedPsnList: selectedPsnList,
177
+ isAllPsnSelected: isAllPsnSelected
178
+ }));
179
+ });
180
+
181
+ _defineProperty(_assertThisInitialized(_this2), "selectPsnRadiosChange", function (e) {
182
+ var currentState = _this2.state;
183
+ var selectedPsnList = [];
184
+ var psnList = currentState.pagerData.data;
185
+
186
+ if (psnList && psnList.length > 0) {
187
+ psnList.forEach(function (dataItem) {
188
+ if (dataItem.pk == e.dataItem.pk) {
189
+ dataItem['selected'] = true;
190
+ selectedPsnList.push(dataItem);
191
+ } else {
192
+ dataItem['selected'] = false;
193
+ }
194
+ });
195
+
196
+ _this2.setState(_objectSpread(_objectSpread({}, currentState), {}, {
197
+ selectedPsnList: selectedPsnList
198
+ }));
199
+ }
200
+ });
201
+
202
+ _this2.orgTreeRef = /*#__PURE__*/_react["default"].createRef();
203
+
204
+ var _this = _assertThisInitialized(_this2);
205
+
206
+ _this2.state = {
207
+ selectedOrg: null,
208
+ gridOperator: {
209
+ skip: 0,
210
+ take: 20
211
+ },
212
+ pagerData: {
213
+ data: [],
214
+ total: 0
215
+ },
216
+ personNameKeyWords: null,
217
+ isAllPsnSelected: false,
218
+ selectedPsnList: [],
219
+ isInitSelectedRootOrg: false
220
+ };
221
+ _this2.dataSource = {
222
+ transport: {
223
+ read: {
224
+ url: _this2.buildQueryOrgTreeNodeURL,
225
+ dataType: "json",
226
+ Type: "POST"
227
+ }
228
+ },
229
+ schema: {
230
+ model: {
231
+ id: "pk",
232
+ hasChildren: "b_has_child"
233
+ }
234
+ },
235
+ requestEnd: function requestEnd(e) {
236
+ var currentState = _this.state;
237
+
238
+ if (currentState.isInitSelectedRootOrg) {
239
+ return;
240
+ }
241
+
242
+ if (!e.response || e.response.length == 0) {
243
+ return;
244
+ }
245
+
246
+ if (_this.props.isDefaultSelectedFirstOrg) {
247
+ var expand_pk_path = e.response[0].pk_path.split("/");
248
+ expand_pk_path = expand_pk_path.slice(1, expand_pk_path.length - 1);
249
+ expand_pk_path.unshift(0);
250
+ var last_node_pk = expand_pk_path[expand_pk_path.length - 1];
251
+ var treeView = _this.orgTreeRef.current.widgetInstance;
252
+ treeView.expandPath(expand_pk_path, function () {
253
+ var nodeDataItem = treeView.dataSource.get(last_node_pk);
254
+
255
+ if (nodeDataItem && nodeDataItem.uid) {
256
+ var treeNodeEle = treeView.findByUid(nodeDataItem.uid);
257
+
258
+ if (treeNodeEle && treeNodeEle.length > 0) {
259
+ treeView.element.find(".searched").removeClass("searched");
260
+ treeNodeEle.find(".k-in:first").addClass("searched");
261
+ }
262
+
263
+ _this.scrollTreeView(treeView, nodeDataItem);
264
+
265
+ treeView.select(treeNodeEle);
266
+
267
+ _this.onSelect(nodeDataItem);
268
+ }
269
+ });
270
+ }
271
+
272
+ _this.setState(_objectSpread(_objectSpread({}, currentState), {}, {
273
+ isInitSelectedRootOrg: true
274
+ }));
275
+ }
276
+ };
277
+ _this2.queryPsnList = _this2.queryPsnList.bind(_assertThisInitialized(_this2));
278
+ _this2.onOk = _this2.onOk.bind(_assertThisInitialized(_this2));
279
+ return _this2;
280
+ }
281
+
282
+ _createClass(LeftOrgTreeRightPersonGridForSelectPsnModal, [{
283
+ key: "componentDidMount",
284
+ value: function componentDidMount() {}
285
+ }, {
286
+ key: "getFunctionLetBasePath",
287
+ value: function getFunctionLetBasePath() {
288
+ if (!this.props.functionLetBasePath) {
289
+ throw new Error("请为组件注入属性【functionLetBasePath】");
290
+ }
291
+
292
+ return this.props.functionLetBasePath;
293
+ }
294
+ }, {
295
+ key: "scrollTreeView",
296
+ value: function scrollTreeView(treeView, nodeDataItem) {
297
+ var treeNodeEle = treeView.findByUid(nodeDataItem.uid);
298
+ var treeViewHeight = treeView.element.parent().height();
299
+ var treeViewTop = treeView.element.offset().top;
300
+ var treeNodeTop = treeNodeEle.offset().top;
301
+ var scrollTop = treeView.element.parent().scrollTop();
302
+ scrollTop = treeNodeTop - treeViewTop - treeViewHeight / 2;
303
+ treeView.element.parent().scrollTop(scrollTop);
304
+ }
305
+ /**
306
+ * Lazy Loading URL
307
+ * @param e
308
+ * @returns {*}
309
+ */
310
+
311
+ }, {
312
+ key: "http",
313
+ value: function http() {
314
+ return new _bchrFrontLib.HttpService(this.props.appConfig.back_service_rpc_prefix + this.getFunctionLetBasePath(), this.props.appConfig);
315
+ }
316
+ /**
317
+ * 组织 Node Render
318
+ * @param props
319
+ * @returns {string}
320
+ */
321
+
322
+ }, {
323
+ key: "queryPsnList",
324
+
325
+ /**
326
+ * 查询人员数据
327
+ * @returns {Promise<void>}
328
+ */
329
+ value: function () {
330
+ var _queryPsnList = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
331
+ var that, currentState, selectedOrg, personNameKeyWords, gridOperator, isAllPsnSelected, selectedPsnList, newPagerData, queryOrgPkParems, queryPsnParams, i, selectedPsnItem, j, dataItem;
332
+ return regeneratorRuntime.wrap(function _callee$(_context) {
333
+ while (1) {
334
+ switch (_context.prev = _context.next) {
335
+ case 0:
336
+ _context.prev = 0;
337
+ that = this;
338
+ currentState = that.state;
339
+ selectedOrg = currentState.selectedOrg;
340
+ personNameKeyWords = currentState.personNameKeyWords;
341
+ gridOperator = currentState.gridOperator;
342
+ isAllPsnSelected = currentState.isAllPsnSelected;
343
+ selectedPsnList = currentState.selectedPsnList;
344
+ newPagerData = {
345
+ data: [],
346
+ total: 0
347
+ };
348
+
349
+ if (!(selectedOrg && selectedOrg.pk)) {
350
+ _context.next = 15;
351
+ break;
352
+ }
353
+
354
+ queryOrgPkParems = {
355
+ parent_org_pk: selectedOrg.pk,
356
+ is_implicit_auth: that.props.is_implicit_auth
357
+ };
358
+ queryPsnParams = {
359
+ parent_org_pk: selectedOrg.pk,
360
+ is_implicit_auth: that.props.is_implicit_auth,
361
+ person_name_key_words: personNameKeyWords,
362
+ page_index: gridOperator.skip / gridOperator.take + 1,
363
+ page_size: gridOperator.take
364
+ };
365
+ _context.next = 14;
366
+ return that.http().post("queryPersonListByOrgPksAndPersonName", queryPsnParams);
367
+
368
+ case 14:
369
+ newPagerData = _context.sent;
370
+
371
+ case 15:
372
+ if (newPagerData && newPagerData.data && newPagerData.data.length > 0) {
373
+ if (isAllPsnSelected) {
374
+ newPagerData.data.forEach(function (dataItem) {
375
+ dataItem.selected = isAllPsnSelected;
376
+ });
377
+ } else {
378
+ if (selectedPsnList && selectedPsnList.length > 0) {
379
+ for (i in selectedPsnList) {
380
+ selectedPsnItem = selectedPsnList[i];
381
+
382
+ for (j in newPagerData.data) {
383
+ dataItem = newPagerData.data[j];
384
+
385
+ if (dataItem.pk == selectedPsnItem.pk) {
386
+ dataItem.selected = true;
387
+ }
388
+ }
389
+ }
390
+ }
391
+ }
392
+ }
393
+
394
+ this.setState(_objectSpread(_objectSpread({}, currentState), {}, {
395
+ pagerData: _objectSpread({}, newPagerData)
396
+ }));
397
+ _context.next = 22;
398
+ break;
399
+
400
+ case 19:
401
+ _context.prev = 19;
402
+ _context.t0 = _context["catch"](0);
403
+ this.dealAjaxException(_context.t0);
404
+
405
+ case 22:
406
+ case "end":
407
+ return _context.stop();
408
+ }
409
+ }
410
+ }, _callee, this, [[0, 19]]);
411
+ }));
412
+
413
+ function queryPsnList() {
414
+ return _queryPsnList.apply(this, arguments);
415
+ }
416
+
417
+ return queryPsnList;
418
+ }()
419
+ /**
420
+ * 页码&页大小发生变化
421
+ * @param e
422
+ */
423
+
424
+ }, {
425
+ key: "onDataStateChange",
426
+ value: function onDataStateChange(e) {
427
+ var that = this;
428
+ Promise.all([function () {
429
+ var currentState = that.state;
430
+ that.setState(_objectSpread(_objectSpread({}, currentState), {}, {
431
+ gridOperator: {
432
+ skip: e.data.skip,
433
+ take: e.data.take
434
+ }
435
+ }));
436
+ }()]).then(this.queryPsnList);
437
+ }
438
+ /**
439
+ * Header Select
440
+ */
441
+
442
+ }, {
443
+ key: "onOk",
444
+ value: function onOk() {
445
+ var selectedPsnList = this.state.selectedPsnList;
446
+
447
+ if (!selectedPsnList || selectedPsnList.length == 0) {
448
+ _bchrFrontLib.SmartMessage.info("请选择人员");
449
+
450
+ return;
451
+ } else {
452
+ this.props.onOk(selectedPsnList);
453
+ }
454
+ }
455
+ }, {
456
+ key: "render",
457
+ value: function render() {
458
+ var _this3 = this,
459
+ _React$createElement;
460
+
461
+ var treeViewMessages = {
462
+ retry: "重新加载",
463
+ requestFailed: "加载失败.",
464
+ loading: "正在加载中..."
465
+ };
466
+ return /*#__PURE__*/_react["default"].createElement(_bchrFrontLib.SModal, {
467
+ className: "left-org-tree-right-person-grid-modal ".concat(this.props.className ? this.props.className : ''),
468
+ title: "\u4EBA\u5458\u53C2\u7167",
469
+ visible: true,
470
+ centered: true,
471
+ width: '1000px',
472
+ onCancel: this.props.onCancel,
473
+ onOk: this.onOk
474
+ }, /*#__PURE__*/_react["default"].createElement(Search, {
475
+ className: "person-search-box",
476
+ placeholder: "\u4EBA\u5458\u641C\u7D22",
477
+ onSearch: this.onPersonSearch
478
+ }), /*#__PURE__*/_react["default"].createElement("div", {
479
+ className: "left-org-tree-right-person-grid-container"
480
+ }, /*#__PURE__*/_react["default"].createElement("div", {
481
+ className: "left-org-tree-box"
482
+ }, /*#__PURE__*/_react["default"].createElement(_treeview["default"], {
483
+ dataSource: this.dataSource,
484
+ messages: treeViewMessages,
485
+ expandIcons: false,
486
+ dataTextField: "name",
487
+ template: this.treeNodeTemplate,
488
+ ref: this.orgTreeRef,
489
+ select: this.onSelect
490
+ })), /*#__PURE__*/_react["default"].createElement("div", {
491
+ className: "right-psn-grid-box"
492
+ }, /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.Grid, _extends({
493
+ data: this.state.pagerData.data,
494
+ total: this.state.pagerData.total
495
+ }, this.state.gridOperator, {
496
+ pageable: {
497
+ pageSizes: [20, 50, 100, 200],
498
+ type: 'numeric'
499
+ },
500
+ pageSize: 20,
501
+ sortable: true,
502
+ resizable: true,
503
+ selectedField: "selected",
504
+ onDataStateChange: this.onDataStateChange.bind(this),
505
+ onSelectionChange: this.onGridRowSelectionChange,
506
+ onHeaderSelectionChange: this.onGridHeaderSelectionChange
507
+ }), this.props.selectType && this.props.selectType === 'single' ? /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
508
+ locked: true,
509
+ field: "selected",
510
+ title: "\u9009\u62E9",
511
+ width: "55px",
512
+ className: "text-center",
513
+ sortable: false,
514
+ headerCell: function headerCell(props) {
515
+ return /*#__PURE__*/_react["default"].createElement("span", null, "\u9009\u62E9");
516
+ },
517
+ cell: function cell(props) {
518
+ return /*#__PURE__*/_react["default"].createElement("td", {
519
+ className: "text-center locked_column k-grid-content-sticky",
520
+ style: {
521
+ left: "0px",
522
+ right: "0px"
523
+ }
524
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Radio, {
525
+ name: "selectDef",
526
+ defaultChecked: props.dataItem.selected,
527
+ className: "grid-radio",
528
+ key: props.dataIndex,
529
+ onChange: _this3.selectPsnRadiosChange.bind(_this3, props)
530
+ }));
531
+ }
532
+ }) : /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
533
+ locked: true,
534
+ field: "selected",
535
+ title: "\u9009\u62E9",
536
+ width: "50px",
537
+ className: "text-center locked",
538
+ headerClassName: "text-center",
539
+ sortable: false,
540
+ headerCell: function headerCell(props) {
541
+ return /*#__PURE__*/_react["default"].createElement(_antd.Checkbox, {
542
+ checked: _this3.state.isAllPsnSelected,
543
+ onChange: _this3.onGridHeaderSelectionChange
544
+ });
545
+ },
546
+ cell: function cell(props) {
547
+ return /*#__PURE__*/_react["default"].createElement("td", {
548
+ className: "text-center locked_column k-grid-content-sticky",
549
+ style: {
550
+ left: "0px",
551
+ right: "0px"
552
+ }
553
+ }, /*#__PURE__*/_react["default"].createElement(_antd.Checkbox, {
554
+ checked: props.dataItem.selected,
555
+ onChange: _this3.onGridRowSelectionChange.bind(_this3, props)
556
+ }));
557
+ }
558
+ }), /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, (_React$createElement = {
559
+ field: "sequence_number",
560
+ title: "\u5E8F\u53F7",
561
+ width: "50px",
562
+ className: "text-center",
563
+ headerClassName: "text-center"
564
+ }, _defineProperty(_React$createElement, "width", "55px"), _defineProperty(_React$createElement, "sortable", false), _defineProperty(_React$createElement, "cell", _bchrFrontLib.GridRowSequenceNumberCell), _React$createElement)), /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
565
+ field: "name",
566
+ title: "\u59D3\u540D",
567
+ className: "text-center",
568
+ headerClassName: "text-center",
569
+ width: "120px"
570
+ }), /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
571
+ field: "code",
572
+ title: "\u4EBA\u5458\u7F16\u7801",
573
+ className: "text-center",
574
+ headerClassName: "text-center",
575
+ width: "120px"
576
+ }), /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
577
+ field: "corp_ext_name",
578
+ title: "\u5355\u4F4D\u540D\u79F0",
579
+ className: "text-center",
580
+ headerClassName: "text-center",
581
+ width: "180px"
582
+ }), /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
583
+ field: "dept_ext_name",
584
+ title: "\u90E8\u95E8\u540D\u79F0",
585
+ className: "text-center",
586
+ headerClassName: "text-center",
587
+ width: "180px"
588
+ }), /*#__PURE__*/_react["default"].createElement(_kendoReactGrid.GridColumn, {
589
+ field: "post_ext_name",
590
+ title: "\u5C97\u4F4D\u540D\u79F0",
591
+ className: "text-center",
592
+ headerClassName: "text-center",
593
+ width: "180px"
594
+ })))));
595
+ }
596
+ }]);
597
+
598
+ return LeftOrgTreeRightPersonGridForSelectPsnModal;
599
+ }(_react["default"].Component);
600
+
601
+ var _default = LeftOrgTreeRightPersonGridForSelectPsnModal;
602
+ exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bchr/bchr-front-lib",
3
- "version": "0.3.113",
3
+ "version": "0.3.117",
4
4
  "description": "bchr front lib",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -0,0 +1,487 @@
1
+ import React from "react";
2
+ import TreeView from "@progress/kendo-treeview-react-wrapper/dist/npm/treeview";
3
+ import {Checkbox, Input, Radio} from "antd";
4
+ import {Grid, GridColumn} from "@progress/kendo-react-grid";
5
+ import {GridRowSequenceNumberCell, SmartMessage, HttpService, SModal} from "@bchr/bchr-front-lib";
6
+
7
+
8
+
9
+ const Search = Input.Search;
10
+
11
+ class LeftOrgTreeRightPersonGridForSelectPsnModal extends React.Component {
12
+ constructor(props) {
13
+ super(props);
14
+
15
+ this.orgTreeRef = React.createRef();
16
+ const _this = this;
17
+
18
+ this.state = {
19
+ selectedOrg: null,
20
+ gridOperator: {
21
+ skip: 0,
22
+ take: 20,
23
+ },
24
+ pagerData: {
25
+ data: [],
26
+ total: 0
27
+ },
28
+ personNameKeyWords: null,
29
+ isAllPsnSelected: false,
30
+ selectedPsnList: [],
31
+ isInitSelectedRootOrg: false,
32
+ }
33
+
34
+ this.dataSource = {
35
+ transport: {
36
+ read: {
37
+ url: this.buildQueryOrgTreeNodeURL,
38
+ dataType: "json",
39
+ Type: "POST"
40
+ }
41
+ },
42
+ schema: {
43
+ model: {
44
+ id: "pk",
45
+ hasChildren: "b_has_child"
46
+ }
47
+ },
48
+ requestEnd: function (e) {
49
+ let currentState = _this.state;
50
+
51
+ if (currentState.isInitSelectedRootOrg) {
52
+ return;
53
+ }
54
+
55
+ if (!e.response || e.response.length == 0) {
56
+ return;
57
+ }
58
+
59
+ if (_this.props.isDefaultSelectedFirstOrg) {
60
+ let expand_pk_path = e.response[0].pk_path.split("/");
61
+ expand_pk_path = expand_pk_path.slice(1, expand_pk_path.length - 1);
62
+
63
+ expand_pk_path.unshift(0);
64
+
65
+ let last_node_pk = expand_pk_path[expand_pk_path.length - 1];
66
+
67
+ const treeView = _this.orgTreeRef.current.widgetInstance;
68
+
69
+ treeView.expandPath(expand_pk_path, function () {
70
+ let nodeDataItem = treeView.dataSource.get(last_node_pk);
71
+
72
+ if (nodeDataItem && nodeDataItem.uid) {
73
+
74
+ let treeNodeEle = treeView.findByUid(nodeDataItem.uid);
75
+
76
+ if (treeNodeEle && treeNodeEle.length > 0) {
77
+ treeView.element.find(".searched").removeClass("searched");
78
+ treeNodeEle.find(".k-in:first").addClass("searched");
79
+ }
80
+
81
+ _this.scrollTreeView(treeView, nodeDataItem);
82
+
83
+ treeView.select(treeNodeEle);
84
+
85
+ _this.onSelect(nodeDataItem);
86
+ }
87
+
88
+ });
89
+ }
90
+
91
+ _this.setState({
92
+ ...currentState,
93
+ isInitSelectedRootOrg:true
94
+ })
95
+ }
96
+ };
97
+
98
+ this.queryPsnList = this.queryPsnList.bind(this);
99
+ this.onOk = this.onOk.bind(this);
100
+ }
101
+
102
+ componentDidMount() {
103
+ }
104
+
105
+ getFunctionLetBasePath() {
106
+ if (!this.props.functionLetBasePath) {
107
+ throw new Error("请为组件注入属性【functionLetBasePath】");
108
+ }
109
+
110
+ return this.props.functionLetBasePath;
111
+ }
112
+
113
+ scrollTreeView (treeView, nodeDataItem) {
114
+ let treeNodeEle = treeView.findByUid(nodeDataItem.uid);
115
+ let treeViewHeight = treeView.element.parent().height();
116
+ let treeViewTop = treeView.element.offset().top;
117
+ let treeNodeTop = treeNodeEle.offset().top;
118
+ let scrollTop = treeView.element.parent().scrollTop();
119
+
120
+ scrollTop = treeNodeTop - treeViewTop - (treeViewHeight / 2);
121
+ treeView.element.parent().scrollTop(scrollTop);
122
+ }
123
+
124
+ /**
125
+ * Lazy Loading URL
126
+ * @param e
127
+ * @returns {*}
128
+ */
129
+ buildQueryOrgTreeNodeURL = (e) => {
130
+ let parent_org_node_pk = 0;
131
+
132
+ if (this.orgTreeRef.current && this.orgTreeRef.current.widgetInstance) {
133
+ parent_org_node_pk = e.pk;
134
+ }
135
+
136
+ return this.http().getRequestPath(`queryOrgDataByCurrentUserAuthOfLazyLoad?&parent_org_pk=${parent_org_node_pk}&org_expanded_level=${this.props.org_expanded_level}&is_implicit_auth=${this.props.is_implicit_auth}`);
137
+ }
138
+
139
+ http() {
140
+ return new HttpService(this.props.appConfig.back_service_rpc_prefix + this.getFunctionLetBasePath(), this.props.appConfig);
141
+ }
142
+
143
+ /**
144
+ * 组织 Node Render
145
+ * @param props
146
+ * @returns {string}
147
+ */
148
+ treeNodeTemplate = props => {
149
+ if (props.item.org_type == 1) {
150
+ return `<div class="tree-node-box" key={props.item.pk}>
151
+ <span class="iconfont icon-bchr-corporate-repor"></span><span>${props.item.name}</span>
152
+ </div>`
153
+ } else if (props.item.org_type == 2) {
154
+ return `<div class="tree-node-box" key={props.item.pk}>
155
+ <span class="iconfont icon-bchr-virtual-dept"></span><span>${props.item.name}</span>
156
+ </div>`
157
+ } else if (props.item.org_type == 3) {
158
+ return `<div class="tree-node-box" key={props.item.pk}>
159
+ <span class="iconfont icon-bchr-post-manage"></span><span>${props.item.name}</span>
160
+ </div>`
161
+ } else {
162
+ return `<div class="tree-node-box" key={props.item.pk}>
163
+ <span class="iconfont icon-bchr-person1"></span><span>${props.item.name}</span>
164
+ </div>`
165
+ }
166
+ }
167
+
168
+ /**
169
+ * 人员搜索
170
+ */
171
+ onPersonSearch = (e) => {
172
+ let that = this;
173
+
174
+ Promise.all([
175
+ (function() {
176
+ let currentState = that.state;
177
+ let personNameKeyWords = currentState.personNameKeyWords;
178
+
179
+ if (!e && e.trim() == personNameKeyWords) {
180
+ return;
181
+ }
182
+
183
+ that.setState({
184
+ ...currentState,
185
+ personNameKeyWords: e? e.trim() : null
186
+ })
187
+ })()
188
+ ]).then(this.queryPsnList)
189
+ }
190
+
191
+ /**
192
+ * 选择组织 Node
193
+ * @param event
194
+ */
195
+ onSelect = (event) => {
196
+ let that = this;
197
+
198
+ if (!event) {
199
+ return;
200
+ }
201
+
202
+ Promise.all([
203
+ (function() {
204
+ let selectedOrgNode;
205
+
206
+ if (event.node) {
207
+ selectedOrgNode = that.orgTreeRef.current.widgetInstance.dataItem(event.node);
208
+ } else {
209
+ selectedOrgNode = event;
210
+ }
211
+
212
+ let currentState = that.state;
213
+
214
+ let gridOperator = {skip: 0, take: currentState.gridOperator.take};
215
+
216
+ that.setState({
217
+ ...currentState,
218
+ selectedOrg: selectedOrgNode,
219
+ gridOperator,
220
+ selectedPsnList: [],
221
+ isAllPsnSelected: false
222
+ })
223
+ })()
224
+ ]).then(this.queryPsnList)
225
+ }
226
+
227
+ /**
228
+ * 查询人员数据
229
+ * @returns {Promise<void>}
230
+ */
231
+ async queryPsnList() {
232
+ try {
233
+ let that = this;
234
+ let currentState = that.state;
235
+ let selectedOrg = currentState.selectedOrg;
236
+ let personNameKeyWords = currentState.personNameKeyWords;
237
+ let gridOperator = currentState.gridOperator;
238
+ let isAllPsnSelected = currentState.isAllPsnSelected;
239
+ let selectedPsnList = currentState.selectedPsnList;
240
+
241
+ let newPagerData = {data: [], total: 0};
242
+
243
+ if (selectedOrg && selectedOrg.pk) {
244
+ let queryOrgPkParems = {
245
+ parent_org_pk: selectedOrg.pk,
246
+ is_implicit_auth: that.props.is_implicit_auth
247
+ };
248
+
249
+ let queryPsnParams = {
250
+ parent_org_pk: selectedOrg.pk,
251
+ is_implicit_auth: that.props.is_implicit_auth,
252
+ person_name_key_words: personNameKeyWords,
253
+ page_index: gridOperator.skip/gridOperator.take + 1,
254
+ page_size: gridOperator.take
255
+ }
256
+
257
+ newPagerData = await that.http().post("queryPersonListByOrgPksAndPersonName", queryPsnParams)
258
+ }
259
+
260
+ if (newPagerData && newPagerData.data && newPagerData.data.length > 0) {
261
+ if (isAllPsnSelected) {
262
+ newPagerData.data.forEach(dataItem => {
263
+ dataItem.selected = isAllPsnSelected;
264
+ })
265
+ } else {
266
+ if (selectedPsnList && selectedPsnList.length > 0) {
267
+ for (let i in selectedPsnList) {
268
+ let selectedPsnItem = selectedPsnList[i];
269
+
270
+ for (let j in newPagerData.data) {
271
+ let dataItem = newPagerData.data[j];
272
+
273
+ if (dataItem.pk == selectedPsnItem.pk) {
274
+ dataItem.selected = true;
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+
282
+ this.setState({
283
+ ...currentState,
284
+ pagerData: {...newPagerData}
285
+ })
286
+ } catch (e) {
287
+ this.dealAjaxException(e)
288
+ }
289
+ }
290
+
291
+ /**
292
+ * 页码&页大小发生变化
293
+ * @param e
294
+ */
295
+ onDataStateChange(e) {
296
+ let that = this;
297
+
298
+ Promise.all([
299
+ (function() {
300
+ let currentState = that.state;
301
+
302
+ that.setState({
303
+ ...currentState,
304
+ gridOperator: {skip: e.data.skip, take: e.data.take}
305
+ })
306
+ })()
307
+ ]).then(this.queryPsnList)
308
+ }
309
+
310
+ /**
311
+ * Header Select
312
+ */
313
+ onGridHeaderSelectionChange = () => {
314
+ let currentState = this.state;
315
+ let pagerData = currentState.pagerData;
316
+ let isAllPsnSelected = !currentState.isAllPsnSelected;
317
+
318
+ if (pagerData.data && pagerData.data.length > 0) {
319
+ pagerData.data.forEach(dataItem => {
320
+ dataItem.selected = isAllPsnSelected;
321
+ })
322
+ }
323
+
324
+ this.setState({
325
+ ...currentState,
326
+ pagerData,
327
+ isAllPsnSelected,
328
+ selectedPsnList: []
329
+ })
330
+ }
331
+
332
+ /**
333
+ * Row Select
334
+ */
335
+ onGridRowSelectionChange = (e) => {
336
+ let selectedRowData = e.dataItem;
337
+
338
+ selectedRowData.selected = !selectedRowData.selected;
339
+
340
+ let currentState = this.state;
341
+ let selectedPsnList = [];
342
+ let psnList = currentState.pagerData.data;
343
+ let isAllPsnSelected = true;
344
+
345
+ if (psnList && psnList.length > 0) {
346
+ psnList.forEach(dataItem => {
347
+ if (dataItem.selected) {
348
+ selectedPsnList.push(dataItem);
349
+ }
350
+ })
351
+ }
352
+
353
+ if (selectedPsnList.length != currentState.pagerData.total) {
354
+ isAllPsnSelected = false;
355
+ }
356
+
357
+ this.setState({
358
+ ...currentState,
359
+ selectedPsnList,
360
+ isAllPsnSelected
361
+ })
362
+ }
363
+
364
+ selectPsnRadiosChange = (e) => {
365
+ let currentState = this.state;
366
+ let selectedPsnList = [];
367
+ let psnList = currentState.pagerData.data;
368
+
369
+ if (psnList && psnList.length > 0) {
370
+ psnList.forEach(dataItem => {
371
+ if (dataItem.pk == e.dataItem.pk) {
372
+ dataItem['selected'] = true;
373
+ selectedPsnList.push(dataItem)
374
+ } else {
375
+ dataItem['selected'] = false;
376
+ }
377
+ });
378
+
379
+ this.setState({
380
+ ...currentState,
381
+ selectedPsnList
382
+ })
383
+ }
384
+ }
385
+
386
+ onOk() {
387
+ let {selectedPsnList} = this.state;
388
+
389
+ if (!selectedPsnList || selectedPsnList.length == 0) {
390
+ SmartMessage.info("请选择人员");
391
+
392
+ return;
393
+ } else {
394
+ this.props.onOk(selectedPsnList)
395
+ }
396
+ }
397
+
398
+ render() {
399
+ const treeViewMessages = {
400
+ retry: "重新加载",
401
+ requestFailed: "加载失败.",
402
+ loading: "正在加载中..."
403
+ };
404
+
405
+ return (
406
+ <SModal className={`left-org-tree-right-person-grid-modal ${this.props.className? this.props.className : ''}`}
407
+ title="人员参照"
408
+ visible={true}
409
+ centered
410
+ width={'1000px'}
411
+ onCancel={this.props.onCancel}
412
+ onOk={this.onOk}
413
+ >
414
+
415
+ <Search
416
+ className={"person-search-box"}
417
+ placeholder="人员搜索"
418
+ onSearch={this.onPersonSearch}
419
+ />
420
+
421
+ <div className={"left-org-tree-right-person-grid-container"}>
422
+ <div className={"left-org-tree-box"}>
423
+ <TreeView dataSource={this.dataSource}
424
+ messages={treeViewMessages}
425
+ expandIcons={false}
426
+ dataTextField={"name"}
427
+ template={this.treeNodeTemplate}
428
+ ref={this.orgTreeRef}
429
+ select={this.onSelect}
430
+ />
431
+ </div>
432
+
433
+ <div className={"right-psn-grid-box"}>
434
+ <Grid
435
+ data={this.state.pagerData.data}
436
+ total={this.state.pagerData.total}
437
+ {...this.state.gridOperator}
438
+ pageable={{ pageSizes: [20, 50, 100, 200], type : 'numeric' }}
439
+ pageSize={20}
440
+ sortable={true}
441
+ resizable={true}
442
+ selectedField="selected"
443
+ onDataStateChange={this.onDataStateChange.bind(this)}
444
+ onSelectionChange={this.onGridRowSelectionChange}
445
+ onHeaderSelectionChange={this.onGridHeaderSelectionChange}
446
+ >
447
+ {
448
+ this.props.selectType && this.props.selectType ==='single' ? <GridColumn locked field="selected" title="选择" width="55px" className={"text-center"}
449
+ sortable={false}
450
+ headerCell={props => {
451
+ return (<span>选择</span>)
452
+ }}
453
+ cell={(props) => {
454
+ return (
455
+ <td className={"text-center locked_column k-grid-content-sticky"} style={{left: "0px", right: "0px"}}>
456
+ <Radio name='selectDef' defaultChecked={props.dataItem.selected}
457
+ className={"grid-radio"} key={props.dataIndex}
458
+ onChange={this.selectPsnRadiosChange.bind(this, props)}
459
+ ></Radio>
460
+ </td>)
461
+ }}/> : <GridColumn locked field="selected" title="选择" width="50px" className={"text-center locked"}
462
+ headerClassName={"text-center"} sortable={false} headerCell={props => {
463
+ return <Checkbox checked={this.state.isAllPsnSelected} onChange={this.onGridHeaderSelectionChange}></Checkbox>
464
+ }}
465
+ cell={props => {
466
+ return <td className={"text-center locked_column k-grid-content-sticky"} style={{left: "0px", right: "0px"}}>
467
+ <Checkbox checked={props.dataItem.selected} onChange={this.onGridRowSelectionChange.bind(this, props)}></Checkbox>
468
+ </td>
469
+ }}
470
+ />
471
+
472
+ }
473
+ <GridColumn field="sequence_number" title="序号" width="50px" className={"text-center"} headerClassName={"text-center"} width="55px" sortable={false} cell={GridRowSequenceNumberCell}/>
474
+ <GridColumn field="name" title="姓名" className={"text-center"} headerClassName={"text-center"} width="120px" />
475
+ <GridColumn field="code" title="人员编码" className={"text-center"} headerClassName={"text-center"} width="120px" />
476
+ <GridColumn field="corp_ext_name" title="单位名称" className={"text-center"} headerClassName={"text-center"} width="180px" />
477
+ <GridColumn field="dept_ext_name" title="部门名称" className={"text-center"} headerClassName={"text-center"} width="180px" />
478
+ <GridColumn field="post_ext_name" title="岗位名称" className={"text-center"} headerClassName={"text-center"} width="180px" />
479
+ </Grid>
480
+ </div>
481
+ </div>
482
+ </SModal>
483
+ )
484
+ }
485
+ }
486
+
487
+ export default LeftOrgTreeRightPersonGridForSelectPsnModal;