columns.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import {
  2. getNameDescriptionTableColumn,
  3. getStatusTableColumn,
  4. getTagTableColumn,
  5. getProjectTableColumn,
  6. getRegionTableColumn,
  7. getBrandTableColumn,
  8. getAccountTableColumn,
  9. getTimeTableColumn,
  10. } from '@/utils/common/tableColumn'
  11. import i18n from '@/locales'
  12. import { weekOptions, timeOptions } from '../constants'
  13. export default {
  14. created () {
  15. this.columns = [
  16. getNameDescriptionTableColumn({
  17. onManager: this.onManager,
  18. hideField: true,
  19. slotCallback: row => {
  20. return (
  21. <side-page-trigger onTrigger={ () => this.handleOpenSidepage(row, 'detail') }>{ row.name }</side-page-trigger>
  22. )
  23. },
  24. }),
  25. getStatusTableColumn({ statusModule: 'snapshotpolicy', vm: this }),
  26. getTagTableColumn({ onManager: this.onManager, resource: 'snapshotpolicy', columns: () => this.columns }),
  27. getBrandTableColumn(),
  28. getAccountTableColumn(),
  29. {
  30. field: 'type',
  31. title: i18n.t('common.resource_type'),
  32. formatter: ({ row }) => {
  33. return row.type === 'server' ? i18n.t('dictionary.server') : i18n.t('dictionary.disk')
  34. },
  35. },
  36. {
  37. field: 'binding_disk_count',
  38. title: i18n.t('compute.bind_resource_count'),
  39. minWidth: 120,
  40. slots: {
  41. default: ({ row }) => {
  42. if (row.binding_disk_count === undefined) return [<data-loading />]
  43. if (row.type === 'server') {
  44. if (row.binding_resource_count <= 0) return row.binding_resource_count
  45. return [
  46. <side-page-trigger name='SnapshotPolicySidePage' id={row.id} tab='snapshot-policy-server' vm={this}>{row.binding_resource_count}</side-page-trigger>,
  47. ]
  48. }
  49. if (row.binding_disk_count <= 0) return row.binding_disk_count
  50. return [
  51. <side-page-trigger name='SnapshotPolicySidePage' id={row.id} tab='snapshot-policy-disk' vm={this}>{row.binding_disk_count}</side-page-trigger>,
  52. ]
  53. },
  54. },
  55. formatter: ({ row }) => {
  56. if (row.type === 'server') {
  57. return row.binding_resource_count
  58. }
  59. return row.binding_disk_count
  60. },
  61. },
  62. {
  63. field: 'repeat_weekdays',
  64. title: i18n.t('table.title.strategy'),
  65. minWidth: 180,
  66. showOverflow: 'ellipsis',
  67. slots: {
  68. default: ({ row }, h) => {
  69. if (row.repeat_weekdays === undefined) return [<data-loading />]
  70. let text = ''
  71. if (row.repeat_weekdays && row.repeat_weekdays.length) {
  72. text += i18n.t('compute.text_1098') + row.repeat_weekdays.map(item => weekOptions[item - 1]).join('、')
  73. }
  74. if (row.time_points && row.time_points.length) {
  75. text += '; ' + row.time_points.map(item => timeOptions[item]).join('、')
  76. }
  77. if (text) {
  78. text += i18n.t('compute.text_1099')
  79. }
  80. return [
  81. <list-body-cell-wrap copy field='repeat_weekdays' hideField row={row} message={text}>
  82. {{ text }}
  83. </list-body-cell-wrap>,
  84. ]
  85. },
  86. },
  87. formatter: ({ row }) => {
  88. if (row.repeat_weekdays === undefined) return [<data-loading />]
  89. let text = ''
  90. if (row.repeat_weekdays && row.repeat_weekdays.length) {
  91. text += i18n.t('compute.text_1098') + row.repeat_weekdays.map(item => weekOptions[item - 1]).join('、')
  92. }
  93. if (row.time_points && row.time_points.length) {
  94. text += '; ' + row.time_points.map(item => timeOptions[item]).join('、')
  95. }
  96. if (text) {
  97. text += i18n.t('compute.text_1099')
  98. }
  99. return text || '-'
  100. },
  101. },
  102. {
  103. field: 'retention_days',
  104. title: this.$t('compute.text_433'),
  105. formatter: ({ row }) => {
  106. if (row.retention_count) {
  107. return `${this.$t('compute.retention_count_prefix')} ${row.retention_count} ${this.$t('compute.retention_count_suffix')}`
  108. }
  109. if (row.retention_days !== -1) {
  110. return this.$t('compute.text_438', [row.retention_days])
  111. }
  112. return this.$t('compute.text_1094')
  113. },
  114. },
  115. {
  116. field: 'snapshot_count',
  117. title: this.$t('compute.snapshot_count'),
  118. sortable: true,
  119. sortBy: 'order_by_snapshot_count',
  120. formatter: ({ row }) => {
  121. return row.snapshot_count || '-'
  122. },
  123. },
  124. getRegionTableColumn(),
  125. getTimeTableColumn(),
  126. getProjectTableColumn(),
  127. ]
  128. },
  129. }