BackupList.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <template>
  2. <page-list
  3. :columns="columns"
  4. :group-actions="groupActions"
  5. :list="list"
  6. :single-actions="singleActions" />
  7. </template>
  8. <script>
  9. import { getStatusTableColumn, getNameDescriptionTableColumn } from '@/utils/common/tableColumn'
  10. import WindowsMixin from '@/mixins/windows'
  11. import expectStatus from '@/constants/expectStatus'
  12. import { sizestr } from '@/utils/utils'
  13. import i18n from '@/locales'
  14. const BACKUP_TYPE = {
  15. automated: i18n.t('db.text_33'),
  16. manual: i18n.t('db.text_34'),
  17. }
  18. export default {
  19. name: 'RDSBAckupList',
  20. mixins: [WindowsMixin],
  21. props: {
  22. params: {
  23. type: Object,
  24. },
  25. data: {
  26. type: Object,
  27. },
  28. },
  29. data () {
  30. return {
  31. list: this.$list.createList(this, {
  32. resource: 'dbinstancebackups',
  33. getParams: this.params,
  34. steadyStatus: Object.values(expectStatus.rdsBackup).flat(),
  35. }),
  36. columns: [
  37. getNameDescriptionTableColumn({
  38. vm: this,
  39. hideField: true,
  40. addLock: true,
  41. slotCallback: row => {
  42. return (
  43. <side-page-trigger onTrigger={() => this.sidePageTriggerHandle(row.id, 'RDSBackupSidePage')}>{row.name}</side-page-trigger>
  44. )
  45. },
  46. }),
  47. {
  48. field: 'dbinstance',
  49. title: this.$t('db.text_35'),
  50. },
  51. {
  52. field: 'backup_mode',
  53. title: this.$t('db.text_36'),
  54. slots: {
  55. default: ({ row }) => {
  56. return BACKUP_TYPE[row.backup_mode]
  57. },
  58. },
  59. },
  60. {
  61. id: 'engine',
  62. title: this.$t('db.text_37'),
  63. slots: {
  64. default: ({ row }) => {
  65. return `${row.engine || ''} ${row.engine_version || ''}`
  66. },
  67. },
  68. },
  69. {
  70. id: 'backup_size_mb',
  71. title: this.$t('db.text_38'),
  72. slots: {
  73. default: ({ row }) => {
  74. return sizestr(row.backup_size_mb, 'M', 1024)
  75. },
  76. },
  77. },
  78. getStatusTableColumn({ statusModule: 'rdsBackup' }),
  79. // getBrandTableColumn(),
  80. {
  81. title: this.$t('db.text_39'),
  82. slots: {
  83. default: ({ row }) => {
  84. return `${this.$moment(row.start_time).format()} / ${this.$moment(row.end_time).format()}`
  85. },
  86. },
  87. },
  88. {
  89. id: 'region',
  90. title: this.$t('db.text_40'),
  91. slots: {
  92. default: ({ row }) => {
  93. return row.region
  94. },
  95. },
  96. },
  97. ],
  98. groupActions: [
  99. {
  100. label: this.$t('db.text_41'),
  101. action: () => {
  102. this.createDialog('RDSBackupCreate', {
  103. list: this.list,
  104. })
  105. },
  106. meta: () => {
  107. return {
  108. buttonType: 'primary',
  109. }
  110. },
  111. },
  112. {
  113. label: this.$t('db.text_42'),
  114. action: () => {
  115. this.createDialog('DeleteResDialog', {
  116. vm: this,
  117. data: this.list.selectedItems,
  118. columns: this.columns,
  119. title: this.$t('db.text_43'),
  120. list: this.list,
  121. name: this.$t('db.text_44'),
  122. })
  123. },
  124. meta: () => this.$getDeleteResult(this.list.selectedItems),
  125. },
  126. ],
  127. singleActions: [
  128. {
  129. label: this.$t('db.text_45'),
  130. action: (obj) => {
  131. this.createDialog('RDSBackupRecovery', {
  132. title: this.$t('db.text_45'),
  133. data: [obj],
  134. columns: this.columns,
  135. list: this.list,
  136. })
  137. },
  138. },
  139. {
  140. label: this.$t('db.text_42'),
  141. action: (obj) => {
  142. this.createDialog('DeleteResDialog', {
  143. vm: this,
  144. title: this.$t('db.text_42'),
  145. data: [obj],
  146. columns: this.columns,
  147. })
  148. },
  149. },
  150. ],
  151. }
  152. },
  153. created () {
  154. this.list.fetchData()
  155. },
  156. }
  157. </script>