diff --git a/src/forge/Component/OpsStatus.jsx b/src/forge/Component/OpsStatus.jsx
index f5db8d722..b6944642c 100644
--- a/src/forge/Component/OpsStatus.jsx
+++ b/src/forge/Component/OpsStatus.jsx
@@ -24,15 +24,15 @@ export const Tags = (status)=>{
export const TagsLine = (status)=>{
switch(status){
- case 1:
+ case "running":
return(
运行中
);
- case 2:
+ case "failure":
return (
未通过
);
- case 3:
+ case "success":
return (
已通过
);
diff --git a/src/forge/DevOps/OpsDetailLeftpanel.jsx b/src/forge/DevOps/OpsDetailLeftpanel.jsx
index c92cc0960..87343b825 100644
--- a/src/forge/DevOps/OpsDetailLeftpanel.jsx
+++ b/src/forge/DevOps/OpsDetailLeftpanel.jsx
@@ -1,12 +1,11 @@
-import React, { useEffect ,useState } from "react";
+import React, { useEffect, useState } from "react";
import { FlexAJ, Blueline, AlignCenter } from "../Component/layout";
import styled from "styled-components";
-import { Menu , Popconfirm } from "antd";
+import { Menu, Popconfirm } from "antd";
import { TagsLine } from "../Component/OpsStatus";
import { Time } from "../Utils/Time";
import { truncateCommitId } from "../common/util";
-
const SubMenu = Menu.SubMenu;
const Img = styled.img`
{
@@ -16,37 +15,83 @@ const Img = styled.img`
margin-right: 10px;
}
`;
-export default ({ data , repeatSet }) => {
- const [ tamp , setTamp ] = useState(undefined);
- const [ sha , setSha ] = useState(undefined);
- useEffect(()=>{
- if(data && data.started){
+export default ({ data, repeatSet }) => {
+ const [tamp, setTamp] = useState(undefined);
+ const [sha, setSha] = useState(undefined);
+ useEffect(() => {
+ if (data && data.started) {
let t = parseInt(data.started) * 1000;
let time = Time(t);
setTamp(time);
}
- if(data && data.after){
+ if (data && data.after) {
setSha(truncateCommitId(data.after));
}
- },[data])
+ }, [data]);
+
+ function renderMenu() {
+ if (data.stages && data.stages.length > 0) {
+ data.stages.map((item, key) => {
+ return item.steps && item.steps.length > 0 ? (
+
+
+ {item.name}
+
+ }
+ >
+ {item.steps.map((i, k) => {
+ return (
+
+
+
+ {i.name} {i.status ? TagsLine(i.status) : ""}
+
+
+ {i.stopped
+ ? parseInt(parseInt(i.stopped) - parseInt(i.started))
+ : "0"}
+ s
+
+
+
+ );
+ })}
+
+ ) : (
+ ""
+ );
+ });
+ }
+ }
+
+ function titleClick(e,index){
+ console.log(index);
+ }
return (
- {data && data.started && (
+ {data && data.started ? (
开始时间: {tamp}
+ ) : (
+ ""
)}
- {data && data.timestamp && (
-
- 运行时间:{data && data.timestamp}s
-
- )}
+
+ 运行时间:{data && data.timestamp}s
+
-
+
重新创建
@@ -59,21 +104,38 @@ export default ({ data , repeatSet }) => {
);
diff --git a/src/forge/DevOps/OpsDetailRightpanel.jsx b/src/forge/DevOps/OpsDetailRightpanel.jsx
index a7f0f11e9..5de632695 100644
--- a/src/forge/DevOps/OpsDetailRightpanel.jsx
+++ b/src/forge/DevOps/OpsDetailRightpanel.jsx
@@ -1,21 +1,31 @@
-import React from 'react';
-import { FlexAJ , AlignCenter } from '../Component/layout';
+import React, {useState,useEffect} from "react";
+import { FlexAJ, AlignCenter } from "../Component/layout";
-export default (()=>{
- return(
+export default ({ stages }) => {
+ const [ list , setList ] = useState(undefined);
+ useEffect(()=>{
+ if(stages){
+ console.log(stages.steps);
+ setList(stages.steps);
+ }
+ },[stages])
+
+ return (
-
-
- Build setup 01
- 20
-
-
-
-
-
-
-
-
+ {list && list.length>0 ? list.map((item, key) => {
+ return (
+
+
+ {item.name}
+
+ { item.stopped ? (parseInt(item.stopped) - parseInt(item.started)) : "0" }
+
+
+
+
+ );
+ }):"1111"
+ }
- )
-})
\ No newline at end of file
+ );
+};
diff --git a/src/forge/DevOps/opsDetail.jsx b/src/forge/DevOps/opsDetail.jsx
index 34ae4e3ef..52f207961 100644
--- a/src/forge/DevOps/opsDetail.jsx
+++ b/src/forge/DevOps/opsDetail.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useState , useRef , useContext } from "react";
+import React, { useEffect, useState, useRef, useContext } from "react";
import "./ops.scss";
import { FlexAJ, AlignCenter } from "../Component/layout";
import { Tags } from "../Component/OpsStatus";
@@ -7,7 +7,7 @@ import LeftPanel from "./OpsDetailLeftpanel";
import RightPanel from "./OpsDetailRightpanel";
import axios from "axios";
import { Spin } from "antd";
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
export default (props) => {
const [data, setData] = useState(undefined);
@@ -23,37 +23,41 @@ export default (props) => {
}
}, [opsId]);
- function Init(){
+ function Init() {
const url = `/dev_ops/builds/${opsId}.json`;
- axios.get(url, {
- params: {
- project_id: projectId,
- },
- })
- .then((result) => {
- if (result && result.data) {
- setSpinning(false);
- setData(result.data);
- setStages(result.data.stages);
- }
- })
- .catch((error) => {
- console.log(error);
- });
+ axios
+ .get(url, {
+ params: {
+ project_id: projectId,
+ },
+ })
+ .then((result) => {
+ if (result && result.data) {
+ setSpinning(false);
+ setData(result.data);
+ setStages(
+ result.data.stages && result.data.stages.length > 0 ? result.data.stages[0] : undefined
+ );
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
}
// 重新构建
function repeatSet() {
const url = `/dev_ops/builds/${data && data.number}.json`;
- axios.post(url, { project_id: projectId })
- .then((result) => {
- if (result) {
- Init();
- }
- })
- .catch((error) => {
- console.log(error);
- });
+ axios
+ .post(url, { project_id: projectId })
+ .then((result) => {
+ if (result) {
+ Init();
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
}
return (
@@ -64,7 +68,10 @@ export default (props) => {
{data && data.message}
{Tags(`${data && data.status}`)}
-
+
退出
@@ -77,10 +84,10 @@ export default (props) => {
defaultSize="40%"
>