import { PREALLOCATION_OPTION_MAP, MEDIUM_MAP } from '@Compute/constants' import { getNameDescriptionTableColumn, getBrandTableColumn, getStatusTableColumn, getProjectTableColumn, getTimeTableColumn, getCopyWithContentTableColumn, getRegionTableColumn, getBillingTypeTableColumn, getTagTableColumn, getAccountTableColumn, } from '@/utils/common/tableColumn' import { sizestr } from '@/utils/utils' import i18n from '@/locales' import { BRAND_MAP } from '@/constants' import { getUnusedTableColumn, getStorageTypeTableColumn, // getPreallocationTableColumn, } from '../utils/columns' export default { created () { this.columns = [ getNameDescriptionTableColumn({ onManager: this.onManager, hideField: true, addEncrypt: true, formRules: [ { required: true, message: i18n.t('compute.text_210') }, { validator: this.$validate('resourceCreateName') }, ], slotCallback: row => { return ( this.handleOpenSidepage(row) }>{ row.name } ) }, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.name') }, }), // getStatusTableColumn({ statusModule: 'disk' }), getTagTableColumn({ onManager: this.onManager, resource: 'disks', columns: () => this.columns, editCheck: (row) => (row.provider || '').toLowerCase() !== 'bingocloud', hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.metadata') }, }), { field: 'disk_size', title: i18n.t('table.title.disk_size'), sortable: true, minWidth: 50, slots: { default: ({ row }, h) => { const preallocation = PREALLOCATION_OPTION_MAP[row.preallocation]?.label const isVMware = row.brand === BRAND_MAP.VMware.key return [
{ sizestr(row.disk_size, 'M', 1024) } { isVMware && preallocation ? ({ preallocation }) : null }
, ] }, }, formatter: ({ row }) => { const preallocation = PREALLOCATION_OPTION_MAP[row.preallocation]?.label const isVMware = row.brand === BRAND_MAP.VMware.key if (isVMware && preallocation) { return `${sizestr(row.disk_size, 'M', 1024)}(${preallocation})` } return sizestr(row.disk_size, 'M', 1024) }, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.disk_size') }, }, // getPreallocationTableColumn(), { field: 'iops', title: i18n.t('compute.max_iops'), formatter: ({ row }) => { return row.iops || '-' }, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.iops') }, }, { field: 'disk_format', title: i18n.t('table.title.disk_format'), width: 70, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.disk_format') }, }, getStorageTypeTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.storage_type') }, }), { field: 'disk_type', title: i18n.t('table.title.disk_type'), width: 70, formatter: ({ row }) => { return row.disk_type === 'sys' ? i18n.t('compute.text_49') : i18n.t('compute.text_50') }, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.disk_type') }, }, getUnusedTableColumn({ vm: this, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.guest_count') }, }), { field: 'guest', title: this.$t('res.server'), minWidth: 100, showOverflow: 'ellipsis', sortable: true, sortBy: 'order_by_server', slots: { default: ({ row }, h) => { if (this.isPreLoad && !row.guest) return [] if (!row.guest || row.guests.length <= 0) return '-' const guests = row.guests.map((guest, index) => { return {guest.name} }) return [
{ guests }
, ] }, }, formatter: ({ row }) => { if (!row.guest || row.guests.length <= 0) return '-' const guests = row.guests.map((guest, index) => guest.name) return guests.length ? guests.join(',') : '-' }, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.guest') }, }, { field: 'device', title: this.$t('compute.disk_device'), formatter: ({ row }) => { return row.device || '-' }, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.device') }, }, getCopyWithContentTableColumn({ field: 'storage', title: i18n.t('table.title.disk_storage'), hideField: true, slotCallback: (row) => { if (this.isPreLoad && !row.storage) return [] return row.storage }, formatter: ({ row }) => row.storage, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.storage') }, }), getTimeTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.created_at') }, }), getBrandTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.brand') }, }), getRegionTableColumn({ vm: this, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.region') }, }), getBillingTypeTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.billing_type') }, }), getStatusTableColumn({ statusModule: 'disk', vm: this, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.status') }, }), getProjectTableColumn({ hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.tenant') }, }), getAccountTableColumn({ vm: this, hidden: () => { return this.$isScopedPolicyMenuHidden('disk_hidden_columns.account') }, }), { field: 'medium_type', title: i18n.t('table.title.disk_medium_type'), width: 70, slots: { default: ({ row }) => { if (this.isPreLoad && !row.medium_type) return [] return MEDIUM_MAP[row.medium_type] }, }, formatter: ({ row }) => row.medium_type ? MEDIUM_MAP[row.medium_type] : '-', hidden: () => { if (this.hiddenColumns.includes('medium_type')) return true return this.$isScopedPolicyMenuHidden('disk_hidden_columns.storage') }, }, { field: 'auto_reset', title: this.$t('compute.shutdown_auto_reset'), formatter: ({ row }) => { return row.auto_reset ? this.$t('common.true') : this.$t('common.false') }, }, ] }, }