import _ from 'lodash' import { getNameDescriptionTableColumn, getTimeTableColumn } from '@/utils/common/tableColumn' import { strategyColumn, levelColumn } from '@Monitor/views/commonalert/utils' import i18n from '@/locales' export default { data () { return { extandData: {}, expandConfig: { loadMethod: this.loadMethod, lazy: true, }, } }, created () { this.columns = [ getNameDescriptionTableColumn({ edit: false, onManager: this.onManager, }), { field: 'none', title: this.$t('common.status'), slots: { default: ({ row }, h) => { return [
, ] }, }, }, { field: 'alert_table', title: i18n.t('monitor.text_98'), slots: { default: ({ row }) => { const columns = [ getNameDescriptionTableColumn({ onManager: this.onManager, hideField: true, title: i18n.t('monitor.text_99'), edit: false, showDesc: false, slotCallback: row => { return ( this.handleOpenAlertSidepage(row)}>{ row.alert } ) }, }), getTimeTableColumn({ field: 'trigger_time', title: this.$t('monitor.text_14') }), strategyColumn(), levelColumn(), { field: 'value_str', title: this.$t('monitor.text_105'), align: 'right', formatter: ({ row }) => { const val = _.get(row, 'data.value_str') || '-' if (val === 'nodata') return this.$t('monitor.text_116') return val }, }, { field: 'action', title: this.$t('compute.text_863'), slots: { default: ({ row }, h) => { const ret = [] ret.push( viewTag(row)}>{ this.$t('common.view') }, ) return ret }, }, }, ] const viewTag = obj => { this.createDialog('ViewItemTagsDialog', { vm: this, data: [obj], columns: columns.slice(0, 3), title: this.$t('monitor.text_104'), field: 'data.tags', }) } const data = row.childData || [] return [ ] }, }, }, { field: 'type', title: i18n.t('monitor.text_97'), formatter: ({ row }) => { if (row.type) { if (this.$te(`dictionary.${row.type}`)) { return this.$t(`dictionary.${row.type}`) } return row.type } return '-' }, }, ] this.extandData = {} }, methods: { async toggleRowExpand ({ row, expanded }) { if (expanded) { try { if (!this.extandData[row.id]) { this.extandData[row.id] = await this.getAlertdata(row.id) this.$refs.pagelist.$refs.table.$refs.grid.reloadExpandContent(row) } } catch (error) { throw error } } }, loadMethod ({ row }) { return new Promise(resolve => { this.getAlertdata(row.id).then(data => { row.childData = data resolve() }) }) }, async getAlertdata (id) { try { const { data: { data } } = await new this.$Manager('alertresources', 'v1').getSpecific({ id, spec: 'alerts' }) return data } catch (error) { throw error } }, handleOpenAlertSidepage (row) { this.sidePageTriggerHandle(this, 'CommonalertsSidePage', { id: row.alert_id, resource: 'commonalerts', apiVersion: 'v1', sourceList: this.list, }) }, }, }