config.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <collapse-item name="信息" :expanded="true">
  3. <setting-item-box name="文字" :alone="true">
  4. <setting-item>
  5. <n-input v-model:value="optionData.dataset" size="small"></n-input>
  6. </setting-item>
  7. </setting-item-box>
  8. <setting-item-box name="链接" :alone="true">
  9. <setting-item>
  10. <n-input-group><n-select v-model:value="optionData.linkHead" size="small" :style="{ width: '33%' }" :options="linkHeadOptions" /><n-input v-model:value="optionData.link" size="small"></n-input><n-button :disabled="!optionData.link" secondary size="small" @click="handleLinkClick" >跳转</n-button></n-input-group>
  11. </setting-item>
  12. </setting-item-box>
  13. </collapse-item>
  14. <collapse-item name="样式" :expanded="true">
  15. <setting-item-box name="文字">
  16. <setting-item name="字体大小">
  17. <n-input-number v-model:value="optionData.fontSize" size="small" placeholder="字体大小"></n-input-number>
  18. </setting-item>
  19. <setting-item name="文本方向">
  20. <n-select v-model:value="optionData.writingMode" size="small" :options="verticalOptions" />
  21. </setting-item>
  22. <setting-item name="X轴内边距">
  23. <n-input-number v-model:value="optionData.paddingX" size="small" placeholder="输入内边距"></n-input-number>
  24. </setting-item>
  25. <setting-item name="Y轴内边距">
  26. <n-input-number v-model:value="optionData.paddingY" size="small" placeholder="输入内边距"></n-input-number>
  27. </setting-item>
  28. <setting-item name="字间距">
  29. <n-input-number v-model:value="optionData.letterSpacing" size="small" placeholder="输入字间距"></n-input-number>
  30. </setting-item>
  31. <setting-item name="颜色">
  32. <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.fontColor"></n-color-picker>
  33. </setting-item>
  34. </setting-item-box>
  35. <setting-item-box name="边框">
  36. <setting-item name="宽度">
  37. <n-input-number
  38. v-model:value="optionData.borderWidth"
  39. size="small"
  40. :min="0"
  41. placeholder="宽度"
  42. ></n-input-number>
  43. </setting-item>
  44. <setting-item name="颜色">
  45. <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.borderColor"></n-color-picker>
  46. </setting-item>
  47. <setting-item name="圆角">
  48. <n-input-number
  49. v-model:value="optionData.borderRadius"
  50. size="small"
  51. :min="0"
  52. placeholder="圆角"
  53. ></n-input-number>
  54. </setting-item>
  55. </setting-item-box>
  56. <setting-item-box name="背景" :alone="true">
  57. <setting-item name="背景颜色">
  58. <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.backgroundColor"></n-color-picker>
  59. </setting-item>
  60. </setting-item-box>
  61. </collapse-item>
  62. </template>
  63. <script setup lang="ts">
  64. import { PropType } from 'vue'
  65. import { option, WritingModeEnum, WritingModeObject } from './config'
  66. import {
  67. CollapseItem,
  68. SettingItemBox,
  69. SettingItem
  70. } from '@/components/Pages/ChartItemSetting'
  71. const props = defineProps({
  72. optionData: {
  73. type: Object as PropType<typeof option>,
  74. required: true
  75. }
  76. })
  77. const verticalOptions = [{
  78. label: WritingModeEnum.HORIZONTAL,
  79. value: WritingModeObject[WritingModeEnum.HORIZONTAL]
  80. }, {
  81. label: WritingModeEnum.VERTICAL,
  82. value: WritingModeObject[WritingModeEnum.VERTICAL]
  83. }]
  84. const handleLinkClick = ()=>{
  85. window.open(props.optionData.linkHead+props.optionData.link)
  86. }
  87. const linkHeadOptions = [{
  88. label: 'http://',
  89. value: 'http://'
  90. },
  91. {
  92. label: 'https://',
  93. value: 'https://'
  94. }]
  95. </script>