Detail.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <detail
  3. :on-manager="onManager"
  4. :data="data"
  5. :base-info="baseInfo"
  6. :extra-info="extraInfo"
  7. resource="wires" />
  8. </template>
  9. <script>
  10. import { getBrandTableColumn, getCopyWithContentTableColumn, getPublicScopeTableColumn } from '@/utils/common/tableColumn'
  11. import {
  12. getUserTagColumn,
  13. getExtTagColumn,
  14. } from '@/utils/common/detailColumn'
  15. import WindowsMixin from '@/mixins/windows'
  16. import { getBandwidthTableColumn, getMTUTableColumn } from '../utils/columns'
  17. export default {
  18. name: 'WireDetail',
  19. mixins: [WindowsMixin],
  20. props: {
  21. data: {
  22. type: Object,
  23. required: true,
  24. },
  25. onManager: {
  26. type: Function,
  27. required: true,
  28. },
  29. columns: Array,
  30. },
  31. data () {
  32. const extraInfo = []
  33. if (this.data && this.data.metadata && this.data.metadata['sys:datacenter']) {
  34. extraInfo.push({
  35. title: this.$t('network.vmware_extra_info'),
  36. items: [
  37. {
  38. field: 'metadata',
  39. title: this.$t('network.vmware_datacenter_prompt'),
  40. slots: {
  41. default: ({ row }, h) => {
  42. return [
  43. <span>{row.metadata['sys:datacenter']}</span>,
  44. ]
  45. },
  46. },
  47. },
  48. {
  49. field: 'metadata',
  50. title: this.$t('network.vmware_vm_ips_prompt'),
  51. slots: {
  52. default: ({ row }, h) => {
  53. return [
  54. <span>{row.metadata['sys:vm_ips']}</span>,
  55. ]
  56. },
  57. },
  58. },
  59. {
  60. field: 'metadata',
  61. title: this.$t('network.vmware_vm_macs_prompt'),
  62. slots: {
  63. default: ({ row }, h) => {
  64. return [
  65. <span>{row.metadata['sys:vm_macs']}</span>,
  66. ]
  67. },
  68. },
  69. },
  70. ],
  71. })
  72. }
  73. return {
  74. baseInfo: [
  75. getUserTagColumn({ onManager: this.onManager, resource: 'wire', columns: () => this.columns, tipName: this.$t('dictionary.hostwire') }),
  76. getExtTagColumn({ onManager: this.onManager, resource: 'wire', columns: () => this.columns, tipName: this.$t('dictionary.hostwire') }),
  77. getPublicScopeTableColumn({ vm: this, resource: 'wires' }),
  78. getBrandTableColumn(),
  79. getBandwidthTableColumn(),
  80. getMTUTableColumn(),
  81. getCopyWithContentTableColumn({
  82. field: 'vpc',
  83. title: 'VPC',
  84. hideField: true,
  85. slotCallback: row => {
  86. if (!row.vpc) return '-'
  87. return [
  88. <side-page-trigger permission='vpcs_get' name='VpcSidePage' id={row.vpc_id} vm={this}>{ row.vpc }</side-page-trigger>,
  89. ]
  90. },
  91. }),
  92. {
  93. field: 'networks',
  94. title: this.$t('network.text_565'),
  95. slots: {
  96. default: ({ row }, h) => {
  97. if (!row.networks) return row.networks || 0
  98. return [
  99. <a onClick={ () => this.$emit('tab-change', 'network-list') }>{row.networks}</a>,
  100. ]
  101. },
  102. },
  103. },
  104. getCopyWithContentTableColumn({
  105. field: 'region',
  106. title: this.$t('network.text_199'),
  107. hideField: true,
  108. slotCallback: row => {
  109. if (!row.region) return '-'
  110. return [
  111. <side-page-trigger permission='areas_get' name='CloudregionSidePage' id={row.region_id} vm={this}>{ row.region }</side-page-trigger>,
  112. ]
  113. },
  114. }),
  115. ],
  116. extraInfo: extraInfo,
  117. }
  118. },
  119. }
  120. </script>