config.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <collapse-item name="基础" :expanded="true">
  3. <setting-item-box name="语言类型" :alone="true">
  4. <setting-item>
  5. <n-select size="small" v-model:value="optionData.mapOptions.lang" :options="langOptions" />
  6. </setting-item>
  7. </setting-item-box>
  8. <setting-item-box name="Key" :alone="true">
  9. <setting-item name="请务必使用自己的高德应用 key">
  10. <n-input v-model:value="optionData.mapOptions.amapKey" size="small"></n-input>
  11. </setting-item>
  12. </setting-item-box>
  13. <setting-item-box name="自定义地图样式ID" :alone="true">
  14. <setting-item>
  15. <n-input size="small" v-model:value="optionData.mapOptions.amapStyleKeyCustom" />
  16. </setting-item>
  17. </setting-item-box>
  18. </collapse-item>
  19. <collapse-item name="地图" :expanded="true">
  20. <setting-item-box name="主题">
  21. <setting-item>
  22. <n-select size="small" v-model:value="optionData.mapOptions.amapStyleKey" :options="themeOptions" />
  23. </setting-item>
  24. </setting-item-box>
  25. <setting-item-box name="内容" :alone="true">
  26. <n-checkbox-group v-model:value="optionData.mapOptions.features">
  27. <n-space item-style="display: flex;">
  28. <n-checkbox :value="item.value" :label="item.label" v-for="(item, index) in featuresOptions" :key="index" />
  29. </n-space>
  30. </n-checkbox-group>
  31. </setting-item-box>
  32. <setting-item-box name="位置">
  33. <setting-item name="经度">
  34. <n-input-number v-model:value="optionData.mapOptions.amapLon" :show-button="false" size="small">
  35. <template #suffix>°</template>
  36. </n-input-number>
  37. </setting-item>
  38. <setting-item name="纬度">
  39. <n-input-number v-model:value="optionData.mapOptions.amapLat" :show-button="false" size="small">
  40. <template #suffix>°</template>
  41. </n-input-number>
  42. </setting-item>
  43. <setting-item name="初始缩放">
  44. <n-input-number v-model:value="optionData.mapOptions.amapZindex" :min="0" size="small"></n-input-number>
  45. </setting-item>
  46. </setting-item-box>
  47. <setting-item-box name="模式" :alone="true">
  48. <setting-item>
  49. <n-radio-group v-model:value="optionData.mapOptions.viewMode" name="radiogroup">
  50. <n-space>
  51. <n-radio v-for="song in viewModeOptions" :key="song.value" :value="song.value">
  52. {{ song.label }}
  53. </n-radio>
  54. </n-space>
  55. </n-radio-group>
  56. </setting-item>
  57. </setting-item-box>
  58. <template v-if="optionData.mapOptions.viewMode === '3D'">
  59. <setting-item-box>
  60. <setting-item name="天空色">
  61. <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.mapOptions.skyColor"></n-color-picker>
  62. </setting-item>
  63. <setting-item name="俯仰角">
  64. <n-input-number v-model:value="optionData.mapOptions.pitch" :min="0" :max="83" size="small"></n-input-number>
  65. </setting-item>
  66. </setting-item-box>
  67. </template>
  68. </collapse-item>
  69. <collapse-item name="标记" :expanded="true">
  70. <setting-item-box name="样式">
  71. <setting-item name="类型">
  72. <n-select size="small" v-model:value="optionData.mapOptions.mapMarkerType" :options="MarkerOptions" />
  73. </setting-item>
  74. <setting-item name="颜色">
  75. <n-color-picker v-model:value="optionData.mapOptions.marker.fillColor" size="small"></n-color-picker>
  76. </setting-item>
  77. </setting-item-box>
  78. </collapse-item>
  79. </template>
  80. <script setup lang="ts">
  81. import { PropType } from 'vue'
  82. import { option, MarkerEnum, ThemeEnum, LangEnum, ViewModeEnum, FeaturesEnum } from './config'
  83. import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  84. defineProps({
  85. optionData: {
  86. type: Object as PropType<typeof option>,
  87. required: true
  88. }
  89. })
  90. const themeOptions = [
  91. {
  92. value: ThemeEnum.NORMAL,
  93. label: '标准'
  94. },
  95. {
  96. value: ThemeEnum.DARK,
  97. label: '幻影黑'
  98. },
  99. {
  100. value: ThemeEnum.LIGHT,
  101. label: '月光银'
  102. },
  103. {
  104. value: ThemeEnum.WHITES_MOKE,
  105. label: '远山黛'
  106. },
  107. {
  108. value: ThemeEnum.FRESH,
  109. label: '草色青'
  110. },
  111. {
  112. value: ThemeEnum.GREY,
  113. label: '雅士灰'
  114. },
  115. {
  116. value: ThemeEnum.GRAFFITI,
  117. label: '涂鸦'
  118. },
  119. {
  120. value: ThemeEnum.MACARON,
  121. label: '马卡龙'
  122. },
  123. {
  124. value: ThemeEnum.BLUE,
  125. label: '靛青蓝'
  126. },
  127. {
  128. value: ThemeEnum.DARKBLUE,
  129. label: '极夜蓝'
  130. },
  131. {
  132. value: ThemeEnum.WINE,
  133. label: '酱籽'
  134. }
  135. ]
  136. const langOptions = [
  137. {
  138. value: LangEnum.ZH_CN,
  139. label: '中文简体'
  140. },
  141. {
  142. value: LangEnum.EN,
  143. label: '英文'
  144. },
  145. {
  146. value: LangEnum.ZH_EN,
  147. label: '中英文对照'
  148. }
  149. ]
  150. const viewModeOptions = [
  151. {
  152. value: ViewModeEnum.PLANE,
  153. label: '2D'
  154. },
  155. {
  156. value: ViewModeEnum.STEREOSCOPIC,
  157. label: '3D'
  158. }
  159. ]
  160. const featuresOptions = [
  161. {
  162. value: FeaturesEnum.BG,
  163. label: '显示地图背景'
  164. },
  165. {
  166. value: FeaturesEnum.POINT,
  167. label: '显示标识'
  168. },
  169. {
  170. value: FeaturesEnum.ROAD,
  171. label: '显示道路'
  172. },
  173. {
  174. value: FeaturesEnum.BUILDING,
  175. label: '显示建筑'
  176. }
  177. ]
  178. const MarkerOptions = [
  179. {
  180. value: MarkerEnum.CIRCLE_MARKER,
  181. label: '圆形标点'
  182. },
  183. {
  184. value: MarkerEnum.MARKER,
  185. label: '定位标点'
  186. },
  187. {
  188. value: MarkerEnum.NONE,
  189. label: '隐藏标点'
  190. }
  191. ]
  192. </script>