forgeplus-react/src/forge/Server/reposyncer/component/addTaskModal.jsx

104 lines
4.1 KiB
JavaScript

import React, {useEffect, useState} from 'react';
import { Button, Modal, Input, Select, message, Form } from 'antd';
import axios from 'axios';
import { synchronizeTips } from './editStore';
import gitHub from '../../img/github.png';
import gitee from '../../img/gitee.png';
function DeleteBox({owner, projectsId, visible, setVisible, branchList, reload, form, sync_repositories_unique=[]}) {
const { getFieldDecorator, validateFields , resetFields } = form;
// 选择仓库类型
const [platform, setPlatform] = useState();
// 已添加的仓库类型
const repoTypes = sync_repositories_unique.map(item=>{return item.type})
useEffect(()=>{
if(repoTypes.length === 1){
setPlatform(repoTypes[0].split("::")[1])
}
}, [repoTypes.toString()])
// 新建同步分支点击函数
function createNew(){
validateFields((error,values)=>{
if(!error){
const sync_repository = sync_repositories_unique.filter(item=>item.type === `SyncRepositories::${platform}`)[0]
axios.post(`/v1/${owner}/${projectsId}/sync_repositories/create_branch`, {
...values,
sync_repository_ids: sync_repository && sync_repository.sync_repository_ids.toString()
}).then(res=>{
if(res && res.data.message === "success"){
resetFields()
setVisible(false);
message.success('新建成功');
reload()
}
})
}
})
}
const formItemLayout = {
labelCol: { span: 5 },
wrapperCol: { span: 18 },
}
return(
<Modal
title="新建同步分支"
visible={visible}
onCancel={()=>{setVisible(false)}}
footer={<div><Button style={{width: '104px', height:'36px'}} onClick={()=>{setVisible(false)}}>取消</Button><Button type="primary" style={{width: '104px', height:'36px', marginLeft: '40px'}} onClick={createNew}></Button></div>}
width={550}
className="cancelBound"
>
<Form {...formItemLayout}>
{repoTypes.length > 1 && <Form.Item label="同步仓库平台" className="storeFormItem">
{getFieldDecorator("type",{
rules:[{required:true,message:`请选择同步仓库平台`}],
})(
<Select placeholder="请选择同步仓库平台" onChange={(value)=>{
setPlatform(value)
}}>
<Select.Option value="Github"><img src={gitHub} alt="" className="storeLogo mr5"/>Github</Select.Option>
<Select.Option value="Gitee"><img src={gitee} alt="" className="storeLogo mr5"/>Gitee</Select.Option>
</Select>
)}
</Form.Item>}
{platform && <Form.Item label={`${platform}分支`}>
{getFieldDecorator("external_branch_name",{
rules:[{required:true,message:`请输入${platform}分支名称`}]
})(
<Input placeholder={`请输入${platform}分支名称`} className="storeInput" maxLength={50}/>
)}
</Form.Item>}
<Form.Item label="Gitlink分支">
{getFieldDecorator("gitlink_branch_name",{
rules:[{required:true,message:"请选择Gitlink仓库分支"}]
})(
<Select placeholder="请选择Gitlink仓库分支">
{branchList && branchList.map(item=>{
const {branch_id, name} = item;
return <Select.Option value={name} key={branch_id}>{name}</Select.Option>
})}
</Select>
)}
</Form.Item>
<div className='directionByAddTaskModal'>
<Form.Item label="首次同步方向:">
{getFieldDecorator("first_sync_direction",{
rules:[{required:true,message:"请选择首次同步方向"}]
})(
<Select placeholder="请选择首次同步方向">
<Select.Option value="2">{platform}同步至GitLink</Select.Option>
<Select.Option value="1">GitLink同步至{platform}</Select.Option>
</Select>
)}
</Form.Item>
{synchronizeTips}
</div>
</Form>
</Modal>
)
}
export default Form.create()(DeleteBox);