RouteSet.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <template>
  2. <page-list
  3. :list="list"
  4. :columns="columns"
  5. :group-actions="groupActions"
  6. :single-actions="singleActions" />
  7. </template>
  8. <script>
  9. import {
  10. getCopyWithContentTableColumn,
  11. // getStatusTableColumn,
  12. getEnabledTableColumn,
  13. getRegionTableColumn,
  14. } from '@/utils/common/tableColumn'
  15. import {
  16. getEnabledFilter,
  17. getRegionFilter,
  18. } from '@/utils/common/tableFilter'
  19. import WindowsMixin from '@/mixins/windows'
  20. import ListMixin from '@/mixins/list'
  21. import { getEnabledSwitchActions } from '@/utils/common/tableActions'
  22. export default {
  23. name: 'routeListForVpcNetworkSidePage',
  24. mixins: [WindowsMixin, ListMixin],
  25. props: {
  26. resId: String,
  27. data: {
  28. type: Object,
  29. required: true,
  30. },
  31. },
  32. data () {
  33. return {
  34. list: this.$list.createList(this, {
  35. id: 'routeListForVpcNetworkSidePage',
  36. resource: 'inter_vpc_network_route_sets',
  37. getParams: { details: true, inter_vpc_network_id: this.resId },
  38. filterOptions: {
  39. cidr: {
  40. label: this.$t('network.vpc_network.target_address'),
  41. },
  42. enabled: getEnabledFilter(),
  43. vpc: {
  44. label: 'VPC',
  45. },
  46. region: getRegionFilter(),
  47. },
  48. }),
  49. columns: [
  50. getCopyWithContentTableColumn({
  51. field: 'cidr',
  52. title: this.$t('network.vpc.cidr_block.ipv4.label'),
  53. sortable: true,
  54. }),
  55. // getStatusTableColumn({ statusModule: 'routeSet' }),
  56. getEnabledTableColumn(),
  57. {
  58. field: 'vpc',
  59. title: this.$t('network.vpc_network.next_hop'),
  60. minWidth: 100,
  61. sortable: true,
  62. slots: {
  63. default: ({ row }) => {
  64. return [
  65. <side-page-trigger onTrigger={ () => this.handleOpenSidepage(row) }>{ row.vpc }</side-page-trigger>,
  66. ]
  67. },
  68. },
  69. },
  70. getRegionTableColumn({ title: this.$t('network.vpc_network.next_hop_region') }),
  71. ],
  72. groupActions: [
  73. ...getEnabledSwitchActions(this, undefined, ['inter_vpc_network_route_sets_perform_enable', 'inter_vpc_network_route_sets_perform_disable'], {
  74. resourceName: this.$t('network.vpc_network.route'),
  75. fields: ['cidr', 'status', 'enabled'],
  76. metas: [
  77. () => {
  78. const isDisable = this.list.selectedItems.some(item => !item.enabled)
  79. return {
  80. validate: this.list.selectedItems.length && isDisable,
  81. }
  82. },
  83. () => {
  84. const isEnable = this.list.selectedItems.every(item => item.enabled)
  85. return {
  86. validate: this.list.selectedItems.length && isEnable,
  87. }
  88. },
  89. ],
  90. }),
  91. ],
  92. singleActions: [
  93. ...getEnabledSwitchActions(this, undefined, ['inter_vpc_network_route_sets_perform_enable', 'inter_vpc_network_route_sets_perform_disable'], {
  94. resourceName: this.$t('network.vpc_network.route'),
  95. fields: ['cidr', 'status', 'enabled'],
  96. }),
  97. ],
  98. }
  99. },
  100. created () {
  101. this.list.fetchData()
  102. },
  103. methods: {
  104. refresh () {
  105. this.list.fetchData()
  106. },
  107. handleOpenSidepage (row) {
  108. this.sidePageTriggerHandle(this, 'VpcSidePage', {
  109. id: row.vpc_id,
  110. resource: 'vpcs',
  111. getParams: this.getParam,
  112. }, {
  113. list: this.list,
  114. })
  115. },
  116. },
  117. }
  118. </script>