config.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <!-- Echarts 全局设置 -->
  3. <global-setting :optionData="optionData"></global-setting>
  4. <CollapseItem v-for="(item, index) in seriesList" :key="index" :name="`折线图-${index + 1}`" :expanded="true">
  5. <SettingItemBox name="线条">
  6. <setting-item name="颜色">
  7. <n-color-picker size="small" :modes="['hex']" v-model:value="item.lineStyle.color"></n-color-picker>
  8. </setting-item>
  9. <SettingItem name="宽度">
  10. <n-input-number
  11. v-model:value="item.lineStyle.width"
  12. :min="1"
  13. :max="100"
  14. size="small"
  15. placeholder="自动计算"
  16. ></n-input-number>
  17. </SettingItem>
  18. <SettingItem name="类型">
  19. <n-select v-model:value="item.lineStyle.type" size="small" :options="lineConf.lineStyle.type"></n-select>
  20. </SettingItem>
  21. </SettingItemBox>
  22. <SettingItemBox name="实心点">
  23. <SettingItem name="大小">
  24. <n-input-number
  25. v-model:value="item.symbolSize"
  26. :min="1"
  27. :max="100"
  28. size="small"
  29. placeholder="自动计算"
  30. ></n-input-number>
  31. </SettingItem>
  32. </SettingItemBox>
  33. <setting-item-box name="标签">
  34. <setting-item>
  35. <n-space>
  36. <n-switch v-model:value="item.label.show" size="small" />
  37. <n-text>展示标签</n-text>
  38. </n-space>
  39. </setting-item>
  40. <setting-item name="大小">
  41. <n-input-number v-model:value="item.label.fontSize" size="small" :min="1"></n-input-number>
  42. </setting-item>
  43. <setting-item name="颜色">
  44. <n-color-picker size="small" :modes="['hex']" v-model:value="item.label.color"></n-color-picker>
  45. </setting-item>
  46. <setting-item name="位置">
  47. <n-select
  48. v-model:value="item.label.position"
  49. :options="[
  50. { label: 'top', value: 'top' },
  51. { label: 'left', value: 'left' },
  52. { label: 'right', value: 'right' },
  53. { label: 'bottom', value: 'bottom' }
  54. ]"
  55. />
  56. </setting-item>
  57. </setting-item-box>
  58. </CollapseItem>
  59. </template>
  60. <script setup lang="ts">
  61. import { PropType, computed } from 'vue'
  62. import { lineConf } from '@/packages/chartConfiguration/echarts/index'
  63. import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  64. import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  65. const props = defineProps({
  66. optionData: {
  67. type: Object as PropType<GlobalThemeJsonType>,
  68. required: true
  69. }
  70. })
  71. const seriesList = computed(() => {
  72. return props.optionData.series
  73. })
  74. </script>