bm-admin-ui 1.0.40-alpha → 1.0.41-alpha

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 (117) hide show
  1. package/es/components/breadcrumb/index.d.ts +162 -0
  2. package/es/components/breadcrumb/index.js +158 -0
  3. package/es/components/breadcrumb/src/breadcrumb.vue.d.ts +161 -0
  4. package/es/components/button/index.d.ts +303 -1
  5. package/es/components/editor/index.d.ts +305 -0
  6. package/es/components/editor/index.js +12543 -0
  7. package/es/components/editor/src/editor.vue.d.ts +304 -0
  8. package/es/components/editor/src/props.d.ts +31 -0
  9. package/es/components/feedback/index.d.ts +1028 -2
  10. package/es/components/float-table/index.d.ts +68 -1
  11. package/es/components/flow-designer/index.d.ts +5 -1
  12. package/es/components/form-create/index.js +77 -156
  13. package/es/components/form-designer/index.js +33 -131
  14. package/es/components/index.d.ts +2 -0
  15. package/es/components/index.js +2 -0
  16. package/es/components/input-tags-display/index.d.ts +138 -1
  17. package/es/components/input-tags-display/src/input-tags-display.vue.d.ts +1 -1
  18. package/es/components/over-tooltips/index.d.ts +33 -1
  19. package/es/components/search-filter/index.d.ts +233 -1
  20. package/es/components/search-filter/src/search-filter.vue.d.ts +3 -3
  21. package/es/components/select-all/index.d.ts +752 -1
  22. package/es/components/select-all/src/selectAll.vue.d.ts +5 -5
  23. package/es/components/shops-filter/index.d.ts +97 -1
  24. package/es/components/shops-filter/src/shops-filter.vue.d.ts +1 -1
  25. package/es/components/staffs-selector/index.d.ts +1095 -1
  26. package/es/components/staffs-selector/index.js +535 -505
  27. package/es/components/staffs-selector/src/action.d.ts +66 -0
  28. package/es/components/staffs-selector/src/multipleCmp.vue.d.ts +11 -49
  29. package/es/components/staffs-selector/src/staffs-selector.vue.d.ts +998 -10
  30. package/es/components/staffs-selector/src/variedCmp.vue.d.ts +18 -11
  31. package/es/components/timeline/index.d.ts +111 -2
  32. package/es/components/upload/index.d.ts +139 -2
  33. package/es/components/upload/index.js +207 -170
  34. package/es/components/upload/src/props.d.ts +50 -0
  35. package/es/components/upload/src/upload.vue.d.ts +44 -11
  36. package/es/utils/bm-admin-ui-resolver.d.ts +1 -3
  37. package/es/utils/bm-admin-ui-resolver.js +1 -1
  38. package/es/utils/with-install.d.ts +7 -1
  39. package/es/utils/with-install.js +1 -0
  40. package/index.esm.js +81188 -71499
  41. package/index.js +81186 -71495
  42. package/lib/components/breadcrumb/index.d.ts +162 -0
  43. package/lib/components/breadcrumb/index.js +168 -0
  44. package/lib/components/breadcrumb/src/breadcrumb.vue.d.ts +161 -0
  45. package/lib/components/button/index.d.ts +303 -1
  46. package/lib/components/editor/index.d.ts +305 -0
  47. package/lib/components/editor/index.js +12548 -0
  48. package/lib/components/editor/src/editor.vue.d.ts +304 -0
  49. package/lib/components/editor/src/props.d.ts +31 -0
  50. package/lib/components/feedback/index.d.ts +1028 -2
  51. package/lib/components/float-table/index.d.ts +68 -1
  52. package/lib/components/flow-designer/index.d.ts +5 -1
  53. package/lib/components/form-create/index.js +76 -155
  54. package/lib/components/form-designer/index.js +32 -130
  55. package/lib/components/index.d.ts +2 -0
  56. package/lib/components/index.js +14 -0
  57. package/lib/components/input-tags-display/index.d.ts +138 -1
  58. package/lib/components/input-tags-display/src/input-tags-display.vue.d.ts +1 -1
  59. package/lib/components/over-tooltips/index.d.ts +33 -1
  60. package/lib/components/search-filter/index.d.ts +233 -1
  61. package/lib/components/search-filter/src/search-filter.vue.d.ts +3 -3
  62. package/lib/components/select-all/index.d.ts +752 -1
  63. package/lib/components/select-all/src/selectAll.vue.d.ts +5 -5
  64. package/lib/components/shops-filter/index.d.ts +97 -1
  65. package/lib/components/shops-filter/src/shops-filter.vue.d.ts +1 -1
  66. package/lib/components/staffs-selector/index.d.ts +1095 -1
  67. package/lib/components/staffs-selector/index.js +536 -506
  68. package/lib/components/staffs-selector/src/action.d.ts +66 -0
  69. package/lib/components/staffs-selector/src/multipleCmp.vue.d.ts +11 -49
  70. package/lib/components/staffs-selector/src/staffs-selector.vue.d.ts +998 -10
  71. package/lib/components/staffs-selector/src/variedCmp.vue.d.ts +18 -11
  72. package/lib/components/timeline/index.d.ts +111 -2
  73. package/lib/components/upload/index.d.ts +139 -2
  74. package/lib/components/upload/index.js +205 -168
  75. package/lib/components/upload/src/props.d.ts +50 -0
  76. package/lib/components/upload/src/upload.vue.d.ts +44 -11
  77. package/lib/utils/bm-admin-ui-resolver.d.ts +1 -3
  78. package/lib/utils/bm-admin-ui-resolver.js +1 -1
  79. package/lib/utils/with-install.d.ts +7 -1
  80. package/lib/utils/with-install.js +1 -0
  81. package/package.json +2 -2
  82. package/theme-chalk/breadcrumb.css +1 -0
  83. package/theme-chalk/editor.css +16 -0
  84. package/theme-chalk/form-create.css +1 -1
  85. package/theme-chalk/index.css +16 -1
  86. package/theme-chalk/staffs-selector.css +1 -1
  87. package/theme-chalk/upload.css +1 -1
  88. package/types/components/breadcrumb/index.d.ts +162 -0
  89. package/types/components/breadcrumb/src/breadcrumb.vue.d.ts +161 -0
  90. package/types/components/button/index.d.ts +303 -1
  91. package/types/components/editor/index.d.ts +305 -0
  92. package/types/components/editor/src/editor.vue.d.ts +304 -0
  93. package/types/components/editor/src/props.d.ts +31 -0
  94. package/types/components/feedback/index.d.ts +1028 -2
  95. package/types/components/float-table/index.d.ts +68 -1
  96. package/types/components/flow-designer/index.d.ts +5 -1
  97. package/types/components/index.d.ts +2 -0
  98. package/types/components/input-tags-display/index.d.ts +138 -1
  99. package/types/components/input-tags-display/src/input-tags-display.vue.d.ts +1 -1
  100. package/types/components/over-tooltips/index.d.ts +33 -1
  101. package/types/components/search-filter/index.d.ts +233 -1
  102. package/types/components/search-filter/src/search-filter.vue.d.ts +3 -3
  103. package/types/components/select-all/index.d.ts +752 -1
  104. package/types/components/select-all/src/selectAll.vue.d.ts +5 -5
  105. package/types/components/shops-filter/index.d.ts +97 -1
  106. package/types/components/shops-filter/src/shops-filter.vue.d.ts +1 -1
  107. package/types/components/staffs-selector/index.d.ts +1095 -1
  108. package/types/components/staffs-selector/src/action.d.ts +66 -0
  109. package/types/components/staffs-selector/src/multipleCmp.vue.d.ts +11 -49
  110. package/types/components/staffs-selector/src/staffs-selector.vue.d.ts +998 -10
  111. package/types/components/staffs-selector/src/variedCmp.vue.d.ts +18 -11
  112. package/types/components/timeline/index.d.ts +111 -2
  113. package/types/components/upload/index.d.ts +139 -2
  114. package/types/components/upload/src/props.d.ts +50 -0
  115. package/types/components/upload/src/upload.vue.d.ts +44 -11
  116. package/types/utils/bm-admin-ui-resolver.d.ts +1 -3
  117. package/types/utils/with-install.d.ts +7 -1
