Detail.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <template>
  2. <detail
  3. :on-manager="onManager"
  4. :data="data"
  5. :base-info="baseInfo"
  6. :extra-info="extraInfo"
  7. resource="instance_snapshots"
  8. status-module="snapshot" />
  9. </template>
  10. <script>
  11. import {
  12. getUserTagColumn,
  13. getExtTagColumn,
  14. } from '@/utils/common/detailColumn'
  15. import { sizestr } from '@/utils/utils'
  16. import WindowsMixin from '@/mixins/windows'
  17. import { getOsArch } from '@/utils/common/tableColumn'
  18. import { CREATE_METHODS } from '../constants'
  19. export default {
  20. name: 'SnapshotDetail',
  21. mixins: [WindowsMixin],
  22. props: {
  23. data: {
  24. type: Object,
  25. required: true,
  26. },
  27. onManager: {
  28. type: Function,
  29. required: true,
  30. },
  31. columns: Array,
  32. },
  33. data () {
  34. return {
  35. baseInfo: [
  36. getUserTagColumn({ onManager: this.onManager, resource: 'instance_snapshot', columns: () => this.columns, tipName: this.$t('compute.text_462') }),
  37. getExtTagColumn({ onManager: this.onManager, resource: 'instance_snapshot', columns: () => this.columns, tipName: this.$t('compute.text_462') }),
  38. {
  39. field: 'size_mb',
  40. title: this.$t('compute.text_422'),
  41. formatter: ({ cellValue, row }) => {
  42. return sizestr(cellValue, 'M', 1024)
  43. },
  44. },
  45. {
  46. field: 'virtual_size_mb',
  47. title: this.$t('compute.disk_size'),
  48. formatter: ({ cellValue, row }) => {
  49. return sizestr(cellValue, 'M', 1024)
  50. },
  51. },
  52. {
  53. field: 'created_by',
  54. title: this.$t('compute.text_1070'),
  55. formatter: ({ cellValue }) => {
  56. return CREATE_METHODS[cellValue]
  57. },
  58. },
  59. {
  60. field: 'resource',
  61. title: this.$t('compute.text_1071'),
  62. formatter: ({ cellValue }) => {
  63. return this.$t('compute.text_102')
  64. },
  65. },
  66. getOsArch(),
  67. {
  68. field: 'rules',
  69. title: this.$t('table.title.sub_snapshot'),
  70. slots: {
  71. default: ({ row }) => {
  72. const len = (row.snapshots && row.snapshots.length) || 0
  73. return <a onClick={ () => this.$emit('tab-change', 'sub-snapshot-detail') }>{len}{this.$t('common.text00003')}</a>
  74. },
  75. },
  76. },
  77. {
  78. field: 'guest',
  79. title: this.$t('dictionary.server'),
  80. slots: {
  81. default: ({ row }, h) => {
  82. if (row.guest) {
  83. return [
  84. <div>
  85. <side-page-trigger permission="server_get" name="VmInstanceSidePage" id={row.guest_id} vm={this}>{row.guest}</side-page-trigger>
  86. {row.guest_status ? <status status={ row.guest_status } statusModule='server'/> : ''}
  87. </div>,
  88. ]
  89. }
  90. return [<div>-</div>]
  91. },
  92. },
  93. },
  94. ],
  95. extraInfo: [
  96. {
  97. title: this.$t('compute.title.encryption'),
  98. items: [
  99. {
  100. field: 'encrypt_key_id',
  101. title: this.$t('compute.title.encryption_key'),
  102. formatter: ({ callValue, row }) => {
  103. if (row.encrypt_key_id) {
  104. if (row.encrypt_key && row.encrypt_alg) {
  105. return row.encrypt_key + ' (' + row.encrypt_key_id + ')'
  106. } else {
  107. return row.encrypt_key_id
  108. }
  109. } else {
  110. return this.$t('compute.no_encryption')
  111. }
  112. },
  113. },
  114. {
  115. field: 'encrypt_alg',
  116. title: this.$t('compute.title.encrypt_alg'),
  117. formatter: ({ callValue, row }) => {
  118. if (row.encrypt_alg) {
  119. return row.encrypt_alg.toUpperCase()
  120. } else {
  121. return '-'
  122. }
  123. },
  124. },
  125. {
  126. field: 'encrypt_key_user',
  127. title: this.$t('compute.title.encrypt_key_user'),
  128. formatter: ({ callValue, row }) => {
  129. if (row.encrypt_key_user) {
  130. return row.encrypt_key_user + ' / ' + row.encrypt_key_user_domain
  131. } else {
  132. return '-'
  133. }
  134. },
  135. },
  136. ],
  137. },
  138. ],
  139. }
  140. },
  141. }
  142. </script>