forgeplus-react/src/forge/Newfile/UserSubmitComponent.js

115 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React,{Component} from 'react';
import { getImageUrl } from 'educoder';
import { Form , Input , Button , Radio , Icon } from 'antd';
import './index.css';
import axios from 'axios';
const TextArea = Input.TextArea;
class UserSubmitComponent extends Component{
constructor(props){
super(props);
this.state={
submitType:"0"
}
}
changeSubmittype=(e)=>{
this.setState({
submitType:e.target.value
})
}
// 提交变更
subMitFrom=()=>{
const { filepath , content } = this.props;
const { branch , projectsId } = this.props.match.params;
const { submitType } = this.state;
let path = filepath.substr(1);
this.props.form.validateFieldsAndScroll((err, values) => {
if(!err){
const url = `/repositories/${projectsId}/create_file.json`;
axios.post(url,{
filepath:path,
branch:branch,
new_branch:submitType==="1" ? values.branchname:undefined,
content,
message:values.desc
}).then((result)=>{
if(result && result.data.name){
const url = values.branchname ? `/projects/${projectsId}/coders?branch=${values.branchname}` : `/projects/${projectsId}/coders`;
this.props.history.push(url);
}
}).catch(error=>{
console.log(error);
})
}
})
}
render(){
const { submitType } = this.state;
const { getFieldDecorator } = this.props.form;
const { branch , projectsId } = this.props.match.params;
const { current_user , filepath , projectDetail } = this.props;
const changeSubmitBranch = ()=>{
if(submitType==="1"){
return(
<div className="mt15">
<Form.Item style={{paddingLeft:"24px"}}>
{getFieldDecorator('branchname', {
rules: [{
required: true, message: '请输入分支名称'
}],
})(
<Input placeholder={`请输入分支名称`} style={{width:"220px"}}/>
)}
</Form.Item>
</div>
)
}
}
return(
<div>
<span className="df mt20" style={{alignItems:"center"}}>
<img src={getImageUrl(`images/${current_user && current_user.image_url}`)} alt="" className="screwImg"/>
<span className="color-grey-3">用户名<span className="color-grey-8">{current_user && current_user.username}</span></span>
</span>
<div className="userScrew">
<div className="screwPanel">
<Form>
<Form.Item>
{getFieldDecorator('path', {
rules: [],
})(
<Input placeholder={`/${projectDetail && projectDetail.identifier}${filepath}`} readOnly/>
)}
</Form.Item>
<Form.Item>
{getFieldDecorator('desc', {
rules: [{
required:true,message:'请输入合并请求的描述内容'
}],
})(
<TextArea placeholder={`请输入合并请求的描述,(必填)`} authSize={{minRows:3,maxRows:5}}/>
)}
</Form.Item>
<Radio.Group value={submitType} onChange={this.changeSubmittype}>
<Radio value="0" className="mb10"><i className="iconfont icon-banbenku font-16 mr5"></i><span className="color-orange">{branch}</span></Radio>
<Radio value="1"><Icon type="pull-request" className="mr5" />为此提交创建一个<span className="font-bd">新的分支</span></Radio>
</Radio.Group>
{changeSubmitBranch()}
</Form>
</div>
</div>
<Button type="primary" onClick={this.subMitFrom} className="mr20">提交变更</Button>
<Button type="primary grey" onClick={()=>{this.props.history.push(`/projects/${projectsId}/coders`)}} className="mr20">取消</Button>
</div>
)
}
}
const WrappedUserSubmitForm = Form.create({ name: 'UserSubmitForm' })(UserSubmitComponent);
export default WrappedUserSubmitForm;