@tddc/assign-modal 2.0.6 → 3.0.1

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,1359 @@
1
+ import _Input from 'tntd/es/input';
2
+ import _Icon from 'tntd/es/icon';
3
+ import _Segmented from 'tntd/es/segmented';
4
+ import _Empty from 'tntd/es/empty';
5
+ import _Checkbox from 'tntd/es/checkbox';
6
+ import _Ellipsis from 'tntd/es/ellipsis';
7
+ import _Tree from 'tntd/es/tree';
8
+ function _toConsumableArray(r) {
9
+ return (
10
+ _arrayWithoutHoles(r) ||
11
+ _iterableToArray(r) ||
12
+ _unsupportedIterableToArray(r) ||
13
+ _nonIterableSpread()
14
+ );
15
+ }
16
+ function _nonIterableSpread() {
17
+ throw new TypeError(
18
+ 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
19
+ );
20
+ }
21
+ function _iterableToArray(r) {
22
+ if (('undefined' != typeof Symbol && null != r[Symbol.iterator]) || null != r['@@iterator'])
23
+ return Array.from(r);
24
+ }
25
+ function _arrayWithoutHoles(r) {
26
+ if (Array.isArray(r)) return _arrayLikeToArray(r);
27
+ }
28
+ function _slicedToArray(r, e) {
29
+ return (
30
+ _arrayWithHoles(r) ||
31
+ _iterableToArrayLimit(r, e) ||
32
+ _unsupportedIterableToArray(r, e) ||
33
+ _nonIterableRest()
34
+ );
35
+ }
36
+ function _nonIterableRest() {
37
+ throw new TypeError(
38
+ 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
39
+ );
40
+ }
41
+ function _unsupportedIterableToArray(r, a) {
42
+ if (r) {
43
+ if ('string' == typeof r) return _arrayLikeToArray(r, a);
44
+ var t = {}.toString.call(r).slice(8, -1);
45
+ return (
46
+ 'Object' === t && r.constructor && (t = r.constructor.name),
47
+ 'Map' === t || 'Set' === t
48
+ ? Array.from(r)
49
+ : 'Arguments' === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
50
+ ? _arrayLikeToArray(r, a)
51
+ : void 0
52
+ );
53
+ }
54
+ }
55
+ function _arrayLikeToArray(r, a) {
56
+ (null == a || a > r.length) && (a = r.length);
57
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
58
+ return n;
59
+ }
60
+ function _iterableToArrayLimit(r, l) {
61
+ var t =
62
+ null == r ? null : ('undefined' != typeof Symbol && r[Symbol.iterator]) || r['@@iterator'];
63
+ if (null != t) {
64
+ var e,
65
+ n,
66
+ i,
67
+ u,
68
+ a = [],
69
+ f = !0,
70
+ o = !1;
71
+ try {
72
+ if (((i = (t = t.call(r)).next), 0 === l)) {
73
+ if (Object(t) !== t) return;
74
+ f = !1;
75
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
76
+ } catch (r) {
77
+ (o = !0), (n = r);
78
+ } finally {
79
+ try {
80
+ if (!f && null != t.return && ((u = t.return()), Object(u) !== u)) return;
81
+ } finally {
82
+ if (o) throw n;
83
+ }
84
+ }
85
+ return a;
86
+ }
87
+ }
88
+ function _arrayWithHoles(r) {
89
+ if (Array.isArray(r)) return r;
90
+ }
91
+ import React from 'react';
92
+ import { useEffect, useState, useCallback, useRef, useMemo } from 'react';
93
+ import { cloneDeep, debounce } from 'lodash';
94
+ import './index.less';
95
+ import { findSameCodePath, preorder, mergeAndDeduplicate, doSearch } from './utils';
96
+ import { getText } from '../../locale';
97
+ var TreeNode = _Tree.TreeNode;
98
+ var path = []; // 上级机构到当前机构的路径
99
+
100
+ var AssignModal = function AssignModal(props) {
101
+ var _props$orgList = props.orgList,
102
+ orgList = _props$orgList === void 0 ? [] : _props$orgList,
103
+ _props$dataItem = props.dataItem,
104
+ dataItem = _props$dataItem === void 0 ? {} : _props$dataItem,
105
+ disabled = props.disabled,
106
+ appList = props.appList,
107
+ onChange = props.onChange,
108
+ orgTitle = props.orgTitle,
109
+ appTitle = props.appTitle,
110
+ userTitle = props.userTitle,
111
+ orgCheckboxTitle = props.orgCheckboxTitle,
112
+ appCheckboxTitle = props.appCheckboxTitle,
113
+ userCheckboxTitle = props.userCheckboxTitle,
114
+ userList = props.userList,
115
+ showUser = props.showUser;
116
+ var _dataItem$appCodes = dataItem.appCodes,
117
+ appCodes = _dataItem$appCodes === void 0 ? [] : _dataItem$appCodes,
118
+ _dataItem$orgCodes = dataItem.orgCodes,
119
+ orgCodes = _dataItem$orgCodes === void 0 ? [] : _dataItem$orgCodes,
120
+ orgCode = dataItem.orgCode,
121
+ appCode = dataItem.appCode,
122
+ _dataItem$accounts = dataItem.accounts,
123
+ accounts = _dataItem$accounts === void 0 ? [] : _dataItem$accounts,
124
+ account = dataItem.account;
125
+ var orgMapRef = useRef({});
126
+ var appMapRef = useRef({});
127
+ var userMapRef = useRef({});
128
+ var rootNode = orgList[0];
129
+ var _useMemo = useMemo(
130
+ function () {
131
+ var org = preorder(
132
+ rootNode,
133
+ function (key, root) {
134
+ orgMapRef.current[key] = root;
135
+ },
136
+ true,
137
+ );
138
+ var app = appList.map(function (item) {
139
+ appMapRef.current[item.value] = item;
140
+ return item.value;
141
+ });
142
+ var user =
143
+ (userList === null || userList === void 0
144
+ ? void 0
145
+ : userList.map(function (item) {
146
+ userMapRef.current[item.account] = item;
147
+ return item.account;
148
+ })) || [];
149
+ return [org, app, user];
150
+ },
151
+ [rootNode, appList, userList],
152
+ ),
153
+ _useMemo2 = _slicedToArray(_useMemo, 3),
154
+ allOrg = _useMemo2[0],
155
+ allApp = _useMemo2[1],
156
+ allUser = _useMemo2[2];
157
+ var titleOptions = [
158
+ ''.concat(
159
+ orgTitle ||
160
+ getText('availableOrgs', props === null || props === void 0 ? void 0 : props.lang),
161
+ ),
162
+ ''.concat(
163
+ appTitle ||
164
+ getText('availableApps', props === null || props === void 0 ? void 0 : props.lang),
165
+ ),
166
+ ''.concat(
167
+ userTitle ||
168
+ getText('availableUsers', props === null || props === void 0 ? void 0 : props.lang),
169
+ ),
170
+ ];
171
+ if (!showUser) {
172
+ titleOptions.pop();
173
+ }
174
+ var _useState = useState(orgList),
175
+ _useState2 = _slicedToArray(_useState, 2),
176
+ treeData = _useState2[0],
177
+ setTreeData = _useState2[1];
178
+ var _useState3 = useState(0),
179
+ _useState4 = _slicedToArray(_useState3, 2),
180
+ curIndex = _useState4[0],
181
+ setCurIndex = _useState4[1];
182
+ var _useState5 = useState(titleOptions[0]),
183
+ _useState6 = _slicedToArray(_useState5, 2),
184
+ curValue = _useState6[0],
185
+ setCurValue = _useState6[1];
186
+ var _useState7 = useState([]),
187
+ _useState8 = _slicedToArray(_useState7, 2),
188
+ checkedKeys = _useState8[0],
189
+ setCheckedKeys = _useState8[1];
190
+ var _useState9 = useState(appCodes || []),
191
+ _useState10 = _slicedToArray(_useState9, 2),
192
+ appKeys = _useState10[0],
193
+ setAppKeys = _useState10[1];
194
+ var _useState11 = useState(accounts || []),
195
+ _useState12 = _slicedToArray(_useState11, 2),
196
+ userKeys = _useState12[0],
197
+ setUserKeys = _useState12[1];
198
+ var _useState13 = useState(false),
199
+ _useState14 = _slicedToArray(_useState13, 2),
200
+ allOrgChecked = _useState14[0],
201
+ setAllOrgChecked = _useState14[1];
202
+ var _useState15 = useState(false),
203
+ _useState16 = _slicedToArray(_useState15, 2),
204
+ allAppChecked = _useState16[0],
205
+ setAllAppChecked = _useState16[1];
206
+ var _useState17 = useState(false),
207
+ _useState18 = _slicedToArray(_useState17, 2),
208
+ allUserChecked = _useState18[0],
209
+ setAllUserChecked = _useState18[1];
210
+ var _useState19 = useState(),
211
+ _useState20 = _slicedToArray(_useState19, 2),
212
+ filterOrg = _useState20[0],
213
+ setFilterOrg = _useState20[1];
214
+ var _useState21 = useState(),
215
+ _useState22 = _slicedToArray(_useState21, 2),
216
+ filterUser = _useState22[0],
217
+ setFilterUser = _useState22[1];
218
+ var _useState23 = useState(),
219
+ _useState24 = _slicedToArray(_useState23, 2),
220
+ filterApp = _useState24[0],
221
+ setFilterApp = _useState24[1];
222
+ useEffect(
223
+ function () {
224
+ // path 和 allOrgList 赋值
225
+ path = findSameCodePath(rootNode, orgCode);
226
+ var initOrgs = [];
227
+ var initApps = [];
228
+ var initAccounts = [];
229
+ if (orgCodes.includes('all')) {
230
+ setAllOrgChecked(orgCodes.includes('all'));
231
+ initOrgs = allOrg;
232
+ } else {
233
+ initOrgs = Array.from(
234
+ new Set([].concat(_toConsumableArray(orgCodes || []), _toConsumableArray(path))),
235
+ );
236
+ }
237
+ if (appCodes.includes('all')) {
238
+ setAllAppChecked(appCodes.includes('all'));
239
+ initApps = allApp;
240
+ } else {
241
+ initApps = Array.from(new Set([].concat(_toConsumableArray(appCodes || []), [appCode])));
242
+ }
243
+ if (showUser) {
244
+ if (accounts.includes('all')) {
245
+ setAllUserChecked(true);
246
+ initAccounts = allUser;
247
+ } else {
248
+ initAccounts = Array.from(
249
+ new Set([].concat(_toConsumableArray(accounts || []), [account])),
250
+ );
251
+ }
252
+ }
253
+ setCheckedKeys(initOrgs);
254
+ setAppKeys(initApps || []);
255
+ setUserKeys(initAccounts || []);
256
+ onChange &&
257
+ onChange({
258
+ appKeys: appCodes.includes('all') ? ['all'] : initApps,
259
+ checkedKeys: orgCodes.includes('all') ? ['all'] : initOrgs,
260
+ userKeys: accounts.includes('all') ? ['all'] : initAccounts,
261
+ appCheckAll: appCodes.includes('all'),
262
+ orgCheckAll: orgCodes.includes('all'),
263
+ userCheckAll: accounts.includes('all'),
264
+ checkData: {
265
+ apps: initApps,
266
+ orgs: initOrgs,
267
+ accounts: initAccounts,
268
+ },
269
+ });
270
+ },
271
+ [dataItem],
272
+ );
273
+ useEffect(
274
+ function () {
275
+ doSearch(filterOrg, orgMapRef.current, function () {
276
+ var newData = cloneDeep([orgMapRef.current[orgList[0].value]]);
277
+ setTreeData(newData);
278
+ });
279
+ },
280
+ [filterOrg],
281
+ );
282
+ var _loopTreeNodes = function loopTreeNodes(data) {
283
+ var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
284
+ var NodeTitle = function NodeTitle(_ref) {
285
+ var node = _ref.node;
286
+ return /*#__PURE__*/ React.createElement(
287
+ 'div',
288
+ {
289
+ className: 'node-title',
290
+ },
291
+ node.title,
292
+ );
293
+ };
294
+ return data.map(function (item) {
295
+ var _ref2 = item || {},
296
+ code = _ref2.code,
297
+ show = _ref2.show;
298
+ if (!show) return null;
299
+ var orgDisabled = path.includes(code);
300
+ if (item.children) {
301
+ return /*#__PURE__*/ React.createElement(
302
+ TreeNode,
303
+ {
304
+ key: code,
305
+ title: /*#__PURE__*/ React.createElement(NodeTitle, {
306
+ node: item,
307
+ }),
308
+ item: item,
309
+ disabled: orgDisabled || disabled || allOrgChecked,
310
+ },
311
+ _loopTreeNodes(item.children, level + 1),
312
+ );
313
+ }
314
+ return /*#__PURE__*/ React.createElement(TreeNode, {
315
+ style: {
316
+ paddingLeft: ''.concat((level + 1) * 14, 'px'),
317
+ marginLeft: '-'.concat(level * 14, 'px'),
318
+ },
319
+ key: code,
320
+ title: /*#__PURE__*/ React.createElement(NodeTitle, {
321
+ node: item,
322
+ }),
323
+ item: item,
324
+ disabled: orgDisabled || disabled,
325
+ });
326
+ });
327
+ };
328
+ var onCheck = function onCheck(keys, info) {
329
+ var props = info.node.props;
330
+ var item = props.item;
331
+ var path = item.path;
332
+ var checked = keys.checked;
333
+ if (!info.node.isLeaf() && !info.node.checked) {
334
+ var arr = preorder(info.node.props.item);
335
+ arr.splice(0, 1);
336
+ arr.map(function (item) {
337
+ var i = checked.findIndex(function (i) {
338
+ return i === item;
339
+ });
340
+ if (i !== -1) checked.splice(i, 1);
341
+ });
342
+ }
343
+ if (info.checked) {
344
+ checked.pop();
345
+ checked = mergeAndDeduplicate(checked, path);
346
+ }
347
+ setCheckedKeys(checked);
348
+ onChange({
349
+ appKeys: allAppChecked ? ['all'] : appKeys,
350
+ checkedKeys: checked,
351
+ appCheckAll: allAppChecked,
352
+ orgCheckAll: allOrgChecked,
353
+ userKeys: allUserChecked ? ['all'] : userKeys,
354
+ userCheckAll: allUserChecked,
355
+ checkData: {
356
+ apps: appKeys,
357
+ orgs: checked,
358
+ accounts: userKeys,
359
+ },
360
+ });
361
+ };
362
+ var assignApp = function assignApp(e) {
363
+ var value = '';
364
+ var newAppKeys = [];
365
+ if (e.target.checked) {
366
+ value = e.target.value;
367
+ newAppKeys = [].concat(_toConsumableArray(appKeys), [value]);
368
+ } else {
369
+ value = e.target.value;
370
+ newAppKeys = cloneDeep(appKeys);
371
+ newAppKeys.map(function (item, index) {
372
+ if (value === item) {
373
+ newAppKeys.splice(index, 1);
374
+ }
375
+ });
376
+ }
377
+ setAppKeys(newAppKeys);
378
+ onChange({
379
+ appKeys: newAppKeys,
380
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
381
+ appCheckAll: allAppChecked,
382
+ orgCheckAll: allOrgChecked,
383
+ userKeys: allUserChecked ? ['all'] : userKeys,
384
+ userCheckAll: allUserChecked,
385
+ checkData: {
386
+ apps: newAppKeys,
387
+ orgs: checkedKeys,
388
+ accounts: userKeys,
389
+ },
390
+ });
391
+ };
392
+ var assignUser = function assignUser(e) {
393
+ var value = '';
394
+ var newUserKeys = [];
395
+ if (e.target.checked) {
396
+ value = e.target.value;
397
+ newUserKeys = [].concat(_toConsumableArray(userKeys), [value]);
398
+ } else {
399
+ value = e.target.value;
400
+ newUserKeys = cloneDeep(userKeys);
401
+ newUserKeys.map(function (item, index) {
402
+ if (value === item) {
403
+ newUserKeys.splice(index, 1);
404
+ }
405
+ });
406
+ }
407
+ setUserKeys(newUserKeys);
408
+ onChange({
409
+ appKeys: appKeys,
410
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
411
+ appCheckAll: allAppChecked,
412
+ orgCheckAll: allOrgChecked,
413
+ userKeys: newUserKeys,
414
+ userCheckAll: allUserChecked,
415
+ checkData: {
416
+ apps: appKeys,
417
+ orgs: checkedKeys,
418
+ accounts: newUserKeys,
419
+ },
420
+ });
421
+ };
422
+
423
+ // org全局授权
424
+ var checkAllOrg = function checkAllOrg(e) {
425
+ var orgChecks = [];
426
+ if (e.target.checked) {
427
+ setAllOrgChecked(true);
428
+ orgChecks = preorder(rootNode);
429
+ setCheckedKeys(orgChecks);
430
+ onChange({
431
+ appKeys: allAppChecked ? ['all'] : appKeys,
432
+ checkedKeys: ['all'],
433
+ appCheckAll: allAppChecked,
434
+ orgCheckAll: true,
435
+ userKeys: allUserChecked ? ['all'] : userKeys,
436
+ userCheckAll: allUserChecked,
437
+ checkData: {
438
+ apps: appKeys,
439
+ orgs: checkedKeys,
440
+ accounts: accounts,
441
+ },
442
+ });
443
+ } else {
444
+ setAllOrgChecked(false);
445
+ var arr = orgCodes.includes('all') ? allOrg : orgCodes;
446
+ orgChecks = Array.from(
447
+ new Set([].concat(_toConsumableArray(arr || []), _toConsumableArray(path))),
448
+ );
449
+ setCheckedKeys(orgChecks);
450
+ onChange({
451
+ appKeys: allAppChecked ? ['all'] : appKeys,
452
+ checkedKeys: orgChecks,
453
+ appCheckAll: allAppChecked,
454
+ orgCheckAll: false,
455
+ userKeys: allUserChecked ? ['all'] : userKeys,
456
+ userCheckAll: allUserChecked,
457
+ checkData: {
458
+ apps: appKeys,
459
+ orgs: orgChecks,
460
+ accounts: accounts,
461
+ },
462
+ });
463
+ }
464
+ };
465
+
466
+ // app全局授权
467
+ var checkedAllApp = function checkedAllApp(e) {
468
+ var appChecks = [];
469
+ if (e.target.checked) {
470
+ setAllAppChecked(true);
471
+ appChecks = appList.map(function (item) {
472
+ return item.value;
473
+ });
474
+ setAppKeys(appChecks);
475
+ onChange({
476
+ appKeys: ['all'],
477
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
478
+ appCheckAll: true,
479
+ orgCheckAll: allOrgChecked,
480
+ userKeys: allUserChecked ? ['all'] : userKeys,
481
+ userCheckAll: allUserChecked,
482
+ checkData: {
483
+ apps: appChecks,
484
+ orgs: checkedKeys,
485
+ accounts: accounts,
486
+ },
487
+ });
488
+ } else {
489
+ setAllAppChecked(false);
490
+ var arr = appCodes.includes('all') ? allApp : appCodes;
491
+ appChecks = Array.from(new Set([].concat(_toConsumableArray(arr || []), [appCode])));
492
+ setAppKeys(appChecks);
493
+ onChange({
494
+ appKeys: appChecks,
495
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
496
+ appCheckAll: false,
497
+ orgCheckAll: allOrgChecked,
498
+ userKeys: allUserChecked ? ['all'] : userKeys,
499
+ userCheckAll: allUserChecked,
500
+ checkData: {
501
+ apps: appChecks,
502
+ orgs: checkedKeys,
503
+ accounts: accounts,
504
+ },
505
+ });
506
+ }
507
+ };
508
+
509
+ // account全局授权
510
+ var checkedAllUser = function checkedAllUser(e) {
511
+ var userChecks = [];
512
+ if (e.target.checked) {
513
+ setAllUserChecked(true);
514
+ userChecks = userList.map(function (item) {
515
+ return item.account;
516
+ });
517
+ setUserKeys(userChecks);
518
+ onChange({
519
+ appKeys: allAppChecked ? ['all'] : appKeys,
520
+ appCheckAll: allAppChecked,
521
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
522
+ orgCheckAll: allOrgChecked,
523
+ userKeys: ['all'],
524
+ userCheckAll: true,
525
+ checkData: {
526
+ apps: appKeys,
527
+ orgs: checkedKeys,
528
+ accounts: userChecks,
529
+ },
530
+ });
531
+ } else {
532
+ setAllUserChecked(false);
533
+ var arr = accounts.includes('all') ? allUser : accounts;
534
+ userChecks = Array.from(new Set([].concat(_toConsumableArray(arr || []), [account])));
535
+ setUserKeys(userChecks);
536
+ onChange({
537
+ appKeys: allAppChecked ? ['all'] : appKeys,
538
+ appCheckAll: allAppChecked,
539
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
540
+ orgCheckAll: allOrgChecked,
541
+ userKeys: userChecks,
542
+ userCheckAll: false,
543
+ checkData: {
544
+ apps: appKeys,
545
+ orgs: checkedKeys,
546
+ accounts: userChecks,
547
+ },
548
+ });
549
+ }
550
+ };
551
+ var debouncedOrgSearch = useCallback(
552
+ debounce(function (nextValue) {
553
+ setFilterOrg(nextValue);
554
+ }, 200),
555
+ [],
556
+ );
557
+ var debouncedUserSearch = useCallback(
558
+ debounce(function (nextValue) {
559
+ setFilterUser(nextValue);
560
+ }, 200),
561
+ [],
562
+ );
563
+ var debouncedAppSearch = useCallback(
564
+ debounce(function (nextValue) {
565
+ setFilterApp(nextValue);
566
+ }, 200),
567
+ [],
568
+ );
569
+ // 拼接机构路径显示名
570
+ var getOrgPathDisplayName = function getOrgPathDisplayName() {
571
+ var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
572
+ var displayName = '';
573
+ if (path.length > 0) {
574
+ displayName = path
575
+ .map(function (item) {
576
+ return orgMapRef.current[item].name;
577
+ })
578
+ .join(' / ');
579
+ }
580
+ return displayName;
581
+ };
582
+ // 移除单个机构
583
+ var onRemoveSingleOrg = function onRemoveSingleOrg(node) {
584
+ var del_arr = preorder(node);
585
+ var checked = checkedKeys.filter(function (item) {
586
+ return !del_arr.includes(item);
587
+ });
588
+ setCheckedKeys(checked);
589
+ setAllOrgChecked(false);
590
+ onChange({
591
+ appKeys: allAppChecked ? ['all'] : appKeys,
592
+ checkedKeys: checked,
593
+ appCheckAll: allAppChecked,
594
+ orgCheckAll: false,
595
+ userKeys: allUserChecked ? ['all'] : userKeys,
596
+ userCheckAll: allUserChecked,
597
+ checkData: {
598
+ apps: appKeys,
599
+ orgs: checked,
600
+ accounts: userKeys,
601
+ },
602
+ });
603
+ };
604
+ // 移除全部机构
605
+ var onRemoveAllOrg = function onRemoveAllOrg() {
606
+ var checked = [rootNode.key];
607
+ setCheckedKeys(checked);
608
+ setAllOrgChecked(false);
609
+ onChange({
610
+ appKeys: allAppChecked ? ['all'] : appKeys,
611
+ checkedKeys: checked,
612
+ appCheckAll: allAppChecked,
613
+ orgCheckAll: false,
614
+ userKeys: allUserChecked ? ['all'] : userKeys,
615
+ userCheckAll: allUserChecked,
616
+ checkData: {
617
+ apps: appKeys,
618
+ orgs: checked,
619
+ accounts: userKeys,
620
+ },
621
+ });
622
+ };
623
+ // 移除单个应用
624
+ var onRemoveSingleApp = function onRemoveSingleApp(value) {
625
+ var newAppKeys = cloneDeep(appKeys);
626
+ newAppKeys.map(function (item, index) {
627
+ if (value === item) {
628
+ newAppKeys.splice(index, 1);
629
+ }
630
+ });
631
+ setAppKeys(newAppKeys);
632
+ setAllAppChecked(false);
633
+ onChange({
634
+ appKeys: newAppKeys,
635
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
636
+ appCheckAll: false,
637
+ orgCheckAll: allOrgChecked,
638
+ userKeys: allUserChecked ? ['all'] : userKeys,
639
+ userCheckAll: allUserChecked,
640
+ checkData: {
641
+ apps: newAppKeys,
642
+ orgs: checkedKeys,
643
+ accounts: userKeys,
644
+ },
645
+ });
646
+ };
647
+ // 移除全部应用
648
+ var onRemoveAllApp = function onRemoveAllApp() {
649
+ var newAppKeys = [appCode];
650
+ setAppKeys(newAppKeys);
651
+ setAllAppChecked(false);
652
+ onChange({
653
+ appKeys: newAppKeys,
654
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
655
+ appCheckAll: false,
656
+ orgCheckAll: allOrgChecked,
657
+ userKeys: allUserChecked ? ['all'] : userKeys,
658
+ userCheckAll: allUserChecked,
659
+ checkData: {
660
+ apps: newAppKeys,
661
+ orgs: checkedKeys,
662
+ accounts: userKeys,
663
+ },
664
+ });
665
+ };
666
+ // 移除全部用户
667
+ var onRemoveAllUser = function onRemoveAllUser() {
668
+ var newUserKeys = [account];
669
+ setUserKeys(newUserKeys);
670
+ setAllUserChecked(false);
671
+ onChange({
672
+ appKeys: allAppChecked ? ['all'] : appKeys,
673
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
674
+ userKeys: newUserKeys,
675
+ appCheckAll: allAppChecked,
676
+ orgCheckAll: allOrgChecked,
677
+ userCheckAll: false,
678
+ checkData: {
679
+ apps: appKeys,
680
+ orgs: checkedKeys,
681
+ accounts: newUserKeys,
682
+ },
683
+ });
684
+ };
685
+ // 移除单个用户
686
+ var onRemoveSingleUser = function onRemoveSingleUser(value) {
687
+ var newUserKeys = cloneDeep(userKeys);
688
+ newUserKeys.map(function (item, index) {
689
+ if (value === item) {
690
+ newUserKeys.splice(index, 1);
691
+ }
692
+ });
693
+ setUserKeys(newUserKeys);
694
+ setAllUserChecked(false);
695
+ onChange({
696
+ appKeys: allAppChecked ? ['all'] : appKeys,
697
+ checkedKeys: allOrgChecked ? ['all'] : checkedKeys,
698
+ userKeys: newUserKeys,
699
+ appCheckAll: allAppChecked,
700
+ orgCheckAll: allOrgChecked,
701
+ userCheckAll: false,
702
+ checkData: {
703
+ apps: appKeys,
704
+ orgs: checkedKeys,
705
+ accounts: newUserKeys,
706
+ },
707
+ });
708
+ };
709
+
710
+ // 已选择的机构列表
711
+ var areadySelectOrg = useMemo(
712
+ function () {
713
+ return (
714
+ checkedKeys.filter(function (i) {
715
+ return allOrg.includes(i);
716
+ }) || []
717
+ );
718
+ },
719
+ [checkedKeys, allOrg],
720
+ );
721
+ // 已选择的渠道列表
722
+ var areadySelectApp = useMemo(
723
+ function () {
724
+ return (
725
+ appKeys.filter(function (i) {
726
+ return allApp.includes(i);
727
+ }) || []
728
+ );
729
+ },
730
+ [appKeys, allApp],
731
+ );
732
+ // 已选择的用户列表
733
+ var areadySelectUser = useMemo(
734
+ function () {
735
+ return (
736
+ userKeys.filter(function (i) {
737
+ return allUser.includes(i);
738
+ }) || []
739
+ );
740
+ },
741
+ [userKeys, allUser],
742
+ );
743
+
744
+ // 渲染App列表
745
+ var appListDomRender = useMemo(
746
+ function () {
747
+ return appList
748
+ .filter(function (i) {
749
+ var label = i.label,
750
+ value = i.value;
751
+ if (filterApp) {
752
+ return (
753
+ (label === null || label === void 0
754
+ ? void 0
755
+ : label
756
+ .toLocaleLowerCase()
757
+ .includes(
758
+ filterApp === null || filterApp === void 0
759
+ ? void 0
760
+ : filterApp.toLocaleLowerCase(),
761
+ )) ||
762
+ (value === null || value === void 0
763
+ ? void 0
764
+ : value
765
+ .toLocaleLowerCase()
766
+ .includes(
767
+ filterApp === null || filterApp === void 0
768
+ ? void 0
769
+ : filterApp.toLocaleLowerCase(),
770
+ ))
771
+ );
772
+ }
773
+ return i;
774
+ })
775
+ .map(function (item, index) {
776
+ var isCheck =
777
+ appKeys === null || appKeys === void 0 ? void 0 : appKeys.includes(item.value);
778
+ var isOwnAppCode = appCode === item.value;
779
+ return /*#__PURE__*/ React.createElement(
780
+ _Checkbox,
781
+ {
782
+ checked: isCheck,
783
+ disabled: disabled || isOwnAppCode || allAppChecked,
784
+ onChange: assignApp,
785
+ value: item.value,
786
+ key: index,
787
+ },
788
+ /*#__PURE__*/ React.createElement(
789
+ 'span',
790
+ {
791
+ style: {
792
+ display: 'inline-block',
793
+ },
794
+ },
795
+ /*#__PURE__*/ React.createElement(_Ellipsis, {
796
+ title: item.label,
797
+ }),
798
+ ),
799
+ );
800
+ });
801
+ },
802
+ [appList, appKeys, filterApp],
803
+ );
804
+
805
+ // 渲染User列表
806
+ var userListDomRender = useMemo(
807
+ function () {
808
+ return (
809
+ (userList === null || userList === void 0
810
+ ? void 0
811
+ : userList
812
+ .filter(function (item) {
813
+ if (filterUser) {
814
+ var _item$account, _item$userName;
815
+ return (
816
+ (item === null || item === void 0
817
+ ? void 0
818
+ : (_item$account = item.account) === null || _item$account === void 0
819
+ ? void 0
820
+ : _item$account
821
+ .toLocaleLowerCase()
822
+ .includes(
823
+ filterUser === null || filterUser === void 0
824
+ ? void 0
825
+ : filterUser.toLocaleLowerCase(),
826
+ )) ||
827
+ (item === null || item === void 0
828
+ ? void 0
829
+ : (_item$userName = item.userName) === null || _item$userName === void 0
830
+ ? void 0
831
+ : _item$userName
832
+ .toLocaleLowerCase()
833
+ .includes(
834
+ filterUser === null || filterUser === void 0
835
+ ? void 0
836
+ : filterUser.toLocaleLowerCase(),
837
+ ))
838
+ );
839
+ }
840
+ return item;
841
+ })
842
+ .map(function (item, index) {
843
+ var isCheck =
844
+ userKeys === null || userKeys === void 0
845
+ ? void 0
846
+ : userKeys.includes(item.account);
847
+ var isOwnAccount = account === item.account;
848
+ return /*#__PURE__*/ React.createElement(
849
+ _Checkbox,
850
+ {
851
+ key: item + index,
852
+ checked: isCheck,
853
+ disabled: disabled || isOwnAccount || allUserChecked,
854
+ onChange: assignUser,
855
+ value: item.account,
856
+ },
857
+ /*#__PURE__*/ React.createElement(
858
+ 'span',
859
+ {
860
+ style: {
861
+ display: 'inline-block',
862
+ },
863
+ },
864
+ /*#__PURE__*/ React.createElement(_Ellipsis, {
865
+ widthLimit: 240,
866
+ title: item.userName,
867
+ }),
868
+ ),
869
+ );
870
+ })) || /*#__PURE__*/ React.createElement(_Empty, null)
871
+ );
872
+ },
873
+ [userList, userKeys, filterUser],
874
+ );
875
+ return /*#__PURE__*/ React.createElement(
876
+ React.Fragment,
877
+ null,
878
+ /*#__PURE__*/ React.createElement(_Segmented, {
879
+ className: 'menu-title',
880
+ value: curValue,
881
+ options: titleOptions,
882
+ onChange: function onChange(index) {
883
+ setCurValue(index);
884
+ setCurIndex(
885
+ titleOptions.findIndex(function (i) {
886
+ return i === index;
887
+ }),
888
+ );
889
+ },
890
+ }),
891
+ /*#__PURE__*/ React.createElement(
892
+ 'div',
893
+ {
894
+ className: 'assign-box-container',
895
+ },
896
+ /*#__PURE__*/ React.createElement(
897
+ 'div',
898
+ {
899
+ className: 'slider panel-'.concat(curIndex),
900
+ style: {
901
+ width: !!showUser ? '300%' : '200%',
902
+ },
903
+ },
904
+ /*#__PURE__*/ React.createElement(
905
+ 'div',
906
+ {
907
+ className: 'org-panel panel',
908
+ },
909
+ /*#__PURE__*/ React.createElement(
910
+ 'div',
911
+ {
912
+ className: 'menu-header',
913
+ },
914
+ /*#__PURE__*/ React.createElement(
915
+ 'span',
916
+ {
917
+ className: 'title',
918
+ },
919
+ orgTitle ||
920
+ getText(
921
+ 'authorizesOrgList',
922
+ props === null || props === void 0 ? void 0 : props.lang,
923
+ ),
924
+ ),
925
+ /*#__PURE__*/ React.createElement(
926
+ 'div',
927
+ {
928
+ className: 'menu-all-checked',
929
+ },
930
+ /*#__PURE__*/ React.createElement(
931
+ _Checkbox,
932
+ {
933
+ onChange: checkAllOrg,
934
+ checked: allOrgChecked,
935
+ disabled: disabled,
936
+ },
937
+ orgCheckboxTitle ||
938
+ getText(
939
+ 'allOrgAvailable',
940
+ props === null || props === void 0 ? void 0 : props.lang,
941
+ ),
942
+ ),
943
+ ),
944
+ ),
945
+ /*#__PURE__*/ React.createElement(
946
+ 'div',
947
+ {
948
+ className: 'panel-menu-body',
949
+ },
950
+ /*#__PURE__*/ React.createElement(
951
+ 'div',
952
+ {
953
+ className: 'panel-left',
954
+ },
955
+ /*#__PURE__*/ React.createElement(_Input, {
956
+ size: 'small',
957
+ allowClear: true,
958
+ placeholder: getText(
959
+ 'search',
960
+ props === null || props === void 0 ? void 0 : props.lang,
961
+ ),
962
+ onChange: function onChange(e) {
963
+ debouncedOrgSearch(e.target.value);
964
+ },
965
+ suffix: /*#__PURE__*/ React.createElement(_Icon, {
966
+ type: 'zoom',
967
+ }),
968
+ style: {
969
+ marginBottom: 16,
970
+ width: 'calc(100% - 16px)',
971
+ },
972
+ }),
973
+ /*#__PURE__*/ React.createElement(
974
+ _Tree,
975
+ {
976
+ blockNode: true,
977
+ className: 'tree-list',
978
+ checkable: true,
979
+ checkStrictly: true,
980
+ checkedKeys: checkedKeys,
981
+ defaultExpandAll: true,
982
+ onCheck: onCheck,
983
+ },
984
+ _loopTreeNodes(treeData, 0),
985
+ ),
986
+ ),
987
+ /*#__PURE__*/ React.createElement(
988
+ 'div',
989
+ {
990
+ className: 'panel-right',
991
+ },
992
+ /*#__PURE__*/ React.createElement(
993
+ 'div',
994
+ {
995
+ className: 'select-menu-header',
996
+ },
997
+ getText(
998
+ 'hasBeenSelected',
999
+ props === null || props === void 0 ? void 0 : props.lang,
1000
+ ),
1001
+ ':',
1002
+ ' ',
1003
+ getText(
1004
+ 'numOfOrg',
1005
+ props === null || props === void 0 ? void 0 : props.lang,
1006
+ areadySelectOrg.length || 0,
1007
+ ),
1008
+ /*#__PURE__*/ React.createElement(
1009
+ 'a',
1010
+ {
1011
+ onClick: function onClick() {
1012
+ return onRemoveAllOrg();
1013
+ },
1014
+ },
1015
+ getText('clear', props === null || props === void 0 ? void 0 : props.lang),
1016
+ ),
1017
+ ),
1018
+ /*#__PURE__*/ React.createElement(
1019
+ 'ul',
1020
+ {
1021
+ className: 'select-menu-list',
1022
+ },
1023
+ checkedKeys.map(function (item, index) {
1024
+ var node = orgMapRef.current[item] || {};
1025
+ var path = node.path,
1026
+ name = node.name;
1027
+ var pathDisplayName = getOrgPathDisplayName(path);
1028
+ var disabled = rootNode.key === item;
1029
+ return /*#__PURE__*/ React.createElement(
1030
+ 'li',
1031
+ {
1032
+ key: item.value + index,
1033
+ className: 'select-menu-list-item',
1034
+ },
1035
+ /*#__PURE__*/ React.createElement(
1036
+ 'span',
1037
+ {
1038
+ className: 'org-name',
1039
+ },
1040
+ /*#__PURE__*/ React.createElement(_Ellipsis, {
1041
+ title: name,
1042
+ }),
1043
+ ),
1044
+ /*#__PURE__*/ React.createElement(
1045
+ 'span',
1046
+ {
1047
+ className: 'path-name',
1048
+ },
1049
+ /*#__PURE__*/ React.createElement(_Ellipsis, {
1050
+ title: pathDisplayName,
1051
+ }),
1052
+ ),
1053
+ !disabled &&
1054
+ /*#__PURE__*/ React.createElement(_Icon, {
1055
+ type: 'close',
1056
+ className: 'close-icon',
1057
+ onClick: function onClick() {
1058
+ return onRemoveSingleOrg(node);
1059
+ },
1060
+ }),
1061
+ );
1062
+ }) || /*#__PURE__*/ React.createElement(_Empty, null),
1063
+ ),
1064
+ ),
1065
+ ),
1066
+ ),
1067
+ /*#__PURE__*/ React.createElement(
1068
+ 'div',
1069
+ {
1070
+ className: 'app-panel panel',
1071
+ },
1072
+ /*#__PURE__*/ React.createElement(
1073
+ 'div',
1074
+ {
1075
+ className: 'menu-header',
1076
+ },
1077
+ /*#__PURE__*/ React.createElement(
1078
+ 'span',
1079
+ {
1080
+ className: 'title',
1081
+ },
1082
+ appTitle ||
1083
+ getText(
1084
+ 'authorizesAppList',
1085
+ props === null || props === void 0 ? void 0 : props.lang,
1086
+ ),
1087
+ ),
1088
+ /*#__PURE__*/ React.createElement(
1089
+ 'div',
1090
+ {
1091
+ className: 'menu-all-checked',
1092
+ },
1093
+ /*#__PURE__*/ React.createElement(
1094
+ _Checkbox,
1095
+ {
1096
+ onChange: checkedAllApp,
1097
+ checked: allAppChecked,
1098
+ disabled: disabled,
1099
+ },
1100
+ appCheckboxTitle ||
1101
+ getText(
1102
+ 'allAppAvailable',
1103
+ props === null || props === void 0 ? void 0 : props.lang,
1104
+ ),
1105
+ ),
1106
+ ),
1107
+ ),
1108
+ /*#__PURE__*/ React.createElement(
1109
+ 'div',
1110
+ {
1111
+ className: 'panel-menu-body',
1112
+ },
1113
+ /*#__PURE__*/ React.createElement(
1114
+ 'div',
1115
+ {
1116
+ className: 'panel-left',
1117
+ },
1118
+ /*#__PURE__*/ React.createElement(_Input, {
1119
+ onChange: function onChange(e) {
1120
+ debouncedAppSearch(e.target.value);
1121
+ },
1122
+ size: 'small',
1123
+ allowClear: true,
1124
+ placeholder: getText(
1125
+ 'search',
1126
+ props === null || props === void 0 ? void 0 : props.lang,
1127
+ ),
1128
+ suffix: /*#__PURE__*/ React.createElement(_Icon, {
1129
+ type: 'zoom',
1130
+ }),
1131
+ style: {
1132
+ marginBottom: 16,
1133
+ width: 'calc(100% - 16px)',
1134
+ },
1135
+ }),
1136
+ appListDomRender,
1137
+ ),
1138
+ /*#__PURE__*/ React.createElement(
1139
+ 'div',
1140
+ {
1141
+ className: 'panel-right',
1142
+ },
1143
+ /*#__PURE__*/ React.createElement(
1144
+ 'div',
1145
+ {
1146
+ className: 'select-menu-header',
1147
+ },
1148
+ /*#__PURE__*/ React.createElement(
1149
+ 'span',
1150
+ null,
1151
+ getText(
1152
+ 'hasBeenSelected',
1153
+ props === null || props === void 0 ? void 0 : props.lang,
1154
+ ),
1155
+ ':',
1156
+ ' ',
1157
+ getText(
1158
+ 'numOfApp',
1159
+ props === null || props === void 0 ? void 0 : props.lang,
1160
+ areadySelectApp.length || 0,
1161
+ ),
1162
+ ),
1163
+ /*#__PURE__*/ React.createElement(
1164
+ 'a',
1165
+ {
1166
+ onClick: function onClick() {
1167
+ return onRemoveAllApp();
1168
+ },
1169
+ },
1170
+ getText('clear', props === null || props === void 0 ? void 0 : props.lang),
1171
+ ),
1172
+ ),
1173
+ /*#__PURE__*/ React.createElement(
1174
+ 'ul',
1175
+ {
1176
+ className: 'select-menu-list',
1177
+ },
1178
+ appKeys.map(function (item, index) {
1179
+ var node = appMapRef.current[item] || {};
1180
+ var value = node.value,
1181
+ label = node.label;
1182
+ var isOwnAppCode = appCode === value;
1183
+ if (!value && !label) return null; // 不显示多余数据
1184
+ return /*#__PURE__*/ React.createElement(
1185
+ 'li',
1186
+ {
1187
+ key: value + index,
1188
+ className: 'select-menu-list-item',
1189
+ },
1190
+ /*#__PURE__*/ React.createElement(
1191
+ 'span',
1192
+ {
1193
+ className: 'app-name',
1194
+ },
1195
+ /*#__PURE__*/ React.createElement(_Ellipsis, {
1196
+ title: label,
1197
+ }),
1198
+ ),
1199
+ !isOwnAppCode &&
1200
+ /*#__PURE__*/ React.createElement(_Icon, {
1201
+ type: 'close',
1202
+ className: 'close-icon',
1203
+ onClick: function onClick() {
1204
+ return onRemoveSingleApp(value);
1205
+ },
1206
+ }),
1207
+ );
1208
+ }) || /*#__PURE__*/ React.createElement(_Empty, null),
1209
+ ),
1210
+ ),
1211
+ ),
1212
+ ),
1213
+ !!showUser &&
1214
+ /*#__PURE__*/ React.createElement(
1215
+ 'div',
1216
+ {
1217
+ className: 'user-panel panel',
1218
+ },
1219
+ /*#__PURE__*/ React.createElement(
1220
+ 'div',
1221
+ {
1222
+ className: 'menu-header',
1223
+ },
1224
+ /*#__PURE__*/ React.createElement(
1225
+ 'span',
1226
+ {
1227
+ className: 'title',
1228
+ },
1229
+ userTitle ||
1230
+ getText(
1231
+ 'authorizesUserList',
1232
+ props === null || props === void 0 ? void 0 : props.lang,
1233
+ ),
1234
+ ),
1235
+ /*#__PURE__*/ React.createElement(
1236
+ 'div',
1237
+ {
1238
+ className: 'menu-all-checked',
1239
+ },
1240
+ /*#__PURE__*/ React.createElement(
1241
+ _Checkbox,
1242
+ {
1243
+ onChange: checkedAllUser,
1244
+ checked: allUserChecked,
1245
+ disabled: disabled,
1246
+ },
1247
+ userCheckboxTitle ||
1248
+ getText(
1249
+ 'allUserAvailable',
1250
+ props === null || props === void 0 ? void 0 : props.lang,
1251
+ ),
1252
+ ),
1253
+ ),
1254
+ ),
1255
+ /*#__PURE__*/ React.createElement(
1256
+ 'div',
1257
+ {
1258
+ className: 'panel-menu-body',
1259
+ },
1260
+ /*#__PURE__*/ React.createElement(
1261
+ 'div',
1262
+ {
1263
+ className: 'panel-left',
1264
+ },
1265
+ /*#__PURE__*/ React.createElement(_Input, {
1266
+ size: 'small',
1267
+ allowClear: true,
1268
+ placeholder: getText(
1269
+ 'search',
1270
+ props === null || props === void 0 ? void 0 : props.lang,
1271
+ ),
1272
+ onChange: function onChange(e) {
1273
+ debouncedUserSearch(e.target.value);
1274
+ },
1275
+ suffix: /*#__PURE__*/ React.createElement(_Icon, {
1276
+ type: 'zoom',
1277
+ }),
1278
+ style: {
1279
+ marginBottom: 16,
1280
+ width: 'calc(100% - 16px)',
1281
+ },
1282
+ }),
1283
+ userListDomRender,
1284
+ ),
1285
+ /*#__PURE__*/ React.createElement(
1286
+ 'div',
1287
+ {
1288
+ className: 'panel-right',
1289
+ },
1290
+ /*#__PURE__*/ React.createElement(
1291
+ 'div',
1292
+ {
1293
+ className: 'select-menu-header',
1294
+ },
1295
+ getText(
1296
+ 'hasBeenSelected',
1297
+ props === null || props === void 0 ? void 0 : props.lang,
1298
+ ),
1299
+ ':',
1300
+ ' ',
1301
+ getText(
1302
+ 'numOfUser',
1303
+ props === null || props === void 0 ? void 0 : props.lang,
1304
+ areadySelectUser.length || 0,
1305
+ ),
1306
+ /*#__PURE__*/ React.createElement(
1307
+ 'a',
1308
+ {
1309
+ onClick: function onClick() {
1310
+ return onRemoveAllUser();
1311
+ },
1312
+ },
1313
+ getText('clear', props === null || props === void 0 ? void 0 : props.lang),
1314
+ ),
1315
+ ),
1316
+ /*#__PURE__*/ React.createElement(
1317
+ 'ul',
1318
+ {
1319
+ className: 'select-menu-list',
1320
+ },
1321
+ userKeys.map(function (item, index) {
1322
+ var node = userMapRef.current[item] || {};
1323
+ var userName = node.userName;
1324
+ var isOwnAppCode = accounts === node.account;
1325
+ if (!userName && !node.account) return null; // 不显示多余数据
1326
+ return /*#__PURE__*/ React.createElement(
1327
+ 'li',
1328
+ {
1329
+ key: userName + index,
1330
+ className: 'select-menu-list-item',
1331
+ },
1332
+ /*#__PURE__*/ React.createElement(
1333
+ 'span',
1334
+ {
1335
+ className: 'app-name',
1336
+ },
1337
+ /*#__PURE__*/ React.createElement(_Ellipsis, {
1338
+ title: userName,
1339
+ }),
1340
+ ),
1341
+ !isOwnAppCode &&
1342
+ /*#__PURE__*/ React.createElement(_Icon, {
1343
+ type: 'close',
1344
+ className: 'close-icon',
1345
+ onClick: function onClick() {
1346
+ return onRemoveSingleUser(node.account);
1347
+ },
1348
+ }),
1349
+ );
1350
+ }) || /*#__PURE__*/ React.createElement(_Empty, null),
1351
+ ),
1352
+ ),
1353
+ ),
1354
+ ),
1355
+ ),
1356
+ ),
1357
+ );
1358
+ };
1359
+ export default AssignModal;