import { getProjectTableColumn, getRegionTableColumn, getStatusTableColumn, getBrandTableColumn, getCopyWithContentTableColumn, getNameDescriptionTableColumn, getBillingTypeTableColumn, getOsArch, getTimeTableColumn, } from '@/utils/common/tableColumn' import SystemIcon from '@/sections/SystemIcon' import { sizestr } from '@/utils/utils' import i18n from '@/locales' export default { created () { this.columns = [ getNameDescriptionTableColumn({ onManager: this.onManager, hideField: true, // addLock: true, addBackup: true, formRules: [ { required: true, message: i18n.t('compute.text_210') }, { validator: this.$validate('resourceCreateName') }, ], slotCallback: row => { return ( this.handleOpenSidepage(row) }>{ row.name } ) }, }), getStatusTableColumn({ statusModule: 'servertemplate', vm: this }), getOsArch({ field: 'content.os_arch' }), { field: 'instance_type', title: i18n.t('table.title.flavor'), showOverflow: 'ellipsis', minWidth: 120, sortable: true, slots: { default: ({ row }) => { if (!row.config_info) return [] const { sku, disks } = row.config_info const diskSize = disks.map(item => item.size_mb).reduce((a, b) => { return a + b }) const ret = [] if (row.name) { ret.push(
{ sku.name }
) } const config = sku.cpu_core_count + 'C' + sizestr(sku.memory_size_mb, 'M', 1024) + (diskSize ? sizestr(diskSize, 'M', 1024) : '') return ret.concat(
{ config }
) }, }, formatter: ({ row }) => { const { sku, disks } = row.config_info || {} const diskSize = disks.map(item => item.size_mb).reduce((a, b) => { return a + b }) const ret = [] if (row.name) { ret.push(sku.name) } const config = sku.cpu_core_count + 'C' + sizestr(sku.memory_size_mb, 'M', 1024) + (diskSize ? sizestr(diskSize, 'M', 1024) : '') return ret.concat(config).join(',') }, }, { field: 'os_type', title: i18n.t('table.title.os'), width: 50, slots: { default: ({ row }) => { let name = (row.metadata && row.metadata.os_distribution) ? row.metadata.os_distribution : row.os_type || '' if (name.includes('Windows') || name.includes('windows')) { name = 'Windows' } const version = (row.metadata && row.metadata.os_version) ? `${row.metadata.os_version}` : '' const tooltip = (version.includes(name) ? version : `${name} ${version}`) || i18n.t('compute.text_339') // 去重 return [ , ] }, }, formatter: ({ row }) => { let name = (row.metadata && row.metadata.os_distribution) ? row.metadata.os_distribution : row.os_type || '' if (name.includes('Windows') || name.includes('windows')) { name = 'Windows' } return name }, }, { field: 'config_info.image', title: i18n.t('res.image'), showOverflow: 'ellipsis', minWidth: 190, slots: { default: ({ row }) => { if (!row.config_info) return [] return row.config_info.image }, }, formatter: ({ row }) => { return row.config_info?.image }, }, getCopyWithContentTableColumn({ field: 'vpc', title: 'VPC', vm: this }), getBillingTypeTableColumn(), getBrandTableColumn(), getProjectTableColumn(), getRegionTableColumn(), getTimeTableColumn(), ] }, }