cnhis-design-vue 3.0.4 → 3.0.7

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,746 @@
1
+ <template>
2
+
3
+ </template>
4
+
5
+ <script lang="ts">
6
+ import create from '@/core/create.js';
7
+ export default create({
8
+ name: "SelectPerson"
9
+ })
10
+ </script>
11
+ <script lang="ts" setup>
12
+ import { reactive, onMounted, computed, ref, nextTick } from "vue"
13
+ import { NButton, NCheckbox, NSpin, NTooltip, useMessage } from "naive-ui"
14
+ import type { TreeSelectOption } from 'naive-ui'
15
+ import vexutils from '@/utils/vexutils.js';
16
+
17
+ (window as any).$message = useMessage()
18
+
19
+ // const FIXEDKEY = '8982eeb4-0439-4100-9805-8cdd12b2256c-front-end-fixed-key';
20
+ // const props = withDefaults(defineProps<{
21
+ // visible?: boolean
22
+ // isDetail?: boolean
23
+ // defaultList?: any[]
24
+ // data?: any[]
25
+ // roleData?: any[]
26
+ // roleFields?: any
27
+ // searchPlaceholder?: string
28
+ // searchButtonText?: string
29
+ // wordbook: any
30
+ // wordbookChild?: any
31
+ // SearchLoadMore?: boolean
32
+ // showClear?: boolean
33
+ // showCount?: boolean
34
+ // selectType?: string
35
+ // isSingleCheck?: boolean
36
+ // queryMainTreeData?: Function
37
+ // queryLoadChildData?: Function
38
+ // queryTreeSearch?: Function
39
+ // }>(), {
40
+ // isDetail: false,
41
+ // defaultList: () => ([]),
42
+ // data: () => ([]),
43
+ // roleData: () => ([]),
44
+ // roleFields: () => ({ title: 'name', key: 'id', children: 'children' }),
45
+ // searchPlaceholder: '输入关键字搜索',
46
+ // searchButtonText: '搜索',
47
+ // wordbook: () => ({}),
48
+ // wordbookChild: () => ({}),
49
+ // SearchLoadMore: false,
50
+ // showClear: true,
51
+ // showCount: true,
52
+ // selectType: 'person',
53
+ // isSingleCheck: false,
54
+ // queryMainTreeData: () => Promise.resolve(),
55
+ // queryLoadChildData: () => Promise.resolve(),
56
+ // queryTreeSearch: () => Promise.resolve() // 检索请求
57
+ // })
58
+ // const searchTree = ref(null)
59
+ // const state = reactive({
60
+ // treeData: {
61
+ // main: [] as any[],
62
+ // search: [] as any[],
63
+ // dept: [],
64
+ // role: [],
65
+ // temp: [] as any[]
66
+ // },
67
+ // // 展开的keys
68
+ // expandedKeys: [] as Array<string | number>,
69
+ // // 展开的部门keys
70
+ // expandedDeptKeys: [],
71
+ // autoExpandParent: true,
72
+ // // 扁平化tree的options Object{Array[Object]}
73
+ // dataList: {
74
+ // main: [],
75
+ // other: [],
76
+ // dept: [],
77
+ // role: []
78
+ // },
79
+ // // 当前tree选中的keys Object{Array[Number]}
80
+ // checkedKeys: {
81
+ // main: [] as any[],
82
+ // other: [] as any[],
83
+ // dept: [],
84
+ // role: [],
85
+ // temp: []
86
+ // },
87
+ // search: {
88
+ // defaultExpandedKeys: [] as any[],
89
+ // // 0: 未查询,1:查询中,2:有查询结果,3无查询结果
90
+ // status: 0,
91
+ // dataListKeys: {
92
+ // main: [] as any[],
93
+ // other: [] as any[]
94
+ // },
95
+ // records: 0
96
+ // },
97
+ // searchValue: '',
98
+ // searchPage: 1,
99
+ // searchNoMore: false,
100
+ // title: '',
101
+ // // 选中的所有叶节点(Leaf)keys <Array[Number]>,最终提交接口所需格式
102
+ // checkedLeafKeys: [],
103
+ // spinning: false,
104
+ // loadMorenLoadinng: false,
105
+
106
+ // errorMsg: '',
107
+
108
+ // defaultShowList: [] as any[], // 默认选中项
109
+ // checkedKeysMain: [],
110
+
111
+ // cacheParentIdObj: {},
112
+ // singleChecked: false,
113
+ // indeterminate: false,
114
+
115
+ // searchIndeterminate: false,
116
+ // searchChecked: false,
117
+ // typeActiveIndex: 0
118
+ // })
119
+
120
+ // const emit = defineEmits(['check', 'pubCheckedTreeItem', 'handleOk', 'change', 'submitData', 'update:visible'])
121
+
122
+ // const searchTreeVisable = computed(() => state.search.status == 2)
123
+ // const dataListMainKeys = computed(() => {
124
+ // if (!state.dataList.main.length) return []
125
+ // return state.dataList.main.map((i: any) => i.key)
126
+ // })
127
+ // const dataListDeptKeys = computed(() => {
128
+ // if (!state.dataList.dept.length) return []
129
+ // return state.dataList.dept.map((i: any) => i.key)
130
+ // })
131
+ // const dataListRoleKeys = computed(() => {
132
+ // if (!state.dataList.role.length) return []
133
+ // return state.dataList.role.map((i: any) => i.key)
134
+ // })
135
+ // const dataListOtherKeys = computed(() => {
136
+ // if (!state.dataList.other.length) return []
137
+ // return state.dataList.other.map((i: any) => i.key)
138
+ // })
139
+ // // 右侧展示tabs <Array[Object]>
140
+ // const checkedTreeItem = computed(() => {
141
+ // let otherItems = state.dataList.other.filter((item: any) => {
142
+ // return state.checkedKeys.other.includes(item.key);
143
+ // });
144
+ // let mainItems = state.dataList.main.filter((item: any) => {
145
+ // let { isLeaf, key } = item;
146
+ // let parentId = getParentId(item);
147
+ // let showKeys = [...state.checkedKeys.main, ...otherItems] as any;
148
+ // let checked = showKeys.includes(key);
149
+ // // 父级全选,子级不展示
150
+ // /** String(parentId) 类型不相等 */
151
+ // if (isLeaf && parentId && state.checkedKeys.main.some(v => v == parentId)) {
152
+ // checked = false;
153
+ // }
154
+ // item.itemType = 'person';
155
+ // return checked && item.type == 2;
156
+ // });
157
+ // let deptItems = state.dataList.dept.filter((item: any) => {
158
+ // let { isLeaf, key } = item;
159
+ // let parentId = getParentId(item);
160
+ // let showKeys = [...state.checkedKeys.dept, ...otherItems] as any;
161
+ // let checked = showKeys.includes(key);
162
+ // // 父级全选,子级不展示
163
+ // /** String(parentId) 类型不相等 */
164
+ // if (isLeaf && parentId && state.checkedKeys.dept.some(v => v == parentId)) {
165
+ // checked = false;
166
+ // }
167
+ // item.itemType = 'dept';
168
+ // return checked && item.type == 1;
169
+ // });
170
+ // let roleItems = state.dataList.role.filter((item: any) => {
171
+ // let showKeys = [...state.checkedKeys.role, ...otherItems] as any[];
172
+ // let checked = showKeys.includes(item.key);
173
+ // item.itemType = 'role';
174
+ // return checked && item.roleId;
175
+ // });
176
+ // if (props.selectType === 'multiple') {
177
+ // deptItems.forEach((item: any) => {
178
+ // if (item.title) {
179
+ // item.title = item.title.includes('科室') ? item.title : `${item.title}(科室)`;
180
+ // }
181
+ // });
182
+ // roleItems.map((item: any) => {
183
+ // if (item.title) {
184
+ // item.title = item.title.includes('角色') ? item.title : `${item.title}(角色)`;
185
+ // }
186
+ // return item;
187
+ // });
188
+ // }
189
+
190
+ // let list = uniqArrObj([...mainItems, ...deptItems, ...roleItems, ...otherItems], 'key');
191
+ // return list;
192
+ // })
193
+ // const wordbookConfig = computed(() => {
194
+ // const { parent_id_obj, parent_name_obj } = props.wordbook || {};
195
+ // const { user_id_obj, user_name_obj } = props.wordbookChild || {};
196
+ // return {
197
+ // parent_id_obj,
198
+ // parent_name_obj,
199
+ // user_id_obj,
200
+ // user_name_obj
201
+ // };
202
+ // })
203
+ // const getLoadChildData = computed(() => {
204
+ // if (typeof props.queryLoadChildData == 'function') {
205
+ // return onLoadData;
206
+ // }
207
+ // return null
208
+ // })
209
+
210
+ // const initDefault = () => {
211
+ // if (getLoadChildData.value) {
212
+ // getDefaultList();
213
+ // } else {
214
+ // nextTick(() => {
215
+ // state.checkedKeys.main = [...props.defaultList];
216
+ // });
217
+ // }
218
+ // }
219
+ // /** --- 默认值 --- */
220
+ // const getDefaultList = () => {
221
+ // let copy = JSON.parse(JSON.stringify(props.defaultList));
222
+ // if (Array.isArray(copy)) {
223
+ // // this.defaultShowObj = {};
224
+
225
+ // const { user_id_obj } = props.wordbookChild || {};
226
+ // copy.forEach(v => {
227
+ // handleDefMapping(v);
228
+ // let key = getuniqKey(v);
229
+ // let pId = getParentId(v);
230
+ // state.cacheParentIdObj[pId] = pId;
231
+ // // this.defaultShowObj[key] = v[user_id_obj];
232
+ // });
233
+ // state.defaultShowList = copy;
234
+ // }
235
+ // }
236
+ // /**
237
+ // * 根据配置映射默认值
238
+ // */
239
+ // const handleDefMapping = (v: any) => {
240
+ // const { parent_id_obj, parent_name_obj, user_id_obj, user_name_obj } = wordbookConfig.value || {};
241
+ // // 自定义 key 值
242
+ // const { parent_id_obj_key, parent_name_obj_key } = props.wordbook;
243
+ // const { user_id_obj_key, user_name_obj_key } = props.wordbookChild;
244
+ // v[parent_id_obj] = v[parent_id_obj_key] || v.parent_id;
245
+ // v[parent_name_obj] = v[parent_name_obj_key] || v.parent_name;
246
+ // v[user_id_obj] = v[user_id_obj_key] || v.user_id;
247
+ // v[user_name_obj] = v[user_name_obj_key] || v.user_name;
248
+ // }
249
+ // const staticDataInit = () => {
250
+ // if (!Array.isArray(props.data) || props.data.length == 0) return;
251
+ // state.treeData.main = props.data;
252
+ // generateDataList(state.treeData.main, state.dataList.main);
253
+ // }
254
+ // const staticDeptAndRoleDataInit = () => {
255
+ // state.treeData.dept = getDeptData(props.data);
256
+ // generateDataList(state.treeData.dept, state.dataList.dept);
257
+ // state.treeData.role = handleRoleData(props.roleData);
258
+ // generateDataList(state.treeData.role, state.dataList.role);
259
+ // }
260
+ // const getDeptData = (data: any) => {
261
+ // // 把data里面的人员过滤掉
262
+ // const copyData = JSON.parse(JSON.stringify(data));
263
+ // vexutils.searchTree(copyData, (item: any) => {
264
+ // if (item.type === 1 && item.children && item.children.length) {
265
+ // item.children = item.children.filter((child: any) => child.type === 1);
266
+ // }
267
+ // });
268
+ // return copyData;
269
+ // }
270
+ // const handleRoleData = (data: any) => {
271
+ // const copyData = JSON.parse(JSON.stringify(data));
272
+ // vexutils.searchTree(copyData, (item: any) => {
273
+ // const { title, key, children } = props.roleFields;
274
+ // item.title = item[title];
275
+ // item.children = item[children] ? item[children] : [];
276
+ // item.key = item[key];
277
+ // });
278
+ // return copyData;
279
+ // }
280
+ // const getcheckedKeys = () => {
281
+ // let checkedKeysMain = [] as any[],
282
+ // checkedKeysOther = [] as any[];
283
+ // let copy = JSON.parse(JSON.stringify(props.defaultList));
284
+ // if (Array.isArray(copy)) {
285
+ // copy.forEach(v => {
286
+ // handleDefMapping(v);
287
+ // let key = getuniqKey(v);
288
+ // checkedKeysMain.push(key);
289
+ // // 回填到 检索的选择,防止回填马上检索
290
+ // if (String(key).includes(FIXEDKEY)) {
291
+ // checkedKeysOther.push(key);
292
+ // }
293
+ // });
294
+ // }
295
+ // return {
296
+ // checkedKeysMain,
297
+ // checkedKeysOther
298
+ // };
299
+ // }
300
+ // /**
301
+ // * 初始化 请求已选的数据
302
+ // */
303
+ // const loadSelected = async () => {
304
+ // try {
305
+ // let list = await Promise.all(
306
+ // state.treeData.main.map(async v => {
307
+ // const { parent_id_obj } = props.wordbook || {};
308
+ // if ([v.key, v[parent_id_obj], String(v[parent_id_obj])].includes(state.cacheParentIdObj[v[parent_id_obj]])) {
309
+ // await onLoadData(v);
310
+ // return v;
311
+ // }
312
+ // })
313
+ // );
314
+ // return list;
315
+ // } catch (error) {
316
+ // return Promise.resolve();
317
+ // }
318
+ // }
319
+ // // 动态获取子节点
320
+ // const onLoadData = (option: TreeSelectOption) => {
321
+ // return new Promise(async (resolve: Function) => {
322
+ // if (option.children) {
323
+ // resolve();
324
+ // return;
325
+ // }
326
+ // option.children = await handleLoadChildData(option.key, option);
327
+
328
+ // hanldeFilterDefaultShowList(option.children);
329
+
330
+ // nextTick(() => {
331
+ // state.treeData.main = [...state.treeData.main];
332
+ // state.treeData.temp = [...state.treeData.main];
333
+ // });
334
+
335
+ // addCheckedKeysChildrenMain(option);
336
+
337
+ // generateDataList(option.children || [], state.dataList.main);
338
+ // resolve();
339
+ // });
340
+ // }
341
+ // // 查询树结构数据(一级父类)
342
+ // const getUsers = async () => {
343
+ // try {
344
+ // if (typeof props.queryMainTreeData !== 'function') {
345
+ // return;
346
+ // }
347
+ // state.spinning = true;
348
+ // const { parent_id_obj } = wordbookConfig.value || {};
349
+ // let rows = await props.queryMainTreeData();
350
+ // let list = uniqArrObj(rows, parent_id_obj);
351
+ // state.treeData.main = list;
352
+ // generateDataList(state.treeData.main, state.dataList.main);
353
+ // // TODO:这里的回填
354
+ // await loadSelected();
355
+ // let { checkedKeysMain, checkedKeysOther } = getcheckedKeys();
356
+ // state.checkedKeys.main.push(...checkedKeysMain);
357
+ // state.checkedKeys.other = [...checkedKeysOther];
358
+
359
+ // state.treeData.main.forEach((f: any) => {
360
+ // if (f && f.children && f.children.length) {
361
+ // let flag = f.children.every((c: any) => checkedKeysMain.includes(c.key));
362
+ // if (flag && f.key) {
363
+ // state.checkedKeys.main.push(f.key);
364
+ // }
365
+ // }
366
+ // });
367
+ // state.spinning = false;
368
+ // } catch (error) {
369
+ // state.spinning = false;
370
+ // (window as any).$message.error('查询异常');
371
+ // }
372
+ // }
373
+ // const loadMainChildData = (searchResultTreeData: any[]) => {
374
+ // return new Promise(async (resolve: Function) => {
375
+ // let promises = searchResultTreeData.map(async item => {
376
+ // if (item.users) {
377
+ // let mainTreeItem = state.treeData.main.find(mainItem => mainItem.key == item.key);
378
+ // if (!mainTreeItem || (mainTreeItem && !mainTreeItem.children)) {
379
+ // if (!mainTreeItem) {
380
+ // mainTreeItem = { ...item };
381
+ // }
382
+ // mainTreeItem.children = await handleLoadChildData(item.key, mainTreeItem);
383
+ // generateDataList(mainTreeItem.children, state.dataList.main);
384
+ // addCheckedKeysChildrenMain(mainTreeItem);
385
+ // }
386
+ // }
387
+ // });
388
+
389
+ // await Promise.all(promises);
390
+
391
+ // resolve();
392
+ // });
393
+ // }
394
+ // const handleLoadChildData = async (key: string | number | undefined, option: TreeSelectOption) => {
395
+ // let rows = await props.queryLoadChildData(key, option);
396
+ // let list = rows;
397
+ // return list;
398
+ // }
399
+ // // 暂存实际可选节点arr
400
+ // const generateDataList = (data: TreeSelectOption[], dataList: any) => {
401
+ // for (let i = 0; i < data.length; i++) {
402
+ // const node = data[i];
403
+ // dataList.push({
404
+ // parentId: getParentId(node),
405
+ // ...node
406
+ // });
407
+ // if (node.children) {
408
+ // generateDataList(node.children, dataList);
409
+ // }
410
+ // }
411
+ // }
412
+ // const addCheckedKeysChildrenMain = (item: any) => {
413
+ // if (!item.key) return;
414
+ // if (!state.checkedKeys.main.includes(String(item.key))) return false;
415
+ // // 新查询到插入已选中的main treeData 的child key,需要手动push到checkedKeys中
416
+ // if (!Array.isArray(item.children)) return false;
417
+ // item.children.forEach(({ key }: { key: string | number }) => {
418
+ // // 防止重复添加(已处理,不会重复添加,保留代码以防逻辑缺漏)
419
+ // if (state.checkedKeys.main.includes(key) || !key) return false;
420
+ // state.checkedKeys.main.push(key);
421
+ // });
422
+ // }
423
+ // /**
424
+ // * 过滤默认值的右边展示
425
+ // */
426
+ // const hanldeFilterDefaultShowList = (list: any) => {
427
+ // state.defaultShowList = state.defaultShowList.filter(d => list.findIndex((l: any) => getuniqKey(d) == getuniqKey(l)) == -1);
428
+ // // this.updateDefaultShowObj(this.defaultShowList);
429
+ // }
430
+ // /**
431
+ // * 检索
432
+ // */
433
+ // const searchFetch = async (data = {}, config = {} as any) => {
434
+ // if (typeof props.queryTreeSearch !== 'function') {
435
+ // staticDataSearch();
436
+ // state.spinning = false;
437
+ // isSearchAllCheck();
438
+ // return;
439
+ // }
440
+ // if (!state.searchValue) {
441
+ // state.search.status = 0;
442
+ // state.search.defaultExpandedKeys = [];
443
+ // state.expandedKeys = [];
444
+ // state.spinning = false;
445
+ // state.searchNoMore = false;
446
+ // return false;
447
+ // }
448
+ // if (!config.loadMoren) {
449
+ // state.search.status = 1;
450
+ // } else {
451
+ // state.loadMorenLoadinng = true;
452
+ // }
453
+
454
+ // let rows = await props.queryTreeSearch(state.searchValue, data);
455
+ // let searchResultTreeData = rows;
456
+ // state.loadMorenLoadinng = false;
457
+ // if (!searchResultTreeData || !searchResultTreeData.length) {
458
+ // if (state.searchPage == 1) {
459
+ // state.search.defaultExpandedKeys = [];
460
+ // state.search.status = 3;
461
+ // } else {
462
+ // state.search.status = 2;
463
+ // state.searchNoMore = true;
464
+ // }
465
+
466
+ // state.spinning = false;
467
+ // isSearchAllCheck();
468
+ // return false;
469
+ // }
470
+
471
+ // const { parent_id_obj, parent_name_obj, user_count_obj } = props.wordbook || {};
472
+ // const { user_name_obj } = props.wordbookChild || {};
473
+ // let pObj = {};
474
+ // searchResultTreeData.forEach((item: any) => {
475
+ // item[parent_id_obj] &&
476
+ // (pObj[item[parent_id_obj]] = {
477
+ // key: item[parent_id_obj],
478
+ // users: []
479
+ // });
480
+
481
+ // if (item.users) {
482
+ // insertSearchTreeData(item);
483
+ // } else {
484
+ // insertSearchTreeDataOther(item);
485
+ // }
486
+ // });
487
+ // let pList = [] as any[];
488
+ // Object.keys(pObj || {}).forEach(v => {
489
+ // if (v) {
490
+ // pList.push({ ...pObj[v] });
491
+ // }
492
+ // });
493
+ // let len = state.treeData.search.length || 0;
494
+ // // TODO:加载更多
495
+ // if (props.SearchLoadMore) {
496
+ // state.searchNoMore = false;
497
+ // } else {
498
+ // state.searchNoMore = true;
499
+ // }
500
+ // // 防止searchTree选中后切换回mainTree,mainTree checkedKeys状态丢失
501
+ // await loadMainChildData(pList);
502
+ // generateSearchDataListKeys(searchResultTreeData);
503
+
504
+ // hanldeFilterDefaultShowList(searchResultTreeData);
505
+ // refreshSearchTree();
506
+ // state.search.status = 2;
507
+ // state.spinning = false;
508
+
509
+ // isSearchAllCheck();
510
+ // }
511
+ // const refreshSearchTree = () => {
512
+ // if (!searchTreeVisable.value) return false;
513
+ // searchTree.value.setDefaultCheckedKeys();
514
+ // nextTick(() => {
515
+ // isSearchAllCheck();
516
+ // });
517
+ // }
518
+ // const generateSearchDataListKeys = (searchResultTreeData: any[]) => {
519
+ // // this.search.dataListKeys = {
520
+ // // main: [],
521
+ // // other: []
522
+ // // };
523
+ // searchResultTreeData.forEach((item: any) => {
524
+ // if (!dataListMainKeys.value.includes(item.key)) {
525
+ // state.search.dataListKeys.other.push(item.key);
526
+ // item.children &&
527
+ // item.children.forEach((childItem: any) => {
528
+ // state.search.dataListKeys.other.push(childItem.key);
529
+ // });
530
+ // return;
531
+ // }
532
+
533
+ // state.search.dataListKeys.main.push(item.key);
534
+ // item.children &&
535
+ // item.children.forEach((childItem: any) => {
536
+ // state.search.dataListKeys.main.push(childItem.key);
537
+ // });
538
+ // });
539
+ // }
540
+ // const insertSearchTreeData = (item: any) => {
541
+ // const { user_count_obj } = props.wordbook || {};
542
+ // state.search.defaultExpandedKeys.push(item.key);
543
+
544
+ // // 默认值处理
545
+ // hanldeFilterDefaultShowList(item.children || []);
546
+
547
+ // if (item[user_count_obj] == item.children.length) {
548
+ // item.disableCheckbox = false;
549
+ // }
550
+ // state.treeData.search.push(item);
551
+ // }
552
+ // const insertSearchTreeDataOther = (item: any) => {
553
+ // let formatItem = Object.assign({}, item, { isLeaf: true });
554
+
555
+ // state.treeData.search.push(formatItem);
556
+
557
+ // if (dataListOtherKeys.value.includes(formatItem.key)) return false;
558
+ // generateDataList([formatItem], state.dataList.other);
559
+ // }
560
+ // const isSearchAllCheck = () => {
561
+ // nextTick(() => {
562
+ // let skeyArr = state.treeData.search.map((item: any) => item.key);
563
+ // let serchCheckedKeys = searchTree.value.checkedKeys;
564
+ // state.searchIndeterminate = !!serchCheckedKeys.length && serchCheckedKeys.length < skeyArr.length;
565
+ // state.searchChecked = serchCheckedKeys.length === skeyArr.length;
566
+ // });
567
+ // }
568
+ // const staticDataSearch = () => {
569
+ // // let expandedKeys = new Set();
570
+ // // this.getStaticSearchParentKey(this.treeData.main, expandedKeys);
571
+ // // this.expandedKeys = Array.from(expandedKeys);
572
+ // // this.autoExpandParent = true;
573
+ // if (!state.title) {
574
+ // // 如果为空恢复默认数据
575
+ // const key = ['main', 'dept', 'role'][state.typeActiveIndex];
576
+ // state.treeData.temp = state.treeData[key];
577
+ // return;
578
+ // }
579
+ // let copyData = JSON.parse(JSON.stringify(state.treeData.temp));
580
+ // // 增加visible属性 true展示 false不展示
581
+ // vexutils.filterTree({ value: state.title, data: copyData, prop: 'title' });
582
+ // // 过滤visible属性 为true的数据
583
+ // copyData = copyData.filter((item: any) => item.visible);
584
+ // const expandedKeys: any[] = [];
585
+ // vexutils.searchTree(copyData, (item: any) => {
586
+ // if (item.visible) {
587
+ // expandedKeys.push(item.key);
588
+ // }
589
+ // if (item.children && item.children.length) {
590
+ // item.children = item.children.filter((child: any) => child.visible);
591
+ // }
592
+ // });
593
+ // state.treeData.temp = copyData;
594
+ // state.expandedKeys = expandedKeys;
595
+ // }
596
+ // // 展开数节点
597
+ // const onExpand = (expandedKeys: Array<string | number>) => {
598
+ // // const latestOpenKey = expandedKeys.find(key => this.expandedKeys.indexOf(key) == -1);
599
+ // // this.expandedKeys = latestOpenKey ? [latestOpenKey] : [];
600
+ // // this.autoExpandParent = false;
601
+ // state.expandedKeys = expandedKeys;
602
+ // state.autoExpandParent = false;
603
+ // // this.$emit('expand', expandedKeys, ...arg)
604
+ // }
605
+ // const searchClick = () => {
606
+ // state.searchValue = state.title;
607
+
608
+ // state.treeData.search = [];
609
+ // state.search.dataListKeys.other = [];
610
+ // state.search.dataListKeys.main = [];
611
+ // state.search.defaultExpandedKeys = [];
612
+
613
+ // state.spinning = true;
614
+ // state.searchPage = 1;
615
+ // searchFetch();
616
+ // }
617
+ // const isAllCheck = (checkedKeys = [] as Array<string | number>) => {
618
+ // const key = ['main', 'dept', 'role'][state.typeActiveIndex];
619
+ // if (!checkedKeys || checkedKeys.length == 0) {
620
+ // state.indeterminate = false;
621
+ // state.singleChecked = false;
622
+ // } else {
623
+ // let keyArr = state.treeData[key].map((item: any) => item.key);
624
+ // let keyArrTemp = keyArr.filter((item: string | number) => checkedKeys.indexOf(item) !== -1);
625
+ // state.indeterminate = !(keyArr.length == keyArrTemp.length);
626
+ // state.singleChecked = keyArr.length == keyArrTemp.length;
627
+ // }
628
+ // }
629
+ // /* 子组件emit方法 */
630
+ // const addCheckedkeysMain = (keys: Array<string | number>) => {
631
+ // let checkedKeys = state.checkedKeys.main;
632
+ // let filterKey = (keys || {}).filter(Boolean);
633
+ // filterKey.forEach(key => {
634
+ // //
635
+ // checkedKeys.push(key);
636
+ // // 如果子级全选,父级也需要选中
637
+ // let _getParentKey = getParentKey(key, state.treeData.main);
638
+ // if (!_getParentKey) return;
639
+ // let parent = state.treeData.main.filter(item => {
640
+ // return item.key == _getParentKey;
641
+ // });
642
+ // let allCheck = (parent[0]?.children || []).every((item: any) => {
643
+ // return checkedKeys.includes(item.key);
644
+ // });
645
+ // allCheck && checkedKeys.push(_getParentKey);
646
+ // });
647
+ // }
648
+ // // 获取匹配搜索节点arr
649
+ // const getParentKey = (key: string | number, tree: any[]): string | number => {
650
+ // let parentKey;
651
+ // for (let i = 0; i < tree.length; i++) {
652
+ // const node = tree[i];
653
+ // if (node.key == key) {
654
+ // parentKey = node.key;
655
+ // return parentKey;
656
+ // }
657
+
658
+ // if (node.children) {
659
+ // if (node.children.some((item: any) => item.key == key)) {
660
+ // parentKey = node.key;
661
+ // } else if (getParentKey(key, node.children)) {
662
+ // parentKey = getParentKey(key, node.children);
663
+ // }
664
+ // }
665
+ // }
666
+ // return parentKey;
667
+ // }
668
+ // const radioChange = (checked: boolean) => {
669
+ // if (searchTreeVisable.value) {
670
+ // state.singleChecked = checked;
671
+ // } else {
672
+ // state.searchChecked = checked;
673
+ // }
674
+ // checkAll(checked ? 1 : 2);
675
+ // }
676
+ // // type 1 全选 2 反选(清空)
677
+ // const checkAll = (type: string | number) => {
678
+ // if (checkAllSearchTree(type)) return false;
679
+ // const key = ['main', 'dept', 'role'][state.typeActiveIndex];
680
+ // if (type == 1) {
681
+ // state.expandedKeys = [];
682
+ // state.checkedKeys[key] = this[`dataList${key.slice(0, 1).toUpperCase()}${key.slice(1)}Keys`]; // dataListMainKeys dataListDeptKeys dataListRoleKeys;
683
+ // this.checkedKeys.temp = this.checkedKeys[key];
684
+ // } else if (type == 2) {
685
+ // this.checkedKeys[key] = [];
686
+ // this.checkedKeys.temp = [];
687
+ // this.autoExpandParent = true;
688
+ // }
689
+ // }
690
+ // const checkAllSearchTree = (type: string | number) => {
691
+ // if (!this.searchTreeVisable) return false;
692
+
693
+ // if (type == 1) {
694
+ // // 全选默认不选中父级
695
+ // let allSearchkeysMain = this.search.dataListKeys.main.filter(key => {
696
+ // return !this.search.defaultExpandedKeys.includes(key);
697
+ // });
698
+
699
+ // let allSearchkeysOther = this.search.dataListKeys.other;
700
+
701
+ // this.checkedKeys.main = vexutils.uniq([...this.checkedKeys.main, ...allSearchkeysMain]);
702
+ // this.checkedKeys.other = vexutils.uniq([...this.checkedKeys.other, ...allSearchkeysOther]);
703
+
704
+ // // 如果子级全选,父级也需要选中
705
+ // this.search.dataListKeys.main.forEach(key => {
706
+ // let getParentKey = this.getParentKey(key, this.treeData.main);
707
+ // let parent = this.treeData.main.filter(item => {
708
+ // return item.key == getParentKey;
709
+ // });
710
+
711
+ // let allCheck = parent[0].children.every(item => {
712
+ // return this.checkedKeys.main.includes(item.key);
713
+ // });
714
+ // allCheck && this.checkedKeys.main.push(getParentKey);
715
+ // });
716
+ // this.refreshSearchTree();
717
+ // } else if (type == 2) {
718
+ // this.$refs['searchTree'].emptyCheckedKeys();
719
+ // this.autoExpandParent = true;
720
+ // }
721
+ // this.isSearchAllCheck();
722
+ // return true;
723
+ // }
724
+ // const getParentId = (v: any) => {
725
+ // const { parent_id_obj } = wordbookConfig.value || {};
726
+ // return `${v[parent_id_obj]}`
727
+ // }
728
+ // // 数组对象去重
729
+ // const uniqArrObj = (arr: any[], name: string) => {
730
+ // let obj = {};
731
+ // return arr.reduce((cur, next) => {
732
+ // obj[next[name]] ? '' : (obj[next[name]] = true && cur.push(next));
733
+ // return cur;
734
+ // }, []);
735
+ // }
736
+ // /**
737
+ // * 拼接key
738
+ // */
739
+ // const getuniqKey = (v: any) => {
740
+ // const { user_id_obj } = wordbookConfig.value || {};
741
+ // return `${getParentId(v)}_${v[user_id_obj]}`;
742
+ // }
743
+
744
+ // </script>
745
+ <style scoped lang="less">
746
+ </style>