import { CHARGE_TYPE, LB_SPEC } from '@Network/views/lb/constants' import LbListCell from '@Network/views/lb/components/LbListCell' import { getNameDescriptionTableColumn, getStatusTableColumn, getTimeTableColumn, getProjectTableColumn, getBrandTableColumn, getTagTableColumn, getRegionTableColumn, } from '@/utils/common/tableColumn' import i18n from '@/locales' export default { components: { LbListCell, }, created () { this.columns = [ getNameDescriptionTableColumn({ onManager: this.onManager, hideField: true, addLock: true, title: i18n.t('network.text_21'), slotCallback: row => { return ( this.handleOpenSidepage(row) }>{ row.name } ) }, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.name') }, }), getStatusTableColumn({ statusModule: 'lb', title: i18n.t('network.text_27'), vm: this, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.status') }, }), getTagTableColumn({ onManager: this.onManager, resource: 'lb_loadbalancers', columns: () => this.columns, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.metadata') }, }), { field: 'address', title: i18n.t('network.text_248'), minWidth: 150, slots: { default: ({ row }) => { let text = row.address || '-' let weakTip = '' if (row.eip) { text = row.eip if (row.eip_mode === 'elastic_ip') { weakTip = i18n.t('network.text_304') } else if (row.eip_mode === 'public_ip') { weakTip = i18n.t('network.text_305') } else { weakTip = '' } } else { weakTip = row.address_type === 'intranet' ? i18n.t('network.text_306') : i18n.t('network.text_307') } return [
{ text } { weakTip }
] }, }, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.address') }, }, { field: 'loadbalancer_spec', title: i18n.t('network.text_268'), minWidth: 100, formatter: ({ row }) => { let { provider } = row if (provider) { provider = provider.toLowerCase() const platformList = LB_SPEC[provider] if (platformList) { const specItem = platformList.find(val => val.key === row.loadbalancer_spec) if (specItem) return specItem.label } } return row.loadbalancer_spec || '-' }, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.loadbalancer_spec') }, }, { field: 'vpc', title: 'VPC', minWidth: 100, formatter: ({ row }) => { return row.vpc || '-' }, hidden: () => { if (this.$store.getters.isProjectMode) return true return this.$isScopedPolicyMenuHidden('slb_hidden_columns.loadbalancer_spec') }, }, { field: 'secgroups', title: i18n.t('res.secgroup'), minWidth: 80, showOverflow: 'ellipsis', slots: { default: ({ row }) => { return row.secgroups?.map(item => item.name).join(',') }, }, formatter: ({ row }) => { return row.secgroups?.map(item => item.name).join(',') }, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.secgroups') }, }, { field: 'charge_type', title: i18n.t('network.text_192'), minWidth: 100, formatter: ({ row }) => { if (row.charge_type) return CHARGE_TYPE[row.charge_type] || row.charge_type return '-' }, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.loadbalancer_spec') }, }, getBrandTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.brand') }, }), { field: 'cluster', title: i18n.t('network.text_19'), minWidth: 100, formatter: ({ row }) => { return row.cluster || '-' }, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.cluster') }, }, // { // field: 'server_type', // title: '端口/健康检查/后端服务器', // minWidth: 300, // slots: { // default: ({ row }, h) => { // const attrs = { // props: { // params: { // loadbalancer: row.id, // scope: this.$store.getters.scope, // }, // type: 'lb', // manager: new this.$Manager('loadbalancerlisteners', 'v2'), // format: item => { // const healthText = item.health_check === 'on' ? '启用' : '未启用' // return `${item.listener_type}:${item.listener_port} ${healthText} ${item.backend_group || '-'}` // }, // status: row.status, // }, // } // return [] // }, // }, // }, getProjectTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.tenant') }, }), getRegionTableColumn({ showOverflow: false, hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.region') }, }), { field: 'account', title: i18n.t('network.text_196'), minWidth: 120, slots: { default: ({ row }) => { const ret = [] ret.push( { row.account } , ) if (row.manager) { ret.push( { row.manager } , ) } return ret }, }, hidden: () => { if (this.$store.getters.isProjectMode) return true return this.$isScopedPolicyMenuHidden('slb_hidden_columns.cluster') }, }, getTimeTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('slb_hidden_columns.created_at') }, }), ] }, }