index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <base-side-page
  3. @cancel="cancelSidePage"
  4. :title="$t('network.text_565')"
  5. icon="res-network"
  6. :res-name="detailData.name"
  7. :current-tab="params.windowData.currentTab"
  8. :tabs="detailTabs"
  9. :loaded="loaded"
  10. @tab-change="handleTabChange">
  11. <template v-slot:actions v-if="showActions">
  12. <actions :options="singleActions" :row="detailData" button-type="link" button-size="small" />
  13. </template>
  14. <component
  15. :is="params.windowData.currentTab"
  16. :id="listId"
  17. :res-id="detailData.id"
  18. :data="detailData"
  19. :getParams="getParams"
  20. :on-manager="onManager"
  21. :columns="columns"
  22. taskResource="compute-tasks"
  23. @side-page-trigger-handle="sidePageTriggerHandle"
  24. @init-side-page-tab="initSidePageTab"
  25. @refresh="refresh"
  26. @single-refresh="singleRefresh"
  27. @tab-change="handleTabChange"
  28. @updateDetail="handleUpdateDetail" />
  29. </base-side-page>
  30. </template>
  31. <script>
  32. import ReservedIpList from '@Network/views/reserved-ip/components/List'
  33. import SidePageMixin from '@/mixins/sidePage'
  34. import WindowsMixin from '@/mixins/windows'
  35. import Actions from '@/components/PageList/Actions'
  36. import SingleActionsMixin from '../mixins/singleActions'
  37. import ColumnsMixin from '../mixins/columns'
  38. import NetworkDetail from './Detail'
  39. import HostMachineip from './HostMachineIp'
  40. import HostIp from './HostIp'
  41. import LbIp from './LbIp'
  42. import FlexIp from './FlexIp'
  43. import IPList from './IPList'
  44. import NetworkIpMacs from './NetworkIpMacs'
  45. export default {
  46. name: 'NetworkSidePage',
  47. components: {
  48. NetworkDetail,
  49. HostMachineip,
  50. HostIp,
  51. ReservedIpList,
  52. LbIp,
  53. FlexIp,
  54. Actions,
  55. IPList,
  56. NetworkIpMacs,
  57. },
  58. mixins: [SidePageMixin, WindowsMixin, ColumnsMixin, SingleActionsMixin],
  59. data () {
  60. return {
  61. detailTabs: [
  62. { label: this.$t('network.text_67'), key: 'network-detail' },
  63. { label: this.$t('network.text_669'), key: 'i-p-list' },
  64. // { label: '宿主机IP', key: 'host-machineip' },
  65. // { label: '主机IP', key: 'host-ip' },
  66. { label: this.$t('network.text_651'), key: 'reserved-ip-list' },
  67. { label: this.$t('network.mac_ip.mac_mapping_table'), key: 'network-ip-macs' },
  68. // { label: '负载均衡IP', key: 'lb-ip' },
  69. // { label: '弹性网卡IP', key: 'flex-ip' },
  70. { label: this.$t('table.title.task'), key: 'task-drawer' },
  71. { label: this.$t('network.text_150'), key: 'event-drawer' },
  72. ],
  73. }
  74. },
  75. computed: {
  76. getParams () {
  77. if (this.params.windowData.currentTab === 'reserved-ip-list') {
  78. return {
  79. network: this.detailData.id,
  80. }
  81. }
  82. return null
  83. },
  84. listId () {
  85. switch (this.params.windowData.currentTab) {
  86. case 'event-drawer':
  87. return 'EventListForNetworkSidePage'
  88. case 'i-p-list':
  89. return 'IPListForNetworkSidePage'
  90. case 'reserved-ip-list':
  91. return 'ReservedIpListForNetworkSidePage'
  92. case 'hosts-list':
  93. return 'HostsListForNetworkSidePage'
  94. default:
  95. return ''
  96. }
  97. },
  98. hiddenActions () {
  99. return this.params.hiddenActions || []
  100. },
  101. hiddenColumns () {
  102. return this.params.hiddenColumns || []
  103. },
  104. showActions () {
  105. return !this.$isScopedPolicyMenuHidden('network_hidden_columns.perform_action')
  106. },
  107. },
  108. methods: {
  109. handleUpdateDetail () {
  110. this.fetchData()
  111. },
  112. },
  113. }
  114. </script>