工作流-参数

This commit is contained in:
caishi 2021-03-03 16:43:02 +08:00
parent afd6904349
commit 964427b8fc
7 changed files with 195 additions and 4 deletions

View File

@ -27,7 +27,7 @@ if (isDev) {
} }
debugType = window.location.search.indexOf('debug=t') !== -1 ? 'teacher' : debugType = window.location.search.indexOf('debug=t') !== -1 ? 'teacher' :
window.location.search.indexOf('debug=s') !== -1 ? 'student' : window.location.search.indexOf('debug=s') !== -1 ? 'student' :
window.location.search.indexOf('debug=a') !== -1 ? 'admin' : parsed.debug || 'admin' window.location.search.indexOf('debug=a') !== -1 ? 'admin' : parsed.debug || 'student'
} }
function clearAllCookie() { function clearAllCookie() {
cookie.remove('_educoder_session', { path: '/' }); cookie.remove('_educoder_session', { path: '/' });

View File

@ -137,13 +137,18 @@ function Dispose(props){
props.history.push(`/projects/${owner}/${projectsId}/devops/mould`); props.history.push(`/projects/${owner}/${projectsId}/devops/mould`);
} }
//
function toparameter(){
props.history.push(`/projects/${owner}/${projectsId}/devops/params`);
}
const operate = current_user && (permission && permission !== "Reporter"); const operate = current_user && (permission && permission !== "Reporter");
return( return(
<Spin spinning={spining}> <Spin spinning={spining}>
<PipelineName branchList={branchList} visible={visible} value={updateInfo} onCancel={()=>setVisible(false)} onOk={onOk}/> <PipelineName branchList={branchList} visible={visible} value={updateInfo} onCancel={()=>setVisible(false)} onOk={onOk}/>
<div className="disposePanel"> <div className="disposePanel">
<Head manager={ operate ? toModalManage : undefined} /> <Head manager={ operate ? toModalManage : undefined} parameter={operate ? toparameter :undefined}/>
<Div> <Div>
{ operate && <Blueback onClick={()=>addNew(undefined,undefined)}>新增流水线</Blueback> } { operate && <Blueback onClick={()=>addNew(undefined,undefined)}>新增流水线</Blueback> }
<div className="mt20 disposeList"> <div className="mt20 disposeList">

View File

@ -2,15 +2,18 @@ import React from 'react';
import { AlignCenterBetween , Blueline , FlexAJ } from '../../Component/layout'; import { AlignCenterBetween , Blueline , FlexAJ } from '../../Component/layout';
function head({manager}){ function head({manager , parameter}){
return( return(
<AlignCenterBetween> <AlignCenterBetween>
<span className="font-20">工作流配置</span> <span className="font-20">工作流配置</span>
<FlexAJ> <FlexAJ>
<a href={`https://forum.trustie.net/forums/3111/detail`} target="_blank" className="color-grey-6"><i className="iconfont icon-tishi1 font-14 mr3"></i>模板使用说明</a> {
parameter && <Blueline onClick={parameter}>参数管理</Blueline>
}
{ {
manager && <Blueline style={{marginLeft:"20px"}} onClick={manager}>模板管理</Blueline> manager && <Blueline style={{marginLeft:"20px"}} onClick={manager}>模板管理</Blueline>
} }
<a href={`https://forum.trustie.net/forums/3111/detail`} target="_blank" className="color-grey-6 ml20"><i className="iconfont icon-tishi1 font-14 mr3"></i>模板使用说明</a>
</FlexAJ> </FlexAJ>
</AlignCenterBetween> </AlignCenterBetween>
) )

View File

@ -26,6 +26,11 @@ const Mould = Loadable({
loader: () => import('./Mould'), loader: () => import('./Mould'),
loading: Loading, loading: Loading,
}) })
const Params = Loadable({
loader: () => import('./Manage/Params'),
loading: Loading,
})
export default ((props)=>{ export default ((props)=>{
return( return(
@ -36,6 +41,11 @@ export default ((props)=>{
(p) => (<New {...props} {...p}/>) (p) => (<New {...props} {...p}/>)
} }
></Route> ></Route>
<Route path="/projects/:owner/:projectsId/devops/params"
render={
(p) => (<Params {...props} {...p}/>)
}
></Route>
<Route path="/projects/:owner/:projectsId/devops/mould" <Route path="/projects/:owner/:projectsId/devops/mould"
render={ render={
(p) => (<Mould {...props} {...p}/>) (p) => (<Mould {...props} {...p}/>)

View File

@ -0,0 +1,118 @@
import React , { useEffect , useState , useRef } from 'react';
import { Banner , Blueback , FlexAJ , AlignCenter } from '../../Component/layout';
import { Input , Table , Popconfirm , Pagination } from 'antd';
import { Link } from 'react-router-dom';
import styled from 'styled-components';
import New from './ParamsNew';
import "./manage.scss";
import axios from 'axios';
import { result } from 'lodash';
const Div = styled.div`{
padding:24px 30px;
min-height:420px;
}`;
function Params(props){
const [ search ,setSearch ] = useState(undefined);
const [ list ,setList ] = useState(undefined);
const [ visible ,setVisible ] = useState(false);
let projectsId = props.match.params.projectsId;
let owner = props.match.params.owner;
useEffect(()=>{
Init()
},[])
function Init(){
const url = `/ci/secrets.json`;
axios.get(url,{
params:{
owner,repo:projectsId
}
}).then(result=>{
if(result){
setList(result.data);
}
}).catch(error=>{})
}
//
function searchValue(){
}
const columns=[
{
title:"参数名",
dataIndex:"name",
key:1,
ellipsis:true
},
{
title:"参数值",
dataIndex:"data",
key:2,
ellipsis:true
},
{
title:"仓库",
dataIndex:"repo",
key:3,
ellipsis:true
},
{
title:"操作",
dataIndex:"operation",
key:4,
render:(txt,item)=>{
return(
<React.Fragment>
<a className="mr10 color-grey-6" onClick={()=>editMouldFunc(item)}><i className="iconfont icon-zaibianji font-13 mr3"></i>编辑</a>
<Popconfirm title={"确定要删除此模板?"} onConfirm={()=>deleteMouldFunc(item.id)} okText="确定" cancelText={"取消"}>
<a className="mr10 color-grey-6"><i className="iconfont icon-lajitong font-13 mr3"></i>删除</a>
</Popconfirm>
</React.Fragment>
)
}
}
]
//
function editMouldFunc(item){
}
//
function deleteMouldFunc(id){
}
function successFunc(){
}
function CancelFunc(){
setVisible(false)
}
return(
<div>
<New visble={visible} successFunc={successFunc} CancelFunc={CancelFunc}/>
<Banner>
<FlexAJ>
<span className="font-18">工作流 - 参数管理</span>
<Link to={`/projects/${owner}/${projectsId}/devops/dispose`} className="font-14 color-grey-9 ml20">返回</Link>
</FlexAJ>
</Banner>
<Div className="disposeList">
<div style={{textAlign:"right"}}>
<Blueback onClick={()=>setVisible(true)}>新建</Blueback>
</div>
<Table className="mt20" size="small" columns={columns} dataSource={list} rowKey={(row)=>row.id} pagination={false}></Table>
</Div>
</div>
)
}
export default Params;

View File

@ -0,0 +1,51 @@
import React , { useEffect , useState , useRef , forwardRef } from 'react';
import { Modal , Input , Form } from 'antd';
const { TextArea } = Input;
function ParamsNew({ form , visble,successFunc,CancelFunc}){
const { getFieldDecorator, validateFields , setFieldsValue } = form;
const layout = {
labelCol: { span: 5 },
wrapperCol: { span: 18 },
};
//
function onConfirmFunc(){
validateFields((error,values)=>{
if(!error){
successFunc(values);
}
})
}
return(
<Modal
visible={visble}
okText={"确定"}
cancelText={"取消"}
onCancel={CancelFunc}
onOk={onConfirmFunc}
title={"新建"}
closable={false}
width="500px"
>
<Form {...layout}>
<Form.Item label="参数名称">
{getFieldDecorator("name",{
rules:[{required:true,message:"请输入参数名称"}]
})(
<Input placeholder="请输入参数名称" width="220px"/>
)}
</Form.Item>
<Form.Item label="参数值">
{getFieldDecorator("value",{
rules:[{required:true,message:"请输入参数值"}]
})(
<TextArea placeholder="请输入参数值" width="220px" autoSize={{ minRows: 4, maxRows: 4 }}/>
)}
</Form.Item>
</Form>
</Modal>
)
}
export default Form.create()(forwardRef(ParamsNew));

View File

@ -0,0 +1,4 @@
.ant-form-explain{
position: absolute;
bottom: -15px;
}