diskProps.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import {
  2. getNameDescriptionTableColumn,
  3. getStatusTableColumn,
  4. getBrandTableColumn,
  5. } from '@/utils/common/tableColumn'
  6. import {
  7. getNameFilter,
  8. } from '@/utils/common/tableFilter'
  9. import { sizestr } from '@/utils/utils'
  10. export default {
  11. data () {
  12. return {
  13. diskProps: {
  14. list: this.$list.createList(this, {
  15. resource: 'disks',
  16. getParams: () => {
  17. const params = {
  18. filter: 'status.in(\'ready\')',
  19. binding_snapshotpolicy: false,
  20. }
  21. if (this.params.data[0]?.brand === 'OneCloud') {
  22. params.unused = false
  23. } else {
  24. params.manager_id = this.params.data[0]?.manager_id
  25. }
  26. if (this.params.data[0]?.cloudregion_id) {
  27. params.cloudregion_id = this.params.data[0].cloudregion_id
  28. }
  29. return params
  30. },
  31. filterOptions: {
  32. name: getNameFilter(),
  33. },
  34. }),
  35. columns: [
  36. getNameDescriptionTableColumn({
  37. onManager: this.onManager,
  38. hideField: true,
  39. formRules: [
  40. { required: true, message: this.$t('compute.text_210') },
  41. { validator: this.$validate('resourceCreateName') },
  42. ],
  43. slotCallback: row => {
  44. return (
  45. <side-page-trigger onTrigger={ () => this.handleOpenSidepage(row) }>{ row.name }</side-page-trigger>
  46. )
  47. },
  48. }),
  49. getStatusTableColumn({ statusModule: 'disk' }),
  50. {
  51. field: 'disk_size',
  52. title: this.$t('table.title.disk_size'),
  53. minWidth: 50,
  54. formatter: ({ cellValue }) => {
  55. return sizestr(cellValue, 'M', 1024)
  56. },
  57. },
  58. {
  59. field: 'disk_type',
  60. title: this.$t('table.title.disk_type'),
  61. width: 70,
  62. formatter: ({ cellValue }) => {
  63. return cellValue === 'sys' ? this.$t('compute.text_49') : this.$t('compute.text_50')
  64. },
  65. },
  66. {
  67. field: 'guest',
  68. title: this.$t('res.server'),
  69. minWidth: 100,
  70. showOverflow: 'ellipsis',
  71. slots: {
  72. default: ({ row }, h) => {
  73. if (!row.guest || row.guests.length <= 0) return '-'
  74. const guests = row.guests.map((guest, index) => {
  75. return <side-page-trigger permission="server_get" name="VmInstanceSidePage" id={guest.id} vm={this} tab="vm-instance-detail">
  76. {guest.name}
  77. <status status={ guest.status } statusModule='server'/>
  78. </side-page-trigger>
  79. })
  80. return [
  81. <div>
  82. { guests }
  83. </div>,
  84. ]
  85. },
  86. },
  87. },
  88. getBrandTableColumn(),
  89. {
  90. field: 'guest_snapshotpolicy_count',
  91. title: this.$t('compute.guest_snapshotpolicy_count'),
  92. formatter: ({ row }) => {
  93. return row.guest_snapshotpolicy_count || 0
  94. },
  95. },
  96. ],
  97. },
  98. }
  99. },
  100. }