vue-openlayers-plugin 1.0.87 → 1.0.89

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 (28) hide show
  1. package/lib/{BasemapPanel-6d2a04e9.mjs → BasemapPanel-cba3afd6.mjs} +6 -6
  2. package/lib/{CoordinateLocationDialog-de357c83.mjs → CoordinateLocationDialog-6e8a5f24.mjs} +1 -1
  3. package/lib/{FilterPanel-d40a133c.mjs → FilterPanel-9a8e2aca.mjs} +1 -1
  4. package/lib/{MapPrintDialog-74d86245.mjs → LayerPanel-be35370b.mjs} +1 -1
  5. package/lib/{LayerPanel-de7c698a.mjs → MapPrintDialog-03c0823b.mjs} +1 -1
  6. package/lib/{MeasurementDialog-d29c4928.mjs → MeasurementDialog-7fce097a.mjs} +7 -7
  7. package/lib/{MyMarkersDialog-b4318073.mjs → MyMarkersDialog-7dd24d9a.mjs} +2 -2
  8. package/lib/{ViewBookmarksDialog-cdf56611.mjs → ViewBookmarksDialog-60c9e851.mjs} +2 -2
  9. package/lib/{index-b5b0a094.mjs → index-05da77ba.mjs} +501 -589
  10. package/lib/{index-dfd59202.mjs → index-7aae577e.mjs} +1 -1
  11. package/lib/{index-5bc5966e.mjs → index-b3c7ea8d.mjs} +1 -1
  12. package/lib/{index.es-1fe2c0bd.mjs → index.es-e4a6ccb9.mjs} +1 -1
  13. package/lib/index.esm.js +63 -63
  14. package/lib/index.umd.js +437 -525
  15. package/lib/style.css +318 -354
  16. package/package.json +4 -4
  17. package/types/src/components/CustomDialog/CustomDialog.vue.d.ts +1 -1
  18. package/types/src/components/OlDialogs/BasemapPanel.vue.d.ts +1 -0
  19. package/types/src/components/OlDialogs/BasemapPanel.vue.d.ts.map +1 -1
  20. package/types/src/components/OlDialogs/LayerPanel.vue.d.ts.map +1 -1
  21. package/types/src/components/OlDialogs/MeasurementDialog.vue.d.ts +1 -0
  22. package/types/src/components/OlDialogs/MeasurementDialog.vue.d.ts.map +1 -1
  23. package/types/src/components/OlDrawToolbar.vue.d.ts.map +1 -1
  24. package/types/src/components/OlLegendPanel.vue.d.ts +2 -26
  25. package/types/src/components/OlLegendPanel.vue.d.ts.map +1 -1
  26. package/types/src/core/layers/BaseLayer.d.ts +8 -0
  27. package/types/src/core/layers/BaseLayer.d.ts.map +1 -1
  28. package/types/tsconfig.tsbuildinfo +1 -1
package/lib/style.css CHANGED
@@ -448,7 +448,6 @@
448
448
  }
449
449
  .search-input {
450
450
  width: 100%;
451
- padding: 8px 12px;
452
451
  border: 1px solid #d9d9d9;
453
452
  border-radius: 4px;
454
453
  font-size: 14px;
@@ -683,14 +682,15 @@
683
682
  }
684
683
 
685
684
 
