cnhis-design-vue 3.3.3-beta.1 → 3.3.3-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +87 -87
  2. package/es/components/audio-sdk/src/Index.vue2.js +7 -7
  3. package/es/components/audio-sdk/src/audioSDK.js +1 -1
  4. package/es/components/audio-sdk/src/components/recording.vue2.js +16 -2
  5. package/es/components/big-table/src/components/NoData.vue2.js +8 -1
  6. package/es/components/big-table/src/hooks/useTableParse.js +8 -1
  7. package/es/components/button-print/index.d.ts +2 -1
  8. package/es/components/button-print/src/ButtonPrint.vue.d.ts +2 -1
  9. package/es/components/button-print/src/ButtonPrint.vue2.js +6 -1
  10. package/es/components/button-print/src/components/NewPrintComponent.vue.d.ts +1 -1
  11. package/es/components/button-print/src/components/NewPrintComponent.vue2.js +8 -5
  12. package/es/components/button-print/src/components/OldPrintComponent.vue2.js +4 -1
  13. package/es/components/button-print/src/utils/print.d.ts +2 -2
  14. package/es/components/button-print/src/utils/print.js +29 -20
  15. package/es/components/card-reader-sdk-cn/src/henan/index.js +8 -1
  16. package/es/components/classification/src/components/table-modal/index.vue.d.ts +0 -3
  17. package/es/components/expand-field/index.d.ts +710 -0
  18. package/es/components/expand-field/src/components/FormItemPerson.vue.d.ts +710 -0
  19. package/es/components/expand-field/src/components/PersonModal.vue.d.ts +710 -0
  20. package/es/components/expand-field/src/components/form.vue.d.ts +710 -0
  21. package/es/components/expand-field/src/components/form.vue2.js +8 -1
  22. package/es/components/expand-field/src/index.vue.d.ts +710 -0
  23. package/es/components/field-editor/src/FieldEditor.vue2.js +2 -1
  24. package/es/components/field-editor/src/fields.d.ts +1 -0
  25. package/es/components/field-editor/src/fields.js +6 -0
  26. package/es/components/field-set/src/FieldSet.vue.d.ts +31 -0
  27. package/es/components/field-set/src/FieldSet.vue2.js +112 -65
  28. package/es/components/field-set/src/Index.vue2.js +3 -2
  29. package/es/components/field-set/src/TableStyle.vue2.js +2 -2
  30. package/es/components/field-set/src/constants/index.d.ts +1 -1
  31. package/es/components/field-set/style/index.css +1 -1
  32. package/es/components/form-config/src/components/FormConfigEventSetting.vue2.js +8 -1
  33. package/es/components/form-render/src/components/renderer/formItem.js +8 -1
  34. package/es/components/form-render/src/hooks/useFormValidator.js +8 -1
  35. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +8 -1
  36. package/es/components/iho-chat/src/components/PersonProfile.vue2.js +1 -1
  37. package/es/components/iho-chat/style/index.css +1 -1
  38. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/editSelect.js +1 -1
  39. package/es/components/index.css +1 -1
  40. package/es/components/info-header/src/components/patientInfo/index.vue2.js +16 -2
  41. package/es/components/scale-view/index.d.ts +26 -15
  42. package/es/components/scale-view/src/ScaleView.vue.d.ts +26 -15
  43. package/es/components/scale-view/src/ScaleView.vue2.js +13 -7
  44. package/es/components/scale-view/src/components/AnswerParse.vue.d.ts +5 -0
  45. package/es/components/scale-view/src/components/AnswerParse.vue2.js +74 -8
  46. package/es/components/scale-view/src/components/EvaluateCountdown.vue.d.ts +10 -7
  47. package/es/components/scale-view/src/components/EvaluateCountdown.vue2.js +28 -4
  48. package/es/components/scale-view/src/components/EvaluatePage.vue.d.ts +10 -7
  49. package/es/components/scale-view/src/components/EvaluatePage.vue2.js +29 -8
  50. package/es/components/scale-view/src/components/NoData.vue2.js +9 -3
  51. package/es/components/scale-view/src/components/ScaleScore.d.ts +1 -1
  52. package/es/components/scale-view/src/components/ScaleScore.js +47 -4
  53. package/es/components/scale-view/src/components/formitem/r-checkbox.js +20 -2
  54. package/es/components/scale-view/src/components/formitem/r-radio.js +2 -0
  55. package/es/components/scale-view/src/components/formitem/r-sign.js +32 -4
  56. package/es/components/scale-view/src/components/formitem/r-upload.js +65 -7
  57. package/es/components/scale-view/src/components/formitem/sign-com.js +8 -1
  58. package/es/components/scale-view/src/hooks/scaleview-computed.js +20 -5
  59. package/es/components/scale-view/src/hooks/scaleview-init.js +24 -3
  60. package/es/components/scale-view/src/hooks/scaleview-methods.js +40 -5
  61. package/es/components/scale-view/src/hooks/scaleview-submit.js +64 -8
  62. package/es/components/scale-view/src/hooks/scaleview-validate.d.ts +1 -1
  63. package/es/components/scale-view/src/hooks/scaleview-validate.js +157 -24
  64. package/es/components/scale-view/src/hooks/use-evaluate.js +16 -2
  65. package/es/components/scale-view/src/hooks/use-noData.js +33 -5
  66. package/es/components/scale-view/style/index.css +1 -1
  67. package/es/components/select-person/index.d.ts +710 -0
  68. package/es/components/select-person/src/SelectPerson.vue.d.ts +356 -344
  69. package/es/components/select-person/src/SelectPerson.vue2.js +512 -678
  70. package/es/components/select-person/src/SelectPersonRole.vue.d.ts +630 -0
  71. package/es/components/select-person/src/SelectPersonRole.vue.js +6 -0
  72. package/es/components/select-person/src/SelectPersonRole.vue2.js +942 -0
  73. package/es/components/select-person/src/SelectPersonTest.vue.d.ts +555 -0
  74. package/es/components/select-person/src/components/SearchGroupList.vue.d.ts +132 -0
  75. package/es/components/select-person/src/components/SearchGroupList.vue.js +6 -0
  76. package/es/components/select-person/src/components/SearchGroupList.vue2.js +116 -0
  77. package/es/components/select-person/src/components/SearchMultiple.vue2.js +1 -1
  78. package/es/components/select-person/src/components/SearchOrgAndStaff.vue2.js +21 -12
  79. package/es/components/select-person/src/components/TagItem.vue.d.ts +43 -0
  80. package/es/components/select-person/src/components/TagItem.vue.js +6 -0
  81. package/es/components/select-person/src/components/TagItem.vue2.js +40 -0
  82. package/es/components/select-person/src/index.vue.d.ts +710 -0
  83. package/es/components/select-person/src/index.vue2.js +19 -2
  84. package/es/components/select-person/src/types/index.d.ts +35 -0
  85. package/es/components/select-person/src/types/index.js +1 -0
  86. package/es/components/select-person/src/utils/index.d.ts +1 -0
  87. package/es/components/select-person/src/utils/index.js +6 -8
  88. package/es/components/select-person/style/index.css +1 -1
  89. package/es/components/vod-chunk-upload/index.d.ts +3 -0
  90. package/es/components/vod-chunk-upload/src/chunk-upload-new.vue.d.ts +1 -29
  91. package/es/components/vod-chunk-upload/src/chunk-upload-new.vue2.js +109 -11
  92. package/es/components/vod-chunk-upload/src/hooks/upload-computed.js +15 -1
  93. package/es/components/vod-chunk-upload/src/hooks/upload-data.js +72 -9
  94. package/es/components/vod-chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue.d.ts +3 -0
  95. package/es/components/vod-chunk-upload/src/vod-chunk-upload/vod-chunk-upload.vue2.js +75 -9
  96. package/es/env.d.ts +25 -25
  97. package/es/shared/hooks/selectHooks/useSearchContent.js +1 -1
  98. package/es/shared/package.json.js +1 -1
  99. package/package.json +2 -2
