resourceProps.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import {
  2. getNameDescriptionTableColumn,
  3. getIpsTableColumn,
  4. getProjectTableColumn,
  5. getStatusTableColumn,
  6. getRegionTableColumn,
  7. getBrandTableColumn,
  8. getEnabledTableColumn,
  9. getProjectDomainTableColumn,
  10. } from '@/utils/common/tableColumn'
  11. import {
  12. getNameFilter,
  13. getIpFilter,
  14. getBrandFilter,
  15. } from '@/utils/common/tableFilter'
  16. export default {
  17. computed: {
  18. resourceProps () {
  19. const currentItem = this.params?.data?.[0] || {}
  20. const { tenant, resource_type = 'server' } = currentItem
  21. const resourceProps = {
  22. server: {
  23. list: this.$list.createList(this, {
  24. resource: 'servers',
  25. getParams: {
  26. filter: 'hypervisor.notin(baremetal,container)',
  27. tenant,
  28. },
  29. filterOptions: {
  30. name: getNameFilter(),
  31. ips: getIpFilter(),
  32. brand: getBrandFilter('compute_engine_brands'),
  33. },
  34. }),
  35. columns: [
  36. getNameDescriptionTableColumn({
  37. hideField: true,
  38. addLock: true,
  39. addBackup: true,
  40. edit: false,
  41. editDesc: false,
  42. minWidth: 120,
  43. slotCallback: row => {
  44. return [
  45. <list-body-cell-wrap field='name' row={row} />,
  46. ]
  47. },
  48. }),
  49. getIpsTableColumn({ field: 'ip', title: 'IP' }),
  50. getBrandTableColumn({ field: 'provider' }),
  51. getStatusTableColumn({ statusModule: 'server' }),
  52. getProjectTableColumn(),
  53. getRegionTableColumn(),
  54. ],
  55. },
  56. cloudaccount: {
  57. list: this.$list.createList(this, {
  58. resource: 'cloudaccounts',
  59. getParams: {
  60. tenant,
  61. },
  62. filterOptions: {
  63. name: getNameFilter(),
  64. brand: getBrandFilter('compute_engine_brands'),
  65. },
  66. }),
  67. columns: [
  68. getNameDescriptionTableColumn({
  69. hideField: true,
  70. addLock: true,
  71. addBackup: true,
  72. edit: false,
  73. editDesc: false,
  74. minWidth: 120,
  75. slotCallback: row => {
  76. return [
  77. <list-body-cell-wrap field='name' row={row} />,
  78. ]
  79. },
  80. }),
  81. getStatusTableColumn({ statusModule: 'cloudaccount' }),
  82. getEnabledTableColumn(),
  83. getBrandTableColumn(),
  84. {
  85. field: 'last_auto_sync',
  86. title: this.$t('cloudenv.text_103'),
  87. minWidth: 70,
  88. showOverflow: 'ellipsis',
  89. slots: {
  90. default: ({ row }) => {
  91. if (row.sync_status !== 'idle') { // 表示正在同步中
  92. return [
  93. <status status={ row.sync_status } statusModule='cloudaccountSyncStatus' />,
  94. ]
  95. } else {
  96. const time = this.$moment(row.last_sync)
  97. if (time) {
  98. return time.fromNow()
  99. } else {
  100. return '-'
  101. }
  102. }
  103. },
  104. },
  105. },
  106. getProjectDomainTableColumn(),
  107. ],
  108. },
  109. }
  110. return resourceProps[resource_type]
  111. },
  112. },
  113. }