columns.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import LbListCell from '@Network/views/lb/components/LbListCell'
  2. import {
  3. getNameDescriptionTableColumn,
  4. getRegionTableColumn,
  5. getStatusTableColumn,
  6. } from '@/utils/common/tableColumn'
  7. import i18n from '@/locales'
  8. export default {
  9. components: {
  10. LbListCell,
  11. },
  12. created () {
  13. this.columns = [
  14. getNameDescriptionTableColumn({
  15. onManager: this.onManager,
  16. hideField: true,
  17. title: i18n.t('network.text_21'),
  18. slotCallback: row => {
  19. return (
  20. <side-page-trigger onTrigger={ () => this.handleOpenSidepage(row) }>{ row.name }</side-page-trigger>
  21. )
  22. },
  23. }),
  24. getStatusTableColumn({ statusModule: 'lb' }),
  25. {
  26. field: 'listeners',
  27. title: i18n.t('network.text_355'),
  28. width: 100,
  29. slots: {
  30. default: ({ row }) => {
  31. if (row.listeners && row.listeners.length > 0) {
  32. const list = row.listeners.filter(item => item.redirect === 'off').map(item => <a-tag class='mb-2 mr-1'>{item.name}({item.listener_type}: {item.listener_port})</a-tag>)
  33. return [<list-body-cell-popover text={i18n.t('compute.text_619', [row.lb_listener_count || 0])} max-width="400px">
  34. <div style="display: inline-flex; flex-wrap: wrap; max-width: 40vw;">
  35. {...list}
  36. </div>
  37. </list-body-cell-popover>]
  38. }
  39. return i18n.t('compute.text_619', [row.lb_listener_count || 0])
  40. },
  41. },
  42. },
  43. getRegionTableColumn(),
  44. ]
  45. },
  46. }