config.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. <SettingItem name="颜色">
  7. <n-color-picker size="small" :modes="['hex']" v-model:value="item.itemStyle.color"></n-color-picker>
  8. </SettingItem>
  9. <SettingItem>
  10. <n-button size="small" @click="item.itemStyle.color = null">恢复默认</n-button>
  11. </SettingItem>
  12. <SettingItem name="宽度">
  13. <n-input-number
  14. v-model:value="item.barWidth"
  15. :min="1"
  16. :max="100"
  17. size="small"
  18. placeholder="自动计算"
  19. ></n-input-number>
  20. </SettingItem>
  21. <SettingItem name="圆角">
  22. <n-input-number
  23. v-model:value="item.itemStyle.borderRadius"
  24. :min="0"
  25. size="small"
  26. ></n-input-number>
  27. </SettingItem>
  28. </SettingItemBox>
  29. <setting-item-box name="标签">
  30. <setting-item>
  31. <n-space>
  32. <n-switch v-model:value="item.label.show" size="small" />
  33. <n-text>展示标签</n-text>
  34. </n-space>
  35. </setting-item>
  36. <setting-item name="大小">
  37. <n-input-number
  38. v-model:value="item.label.fontSize"
  39. size="small"
  40. :min="1"
  41. ></n-input-number>
  42. </setting-item>
  43. <setting-item name="颜色">
  44. <n-color-picker
  45. size="small"
  46. :modes="['hex']"
  47. v-model:value="item.label.color"
  48. ></n-color-picker>
  49. </setting-item>
  50. <setting-item name="位置">
  51. <n-select
  52. v-model:value="item.label.position"
  53. :options="[
  54. { label: 'top', value: 'top' },
  55. { label: 'left', value: 'left' },
  56. { label: 'right', value: 'right' },
  57. { label: 'bottom', value: 'bottom' },
  58. ]"
  59. />
  60. </setting-item>
  61. </setting-item-box>
  62. </CollapseItem>
  63. </template>
  64. <script setup lang="ts">
  65. import { PropType, computed } from 'vue'
  66. import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  67. import { option } from './config'
  68. import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  69. const props = defineProps({
  70. optionData: {
  71. type: Object as PropType<GlobalThemeJsonType>,
  72. required: true
  73. }
  74. })
  75. const seriesList = computed(() => {
  76. return props.optionData.series
  77. })
  78. </script>