hy-dispatch-ui-v3 0.2.65 → 0.2.67

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 (144) hide show
  1. package/dist/tailwind.css +51 -13
  2. package/es/api/organization.mjs +43 -0
  3. package/es/bussiness/hyAcquisitionStationTree/acquisitionStationTree.vue.mjs +245 -0
  4. package/es/bussiness/hyAcquisitionStationTree/index.mjs +7 -0
  5. package/es/bussiness/hyAcquisitionStationTree/js/index.mjs +124 -0
  6. package/es/bussiness/hyAcquisitionStationTree/style/acquisitionStationTree.scss +0 -0
  7. package/es/bussiness/hyDeviceTree/deviceTree.vue.mjs +249 -0
  8. package/es/bussiness/hyDeviceTree/index.mjs +7 -0
  9. package/es/bussiness/hyDeviceTree/js/index.mjs +126 -0
  10. package/es/bussiness/hyDeviceTree/style/deviceTree.scss +0 -0
  11. package/es/bussiness/hyOrgGroupTree/index.mjs +7 -0
  12. package/es/bussiness/hyOrgGroupTree/js/index.mjs +124 -0
  13. package/es/bussiness/hyOrgGroupTree/orgGroupTree.vue.mjs +245 -0
  14. package/es/bussiness/hyOrgGroupTree/style/orgGroupTree.scss +0 -0
  15. package/es/bussiness/hyPlanGroupDeviceTree/index.mjs +7 -0
  16. package/es/bussiness/hyPlanGroupDeviceTree/js/index.mjs +124 -0
  17. package/es/bussiness/hyPlanGroupDeviceTree/planGroupDeviceTree.vue.mjs +245 -0
  18. package/es/bussiness/hyPlanGroupDeviceTree/style/planGroupDeviceTree.scss +0 -0
  19. package/es/bussiness/hyUserTree/index.mjs +7 -0
  20. package/es/bussiness/hyUserTree/js/index.mjs +126 -0
  21. package/es/bussiness/hyUserTree/style/userTree.scss +0 -0
  22. package/es/bussiness/hyUserTree/userTree.vue.mjs +239 -0
  23. package/es/bussiness/index.mjs +5 -0
  24. package/es/components/hyBatchUploadDialog/batchUploadDialog.vue.mjs +183 -149
  25. package/es/components/hyButton/button.vue.mjs +19 -5
  26. package/es/components/hyButton/style/button.scss +72 -0
  27. package/es/components/hyConfirmDialog/confirmDialog.vue.mjs +1 -2
  28. package/es/components/hyForm/cpns/formItem.vue.mjs +254 -32
  29. package/es/components/hyForm/cpns/locationSelect.vue.mjs +8 -1
  30. package/es/components/hyForm/form.vue.mjs +88 -19
  31. package/es/components/hyForm/js/index.mjs +2 -1
  32. package/es/components/hyForm/js/useAppForm.mjs +3 -3
  33. package/es/components/hyIcon/style/icon.scss +1 -0
  34. package/es/components/hyMap/js/index.mjs +6 -6
  35. package/es/components/hyMap/map.vue.mjs +14 -4
  36. package/es/components/hyNoPermissions/noPermissions.vue.mjs +1 -1
  37. package/es/components/hyNoPermissionsMap/noPermissionsMap.vue.mjs +1 -1
  38. package/es/components/hyOrgCascader/orgCascader.vue.mjs +75 -15
  39. package/es/components/hyRadioGroup/radioGroup.vue.mjs +5 -4
  40. package/es/components/hySearch/cpns/searchItem.vue.mjs +434 -206
  41. package/es/components/hySearch/js/index.mjs +2 -1
  42. package/es/components/hySearch/search.vue.mjs +71 -10
  43. package/es/components/hySearch/style/search.scss +7 -0
  44. package/es/components/hyTable/cpns/columnSelect.vue.mjs +21 -22
  45. package/es/components/hyTable/cpns/virtualTable.vue.mjs +35 -21
  46. package/es/components/hyTable/js/index.mjs +16 -17
  47. package/es/components/hyTable/js/search.mjs +28 -2
  48. package/es/components/hyTable/style/table.scss +13 -0
  49. package/es/components/hyTable/table.vue.mjs +55 -22
  50. package/es/components/hyTableActionButton/tableActionButton.vue.mjs +17 -12
  51. package/es/components/hyTableForm/batchTableForm.vue.mjs +36 -5
  52. package/es/components/hyTableForm/js/useAppTableForm.mjs +1 -1
  53. package/es/components/hyTableForm/tableForm.vue.mjs +84 -32
  54. package/es/components/hyTour/index.mjs +7 -0
  55. package/es/components/hyTour/style/tour.scss +0 -0
  56. package/es/components/hyTour/tour.vue.mjs +23 -0
  57. package/es/components/hyTree/config/tree-config.mjs +5 -2
  58. package/es/components/hyTree/js/index.mjs +128 -56
  59. package/es/components/hyTree/tree.vue.mjs +22 -37
  60. package/es/components/index.mjs +1 -0
  61. package/es/index.mjs +6 -0
  62. package/es/static/hy-svg-icons/hy-icon-ops-linear-arrow.js +10 -0
  63. package/es/style/element/hy-element.scss +24 -3
  64. package/es/style/index.scss +0 -1
  65. package/es/style/tailwind.scss +0 -1
  66. package/es/style/theme.scss +1 -0
  67. package/es/utils/is.mjs +3 -1
  68. package/es/utils/map/hook/bigMap.mjs +11 -1
  69. package/es/utils/map/hook/gaode.mjs +60 -17
  70. package/es/utils/map/hook/leafletjs.mjs +25 -4
  71. package/es/utils/map/index.mjs +1 -1
  72. package/es/version.mjs +1 -1
  73. package/lib/api/organization.js +47 -0
  74. package/lib/bussiness/hyAcquisitionStationTree/acquisitionStationTree.vue.js +249 -0
  75. package/lib/bussiness/hyAcquisitionStationTree/index.js +12 -0
  76. package/lib/bussiness/hyAcquisitionStationTree/js/index.js +126 -0
  77. package/lib/bussiness/hyAcquisitionStationTree/style/acquisitionStationTree.scss +0 -0
  78. package/lib/bussiness/hyDeviceTree/deviceTree.vue.js +253 -0
  79. package/lib/bussiness/hyDeviceTree/index.js +12 -0
  80. package/lib/bussiness/hyDeviceTree/js/index.js +128 -0
  81. package/lib/bussiness/hyDeviceTree/style/deviceTree.scss +0 -0
  82. package/lib/bussiness/hyOrgGroupTree/index.js +12 -0
  83. package/lib/bussiness/hyOrgGroupTree/js/index.js +126 -0
  84. package/lib/bussiness/hyOrgGroupTree/orgGroupTree.vue.js +249 -0
  85. package/lib/bussiness/hyOrgGroupTree/style/orgGroupTree.scss +0 -0
  86. package/lib/bussiness/hyPlanGroupDeviceTree/index.js +12 -0
  87. package/lib/bussiness/hyPlanGroupDeviceTree/js/index.js +126 -0
  88. package/lib/bussiness/hyPlanGroupDeviceTree/planGroupDeviceTree.vue.js +249 -0
  89. package/lib/bussiness/hyPlanGroupDeviceTree/style/planGroupDeviceTree.scss +0 -0
  90. package/lib/bussiness/hyUserTree/index.js +12 -0
  91. package/lib/bussiness/hyUserTree/js/index.js +128 -0
  92. package/lib/bussiness/hyUserTree/style/userTree.scss +0 -0
  93. package/lib/bussiness/hyUserTree/userTree.vue.js +243 -0
  94. package/lib/bussiness/index.js +14 -4
  95. package/lib/components/hyBatchUploadDialog/batchUploadDialog.vue.js +182 -148
  96. package/lib/components/hyButton/button.vue.js +18 -4
  97. package/lib/components/hyButton/style/button.scss +72 -0
  98. package/lib/components/hyConfirmDialog/confirmDialog.vue.js +0 -1
  99. package/lib/components/hyForm/cpns/formItem.vue.js +250 -28
  100. package/lib/components/hyForm/cpns/locationSelect.vue.js +8 -1
  101. package/lib/components/hyForm/form.vue.js +86 -17
  102. package/lib/components/hyForm/js/index.js +2 -0
  103. package/lib/components/hyForm/js/useAppForm.js +3 -3
  104. package/lib/components/hyIcon/style/icon.scss +1 -0
  105. package/lib/components/hyMap/js/index.js +5 -5
  106. package/lib/components/hyMap/map.vue.js +13 -3
  107. package/lib/components/hyNoPermissions/noPermissions.vue.js +1 -1
  108. package/lib/components/hyNoPermissionsMap/noPermissionsMap.vue.js +1 -1
  109. package/lib/components/hyOrgCascader/orgCascader.vue.js +73 -13
  110. package/lib/components/hyRadioGroup/radioGroup.vue.js +5 -4
  111. package/lib/components/hySearch/cpns/searchItem.vue.js +431 -203
  112. package/lib/components/hySearch/js/index.js +2 -0
  113. package/lib/components/hySearch/search.vue.js +69 -8
  114. package/lib/components/hySearch/style/search.scss +7 -0
  115. package/lib/components/hyTable/cpns/columnSelect.vue.js +20 -21
  116. package/lib/components/hyTable/cpns/virtualTable.vue.js +51 -37
  117. package/lib/components/hyTable/js/index.js +16 -16
  118. package/lib/components/hyTable/js/search.js +28 -2
  119. package/lib/components/hyTable/style/table.scss +13 -0
  120. package/lib/components/hyTable/table.vue.js +53 -20
  121. package/lib/components/hyTableActionButton/tableActionButton.vue.js +16 -11
  122. package/lib/components/hyTableForm/batchTableForm.vue.js +36 -5
  123. package/lib/components/hyTableForm/js/useAppTableForm.js +1 -1
  124. package/lib/components/hyTableForm/tableForm.vue.js +85 -33
  125. package/lib/components/hyTour/index.js +12 -0
  126. package/lib/components/hyTour/style/tour.scss +0 -0
  127. package/lib/components/hyTour/tour.vue.js +27 -0
  128. package/lib/components/hyTree/config/tree-config.js +5 -2
  129. package/lib/components/hyTree/js/index.js +128 -56
  130. package/lib/components/hyTree/tree.vue.js +22 -37
  131. package/lib/components/index.js +8 -6
  132. package/lib/index.js +67 -55
  133. package/lib/static/hy-svg-icons/hy-icon-ops-linear-arrow.js +10 -0
  134. package/lib/style/element/hy-element.scss +24 -3
  135. package/lib/style/index.scss +0 -1
  136. package/lib/style/tailwind.scss +0 -1
  137. package/lib/style/theme.scss +1 -0
  138. package/lib/utils/is.js +5 -3
  139. package/lib/utils/map/hook/bigMap.js +11 -1
  140. package/lib/utils/map/hook/gaode.js +60 -17
  141. package/lib/utils/map/hook/leafletjs.js +25 -4
  142. package/lib/utils/map/index.js +1 -1
  143. package/lib/version.js +1 -1
  144. package/package.json +2 -2
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var elementPlus = require('element-plus');
7
+ var iconsVue = require('@element-plus/icons-vue');
7
8
  require('../../../utils/index.js');
