index.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <div class="go-chart-configurations-data" v-if="targetData">
  3. <setting-item-box name="请求方式" :alone="true">
  4. <n-select v-model:value="targetData.request.requestDataType" :disabled="isNotData" :options="selectOptions" />
  5. </setting-item-box>
  6. <!-- 静态 -->
  7. <chart-data-static v-if="targetData.request.requestDataType === RequestDataTypeEnum.STATIC"></chart-data-static>
  8. <!-- 动态 -->
  9. <chart-data-ajax v-if="targetData.request.requestDataType === RequestDataTypeEnum.AJAX"></chart-data-ajax>
  10. <!-- 数据池 -->
  11. <chart-data-pond v-if="targetData.request.requestDataType === RequestDataTypeEnum.Pond"></chart-data-pond>
  12. </div>
  13. </template>
  14. <script setup lang="ts">
  15. import { computed } from 'vue'
  16. import { loadAsyncComponent } from '@/utils'
  17. import { SettingItemBox } from '@/components/Pages/ChartItemSetting'
  18. import { useTargetData } from '../hooks/useTargetData.hook'
  19. import { SelectCreateDataType, SelectCreateDataEnum } from './index.d'
  20. import { RequestDataTypeEnum } from '@/enums/httpEnum'
  21. const ChartDataStatic = loadAsyncComponent(() => import('./components/ChartDataStatic/index.vue'))
  22. const ChartDataAjax = loadAsyncComponent(() => import('./components/ChartDataAjax/index.vue'))
  23. const ChartDataPond = loadAsyncComponent(() => import('./components/ChartDataPond/index.vue'))
  24. const { targetData } = useTargetData()
  25. // 选项
  26. const selectOptions: SelectCreateDataType[] = [
  27. {
  28. label: SelectCreateDataEnum.STATIC,
  29. value: RequestDataTypeEnum.STATIC
  30. },
  31. {
  32. label: SelectCreateDataEnum.AJAX,
  33. value: RequestDataTypeEnum.AJAX
  34. },
  35. {
  36. label: SelectCreateDataEnum.Pond,
  37. value: RequestDataTypeEnum.Pond
  38. }
  39. ]
  40. // 无数据源
  41. const isNotData = computed(() => {
  42. return typeof targetData.value?.option?.dataset === 'undefined'
  43. })
  44. </script>