List.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <page-list
  3. :list="list"
  4. :columns="columns"
  5. :single-actions="singleActions"
  6. :group-actions="groupActions"
  7. :export-data-options="exportDataOptions" />
  8. </template>
  9. <script>
  10. import ColumnsMixin from '../mixins/columns'
  11. import SingleActionsMixin from '../mixins/singleActions'
  12. import ListMixin from '@/mixins/list'
  13. import WindowsMixin from '@/mixins/windows'
  14. import { getEnabledSwitchActions } from '@/utils/common/tableActions'
  15. export default {
  16. name: 'DNSList',
  17. mixins: [WindowsMixin, ListMixin, ColumnsMixin, SingleActionsMixin],
  18. props: {
  19. id: String,
  20. },
  21. data () {
  22. return {
  23. list: this.$list.createList(this, {
  24. id: this.id,
  25. resource: 'dnsrecords',
  26. filterOptions: {
  27. name: {
  28. label: this.$t('network.text_21'),
  29. filter: true,
  30. formatter: val => {
  31. return `name.contains("${val}")`
  32. },
  33. },
  34. },
  35. }),
  36. exportDataOptions: {
  37. items: [
  38. { label: 'ID', key: 'id' },
  39. { label: this.$t('network.text_21'), key: 'name' },
  40. { label: this.$t('network.text_152'), key: 'records' },
  41. { label: 'TTL', key: 'ttl' },
  42. { label: this.$t('network.text_153'), key: 'enabled' },
  43. ],
  44. },
  45. groupActions: [
  46. {
  47. label: this.$t('network.text_26'),
  48. action: () => {
  49. this.createDialog('DnsCreateDialog', {
  50. title: this.$t('network.text_154'),
  51. data: this.list.selectedItems,
  52. onManager: this.onManager,
  53. refresh: this.refresh,
  54. type: 'create',
  55. })
  56. },
  57. meta: () => {
  58. return {
  59. buttonType: 'primary',
  60. }
  61. },
  62. },
  63. {
  64. label: this.$t('common.batchAction'),
  65. actions: () => {
  66. return [
  67. ...getEnabledSwitchActions(this),
  68. {
  69. label: this.$t('network.text_131'),
  70. permission: 'vpcs_delete',
  71. action: () => {
  72. this.createDialog('DeleteResDialog', {
  73. vm: this,
  74. title: this.$t('network.text_131'),
  75. name: this.$t('dictionary.dnsrecord'),
  76. data: this.list.selectedItems,
  77. columns: this.columns,
  78. onManager: this.onManager,
  79. })
  80. },
  81. meta: () => {
  82. return {
  83. validate: this.list.allowDelete(),
  84. }
  85. },
  86. },
  87. ]
  88. },
  89. meta: () => {
  90. return {
  91. validate: this.list.selectedItems.length > 0,
  92. }
  93. },
  94. },
  95. ],
  96. }
  97. },
  98. created () {
  99. this.initSidePageTab('dns-detail')
  100. this.list.fetchData()
  101. },
  102. methods: {
  103. handleOpenSidepage (row) {
  104. this.sidePageTriggerHandle(this, 'DNSSidePage', {
  105. id: row.id,
  106. resource: 'dnsrecords',
  107. }, {
  108. list: this.list,
  109. })
  110. },
  111. },
  112. }
  113. </script>