@@ -1,13 +1,83 @@
1
1
  import { withInstall } from 'bm-admin-ui/es/utils/with-install';
2
+ import { readonly, ref, reactive, defineComponent, watch, toRefs, resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, Fragment, withDirectives, createTextVNode, vShow, renderList, toDisplayString, createBlock, createCommentVNode, h, computed, normalizeClass, withModifiers, unref } from 'vue';
2
3
  import AModal from 'ant-design-vue/lib/modal';
3
- import { defineComponent, reactive, watch, onMounted, toRefs, resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, Fragment, withDirectives, createTextVNode, vShow, renderList, toDisplayString, createBlock, createCommentVNode, withModifiers, ref, computed, readonly, normalizeClass } from 'vue';
4
- import { CloseCircleFilled, SearchOutlined } from '@ant-design/icons-vue';
4
+ import { SearchOutlined, LoadingOutlined, CloseCircleFilled } from '@ant-design/icons-vue';
5
5
  import Empty from 'ant-design-vue/lib/empty';
6
- import AInput from 'ant-design-vue/lib/input';
7
6
  import Checkbox from 'ant-design-vue/lib/checkbox';
8
- import ATree from 'ant-design-vue/lib/tree';
7
+ import message from 'ant-design-vue/lib/message';
8
+ import AInput from 'ant-design-vue/lib/input';
9
9
  import ARadio, { Group } from 'ant-design-vue/lib/radio';
10
10
 