@@ -1,26 +1,27 @@
1
- import { defineComponent, inject, ref, computed, reactive, watch, openBlock, createBlock, unref, withCtx, createVNode, createElementVNode, createCommentVNode, renderSlot, withKeys, createTextVNode, toDisplayString, createElementBlock, Fragment, renderList, withDirectives, vShow, mergeProps, normalizeStyle } from 'vue';
2
- import { NGrid, NGi, NSpace, NInputGroup, NInput, NIcon, NButton, NTag, NCheckbox, NEmpty, NTree } from 'naive-ui';
3
- import { CloseCircleSharp } from '@vicons/ionicons5';
4
- import { searchFilterTree, getExpandedKeys } from './utils/index.js';
5
- import { cloneDeep, union, remove } from 'lodash-es';
6
- import { SelectItemTypesConfig, SelectRoleEnumsConfig, SearchTypeConfig } from './types/enums.js';
7
- import SearchMultiple from './components/SearchMultiple.vue.js';
8
- import SearchOrgAndStaff from './components/SearchOrgAndStaff.vue.js';
1
+ import { defineComponent, inject, ref, shallowRef, computed, watch, openBlock, createBlock, unref, withCtx, createVNode, createElementVNode, normalizeStyle, createCommentVNode, renderSlot, withKeys, createTextVNode, toDisplayString, withDirectives, vShow, createElementBlock, mergeProps, Fragment, renderList, normalizeProps, guardReactiveProps } from 'vue';
2
+ import { useMessage, NGrid, NGi, NInputGroup, NInput, NButton, NCheckbox, NTree, NSpace, NPopover } from 'naive-ui';
3
+ import { searchBasisTree } from './utils/index.js';
4
+ import { union, remove } from 'lodash-es';
5
+ import SearchGroupList from './components/SearchGroupList.vue.js';
6
+ import TagItem from './components/TagItem.vue.js';
7
+ import DefaultPage from '../../default-page/index.js';
9
8
  import { InjectionSelectPersonEmits } from './constants/index.js';
10
9
 
11
10
  const _hoisted_1 = {
12
11
  class: "search-box"
13
12
  };
14
13
  const _hoisted_2 = {
15
- key: 0,
16
- class: "select-type-tags"
14
+ key: 2,
15
+ class: "c-select-person__hide"
17
16
  };
18
17
  const _hoisted_3 = {
19
- key: 4,
20
- class: "tree-content"
18
+ key: 0
21
19
  };
22
20
  const _hoisted_4 = {
23
- key: 0
21
+ class: "c-select-person__containerRight"
22
+ };
23
+ const _hoisted_5 = {
24
+ class: "c-select-person__popover"
24
25
  };
25
26
  var _sfc_main = /* @__PURE__ */ defineComponent({
26
27
  __name: "SelectPerson",
@@ -95,22 +96,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
95
96
  type: Function,
96
97
  default: () => Promise.resolve([])
97
98
  },
98
- showSelectType: {
99
- type: Boolean,
100
- default: false
101
- },
102
- roleData: {
103
- type: Array,
104
- default: () => []
105
- },
106
- roleFields: {
107
- type: Object,
108
- default: () => ({
109
- label: "name",
110
- key: "id",
111
- children: "children"
112
- })
113
- },
114
99
  forceShowSelectAll: {
115
100
  type: Boolean
116
101
  },
@@ -119,532 +104,348 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
119
104
  },
120
105
  onlyForwardCascade: {
121
106
  type: Boolean
107
+ },
108
+ height: {
109
+ type: String
110
+ },
111
+ hideLeaf: {
112
+ type: Boolean,
113
+ default: false
114
+ },
115
+ itemKey: {
116
+ type: Function,
117
+ default: void 0
118
+ },
119
+ showTagHover: {
120
+ type: Boolean,
121
+ default: false
122
122
  }
123
123
  },
124
124
  setup(__props, {
125
125
  expose
126
126
  }) {
127
127
  const props = __props;
128
- const searchFilterBase = {
129
- isOpen: false,
130
- multiple: false,
131
- customTitles: [function() {
132
- var _a, _b, _c;
133
- try {
134
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.510")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.510")) || "\u8054\u7CFB\u4EBA";
135
- } catch (e) {
136
- return "\u8054\u7CFB\u4EBA";
137
- }
138
- }(), function() {
139
- var _a, _b, _c;
140
- try {
141
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.511")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.511")) || "\u90E8\u95E8";
142
- } catch (e) {
143
- return "\u90E8\u95E8";
144
- }
145
- }()],
146
- itemHeight: 250
147
- };
148
- const labelList = [{
149
- key: "main",
150
- label: function() {
151
- var _a, _b, _c;
152
- try {
153
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.512")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.512")) || "\u9009\u4EBA\u5458";
154
- } catch (e) {
155
- return "\u9009\u4EBA\u5458";
156
- }
157
- }()
158
- }, {
159
- key: "dept",
160
- label: function() {
161
- var _a, _b, _c;
162
- try {
163
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.513")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.513")) || "\u9009\u79D1\u5BA4";
164
- } catch (e) {
165
- return "\u9009\u79D1\u5BA4";
166
- }
167
- }()
168
- }, {
169
- key: "role",
170
- label: function() {
171
- var _a, _b, _c;
172
- try {
173
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.514")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.514")) || "\u9009\u89D2\u8272";
174
- } catch (e) {
175
- return "\u9009\u89D2\u8272";
176
- }
177
- }()
178
- }];
179
- const labelListName = {
180
- dept: function() {
181
- var _a, _b, _c;
182
- try {
183
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.202")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.202")) || "\u79D1\u5BA4";
184
- } catch (e) {
185
- return "\u79D1\u5BA4";
186
- }
187
- }(),
188
- role: function() {
189
- var _a, _b, _c;
190
- try {
191
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.515")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.515")) || "\u89D2\u8272";
192
- } catch (e) {
193
- return "\u89D2\u8272";
194
- }
195
- }()
196
- };
128
+ const $message = useMessage();
197
129
  const emit = inject(InjectionSelectPersonEmits);
198
130
  const keyword = ref("");
199
131
  const checkedAll = ref(false);
200
132
  const checkedKeys = ref([]);
201
133
  const expandedKeys = ref([]);
202
- const treeData = ref([]);
203
- const tagData = ref([]);
204
- const initTagData = ref([]);
134
+ const treeData = shallowRef([]);
135
+ const treeAsyncData = ref([]);
136
+ const searchTreeData = shallowRef([]);
137
+ const searchData = shallowRef([]);
138
+ const treeMap = /* @__PURE__ */ new Map();
205
139
  const isSearch = ref(false);
206
- const allCheckedTreeKeys = ref([]);
140
+ const remoteDefaultList = ref([]);
207
141
  const isRemote = computed(() => props.queryLoadChildData ? true : false);
208
142
  const checkStrategyResult = computed(() => {
209
143
  var _a, _b;
210
144
  return (_b = (_a = props == null ? void 0 : props.treeSetting) == null ? void 0 : _a.checkStrategy) != null ? _b : "child";
211
145
  });
212
146
  const isSearchFilter = computed(() => (props == null ? void 0 : props.searchFilter) && Object.keys(props == null ? void 0 : props.searchFilter).length > 0);
