List.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <page-list
  3. :list="list"
  4. :columns="columns"
  5. :single-actions="singleActions"
  6. :group-actions="groupActions"
  7. :export-data-options="exportDataOptions" />
  8. </template>
  9. <script>
  10. import * as R from 'ramda'
  11. import ListMixin from '@/mixins/list'
  12. import expectStatus from '@/constants/expectStatus'
  13. import {
  14. getStatusFilter,
  15. getDescriptionFilter,
  16. getCreatedAtFilter,
  17. getAccountFilter,
  18. getProjectFilter,
  19. getCloudProviderFilter,
  20. getBrandFilter,
  21. getDistinctFieldFilter,
  22. } from '@/utils/common/tableFilter'
  23. import WindowsMixin from '@/mixins/windows'
  24. import SingleActionsMixin from '../mixins/singleActions'
  25. import ColumnsMixin from '../mixins/columns'
  26. export default {
  27. name: 'SslCertificateList',
  28. mixins: [WindowsMixin, ListMixin, ColumnsMixin, SingleActionsMixin],
  29. props: {
  30. id: String,
  31. getParams: {
  32. type: [Function, Object],
  33. },
  34. },
  35. data () {
  36. const filterOptions = {
  37. id: {
  38. label: this.$t('table.title.id'),
  39. },
  40. name: {
  41. label: this.$t('network.text_21'),
  42. filter: true,
  43. formatter: val => {
  44. return `name.contains("${val}")`
  45. },
  46. },
  47. description: getDescriptionFilter(),
  48. status: getStatusFilter('sslCertificate'),
  49. issuer: getDistinctFieldFilter({
  50. label: this.$t('network.ssl_certificate.issuer'),
  51. field: 'issuer',
  52. filter: true,
  53. formatter: val => {
  54. const list = val.map(item => `"${item}"`).join(',')
  55. return `issuer.in(${list})`
  56. },
  57. }),
  58. sans: {
  59. label: this.$t('network.ssl_certificate.sans'),
  60. filter: true,
  61. formatter: val => {
  62. return `sans.contains("${val}")`
  63. },
  64. },
  65. brand: getBrandFilter(),
  66. account: getAccountFilter(),
  67. project: getProjectFilter(),
  68. manager: getCloudProviderFilter(),
  69. created_at: getCreatedAtFilter(),
  70. }
  71. return {
  72. list: this.$list.createList(this, {
  73. ctx: this,
  74. id: this.id,
  75. resource: 'sslcertificates',
  76. getParams: this.getParam,
  77. filterOptions,
  78. responseData: this.responseData,
  79. steadyStatus: {
  80. status: Object.values(expectStatus.sslCertificate).flat(),
  81. },
  82. }),
  83. groupActions: [
  84. {
  85. label: this.$t('network.text_26'),
  86. permission: 'sslcertificates_create',
  87. action: () => {
  88. this.createDialog('SslCertificateCreateDialog', {
  89. onManager: this.onManager,
  90. })
  91. },
  92. meta: () => {
  93. return {
  94. buttonType: 'primary',
  95. }
  96. },
  97. },
  98. ],
  99. }
  100. },
  101. computed: {
  102. exportDataOptions () {
  103. return {
  104. downloadType: 'local',
  105. title: this.$t('network.ssl_certificate'),
  106. items: this.columns,
  107. }
  108. },
  109. },
  110. created () {
  111. this.list.fetchData()
  112. },
  113. methods: {
  114. getParam () {
  115. const ret = {
  116. ...(R.is(Function, this.getParams) ? this.getParams() : this.getParams),
  117. }
  118. if (this.cloudEnv) ret.cloud_env = this.cloudEnv
  119. return ret
  120. },
  121. handleOpenSidepage (row, tab) {
  122. this.sidePageTriggerHandle(this, 'SslCertificateSidePage', {
  123. id: row.id,
  124. resource: 'sslcertificates',
  125. getParams: this.getParam,
  126. }, {
  127. list: this.list,
  128. tab,
  129. })
  130. },
  131. },
  132. }
  133. </script>