import React from 'react'; import { observer } from 'mobx-react'; import { Table, Divider, Modal, Tag, message } from 'antd'; import { LinkButton } from 'components'; import ComForm from './Form'; import http from 'libs/http'; import store from './store'; import hostStore from '../host/store'; import lds from 'lodash'; import moment from "moment"; import groupStore from "pages/alarm/group/store"; @observer class ComTable extends React.Component { constructor(props) { super(props); this.state = { hosts: {} } } componentDidMount() { store.fetchRecords(); if (groupStore.records.length === 0) groupStore.fetchRecords(); if (hostStore.records.length === 0) { hostStore.fetchRecords().then(this._handleHosts) } else { this._handleHosts() } } _handleHosts = () => { const tmp = {}; for (let item of hostStore.records) { tmp[item.id] = item } this.setState({hosts: tmp}) }; columns = [{ title: '序号', key: 'series', render: (_, __, index) => index + 1, width: 80 }, { title: '任务名称', dataIndex: 'name', }, { title: '类型', dataIndex: 'type_alias', }, { title: '地址', render: info => { if ('34'.includes(info.type)) { return lds.get(this.state.hosts, `${info.addr}.name`) } else { return info.addr } }, ellipsis: true }, { title: '频率', dataIndex: 'rate', render: value => `${value}分钟` }, { title: '状态', render: info => { if (info.is_active) { if (info['latest_status'] === 0) { return 正常 } else if (info['latest_status'] === 1) { return 异常 } else { return 待检测 } } else { return 未启用 } } }, { title: '更新于', dataIndex: 'latest_run_time', render: value => value ? moment(value).fromNow() : null }, { title: '操作', render: info => ( this.handleActive(info)}>{info['is_active'] ? '禁用' : '启用'} store.showForm(info)}>编辑 this.handleDelete(info)}>删除 ), width: 180 }]; handleActive = (text) => { Modal.confirm({ title: '操作确认', content: `确定要${text['is_active'] ? '禁用' : '启用'}【${text['nickname']}】?`, onOk: () => { return http.patch(`/api/monitor/`, {id: text.id, is_active: !text['is_active']}) .then(() => { message.success('操作成功'); store.fetchRecords() }) } }) }; handleDelete = (text) => { Modal.confirm({ title: '删除确认', content: `确定要删除【${text['name']}】?`, onOk: () => { return http.delete('/api/monitor/', {params: {id: text.id}}) .then(() => { message.success('删除成功'); store.fetchRecords() }) } }) }; render() { let data = store.records; if (store.f_name) { data = data.filter(item => item['name'].toLowerCase().includes(store.f_name.toLowerCase())) } if (store.f_status !== undefined) { if (store.f_status === -3) { data = data.filter(item => !item['is_active']) } else if (store.f_status === -2) { data = data.filter(item => item['is_active']) } else if (store.f_status === -1) { data = data.filter(item => item['is_active'] && !item['latest_status_alias']) } else { data = data.filter(item => item['latest_status'] === store.f_status) } } return ( {store.formVisible && } ) } } export default ComTable