213
- const curSelectKey = ref("main");
214
- const mergeSearchFilter = computed(() => {
215
- if (isSearchFilter.value) {
216
- return {
217
- ...cloneDeep(searchFilterBase),
218
- ...props.searchFilter
219
- };
220
- }
221
- return cloneDeep(searchFilterBase);
147
+ const isShowGroupList = computed(() => {
148
+ const isInnerMultiple = (props == null ? void 0 : props.searchInner) && (props == null ? void 0 : props.multiple);
149
+ return checkStrategyResult.value === "parent" && (isSearchFilter.value || isInnerMultiple);
222
150
  });
223
- const wordbookChildExpandkeys = computed(() => {
224
- var _a, _b;
225
- return (_b = (_a = props == null ? void 0 : props.wordbookChild) == null ? void 0 : _a.user_expand_keys) != null ? _b : [];
226
- });
227
- const styleObject = computed(() => {
228
- return {
229
- height: props.multiple ? "342px" : "308px"
230
- };
151
+ const showType = computed(() => {
152
+ const isInnerMultiple = (props == null ? void 0 : props.searchInner) && (props == null ? void 0 : props.multiple);
153
+ return isSearchFilter.value ? "searchGroup" : isInnerMultiple ? "searchChild" : "";
231
154
  });
232
155
  const caculateTagData = computed(() => {
233
- if (props.showSelectType) {
234
- const mainItems = checkedTagsMiddle.main.filter((item) => {
235
- item.itemType = SelectItemTypesConfig.PERSON;
236
- if (!props.uncheckableField)
237
- return item[attrType.value] == SelectRoleEnumsConfig.STAFF;
238
- return item[attrType.value] == SelectRoleEnumsConfig.STAFF && !item[props.uncheckableField];
239
- });
240
- const deptItems = checkedTagsMiddle.dept.filter((item) => {
241
- item.itemType = SelectItemTypesConfig.DEPT;
242
- if (!props.uncheckableField)
243
- return item[attrType.value] == SelectRoleEnumsConfig.DEPT;
244
- return item[attrType.value] == SelectRoleEnumsConfig.DEPT && !item[props.uncheckableField];
245
- });
246
- const roleItems = checkedTagsMiddle.role.filter((item) => {
247
- item.itemType = SelectItemTypesConfig.ROLE;
248
- if (!props.uncheckableField)
249
- return item;
250
- return !item[props.uncheckableField];
251
- });
252
- return uniqArrObj([...mainItems, ...deptItems, ...roleItems], "key");
156
+ const re = checkedKeys.value.map((key) => {
157
+ return treeMap.get(key);
158
+ }).filter((tag) => !props.uncheckableField || props.uncheckableField && !tag.originItem[props.uncheckableField]);
159
+ if (isRemote.value) {
160
+ return [...remoteDefaultList.value, ...re];
253
161
  }
254
- let lasetTagData = [];
255
- checkedKeys.value.forEach((key) => {
256
- for (let i = 0, len = tagData.value.length; i < len; i++) {
257
- const tag = tagData.value[i];
258
- if (tag.key == key) {
259
- if (!props.uncheckableField || props.uncheckableField && !tag.originItem[props.uncheckableField])
260
- lasetTagData.push(tag);
261
- break;
262
- }
263
- }
264
- });
265
- return lasetTagData;
266
- });
267
- const treeDataMiddle = reactive({
268
- main: [],
269
- dept: [],
270
- role: [],
271
- temp: []
272
- });
273
- const checkedKeysMiddle = reactive({
274
- main: [],
275
- dept: [],
276
- role: []
277
- });
278
- const checkedTagsMiddle = reactive({
279
- main: [],
280
- dept: [],
281
- role: []
162
+ return re;
282
163
  });
283
- const allCheckedKeysMiddle = reactive({
284
- main: [],
285
- dept: [],
286
- role: []
164
+ const renderTreeData = computed(() => {
165
+ if (isRemote.value)
166
+ return treeAsyncData.value;
167
+ if (isSearch.value && !isShowGroupList.value)
168
+ return searchTreeData.value;
169
+ return treeData.value;
287
170
  });
288
- const attrType = computed(() => {
171
+ function initTreeData() {
289
172
  var _a;
290
- return ((_a = props.wordbook) == null ? void 0 : _a.type) || "type";
291
- });
292
- const keyStr = computed(() => props.wordbookChild.user_id_obj || props.wordbook.parent_id_obj || Date.now());
293
- function getTreeDataMiddleData() {
294
- const tempData = cloneDeep(transformData(props.data));
295
- treeDataMiddle.main = treeDataMiddle.temp = tempData;
296
- getMainData(treeDataMiddle.temp, null, (tree) => {
297
- allCheckedKeysMiddle.main.push(tree.key);
298
- });
299
- allCheckedTreeKeys.value = allCheckedKeysMiddle.main;
300
- treeDataMiddle.dept = getDeptData(cloneDeep(tempData), (tree) => {
301
- allCheckedKeysMiddle.dept.push(tree.key);
302
- });
303
- treeDataMiddle.role = getRoleData(cloneDeep(props.roleData), (tree) => {
304
- allCheckedKeysMiddle.role.push(tree.key);
305
- });
306
- }
307
- function getDeptData(list, cb) {
308
- return list.filter((item) => {
309
- var _a;
310
- if (props.showSelectType && ((_a = item.children) == null ? void 0 : _a.length)) {
311
- item.children = getDeptData(item.children, cb);
312
- }
313
- const isFilter = item[attrType.value] == SelectRoleEnumsConfig.DEPT;
314
- if (isFilter) {
315
- setAllCheckedKeys(item, cb);
316
- }
317
- return isFilter;
318
- });
319
- }
320
- function getRoleData(list, cb) {
173
+ treeMap.clear();
321
174
  const {
322
- label,
323
- key,
324
- children = "children"
325
- } = props.roleFields;
326
- return list.map((item) => {
327
- var _a;
328
- item.key = item[key];
329
- item.label = item.title = item[label];
330
- if ((_a = item[children]) == null ? void 0 : _a.length) {
331
- item.children = getRoleData(item[children], cb);
332
- }
333
- setAllCheckedKeys(item, cb);
334
- return item;
175
+ itemKey,
176
+ hideLeaf
177
+ } = props;
178
+ const tempData = transformData(props.data, null, {
179
+ enter(node) {
180
+ node.key = itemKey ? itemKey(node.originItem) : node.key;
181
+ treeMap.set(node.key, node);
182
+ },
183
+ leave: hideLeaf ? (node) => {
184
+ var _a2;
185
+ if (!node.leaf && ((_a2 = node.children) == null ? void 0 : _a2.length)) {
186
+ const children = node.children.filter((val) => !val.leaf);
187
+ node.children = children.length ? children : void 0;
188
+ }
189
+ } : void 0
335
190
  });
336
- }
337
- function onHandleLabelChange(item) {
338
- curSelectKey.value = item.key;
339
- treeData.value = treeDataMiddle.temp = treeDataMiddle[item.key];
340
- checkedKeys.value = checkedKeysMiddle[item.key];
341
- allCheckedTreeKeys.value = allCheckedKeysMiddle[item.key];
342
- }
343
- function setSelectTagData(tree, operatorType) {
344
- var _a, _b;
345
- const keyName = ["main", "dept"].includes(operatorType) ? keyStr.value : (_a = props.roleFields) == null ? void 0 : _a.key;
346
- for (let i = 0, len = tree.length; i < len; i++) {
347
- const item = tree[i];
348
- const initTagKeys = initTagData.value.map((tag) => tag.key);
349
- checkedKeysMiddle[operatorType].includes(item.key) && !initTagKeys.includes(item.key) && checkedTagsMiddle[operatorType].push({
350
- ...item,
351
- key: item[keyName]
191
+ isRemote.value ? treeAsyncData.value = tempData.treeItems : treeData.value = tempData.treeItems;
192
+ if (isRemote.value) {
193
+ remoteDefaultList.value = (_a = props == null ? void 0 : props.defaultList) == null ? void 0 : _a.map((tag) => {
194
+ return {
195
+ ...tag,
196
+ label: tag.name
197
+ };
352
198
  });
353
- ((_b = item.children) == null ? void 0 : _b.length) && setSelectTagData(item.children, operatorType);
354
- }
355
- }
356
- function uniqArrObj(arr, name) {
357
- let obj = {};
358
- return arr.reduce((cur, next) => {
359
- obj[next[name]] ? "" : obj[next[name]] = cur.push(next);
360
- return cur;
361
- }, []);
362
- }
363
- function init() {
364
- getTreeDataMiddleData();
365
- treeData.value = treeDataMiddle.temp;
366
- if (props.defaultList.length > 0) {
367
- if (isRemote.value) {
368
- props.defaultList.forEach((key) => checkedKeys.value.push(key.key));
369
- tagData.value = cloneDeep(props.defaultList);
370
- initTagData.value = cloneDeep(props.defaultList);
371
- } else {
372
- if (props.showSelectType) {
373
- const curType = curSelectKey.value;
374
- props.defaultList.forEach((tag) => {
375
- if (tag["itemType"] === SelectItemTypesConfig.PERSON) {
376
- checkedKeysMiddle.main.push(tag[keyStr.value]);
377
- checkedTagsMiddle.main.push(tag);
378
- }
379
- if (tag["itemType"] === SelectItemTypesConfig.DEPT) {
380
- checkedKeysMiddle.dept.push(tag[keyStr.value]);
381
- checkedTagsMiddle.dept.push(tag);
382
- }
383
- if (tag["itemType"] === SelectItemTypesConfig.ROLE) {
384
- checkedKeysMiddle.role.push(tag[props.roleFields.key]);
385
- checkedTagsMiddle.role.push(tag);
386
- }
387
- });
388
- checkedKeys.value = checkedKeysMiddle[curType];
389
- return;
390
- }
391
- props.defaultList.forEach((key) => checkedKeys.value.push(key));
392
- setTagData(treeDataMiddle.temp);
393
- }
394
- }
395
- }
396
- function getMainData(tree, parentNode, cb) {
397
- var _a, _b;
398
- for (let i = 0, len = tree.length; i < len; i++) {
399
- const item = tree[i];
400
- let title_expand_strs = wordbookChildExpandkeys.value.reduce((acc, current) => {
401
- const currentValue = item[current] ? `${item[current]}\uFF0C` : "";
402
- return acc + currentValue;
403
- }, "");
404
- item.title_expand_strs = title_expand_strs.slice(0, -1);
405
- item.title = getLabelName(item);
406
- item.label = getLabelName(item);
407
- item.parentNode = parentNode;
408
- if (!item.key)
409
- item.key = item[props.wordbookChild.user_id_obj] || item[props.wordbook.parent_id_obj] || Date.now();
410
- if ((_a = item.children) == null ? void 0 : _a.length) {
411
- getMainData(item.children, item, cb);
412
- setDisabled(item);
413
- } else if (((_b = item.children) == null ? void 0 : _b.length) === 0) {
414
- Reflect.deleteProperty(item, "children");
415
- }
416
- setAllCheckedKeys(item, cb);
417
- }
418
- }
419
- function setAllCheckedKeys(tree, cb) {
420
- var _a, _b;
421
- const checkStrategy = (_b = (_a = props == null ? void 0 : props.treeSetting) == null ? void 0 : _a.checkStrategy) != null ? _b : "child";
422
- switch (checkStrategy) {
423
- case "child":
424
- setAllCheckedKeysWithChild(tree, cb);
425
- break;
426
- case "parent":
427
- setAllCheckedKeysWithParent(tree, cb);
428
- break;
429
- case "all":
430
- setAllCheckedKeysWithAll(tree, cb);
431
- break;
432
- }
433
- }
434
- function setAllCheckedKeysWithChild(item, cb) {
435
- if (!item.disabled && !item.children && item.key) {
436
- cb && cb(item);
437
- }
438
- }
439
- function setAllCheckedKeysWithParent(item, cb) {
440
- if (!item.disabled && !item.tempTitle && item.key) {
441
- cb && cb(item);
442
- }
443
- }
444
- function setAllCheckedKeysWithAll(item, cb) {
445
- if (!item.disabled && item.key) {
446
- cb && cb(item);
447
199
  }
200
+ checkedKeys.value = props.defaultList.filter((k) => treeMap.has(k));
448
201
  }
449
202
  async function queryLoadChildNode(node) {
203
+ var _a;
450
204
  if (props.queryLoadChildData) {
205
+ const {
206
+ itemKey,
207
+ hideLeaf
208
+ } = props;
451
209
  const curNode = await props.queryLoadChildData(node);
452
- if (curNode.children) {
453
- curNode.children = curNode.children.map((childNode) => {
454
- return {
455
- ...childNode,
456
- tempTitle: curNode.tempTitle ? `${curNode.title}/${curNode.tempTitle}` : curNode.title
457
- };
210
+ if ((_a = curNode == null ? void 0 : curNode.children) == null ? void 0 : _a.length) {
211
+ const tempData = transformData(curNode.children, curNode, {
212
+ enter(node2) {
213
+ node2.key = itemKey ? itemKey(node2.originItem) : node2.key;
214
+ treeMap.set(node2.key, node2);
215
+ },
216
+ leave: hideLeaf ? (node2) => {
217
+ var _a2;
218
+ if (!node2.leaf && ((_a2 = node2.children) == null ? void 0 : _a2.length)) {
219
+ const children = node2.children.filter((val) => !val.leaf);
220
+ node2.children = children.length ? children : void 0;
221
+ }
222
+ } : void 0
458
223
  });
224
+ curNode.children = tempData.treeItems;
459
225
  }
460
226
  return curNode;
461
227
  }
462
228
  return node;
463
229
  }
464
- function setDisabled(data) {
465
- var _a;
466
- const isDisabled = (_a = data.children) == null ? void 0 : _a.every((item) => item.disabled);
467
- if (isDisabled)
468
- data.disabled = true;
469
- }
470
230
  function renderLabel({
471
231
  option
472
232
  }) {
473
233
  var _a, _b;
474
- if (((_a = option.children) == null ? void 0 : _a.length) || isRemote.value && !(option == null ? void 0 : option.isLeaf)) {
475
- const count = props.wordbook.user_count_obj ? option[props.wordbook.user_count_obj] || "" : "";
476
- const countText = count ? `(${count})` : "";
477
- const labelStr = `${option.title}${countText}`;
234
+ if (((_a = option.children) == null ? void 0 : _a.length) || isRemote.value && !(option == null ? void 0 : option.leaf)) {
235
+ const countText = option.count ? `(${option.count})` : "";
236
+ const labelStr = `${option.label}${countText}`;
478
237
  return createVNode("span", {
479
238
  "title": labelStr
480
239
  }, [labelStr]);
481
240
  } else {
482
- const title_expand_strs = (_b = option.title_expand_strs) != null ? _b : "";
241
+ const labelExpand = (_b = option.labelExpand) != null ? _b : "";
483
242
  return createVNode("p", {
484
243
  "class": "user_item"
485
244
  }, [createVNode("span", {
486
- "title": option.title
487
- }, [option.title]), createVNode("span", {
245
+ "title": option.label
246
+ }, [option.label]), createVNode("span", {
488
247
  "class": "user_item_expand",
489
- "title": title_expand_strs
490
- }, [title_expand_strs])]);
491
- }
492
- }
493
- function getLabelName(option) {
494
- return option[props.wordbookChild.user_name_obj] || option[props.wordbook.parent_name_obj] || option["orgName"] || option["title"] || "";
495
- }
496
- function transformData(trees) {
497
- var _a;
498
- for (let index = 0, len = trees.length; index < len; index++) {
499
- const tree = trees[index];
500
- const childrenKey = props.wordbook.children || "children";
501
- if ((_a = tree[childrenKey]) == null ? void 0 : _a.length) {
502
- const items = calculateRootItems(tree[childrenKey], []);
503
- tree.innerItemsNum = items.length;
504
- tree.innerLeafs = items;
505
- tree.children = transformData(tree[childrenKey]);
506
- }
248
+ "title": labelExpand
249
+ }, [labelExpand])]);
507
250
  }
508
- if (!props.showSelectType)
509
- return transformParentNodeName(trees, "");
510
- return trees;
511
251
  }
512
- function calculateRootItems(trees, items) {
513
- var _a;
514
- for (let index = 0, len = trees.length; index < len; index++) {
515
- const tree = trees[index];
516
- if ((_a = tree.children) == null ? void 0 : _a.length) {
517
- calculateRootItems(tree.children, items);
252
+ function transformData(trees, parentNode, visitor) {
253
+ const {
254
+ children: childrenKey = "children",
255
+ parent_id_obj = "key",
256
+ parent_name_obj = "label",
257
+ user_count_obj = "count",
258
+ empty_enable
259
+ } = props.wordbook;
260
+ const {
261
+ user_id_obj,
262
+ user_name_obj,
263
+ leaf_field,
264
+ leaf_value,
265
+ user_expand_keys
266
+ } = props.wordbookChild;
267
+ let leafCount = 0;
268
+ let innerItems = [];
269
+ const {
270
+ label: parentLabel = "",
271
+ parentName = "",
272
+ disabled,
273
+ key: parentKey
274
+ } = parentNode || {};
275
+ const {
276
+ enter,
277
+ leave
278
+ } = visitor || {};
279
+ const treeItems = trees.map((item) => {
280
+ const children = item[childrenKey];
281
+ const isLeaf = item.isLeaf !== void 0 ? item.isLeaf : leaf_field && leaf_value ? item[leaf_field] === leaf_value : !Array.isArray(children) || (children == null ? void 0 : children.length) === 0;
282
+ const tree = {
283
+ key: item[parent_id_obj] || item[user_id_obj] || (item == null ? void 0 : item.key),
284
+ label: item[parent_name_obj] || item[user_name_obj] || (item == null ? void 0 : item.title),
285
+ name: item[parent_name_obj] || item[user_name_obj] || (item == null ? void 0 : item.title),
286
+ count: item[user_count_obj],
287
+ labelExpand: "",
288
+ parentKey,
289
+ parentName: parentLabel + (parentName ? parentLabel ? `/${parentName}` : parentName : ""),
290
+ innerItemsNum: 0,
291
+ innerChildren: [],
292
+ children: void 0,
293
+ originItem: item,
294
+ leaf: isLeaf,
295
+ disabled: disabled || item.disabled
296
+ };
297
+ if (isRemote.value)
298
+ tree.isLeaf = isLeaf;
299
+ enter && enter(tree);
300
+ if (isLeaf) {
301
+ if (Array.isArray(user_expand_keys)) {
302
+ tree.labelExpand = user_expand_keys.reduce((acc, key) => {
303
+ const str = item[key];
304
+ return str ? acc ? `${acc}\uFF0C${str}` : str : acc;
305
+ }, "");
306
+ }
307
+ if (!tree.disabled) {
308
+ leafCount++;
309
+ innerItems.push(tree);
310
+ }
518
311
  } else {
519
- !tree.disabled && items.push(tree);
312
+ if (children == null ? void 0 : children.length) {
313
+ const childData = transformData(children, tree, visitor);
314
+ if (childData.treeItems.length) {
315
+ tree.children = childData.treeItems;
316
+ }
317
+ tree.innerItemsNum += childData.leafCount;
318
+ tree.innerChildren = [...childData.innerItems, ...tree.innerChildren];
319
+ leafCount += tree.innerItemsNum;
320
+ innerItems = [...innerItems, ...tree.innerChildren];
321
+ }
322
+ if (!empty_enable && tree.innerItemsNum == 0 && !isRemote.value)
323
+ tree.disabled = true;
520
324
  }
521
- }
522
- return items;
523
- }
524
- function transformParentNodeName(trees, tempContent) {
525
- if (!trees || trees.length === 0)
526
- return [];
527
- return trees.map((tree) => {
528
- var _a;
529
- const tempName = getLabelName(tree);
530
- const tempTitle = tempContent ? `${tempName}/${tempContent}` : tempName;
531
- return {
532
- ...tree,
533
- tempTitle: tempContent,
534
- children: ((_a = tree.children) == null ? void 0 : _a.length) ? transformParentNodeName(tree == null ? void 0 : tree.children, tempTitle) : []
535
- };
325
+ leave && leave(tree);
326
+ return tree;
536
327
  });
537
- }
538
- function searchSetting() {
539
- const settings = {
540
- [SearchTypeConfig.SEARCH_ORG_STAFF]: isSearchFilter.value,
541
- [SearchTypeConfig.SEARCH_ORG]: props.searchInner
328
+ return {
329
+ treeItems,
330
+ leafCount,
331
+ innerItems
542
332
  };
543
- const result = Object.keys(settings).find((attr) => settings[attr]);
544
- return result != null ? result : "";
545
333
  }
546
334
  async function onSearch() {
547
- var _a, _b;
335
+ var _a, _b, _c, _d;
548
336
  const filterKey = (_b = (_a = props == null ? void 0 : props.wordbook) == null ? void 0 : _a.filter_key) != null ? _b : "keyword";
549
- isSearch.value = !!keyword.value.trim();
550
- if (!isRemote.value) {
551
- const curAttr = searchSetting();
552
- treeData.value = searchFilterTree(curAttr, treeDataMiddle.temp, keyword.value, filterKey);
553
- } else {
554
- treeData.value = await props.queryTreeSearch(keyword.value);
555
- }
556
- expandedKeys.value = treeData.value.length && keyword.value ? getExpandedKeys(treeData.value) : [];
557
- }
558
- function setTreeCheckd(tree, checked) {
559
- switch (checkStrategyResult.value) {
560
- case "child":
561
- setCheckdWithChild(tree, checked);
562
- break;
563
- case "parent":
564
- setCheckdWithParent(tree, checked);
565
- break;
566
- case "all":
567
- setCheckdWithAll(tree, checked);
568
- break;
337
+ const kw = keyword.value.trim();
338
+ isSearch.value = !!kw;
339
+ if (!kw) {
340
+ searchData.value = [];
341
+ return;
569
342
  }
570
- }
571
- function setCheckdWithChild(tree, checked) {
572
- for (let i = 0, len = tree.length; i < len; i++) {
573
- const item = tree[i];
574
- if (!item.disabled && (!item.children || item.isLeaf)) {
575
- if (checked && !checkedKeys.value.includes(item.key)) {
576
- checkedKeys.value.push(item.key);
343
+ function flatFilter(nodes) {
344
+ var _a2, _b2;
345
+ const result = [];
346
+ const stack = [...nodes];
347
+ while (stack.length) {
348
+ const node = stack.pop();
349
+ if (node.disabled)
350
+ continue;
351
+ const label = (_a2 = node.label) != null ? _a2 : "";
352
+ const labelExpand = (_b2 = node.labelExpand) != null ? _b2 : "";
353
+ const originItem = node.originItem;
354
+ const match = label.includes(kw) || labelExpand.includes(kw) || originItem && originItem[filterKey] && String(originItem[filterKey]).includes(kw);
355
+ if (match) {
356
+ result.push({
357
+ ...node,
358
+ children: void 0
359
+ });
577
360
  }
578
- if (!checked) {
579
- const keyIndex = checkedKeys.value.findIndex((key) => key === item.key);
580
- checkedKeys.value.splice(keyIndex, 1);
361
+ if (node.children && node.children.length > 0) {
362
+ stack.push(...node.children);
581
363
  }
582
364
  }
583
- item.children && setTreeCheckd(item.children, checked);
365
+ return result;
366
+ }
367
+ if (!isRemote.value) {
368
+ if (isSearch.value && !isShowGroupList.value) {
369
+ const filterKey2 = (_d = (_c = props == null ? void 0 : props.wordbook) == null ? void 0 : _c.filter_key) != null ? _d : "keyword";
370
+ const data = searchBasisTree(treeData.value, kw, filterKey2);
371
+ searchTreeData.value = data;
372
+ return;
373
+ }
374
+ const flatResult = flatFilter(treeData.value);
375
+ const parentList = [];
376
+ const childList = [];
377
+ flatResult.forEach((item) => item.leaf ? childList.push(item) : parentList.push(item));
378
+ const searchFilter = {
379
+ ...props.searchFilter
380
+ };
381
+ const customTitles = searchFilter.customTitles || [""];
382
+ const values = [childList, parentList];
383
+ searchData.value = customTitles.map((title, i) => ({
384
+ title,
385
+ data: values[i] || []
386
+ })).filter((val) => val.data.length);
387
+ } else {
388
+ const {
389
+ itemKey,
390
+ hideLeaf
391
+ } = props;
392
+ const data = await props.queryTreeSearch(keyword.value);
393
+ const tempData = transformData(data || [], null, {
394
+ enter(node) {
395
+ node.key = itemKey ? itemKey(node.originItem) : node.key;
396
+ treeMap.set(node.key, node);
397
+ },
398
+ leave: hideLeaf ? (node) => {
399
+ var _a2;
400
+ if (!node.leaf && ((_a2 = node.children) == null ? void 0 : _a2.length)) {
401
+ const children = node.children.filter((val) => !val.leaf);
402
+ node.children = children.length ? children : void 0;
403
+ }
404
+ } : void 0
405
+ });
406
+ treeAsyncData.value = tempData.treeItems;
584
407
  }
585
408
  }
586
- function setCheckdWithParent(tree, checked) {
587
- checkedKeys.value = [];
409
+ function getAllKeys(tree, strategy) {
410
+ const keys = [];
411
+ const recursion = strategy != "parent";
588
412
  for (let i = 0, len = tree.length; i < len; i++) {
589
413
  const item = tree[i];
590
- if (!item.disabled && !item.tempTitle) {
591
- if (checked && !checkedKeys.value.includes(item.key)) {
592
- checkedKeys.value.push(item.key);
414
+ if (!item.disabled && item.key) {
415
+ if (!recursion || strategy == "all" || !item.children) {
416
+ keys.push(item.key);
593
417
  }
594
- if (!checked) {
595
- const keyIndex = checkedKeys.value.findIndex((key) => key === item.key);
596
- checkedKeys.value.splice(keyIndex, 1);
418
+ if (recursion && item.children) {
419
+ keys.push(...getAllKeys(item.children, strategy));
597
420
  }
598
421
  }
599
422
  }
423
+ return keys;
600
424
  }
601
- function setCheckdWithAll(tree, checked) {
425
+ function getParentKeys(node, map) {
602
426
  var _a;
603
- let newKeys = checkedKeys.value;
604
- for (let i = 0, len = tree.length; i < len; i++) {
605
- const item = tree[i];
606
- if (!item.disabled) {
607
- if (checked) {
608
- newKeys = union(newKeys, [item.key]);
609
- } else {
610
- remove(newKeys, (key) => [item.key].includes(key));
611
- }
612
- }
613
- if ((_a = item.children) == null ? void 0 : _a.length) {
614
- const flattenKeys = getFlattenKeys(item.children);
615
- if (checked) {
616
- newKeys = union(newKeys, flattenKeys);
617
- } else {
618
- remove(newKeys, (key) => flattenKeys.includes(key));
619
- }
620
- }
427
+ const parents = [];
428
+ let parentKey = node.parentKey;
429
+ while (parentKey) {
430
+ parents.push(parentKey);
431
+ parentKey = (_a = map.get(parentKey)) == null ? void 0 : _a.parentKey;
621
432
  }
622
- if (props.showSelectType) {
623
- const curType = curSelectKey.value;
624
- checkedKeys.value = checkedKeysMiddle[curType] = newKeys;
625
- return;
626
- } else {
627
- checkedKeys.value = newKeys;
433
+ return parents;
434
+ }
435
+ function getTopLevelCheckedKey(node, checked, map) {
436
+ const parent = map.get(node.parentKey);
437
+ if (parent) {
438
+ checked.add(node.key);
439
+ const children = parent.children || [];
440
+ const result = children.every((item) => item.disabled ? true : checked.has(item.key));
441
+ if (result) {
442
+ return getTopLevelCheckedKey(parent, checked, map);
443
+ }
628
444
  }
445
+ return node.key;
629
446
  }
630
447
  function checkedAllChange(checked) {
631
- setTreeCheckd(treeData.value, checked);
632
- }
633
- function setTagData(tree) {
634
- var _a;
635
- for (let i = 0, len = tree.length; i < len; i++) {
636
- const item = tree[i];
637
- const initTagKeys = initTagData.value.map((tag) => tag.key);
638
- checkedKeys.value.includes(item.key) && !initTagKeys.includes(item.key) && tagData.value.push({
639
- key: item.key,
640
- name: item.title,
641
- parentName: item.tempTitle,
642
- innerItemsNum: item.innerItemsNum,
643
- innerLeafs: item.innerLeafs,
644
- originItem: item
645
- });
646
- ((_a = item.children) == null ? void 0 : _a.length) && setTagData(item.children);
647
- }
448
+ checkedKeys.value = checked ? getAllKeys(treeData.value, checkStrategyResult.value) : [];
648
449
  }
649
450
  function getFlattenKeys(tree) {
650
451
  const arr = [];
@@ -677,105 +478,154 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
677
478
  }
678
479
  }
679
480
  }
680
- if (props.showSelectType) {
681
- const curType = curSelectKey.value;
682
- checkedKeys.value = checkedKeysMiddle[curType] = newKeys;
683
- return;
684
- } else {
685
- checkedKeys.value = newKeys;
686
- }
687
- }
688
- function setCheckedAll() {
689
- if (props.showSelectType) {
690
- checkedAll.value = allCheckedTreeKeys.value.every((key) => checkedKeys.value.findIndex((checkedKey) => checkedKey === key) > -1);
691
- return;
481
+ checkedKeys.value = newKeys;
482
+ if (!keys.length) {
483
+ checkedAll.value = false;
692
484
  }
693
- checkedAll.value = allCheckedTreeKeys.value.every((key) => tagData.value.findIndex((tag) => tag.key === key) > -1);
694
485
  }
695
486
  function clearAll() {
696
- Object.keys(checkedKeysMiddle).forEach((key) => {
697
- checkedKeysMiddle[key] = checkedTagsMiddle[key] = [];
698
- });
487
+ checkedAll.value = false;
699
488
  checkedKeys.value = [];
489
+ remoteDefaultList.value = [];
700
490
  }
701
- function closeTag(tag) {
702
- if (props.showSelectType) {
703
- const tagType = tag.itemType === SelectItemTypesConfig.PERSON ? "main" : tag.itemType;
704
- checkedKeysMiddle[tagType] = checkedKeysMiddle[tagType].filter((key) => key !== tag.key);
705
- checkedTagsMiddle[tagType] = initTagData.value.filter((tag2) => checkedKeysMiddle[tagType].includes(tag2.key));
706
- setSelectTagData(treeDataMiddle[tagType], tagType);
707
- if (curSelectKey.value == tagType)
708
- checkedKeys.value = checkedKeysMiddle[tagType];
491
+ function updateChecked(key, checked) {
492
+ if (isRemote.value) {
493
+ remoteDefaultList.value = remoteDefaultList.value.filter((item) => item.key !== key);
494
+ }
495
+ const node = treeMap.get(key);
496
+ if (!node)
709
497
  return;
498
+ if (!props.multiple) {
499
+ return updateTreeChecked(checked ? [key] : [], void 0, {
500
+ node,
501
+ action: checked ? "check" : "uncheck"
502
+ });
710
503
  }
711
- checkedKeys.value = checkedKeys.value.filter((key) => key !== tag.key);
712
- }
713
- function notifyCheck(keys) {
714
- checkedKeys.value = keys;
715
- }
716
- function notifySearchClear() {
717
- keyword.value = "";
718
- setTimeout(() => {
719
- onSearch();
504
+ const keys = checkedKeys.value;
505
+ const map = new Set(keys);
506
+ if (checked) {
507
+ const targetKey = getTopLevelCheckedKey(node, new Set(keys), treeMap);
508
+ const allKeys = getAllKeys([treeMap.get(targetKey)], "all");
509
+ if (checkStrategyResult.value === "all") {
510
+ allKeys.forEach((k) => map.add(k));
511
+ } else {
512
+ allKeys.forEach((k) => map.delete(k));
513
+ if (checkStrategyResult.value === "child") {
514
+ getAllKeys([treeMap.get(targetKey)], "child").forEach((k) => map.add(k));
515
+ } else {
516
+ map.add(targetKey);
517
+ }
518
+ }
519
+ } else {
520
+ getParentKeys(node, treeMap).forEach((k) => map.delete(k));
521
+ getAllKeys([treeMap.get(key)], "all").forEach((k) => map.delete(k));
522
+ }
523
+ updateTreeChecked(Array.from(map), void 0, {
524
+ node,
525
+ action: checked ? "check" : "uncheck"
720
526
  });
721
527
  }
722
- function getCheckWithLevel() {
723
- var _a;
724
- if (props.showSelectType) {
725
- return (_a = caculateTagData.value) != null ? _a : [];
528
+ function notifyCheck(key, isChecked = true) {
529
+ const node = treeMap.get(key);
530
+ if (!node)
531
+ return;
532
+ if (!isChecked) {
533
+ updateChecked(key, isChecked);
534
+ return;
726
535
  }
727
- const keys = checkedKeys.value;
728
- const checkResult = tagData.value.filter((tree) => {
729
- if (!props.uncheckableField)
730
- return keys.includes(tree.key);
731
- return keys.includes(tree.key) && !tree.originItem[props.uncheckableField];
732
- });
733
- return checkResult != null ? checkResult : [];
536
+ const has = checkedKeys.value.includes(key);
537
+ if (has) {
538
+ $message.info(`${node.label}\u5DF2\u88AB\u9009\u62E9`);
539
+ return;
540
+ }
541
+ if (node.disabled) {
542
+ $message.info(`${node.label}\u5DF2\u88AB\u7981\u7528`);
543
+ return;
544
+ }
545
+ const hasParent = props.multiple && getParentKeys(node, treeMap).find((key2) => checkedKeys.value.includes(key2));
546
+ if (hasParent) {
547
+ $message.info(`${node.label}\u5DF2\u5B58\u5728\u4E8E${treeMap.get(hasParent).label}\u4E2D`);
548
+ return;
549
+ }
550
+ if (!props.multiple) {
551
+ keyword.value = "";
552
+ checkSearchClear("");
553
+ }
554
+ updateChecked(key, isChecked);
555
+ }
556
+ function checkSearchClear(kw) {
557
+ if (!kw) {
558
+ isSearch.value = false;
559
+ }
560
+ }
561
+ function getCheckWithLevel(strategy, hideLeaf) {
562
+ const getCheckedKeys = (map2, strategy2) => {
563
+ const visited = /* @__PURE__ */ new Set();
564
+ const checked = new Set(checkedKeys.value);
565
+ const result = [];
566
+ checkedKeys.value.forEach((k) => {
567
+ const node = !visited.has(k) && map2.get(k);
568
+ if (node) {
569
+ const key = getTopLevelCheckedKey(node, checked, map2);
570
+ const target = !visited.has(key) && map2.get(key);
571
+ visited.add(key);
572
+ if (target)
573
+ result.push(...getAllKeys([target], strategy2));
574
+ }
575
+ });
576
+ return result;
577
+ };
578
+ const createMap = (hideLeaf2) => {
579
+ const itemKey = props.itemKey;
580
+ const result = /* @__PURE__ */ new Map();
581
+ transformData(props.data, null, {
582
+ enter(node) {
583
+ node.key = itemKey ? itemKey(node.originItem) : node.key;
584
+ result.set(node.key, node);
585
+ },
586
+ leave: hideLeaf2 ? (node) => {
587
+ var _a;
588
+ if (!node.leaf && ((_a = node.children) == null ? void 0 : _a.length)) {
589
+ const children = node.children.filter((val) => !val.leaf);
590
+ node.children = children.length ? children : void 0;
591
+ }
592
+ } : void 0
593
+ });
594
+ return result;
595
+ };
596
+ strategy = strategy || checkStrategyResult.value;
597
+ hideLeaf = hideLeaf != null ? hideLeaf : props.hideLeaf;
598
+ const same = hideLeaf === props.hideLeaf && strategy === checkStrategyResult.value;
599
+ const map = same ? treeMap : createMap(hideLeaf);
600
+ const keys = same ? checkedKeys.value : getCheckedKeys(map, strategy);
601
+ return keys.map((k) => {
602
+ const node = map.get(k);
603
+ const parent = node.parentKey ? map.get(node.parentKey) : void 0;
604
+ return {
605
+ ...node,
606
+ parentNode: parent
607
+ };
608
+ }).filter((tag) => !props.uncheckableField || props.uncheckableField && !tag.originItem[props.uncheckableField]);
734
609
  }
735
610
  function resetParams() {
736
611
  keyword.value = "";
737
612
  checkedAll.value = isSearch.value = false;
738
613
  checkedKeys.value = [];
739
614
  expandedKeys.value = [];
740
- treeData.value = [];
741
- tagData.value = [];
742
- initTagData.value = [];
743
- allCheckedTreeKeys.value = [];
615
+ treeData.value = treeAsyncData.value = [];
744
616
  }
745
617
  watch(() => props.data, (value) => {
746
618
  resetParams();
747
- init();
619
+ initTreeData();
748
620
  }, {
749
621
  immediate: true
750
622
  });
751
623
  watch(() => checkedKeys, (value) => {
752
- if (props.showSelectType) {
753
- const curType = curSelectKey.value;
754
- checkedTagsMiddle[curType] = initTagData.value.filter((tag) => value.value.includes(tag.key));
755
- setSelectTagData(treeDataMiddle[curType], curType);
756
- setCheckedAll();
757
- const checkTagKeys = caculateTagData.value.map((tag) => tag.key);
758
- emit("check", checkTagKeys);
759
- emit("checkWithLevel", caculateTagData.value);
760
- return;
761
- }
762
- tagData.value = initTagData.value.filter((tag) => value.value.includes(tag.key));
763
- setTagData(isRemote.value ? treeData.value : treeDataMiddle.temp);
764
- const checkResult = tagData.value.filter((tree) => {
765
- if (!props.uncheckableField)
766
- return value.value.includes(tree.key);
767
- return value.value.includes(tree.key) && !tree.originItem[props.uncheckableField];
768
- });
769
624
  emit("check", value.value);
770
- emit("checkWithLevel", checkResult);
625
+ emit("checkWithLevel", caculateTagData.value);
771
626
  }, {
772
627
  deep: true
773
628
  });
774
- watch(() => keyword.value, (searchValue) => {
775
- if (!searchValue) {
776
- notifySearchClear();
777
- }
778
- });
779
629
  expose({
780
630
  getCheckWithLevel
781
631
  });
@@ -785,78 +635,69 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
785
635
  class: "c-select-person"
786
636
  }, {
787
637
  default: withCtx(() => [createVNode(unref(NGi), null, {
788
- default: withCtx(() => [createVNode(unref(NSpace), {
789
- vertical: "",
790
- style: {
791
- "padding-right": "12px",
792
- "border-right": "1px solid #e8e8e8"
793
- }
794
- }, {
795
- default: withCtx(() => [createElementVNode("div", _hoisted_1, [createCommentVNode(" \u641C\u7D22\u5DE6\u4FA7\u8FC7\u6EE4\u7B5B\u9009\u63D2\u69FD "), renderSlot(_ctx.$slots, "filter"), createVNode(unref(NInputGroup), null, {
796
- default: withCtx(() => [createCommentVNode(" clearable "), createVNode(unref(NInput), {
797
- class: "search-input",
798
- value: keyword.value,
799
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => keyword.value = $event),
800
- placeholder: __props.searchPlaceholder,
801
- onKeyup: withKeys(onSearch, ["enter"])
802
- }, {
803
- suffix: withCtx(() => [keyword.value ? (openBlock(), createBlock(unref(NIcon), {
804
- key: 0,
805
- class: "search-clear",
806
- component: unref(CloseCircleSharp),
807
- size: "16",
808
- onClick: notifySearchClear
809
- }, null, 8, ["component"])) : createCommentVNode("v-if", true)]),
810
- _: 1
811
- }, 8, ["value", "placeholder", "onKeyup"]), createVNode(unref(NButton), {
812
- type: "primary",
813
- onClick: onSearch
814
- }, {
815
- default: withCtx(() => [createTextVNode(toDisplayString(__props.searchButtonText), 1)]),
816
- _: 1
817
- })]),
818
- _: 1
819
- })]), __props.showSelectType ? (openBlock(), createElementBlock("div", _hoisted_2, [(openBlock(), createElementBlock(Fragment, null, renderList(labelList, (item) => {
820
- return createVNode(unref(NTag), {
821
- round: "",
822
- checkable: "",
823
- checked: curSelectKey.value === item.key,
824
- key: item.key,
825
- "onUpdate:checked": ($event) => onHandleLabelChange(item)
826
- }, {
827
- default: withCtx(() => [createTextVNode(toDisplayString(item.label), 1)]),
828
- _: 2
829
- }, 1032, ["checked", "onUpdate:checked"]);
830
- }), 64))])) : createCommentVNode("v-if", true), __props.multiple && !isSearch.value ? withDirectives((openBlock(), createBlock(unref(NCheckbox), {
831
- key: 1,
832
- checked: checkedAll.value,
833
- "onUpdate:checked": [_cache[1] || (_cache[1] = ($event) => checkedAll.value = $event), checkedAllChange]
638
+ default: withCtx(() => [createElementVNode("div", {
639
+ class: "c-select-person__container",
640
+ style: normalizeStyle(`padding-right: 12px;border-right: 1px solid #e8e8e8;height: ${__props.height}`)
641
+ }, [createElementVNode("div", _hoisted_1, [createCommentVNode(" \u641C\u7D22\u5DE6\u4FA7\u8FC7\u6EE4\u7B5B\u9009\u63D2\u69FD "), renderSlot(_ctx.$slots, "filter"), createVNode(unref(NInputGroup), null, {
642
+ default: withCtx(() => [createVNode(unref(NInput), {
643
+ class: "search-input",
644
+ clearable: "",
645
+ value: keyword.value,
646
+ "onUpdate:value": [_cache[0] || (_cache[0] = ($event) => keyword.value = $event), checkSearchClear],
647
+ placeholder: __props.searchPlaceholder,
648
+ onKeyup: withKeys(onSearch, ["enter"])
649
+ }, null, 8, ["value", "placeholder", "onKeyup"]), createVNode(unref(NButton), {
650
+ type: "primary",
651
+ onClick: onSearch
834
652
  }, {
835
- default: withCtx(() => [createTextVNode(function() {
836
- var _a, _b, _c;
837
- try {
838
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.37")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.37")) || "\u5168\u9009";
839
- } catch (e) {
840
- return "\u5168\u9009";
841
- }
842
- }())]),
653
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.searchButtonText), 1)]),
843
654
  _: 1
844
- }, 8, ["checked"])), [[vShow, __props.forceShowSelectAll || allCheckedTreeKeys.value.length < 1e3]]) : createCommentVNode("v-if", true), createCommentVNode(" \u652F\u6301\u9009\u4EBA "), __props.searchInner && __props.multiple && isSearch.value && unref(checkStrategyResult) === "parent" ? (openBlock(), createBlock(SearchMultiple, {
845
- key: 2,
846
- treeData: treeData.value,
847
- checkedKeys: checkedKeys.value,
848
- onNotifyCheck: notifyCheck
849
- }, null, 8, ["treeData", "checkedKeys"])) : unref(isSearchFilter) && isSearch.value && unref(checkStrategyResult) === "parent" ? (openBlock(), createElementBlock(Fragment, {
850
- key: 3
851
- }, [createCommentVNode(" \u540C\u65F6\u517C\u5BB9\u9009\u4EBA\u548C\u9009\u90E8\u95E8 "), createCommentVNode(` v-else-if="isSearchFilter && multiple && isSearch && checkStrategyResult === 'parent'" `), createVNode(SearchOrgAndStaff, {
852
- treeData: treeData.value,
853
- checkedKeys: checkedKeys.value,
854
- searchFilter: unref(mergeSearchFilter),
855
- isMultiple: __props.multiple,
856
- onNotifyCheck: notifyCheck,
857
- onNotifyClear: notifySearchClear
858
- }, null, 8, ["treeData", "checkedKeys", "searchFilter", "isMultiple"])], 2112)) : (openBlock(), createElementBlock("div", _hoisted_3, [treeData.value.length === 0 ? (openBlock(), createBlock(unref(NEmpty), {
859
- key: 0,
655
+ })]),
656
+ _: 1
657
+ })]), __props.multiple && !isSearch.value && unref(treeData).length > 0 ? withDirectives((openBlock(), createBlock(unref(NCheckbox), {
658
+ key: 0,
659
+ checked: checkedAll.value,
660
+ "onUpdate:checked": [_cache[1] || (_cache[1] = ($event) => checkedAll.value = $event), checkedAllChange]
661
+ }, {
662
+ default: withCtx(() => [createTextVNode(function() {
663
+ var _a, _b, _c;
664
+ try {
665
+ return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.37")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.37")) || "\u5168\u9009";
666
+ } catch (e) {
667
+ return "\u5168\u9009";
668
+ }
669
+ }())]),
670
+ _: 1
671
+ }, 8, ["checked"])), [[vShow, __props.forceShowSelectAll]]) : createCommentVNode("v-if", true), createCommentVNode(" \u540C\u65F6\u517C\u5BB9\u9009\u4EBA\u548C\u9009\u90E8\u95E8 "), isSearch.value && unref(isShowGroupList) ? (openBlock(), createBlock(SearchGroupList, {
672
+ key: 1,
673
+ class: "c-select-person__hide",
674
+ type: unref(showType),
675
+ data: unref(searchData),
676
+ onChecked: notifyCheck
677
+ }, null, 8, ["type", "data"])) : (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(NTree), mergeProps({
678
+ "expanded-keys": expandedKeys.value,
679
+ "onUpdate:expanded-keys": _cache[2] || (_cache[2] = ($event) => expandedKeys.value = $event),
680
+ "selected-keys": checkedKeys.value,
681
+ "onUpdate:selected-keys": _cache[3] || (_cache[3] = ($event) => checkedKeys.value = $event),
682
+ style: {
683
+ "height": "100%"
684
+ },
685
+ "checked-keys": checkedKeys.value,
686
+ checkable: __props.multiple,
687
+ selectable: !__props.multiple,
688
+ data: unref(renderTreeData),
689
+ "render-label": renderLabel,
690
+ "virtual-scroll": "",
691
+ cascade: !__props.onlyForwardCascade,
692
+ "allow-checking-not-loaded": "",
693
+ "check-strategy": "child"
694
+ }, __props.treeSetting, {
695
+ class: "c-select-person__scroll",
696
+ "onUpdate:checkedKeys": updateTreeChecked,
697
+ onLoad: queryLoadChildNode
698
+ }), {
699
+ empty: withCtx(() => [createVNode(unref(DefaultPage), {
700
+ type: "16",
860
701
  description: function() {
861
702
  var _a, _b, _c;
862
703
  try {
@@ -865,72 +706,65 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
865
706
  return "\u6682\u65E0\u6570\u636E";
866
707
  }
867
708
  }()
868
- })) : (openBlock(), createBlock(unref(NTree), mergeProps({
869
- key: 1,
870
- "virtual-scroll": "",
871
- class: "c-select-person__scroll",
872
- "checked-keys": checkedKeys.value,
873
- "expanded-keys": expandedKeys.value,
874
- "onUpdate:expanded-keys": _cache[2] || (_cache[2] = ($event) => expandedKeys.value = $event),
875
- checkable: __props.multiple,
876
- cascade: !__props.onlyForwardCascade,
877
- "allow-checking-not-loaded": "",
878
- selectable: !__props.multiple,
879
- "selected-keys": checkedKeys.value,
880
- "onUpdate:selected-keys": _cache[3] || (_cache[3] = ($event) => checkedKeys.value = $event),
881
- data: treeData.value,
882
- "check-strategy": "child",
883
- "render-label": renderLabel
884
- }, __props.treeSetting, {
885
- "onUpdate:checkedKeys": updateTreeChecked,
886
- onLoad: queryLoadChildNode
887
- }), null, 16, ["checked-keys", "expanded-keys", "checkable", "cascade", "selectable", "selected-keys", "data"]))]))]),
888
- _: 3
889
- })]),
709
+ })]),
710
+ _: 1
711
+ }, 16, ["expanded-keys", "selected-keys", "checked-keys", "checkable", "selectable", "data", "cascade"])]))], 4)]),
890
712
  _: 3
891
713
  }), createVNode(unref(NGi), null, {
892
- default: withCtx(() => [createVNode(unref(NSpace), {
893
- vertical: "",
714
+ default: withCtx(() => [createElementVNode("div", {
715
+ class: "c-select-person__container",
716
+ style: normalizeStyle(`padding-left: 12px;height:${__props.height}`)
717
+ }, [createVNode(unref(NSpace), {
718
+ justify: "space-between",
894
719
  style: {
895
- "padding-left": "12px"
720
+ "margin-bottom": "20px"
896
721
  }
897
722
  }, {
898
- default: withCtx(() => [createVNode(unref(NSpace), {
899
- justify: "space-between",
900
- style: {
901
- "margin-bottom": "20px"
723
+ default: withCtx(() => [__props.showCount ? (openBlock(), createElementBlock("span", _hoisted_3, "\u5DF2\u9009\u62E9\uFF1A" + toDisplayString(unref(caculateTagData).length), 1)) : createCommentVNode("v-if", true), __props.showClear ? (openBlock(), createElementBlock("span", {
724
+ key: 1,
725
+ class: "c-select-person__clear-btn",
726
+ onClick: clearAll
727
+ }, function() {
728
+ var _a, _b, _c;
729
+ try {
730
+ return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.509")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.509")) || "\u6E05\u7A7A";
731
+ } catch (e) {
732
+ return "\u6E05\u7A7A";
902
733
  }
734
+ }())) : createCommentVNode("v-if", true)]),
735
+ _: 1
736
+ }), createElementVNode("div", _hoisted_4, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(caculateTagData), (tag) => {
737
+ return openBlock(), createElementBlock(Fragment, {
738
+ key: tag.key
739
+ }, [__props.showTagHover && tag.innerItemsNum > 0 ? (openBlock(), createBlock(unref(NPopover), {
740
+ key: 0,
741
+ trigger: "hover"
903
742
  }, {
904
- default: withCtx(() => [__props.showCount ? (openBlock(), createElementBlock("span", _hoisted_4, "\u5DF2\u9009\u62E9\uFF1A" + toDisplayString(unref(caculateTagData).length), 1)) : createCommentVNode("v-if", true), __props.showClear ? (openBlock(), createElementBlock("span", {
905
- key: 1,
906
- class: "c-select-person__clear-btn",
907
- onClick: clearAll
908
- }, function() {
909
- var _a, _b, _c;
910
- try {
911
- return ((_a = window.getLanguageByCode) == null ? void 0 : _a.call(window, "10010.1.509")) || ((_c = (_b = window.top) == null ? void 0 : _b.getLanguageByCode) == null ? void 0 : _c.call(_b, "10010.1.509")) || "\u6E05\u7A7A";
912
- } catch (e) {
913
- return "\u6E05\u7A7A";
914
- }
915
- }())) : createCommentVNode("v-if", true)]),
916
- _: 1
917
- }), createElementVNode("div", {
918
- class: "c-select-person__scroll",
919
- style: normalizeStyle(unref(styleObject))
920
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(caculateTagData), (tag) => {
921
- return openBlock(), createElementBlock("span", {
922
- class: "c-select-person__tag-item",
923
- key: tag.key
924
- }, [createCommentVNode(" \u6807\u7B7E\u63D2\u69FD "), renderSlot(_ctx.$slots, "tag", {
925
- tag
926
- }, () => [createTextVNode(toDisplayString(tag.name) + " " + toDisplayString(tag.parentName ? `(${tag.parentName})` : "") + " " + toDisplayString(tag.innerItemsNum ? `(${tag.innerItemsNum}\u4EBA)` : "") + " " + toDisplayString(__props.showSelectType && labelListName[tag.itemType] ? `(${labelListName[tag.itemType]})` : ""), 1)]), createVNode(unref(NIcon), {
927
- class: "tag-close",
928
- component: unref(CloseCircleSharp),
929
- onClick: ($event) => closeTag(tag)
930
- }, null, 8, ["component", "onClick"])]);
931
- }), 128))], 4)]),
932
- _: 3
933
- })]),
743
+ trigger: withCtx(() => [createVNode(TagItem, {
744
+ tag,
745
+ onUnchecked: updateChecked
746
+ }, {
747
+ tag: withCtx((filterProps) => [renderSlot(_ctx.$slots, "tag", normalizeProps(guardReactiveProps(filterProps)))]),
748
+ _: 2
749
+ }, 1032, ["tag"])]),
750
+ default: withCtx(() => [createElementVNode("div", _hoisted_5, [(openBlock(true), createElementBlock(Fragment, null, renderList(tag.innerChildren, (childTag) => {
751
+ return openBlock(), createBlock(TagItem, {
752
+ key: childTag.key,
753
+ tag: childTag,
754
+ showClose: false,
755
+ onUnchecked: updateChecked
756
+ }, null, 8, ["tag"]);
757
+ }), 128))])]),
758
+ _: 2
759
+ }, 1024)) : (openBlock(), createBlock(TagItem, {
760
+ key: 1,
761
+ tag,
762
+ onUnchecked: updateChecked
763
+ }, {
764
+ tag: withCtx((filterProps) => [renderSlot(_ctx.$slots, "tag", normalizeProps(guardReactiveProps(filterProps)))]),
765
+ _: 2
766
+ }, 1032, ["tag"]))], 64);
767
+ }), 128))])], 4)]),
934
768
  _: 3
935
769
  })]),
936
770
  _: 3