forked from Gitlink/forgeplus-react
104 lines
4.1 KiB
JavaScript
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); |