11
+ const MODE = {
12
+ RADIO: 'radio',
13
+ MULTIPLE: 'multiple',
14
+ VARIED: 'varied',
15
+ };
16
+ const selectProps = {
17
+ visible: {
18
+ type: Boolean,
19
+ default: false,
20
+ },
21
+ mode: {
22
+ type: String,
23
+ default: MODE.MULTIPLE,
24
+ },
25
+ limit: {
26
+ type: Number,
27
+ default: 0,
28
+ },
29
+ title: {
30
+ type: String,
31
+ default: '人员选择器',
32
+ },
33
+ load: {
34
+ type: Function,
35
+ default: () => {
36
+ return Promise.resolve([]);
37
+ },
38
+ },
39
+ select: {
40
+ type: Array || Object,
41
+ defualt: () => [],
42
+ },
43
+ forceStatic: {
44
+ type: Boolean,
45
+ default: false,
46
+ },
47
+ immediateFetch: {
48
+ type: Boolean,
49
+ default: false,
50
+ },
51
+ showCount: {
52
+ type: Boolean,
53
+ default: true,
54
+ },
55
+ unitStr: {
56
+ type: String,
57
+ default: '人',
58
+ },
59
+ };
60
+ readonly([
61
+ { title: '成员', key: 0, paramStr: 'staff' },
62
+ { title: '部门', key: 1, paramStr: 'department' },
63
+ { title: '工作组', key: 2, paramStr: 'group' },
64
+ { title: '店铺', key: 3, paramStr: 'shop' },
65
+ ]);
66
+ ref('');
67
+ const selectState = reactive({
68
+ multipleChecked: {},
69
+ departmentChecked: [],
70
+ multipDepartment: [],
71
+ staffsChecked: {},
72
+ shopChecked: {},
73
+ groupChecked: {},
74
+ dataMap: new Map(),
75
+ curlistKeys: new Set(),
76
+ activeKey: 0,
77
+ });
78
+ const list = ref([]);
79
+ const departNative = ref([]);
80
+
11
81
  var _export_sfc = (sfc, props) => {
12
82
  const target = sfc.__vccOpts || sfc;
13
83
  for (const [key, val] of props) {
@@ -17,46 +87,19 @@ var _export_sfc = (sfc, props) => {
17
87
  };
18
88
 
19
89
  const _sfc_main$3 = defineComponent({
20
- components: {
21
- CloseCircleFilled,
22
- SearchOutlined,
23
- Empty,
24
- AInput,
25
- Checkbox,
26
- ATree
27
- },
90
+ components: { SearchOutlined, Checkbox, Empty },
28
91
  props: {
29
92
  limit: {
30
93
  type: Number,
31
94
  default: 0
32
95
  },
33
- list: {
34
- type: Array,
35
- default: () => []
36
- },
37
96
  selected: {
38
97
  type: Array,
39
98
  default: () => []
40
99
  },
41
- dataMap: {
42
- type: Map,
43
- default: () => /* @__PURE__ */ new Map()
44
- },
45
100
  isTree: {
46
101
  type: Boolean,
47
102
  default: false
48
- },
49
- curlistKeys: {
50
- type: Set,
51
- default: () => /* @__PURE__ */ new Set()
52
- },
53
- showCount: {
54
- type: Boolean,
55
- default: true
56
- },
57
- unitStr: {
58
- type: String,
59
- default: "\u4EBA"
60
103
  }
61
104
  },
62
105
  emits: ["fetchList", "update:selected"],
@@ -66,18 +109,16 @@ const _sfc_main$3 = defineComponent({
66
109
  selectAll: false,
67
110
  indeterminate: false,
68
111
  emptyPic: Empty.PRESENTED_IMAGE_SIMPLE,
69
- listChecked: {},
70
- isFulfill: false,
71
- departmentChecked: {}
112
+ isFulfill: false
72
113
  });
73
114
  const methods = {
74
115
  changeAllOption() {
75
116
  let status = state.selectAll;
76
117
  let length = props.selected.length;
77
- props.list.forEach((item) => {
118
+ list.value.forEach((item) => {
78
119
  if (status && props.limit > 0 && length++ >= props.limit)
79
120
  return;
80
- state.listChecked[item.key] = status;
121
+ selectState.multipleChecked[item.key] = status;
81
122
  });
82
123
  },
83
124
  search() {
@@ -87,8 +128,8 @@ const _sfc_main$3 = defineComponent({
87
128
  setState() {
88
129
  let indeterminate = false;
89
130
  let selectAll = true;
90
- props.list.forEach((item) => {
91
- if (!state.listChecked[item.key]) {
131
+ list.value.forEach((item) => {
132
+ if (!selectState.multipleChecked[item.key]) {
92
133
  selectAll = false;
93
134
  } else {
94
135
  indeterminate = true;
@@ -96,88 +137,68 @@ const _sfc_main$3 = defineComponent({
96
137
  });
97
138
  state.selectAll = selectAll;
98
139
  state.indeterminate = selectAll ? false : indeterminate;
99
- },
100
- deleteOption(key) {
101
- if (props.isTree) {
102
- let list = [].concat(state.departmentChecked);
103
- let result = [];
104
- list.forEach((item) => {
105
- if (!(item === key || props.dataMap.get(item) && key === props.dataMap.get(item)["parent"])) {
106
- result.push(item);
107
- }
108
- });
109
- state.departmentChecked = Array.from(new Set(result));
110
- } else {
111
- state.listChecked[key] = false;
112
- }
113
- },
114
- getSelectName(key) {
115
- let data = props.dataMap.get(String(key)) || null;
116
- return data ? data.title : "\u672A\u77E5";
117
140
  }
118
141
  };
119
142
  watch(
120
- () => state.listChecked,
143
+ () => selectState.multipleChecked,
121
144
  () => {
122
- let list = [];
123
- for (let [key, value] of Object.entries(state.listChecked)) {
124
- value && list.push(key);
145
+ if (props.limit && props.limit > 0) {
146
+ let length = 0;
147
+ for (let key in selectState.multipleChecked) {
148
+ if (selectState.multipleChecked[key])
149
+ length++;
150
+ }
151
+ state.isFulfill = length >= props.limit;
125
152
  }
126
- if (props.limit > 0 && list.length >= props.limit)
127
- state.isFulfill = true;
128
- else
129
- state.isFulfill = false;
130
153
  methods.setState();
131
- emit("update:selected", list);
132
154
  },
133
155
  { deep: true }
134
156
  );
135
157
  watch(
136
- () => state.departmentChecked,
158
+ () => list,
137
159
  () => {
138
- let flatMap = props.dataMap;
139
- let curlistKeys = props.curlistKeys;
140
- let hadselected = new Set(props.selected);
141
- let curselect = new Set(state.departmentChecked);
142
- for (let key of hadselected) {
143
- if (curlistKeys.has(key) && (!curselect.has(key) || curselect.has(key) && curselect.has(flatMap.get(key)["parent"]))) {
144
- hadselected.delete(key);
145
- }
146
- }
147
- for (let key of curselect) {
148
- let obj = flatMap.get(key);
149
- if (obj && !curselect.has(obj["parent"])) {
150
- hadselected.add(key);
151
- }
152
- }
153
- emit("update:selected", Array.from(hadselected));
160
+ !props.isTree && methods.setState();
154
161
  },
155
162
  { deep: true }
156
163
  );
157
- watch(
158
- () => props.list,
159
- () => {
160
- !props.isTree && methods.setState();
164
+ function changeTreeCheck(checkedKeys) {
165
+ let flatMap = selectState.dataMap;
166
+ let curlistKeys = selectState.curlistKeys;
167
+ let hadselected = new Set(selectState.multipDepartment);
168
+ let curselect = new Set(checkedKeys);
169
+ for (let key of hadselected) {
170
+ if (curlistKeys.has(String(key)) && (!curselect.has(String(key)) || curselect.has(String(key)) && curselect.has(flatMap.get(String(key))["parent"]))) {
171
+ hadselected.delete(key);
172
+ }
161
173
  }
162
- );
163
- onMounted(() => {
164
- let list = props.selected;
165
- list && list.forEach((key) => {
166
- state.listChecked[key] = true;
167
- });
168
- });
174
+ for (let key of curselect) {
175
+ let obj = flatMap.get(String(key));
176
+ if (obj && !curselect.has(obj["parent"])) {
177
+ hadselected.add(String(key));
178
+ }
179
+ }
180
+ let arr = Array.from(hadselected) || [];
181
+ if (props.limit && props.limit > 0 && arr.length > props.limit) {
182
+ message.error("\u52FE\u9009\u540E\u5C06\u8D85\u8FC7\u4EBA\u5458\u9650\u5236");
183
+ return;
184
+ }
185
+ selectState.multipDepartment = Array.from(hadselected) || [];
186
+ }
169
187
  return {
188
+ changeTreeCheck,
170
189
  ...toRefs(state),
190
+ ...toRefs(selectState),
191
+ list,
171
192
  ...methods
172
193
  };
173
194
  }
174
195
  });
175
196
  const _hoisted_1$3 = { class: "multiple-selector" };
176
- const _hoisted_2$2 = { class: "__selector-modal-panel" };
177
- const _hoisted_3$2 = { class: "__search-panel" };
178
- const _hoisted_4$2 = { class: "__selector-modal-options" };
179
- const _hoisted_5$2 = { class: "__selector-modal-options-item fixed-option" };
180
- const _hoisted_6$1 = { class: "department-option-item" };
197
+ const _hoisted_2$3 = { class: "__selector-modal-panel" };
198
+ const _hoisted_3$3 = { class: "__search-panel" };
199
+ const _hoisted_4$3 = { class: "__selector-modal-options" };
200
+ const _hoisted_5$3 = { class: "__selector-modal-options-item fixed-option" };
201
+ const _hoisted_6$2 = { class: "department-option-item" };
181
202
  const _hoisted_7$1 = {
182
203
  key: 0,
183
204
  class: "department-desc"
@@ -188,27 +209,15 @@ const _hoisted_8$1 = {
188
209
  style: { "height": "280px" }
189
210
  };
190
211
  const _hoisted_9$1 = { style: { "color": "#9393a3", "font-size": "12px", "font-weight": "400" } };
191
- const _hoisted_10$1 = { class: "__selector-chosen-panel" };
192
- const _hoisted_11$1 = {
193
- key: 0,
194
- class: "__chosen-panel-tip"
195
- };
196
- const _hoisted_12$1 = {
197
- key: 0,
198
- class: "__limit-tip"
199
- };
200
- const _hoisted_13$1 = { class: "__chosen-panel-list" };
201
- const _hoisted_14$1 = { class: "__tiem-title" };
202
- function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
212
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
203
213
  const _component_search_outlined = resolveComponent("search-outlined");
204
214
  const _component_AInput = resolveComponent("AInput");
205
215
  const _component_Checkbox = resolveComponent("Checkbox");
206
216
  const _component_ATree = resolveComponent("ATree");
207
217
  const _component_Empty = resolveComponent("Empty");
208
- const _component_CloseCircleFilled = resolveComponent("CloseCircleFilled");
209
218
  return openBlock(), createElementBlock("div", _hoisted_1$3, [
210
- createElementVNode("div", _hoisted_2$2, [
211
- createElementVNode("div", _hoisted_3$2, [
219
+ createElementVNode("div", _hoisted_2$3, [
220
+ createElementVNode("div", _hoisted_3$3, [
212
221
  createVNode(_component_AInput, {
213
222
  value: _ctx.searchVal,
214
223
  "onUpdate:value": _cache[0] || (_cache[0] = ($event) => _ctx.searchVal = $event),
@@ -220,9 +229,9 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
220
229
  ]),
221
230
  _: 1
222
231
  }, 8, ["value", "onChange"]),
223
- createElementVNode("div", _hoisted_4$2, [
232
+ createElementVNode("div", _hoisted_4$3, [
224
233
  !_ctx.isTree ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
225
- createElementVNode("div", _hoisted_5$2, [
234
+ createElementVNode("div", _hoisted_5$3, [
226
235
  withDirectives(createVNode(_component_Checkbox, {
227
236
  checked: _ctx.selectAll,
228
237
  "onUpdate:checked": _cache[1] || (_cache[1] = ($event) => _ctx.selectAll = $event),
@@ -243,8 +252,8 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
243
252
  class: "__selector-modal-options-item"
244
253
  }, [
245
254
  createVNode(_component_Checkbox, {
246
- checked: _ctx.listChecked[item.key],
247
- "onUpdate:checked": ($event) => _ctx.listChecked[item.key] = $event,
255
+ checked: _ctx.multipleChecked[item.key],
256
+ "onUpdate:checked": ($event) => _ctx.multipleChecked[item.key] = $event,
248
257
  class: "__selector-modal-option-check",
249
258
  disabled: _ctx.isFulfill
250
259
  }, {
@@ -257,19 +266,19 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
257
266
  }), 128))
258
267
  ], 64)) : _ctx.isTree ? (openBlock(), createBlock(_component_ATree, {
259
268
  key: 1,
260
- checkedKeys: _ctx.departmentChecked,
261
- "onUpdate:checkedKeys": _cache[2] || (_cache[2] = ($event) => _ctx.departmentChecked = $event),
269
+ "checked-keys": _ctx.multipDepartment,
262
270
  checkable: "",
263
- "tree-data": _ctx.list
271
+ "tree-data": _ctx.list,
272
+ onCheck: _ctx.changeTreeCheck
264
273
  }, {
265
- title: withCtx(({ title, description }) => [
266
- createElementVNode("div", _hoisted_6$1, [
267
- createElementVNode("span", null, toDisplayString(title), 1),
274
+ title: withCtx(({ title, key, description }) => [
275
+ createElementVNode("div", _hoisted_6$2, [
276
+ createElementVNode("span", null, toDisplayString(title) + toDisplayString(key ? `(${key})` : ""), 1),
268
277
  description ? (openBlock(), createElementBlock("p", _hoisted_7$1, toDisplayString(description), 1)) : createCommentVNode("v-if", true)
269
278
  ])
270
279
  ]),
271
280
  _: 1
272
- }, 8, ["checkedKeys", "tree-data"])) : createCommentVNode("v-if", true),
281
+ }, 8, ["checked-keys", "tree-data", "onCheck"])) : createCommentVNode("v-if", true),
273
282
  _ctx.list && !_ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_8$1, [
274
283
  createVNode(_component_Empty, { image: _ctx.emptyPic }, {
275
284
  description: withCtx(() => [
@@ -280,30 +289,10 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
280
289
  ])) : createCommentVNode("v-if", true)
281
290
  ])
282
291
  ])
283
- ]),
284
- createElementVNode("div", _hoisted_10$1, [
285
- _ctx.showCount ? (openBlock(), createElementBlock("div", _hoisted_11$1, [
286
- createElementVNode("span", null, "\u5DF2\u9009\u62E9" + toDisplayString(_ctx.selected && _ctx.selected.length || 0) + toDisplayString(_ctx.$props.unitStr), 1),
287
- _ctx.limit ? (openBlock(), createElementBlock("span", _hoisted_12$1, "\u6700\u591A\u9009\u62E9" + toDisplayString(_ctx.limit) + toDisplayString(_ctx.$props.unitStr), 1)) : createCommentVNode("v-if", true)
288
- ])) : createCommentVNode("v-if", true),
289
- createElementVNode("div", _hoisted_13$1, [
290
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.selected, (item) => {
291
- return openBlock(), createElementBlock("div", {
292
- key: item + "checked",
293
- class: "__chosen-panel-list-item"
294
- }, [
295
- createElementVNode("span", _hoisted_14$1, toDisplayString(_ctx.getSelectName(item)), 1),
296
- createVNode(_component_CloseCircleFilled, {
297
- style: { "color": "#ced1d9" },
298
- onMousedown: withModifiers(($event) => _ctx.deleteOption(item), ["stop"])
299
- }, null, 8, ["onMousedown"])
300
- ]);
301
- }), 128))
302
- ])
303
292
  ])
304
293
  ]);
305
294
  }
306
- var multipleCmp = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__file", "multipleCmp.vue"]]);
295
+ var multipleCmp = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "multipleCmp.vue"]]);
307
296
 
308
297
  const _sfc_main$2 = defineComponent({
309
298
  name: "RadioCmp",
@@ -338,24 +327,24 @@ const _sfc_main$2 = defineComponent({
338
327
  }
339
328
  });
340
329
  const _hoisted_1$2 = { class: "radio-selector-panel" };
341
- const _hoisted_2$1 = { class: "__search-panel withoutpad" };
342
- const _hoisted_3$1 = {
330
+ const _hoisted_2$2 = { class: "__search-panel withoutpad" };
331
+ const _hoisted_3$2 = {
343
332
  key: 0,
344
333
  class: "__selector-modal-options __radio-panel"
345
334
  };
346
- const _hoisted_4$1 = {
335
+ const _hoisted_4$2 = {
347
336
  key: 1,
348
337
  class: "noData"
349
338
  };
350
- const _hoisted_5$1 = { style: { "color": "#9393a3", "font-size": "12px", "font-weight": "400" } };
351
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
339
+ const _hoisted_5$2 = { style: { "color": "#9393a3", "font-size": "12px", "font-weight": "400" } };
340
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
352
341
  const _component_search_outlined = resolveComponent("search-outlined");
353
342
  const _component_a_input = resolveComponent("a-input");
354
343
  const _component_ARadio = resolveComponent("ARadio");
355
344
  const _component_ARadioGroup = resolveComponent("ARadioGroup");
356
345
  const _component_Empty = resolveComponent("Empty");
357
346
  return openBlock(), createElementBlock("div", _hoisted_1$2, [
358
- createElementVNode("div", _hoisted_2$1, [
347
+ createElementVNode("div", _hoisted_2$2, [
359
348
  createVNode(_component_a_input, {
360
349
  value: _ctx.searchVal,
361
350
  "onUpdate:value": _cache[0] || (_cache[0] = ($event) => _ctx.searchVal = $event),
@@ -367,7 +356,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
367
356
  ]),
368
357
  _: 1
369
358
  }, 8, ["value", "onChange"]),
370
- _ctx.list && _ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
359
+ _ctx.list && _ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_3$2, [
371
360
  createVNode(_component_ARadioGroup, {
372
361
  value: _ctx.selected,
373
362
  style: { width: "100%" },
@@ -390,10 +379,10 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
390
379
  _: 1
391
380
  }, 8, ["value", "onChange"])
392
381
  ])) : createCommentVNode("v-if", true),
393
- _ctx.list && !_ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_4$1, [
382
+ _ctx.list && !_ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
394
383
  createVNode(_component_Empty, { image: _ctx.emptyPic }, {
395
384
  description: withCtx(() => [
396
- createElementVNode("span", _hoisted_5$1, toDisplayString(!!_ctx.searchVal ? "\u6682\u65E0\u6570\u636E" : "\u8BF7\u5148\u641C\u7D22\u4EBA\u5458\u5173\u952E\u5B57"), 1)
385
+ createElementVNode("span", _hoisted_5$2, toDisplayString(!!_ctx.searchVal ? "\u6682\u65E0\u6570\u636E" : "\u8BF7\u5148\u641C\u7D22\u4EBA\u5458\u5173\u952E\u5B57"), 1)
397
386
  ]),
398
387
  _: 1
399
388
  }, 8, ["image"])
@@ -401,18 +390,9 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
401
390
  ])
402
391
  ]);
403
392
  }
404
- var radioCmp = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__file", "radioCmp.vue"]]);
393
+ var radioCmp = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "radioCmp.vue"]]);
405
394
 
406
395
  const _sfc_main$1 = defineComponent({
407
- name: "VariedCmp",
408
- components: {
409
- CloseCircleFilled,
410
- SearchOutlined,
411
- AInput,
412
- Checkbox,
413
- ATree,
414
- Empty
415
- },
416
396
  props: {
417
397
  list: {
418
398
  type: Array,
@@ -433,164 +413,83 @@ const _sfc_main$1 = defineComponent({
433
413
  },
434
414
  emits: ["fetchList", "update:selected"],
435
415
  setup(props, { emit }) {
416
+ const indicator = h(LoadingOutlined, {
417
+ style: {
418
+ fontSize: "24px"
419
+ },
420
+ spin: true
421
+ });
422
+ const loading = ref(false);
436
423
  const emptyPic = Empty.PRESENTED_IMAGE_SIMPLE;
437
- const activeKey = ref(0);
424
+ const areas = readonly([
425
+ { title: "\u6210\u5458", key: 0, paramStr: "staff" },
426
+ { title: "\u90E8\u95E8", key: 1, paramStr: "department" },
427
+ { title: "\u5DE5\u4F5C\u7EC4", key: 2, paramStr: "group" },
428
+ { title: "\u5E97\u94FA", key: 3, paramStr: "shop" }
429
+ ]);
438
430
  const searchVal = ref("");
439
- const staffsChecked = ref({});
440
- const groupChecked = ref({});
441
- const departmentChecked = ref([]);
442
- const shopChecked = ref({});
431
+ function changeArea(item) {
432
+ selectState.activeKey = item.key;
433
+ searchVal.value = "";
434
+ if (selectState.activeKey === 1) {
435
+ search();
436
+ } else
437
+ emit("fetchList", false);
438
+ }
439
+ function search() {
440
+ emit("fetchList", {
441
+ searchVal: searchVal.value,
442
+ area: areas[selectState.activeKey].paramStr
443
+ });
444
+ }
443
445
  const inputPlaceHolder = computed(() => {
444
- if (activeKey.value === 2) {
446
+ if (selectState.activeKey === 1) {
445
447
  return "\u8BF7\u8F93\u5165\u90E8\u95E8\u641C\u7D22";
446
- } else if (activeKey.value === 3) {
448
+ } else if (selectState.activeKey === 2) {
447
449
  return "\u8BF7\u8F93\u5165\u5DE5\u4F5C\u7EC4\u641C\u7D22";
448
- } else if (activeKey.value === 4) {
450
+ } else if (selectState.activeKey === 3) {
449
451
  return "\u8BF7\u8F93\u5165\u5E97\u94FA\u641C\u7D22";
450
452
  }
451
453
  return "\u8BF7\u8F93\u5165\u4EBA\u540D\u641C\u7D22";
452
454
  });
453
- const areas = readonly([
454
- { title: "\u6210\u5458", key: 0, paramStr: "staff" },
455
- { title: "\u90E8\u95E8", key: 1, paramStr: "department" },
456
- { title: "\u5DE5\u4F5C\u7EC4", key: 2, paramStr: "group" },
457
- { title: "\u5E97\u94FA", key: 3, paramStr: "shop" }
458
- ]);
459
- const methods = {
460
- deleteOption(key) {
461
- let object = new Object();
462
- if (object.hasOwnProperty.call(staffsChecked.value, key)) {
463
- staffsChecked.value[key] = false;
464
- } else if (object.hasOwnProperty.call(shopChecked.value, key)) {
465
- shopChecked.value[key] = false;
466
- } else if (object.hasOwnProperty.call(groupChecked.value, key)) {
467
- groupChecked.value[key] = false;
468
- } else {
469
- let list = [].concat(departmentChecked.value);
470
- let result = [];
471
- list.forEach((item) => {
472
- if (!(item === key || props.dataMap.get(item) && key === props.dataMap.get(item)["parent"])) {
473
- result.push(item);
474
- }
475
- });
476
- departmentChecked.value = Array.from(new Set(result));
455
+ function changeTreeCheck(checkedKeys) {
456
+ let flatMap = selectState.dataMap;
457
+ let curlistKeys = selectState.curlistKeys;
458
+ let hadselected = new Set(selectState.departmentChecked);
459
+ let curselect = new Set(checkedKeys);
460
+ for (let key of hadselected) {
461
+ if (curlistKeys.has(String(key)) && (!curselect.has(String(key)) || curselect.has(String(key)) && curselect.has(flatMap.get(String(key))["parent"]))) {
462
+ hadselected.delete(key);
477
463
  }
478
- },
479
- changeArea(item) {
480
- activeKey.value = item.key;
481
- searchVal.value = "";
482
- if (activeKey.value === 1) {
483
- methods.search();
484
- } else
485
- emit("fetchList", false);
486
- },
487
- search() {
488
- emit("fetchList", {
489
- searchVal: searchVal.value,
490
- area: areas[activeKey.value].paramStr
491
- });
492
- },
493
- getSelectName(key) {
494
- let data = props.dataMap.get(key) || null;
495
- return data ? data.title : "\u672A\u77E5";
496
464
  }
497
- };
498
- watch(
499
- () => departmentChecked,
500
- () => {
501
- let flatMap = props.dataMap;
502
- let curlistKeys = props.curlistKeys;
503
- let hadselected = new Set(props.selected);
504
- let curselect = new Set(departmentChecked.value);
505
- for (let key of hadselected) {
506
- if (curlistKeys.has(key) && (!curselect.has(key) || curselect.has(key) && curselect.has(flatMap.get(key)["parent"]))) {
507
- hadselected.delete(key);
508
- }
509
- }
510
- for (let key of curselect) {
511
- let obj = flatMap.get(key);
512
- if (obj && !curselect.has(obj["parent"])) {
513
- hadselected.add(key);
514
- }
515
- }
516
- emit("update:selected", Array.from(hadselected));
517
- },
518
- { deep: true }
519
- );
520
- watch(
521
- () => staffsChecked,
522
- () => {
523
- let set = new Set(props.selected.length ? props.selected : null);
524
- for (let [key, value] of Object.entries(staffsChecked.value)) {
525
- if (value) {
526
- set.add(key);
527
- } else {
528
- set.has(key) && set.delete(key);
529
- }
530
- }
531
- emit("update:selected", Array.from(set));
532
- },
533
- { deep: true }
534
- );
535
- watch(
536
- () => shopChecked,
537
- () => {
538
- let set = new Set(props.selected.length ? props.selected : null);
539
- for (let [key, value] of Object.entries(shopChecked.value)) {
540
- if (value) {
541
- set.add(key);
542
- } else {
543
- set.has(key) && set.delete(key);
544
- }
545
- }
546
- emit("update:selected", Array.from(set));
547
- },
548
- { deep: true }
549
- );
550
- watch(
551
- () => groupChecked,
552
- () => {
553
- let set = new Set(props.selected.length ? props.selected : null);
554
- for (let [key, value] of Object.entries(groupChecked.value)) {
555
- if (value) {
556
- set.add(key);
557
- } else {
558
- set.has(key) && set.delete(key);
559
- }
465
+ for (let key of curselect) {
466
+ let obj = flatMap.get(String(key));
467
+ if (obj && !curselect.has(obj["parent"])) {
468
+ hadselected.add(String(key));
560
469
  }
561
- emit("update:selected", Array.from(set));
562
- },
563
- { deep: true }
564
- );
565
- onMounted(() => {
566
- let list = props.selected;
567
- list && list.forEach((key) => {
568
- staffsChecked.value[key] = true;
569
- groupChecked.value[key] = true;
570
- shopChecked.value[key] = true;
571
- departmentChecked.value.push(key);
572
- });
573
- });
470
+ }
471
+ selectState.departmentChecked = Array.from(hadselected) || [];
472
+ }
574
473
  return {
474
+ indicator,
475
+ loading,
575
476
  emptyPic,
576
- activeKey,
477
+ areas,
577
478
  searchVal,
578
- staffsChecked,
579
- groupChecked,
580
- departmentChecked,
581
- shopChecked,
479
+ search,
480
+ changeArea,
582
481
  inputPlaceHolder,
583
- areas,
584
- ...methods
482
+ changeTreeCheck,
483
+ ...toRefs(selectState)
585
484
  };
586
485
  }
587
486
  });
588
487
  const _hoisted_1$1 = { class: "varied-selector-panel" };
589
- const _hoisted_2 = { class: "__selector-modal-panel-withGroup" };
590
- const _hoisted_3 = { class: "varied-area-tabs" };
591
- const _hoisted_4 = ["onClick"];
592
- const _hoisted_5 = { class: "area-panel" };
593
- const _hoisted_6 = {
488
+ const _hoisted_2$1 = { class: "__selector-modal-panel-withGroup" };
489
+ const _hoisted_3$1 = { class: "varied-area-tabs" };
490
+ const _hoisted_4$1 = ["onClick"];
491
+ const _hoisted_5$1 = { class: "area-panel" };
492
+ const _hoisted_6$1 = {
594
493
  key: 0,
595
494
  class: "noData"
596
495
  };
@@ -601,7 +500,8 @@ const _hoisted_8 = {
601
500
  };
602
501
  const _hoisted_9 = {
603
502
  key: 1,
604
- class: "__selector-modal-options"
503
+ class: "__selector-modal-options",
504
+ style: { "overflow": "auto" }
605
505
  };
606
506
  const _hoisted_10 = { class: "department-option-item" };
607
507
  const _hoisted_11 = {
@@ -616,25 +516,22 @@ const _hoisted_13 = {
616
516
  key: 3,
617
517
  class: "__selector-modal-options"
618
518
  };
619
- const _hoisted_14 = { class: "__selector-chosen-panel" };
620
- const _hoisted_15 = { class: "__chosen-panel-list" };
621
- const _hoisted_16 = { class: "__tiem-title" };
622
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
519
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
623
520
  const _component_search_outlined = resolveComponent("search-outlined");
624
521
  const _component_a_input = resolveComponent("a-input");
625
522
  const _component_Empty = resolveComponent("Empty");
626
523
  const _component_Checkbox = resolveComponent("Checkbox");
524
+ const _component_Spin = resolveComponent("Spin");
627
525
  const _component_a_tree = resolveComponent("a-tree");
628
- const _component_CloseCircleFilled = resolveComponent("CloseCircleFilled");
629
526
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
630
- createElementVNode("div", _hoisted_2, [
631
- createElementVNode("div", _hoisted_3, [
527
+ createElementVNode("div", _hoisted_2$1, [
528
+ createElementVNode("div", _hoisted_3$1, [
632
529
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.areas, (item) => {
633
530
  return openBlock(), createElementBlock("div", {
634
531
  key: item.key,
635
532
  class: normalizeClass(["area-tabs-item", { active: item.key === _ctx.activeKey }]),
636
533
  onClick: withModifiers(($event) => _ctx.changeArea(item), ["stop"])
637
- }, toDisplayString(item.title), 11, _hoisted_4);
534
+ }, toDisplayString(item.title), 11, _hoisted_4$1);
638
535
  }), 128))
639
536
  ]),
640
537
  createVNode(_component_a_input, {
@@ -648,8 +545,8 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
648
545
  ]),
649
546
  _: 1
650
547
  }, 8, ["value", "placeholder", "onChange"]),
651
- createElementVNode("div", _hoisted_5, [
652
- _ctx.list && !_ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_6, [
548
+ createElementVNode("div", _hoisted_5$1, [
549
+ _ctx.list && !_ctx.list.length ? (openBlock(), createElementBlock("div", _hoisted_6$1, [
653
550
  createVNode(_component_Empty, { image: _ctx.emptyPic }, {
654
551
  description: withCtx(() => [
655
552
  createElementVNode("span", _hoisted_7, toDisplayString(!!_ctx.searchVal ? "\u6682\u65E0\u6570\u636E" : "\u8BF7\u5148\u641C\u7D22\u4EBA\u5458\u5173\u952E\u5B57"), 1)
@@ -676,12 +573,17 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
676
573
  ]);
677
574
  }), 128))
678
575
  ])) : _ctx.activeKey === 1 ? (openBlock(), createElementBlock("div", _hoisted_9, [
576
+ createVNode(_component_Spin, {
577
+ indicator: _ctx.indicator,
578
+ spinning: _ctx.loading
579
+ }, null, 8, ["indicator", "spinning"]),
580
+ createCommentVNode(" "),
679
581
  createVNode(_component_a_tree, {
680
- checkedKeys: _ctx.departmentChecked,
681
- "onUpdate:checkedKeys": _cache[1] || (_cache[1] = ($event) => _ctx.departmentChecked = $event),
682
- "default-expand-all": _ctx.searchVal === "",
582
+ "checked-keys": _ctx.departmentChecked,
583
+ "default-expand-all": false,
683
584
  checkable: "",
684
- "tree-data": _ctx.list
585
+ "tree-data": _ctx.list,
586
+ onCheck: _ctx.changeTreeCheck
685
587
  }, {
686
588
  title: withCtx(({ title, description }) => [
687
589
  createElementVNode("div", _hoisted_10, [
@@ -690,7 +592,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
690
592
  ])
691
593
  ]),
692
594
  _: 1
693
- }, 8, ["checkedKeys", "default-expand-all", "tree-data"])
595
+ }, 8, ["checked-keys", "tree-data", "onCheck"])
694
596
  ])) : _ctx.activeKey === 2 ? (openBlock(), createElementBlock("div", _hoisted_12, [
695
597
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.list, (item) => {
696
598
  return openBlock(), createElementBlock("div", {
@@ -730,214 +632,342 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
730
632
  ])) : createCommentVNode("v-if", true)
731
633
  ], 64))
732
634
  ])
733
- ]),
734
- createElementVNode("div", _hoisted_14, [
735
- createElementVNode("div", _hoisted_15, [
736
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.selected, (item) => {
737
- return openBlock(), createElementBlock("div", {
738
- key: item + "checked",
739
- class: "__chosen-panel-list-item"
740
- }, [
741
- createElementVNode("span", _hoisted_16, toDisplayString(_ctx.getSelectName(item)), 1),
742
- createVNode(_component_CloseCircleFilled, {
743
- onMousedown: withModifiers(($event) => _ctx.deleteOption(item), ["stop"])
744
- }, null, 8, ["onMousedown"])
745
- ]);
746
- }), 128))
747
- ])
748
635
  ])
749
636
  ]);
750
637
  }
751
- var VariedCmp = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__file", "variedCmp.vue"]]);
638
+ var VariedCmp = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "variedCmp.vue"]]);
752
639
 
753
- const MODE = {
754
- RADIO: "radio",
755
- MULTIPLE: "multiple",
756
- VARIED: "varied"
640
+ const _hoisted_1 = { class: "selector-content" };
641
+ const _hoisted_2 = {
642
+ key: 3,
643
+ class: "__selector-chosen-panel"
757
644
  };
758
- const _sfc_main = defineComponent({
759
- name: "BmStaffsSelector",
760
- components: { AModal, multipleCmp, radioCmp, VariedCmp },
761
- props: {
762
- visible: {
763
- type: Boolean,
764
- default: false
765
- },
766
- mode: {
767
- type: String,
768
- default: MODE.MULTIPLE
769
- },
770
- limit: {
771
- type: Number,
772
- default: 0
773
- },
774
- title: {
775
- type: String,
776
- default: "\u4EBA\u5458\u9009\u62E9\u5668"
777
- },
778
- load: {
779
- type: Function,
780
- default: () => {
781
- return Promise.resolve([]);
645
+ const _hoisted_3 = {
646
+ key: 0,
647
+ class: "__chosen-panel-tip"
648
+ };
649
+ const _hoisted_4 = {
650
+ key: 0,
651
+ class: "__limit-tip"
652
+ };
653
+ const _hoisted_5 = { class: "__chosen-panel-list" };
654
+ const _hoisted_6 = { class: "__tiem-title" };
655
+ const _sfc_main = /* @__PURE__ */ defineComponent({
656
+ __name: "staffs-selector",
657
+ props: selectProps,
658
+ emits: ["update:visible", "update:select", "change"],
659
+ setup(__props, { emit }) {
660
+ const props = __props;
661
+ const selected = ref([]);
662
+ const computeSelected = computed(() => {
663
+ let list2 = [];
664
+ if (props.mode === MODE.MULTIPLE) {
665
+ if (multipTree.value) {
666
+ return [...selectState.multipDepartment];
667
+ }
668
+ for (let [key, value] of Object.entries(selectState.multipleChecked)) {
669
+ value && list2.push(String(key));
670
+ }
671
+ return list2;
672
+ } else if (props.mode === MODE.VARIED) {
673
+ list2 = list2.concat(selectState.departmentChecked);
674
+ for (let [key, value] of Object.entries(selectState.staffsChecked)) {
675
+ value && list2.push(String(key));
676
+ }
677
+ for (let [key, value] of Object.entries(selectState.shopChecked)) {
678
+ value && list2.push(String(key));
679
+ }
680
+ for (let [key, value] of Object.entries(selectState.groupChecked)) {
681
+ value && list2.push(String(key));
682
+ }
683
+ return list2;
782
684
  }
783
- },
784
- select: {
785
- type: Array || Object,
786
- defualt: () => []
787
- },
788
- forceStatic: {
789
- type: Boolean,
790
- default: false
791
- },
792
- immediateFetch: {
793
- type: Boolean,
794
- default: false
795
- },
796
- showCount: {
797
- type: Boolean,
798
- default: true
799
- },
800
- unitStr: {
801
- type: String,
802
- default: "\u4EBA"
685
+ return [];
686
+ });
687
+ const multipTree = ref(false);
688
+ const width = computed(() => {
689
+ if (props.mode === MODE.MULTIPLE) {
690
+ return 648;
691
+ } else if (props.mode === MODE.RADIO) {
692
+ return 480;
693
+ }
694
+ return 648;
695
+ });
696
+ function modalCancel() {
697
+ emit("update:visible", !props.visible);
698
+ list.value = [];
803
699
  }
804
- },
805
- emits: ["update:visible", "update:select"],
806
- setup(props, { emit }) {
807
- const methods = {
808
- modalCancel() {
809
- emit("update:visible", !props.visible);
810
- },
811
- fetch(params) {
812
- if (typeof params === "boolean") {
813
- state.list = [];
814
- } else {
815
- props.load(params).then((data) => {
816
- state.list = data.map((item) => {
817
- return item;
818
- });
819
- state.dataMap = methods.flatListFunc(data);
820
- });
700
+ function isCurrentFetch(area) {
701
+ let activeKey = 0;
702
+ activeKey = area === "department" ? 1 : activeKey;
703
+ activeKey = area === "group" ? 2 : activeKey;
704
+ activeKey = area === "shop" ? 3 : activeKey;
705
+ return selectState.activeKey === activeKey;
706
+ }
707
+ function fetch(params) {
708
+ list.value = [];
709
+ if (typeof params !== "boolean") {
710
+ let isDepartTree = params.area === "department" || props.mode === MODE.MULTIPLE && multipTree.value;
711
+ if (isDepartTree && departNative.value.length) {
712
+ if (props.mode === MODE.VARIED && !params.searchVal || params.searchVal === "") {
713
+ list.value = isCurrentFetch(params.area || "") ? [...departNative.value] : [];
714
+ return;
715
+ } else {
716
+ let result = [];
717
+ let queues = [...departNative.value];
718
+ while (queues.length) {
719
+ let node = queues.shift();
720
+ if (node["title"] && node["title"].includes(params?.searchVal || "")) {
721
+ result.push({ ...node });
722
+ }
723
+ if (node.children)
724
+ queues.push(...node.children);
725
+ }
726
+ list.value = isCurrentFetch(params?.area || "") ? result : [];
727
+ return;
728
+ }
821
729
  }
822
- },
823
- flatListFunc(list) {
824
- let queue = [...list];
825
- let map = new Map(state.dataMap);
826
- let curlistKeys = /* @__PURE__ */ new Set();
827
- let treedata = false;
828
- while (queue.length) {
829
- let curnode = queue.shift();
830
- map.set(curnode.key, curnode);
831
- curlistKeys.add(curnode.key);
832
- let children = curnode.children;
833
- if (children) {
834
- children = children.map((obj) => {
835
- treedata = true;
836
- obj["parent"] = curnode && curnode.key || null;
837
- return obj;
838
- });
730
+ props.load(params).then((data) => {
731
+ if (data && data.length) {
732
+ if (params.area && params.area === "department") {
733
+ departNative.value = data;
734
+ fetch(params);
735
+ } else {
736
+ let result = data.map((item) => {
737
+ return item;
738
+ });
739
+ list.value = isCurrentFetch(params.area) ? result : [];
740
+ }
741
+ selectState.dataMap = flatListFunc(data);
742
+ } else {
743
+ list.value = [];
839
744
  }
840
- queue = queue.concat(children || []);
745
+ });
746
+ } else {
747
+ if (props.mode === MODE.MULTIPLE && multipTree.value) {
748
+ list.value = [...departNative.value];
841
749
  }
842
- state.multipTree = props.forceStatic ? false : treedata;
843
- state.curlistKeys = curlistKeys;
844
- return map;
845
- },
846
- summitSelect() {
847
- if (["string", "number"].includes(typeof state.selected)) {
848
- emit("update:select", [state.dataMap.get(state.selected)]);
849
- } else if (state.selected instanceof Array) {
850
- emit(
851
- "update:select",
852
- state.selected.map((item) => state.dataMap.get(item))
853
- );
854
- } else ;
855
- state.list = [];
856
- methods.modalCancel();
857
750
  }
858
- };
859
- const state = reactive({
860
- list: [],
861
- selected: props.mode === "radio" ? "" : [],
862
- dataMap: /* @__PURE__ */ new Map(),
863
- curlistKeys: /* @__PURE__ */ new Set(),
864
- multipTree: false,
865
- width: computed(() => {
866
- if (props.mode === MODE.MULTIPLE) {
867
- return 648;
868
- } else if (props.mode === MODE.RADIO) {
869
- return 480;
751
+ }
752
+ function flatListFunc(list2) {
753
+ let queue = [...list2];
754
+ let map = new Map(selectState.dataMap);
755
+ let Keys = /* @__PURE__ */ new Set();
756
+ let treedata = false;
757
+ while (queue.length) {
758
+ let curnode = queue.shift();
759
+ map.set(String(curnode.key), curnode);
760
+ Keys.add(String(curnode.key));
761
+ let children = curnode.children;
762
+ if (children) {
763
+ children = children.map((obj) => {
764
+ treedata = true;
765
+ obj["parent"] = curnode && curnode.key || null;
766
+ return obj;
767
+ });
870
768
  }
871
- return 648;
872
- })
873
- });
769
+ queue = queue.concat(children || []);
770
+ }
771
+ multipTree.value = props.forceStatic ? false : treedata;
772
+ selectState.curlistKeys = Keys;
773
+ return map;
774
+ }
775
+ function findDataByKey(key) {
776
+ let data = selectState.dataMap.get(String(key));
777
+ if (!data) {
778
+ data = props.select.find(
779
+ (item) => String(item) === String(key) || String(item?.key) === String(key)
780
+ );
781
+ }
782
+ return data || "\u672A\u77E5\u6570\u636E";
783
+ }
784
+ function summitSelect() {
785
+ if (typeof selected.value === "string") {
786
+ let data = selectState.dataMap.get(String(selected.value));
787
+ emit("update:select", data);
788
+ emit("change", data);
789
+ } else if (props.mode === MODE.MULTIPLE) {
790
+ let arr = computeSelected.value.map((key) => findDataByKey(key));
791
+ emit("update:select", arr);
792
+ emit("change", arr);
793
+ } else if (props.mode === MODE.VARIED) {
794
+ let department = selectState.departmentChecked.map((key) => {
795
+ let data = findDataByKey(key);
796
+ return { ...data, area: "department" };
797
+ });
798
+ let group = [];
799
+ for (let key in selectState.groupChecked) {
800
+ let data = findDataByKey(key);
801
+ group.push({ ...data, area: "group" });
802
+ }
803
+ let shop = [];
804
+ for (let key in selectState.shopChecked) {
805
+ let data = findDataByKey(key);
806
+ shop.push({ ...data, area: "shop" });
807
+ }
808
+ let staff = [];
809
+ for (let key in selectState.staffsChecked) {
810
+ let data = findDataByKey(key);
811
+ staff.push({ ...data, area: "staff" });
812
+ }
813
+ let arr = [...department, ...group, ...shop, ...staff];
814
+ emit("update:select", arr);
815
+ emit("change", arr);
816
+ }
817
+ list.value = [];
818
+ modalCancel();
819
+ }
820
+ function getOptionName(key) {
821
+ let data = selectState.dataMap.get(String(key));
822
+ if (data && data.title)
823
+ return `${data.title}${data.key ? `(${data.key})` : ""}${data.description ? `-(${data.description})` : ""}`;
824
+ let arr = props.select;
825
+ arr = arr.length ? arr : [];
826
+ let had = arr.find(
827
+ (item) => String(item) === String(key) || String(item?.key) === String(key)
828
+ );
829
+ return had?.title ? `${had.title}${had.key ? `(${had.key})` : ""}${had.description ? `-(${had.description})` : ""}` : had;
830
+ }
831
+ function deleteOptions(key) {
832
+ if (props.mode === MODE.MULTIPLE) {
833
+ if (selectState.multipleChecked[String(key)]) {
834
+ selectState.multipleChecked[String(key)] = false;
835
+ } else {
836
+ let index = selectState.multipDepartment.findIndex(
837
+ (item) => String(item) === String(key)
838
+ );
839
+ index > -1 && selectState.multipDepartment.splice(index, 1);
840
+ }
841
+ } else if (props.mode === MODE.VARIED) {
842
+ if (selectState.staffsChecked[String(key)]) {
843
+ selectState.staffsChecked[String(key)] = false;
844
+ } else if (selectState.shopChecked[String(key)]) {
845
+ selectState.shopChecked[String(key)] = false;
846
+ } else if (selectState.groupChecked[String(key)]) {
847
+ selectState.groupChecked[String(key)] = false;
848
+ } else {
849
+ let index = selectState.departmentChecked.findIndex(
850
+ (item) => String(item) === String(key)
851
+ );
852
+ index > -1 && selectState.departmentChecked.splice(index, 1);
853
+ }
854
+ }
855
+ }
874
856
  watch(
875
857
  () => props.visible,
876
858
  (val) => {
859
+ if (val) {
860
+ if (props.mode === "radio") {
861
+ selected.value = "";
862
+ } else {
863
+ let arr = props.select;
864
+ selected.value = arr.length ? arr.map((item) => String(item?.key)) : [];
865
+ if (props.mode === MODE.MULTIPLE) {
866
+ let multipleChecked = {};
867
+ arr.forEach(
868
+ (item) => multipleChecked[String(item?.key)] = true
869
+ );
870
+ selectState.multipleChecked = multipleChecked;
871
+ } else if (props.mode === MODE.VARIED) {
872
+ let department = [];
873
+ let shop = {};
874
+ let staff = {};
875
+ let group = {};
876
+ arr.forEach((item) => {
877
+ if (item["area"] && item["area"] === "department")
878
+ department.push(String(item?.key));
879
+ else if (item["area"] && item["area"] === "shop")
880
+ shop[String(item?.key)] = true;
881
+ else if (item["area"] && item["area"] === "staff")
882
+ staff[String(item?.key)] = true;
883
+ else if (item["area"] && item["area"] === "group")
884
+ group[String(item?.key)] = true;
885
+ });
886
+ selectState.departmentChecked = department;
887
+ selectState.shopChecked = shop;
888
+ selectState.staffsChecked = staff;
889
+ selectState.groupChecked = group;
890
+ }
891
+ }
892
+ } else {
893
+ selected.value = [];
894
+ selectState.multipleChecked = {};
895
+ selectState.departmentChecked = [];
896
+ selectState.shopChecked = {};
897
+ selectState.staffsChecked = {};
898
+ selectState.groupChecked = {};
899
+ selectState.activeKey = 0;
900
+ }
877
901
  if (val && props.immediateFetch) {
878
- methods.fetch({});
902
+ fetch({});
879
903
  }
880
904
  },
881
- { immediate: true }
905
+ { immediate: true, deep: true }
882
906
  );
883
- return {
884
- ...methods,
885
- ...toRefs(state)
907
+ return (_ctx, _cache) => {
908
+ return openBlock(), createBlock(unref(AModal), {
909
+ class: "staffs-selector-modal",
910
+ title: _ctx.title,
911
+ visible: _ctx.visible,
912
+ width: unref(width),
913
+ "ok-text": "\u786E\u5B9A",
914
+ "cancel-text": "\u53D6\u6D88",
915
+ "destroy-on-close": true,
916
+ onCancel: modalCancel,
917
+ onOk: summitSelect
918
+ }, {
919
+ default: withCtx(() => [
920
+ createElementVNode("div", _hoisted_1, [
921
+ _ctx.mode === "radio" ? (openBlock(), createBlock(radioCmp, {
922
+ key: 0,
923
+ selected: selected.value,
924
+ "onUpdate:selected": _cache[0] || (_cache[0] = ($event) => selected.value = $event),
925
+ list: unref(list),
926
+ onFetchList: fetch
927
+ }, null, 8, ["selected", "list"])) : _ctx.mode === "varied" ? (openBlock(), createBlock(VariedCmp, {
928
+ key: 1,
929
+ selected: selected.value,
930
+ "onUpdate:selected": _cache[1] || (_cache[1] = ($event) => selected.value = $event),
931
+ list: unref(list),
932
+ "show-count": _ctx.showCount,
933
+ onFetchList: fetch
934
+ }, null, 8, ["selected", "list", "show-count"])) : (openBlock(), createBlock(multipleCmp, {
935
+ key: 2,
936
+ selected: selected.value,
937
+ "onUpdate:selected": _cache[2] || (_cache[2] = ($event) => selected.value = $event),
938
+ limit: _ctx.limit,
939
+ list: unref(list),
940
+ "is-tree": multipTree.value,
941
+ onFetchList: fetch
942
+ }, null, 8, ["selected", "limit", "list", "is-tree"])),
943
+ ["multiple", "varied"].includes(_ctx.mode) ? (openBlock(), createElementBlock("div", _hoisted_2, [
944
+ _ctx.showCount ? (openBlock(), createElementBlock("div", _hoisted_3, [
945
+ createElementVNode("span", null, "\u5DF2\u9009\u62E9" + toDisplayString(unref(computeSelected) && unref(computeSelected).length || 0) + toDisplayString(_ctx.$props.unitStr), 1),
946
+ _ctx.limit ? (openBlock(), createElementBlock("span", _hoisted_4, "\u6700\u591A\u9009\u62E9" + toDisplayString(_ctx.limit) + toDisplayString(_ctx.$props.unitStr), 1)) : createCommentVNode("v-if", true)
947
+ ])) : createCommentVNode("v-if", true),
948
+ createElementVNode("div", _hoisted_5, [
949
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(computeSelected), (item) => {
950
+ return openBlock(), createElementBlock("div", {
951
+ key: item + "checked",
952
+ class: "__chosen-panel-list-item"
953
+ }, [
954
+ createElementVNode("span", _hoisted_6, toDisplayString(getOptionName(item)), 1),
955
+ createVNode(unref(CloseCircleFilled), {
956
+ style: { "color": "#ced1d9" },
957
+ onMousedown: withModifiers(($event) => deleteOptions(item), ["stop"])
958
+ }, null, 8, ["onMousedown"])
959
+ ]);
960
+ }), 128))
961
+ ])
962
+ ])) : createCommentVNode("v-if", true)
963
+ ])
964
+ ]),
965
+ _: 1
966
+ }, 8, ["title", "visible", "width"]);
886
967
  };
887
968
  }
888
969
  });
889
- const _hoisted_1 = { class: "selector-content" };
890
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
891
- const _component_radioCmp = resolveComponent("radioCmp");
892
- const _component_VariedCmp = resolveComponent("VariedCmp");
893
- const _component_multipleCmp = resolveComponent("multipleCmp");
894
- const _component_AModal = resolveComponent("AModal");
895
- return openBlock(), createBlock(_component_AModal, {
896
- class: "staffs-selector-modal",
897
- title: _ctx.title,
898
- visible: _ctx.visible,
899
- width: _ctx.width,
900
- "ok-text": "\u786E\u5B9A",
901
- "cancel-text": "\u53D6\u6D88",
902
- "destroy-on-close": true,
903
- onCancel: _ctx.modalCancel,
904
- onOk: _ctx.summitSelect
905
- }, {
906
- default: withCtx(() => [
907
- createElementVNode("div", _hoisted_1, [
908
- _ctx.mode === "radio" ? (openBlock(), createBlock(_component_radioCmp, {
909
- key: 0,
910
- selected: _ctx.selected,
911
- "onUpdate:selected": _cache[0] || (_cache[0] = ($event) => _ctx.selected = $event),
912
- list: _ctx.list,
913
- onFetchList: _ctx.fetch
914
- }, null, 8, ["selected", "list", "onFetchList"])) : _ctx.mode === "varied" ? (openBlock(), createBlock(_component_VariedCmp, {
915
- key: 1,
916
- selected: _ctx.selected,
917
- "onUpdate:selected": _cache[1] || (_cache[1] = ($event) => _ctx.selected = $event),
918
- list: _ctx.list,
919
- "curlist-keys": _ctx.curlistKeys,
920
- "data-map": _ctx.dataMap,
921
- onFetchList: _ctx.fetch
922
- }, null, 8, ["selected", "list", "curlist-keys", "data-map", "onFetchList"])) : (openBlock(), createBlock(_component_multipleCmp, {
923
- key: 2,
924
- selected: _ctx.selected,
925
- "onUpdate:selected": _cache[2] || (_cache[2] = ($event) => _ctx.selected = $event),
926
- limit: _ctx.limit,
927
- list: _ctx.list,
928
- "curlist-keys": _ctx.curlistKeys,
929
- "is-tree": _ctx.multipTree,
930
- "data-map": _ctx.dataMap,
931
- "show-count": _ctx.showCount,
932
- "unit-str": _ctx.unitStr,
933
- onFetchList: _ctx.fetch
934
- }, null, 8, ["selected", "limit", "list", "curlist-keys", "is-tree", "data-map", "show-count", "unit-str", "onFetchList"]))
935
- ])
936
- ]),
937
- _: 1
938
- }, 8, ["title", "visible", "width", "onCancel", "onOk"]);
939
- }
940
- var staffsSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "staffs-selector.vue"]]);
970
+ var staffsSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "staffs-selector.vue"]]);
941
971
 
942
972
  const BmStaffsSelector = withInstall(staffsSelector);
943
973