Detail.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <detail
  3. :on-manager="onManager"
  4. :data="{ ...data, name: data.hostname }"
  5. :base-info="baseInfo"
  6. :extra-info="extraInfo"
  7. :hidden-keys="['status', 'brand', 'name', 'description', 'created_at', 'updated_at']" />
  8. </template>
  9. <script>
  10. // import {
  11. // // getBrandTableColumn,
  12. // } from '@/utils/common/tableColumn'
  13. import WindowsMixin from '@/mixins/windows'
  14. export default {
  15. name: 'CdnDetail',
  16. mixins: [WindowsMixin],
  17. props: {
  18. data: {
  19. type: Object,
  20. required: true,
  21. },
  22. onManager: {
  23. type: Function,
  24. required: true,
  25. },
  26. },
  27. data () {
  28. return {
  29. baseInfo: [
  30. {
  31. field: 'min_tls_version',
  32. title: this.$t('network.cdn.min_tls_version'),
  33. formatter: ({ row }) => {
  34. return row.ssl?.settings?.min_tls_version ? `TLS ${row.ssl?.settings?.min_tls_version}` : '-'
  35. },
  36. },
  37. {
  38. field: 'certificate_type',
  39. title: this.$t('network.cdn.certificate_type'),
  40. formatter: ({ row }) => {
  41. return row.ssl?.type === 'dv' ? this.$t('network.cdn.certificate_type_cloudflare') : this.$t('network.cdn.certificate_type_custom')
  42. },
  43. },
  44. {
  45. field: 'custom_certificate',
  46. title: this.$t('network.cdn.certificate_type_custom'),
  47. slots: {
  48. default: ({ row }, h) => {
  49. return row.ssl?.custom_certificate ? <a-textarea rows={5} value={row.ssl?.custom_certificate || '-'} /> : '-'
  50. },
  51. },
  52. },
  53. {
  54. field: 'bundle_method',
  55. title: this.$t('network.cdn.bundle_method'),
  56. formatter: ({ row }) => {
  57. return row.ssl?.bundle_method ? this.$t(`network.cdn.bundle_method.${row.ssl?.bundle_method}`) : '-'
  58. },
  59. },
  60. {
  61. field: 'private_key',
  62. title: this.$t('network.cdn.custom_key'),
  63. slots: {
  64. default: ({ row }, h) => {
  65. return row.ssl?.private_key ? <a-textarea rows={5} value={row.ssl?.private_key || '-'} /> : '-'
  66. },
  67. },
  68. },
  69. {
  70. field: 'certificate_authority',
  71. title: this.$t('network.cdn.certificate_authority'),
  72. formatter: ({ row }) => {
  73. return row.ssl?.certificate_authority || '-'
  74. },
  75. },
  76. {
  77. field: 'method',
  78. title: this.$t('network.cdn.ceritificate_verify_method'),
  79. formatter: ({ row }) => {
  80. return row.ssl?.method ? this.$t(`network.cdn.certificate_verify_method.${row.ssl?.method}`) : '-'
  81. },
  82. },
  83. {
  84. field: 'wildcard',
  85. title: this.$t('network.cdn.wildcard_enabled'),
  86. formatter: ({ row }) => {
  87. return row.ssl?.wildcard ? this.$t('network.text_189') : this.$t('network.text_190')
  88. },
  89. },
  90. {
  91. field: 'custom_origin_server',
  92. title: this.$t('network.cdn.origin_server'),
  93. formatter: ({ row }) => {
  94. return row.custom_origin_server || this.$t('network.cdn.origin_server.default')
  95. },
  96. },
  97. ],
  98. extraInfo: [{
  99. title: this.$t('network.text_308'),
  100. items: [
  101. {
  102. slots: {
  103. default: ({ row }, h) => {
  104. const columns = [
  105. {
  106. field: 'type',
  107. title: this.$t('network.text_249'),
  108. },
  109. {
  110. field: 'name',
  111. title: this.$t('network.text_21'),
  112. },
  113. {
  114. field: 'value',
  115. title: this.$t('network.value'),
  116. },
  117. ]
  118. const data = []
  119. if (row.ssl?.validation_records) {
  120. row.ssl.validation_records.forEach(item => {
  121. data.push({
  122. type: this.$t('network.cdn.certificate_verification_txt'),
  123. name: item.txt_name,
  124. value: item.txt_value,
  125. })
  126. })
  127. }
  128. if (row.ownership_verification) {
  129. data.push({
  130. type: this.$t('network.cdn.hostname_verification_txt'),
  131. name: row.ownership_verification.name,
  132. value: row.ownership_verification.value,
  133. })
  134. }
  135. return <vxe-grid data={data} resizable columns={columns} />
  136. },
  137. },
  138. },
  139. ],
  140. }],
  141. }
  142. },
  143. }
  144. </script>