BackupRecoveryRdsList.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <vxe-grid
  3. :columns="tableColumn"
  4. :data="rdsList"
  5. :loading="loading"
  6. @radio-change="handleRdsChange"
  7. max-height="300"
  8. ref="tableRef">
  9. <template v-slot:empty>
  10. <page-list-empty :loading="loading" />
  11. </template>
  12. </vxe-grid>
  13. </template>
  14. <script>
  15. import { sizestr } from '@/utils/utils'
  16. import PageListEmpty from '@/components/PageList/Loader'
  17. export default {
  18. name: 'BackupRecoveryRdsList',
  19. inject: ['form'],
  20. components: {
  21. PageListEmpty,
  22. },
  23. props: ['backupItem'],
  24. data () {
  25. return {
  26. loading: false,
  27. rdsList: [],
  28. }
  29. },
  30. computed: {
  31. tableColumn () {
  32. const column = [
  33. { type: 'radio', width: 40 },
  34. { field: 'name', title: this.$t('db.text_35') },
  35. {
  36. title: this.$t('db.text_109'),
  37. slots: {
  38. default: ({ row }) => {
  39. return this.$t('db.text_151', [row.vcpu_count, sizestr(row.vmem_size_mb, 'M', 1024)])
  40. },
  41. },
  42. },
  43. {
  44. id: 'engine',
  45. title: this.$t('db.text_57'),
  46. slots: {
  47. default: ({ row }) => {
  48. return `${row.engine || ''} ${row.engine_version || ''}`
  49. },
  50. },
  51. },
  52. ]
  53. return column
  54. },
  55. },
  56. watch: {
  57. rdsList (newList) {
  58. if (newList && newList.length > 0) {
  59. this.$refs.tableRef.setRadioRow(newList[0])
  60. this.handleRdsChange({ row: newList[0] })
  61. }
  62. },
  63. },
  64. created () {
  65. this.fetchQueryRDSList()
  66. },
  67. methods: {
  68. handleRdsChange ({ row = {} }) {
  69. const { id } = row
  70. this.form.fc.setFieldsValue({
  71. dbinstance_id: id,
  72. })
  73. },
  74. async fetchQueryRDSList () {
  75. // eslint-disable-next-line camelcase
  76. const { provider, engine, cloudregion_id, engine_version } = this.backupItem
  77. const params = {
  78. scope: this.$store.getters.scope,
  79. limit: 0,
  80. status: 'running',
  81. provider,
  82. engine,
  83. cloudregion_id,
  84. engine_version,
  85. }
  86. this.loading = true
  87. try {
  88. const { data } = await new this.$Manager('dbinstances', 'v2').list({ params })
  89. this.rdsList = data.data.filter(item => item.id !== this.backupItem.dbinstance_id)
  90. } finally {
  91. this.loading = false
  92. }
  93. },
  94. },
  95. }
  96. </script>