hy-dispatch-ui-v3 0.2.66 → 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 (62) hide show
  1. package/dist/tailwind.css +25 -1
  2. package/es/components/hyBatchUploadDialog/batchUploadDialog.vue.mjs +174 -142
  3. package/es/components/hyButton/button.vue.mjs +16 -3
  4. package/es/components/hyButton/style/button.scss +2 -0
  5. package/es/components/hyForm/cpns/formItem.vue.mjs +96 -46
  6. package/es/components/hyForm/form.vue.mjs +22 -8
  7. package/es/components/hyForm/js/useAppForm.mjs +1 -1
  8. package/es/components/hyMap/js/index.mjs +6 -6
  9. package/es/components/hyMap/map.vue.mjs +14 -4
  10. package/es/components/hyOrgCascader/orgCascader.vue.mjs +7 -2
  11. package/es/components/hySearch/cpns/searchItem.vue.mjs +396 -324
  12. package/es/components/hySearch/search.vue.mjs +17 -7
  13. package/es/components/hySearch/style/search.scss +7 -0
  14. package/es/components/hyTable/cpns/virtualTable.vue.mjs +25 -6
  15. package/es/components/hyTable/js/index.mjs +11 -5
  16. package/es/components/hyTable/js/search.mjs +25 -1
  17. package/es/components/hyTable/table.vue.mjs +34 -13
  18. package/es/components/hyTableActionButton/tableActionButton.vue.mjs +9 -2
  19. package/es/components/hyTableForm/batchTableForm.vue.mjs +23 -2
  20. package/es/components/hyTableForm/js/useAppTableForm.mjs +1 -1
  21. package/es/components/hyTableForm/tableForm.vue.mjs +79 -33
  22. package/es/components/hyTree/js/index.mjs +118 -50
  23. package/es/components/hyTree/tree.vue.mjs +4 -2
  24. package/es/style/index.scss +0 -1
  25. package/es/style/tailwind.scss +0 -1
  26. package/es/utils/is.mjs +3 -1
  27. package/es/utils/map/hook/bigMap.mjs +2 -0
  28. package/es/utils/map/hook/gaode.mjs +51 -16
  29. package/es/utils/map/hook/leafletjs.mjs +15 -3
  30. package/es/utils/map/index.mjs +1 -1
  31. package/es/version.mjs +1 -1
  32. package/lib/components/hyBatchUploadDialog/batchUploadDialog.vue.js +173 -141
  33. package/lib/components/hyButton/button.vue.js +15 -2
  34. package/lib/components/hyButton/style/button.scss +2 -0
  35. package/lib/components/hyForm/cpns/formItem.vue.js +93 -43
  36. package/lib/components/hyForm/form.vue.js +21 -7
  37. package/lib/components/hyForm/js/useAppForm.js +1 -1
  38. package/lib/components/hyMap/js/index.js +5 -5
  39. package/lib/components/hyMap/map.vue.js +13 -3
  40. package/lib/components/hyOrgCascader/orgCascader.vue.js +7 -2
  41. package/lib/components/hySearch/cpns/searchItem.vue.js +394 -322
  42. package/lib/components/hySearch/search.vue.js +17 -7
  43. package/lib/components/hySearch/style/search.scss +7 -0
  44. package/lib/components/hyTable/cpns/virtualTable.vue.js +24 -5
  45. package/lib/components/hyTable/js/index.js +11 -4
  46. package/lib/components/hyTable/js/search.js +25 -1
  47. package/lib/components/hyTable/table.vue.js +33 -12
  48. package/lib/components/hyTableActionButton/tableActionButton.vue.js +9 -2
  49. package/lib/components/hyTableForm/batchTableForm.vue.js +23 -2
  50. package/lib/components/hyTableForm/js/useAppTableForm.js +1 -1
  51. package/lib/components/hyTableForm/tableForm.vue.js +78 -32
  52. package/lib/components/hyTree/js/index.js +118 -50
  53. package/lib/components/hyTree/tree.vue.js +4 -2
  54. package/lib/style/index.scss +0 -1
  55. package/lib/style/tailwind.scss +0 -1
  56. package/lib/utils/is.js +5 -3
  57. package/lib/utils/map/hook/bigMap.js +2 -0
  58. package/lib/utils/map/hook/gaode.js +51 -16
  59. package/lib/utils/map/hook/leafletjs.js +15 -3
  60. package/lib/utils/map/index.js +1 -1
  61. package/lib/version.js +1 -1
  62. package/package.json +2 -2
