Слияние кода завершено, страница обновится автоматически
import * as React from 'react';
import { observer } from 'mobx-react';
import { Tabs, PageHeader, Button, notification, Popconfirm, Spin } from 'antd';
import { handleTabKey } from 'lib/utils';
import { EassentialInfo } from './essential-info';
import { TaskStatusDetails } from './taskStatus-details';
import { ITasksMetaData, ITrigger } from 'types/base-type';
import { triggerClusterTask } from 'lib/api';
import { handlePageBack } from 'lib/utils';
import { admin } from 'store/admin';
import Url from 'lib/url-parser';
import './index.less';
const { TabPane } = Tabs;
let showStatus: boolean = false;
let showContinue: boolean = false;
@observer
export class OperationDetail extends React.Component {
public taskId: number;
public taskName: string;
public state = {
showContinue: false,
};
constructor(props: any) {
super(props);
const url = Url();
this.taskId = Number(url.search.taskId);
}
public bindClick() {
const type = showContinue ? 'start' : 'pause';
const params = {
taskId: this.taskId,
action: type,
hostname: '',
} as ITrigger;
triggerClusterTask(params).then(data => {
admin.getSubtasksStatus(this.taskId);
notification.success({ message: `${showContinue ? '继续部署' : '暂停'}成功!` });
});
}
public callBackOrCancel(type: string) {
const params = {
taskId: this.taskId,
action: type,
hostname: '',
} as ITrigger;
triggerClusterTask(params).then(data => {
admin.getSubtasksStatus(this.taskId);
notification.success({ message: `${type === 'rollback' ? '回滚任务' : '取消'}成功` });
});
}
public handleVal(value: number) {
showStatus = (value + '').includes('100') ? true : false;
}
public componentDidMount() {
admin.getTasksMetadata(this.taskId);
admin.getSubtasksStatus(this.taskId);
}
public render() {
// 任务状态: 30:运行中(展示暂停), 40:暂停(展示开始), 100:完成(都置灰)
showStatus = admin.taskStatusDetails && admin.taskStatusDetails.status === 100 ? true : false;
showContinue = admin.taskStatusDetails && admin.taskStatusDetails.status === 40 ? true : false;
const showRollBack = admin.taskStatusDetails && admin.taskStatusDetails.rollback;
let tasks = {} as ITasksMetaData;
tasks = admin.tasksMetaData ? admin.tasksMetaData : tasks;
return (
<>
<Spin spinning={admin.loading}>
<PageHeader
className="detail hotspot-header"
onBack={() => handlePageBack('/admin/operation#1')}
title={`任务名称${tasks.taskName ? '/' + tasks.taskName : ''}`}
extra={[
<Button key="1" type="primary" disabled={showStatus} >
<Popconfirm
title={`确定${showContinue ? '开始' : '暂停'}?`}
onConfirm={() => this.bindClick()}
cancelText="取消"
okText="确认"
>
<a>{showContinue ? '开始' : '暂停'}</a>
</Popconfirm>
</Button>,
<Button
key="2"
type="primary"
disabled={showRollBack || showStatus}
>
<Popconfirm
title={`确定回滚?`}
onConfirm={() => this.callBackOrCancel('rollback')}
cancelText="取消"
okText="确认"
>
<a>回滚</a>
</Popconfirm>
</Button>,
<Button
key="3"
type="primary"
disabled={showStatus}
>
<Popconfirm
title={`确定回滚?`}
onConfirm={() => this.callBackOrCancel('cancel')}
cancelText="取消"
okText="确认"
>
<a>取消</a>
</Popconfirm>
</Button>,
]}
>
<Tabs activeKey={location.hash.substr(1) || '1'} type="card" onChange={handleTabKey}>
<TabPane tab="基本信息" key="1">
<EassentialInfo tasksMetaData={tasks} />
</TabPane>
<TabPane tab="任务状态详情" key="2">
<TaskStatusDetails handleVal={(value: number) => this.handleVal(value)} />
</TabPane>
</Tabs>
</PageHeader>
</Spin>
</>
);
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )