detail.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <Breadcrumb />
  3. <TabFilter v-model="activeTab" :options="options" @change="handleTabChange">
  4. <template #actions>
  5. <el-button :icon="ArrowLeft" type="primary" class="is-gradient">返回</el-button>
  6. </template>
  7. </TabFilter>
  8. <component :is="currentComponent" />
  9. </template>
  10. <script setup lang="ts">
  11. import { ArrowLeft } from '@element-plus/icons-vue'
  12. import { ref, computed } from 'vue'
  13. import SDKDetail from './components/SDKDetail.vue'
  14. type TabKey = keyof typeof componentMap
  15. const activeTab = ref<TabKey>('sdkDetail')
  16. const options: Array<{ label: string; value: TabKey }> = [
  17. { label: 'SDK详情', value: 'sdkDetail' },
  18. { label: '转发规则', value: 'forwardRules' },
  19. { label: '连接清单', value: 'connectionList' },
  20. { label: '用量分析', value: 'usageAnalysis' },
  21. { label: '限制多开', value: 'multiOpenRestriction' },
  22. { label: '风险IP段', value: 'riskIpSegments' },
  23. { label: '封禁IP段', value: 'blockedIpSegments' },
  24. { label: '生成SDK', value: 'generateSdk' },
  25. ]
  26. // 组件映射对象
  27. const componentMap = {
  28. sdkDetail: SDKDetail,
  29. forwardRules: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  30. connectionList: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  31. usageAnalysis: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  32. multiOpenRestriction: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  33. riskIpSegments: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  34. blockedIpSegments: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  35. generateSdk: SDKDetail, // 临时映射到SDKDetail,后续可替换为实际组件
  36. }
  37. // 计算当前要显示的组件
  38. const currentComponent = computed(() => {
  39. return componentMap[activeTab.value] || SDKDetail
  40. })
  41. function handleTabChange(value: TabKey) {
  42. }
  43. </script>
  44. <style lang="scss" scoped></style>