@@ -34,10 +34,50 @@ const useAppTreeWrapper = (hy) => {
34
34
  const selectFilterType = vue.ref(null);
35
35
  const selectFilterList = vue.ref([]);
36
36
  const loading = vue.ref(true);
37
+ const noTreeSelData = vue.ref([]);
38
+ function getSelectedDataKey(data) {
39
+ if (!data) return void 0;
40
+ if (props.treeType === "device" || props.treeType === "channel") {
41
+ return data.channelId || data.deviceId;
42
+ }
43
+ if (props.treeType) {
44
+ return data.id;
45
+ }
46
+ return data[props.treeProps?.value];
47
+ }
48
+ function deleteNoTreeSelData(item) {
49
+ const index = hy.noTreeSelData.value.findIndex(
50
+ (v) => hy.getSelectedDataKey(v) === hy.getSelectedDataKey(item)
51
+ );
52
+ if (index !== -1) {
53
+ hy.noTreeSelData.value.splice(index, 1);
54
+ }
55
+ }
56
+ function updateNoTreeSelData(dataList) {
57
+ let selList = [];
58
+ if (props.treeType) {
59
+ selList = hy.virtualTree?.getCheckedBusinessNodes(true) || [];
60
+ } else {
61
+ selList = hy.virtualTree?.getCheckedNodes(true) || [];
62
+ }
63
+ const treeMap = /* @__PURE__ */ new Map();
64
+ selList.forEach((item) => {
65
+ const key = hy.getSelectedDataKey(item);
66
+ if (key) {
67
+ treeMap.set(key, true);
68
+ }
69
+ });
70
+ hy.noTreeSelData.value = dataList.filter(
71
+ (item) => !treeMap.get(hy.getSelectedDataKey(item))
72
+ );
73
+ }
74
+ function mergeNoTreeSelData(dataList) {
75
+ return [...hy.noTreeSelData.value, ...dataList];
76
+ }
37
77
  vue.watch(
38
78
  () => props.showCheckbox,
39
79
  (newVal) => {
40
- virtualTree?.setRowSelection({
80
+ hy.virtualTree?.setRowSelection({
41
81
  type: props.showCheckbox ? "checkbox" : "radio"
42
82
  });
43
83
  }
@@ -46,10 +86,10 @@ const useAppTreeWrapper = (hy) => {
46
86
  return new Promise((resolve) => {
47
87
  hy.loading.value = true;
48
88
  if (props.disableSelection?.length) {
49
- setDisAbleSelectionMap();
89
+ hy.setDisAbleSelectionMap();
50
90
  }
51
- if (!virtualTree) {
52
- virtualTree = new VirtualTree({
91
+ if (!hy.virtualTree) {
92
+ hy.virtualTree = new VirtualTree({
53
93
  // 指定容器
54
94
  container: treeRef.value,
55
95
  // 数据
@@ -64,25 +104,25 @@ const useAppTreeWrapper = (hy) => {
64
104
  // 树形业务类型
65
105
  business: props.treeType,
66
106
  // 自定义整体的插槽
67
- renderItem: props.treeType === treeConfig.treeTypeConfig.user ? (data, node) => setUserSlot(data, node) : setSlot("treeParentSlot"),
107
+ renderItem: props.treeType === treeConfig.treeTypeConfig.user ? (data, node) => hy.setUserSlot(data, node) : props.treeType === treeConfig.treeTypeConfig.group ? (data, node) => hy.setGroupRenderItem(data, node) : hy.setSlot("treeParentSlot"),
68
108
  // // 自定义状态右侧插槽
69
109
  renderRight: (data) => {
70
- let renderRight = setSlot("renderRight");
110
+ let renderRight = hy.setSlot("renderRight");
71
111
  if (renderRight) return renderRight(data);
72
112
  if (data.dataType === 1) {
73
- let departmentRight = setSlot("departmentRight");
113
+ let departmentRight = hy.setSlot("departmentRight");
74
114
  if (departmentRight) {
75
115
  return departmentRight(data);
76
116
  }
77
117
  }
78
118
  if (data.dataType === 3) {
79
- let deviceOnlineRight = setSlot("deviceOnlineRight");
119
+ let deviceOnlineRight = hy.setSlot("deviceOnlineRight");
80
120
  if (deviceOnlineRight) {
81
121
  return deviceOnlineRight(data);
82
122
  }
83
123
  }
84
124
  if ([11].includes(data.dataType)) {
85
- let planGroupRight = setSlot("planGroupRight");
125
+ let planGroupRight = hy.setSlot("planGroupRight");
86
126
  if (planGroupRight) {
87
127
  return planGroupRight(data);
88
128
  }
@@ -90,16 +130,16 @@ const useAppTreeWrapper = (hy) => {
90
130
  return true;
91
131
  },
92
132
  // // 自定义状态模块
93
- renderStatus: props.treeType === treeConfig.treeTypeConfig.device || props.treeType === treeConfig.treeTypeConfig.channel ? (data) => setRenderStatus(data) : null,
133
+ renderStatus: props.treeType === treeConfig.treeTypeConfig.device || props.treeType === treeConfig.treeTypeConfig.channel ? (data) => hy.setRenderStatus(data) : null,
94
134
  // 暂无数据插槽
95
135
  renderEmpty: () => {
96
136
  if (!props.showCustomEmpty || hy.filterValue.value) return true;
97
- let renderEmpty = setSlot("renderEmpty");
137
+ let renderEmpty = hy.setSlot("renderEmpty");
98
138
  if (renderEmpty) {
99
139
  const target = renderEmpty();
100
140
  return target.el;
101
141
  }
102
- return setEmpty();
142
+ return hy.setEmpty();
103
143
  },
104
144
  props: {
105
145
  // 是否显示右侧业务状态
@@ -134,7 +174,6 @@ const useAppTreeWrapper = (hy) => {
134
174
  showSelectBox: props.showSelectBox,
135
175
  // 选中回调
136
176
  onCheckChange: (data, info, checked) => {
137
- console.log("onCheckChange", info);
138
177
  if (data.dataType === 3 && !checked) {
139
178
  emits("on-click-delete", JSON.parse(JSON.stringify(data)));
140
179
  } else if (data.dataType === 3) {
@@ -143,7 +182,11 @@ const useAppTreeWrapper = (hy) => {
143
182
  emits(
144
183
  "on-check-tree",
145
184
  JSON.parse(
146
- JSON.stringify(info.checkedBusinessNodes || info.checkedNodes)
185
+ JSON.stringify(
186
+ hy.mergeNoTreeSelData(
187
+ info.checkedBusinessNodes || info.checkedNodes
188
+ )
189
+ )
147
190
  ),
148
191
  {
149
192
  data,
@@ -248,16 +291,16 @@ const useAppTreeWrapper = (hy) => {
248
291
  document.body.click();
249
292
  },
250
293
  onLoad: () => {
251
- if (props.showOnlineOnly && !virtualTree._flattenTree?.length && !hy.filterValue.value) {
294
+ if (props.showOnlineOnly && !hy.virtualTree._flattenTree?.length && !hy.filterValue.value) {
252
295
  elementPlus.ElMessage.warning("\u6682\u65E0\u8BBE\u5907\u5904\u4E8E\u5728\u7EBF\u72B6\u6001");
253
296
  }
254
297
  if (props.defaultSelectedOrgID && props.showCheckbox && props.treeType === "device") {
255
- setSelectedOrg(dataList);
298
+ hy.setSelectedOrg(dataList);
256
299
  } else if (props.selectedByDefault?.length) {
257
- setCheckedKeys(props.selectedByDefault);
300
+ hy.setCheckedKeys(props.selectedByDefault);
258
301
  }
259
302
  if (hy.filterValue.value) {
260
- getFilterValue();
303
+ hy.getFilterValue();
261
304
  }
262
305
  setTimeout(() => {
263
306
  hy.loading.value = false;
@@ -266,7 +309,7 @@ const useAppTreeWrapper = (hy) => {
266
309
  }
267
310
  });
268
311
  } else {
269
- virtualTree.setData(
312
+ hy.virtualTree.setData(
270
313
  {
271
314
  data: dataList,
272
315
  businessConfig: {
@@ -276,11 +319,11 @@ const useAppTreeWrapper = (hy) => {
276
319
  }
277
320
  },
278
321
  () => {
279
- if (props.showOnlineOnly && !virtualTree._flattenTree?.length && !hy.filterValue.value) {
322
+ if (props.showOnlineOnly && !hy.virtualTree._flattenTree?.length && !hy.filterValue.value) {
280
323
  elementPlus.ElMessage.success("\u6682\u65E0\u8BBE\u5907\u5904\u4E8E\u5728\u7EBF\u72B6\u6001");
281
324
  }
282
325
  if (hy.filterValue.value) {
283
- getFilterValue();
326
+ hy.getFilterValue();
284
327
  }
285
328
  setTimeout(() => {
286
329
  hy.loading.value = false;
@@ -318,7 +361,7 @@ const useAppTreeWrapper = (hy) => {
318
361
  return content;
319
362
  }
320
363
  function getFilterValue() {
321
- virtualTree.filter({ filterValue: hy.filterValue.value }, false);
364
+ hy.virtualTree.filter({ filterValue: hy.filterValue.value }, false);
322
365
  }
323
366
  function setDisAbleSelectionMap() {
324
367
  const map = /* @__PURE__ */ new Map();
@@ -332,7 +375,7 @@ const useAppTreeWrapper = (hy) => {
332
375
  emits("on-refreshData");
333
376
  }
334
377
  function setRenderStatus(data) {
335
- const slot = setSlot("renderStatus");
378
+ const slot = hy.setSlot("renderStatus");
336
379
  if (slot) {
337
380
  return slot(data);
338
381
  }
@@ -362,22 +405,24 @@ const useAppTreeWrapper = (hy) => {
362
405
  }
363
406
  function setUserSlot(data) {
364
407
  if (data.dataType === 1) {
365
- const slot2 = setSlot("treeParentSlot");
408
+ const slot2 = hy.setSlot("treeParentSlot");
366
409
  if (slot2) {
367
410
  return slot2(data);
368
411
  }
369
412
  return true;
370
413
  }
371
- const slot = setSlot("treeSelectedSlot");
414
+ const slot = hy.setSlot("treeSelectedSlot");
372
415
  if (slot) {
373
416
  return slot(data);
374
417
  }
375
418
  return true;
376
419
  }
377
420
  function setGroupRenderItem(data, node) {
378
- const slot = setSlot("treeParentSlot");
379
- if (slot) {
380
- return slot(data, node);
421
+ if (data.dataType === 4) {
422
+ const slot = hy.setSlot("treeGroupSlot");
423
+ if (slot) {
424
+ return slot(data, node);
425
+ }
381
426
  }
382
427
  return true;
383
428
  }
@@ -422,81 +467,91 @@ const useAppTreeWrapper = (hy) => {
422
467
  emits("on-addDevice");
423
468
  }
424
469
  function setDeviceStatus(payload) {
425
- virtualTree?.updateData([payload]);
470
+ hy.virtualTree?.updateData([payload]);
426
471
  }
427
472
  function singleRemovalFn(row, isForce = false) {
428
473
  if (props.treeType === "device" || props.treeType === "channel") {
429
- virtualTree.setChecked(row.channelId || row.deviceId, false, true);
474
+ hy.virtualTree.setChecked(row.channelId || row.deviceId, false, true);
430
475
  } else if (props.treeType) {
431
- virtualTree.setChecked(row.id, false, true, isForce);
476
+ hy.virtualTree.setChecked(row.id, false, true, isForce);
432
477
  } else if (!props.treeType && props.treeProps) {
433
- virtualTree.setChecked(
478
+ hy.virtualTree.setChecked(
434
479
  row[`${props.treeProps.value}`],
435
480
  false,
436
481
  true,
437
482
  isForce
438
483
  );
439
484
  }
485
+ hy.deleteNoTreeSelData(row);
440
486
  }
441
487
  function setCheckedKeys(dataList, isForce = false) {
442
488
  if (props.treeType === "device" || props.treeType === "channel") {
443
- virtualTree?.setCheckedKeys(
489
+ hy.virtualTree?.setCheckedKeys(
444
490
  dataList.map((v) => v.channelId || v.deviceId),
445
491
  true,
446
492
  isForce
447
493
  );
448
494
  } else if (props.treeType) {
449
- virtualTree?.setCheckedKeys(
495
+ hy.virtualTree?.setCheckedKeys(
450
496
  dataList.map((v) => v.id),
451
497
  true,
452
498
  isForce
453
499
  );
454
500
  } else if (!props.treeType && props.treeProps) {
455
- console.log(
456
- "\u9009\u4E2D\u56DE\u8C03",
457
- dataList.map((v) => v[`${props.treeProps.value}`])
458
- );
459
- virtualTree?.setCheckedKeys(
501
+ hy.virtualTree?.setCheckedKeys(
460
502
  dataList.map((v) => v[`${props.treeProps.value}`]),
461
503
  false,
462
504
  isForce
463
505
  );
464
506
  }
507
+ hy.updateNoTreeSelData(dataList);
465
508
  if (props.isBackDefaultSelected) {
466
509
  setTimeout(() => {
467
- const deviceList = virtualTree?.getCheckedBusinessNodes(true) || [];
468
- emits("on-selectedDataList", deviceList);
510
+ let deviceList = [];
511
+ if (props.treeType) {
512
+ deviceList = hy.virtualTree?.getCheckedBusinessNodes(true) || [];
513
+ } else {
514
+ deviceList = hy.virtualTree?.getCheckedNodes(true) || [];
515
+ }
516
+ emits("on-selectedDataList", hy.mergeNoTreeSelData(deviceList));
469
517
  });
470
518
  }
471
519
  }
472
520
  function setChecked(data, type = true) {
473
521
  if (props.treeType === "device") {
474
- virtualTree?.setChecked(data.channelId || data.deviceId, type, true);
522
+ hy.virtualTree?.setChecked(data.channelId || data.deviceId, type, true);
475
523
  } else if (props.treeType) {
476
- virtualTree?.setChecked(data.id, type, true);
524
+ hy.virtualTree?.setChecked(data.id, type, true);
477
525
  } else if (!props.treeType && props.treeProps) {
478
- virtualTree?.setChecked(data[`${props.treeProps.value}`], type, false);
526
+ hy.virtualTree?.setChecked(data[`${props.treeProps.value}`], type, false);
527
+ }
528
+ if (!type) {
529
+ hy.deleteNoTreeSelData(data);
479
530
  }
480
531
  }
481
532
  function setSelectedOrg(deviceList) {
482
533
  for (let i = 0; i < deviceList.length; i++) {
483
534
  if (props.defaultSelectedOrgID === deviceList[i].id) {
484
535
  if (deviceList[i].deviceList?.length) {
485
- setCheckedKeys(deviceList[i].deviceList);
536
+ hy.setCheckedKeys(deviceList[i].deviceList);
486
537
  }
487
538
  return true;
488
539
  }
489
540
  if (deviceList[i].children?.length) {
490
- const org = setSelectedOrg(deviceList[i].children);
541
+ const org = hy.setSelectedOrg(deviceList[i].children);
491
542
  if (org) return true;
492
543
  }
493
544
  }
494
545
  }
495
546
  function getSelectedDataList(leafOnly = false) {
496
547
  if (props.treeType) {
497
- return virtualTree?.getCheckedBusinessNodes(leafOnly) || [];
548
+ return hy.mergeNoTreeSelData(
549
+ hy.virtualTree?.getCheckedBusinessNodes(leafOnly) || []
550
+ );
498
551
  }
499
- return virtualTree?.getCheckedNodes(leafOnly) || [];
552
+ return hy.mergeNoTreeSelData(
553
+ hy.virtualTree?.getCheckedNodes(leafOnly) || []
554
+ );
500
555
  }
501
556
  function setFilterListType(type) {
502
557
  if (props.selectFilterList?.length) {
@@ -558,7 +613,7 @@ const useAppTreeWrapper = (hy) => {
558
613
  }
559
614
  }
560
615
  function getNode(id) {
561
- return virtualTree.getNode(id);
616
+ return hy.virtualTree.getNode(id);
562
617
  }
563
618
  return {
564
619
  filterValue,
@@ -566,6 +621,7 @@ const useAppTreeWrapper = (hy) => {
566
621
  permissionIdList,
567
622
  disableSelectionMap,
568
623
  addDeviceDom,
624
+ setDisAbleSelectionMap,
569
625
  getData,
570
626
  getFilterValue,
571
627
  refreshData,
@@ -573,6 +629,11 @@ const useAppTreeWrapper = (hy) => {
573
629
  setCheckedKeys,
574
630
  setChecked,
575
631
  setFilterListType,
632
+ setSelectedOrg,
633
+ setUserSlot,
634
+ setSlot,
635
+ setRenderStatus,
636
+ setEmpty,
576
637
  getInputPlaceholder,
577
638
  onChange,
578
639
  selectFilterList,
@@ -580,7 +641,14 @@ const useAppTreeWrapper = (hy) => {
580
641
  selectedDataList,
581
642
  getSelectedDataList,
582
643
  loading,
583
- getNode
644
+ getNode,
645
+ noTreeSelData,
646
+ updateNoTreeSelData,
647
+ mergeNoTreeSelData,
648
+ getSelectedDataKey,
649
+ deleteNoTreeSelData,
650
+ setDeviceStatus,
651
+ setGroupRenderItem
584
652
  };
585
653
  };
586
654
  function filterNodeMethod(data, value, { selectFilterType, treeFilterParam = [], treeType }) {
@@ -206,7 +206,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
206
206
  onChange,
207
207
  getSelectedDataList,
208
208
  loading,
209
- getNode
209
+ getNode,
210
+ setDeviceStatus
210
211
  } = useMixins.useMixins(
211
212
  {
212
213
  props,
@@ -229,7 +230,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
229
230
  setChecked,
230
231
  getSelectedDataList,
231
232
  refreshData,
232
- getNode
233
+ getNode,
234
+ setDeviceStatus
233
235
  });
234
236
  return (_ctx, _cache) => {
235
237
  const _directive_loading = vue.resolveDirective("loading");
@@ -3,7 +3,6 @@
3
3
  * {
4
4
  margin: 0;
5
5
  padding: 0;
6
- box-sizing: border-box;
7
6
  }
8
7
  html,
9
8
  body,
@@ -54,7 +54,6 @@
54
54
  *,
55
55
  ::before,
56
56
  ::after {
57
- box-sizing: border-box;
58
57
  /* 1 */
59
58
  border-width: 0;
60
59
  /* 2 */
package/lib/utils/is.js CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  var vue = require('vue');
4
4
  require('../hooks/index.js');
5
+ require('./index.js');
5
6
  var usePermissionMap = require('../hooks/usePermissionMap.js');
7
+ var permission = require('./permission.js');
6
8
 
7
9
  const isString = (e) => typeof e === "string";
8
10
  const isNumber = (e) => typeof e === "number";
@@ -42,12 +44,12 @@ function isSupportH265() {
42
44
  }
43
45
  return { isSupport, isVersionLow };
44
46
  }
45
- function isPermission(permission) {
47
+ function isPermission(permission$1) {
46
48
  const { permissionMap } = usePermissionMap.usePermissionMap();
47
- if (!permission) {
49
+ if (!permission$1) {
48
50
  return true;
49
51
  }
50
- return permissionMap.value.has(permission);
52
+ return permissionMap.value.has(permission.PERMISSION[`${permission$1}`]);
51
53
  }
52
54
 
53
55
  exports.isArray = isArray;
@@ -347,6 +347,8 @@ class bigMap extends events.EventEmitter {
347
347
  off: function(target, types, fn, context) {
348
348
  const wrappedFn = wrappedHandlers.take(types, fn);
349
349
  return target.off(types, wrappedFn || fn, context);
350
+ },
351
+ satelliteMapFn: function() {
350
352
  }
351
353
  };
352
354
  return mapProxy.createMapProxy(newMap, handlers);
@@ -98,6 +98,7 @@ class Google extends events.EventEmitter {
98
98
  return mapProxy.createMapProxy(polygon, handlers);
99
99
  });
100
100
  this.initParams = request;
101
+ this.layerSateGroup = null;
101
102
  }
102
103
  InitMap(domId, option) {
103
104
  const { center } = option;
@@ -114,24 +115,33 @@ class Google extends events.EventEmitter {
114
115
  resizeEnable: true
115
116
  });
116
117
  newMap.on("complete", (e) => {
117
- if (option.completeCallbacks) {
118
- option.completeCallbacks(e);
119
- }
118
+ newMap.plugin(
119
+ [
120
+ "AMap.MarkerClusterer",
121
+ "AMap.Scale",
122
+ "AMap.LayerGroup",
123
+ "AMap.Circle",
124
+ "AMap.TileLayer",
125
+ "AMap.GeometryUtil",
126
+ "AMap.MouseTool"
127
+ ],
128
+ () => {
129
+ this.layerSateGroup = new window.AMap.LayerGroup([
130
+ new window.AMap.TileLayer.Satellite()
131
+ ]);
132
+ this.layerSateGroup.setMap(newMap);
133
+ this.layerSateGroup.hide();
134
+ setTimeout(() => {
135
+ this.satelliteMapFn(newMap, option.satelliteMap);
136
+ if (option.completeCallbacks) {
137
+ option.completeCallbacks(e);
138
+ }
139
+ });
140
+ }
141
+ );
120
142
  });
121
- newMap.plugin(
122
- [
123
- "AMap.MarkerClusterer",
124
- "AMap.Scale",
125
- "AMap.LayerGroup",
126
- "AMap.Circle",
127
- "AMap.TileLayer",
128
- "AMap.GeometryUtil",
129
- "AMap.MouseTool"
130
- ],
131
- () => {
132
- }
133
- );
134
143
  const wrappedHandlers = mapProxy.createWrappedHandlerStore();
144
+ const _this = this;
135
145
  const handlers = {
136
146
  // return 单位:m
137
147
  distance: function(target, latAndlng1, latAndlng2) {
@@ -182,10 +192,35 @@ class Google extends events.EventEmitter {
182
192
  // // 四个角
183
193
  getBounds: function(target) {
184
194
  return wrapBounds(target);
195
+ },
196
+ /* 判断地图颜色 */
197
+ satelliteMapFn: function(target, satelliteMap) {
198
+ if (satelliteMap === 3) {
199
+ _this.layerSateGroup.show();
200
+ } else {
201
+ if (satelliteMap === 1) {
202
+ target.setMapStyle(_this.initParams.defaultMapStyle);
203
+ } else {
204
+ target.setMapStyle(_this.initParams.currencyMapStyle);
205
+ }
206
+ _this.layerSateGroup.hide();
207
+ }
185
208
  }
186
209
  };
187
210
  return mapProxy.createMapProxy(newMap, handlers);
188
211
  }
212
+ satelliteMapFn(map, satelliteMap) {
213
+ if (satelliteMap === 3) {
214
+ this.layerSateGroup.show();
215
+ } else {
216
+ if (satelliteMap === 1) {
217
+ map.setMapStyle(this.initParams.defaultMapStyle);
218
+ } else {
219
+ map.setMapStyle(this.initParams.currencyMapStyle);
220
+ }
221
+ this.layerSateGroup.hide();
222
+ }
223
+ }
189
224
  // 地图图层
190
225
  layerGroup(map, markers = []) {
191
226
  const layerGroup = new window.AMap.LayerGroup(markers);
@@ -330,6 +330,7 @@ class Leafletjs extends events.EventEmitter {
330
330
  return mapProxy.createMapProxy(polygon, handlers);
331
331
  });
332
332
  this.initParams = request;
333
+ this.tileLayerList = [];
333
334
  }
334
335
  // 初始化地图
335
336
  InitMap(domId, option) {
@@ -349,6 +350,7 @@ class Leafletjs extends events.EventEmitter {
349
350
  const newMap = L.map(domId, option);
350
351
  newMap.getInitMap = () => newMap;
351
352
  const wrappedHandlers = mapProxy.createWrappedHandlerStore();
353
+ const _this = this;
352
354
  const handlers = {
353
355
  // 删除地图
354
356
  removeMap: function(target, params) {
@@ -424,6 +426,10 @@ class Leafletjs extends events.EventEmitter {
424
426
  off: function(target, types, fn, context) {
425
427
  const wrappedFn = wrappedHandlers.take(types, fn);
426
428
  return target.off(types, wrappedFn || fn, context);
429
+ },
430
+ /* 判断地图颜色 */
431
+ satelliteMapFn: function(target, satelliteMap) {
432
+ _this.setLayersUrl(target, satelliteMap !== 2);
427
433
  }
428
434
  };
429
435
  const map = mapProxy.createMapProxy(newMap, handlers);
@@ -433,7 +439,7 @@ class Leafletjs extends events.EventEmitter {
433
439
  option.completeCallbacks();
434
440
  }
435
441
  });
436
- this.setLayersUrl(map);
442
+ this.setLayersUrl(map, option.satelliteMap !== 2);
437
443
  return map;
438
444
  }
439
445
  // 设置地图瓦片地址
@@ -448,12 +454,18 @@ class Leafletjs extends events.EventEmitter {
448
454
  if (mapServerType === "WMTS" || mapServerType === "Dynamic") {
449
455
  return this.createLayers(map, layersUrls);
450
456
  }
457
+ this.tileLayerList.forEach((tileLayer) => {
458
+ tileLayer?.remove();
459
+ });
460
+ this.tileLayerList = [];
451
461
  layersUrls.split(",").forEach((layersUrl) => {
462
+ let tileLayer = null;
452
463
  if (changeColorType) {
453
- this.createCustomLayers(map, layersUrl);
464
+ tileLayer = this.createCustomLayers(map, layersUrl);
454
465
  } else {
455
- this.createLayers(map, layersUrl);
466
+ tileLayer = this.createLayers(map, layersUrl);
456
467
  }
468
+ this.tileLayerList.push(tileLayer);
457
469
  });
458
470
  }
459
471
  // 超图 WMTS 图层(不适用所有的WMTS图层,目前仅支持超图WMTS,因不同的WMTS服务规范不一样,主要体现在路由访问参数)
@@ -233,7 +233,7 @@ class InitMap extends events.EventEmitter {
233
233
  /* === leafletjs === */
234
234
  ...option
235
235
  };
236
- return this.map.InitMap(domId, option);
236
+ return this.map?.InitMap(domId, option);
237
237
  }
238
238
  // 自定义 h5 图标
239
239
  DivIcon(option) {
package/lib/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- const version = "0.2.65";
3
+ const version = "0.2.66";
4
4
 
5
5
  exports.version = version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hy-dispatch-ui-v3",
3
- "version": "0.2.66",
3
+ "version": "0.2.67",
4
4
  "main": "lib/index.js",
5
5
  "module": "es/index.mjs",
6
6
  "scripts": {
@@ -30,7 +30,7 @@
30
30
  "events": "^3.3.0",
31
31
  "express": "^5.2.1",
32
32
  "hy-common": "^0.0.39",
33
- "hy-virtual-tree": "^2.4.5",
33
+ "hy-virtual-tree": "^2.4.10",
34
34
  "leaflet": "^1.5.1",
35
35
  "leaflet-pip": "^1.1.0",
36
36
  "leaflet-polylinedecorator": "^1.6.0",