@bchr/bchr-front-lib 0.3.113 → 0.3.114

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