BackupList.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <page-list
  3. :columns="columns"
  4. :list="list" />
  5. </template>
  6. <script>
  7. import { sizestr } from '@/utils/utils'
  8. import { getStatusTableColumn, getNameDescriptionTableColumn } from '@/utils/common/tableColumn'
  9. import WindowsMixin from '@/mixins/windows'
  10. import ListMixin from '@/mixins/list'
  11. import expectStatus from '@/constants/expectStatus'
  12. // import { getNameFilter, getStatusFilter } from '@/utils/common/tableFilter'
  13. export default {
  14. name: 'MongodbBackupList',
  15. mixins: [WindowsMixin, ListMixin],
  16. props: {
  17. params: {
  18. type: Object,
  19. },
  20. data: {
  21. type: Object,
  22. },
  23. },
  24. data () {
  25. return {
  26. list: this.$list.createList(this, {
  27. id: 'MongodbBackupListForMongoDBSidePage',
  28. idKey: 'name',
  29. resource: this.fetchData,
  30. getParams: this.params,
  31. steadyStatus: Object.values(expectStatus.mongodbBackup).flat(),
  32. // filterOptions: {
  33. // name: getNameFilter(),
  34. // status: getStatusFilter('mongodbBackup'),
  35. // backup_type: {
  36. // label: this.$t('db.text_36'),
  37. // dropdown: true,
  38. // filter: true,
  39. // items: [
  40. // { label: this.$t('db.text_316'), key: 'manual' },
  41. // { label: this.$t('db.text_317'), key: 'auto' },
  42. // ],
  43. // formatter: val => {
  44. // return `backup_type.equals(${val})`
  45. // },
  46. // },
  47. // },
  48. }),
  49. columns: [
  50. getNameDescriptionTableColumn({
  51. onManager: this.onManager,
  52. }),
  53. {
  54. field: 'backup_type',
  55. title: this.$t('db.text_36'),
  56. width: 100,
  57. slots: {
  58. default: ({ row }) => {
  59. return row.backup_type === 'manual' ? this.$t('db.text_316') : this.$t('db.text_317')
  60. },
  61. },
  62. },
  63. {
  64. field: 'backup_size_kb',
  65. title: this.$t('db.text_38'),
  66. width: 100,
  67. slots: {
  68. default: ({ row }) => {
  69. return sizestr(row.backup_size_kb, 'K', 1024)
  70. },
  71. },
  72. },
  73. getStatusTableColumn({ statusModule: 'mongodbBackup' }),
  74. {
  75. field: 'start_time',
  76. title: this.$t('db.text_39'),
  77. minWidth: 150,
  78. slots: {
  79. default: ({ row }) => {
  80. if (row.start_time && row.end_time) {
  81. return [
  82. <div>{this.$moment(row.start_time).format()}</div>,
  83. <div>{this.$moment(row.end_time).format()}</div>,
  84. ]
  85. }
  86. return '-'
  87. },
  88. },
  89. },
  90. ],
  91. }
  92. },
  93. created () {
  94. this.list.fetchData()
  95. },
  96. methods: {
  97. async fetchData (params) {
  98. try {
  99. const managerArgs = {
  100. id: this.data.id,
  101. spec: 'backups',
  102. params: {
  103. details: true,
  104. ...params,
  105. },
  106. }
  107. const res = await new this.$Manager('mongodbs', 'v2').getSpecific(managerArgs)
  108. return res
  109. } catch (error) {
  110. throw error
  111. }
  112. },
  113. },
  114. }
  115. </script>