config.vue 2.5 KB

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