columns.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import {
  2. getNameDescriptionTableColumn,
  3. getBrandTableColumn,
  4. getPublicScopeTableColumn,
  5. getProjectTableColumn,
  6. getAccountTableColumn,
  7. getTagTableColumn,
  8. getTimeTableColumn,
  9. } from '@/utils/common/tableColumn'
  10. import i18n from '@/locales'
  11. import {
  12. getZoneTypeTableColumns,
  13. getVpcCountTableColumns,
  14. getDnsRecordsetCountTableColumns,
  15. } from '../utils/columns'
  16. export default {
  17. created () {
  18. this.columns = [
  19. getNameDescriptionTableColumn({
  20. onManager: this.onManager,
  21. hideField: true,
  22. title: i18n.t('network.text_156'),
  23. edit: false,
  24. formRules: function (row) {
  25. return [
  26. { required: true, message: i18n.t('network.text_173') },
  27. ]
  28. },
  29. slotCallback: row => {
  30. return (
  31. <side-page-trigger onTrigger={ () => this.handleOpenSidepage(row) }>{ row.name }</side-page-trigger>
  32. )
  33. },
  34. }),
  35. getTagTableColumn({ onManager: this.onManager, resource: 'dns_zones', columns: () => this.columns }),
  36. getBrandTableColumn(),
  37. getZoneTypeTableColumns(),
  38. getDnsRecordsetCountTableColumns(),
  39. getVpcCountTableColumns(),
  40. {
  41. field: 'status',
  42. title: i18n.t('common.status'),
  43. sortable: true,
  44. showOverflow: 'ellipsis',
  45. minWidth: 80,
  46. slots: {
  47. default: ({ row }, h) => {
  48. return [
  49. <div class='text-truncate'>
  50. <div class="d-flex align-items-center">
  51. <status status={row.status} statusModule={'dnszone'}>
  52. {
  53. row.status === 'pending' ? <a-popover slot="icon">
  54. <template slot="content">
  55. {row.registrar ? <div class="d-flex"><span style="flex: 0 0 150px">{this.$t('network.dnszone.registrar')}:</span><span>{row.registrar}<copy class="ml-1" message={row.registrar} /></span></div> : null}
  56. {row.name_servers && row.name_servers.length > 0
  57. ? <div class="d-flex">
  58. <span style="flex: 0 0 150px">{this.$t('network.dnszone.add_name_servers')}:</span>
  59. <span style="flex: 1">
  60. {row.name_servers.map((server, index) => (
  61. <div key={index}>
  62. {server}<copy class="ml-1" message={server} />
  63. </div>
  64. ))}
  65. </span>
  66. </div>
  67. : null}
  68. {row.original_name_servers && row.original_name_servers.length > 0
  69. ? <div class="d-flex">
  70. <span style="flex: 0 0 150px">{this.$t('network.dnszone.del_name_servers')}:</span>
  71. <span style="flex: 1">
  72. {row.original_name_servers.map((server, index) => (
  73. <div key={index}>
  74. {server}<copy class="ml-1" message={server} />
  75. </div>
  76. ))}
  77. </span>
  78. </div>
  79. : null}
  80. </template>
  81. <icon type="dashboard-alert-sum" class="ml-1" style={{ color: 'red' }} />
  82. </a-popover> : null
  83. }
  84. </status>
  85. </div>
  86. </div>,
  87. ]
  88. },
  89. },
  90. formatter: ({ row }) => {
  91. return this.$te(`status.dnszone.${row.status}`) ? this.$t(`status.dnszone.${row.status}`) : row.status
  92. },
  93. },
  94. getPublicScopeTableColumn({ vm: this, resource: 'dns_zones' }),
  95. getAccountTableColumn(),
  96. getProjectTableColumn(),
  97. getTimeTableColumn(),
  98. ]
  99. },
  100. }