List.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <page-list
  3. :list="list"
  4. :columns="columns"
  5. :export-data-options="exportDataOptions" />
  6. </template>
  7. <script>
  8. import * as R from 'ramda'
  9. import ColumnsMixin from '../mixins/columns'
  10. import ListMixin from '@/mixins/list'
  11. import WindowsMixin from '@/mixins/windows'
  12. import { getNameFilter, getBrandFilter, getCloudProviderFilter, getTenantFilter, getDomainFilter, getAccountFilter, getStatusFilter, getCreatedAtFilter } from '@/utils/common/tableFilter'
  13. import expectStatus from '@/constants/expectStatus'
  14. import GlobalSearchMixin from '@/mixins/globalSearch'
  15. export default {
  16. name: 'Ipv6GatewayList',
  17. mixins: [WindowsMixin, ListMixin, GlobalSearchMixin, ColumnsMixin],
  18. props: {
  19. id: String,
  20. getParams: {
  21. type: [Function, Object],
  22. },
  23. },
  24. data () {
  25. const filterOptions = {
  26. external_id: {
  27. label: this.$t('table.title.external_id'),
  28. },
  29. id: {
  30. label: this.$t('table.title.id'),
  31. },
  32. name: getNameFilter(),
  33. status: getStatusFilter('ipv6_gateway'),
  34. instance_type: {
  35. label: this.$t('network.text_268'),
  36. formatter: (val) => {
  37. return `instance_type.contains("${val}")`
  38. },
  39. },
  40. vpc: {
  41. label: 'VPC',
  42. formatter: (val) => {
  43. return `vpc.contains("${val}")`
  44. },
  45. hidden: this.$store.getters.isProjectMode,
  46. },
  47. brand: getBrandFilter(),
  48. projects: getTenantFilter(),
  49. project_domains: getDomainFilter(),
  50. cloudaccount: getAccountFilter(),
  51. provider: getCloudProviderFilter(),
  52. region: {
  53. label: this.$t('dashboard.text_101'),
  54. },
  55. created_at: getCreatedAtFilter(),
  56. }
  57. return {
  58. list: this.$list.createList(this, {
  59. id: this.id,
  60. resource: 'ipv6_gateways',
  61. getParams: this.getParam,
  62. filterOptions,
  63. steadyStatus: {
  64. status: Object.values(expectStatus.ipv6_gateway).flat(),
  65. },
  66. }),
  67. exportDataOptions: {
  68. items: [
  69. { label: 'ID', key: 'id' },
  70. { label: this.$t('table.title.external_id'), key: 'external_id' },
  71. { label: this.$t('network.text_21'), key: 'name' },
  72. { label: 'VPC', key: 'vpc', hidden: this.$store.getters.isProjectMode },
  73. { label: this.$t('network.text_27'), key: 'status' },
  74. { label: this.$t('network.text_268'), key: 'instance_type' },
  75. { label: this.$t('dictionary.domain'), key: 'project_domain', hidden: this.$store.getters.isProjectMode },
  76. { label: this.$t('network.text_43'), key: 'tenant' },
  77. { label: this.$t('network.text_199'), key: 'region' },
  78. { label: this.$t('network.text_196'), key: 'account', hidden: this.$store.getters.isProjectMode },
  79. { label: this.$t('table.title.create_time'), key: 'created_at' },
  80. ],
  81. },
  82. }
  83. },
  84. created () {
  85. this.list.fetchData()
  86. },
  87. methods: {
  88. getParam () {
  89. const ret = {
  90. ...(R.is(Function, this.getParams) ? this.getParams() : this.getParams),
  91. }
  92. return ret
  93. },
  94. handleOpenSidepage (row, tab) {
  95. this.sidePageTriggerHandle(this, 'Ipv6GatewaySidePage', {
  96. id: row.id,
  97. resource: 'ipv6_gateways',
  98. getParams: this.getParam,
  99. steadyStatus: {
  100. status: Object.values(expectStatus.ipv6_gateway).flat(),
  101. },
  102. }, {
  103. row: row,
  104. list: this.list,
  105. tab,
  106. })
  107. },
  108. },
  109. }
  110. </script>