/** * Copyright (c) OpenSpug Organization. https://github.com/openspug/spug * Copyright (c) * Released under the AGPL-3.0 License. */ import React from 'react'; import { toJS } from 'mobx'; import { observer } from 'mobx-react'; import { Table, Modal, Tag, Icon, message } from 'antd'; import { http, hasPermission } from 'libs'; import store from './store'; import { Action } from "components"; import CloneConfirm from './CloneConfirm'; import envStore from 'pages/config/environment/store'; import lds from 'lodash'; @observer class ComTable extends React.Component { constructor(props) { super(props); this.cloneObj = null; } componentDidMount() { store.fetchRecords(); if (envStore.records.length === 0) { envStore.fetchRecords() } } handleClone = (e, id) => { e.stopPropagation(); this.cloneObj = null; Modal.confirm({ icon: 'exclamation-circle', title: '选择克隆对象', content: this.cloneObj = v[1]}/>, onOk: () => { if (!this.cloneObj) { message.error('请选择目标应用及环境') return Promise.reject() } const info = JSON.parse(this.cloneObj); info.env_id = undefined; store.showExtForm(null, id, info, true) }, }) }; handleDelete = (e, text) => { e.stopPropagation(); Modal.confirm({ title: '删除确认', content: `确定要删除应用【${text['name']}】?`, onOk: () => { return http.delete('/api/app/', {params: {id: text.id}}) .then(() => { message.success('删除成功'); store.fetchRecords() }) } }) }; handleDeployDelete = (text) => { Modal.confirm({ title: '删除确认', content: `删除发布配置将会影响基于该配置所创建发布申请的发布和回滚功能,确定要删除【${lds.get(envStore.idMap, `${text.env_id}.name`)}】的发布配置?`, onOk: () => { return http.delete('/api/app/deploy/', {params: {id: text.id}}) .then(() => { message.success('删除成功'); store.loadDeploys(text.app_id) }) } }) }; expandedRowRender = (record) => { if (record['deploys'] === undefined) { store.loadDeploys(record.id) } return value === '1' ? : }/> lds.get(envStore.idMap, `${value}.name`)}/> `${value.length} 台`}/> value ? 开启 : 关闭}/> {hasPermission('deploy.app.config|deploy.app.edit') && ( ( store.showExtForm(e, record.id, info, false, true)}>查看 store.showExtForm(e, record.id, info)}>编辑 this.handleDeployDelete(info)}>删除 )}/> )}
}; render() { let data = Object.values(toJS(store.records)); if (store.f_name) { data = data.filter(item => item['name'].toLowerCase().includes(store.f_name.toLowerCase())) } if (store.f_desc) { data = data.filter(item => item['desc'] && item['desc'].toLowerCase().includes(store.f_desc.toLowerCase())) } return ( `共 ${total} 条`, pageSizeOptions: ['10', '20', '50', '100'] }}> index + 1}/> {hasPermission('deploy.app.edit|deploy.app.del') && ( ( store.showExtForm(e, info.id)}>新建发布 this.handleClone(e, info.id)}>克隆发布 store.showForm(e, info)}>编辑 this.handleDelete(e, info)}>删除 )}/> )}
) } } export default ComTable