List.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <div>
  3. <page-list
  4. v-if="data.mode === 'customize'"
  5. :list="list"
  6. :group-actions="groupActions"
  7. :single-actions="singleActions"
  8. :columns="columns" />
  9. <a-alert v-else :message="$t('k8s.text_279')" banner />
  10. </div>
  11. </template>
  12. <script>
  13. import * as R from 'ramda'
  14. import ColumnsMixin from '../mixins/columns'
  15. import SingleActionsMixin from '../mixins/singleActions'
  16. import WindowsMixin from '@/mixins/windows'
  17. import expectStatus from '@/constants/expectStatus'
  18. import ListMixin from '@/mixins/list'
  19. export default {
  20. name: 'KubeMachinesList',
  21. mixins: [WindowsMixin, ListMixin, ColumnsMixin, SingleActionsMixin],
  22. props: {
  23. id: String,
  24. // resId is cluster Id
  25. resId: String,
  26. data: {
  27. type: Object,
  28. required: true,
  29. },
  30. getParams: {
  31. type: [Function, Object],
  32. },
  33. },
  34. data () {
  35. return {
  36. list: this.$list.createList(this, {
  37. id: this.id,
  38. resource: 'kubemachines',
  39. apiVersion: 'v1',
  40. steadyStatus: Object.values(expectStatus.kubemachines).flat(),
  41. getParams: { details: true, cluster: this.resId },
  42. filterOptions: {
  43. name: {
  44. label: this.$t('k8s.text_41'),
  45. filter: true,
  46. formatter: val => {
  47. return `name.contains("${val}")`
  48. },
  49. },
  50. },
  51. }),
  52. groupActions: [
  53. {
  54. label: this.$t('k8s.add_node'),
  55. permission: 'k8s_kubeclusters_perform_add_machines',
  56. action: () => {
  57. this.createDialog('CreateKubemachinesDialog', {
  58. title: this.$t('k8s.create'),
  59. data: this.data,
  60. onManager: this.onManager,
  61. refresh: this.refresh,
  62. })
  63. },
  64. meta: () => ({
  65. buttonType: 'primary',
  66. }),
  67. },
  68. {
  69. label: this.$t('k8s.text_201'),
  70. permission: 'k8s_kubemachines_delete',
  71. action: () => {
  72. this.createDialog('DeleteResDialog', {
  73. vm: this,
  74. data: this.list.selectedItems,
  75. columns: this.columns,
  76. title: this.$t('k8s.text_201'),
  77. name: this.$t('k8s.text_21'),
  78. onManager: this.onManager,
  79. success: () => {
  80. this.destroySidePages()
  81. },
  82. })
  83. },
  84. meta: () => this.$getDeleteResult(this.list.selectedItems),
  85. },
  86. ],
  87. }
  88. },
  89. created () {
  90. this.initSidePageTab('event-drawer')
  91. if (this.data.mode === 'customize') this.list.fetchData()
  92. },
  93. methods: {
  94. getParam () {
  95. const ret = { ...(R.is(Function, this.getParams) ? this.getParams() : this.getParams) }
  96. return ret
  97. },
  98. handleOpenSidepage (row) {
  99. this.sidePageTriggerHandle(this, 'K8SKubeMachineSidePage', {
  100. id: row.id,
  101. resource: 'kubemachines',
  102. apiVersion: 'v1',
  103. getParams: this.getParam,
  104. }, {
  105. list: this.list,
  106. })
  107. },
  108. },
  109. }
  110. </script>