686
- .map-toolbar[data-v-65f64ab9] {
685
+ .map-toolbar[data-v-b8c938a3] {
687
686
  position: absolute;
688
- top: 10px;
689
- right: 20px;
690
- height: 32px;
687
+ top: 20px;
688
+ right: 1%;
689
+ z-index: 100;
691
690
  }
692
- [data-v-65f64ab9].el-menu--horizontal {
693
- height: 100% !important;
691
+ .map-toolbar[data-v-b8c938a3]:hover {
692
+ box-shadow: var(--el-box-shadow);
693
+ border-color: var(--el-border-color-hover);
694
694
  }.map-search-container {
695
695
  position: absolute;
696
696
  z-index: 99;
@@ -725,14 +725,14 @@
725
725
  transition: all 0.3s ease;
726
726
  }
727
727
  .search-active .search-input :deep(.el-input__inner) {
728
- border-color: #409eff;
729
- box-shadow: 0 2px 12px rgba(64, 158, 255, 0.2);
728
+ border-color: var(--el-color-primary);
729
+ box-shadow: 0 0 0 1px var(--el-color-primary-light-5);
730
730
  }
731
731
  .search-icon {
732
- color: #909399;
732
+ color: var(--el-text-color-placeholder);
733
733
  }
734
734
  .loading-icon {
735
- color: #409eff;
735
+ color: var(--el-color-primary);
736
736
  animation: rotate 1s linear infinite;
737
737
  }
738
738
  @keyframes rotate {
@@ -748,10 +748,10 @@ to {
748
748
  top: 100%;
749
749
  left: 0;
750
750
  right: 0;
751
- background: white;
752
- border: 1px solid #e4e7ed;
753
- border-radius: 6px;
754
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
751
+ background: var(--el-bg-color-overlay);
752
+ border: 1px solid var(--el-border-color-light);
753
+ border-radius: var(--el-border-radius-base);
754
+ box-shadow: var(--el-box-shadow-light);
755
755
  max-height: 400px;
756
756
  overflow-y: auto;
757
757
  z-index: 10000;
@@ -761,7 +761,7 @@ to {
761
761
  padding: 8px 0;
762
762
  }
763
763
  .search-section:not(:last-child) {
764
- border-bottom: 1px solid #f0f0f0;
764
+ border-bottom: 1px solid var(--el-border-color-lighter);
765
765
  }
766
766
  .section-title {
767
767
  display: flex;
@@ -769,11 +769,11 @@ to {
769
769
  align-items: center;
770
770
  padding: 8px 16px;
771
771
  font-size: 12px;
772
- color: #909399;
772
+ color: var(--el-text-color-secondary);
773
773
  font-weight: 500;
774
774
  }
775
775
  .result-count {
776
- color: #c0c4cc;
776
+ color: var(--el-text-color-placeholder);
777
777
  }
778
778
  .search-item {
779
779
  display: flex;
@@ -784,19 +784,19 @@ to {
784
784
  }
785
785
  .search-item:hover,
786
786
  .search-item.active {
787
- background-color: #f5f7fa;
787
+ background-color: var(--el-fill-color-light);
788
788
  }
789
789
  .item-icon {
790
790
  margin-right: 12px;
791
- color: #909399;
791
+ color: var(--el-text-color-secondary);
792
792
  font-size: 16px;
793
793
  flex-shrink: 0;
794
794
  }
795
795
  .history-item .item-icon {
796
- color: #c0c4cc;
796
+ color: var(--el-text-color-placeholder);
797
797
  }
798
798
  .result-item .item-icon {
799
- color: #409eff;
799
+ color: var(--el-color-primary);
800
800
  }
801
801
  .item-content {
802
802
  flex: 1;
@@ -804,39 +804,39 @@ to {
804
804
  }
805
805
  .item-name {
806
806
  font-size: 14px;
807
- color: #303133;
807
+ color: var(--el-text-color-primary);
808
808
  margin-bottom: 4px;
809
809
  white-space: nowrap;
810
810
  overflow: hidden;
811
811
  text-overflow: ellipsis;
812
812
  }
813
813
  .item-name :deep(mark) {
814
- background-color: #fff2cc;
815
- color: #e6a23c;
814
+ background-color: var(--el-color-warning-light-9);
815
+ color: var(--el-color-warning);
816
816
  padding: 0 2px;
817
817
  border-radius: 2px;
818
818
  }
819
819
  .item-address {
820
820
  font-size: 12px;
821
- color: #909399;
821
+ color: var(--el-text-color-secondary);
822
822
  white-space: nowrap;
823
823
  overflow: hidden;
824
824
  text-overflow: ellipsis;
825
825
  }
826
826
  .item-address :deep(mark) {
827
- background-color: #fff2cc;
828
- color: #e6a23c;
827
+ background-color: var(--el-color-warning-light-9);
828
+ color: var(--el-color-warning);
829
829
  padding: 0 2px;
830
830
  border-radius: 2px;
831
831
  }
832
832
  .item-type {
833
833
  font-size: 11px;
834
- color: #c0c4cc;
834
+ color: var(--el-text-color-placeholder);
835
835
  margin-top: 2px;
836
836
  }
837
837
  .item-confidence {
838
838
  font-size: 12px;
839
- color: #67c23a;
839
+ color: var(--el-color-success);
840
840
  margin-left: 8px;
841
841
  flex-shrink: 0;
842
842
  }
@@ -845,7 +845,7 @@ to {
845
845
  align-items: center;
846
846
  justify-content: center;
847
847
  padding: 24px 16px;
848
- color: #909399;
848
+ color: var(--el-text-color-secondary);
849
849
  font-size: 14px;
850
850
  }
851
851
  .no-results .el-icon {
@@ -875,107 +875,198 @@ to {
875
875
  .position-bottom-right {
876
876
  bottom: 5px;
877
877
  }
878
- }.control-group[data-v-e2bbe659] {
878
+ }.control-group[data-v-2fc6cae7] {
879
879
  display: flex;
880
880
  align-items: center;
881
- gap: 6px;
881
+ gap: 8px;
882
882
  /* re-enable interactions inside the controls container */
883
883
  pointer-events: auto;
884
+ background-color: var(--el-bg-color-overlay);
885
+ backdrop-filter: blur(4px);
886
+ padding: 4px;
887
+ border-radius: var(--el-border-radius-base);
888
+ box-shadow: var(--el-box-shadow-light);
889
+ border: 1px solid var(--el-border-color-light);
890
+ transition: all 0.3s ease;
891
+ }
892
+ .control-group[data-v-2fc6cae7]:hover {
893
+ box-shadow: var(--el-box-shadow);
894
+ border-color: var(--el-border-color-hover);
884
895
  }
885
896
 
886
897
  /* when direction becomes column, keep spacing vertical */
887
- .control-group.flex-col[data-v-e2bbe659] {
898
+ .control-group.flex-col[data-v-2fc6cae7] {
888
899
  flex-direction: column;
889
- align-items: stretch;
890
- gap: 6px;
900
+ align-items: center; /* Center items in vertical mode */
901
+ gap: 8px;
902
+ padding: 6px 4px;
891
903
  }
892
904
 
893
905
  /* ensure buttons themselves are interactive */
894
- .control-btn[data-v-e2bbe659] {
906
+ .control-btn[data-v-2fc6cae7] {
895
907
  pointer-events: auto;
908
+ margin: 0 !important; /* Ensure no margin interferes */
909
+ transition: transform 0.1s;
910
+ }
911
+ .control-btn[data-v-2fc6cae7]:active {
912
+ transform: scale(0.95);
896
913
  }
897
914
 
898
915
  /* reset Element Plus button default adjacent margin and use our gap instead */
899
- [data-v-e2bbe659] .el-button + .el-button {
916
+ [data-v-2fc6cae7] .el-button + .el-button {
900
917
  margin-left: 0 !important;
901
918
  }
902
919
 
903
920
  /* make sure all EP interactive widgets are clickable */
904
- [data-v-e2bbe659] .el-button,[data-v-e2bbe659] .el-slider,[data-v-e2bbe659] .el-icon {
921
+ [data-v-2fc6cae7] .el-button,[data-v-2fc6cae7] .el-slider,[data-v-2fc6cae7] .el-icon {
905
922
  pointer-events: auto;
906
- }
907
- .absolute {
923
+ }.ol-legend-panel[data-v-b1b6d5ed] {
908
924
  position: absolute;
925
+ z-index: 1000;
926
+ display: flex;
927
+ flex-direction: column;
928
+ max-height: calc(100vh - 140px);
929
+ overflow: hidden;
930
+ border: 1px solid var(--el-border-color-light);
931
+ border-radius: var(--el-border-radius-base);
932
+ box-shadow: var(--el-box-shadow-light);
933
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.5, 1);
909
934
  }
910
- .bottom-40px {
911
- bottom: 40px;
912
- }
913
-
914
- /* 图例面板样式 */
915
- .legend-collapsed {
916
- transform: translateX(calc(100% - 40px));
935
+ .ol-legend-panel.is-collapsed[data-v-b1b6d5ed] {
936
+ width: auto !important;
937
+ height: 40px;
938
+ max-height: 40px;
917
939
  }
918
- .legend-collapsed:hover {
919
- transform: translateX(0);
920
- }
921
-
922
- /* 图例项样式 */
923
- .legend-item {
924
- @apply mb-2 last:mb-0;
940
+ .ol-legend-panel.is-collapsed .ol-legend-body[data-v-b1b6d5ed] {
941
+ opacity: 0;
942
+ pointer-events: none;
925
943
  }
926
- .legend-title {
927
- @apply text-sm font-medium text-gray-700 mb-2;
944
+ .ol-legend-panel.is-collapsed .header-title[data-v-b1b6d5ed] {
945
+ display: none;
928
946
  }
929
- .legend-content {
930
- @apply space-y-1;
947
+ .ol-legend-header[data-v-b1b6d5ed] {
948
+ display: flex;
949
+ align-items: center;
950
+ justify-content: space-between;
951
+ height: 40px;
952
+ padding: 0 12px;
953
+ background-color: var(--el-fill-color-light);
954
+ border-bottom: 1px solid var(--el-border-color-lighter);
955
+ flex-shrink: 0;
931
956
  }
932
- .legend-symbol {
933
- @apply inline-block mr-2 align-middle;
957
+ .ol-legend-header .header-title[data-v-b1b6d5ed] {
958
+ font-size: 14px;
959
+ font-weight: 600;
960
+ color: var(--el-text-color-primary);
934
961
  }
935
- .legend-label {
936
- @apply text-xs text-gray-600 align-middle;
937
- }
938
-
939
- /* 渐变图例样式 */
940
- .gradient-legend {
941
- @apply h-4 rounded mb-1;
962
+ .ol-legend-header .action-icon[data-v-b1b6d5ed] {
963
+ cursor: pointer;
964
+ color: var(--el-text-color-secondary);
965
+ transition: color 0.2s;
942
966
  }
943
- .gradient-labels {
944
- @apply flex justify-between text-xs text-gray-500;
945
- }
946
-
947
- /* 分类图例样式 */
948
- .category-legend {
949
- @apply flex items-center mb-1;
967
+ .ol-legend-header .action-icon[data-v-b1b6d5ed]:hover {
968
+ color: var(--el-color-primary);
950
969
  }
951
- .category-symbol {
952
- @apply w-4 h-4 mr-2 rounded-sm;
953
- }
954
-
955
- /* 符号图例样式 */
956
- .symbol-legend {
957
- @apply flex items-center mb-1;
970
+ .ol-legend-body[data-v-b1b6d5ed] {
971
+ flex: 1;
972
+ overflow-y: auto;
973
+ background-color: transparent;
974
+ padding: 8px 0;
975
+ /* 自定义滚动条 */
958
976
  }
959
- .symbol-item {
960
- @apply w-4 h-4 mr-2;
961
- }
962
-
963
- /* 面板头部样式 */
964
- .legend-header {
965
- @apply flex items-center justify-between p-3 border-b border-gray-200;
977
+ .ol-legend-body[data-v-b1b6d5ed]::-webkit-scrollbar {
978
+ width: 6px;
966
979
  }
967
- .legend-body {
968
- @apply p-3 max-h-96 overflow-y-auto;
969
- }
970
-
971
- /* 折叠按钮样式 */
972
- .collapse-btn {
973
- @apply p-1 rounded hover:bg-gray-100 transition-colors;
980
+ .ol-legend-body[data-v-b1b6d5ed]::-webkit-scrollbar-thumb {
981
+ background: var(--el-border-color-lighter);
982
+ border-radius: 3px;
983
+ }
984
+ .legend-collapse[data-v-b1b6d5ed] {
985
+ border: none;
986
+ }
987
+ .legend-collapse[data-v-b1b6d5ed] .el-collapse-item__header {
988
+ box-sizing: border-box;
989
+ height: 36px;
990
+ line-height: 36px;
991
+ padding: 0 12px;
992
+ font-size: 13px;
993
+ color: var(--el-text-color-regular);
994
+ background-color: transparent;
995
+ border-bottom-color: var(--el-border-color-lighter);
996
+ }
997
+ .legend-collapse[data-v-b1b6d5ed] .el-collapse-item__header.is-active {
998
+ color: var(--el-text-color-primary);
999
+ font-weight: 500;
1000
+ }
1001
+ .legend-collapse[data-v-b1b6d5ed] .el-collapse-item__wrap {
1002
+ background-color: transparent;
1003
+ border-bottom: none;
1004
+ }
1005
+ .legend-collapse[data-v-b1b6d5ed] .el-collapse-item__content {
1006
+ padding: 8px 12px;
1007
+ padding-bottom: 12px;
1008
+ }
1009
+ .layer-title[data-v-b1b6d5ed] {
1010
+ display: inline-block;
1011
+ max-width: 180px;
1012
+ overflow: hidden;
1013
+ text-overflow: ellipsis;
1014
+ white-space: nowrap;
1015
+ }
1016
+ .legend-row[data-v-b1b6d5ed] {
1017
+ display: flex;
1018
+ align-items: center;
1019
+ margin-bottom: 6px;
1020
+ }
1021
+ .legend-row[data-v-b1b6d5ed]:last-child {
1022
+ margin-bottom: 0;
1023
+ }
1024
+ .legend-row .legend-icon[data-v-b1b6d5ed] {
1025
+ margin-right: 8px;
1026
+ display: flex;
1027
+ align-items: center;
1028
+ justify-content: center;
1029
+ }
1030
+ .legend-row .legend-icon .icon-img[data-v-b1b6d5ed] {
1031
+ width: 100%;
1032
+ height: 100%;
1033
+ object-fit: contain;
1034
+ }
1035
+ .legend-row .legend-icon .symbol-shape[data-v-b1b6d5ed] {
1036
+ /* style injected by js */
1037
+ }
1038
+ .legend-row .legend-label[data-v-b1b6d5ed] {
1039
+ font-size: 12px;
1040
+ color: var(--el-text-color-primary);
1041
+ line-height: 1.4;
1042
+ }
1043
+ .legend-gradient-box .gradient-bar[data-v-b1b6d5ed] {
1044
+ height: 12px;
1045
+ border-radius: 2px;
1046
+ margin-bottom: 4px;
1047
+ border: 1px solid var(--el-border-color-lighter);
1048
+ }
1049
+ .legend-gradient-box .gradient-labels[data-v-b1b6d5ed] {
1050
+ display: flex;
1051
+ justify-content: space-between;
1052
+ font-size: 11px;
1053
+ color: var(--el-text-color-secondary);
1054
+ }
1055
+ .legend-gradient-box .gradient-unit[data-v-b1b6d5ed] {
1056
+ text-align: center;
1057
+ font-size: 11px;
1058
+ color: var(--el-text-color-secondary);
1059
+ margin-top: 2px;
1060
+ }
1061
+ .legend-desc[data-v-b1b6d5ed] {
1062
+ margin-top: 6px;
1063
+ font-size: 11px;
1064
+ color: var(--el-text-color-secondary);
1065
+ line-height: 1.4;
1066
+ }
1067
+ .empty-state[data-v-b1b6d5ed] {
1068
+ padding: 20px 0;
974
1069
  }
975
- .close-btn {
976
- @apply p-1 rounded hover:bg-gray-100 transition-colors text-gray-500 hover:text-gray-700;
977
- }
978
-
979
1070
  .filter-panel {
980
1071
  .config-section {
981
1072
  margin-bottom: 16px;
@@ -1136,14 +1227,14 @@ label {
1136
1227
  /* 全局样式面板样式 */
1137
1228
  .global-style-panel {
1138
1229
  padding: 16px;
1139
- border-bottom: 1px solid #eee;
1140
- background-color: #f8f9fa;
1230
+ border-bottom: 1px solid var(--el-border-color-light);
1231
+ background-color: var(--el-fill-color-light);
1141
1232
  .panel-title {
1142
1233
  margin: 0 0 16px 0;
1143
1234
  font-size: 14px;
1144
1235
  font-weight: 600;
1145
- color: #333;
1146
- border-bottom: 1px solid #ddd;
1236
+ color: var(--el-text-color-primary);
1237
+ border-bottom: 1px solid var(--el-border-color-light);
1147
1238
  padding-bottom: 8px;
1148
1239
  }
1149
1240
  .config-section {
@@ -1152,7 +1243,7 @@ h5 {
1152
1243
  margin: 0 0 12px 0;
1153
1244
  font-size: 13px;
1154
1245
  font-weight: 500;
1155
- color: #666;
1246
+ color: var(--el-text-color-regular);
1156
1247
  }
1157
1248
  .config-item {
1158
1249
  display: flex;
@@ -1162,7 +1253,7 @@ h5 {
1162
1253
  label {
1163
1254
  flex: 0 0 60px;
1164
1255
  font-size: 12px;
1165
- color: #666;
1256
+ color: var(--el-text-color-regular);
1166
1257
  }
1167
1258
  .el-slider {
1168
1259
  flex: 1;
@@ -1171,7 +1262,7 @@ label {
1171
1262
  .value-text {
1172
1263
  flex: 0 0 45px;
1173
1264
  font-size: 12px;
1174
- color: #999;
1265
+ color: var(--el-text-color-secondary);
1175
1266
  text-align: right;
1176
1267
  }
1177
1268
  }
@@ -1188,7 +1279,7 @@ label {
1188
1279
  .panel-actions {
1189
1280
  margin-top: 16px;
1190
1281
  padding-top: 12px;
1191
- border-top: 1px solid #ddd;
1282
+ border-top: 1px solid var(--el-border-color-light);
1192
1283
  text-align: center;
1193
1284
  }
1194
1285
  .custom-css-input {
@@ -1200,8 +1291,8 @@ label {
1200
1291
  font-family: "Courier New", monospace;
1201
1292
  font-size: 12px;
1202
1293
  line-height: 1.4;
1203
- background-color: #fff;
1204
- border: 1px solid #e9ecef;
1294
+ background-color: var(--el-bg-color-overlay);
1295
+ border: 1px solid var(--el-border-color-light);
1205
1296
  }
1206
1297
  .style-tabs {
1207
1298
  :deep(.el-tabs__header) {
@@ -1223,24 +1314,24 @@ label {
1223
1314
  .current-style-display {
1224
1315
  margin-top: 16px;
1225
1316
  padding: 12px;
1226
- background-color: #f5f5f5;
1317
+ background-color: var(--el-fill-color-light);
1227
1318
  border-radius: 4px;
1228
- border: 1px solid #e9ecef;
1319
+ border: 1px solid var(--el-border-color-light);
1229
1320
  h6 {
1230
1321
  margin: 0 0 8px 0;
1231
1322
  font-size: 12px;
1232
1323
  font-weight: 500;
1233
- color: #666;
1324
+ color: var(--el-text-color-regular);
1234
1325
  }
1235
1326
  .style-preview {
1236
1327
  font-family: "Courier New", monospace;
1237
1328
  font-size: 11px;
1238
1329
  line-height: 1.4;
1239
- color: #333;
1240
- background-color: #fff;
1330
+ color: var(--el-text-color-primary);
1331
+ background-color: var(--el-bg-color-overlay);
1241
1332
  padding: 8px;
1242
1333
  border-radius: 3px;
1243
- border: 1px solid #ddd;
1334
+ border: 1px solid var(--el-border-color-light);
1244
1335
  word-break: break-all;
1245
1336
  white-space: pre-wrap;
1246
1337
  max-height: 120px;
@@ -1291,7 +1382,7 @@ h6 {
1291
1382
  }
1292
1383
  .layer-name {
1293
1384
  font-size: 14px;
1294
- color: #333;
1385
+ color: var(--el-text-color-primary);
1295
1386
  white-space: nowrap;
1296
1387
  overflow: hidden;
1297
1388
  text-overflow: ellipsis;
@@ -1312,7 +1403,7 @@ h6 {
1312
1403
  }
1313
1404
  .opacity-value {
1314
1405
  font-size: 12px;
1315
- color: #666;
1406
+ color: var(--el-text-color-regular);
1316
1407
  min-width: 35px;
1317
1408
  text-align: right;
1318
1409
  white-space: nowrap;
@@ -1338,8 +1429,8 @@ h6 {
1338
1429
  margin: 0 0 16px 0;
1339
1430
  font-size: 14px;
1340
1431
  font-weight: 600;
1341
- color: #333;
1342
- border-bottom: 1px solid #eee;
1432
+ color: var(--el-text-color-primary);
1433
+ border-bottom: 1px solid var(--el-border-color-light);
1343
1434
  padding-bottom: 8px;
1344
1435
  }
1345
1436
  .config-section {
@@ -1348,7 +1439,7 @@ h5 {
1348
1439
  margin: 0 0 12px 0;
1349
1440
  font-size: 13px;
1350
1441
  font-weight: 500;
1351
- color: #666;
1442
+ color: var(--el-text-color-regular);
1352
1443
  }
1353
1444
  .config-item {
1354
1445
  display: flex;
@@ -1358,7 +1449,7 @@ h5 {
1358
1449
  label {
1359
1450
  flex: 0 0 60px;
1360
1451
  font-size: 12px;
1361
- color: #666;
1452
+ color: var(--el-text-color-regular);
1362
1453
  }
1363
1454
  .el-slider {
1364
1455
  flex: 1;
@@ -1367,7 +1458,7 @@ label {
1367
1458
  .value-text {
1368
1459
  flex: 0 0 45px;
1369
1460
  font-size: 12px;
1370
- color: #999;
1461
+ color: var(--el-text-color-secondary);
1371
1462
  text-align: right;
1372
1463
  }
1373
1464
  }
@@ -1384,7 +1475,7 @@ label {
1384
1475
  .panel-actions {
1385
1476
  margin-top: 16px;
1386
1477
  padding-top: 12px;
1387
- border-top: 1px solid #eee;
1478
+ border-top: 1px solid var(--el-border-color-light);
1388
1479
  text-align: center;
1389
1480
  }
1390
1481
  .custom-css-input {
@@ -1396,8 +1487,8 @@ label {
1396
1487
  font-family: "Courier New", monospace;
1397
1488
  font-size: 12px;
1398
1489
  line-height: 1.4;
1399
- background-color: #f8f9fa;
1400
- border: 1px solid #e9ecef;
1490
+ background-color: var(--el-fill-color-light);
1491
+ border: 1px solid var(--el-border-color-light);
1401
1492
  }
1402
1493
  }
1403
1494
  }
@@ -1546,32 +1637,37 @@ label {
1546
1637
  width: 100% !important;
1547
1638
  height: 100% !important;
1548
1639
  }
1549
-
1550
- .context-menu {
1551
- background: white;
1552
- border: 1px solid #dcdfe6;
1553
- border-radius: 4px;
1554
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
1555
- padding: 4px 0;
1556
- min-width: 120px;
1640
+ .context-menu[data-v-736d12b7] {
1641
+ background: var(--el-bg-color-overlay);
1642
+ border: 1px solid var(--el-border-color-light);
1643
+ border-radius: var(--el-border-radius-base);
1644
+ box-shadow: var(--el-box-shadow-light);
1645
+ padding: 4px 0;
1646
+ min-width: 140px;
1647
+ overflow: hidden;
1557
1648
  }
1558
- .context-menu-item {
1559
- display: flex;
1560
- align-items: center;
1561
- padding: 8px 12px;
1562
- cursor: pointer;
1563
- font-size: 14px;
1564
- color: #606266;
1565
- transition: background-color 0.3s;
1649
+ .context-menu .context-menu-item[data-v-736d12b7] {
1650
+ display: flex;
1651
+ align-items: center;
1652
+ padding: 8px 16px;
1653
+ cursor: pointer;
1654
+ font-size: var(--el-font-size-base);
1655
+ color: var(--el-text-color-primary);
1656
+ transition: all 0.2s;
1566
1657
  }
1567
- .context-menu-item:hover {
1568
- background-color: #f5f7fa;
1658
+ .context-menu .context-menu-item[data-v-736d12b7]:hover {
1659
+ background-color: var(--el-fill-color-light);
1660
+ color: var(--el-color-primary);
1569
1661
  }
1570
- .context-menu-item .el-icon {
1571
- margin-right: 8px;
1662
+ .context-menu .context-menu-item:hover .el-icon[data-v-736d12b7] {
1663
+ color: var(--el-color-primary);
1664
+ }
1665
+ .context-menu .context-menu-item .el-icon[data-v-736d12b7] {
1666
+ margin-right: 8px;
1572
1667
  font-size: 16px;
1573
- }
1574
-
1668
+ color: var(--el-text-color-secondary);
1669
+ transition: color 0.2s;
1670
+ }
1575
1671
  /* 右侧滑入动画 */
1576
1672
  .fixed.items-stretch.justify-end .bg-white {
1577
1673
  animation: slideInRight 0.3s ease-out;
@@ -2437,51 +2533,30 @@ to {
2437
2533
  /* 图例面板相关样式 */
2438
2534
  .legend-collapsed .panel-content {
2439
2535
  display: none;
2440
- }/* 让样式穿透到 CustomDialog 内部容器(其上有我们传入的 class="measurement-dialog") */
2441
- [data-v-ac238457] .measurement-dialog {
2442
- background-color: transparent !important; /* 覆盖 CustomDialog 根容器的 bg-white */
2443
- box-shadow: none !important;
2444
- }
2445
-
2446
- /* 让 CustomDialog 自带的标题栏不再是灰底 */
2447
- [data-v-ac238457] .measurement-dialog .bg-gray-50 {
2448
- background-color: transparent !important;
2449
- border-bottom-color: transparent !important;
2450
- }
2451
-
2452
- /* 保留以下原有样式 */
2453
- .measurement-dialog[data-v-ac238457] {
2454
- --el-dialog-bg-color: transparent;
2455
- --el-dialog-title-font-size: 16px;
2456
- --el-dialog-box-shadow: none;
2457
- }
2458
- .measurement-content[data-v-ac238457] {
2459
- background: transparent;
2460
- border-radius: 12px;
2536
+ }.measurement-content[data-v-60e80f64] {
2537
+ background: var(--el-bg-color);
2538
+ border-radius: var(--el-border-radius-base);
2461
2539
  overflow: hidden;
2462
2540
  }
2463
- .measurement-header[data-v-ac238457] {
2464
- background: transparent;
2465
- backdrop-filter: blur(10px);
2466
- border-bottom: 1px solid rgba(226, 232, 240, 0);
2541
+ .measurement-header[data-v-60e80f64] {
2542
+ background: var(--el-bg-color-overlay);
2543
+ border-bottom: 1px solid var(--el-border-color-light);
2467
2544
  }
2468
- .measurement-result[data-v-ac238457] {
2469
- background: rgba(255, 255, 255, 0.9);
2470
- backdrop-filter: blur(10px);
2471
- border-bottom: 1px solid rgba(226, 232, 240, 0.8);
2545
+ .measurement-result[data-v-60e80f64] {
2546
+ background: var(--el-fill-color-light);
2547
+ border-bottom: 1px solid var(--el-border-color-light);
2472
2548
  display: flex;
2473
2549
  align-items: center;
2474
2550
  justify-content: center;
2475
2551
  }
2476
- .result-value[data-v-ac238457] {
2552
+ .result-value[data-v-60e80f64] {
2477
2553
  font-size: 42px;
2478
2554
  font-weight: 600;
2479
- color: #3b82f6;
2555
+ color: var(--el-color-primary);
2480
2556
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
2481
2557
  line-height: 1;
2482
- text-shadow: 0 2px 4px rgba(59, 130, 246, 0.1);
2483
2558
  }
2484
- .tool-grid[data-v-ac238457] {
2559
+ .tool-grid[data-v-60e80f64] {
2485
2560
  display: grid;
2486
2561
  grid-template-columns: repeat(4, 1fr);
2487
2562
  column-gap: 18px;
@@ -2489,7 +2564,7 @@ to {
2489
2564
  justify-items: center;
2490
2565
  align-items: start;
2491
2566
  }
2492
- .tool-item[data-v-ac238457] {
2567
+ .tool-item[data-v-60e80f64] {
2493
2568
  position: relative;
2494
2569
  display: flex;
2495
2570
  flex-direction: column;
@@ -2498,240 +2573,129 @@ to {
2498
2573
  user-select: none;
2499
2574
  transition: transform 0.2s ease;
2500
2575
  }
2501
- .tool-icon[data-v-ac238457] {
2576
+ .tool-icon[data-v-60e80f64] {
2502
2577
  width: 28px;
2503
2578
  height: 28px;
2504
- padding: 14px; /* 28 + 14*2 = 56px 的方块 */
2579
+ padding: 14px;
2505
2580
  border-radius: 10px;
2506
- background: linear-gradient(180deg, #f2f4f8 0%, #e9eef5 100%);
2507
- border: 1px solid #e6ebf2;
2508
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
2509
- transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
2581
+ background: var(--el-fill-color);
2582
+ border: 1px solid var(--el-border-color);
2583
+ box-shadow: var(--el-box-shadow-lighter);
2584
+ transition: all 0.2s ease;
2510
2585
  margin-bottom: 10px;
2511
2586
  }
2512
- .tool-item:hover .tool-icon[data-v-ac238457],
2513
- .tool-item.active .tool-icon[data-v-ac238457] {
2587
+ .tool-item:hover .tool-icon[data-v-60e80f64],
2588
+ .tool-item.active .tool-icon[data-v-60e80f64] {
2514
2589
  transform: translateY(-2px);
2515
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
2516
- border-color: #c8d4e6;
2590
+ box-shadow: var(--el-box-shadow-light);
2591
+ border-color: var(--el-color-primary-light-5);
2592
+ background-color: var(--el-color-primary-light-9);
2517
2593
  }
2518
- .tool-label[data-v-ac238457] {
2594
+ .tool-label[data-v-60e80f64] {
2519
2595
  font-size: 14px;
2520
2596
  line-height: 1.2;
2521
- color: #334155; /* 不改变整体背景,仅优化文字可读性 */
2597
+ color: var(--el-text-color-regular);
2522
2598
  font-weight: 500;
2523
2599
  white-space: nowrap;
2524
2600
  }
2525
- .dialog-footer[data-v-ac238457] {
2526
- @apply hidden;
2601
+ .dialog-footer[data-v-60e80f64] {
2602
+ display: none;
2527
2603
  }
2528
2604
  /* 底图对话框样式 */
2529
- .basemap-dialog {
2605
+ .basemap-dialog[data-v-75f232fd] {
2530
2606
  /* CustomDialog 会处理右侧滑入动画 */
2531
2607
  }
2532
2608
 
2533
2609
  /* 底图内容容器 */
2534
- .basemap-content {
2535
- padding: 16px;
2610
+ .basemap-content[data-v-75f232fd] {
2611
+ padding: 8px;
2536
2612
  height: 100%;
2537
- overflow: visible;
2613
+ overflow: visible;
2614
+ background-color: var(--el-bg-color);
2538
2615
  }
2539
2616
 
2540
2617
  /* 底图网格布局 */
2541
- .basemap-grid {
2618
+ .basemap-grid[data-v-75f232fd] {
2542
2619
  display: grid;
2543
- grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
2544
- gap: 16px;
2620
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
2621
+ gap: 8px;
2545
2622
  padding: 8px 0;
2546
2623
  }
2547
2624
 
2548
2625
  /* 底图项目 */
2549
- .basemap-item {
2626
+ .basemap-item[data-v-75f232fd] {
2550
2627
  display: flex;
2551
2628
  flex-direction: column;
2552
2629
  align-items: center;
2553
- padding: 12px;
2630
+ padding: 8px;
2554
2631
  border: 2px solid transparent;
2555
- border-radius: 12px;
2632
+ border-radius: var(--el-border-radius-base);
2556
2633
  cursor: pointer;
2557
2634
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
2558
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.8) 0%, rgba(248, 250, 252, 0.9) 100%);
2559
- backdrop-filter: blur(10px);
2560
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
2635
+ background: var(--el-bg-color-overlay);
2636
+ box-shadow: var(--el-box-shadow-light);
2637
+ border: 1px solid var(--el-border-color-light);
2561
2638
  }
2562
- .basemap-item:hover {
2639
+ .basemap-item[data-v-75f232fd]:hover {
2563
2640
  transform: translateY(-2px) scale(1.02);
2564
- border-color: rgba(59, 130, 246, 0.3);
2565
- box-shadow: 0 8px 25px rgba(59, 130, 246, 0.15), 0 4px 12px rgba(0, 0, 0, 0.1);
2566
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 1) 100%);
2567
- }
2568
- .basemap-item.active {
2569
- border-color: #3b82f6;
2570
- background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(147, 197, 253, 0.15) 100%);
2571
- box-shadow: 0 8px 25px rgba(59, 130, 246, 0.2), 0 4px 12px rgba(0, 0, 0, 0.1);
2641
+ border-color: var(--el-color-primary-light-5);
2642
+ box-shadow: var(--el-box-shadow);
2643
+ }
2644
+ .basemap-item.active[data-v-75f232fd] {
2645
+ border-color: var(--el-color-primary);
2646
+ background: var(--el-color-primary-light-9);
2647
+ box-shadow: var(--el-box-shadow);
2572
2648
  }
2573
2649
 
2574
2650
  /* 底图预览图片 */
2575
- .basemap-preview {
2576
- width: 100px;
2577
- height: 75px;
2578
- border-radius: 8px;
2651
+ .basemap-preview[data-v-75f232fd] {
2652
+ width: 92px;
2653
+ height: 68px;
2654
+ border-radius: var(--el-border-radius-small);
2579
2655
  overflow: hidden;
2580
2656
  margin-bottom: 8px;
2581
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
2582
- transition: all 0.3s ease;
2657
+ box-shadow: var(--el-box-shadow-lighter);
2658
+ transition: all 0.3s ease;
2659
+ background: var(--el-fill-color-light);
2660
+ display: flex;
2661
+ align-items: center;
2662
+ justify-content: center;
2583
2663
  }
2584
- .basemap-item:hover .basemap-preview {
2585
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
2664
+ .basemap-item:hover .basemap-preview[data-v-75f232fd] {
2665
+ box-shadow: var(--el-box-shadow-light);
2586
2666
  transform: scale(1.05);
2587
2667
  }
2588
- .basemap-preview img {
2668
+ .basemap-preview img[data-v-75f232fd] {
2589
2669
  width: 100%;
2590
2670
  height: 100%;
2591
2671
  object-fit: cover;
2592
- transition: all 0.3s ease;
2593
- image-rendering: -webkit-optimize-contrast;
2594
- image-rendering: crisp-edges;
2672
+ transition: all 0.3s ease;
2595
2673
  }
2596
2674
 
2597
2675
  /* 底图名称 */
2598
- .basemap-name {
2599
- font-size: 12px;
2676
+ .basemap-name[data-v-75f232fd] {
2677
+ font-size: 11px;
2600
2678
  font-weight: 500;
2601
- color: #374151;
2679
+ color: var(--el-text-color-regular);
2602
2680
  text-align: center;
2603
2681
  line-height: 1.4;
2604
- transition: all 0.3s ease;
2682
+ transition: all 0.3s ease;
2683
+ margin-top: 4px;
2605
2684
  }
2606
- .basemap-item:hover .basemap-name {
2607
- color: #1f2937;
2685
+ .basemap-item:hover .basemap-name[data-v-75f232fd] {
2686
+ color: var(--el-text-color-primary);
2608
2687
  font-weight: 600;
2609
2688
  }
2610
- .basemap-item.active .basemap-name {
2611
- color: #3b82f6;
2612
- font-weight: 600;
2613
- }
2614
-
2615
- /* 底图网格 */
2616
- .basemap-grid {
2617
- display: grid;
2618
- grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
2619
- gap: 16px;
2620
- }
2621
-
2622
- /* 底图项 */
2623
- .basemap-item {
2624
- cursor: pointer;
2625
- border-radius: 12px;
2626
- overflow: hidden;
2627
- transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
2628
- border: 2px solid rgba(0, 0, 0, 0.08);
2629
- background: rgba(255, 255, 255, 0.8);
2630
- backdrop-filter: blur(10px);
2631
- position: relative;
2632
- }
2633
- .basemap-item::before {
2634
- content: '';
2635
- position: absolute;
2636
- top: 0;
2637
- left: 0;
2638
- right: 0;
2639
- bottom: 0;
2640
- background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(147, 51, 234, 0.1) 100%);
2641
- opacity: 0;
2642
- transition: opacity 0.3s ease;
2643
- z-index: 1;
2644
- }
2645
- .basemap-item:hover {
2646
- transform: translateY(-4px) scale(1.02);
2647
- border-color: rgba(59, 130, 246, 0.3);
2648
- box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
2649
- }
2650
- .basemap-item:hover::before {
2651
- opacity: 1;
2652
- }
2653
- .basemap-item.active {
2654
- border-color: #3b82f6;
2655
- box-shadow: 0 8px 25px rgba(59, 130, 246, 0.25);
2656
- transform: translateY(-2px);
2657
- }
2658
- .basemap-item.active::before {
2659
- opacity: 0.7;
2660
- }
2661
-
2662
- /* 底图预览 */
2663
- .basemap-preview {
2664
- width: 100%;
2665
- height: 80px;
2666
- background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%);
2667
- display: flex;
2668
- align-items: center;
2669
- justify-content: center;
2670
- overflow: hidden;
2671
- position: relative;
2672
- z-index: 2;
2673
- }
2674
- .basemap-preview img {
2675
- width: 100%;
2676
- height: 100%;
2677
- object-fit: cover;
2678
- transition: transform 0.3s ease;
2679
- }
2680
- .basemap-item:hover .basemap-preview img {
2681
- transform: scale(1.1);
2682
- }
2683
-
2684
- /* 底图名称 */
2685
- .basemap-name {
2686
- padding: 12px 16px;
2687
- text-align: center;
2688
- font-size: 13px;
2689
- font-weight: 500;
2690
- color: #374151;
2691
- background: rgba(255, 255, 255, 0.9);
2692
- backdrop-filter: blur(5px);
2693
- position: relative;
2694
- z-index: 2;
2695
- letter-spacing: 0.3px;
2696
- }
2697
- .basemap-item.active .basemap-name {
2698
- color: #1f2937;
2689
+ .basemap-item.active .basemap-name[data-v-75f232fd] {
2690
+ color: var(--el-color-primary);
2699
2691
  font-weight: 600;
2700
2692
  }
2701
2693
 
2702
2694
  /* 响应式设计 */
2703
2695
  @media (max-width: 480px) {
2704
- .basemap-panel {
2705
- width: 100%;
2706
- }
2707
- .basemap-grid {
2696
+ .basemap-grid[data-v-75f232fd] {
2708
2697
  grid-template-columns: 1fr;
2709
2698
  }
2710
- .panel-content {
2711
- padding: 16px;
2712
- }
2713
- }
2714
-
2715
- /* 动画关键帧 */
2716
- @keyframes slideInRight {
2717
- from {
2718
- transform: translateX(100%);
2719
- opacity: 0;
2720
- }
2721
- to {
2722
- transform: translateX(0);
2723
- opacity: 1;
2724
- }
2725
- }
2726
- @keyframes slideOutRight {
2727
- from {
2728
- transform: translateX(0);
2729
- opacity: 1;
2730
- }
2731
- to {
2732
- transform: translateX(100%);
2733
- opacity: 0;
2734
- }
2735
2699
  }
2736
2700
 
2737
2701
  .coordinate-dialog {