8
9
  require('../../index.js');
9
10
  var index = require('../js/index.js');
@@ -64,7 +65,18 @@ const _sfc_main = {
64
65
  setup(__props) {
65
66
  const { t } = useLocale.useLocale();
66
67
  const props = __props;
68
+ const formContext = vue.inject(index.formContextKey);
67
69
  const formItemRef = vue.useTemplateRef("formItemRef");
70
+ const orgCascaderRef = vue.useTemplateRef("orgCascaderRef");
71
+ const showMessage = vue.computed(() => {
72
+ if (columnConfig.value.optionsError) {
73
+ return true;
74
+ }
75
+ if (is.isBoolean(columnConfig.value.showMessage)) {
76
+ return columnConfig.value.showMessage;
77
+ }
78
+ return formContext.showMessage;
79
+ });
68
80
  const columnProp = vue.computed(() => {
69
81
  let field = is.isArray(props.column.field) ? props.column.field[0] : props.column.field;
70
82
  if (props.parentProp) {
@@ -72,6 +84,10 @@ const _sfc_main = {
72
84
  }
73
85
  return field;
74
86
  });
87
+ const propString = vue.computed(() => {
88
+ if (!columnProp.value) return "";
89
+ return is.isArray(columnProp.value) ? columnProp.value.join(".") : columnProp.value;
90
+ });
75
91
  const bindValue = vue.computed({
76
92
  get() {
77
93
  const prop = is.isArray(props.column.field) ? props.column.field[0] : props.column.field;
@@ -92,6 +108,12 @@ const _sfc_main = {
92
108
  form.setValueByProp(props.model, prop, val);
93
109
  }
94
110
  });
111
+ const columnConfig = vue.computed(() => {
112
+ return {
113
+ ...props.column,
114
+ attrs: columnAttrs.value
115
+ };
116
+ });
95
117
  const columnAttrs = vue.computed(() => {
96
118
  return {
97
119
  ...props.column.attrs,
@@ -99,6 +121,55 @@ const _sfc_main = {
99
121
  placeholder: form.columnPlaceholderHandler(props.column, props.model)
100
122
  };
101
123
  });
124
+ async function obtainOptions(isMountedLoad = false) {
125
+ return new Promise(async (resolve, reject) => {
126
+ if (props.column.optionsFn) {
127
+ if (!props.column.optionsFn) return;
128
+ props.column.optionsLoading = true;
129
+ props.column.optionsError = "";
130
+ props.column.attrs.options = [];
131
+ if (!(isMountedLoad && props.column.isDefaultGetData === false)) {
132
+ try {
133
+ props.column.attrs.options = await props.column.optionsFn(
134
+ props.column,
135
+ props.model
136
+ );
137
+ props.column.optionsError = "";
138
+ resolve();
139
+ } catch (err) {
140
+ props.column.optionsError = "error";
141
+ console.error(err);
142
+ reject();
143
+ }
144
+ } else {
145
+ resolve();
146
+ }
147
+ } else if (props.column.type === "org-cascader") {
148
+ if (orgCascaderRef.value) {
149
+ props.column.optionsLoading = true;
150
+ props.column.optionsError = "";
151
+ try {
152
+ await orgCascaderRef.value.getData();
153
+ resolve();
154
+ } catch {
155
+ props.column.optionsError = "error";
156
+ reject();
157
+ }
158
+ } else {
159
+ resolve();
160
+ }
161
+ } else {
162
+ resolve();
163
+ }
164
+ props.column.optionsLoading = false;
165
+ });
166
+ }
167
+ function getOptionsHandler(props2, column) {
168
+ if (props2.column.optionsLoading) {
169
+ return [];
170
+ }
171
+ return index.optionsHandler(props2, props2.column);
172
+ }
102
173
  function getColumnRuleHandler(column, model) {
103
174
  if (!index.isRequired(props, column) && formItemRef.value) {
104
175
  formItemRef.value.clearValidate();
@@ -108,8 +179,51 @@ const _sfc_main = {
108
179
  function onChangeHandler() {
109
180
  const { onChange } = props.column;
110
181
  if (!onChange) return;
111
- onChange(props.column, props.model);
182
+ onChange(props.column, props.model, props.index);
183
+ }
184
+ async function onReloadOptions() {
185
+ if (props.column.optionsError === "error") {
186
+ try {
187
+ await obtainOptions();
188
+ } catch {
189
+ }
190
+ formContext?.emitOptionsStatus();
191
+ }
112
192
  }
193
+ const context = vue.reactive({
194
+ ...vue.toRefs(props),
195
+ columnProp,
196
+ propString,
197
+ columnConfig,
198
+ columnAttrs,
199
+ obtainOptions,
200
+ optionsLoading: vue.computed(() => props.column.optionsLoading),
201
+ optionsError: vue.computed(() => props.column.optionsError),
202
+ options: vue.computed(() => {
203
+ return getOptionsHandler(props, props.column);
204
+ })
205
+ });
206
+ vue.onMounted(() => {
207
+ if (propString.value) {
208
+ formContext?.addField(context);
209
+ }
210
+ vue.watch(
211
+ () => formContext.model.errorMsg,
212
+ () => {
213
+ const optionsError = props.column.optionsError;
214
+ if (optionsError === "error") {
215
+ props.column.optionsError = "";
216
+ setTimeout(() => {
217
+ props.column.optionsError = "error";
218
+ }, 1);
219
+ }
220
+ },
221
+ { immediate: true, deep: true }
222
+ );
223
+ });
224
+ vue.onBeforeUnmount(() => {
225
+ formContext?.removeField(context);
226
+ });
113
227
  return (_ctx, _cache) => {
114
228
  return !vue.unref(index.columnVisibleHandler)(props, __props.column) ? (vue.openBlock(), vue.createElementBlock("div", {
115
229
  key: 0,
@@ -126,14 +240,15 @@ const _sfc_main = {
126
240
  id: __props.column.id,
127
241
  prop: columnProp.value,
128
242
  rules: getColumnRuleHandler(__props.column, props.model),
129
- style: vue.normalizeStyle(vue.unref(index.columnItemStyle)(props, __props.column))
130
- }, {
243
+ style: vue.normalizeStyle(vue.unref(index.columnItemStyle)(props, __props.column)),
244
+ error: __props.column.optionsError,
245
+ "show-message": showMessage.value
246
+ }, vue.createSlots({
131
247
  default: vue.withCtx(() => [
132
- vue.createCommentVNode(" \u8868\u5355\u9879label "),
133
248
  vue.createElementVNode("div", { class: "w-full flex justify-between text-main" }, [
134
249
  vue.createElementVNode("div", { class: "flex items-center" }, [
135
250
  vue.renderSlot(_ctx.$slots, __props.column.labelSlot, {
136
- column: __props.column,
251
+ column: columnConfig.value,
137
252
  model: __props.model,
138
253
  required: vue.unref(index.isRequired)(props, __props.column)
139
254
  }, () => [
@@ -162,7 +277,11 @@ const _sfc_main = {
162
277
  1
163
278
  /* TEXT */
164
279
  )) : vue.createCommentVNode("v-if", true),
165
- vue.renderSlot(_ctx.$slots, __props.column.tooltipContentSlot)
280
+ vue.renderSlot(_ctx.$slots, __props.column.tooltipContentSlot, {
281
+ column: columnConfig.value,
282
+ model: __props.model,
283
+ required: vue.unref(index.isRequired)(props, __props.column)
284
+ })
166
285
  ]),
167
286
  default: vue.withCtx(() => [
168
287
  vue.createElementVNode("span", { class: "text-xs text-theme ml-2" }, [
@@ -188,13 +307,12 @@ const _sfc_main = {
188
307
  class: "ml-2 flex items-center"
189
308
  }, [
190
309
  vue.renderSlot(_ctx.$slots, __props.column.rightSlot, {
191
- column: __props.column,
310
+ column: columnConfig.value,
192
311
  model: __props.model,
193
312
  required: vue.unref(index.isRequired)(props, __props.column)
194
313
  })
195
314
  ])) : vue.createCommentVNode("v-if", true)
196
315
  ]),
197
- vue.createCommentVNode(" \u5185\u5BB9\u4EC5\u67E5\u770B "),
198
316
  vue.unref(index.isReadonly)(props, __props.column) || !__props.column.type && !__props.column.slot ? (vue.openBlock(), vue.createElementBlock(
199
317
  "div",
200
318
  {
@@ -230,9 +348,10 @@ const _sfc_main = {
230
348
  vue.Fragment,
231
349
  { key: 1 },
232
350
  [
351
+ vue.createCommentVNode(" \u8868\u5355\u9879 "),
233
352
  vue.createCommentVNode(" \u81EA\u5B9A\u4E49\u5177\u540D\u63D2\u69FD "),
234
353
  __props.column.slot && _ctx.$slots[__props.column.slot] ? vue.renderSlot(_ctx.$slots, __props.column.slot, {
235
- column: __props.column,
354
+ column: columnConfig.value,
236
355
  model: __props.model,
237
356
  required: vue.unref(index.isRequired)(props, __props.column)
238
357
  }, void 0, void 0, 0) : __props.column.type === "input" ? (vue.openBlock(), vue.createElementBlock(
@@ -260,15 +379,77 @@ const _sfc_main = {
260
379
  "onUpdate:modelValue": ($event) => bindValue.value = $event
261
380
  }, columnAttrs.value, {
262
381
  disabled: vue.unref(index.isDisabled)(props, __props.column),
263
- options: vue.unref(index.optionsHandler)(props, __props.column),
382
+ options: getOptionsHandler(props, __props.column),
264
383
  onChange: onChangeHandler
265
- }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
384
+ }), vue.createSlots({
385
+ _: 2
386
+ /* DYNAMIC */
387
+ }, [
388
+ __props.column.optionsLoading ? {
389
+ name: "empty",
390
+ fn: vue.withCtx(() => [
391
+ vue.createElementVNode("div", { class: "w-full flex items-center justify-center py-2 gap-1.5 text-main text-xs whitespace-nowrap" }, [
392
+ vue.createVNode(vue.unref(elementPlus.ElIcon), {
393
+ size: "16",
394
+ class: "is-loading text-theme"
395
+ }, {
396
+ default: vue.withCtx(() => [
397
+ vue.createVNode(vue.unref(iconsVue.Loading))
398
+ ]),
399
+ _: 1
400
+ /* STABLE */
401
+ }),
402
+ vue.createElementVNode("span", null, "\u6570\u636E\u6B63\u5728\u52A0\u8F7D\u4E2D")
403
+ ])
404
+ ]),
405
+ key: "0"
406
+ } : void 0
407
+ ]), 1040, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
266
408
  ],
267
409
  2112
268
410
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
269
- )) : __props.column.type === "date-picker" ? (vue.openBlock(), vue.createElementBlock(
411
+ )) : __props.column.type === "select-v2" ? (vue.openBlock(), vue.createElementBlock(
270
412
  vue.Fragment,
271
413
  { key: 3 },
414
+ [
415
+ vue.createCommentVNode(" \u865A\u62DF\u5316\u9009\u62E9\u6846 "),
416
+ vue.createVNode(vue.unref(elementPlus.ElSelectV2), vue.mergeProps({
417
+ modelValue: bindValue.value,
418
+ "onUpdate:modelValue": ($event) => bindValue.value = $event
419
+ }, columnAttrs.value, {
420
+ disabled: vue.unref(index.isDisabled)(props, __props.column),
421
+ options: getOptionsHandler(props, __props.column),
422
+ onChange: onChangeHandler
423
+ }), vue.createSlots({
424
+ _: 2
425
+ /* DYNAMIC */
426
+ }, [
427
+ __props.column.optionsLoading ? {
428
+ name: "empty",
429
+ fn: vue.withCtx(() => [
430
+ vue.createElementVNode("div", { class: "w-full flex items-center justify-center py-2 gap-1.5 text-main text-xs whitespace-nowrap" }, [
431
+ vue.createVNode(vue.unref(elementPlus.ElIcon), {
432
+ size: "16",
433
+ class: "is-loading text-theme"
434
+ }, {
435
+ default: vue.withCtx(() => [
436
+ vue.createVNode(vue.unref(iconsVue.Loading))
437
+ ]),
438
+ _: 1
439
+ /* STABLE */
440
+ }),
441
+ vue.createElementVNode("span", null, "\u6570\u636E\u6B63\u5728\u52A0\u8F7D\u4E2D")
442
+ ])
443
+ ]),
444
+ key: "0"
445
+ } : void 0
446
+ ]), 1040, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
447
+ ],
448
+ 2112
449
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
450
+ )) : __props.column.type === "date-picker" ? (vue.openBlock(), vue.createElementBlock(
451
+ vue.Fragment,
452
+ { key: 4 },
272
453
  [
273
454
  vue.createCommentVNode(" \u65E5\u671F\u9009\u62E9\u6846 "),
274
455
  ["datetimerange", "daterange", "monthrange", "yearrange"].includes(
@@ -301,7 +482,7 @@ const _sfc_main = {
301
482
  /* STABLE_FRAGMENT */
302
483
  )) : __props.column.type === "time-picker" ? (vue.openBlock(), vue.createElementBlock(
303
484
  vue.Fragment,
304
- { key: 4 },
485
+ { key: 5 },
305
486
  [
306
487
  vue.createCommentVNode(" \u65F6\u95F4\u9009\u62E9\u6846 "),
307
488
  columnAttrs.value.isRange ? (vue.openBlock(), vue.createBlock(vue.unref(index$5.HyTimePicker), vue.mergeProps({
@@ -332,7 +513,7 @@ const _sfc_main = {
332
513
  /* STABLE_FRAGMENT */
333
514
  )) : __props.column.type === "radio" ? (vue.openBlock(), vue.createElementBlock(
334
515
  vue.Fragment,
335
- { key: 5 },
516
+ { key: 6 },
336
517
  [
337
518
  vue.createCommentVNode(" \u5355\u9009 "),
338
519
  vue.createVNode(vue.unref(elementPlus.ElRadioGroup), vue.mergeProps({
@@ -340,7 +521,7 @@ const _sfc_main = {
340
521
  "onUpdate:modelValue": ($event) => bindValue.value = $event
341
522
  }, columnAttrs.value, {
342
523
  disabled: vue.unref(index.isDisabled)(props, __props.column),
343
- options: vue.unref(index.optionsHandler)(props, __props.column),
524
+ options: getOptionsHandler(props, __props.column),
344
525
  onChange: onChangeHandler
345
526
  }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
346
527
  ],
@@ -348,7 +529,7 @@ const _sfc_main = {
348
529
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
349
530
  )) : __props.column.type === "radio-group" ? (vue.openBlock(), vue.createElementBlock(
350
531
  vue.Fragment,
351
- { key: 6 },
532
+ { key: 7 },
352
533
  [
353
534
  vue.createCommentVNode(" \u5355\u9009\u6309\u94AE "),
354
535
  vue.createVNode(vue.unref(index$6.HyRadioGroup), vue.mergeProps({
@@ -356,7 +537,7 @@ const _sfc_main = {
356
537
  "onUpdate:modelValue": ($event) => bindValue.value = $event
357
538
  }, columnAttrs.value, {
358
539
  disabled: vue.unref(index.isDisabled)(props, __props.column),
359
- options: vue.unref(index.optionsHandler)(props, __props.column),
540
+ options: getOptionsHandler(props, __props.column),
360
541
  size: __props.size,
361
542
  onChange: onChangeHandler
362
543
  }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "options", "size"])
@@ -365,7 +546,7 @@ const _sfc_main = {
365
546
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
366
547
  )) : __props.column.type === "checkbox" ? (vue.openBlock(), vue.createElementBlock(
367
548
  vue.Fragment,
368
- { key: 7 },
549
+ { key: 8 },
369
550
  [
370
551
  vue.createCommentVNode(" \u591A\u9009 "),
371
552
  vue.createVNode(vue.unref(elementPlus.ElCheckboxGroup), vue.mergeProps({
@@ -373,7 +554,7 @@ const _sfc_main = {
373
554
  "onUpdate:modelValue": ($event) => bindValue.value = $event
374
555
  }, columnAttrs.value, {
375
556
  disabled: vue.unref(index.isDisabled)(props, __props.column),
376
- options: vue.unref(index.optionsHandler)(props, __props.column),
557
+ options: getOptionsHandler(props, __props.column),
377
558
  onChange: onChangeHandler
378
559
  }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
379
560
  ],
@@ -381,7 +562,7 @@ const _sfc_main = {
381
562
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
382
563
  )) : __props.column.type === "switch" ? (vue.openBlock(), vue.createElementBlock(
383
564
  vue.Fragment,
384
- { key: 8 },
565
+ { key: 9 },
385
566
  [
386
567
  vue.createCommentVNode(" \u5F00\u5173 "),
387
568
  vue.createVNode(vue.unref(elementPlus.ElSwitch), vue.mergeProps({
@@ -399,7 +580,7 @@ const _sfc_main = {
399
580
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
400
581
  )) : __props.column.type === "input-number" ? (vue.openBlock(), vue.createElementBlock(
401
582
  vue.Fragment,
402
- { key: 9 },
583
+ { key: 10 },
403
584
  [
404
585
  vue.createCommentVNode(" \u6570\u5B57\u8F93\u5165\u6846 "),
405
586
  vue.createVNode(vue.unref(elementPlus.ElInputNumber), vue.mergeProps({
@@ -414,10 +595,12 @@ const _sfc_main = {
414
595
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
415
596
  )) : __props.column.type === "org-cascader" ? (vue.openBlock(), vue.createElementBlock(
416
597
  vue.Fragment,
417
- { key: 10 },
598
+ { key: 11 },
418
599
  [
419
600
  vue.createCommentVNode(" \u90E8\u95E8\u7EA7\u8054\u9009\u62E9\u6846 "),
420
601
  vue.createVNode(vue.unref(index$7.HyOrgCascader), vue.mergeProps({
602
+ ref_key: "orgCascaderRef",
603
+ ref: orgCascaderRef,
421
604
  modelValue: bindValue.value,
422
605
  "onUpdate:modelValue": ($event) => bindValue.value = $event,
423
606
  class: "w-full"
@@ -430,17 +613,41 @@ const _sfc_main = {
430
613
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
431
614
  )) : __props.column.type === "cascader" ? (vue.openBlock(), vue.createElementBlock(
432
615
  vue.Fragment,
433
- { key: 11 },
616
+ { key: 12 },
434
617
  [
435
618
  vue.createCommentVNode(" \u7EA7\u8054\u9009\u62E9\u6846 "),
436
619
  vue.createVNode(vue.unref(elementPlus.ElCascader), vue.mergeProps({
437
620
  modelValue: bindValue.value,
438
621
  "onUpdate:modelValue": ($event) => bindValue.value = $event
439
622
  }, columnAttrs.value, {
623
+ class: "w-full",
440
624
  disabled: vue.unref(index.isDisabled)(props, __props.column),
441
- options: vue.unref(index.optionsHandler)(props, __props.column),
625
+ options: getOptionsHandler(props, __props.column),
442
626
  onChange: onChangeHandler
443
- }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
627
+ }), vue.createSlots({
628
+ _: 2
629
+ /* DYNAMIC */
630
+ }, [
631
+ __props.column.optionsLoading ? {
632
+ name: "empty",
633
+ fn: vue.withCtx(() => [
634
+ vue.createElementVNode("div", { class: "w-full flex items-center justify-center py-2 gap-1.5 text-main text-xs whitespace-nowrap" }, [
635
+ vue.createVNode(vue.unref(elementPlus.ElIcon), {
636
+ size: "16",
637
+ class: "is-loading text-theme"
638
+ }, {
639
+ default: vue.withCtx(() => [
640
+ vue.createVNode(vue.unref(iconsVue.Loading))
641
+ ]),
642
+ _: 1
643
+ /* STABLE */
644
+ }),
645
+ vue.createElementVNode("span", null, "\u6570\u636E\u6B63\u5728\u52A0\u8F7D\u4E2D")
646
+ ])
647
+ ]),
648
+ key: "0"
649
+ } : void 0
650
+ ]), 1040, ["modelValue", "onUpdate:modelValue", "disabled", "options"])
444
651
  ],
445
652
  2112
446
653
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
@@ -450,9 +657,24 @@ const _sfc_main = {
450
657
  /* STABLE_FRAGMENT */
451
658
  ))
452
659
  ]),
453
- _: 3
454
- /* FORWARDED */
455
- }, 8, ["id", "prop", "rules", "style"])) : vue.createCommentVNode("v-if", true);
660
+ _: 2
661
+ /* DYNAMIC */
662
+ }, [
663
+ __props.column.optionsError ? {
664
+ name: "error",
665
+ fn: vue.withCtx(() => [
666
+ vue.createElementVNode("div", { class: "hy-el-form-item__error" }, [
667
+ vue.createElementVNode("span", null, "\u6570\u636E\u52A0\u8F7D\u5931\u8D25\uFF0C\u8BF7"),
668
+ vue.createElementVNode("span", {
669
+ class: "text-theme cursor-pointer",
670
+ onClick: onReloadOptions
671
+ }, "[\u91CD\u65B0\u52A0\u8F7D]"),
672
+ vue.createElementVNode("span", null, "\u6216\u8054\u7CFB\u7BA1\u7406\u5458")
673
+ ])
674
+ ]),
675
+ key: "0"
676
+ } : void 0
677
+ ]), 1032, ["id", "prop", "rules", "style", "error", "show-message"])) : vue.createCommentVNode("v-if", true);
456
678
  };
457
679
  }
458
680
  };
@@ -236,6 +236,12 @@ const _sfc_main = {
236
236
  map.setView({ lat, lng }, mapConfig.maxZoom || 18);
237
237
  }
238
238
  }
239
+ function clearMarker() {
240
+ if (marker) {
241
+ marker.remove();
242
+ marker = null;
243
+ }
244
+ }
239
245
  function setMapSize() {
240
246
  emits("setMapSize");
241
247
  setTimeout(() => {
@@ -253,7 +259,8 @@ const _sfc_main = {
253
259
  hyMap = null;
254
260
  });
255
261
  __expose({
256
- setMarker
262
+ setMarker,
263
+ clearMarker
257
264
  });
258
265
  return (_ctx, _cache) => {
259
266
  return vue.openBlock(), vue.createElementBlock("div", { class: "w-full h-full flex flex-col" }, [
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var elementPlus = require('element-plus');
7
- require('@element-plus/icons-vue');
8
7
  require('../../hooks/index.js');
9
8
  require('../../utils/index.js');
10
9
  var formItem = require('./cpns/formItem.vue.js');
@@ -55,12 +54,16 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
55
54
  type: String,
56
55
  default: "default"
57
56
  // 'large' | 'default' | 'small'
57
+ },
58
+ showMessage: {
59
+ type: Boolean,
60
+ default: true
58
61
  }
59
62
  },
60
63
  emits: ["on-allMapSelect", "complete"],
61
64
  setup(__props, { expose: __expose, emit: __emit }) {
62
- const emit = __emit;
63
65
  const props = __props;
66
+ const emits = __emit;
64
67
  const { t } = useLocale.useLocale();
65
68
  const formTemplateRef = vue.useTemplateRef("formTemplateRef");
66
69
  const formColumnMap = vue.computed(() => {
@@ -83,52 +86,118 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
83
86
  const allMapSelect = vue.ref(false);
84
87
  function setMapSize() {
85
88
  allMapSelect.value = !allMapSelect.value;
86
- emit("on-allMapSelect", allMapSelect.value);
89
+ emits("on-allMapSelect", allMapSelect.value);
87
90
  }
88
91
  function complete() {
89
- emit("complete");
92
+ emits("complete");
93
+ }
94
+ const fields = vue.reactive([]);
95
+ function addField(field) {
96
+ fields.push(field);
97
+ }
98
+ const removeField = (field) => {
99
+ if (field.propString) {
100
+ fields.splice(fields.indexOf(field), 1);
101
+ }
102
+ };
103
+ function filterFields(fields2 = [], keys = []) {
104
+ const filterKeys = keys.map((prop) => is.isArray(prop) ? prop.join(".") : prop);
105
+ return filterKeys.length ? fields2.filter(
106
+ (field) => field.propString && filterKeys.includes(field.propString)
107
+ ) : fields2;
108
+ }
109
+ async function obtainOptionsFields(keys, isMountedLoad = false) {
110
+ const filteredFields = filterFields(fields, keys);
111
+ await Promise.allSettled(
112
+ filteredFields.map((field) => field.obtainOptions(isMountedLoad))
113
+ );
114
+ }
115
+ async function getOptions(isMountedLoad = false) {
116
+ await obtainOptionsFields([], isMountedLoad);
117
+ emitOptionsStatus();
118
+ }
119
+ async function getOptionsFields(keys) {
120
+ await obtainOptionsFields(keys);
121
+ emitOptionsStatus();
90
122
  }
123
+ async function getOptionsError() {
124
+ const filteredFields = fields.filter(
125
+ (field) => field.propString && field.optionsError
126
+ );
127
+ await Promise.allSettled(filteredFields.map((field) => field.obtainOptions()));
128
+ emitOptionsStatus();
129
+ }
130
+ function emitOptionsStatus() {
131
+ const hasError = fields.some((item) => item.optionsError === "error");
132
+ emits("optionsStatus", { result: !hasError });
133
+ }
134
+ vue.provide(
135
+ index.formContextKey,
136
+ vue.reactive({
137
+ ...vue.toRefs(props),
138
+ emits,
139
+ addField,
140
+ removeField,
141
+ emitOptionsStatus
142
+ })
143
+ );
144
+ vue.onMounted(() => {
145
+ getOptions(true);
146
+ });
91
147
  __expose({
92
148
  validate: async (callback) => {
93
149
  await vue.nextTick();
94
150
  return vue.unref(formTemplateRef).validate(callback);
95
151
  },
96
- validateField: async (fields) => {
152
+ validateField: async (fields2) => {
97
153
  await vue.nextTick();
98
- return vue.unref(formTemplateRef).validateField(fields);
154
+ return vue.unref(formTemplateRef).validateField(fields2);
99
155
  },
100
- resetFields: async (fields) => {
156
+ resetFields: async (fields2) => {
101
157
  let columns = props.columns || [];
102
- if (fields && fields?.length) {
103
- columns = fields.map((key) => formColumnMap.value.get(key)).filter(Boolean);
158
+ if (fields2 && fields2?.length) {
159
+ columns = fields2.map((key) => formColumnMap.value.get(key)).filter(Boolean);
104
160
  }
105
161
  useAppForm.resetAppFormValue(columns, props.model);
106
- vue.unref(formTemplateRef).clearValidate(fields);
162
+ vue.unref(formTemplateRef).clearValidate(fields2);
107
163
  },
108
- scrollToField: async (fields) => {
164
+ scrollToField: async (fields2) => {
109
165
  await vue.nextTick();
110
- vue.unref(formTemplateRef).scrollToField(fields);
166
+ vue.unref(formTemplateRef).scrollToField(fields2);
111
167
  },
112
- clearValidate: async (fields) => {
168
+ clearValidate: async (fields2) => {
113
169
  await vue.nextTick();
114
- vue.unref(formTemplateRef).clearValidate(fields);
170
+ vue.unref(formTemplateRef).clearValidate(fields2);
115
171
  },
116
172
  fields: vue.computed(() => {
117
173
  return vue.unref(formTemplateRef)?.fields || [];
118
174
  }),
119
- getField: async (fields) => {
175
+ getField: async (fields2) => {
120
176
  await vue.nextTick();
121
- return vue.unref(formTemplateRef).getField(fields);
177
+ return vue.unref(formTemplateRef).getField(fields2);
122
178
  },
123
179
  setMarker: (latlng) => {
124
180
  if (locationSelectRef.value) {
125
181
  is.isArray(locationSelectRef.value) ? locationSelectRef.value.map((item) => item.setMarker(latlng)) : locationSelectRef.value.setMarker(latlng);
126
182
  }
127
- }
183
+ },
184
+ clearMarker: () => {
185
+ if (locationSelectRef.value) {
186
+ is.isArray(locationSelectRef.value) ? locationSelectRef.value.map((item) => item.clearMarker()) : locationSelectRef.value.clearMarker();
187
+ }
188
+ },
128
189
  // setInitialValue: async (value) => {
129
190
  // await nextTick()
130
191
  // unref(formTemplateRef).setInitialValue(value)
131
192
  // }
193
+ getOptions,
194
+ getOptionsFields,
195
+ getOptionsError,
196
+ getOptionsByField: (field) => {
197
+ const [target] = filterFields(fields, [field]);
198
+ if (!target) return null;
199
+ return target.options;
200
+ }
132
201
  });
133
202
  return (_ctx, _cache) => {
134
203
  return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElForm), vue.mergeProps({
@@ -8,6 +8,7 @@ var is = require('../../../utils/is.js');
8
8
  var form = require('../../../utils/form.js');
9
9
  var useLocale = require('../../../hooks/useLocale.js');
10
10
 
11
+ const formContextKey = /* @__PURE__ */ Symbol("formContextKey");
11
12
  function columnItemStyle(props, column) {
12
13
  const style = {};
13
14
  let span = handler.funRunHandler(column.span, column, props.model);
@@ -125,6 +126,7 @@ exports.columnHelpHandler = columnHelpHandler;
125
126
  exports.columnItemStyle = columnItemStyle;
126
127
  exports.columnShowHandler = columnShowHandler;
127
128
  exports.columnVisibleHandler = columnVisibleHandler;
129
+ exports.formContextKey = formContextKey;
128
130
  exports.isDisabled = isDisabled;
129
131
  exports.isReadonly = isReadonly;
130
132
  exports.isRequired = isRequired;