config.vue 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <!-- Echarts 全局设置 -->
  3. <global-setting :optionData="optionData"></global-setting>
  4. <CollapseItem name="饼图配置" :expanded="true">
  5. <SettingItemBox name="类型">
  6. <SettingItem>
  7. <n-select v-model:value="optionData.type" size="small" :options="fontWeightOptions" />
  8. </SettingItem>
  9. </SettingItemBox>
  10. <SettingItemBox name="标签">
  11. <SettingItem>
  12. <n-space>
  13. <n-switch v-model:value="optionData.series[0].label.show" size="small"></n-switch>
  14. <n-text>展示标签</n-text>
  15. </n-space>
  16. </SettingItem>
  17. <SettingItem name="位置">
  18. <n-select v-model:value="optionData.series[0].label.position" :options="[
  19. { label: '外侧', value: 'outside' },
  20. { label: '内部', value: 'inside' },
  21. { label: '中心', value: 'center' }
  22. ]" />
  23. </SettingItem>
  24. </SettingItemBox>
  25. <setting-item-box name="标签数据">
  26. <setting-item>
  27. <n-select v-model:value="optionData.series[0].label.formatter" :options="[
  28. { label: '数据名', value: '{b}' },
  29. { label: '百分比', value: '{d}' },
  30. { label: '列名:百分比', value: '{b}:{d}%' },
  31. ]" />
  32. </setting-item>
  33. </setting-item-box>
  34. <setting-item-box name="引导线">
  35. <setting-item>
  36. <n-space>
  37. <n-switch v-model:value="optionData.series[0].labelLine.show" size="small"></n-switch>
  38. <n-text>展示引导线</n-text>
  39. </n-space>
  40. </setting-item>
  41. </setting-item-box>
  42. <setting-item-box name="圆角">
  43. <setting-item>
  44. <n-space>
  45. <n-input-number v-model:value="optionData.series[0].itemStyle.borderRadius" size="small" :min="0"></n-input-number>
  46. <n-text>圆角大小</n-text>
  47. </n-space>
  48. </setting-item>
  49. <setting-item>
  50. <n-space>
  51. <n-input-number v-model:value="optionData.series[0].itemStyle.borderWidth" size="small" :min="0"></n-input-number>
  52. <n-text>线条宽度</n-text>
  53. </n-space>
  54. </setting-item>
  55. </setting-item-box>
  56. </CollapseItem>
  57. </template>
  58. <script setup lang="ts">
  59. import { PropType, watch } from 'vue'
  60. import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  61. import { GlobalSetting, CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  62. import { PieTypeObject, PieTypeEnum } from './config'
  63. const props = defineProps({
  64. optionData: {
  65. type: Object as PropType<GlobalThemeJsonType>,
  66. required: true
  67. }
  68. })
  69. const fontWeightOptions = [
  70. {
  71. label: PieTypeEnum.NORMAL,
  72. value: PieTypeObject[PieTypeEnum.NORMAL]
  73. },
  74. {
  75. label: PieTypeEnum.RING,
  76. value: PieTypeObject[PieTypeEnum.RING]
  77. },
  78. {
  79. label: PieTypeEnum.ROSE,
  80. value: PieTypeObject[PieTypeEnum.ROSE]
  81. }
  82. ]
  83. </script>