parent
44dc09b8ba
commit
3cfbf2a471
@ -0,0 +1,33 @@
|
|||||||
|
import React , { Component } from 'react';
|
||||||
|
|
||||||
|
import {Route,Switch} from 'react-router-dom';
|
||||||
|
|
||||||
|
|
||||||
|
import { SnackbarHOC } from 'educoder';
|
||||||
|
import { CNotificationHOC } from '../modules/courses/common/CNotificationHOC';
|
||||||
|
|
||||||
|
|
||||||
|
import './css/index.css';
|
||||||
|
|
||||||
|
import Loadable from 'react-loadable';
|
||||||
|
import Loading from '../Loading';
|
||||||
|
|
||||||
|
const ProjectNew = Loadable({
|
||||||
|
loader: () => import('./New/Index'),
|
||||||
|
loading: Loading,
|
||||||
|
})
|
||||||
|
|
||||||
|
class Index extends Component{
|
||||||
|
render(){
|
||||||
|
return(
|
||||||
|
<Switch {...this.props}>
|
||||||
|
<Route exact path="/forge/projects/new"
|
||||||
|
render={
|
||||||
|
(props) => (<ProjectNew {...this.props} {...props} {...this.state} />)
|
||||||
|
}
|
||||||
|
></Route>
|
||||||
|
</Switch>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default CNotificationHOC() ( SnackbarHOC() ( Index ));
|
@ -0,0 +1,217 @@
|
|||||||
|
import React , { Component } from 'react';
|
||||||
|
|
||||||
|
import { Input , Form , Select , Checkbox , Button } from 'antd';
|
||||||
|
|
||||||
|
import '../css/index.css';
|
||||||
|
import './new.css'
|
||||||
|
|
||||||
|
import axios from 'axios' ;
|
||||||
|
const Option = Select.Option
|
||||||
|
class Index extends Component{
|
||||||
|
constructor(props){
|
||||||
|
super(props);
|
||||||
|
this.state={
|
||||||
|
// authorValue:"0",
|
||||||
|
preType:"0",
|
||||||
|
subType:"0",
|
||||||
|
languageValue:"0",
|
||||||
|
gitignoreType:"0",
|
||||||
|
openSourceType:"0",
|
||||||
|
|
||||||
|
CategoryList:undefined,
|
||||||
|
LanguageList:undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
componentDidMount=()=>{
|
||||||
|
// 获取项目类别
|
||||||
|
this.getCategory();
|
||||||
|
// 获取项目语言
|
||||||
|
this.getLanguage();
|
||||||
|
}
|
||||||
|
getCategory=()=>{
|
||||||
|
const url = `/project_categories`
|
||||||
|
axios.get(url).then((result)=>{
|
||||||
|
if(result){
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error)=>{})
|
||||||
|
}
|
||||||
|
|
||||||
|
getLanguage=()=>{
|
||||||
|
const url = `/project_languages`
|
||||||
|
axios.get(url).then((result)=>{
|
||||||
|
if(result){
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error)=>{})
|
||||||
|
}
|
||||||
|
|
||||||
|
subMitFrom = () =>{
|
||||||
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
||||||
|
if(!err){
|
||||||
|
const url = `/projects`;
|
||||||
|
axios.post(url,{
|
||||||
|
values,
|
||||||
|
user_id:'50207'
|
||||||
|
}).then((result)=>{
|
||||||
|
if(result){
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((error)=>{
|
||||||
|
console.log(error);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
render(){
|
||||||
|
const { getFieldDecorator } = this.props.form;
|
||||||
|
|
||||||
|
const {
|
||||||
|
// authorValue,
|
||||||
|
preType,
|
||||||
|
subType,
|
||||||
|
languageValue,
|
||||||
|
gitignoreType,
|
||||||
|
openSourceType
|
||||||
|
}=this.state;
|
||||||
|
return(
|
||||||
|
<div className="main">
|
||||||
|
<div className="newPanel">
|
||||||
|
<div className="newPanel_title">创建托管项目</div>
|
||||||
|
<Form>
|
||||||
|
<div className="newPanel_content">
|
||||||
|
{/* <Form.Item
|
||||||
|
label="拥有者"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('user_id', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请选择拥有者'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Select value={authorValue}>
|
||||||
|
<Option key="0">kosasa</Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</Form.Item> */}
|
||||||
|
<Form.Item
|
||||||
|
label="项目名称"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('name', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请填写项目名称'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder="例如:团队协作方法与研究"/>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label="项目简介"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('description', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请填写项目简介'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input.TextArea autoSize={{ minRows: 2, maxRows: 6 }}/>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label="仓库名称"
|
||||||
|
style={{marginBottom:"0px"}}
|
||||||
|
>
|
||||||
|
{getFieldDecorator('repository_name', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请填写仓库名称'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Input placeholder="请输入仓库名称"/>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<p className="formTip">好的存储库名称使用简单、深刻和独特的关键字</p>
|
||||||
|
<div className="newContent_inline">
|
||||||
|
<Form.Item
|
||||||
|
label="项目类别"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('project_category_id', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请选择大类别'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Select value={preType} className="inline_Tag">
|
||||||
|
<Option key="0">HTMl</Option>
|
||||||
|
<Option key="1">HTMl111</Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item>
|
||||||
|
{getFieldDecorator('project_language_id', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请选择子类别'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Select value={subType} className="inline_Tag">
|
||||||
|
<Option key="0">HTMl</Option>
|
||||||
|
<Option key="1">HTMl111</Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
|
<Form.Item
|
||||||
|
label="项目语言"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('project_language_id', {
|
||||||
|
rules: [{
|
||||||
|
required: true, message: '请选择项目语言'
|
||||||
|
}],
|
||||||
|
})(
|
||||||
|
<Select value={languageValue}>
|
||||||
|
<Option key="0">JAVA</Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
|
<div className="newPanel_content">
|
||||||
|
<Form.Item
|
||||||
|
label=".gitignore"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('ignore_id')(
|
||||||
|
<Select value={gitignoreType} className="inline_Tag">
|
||||||
|
<Option key="0">选择.gitignore模板</Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label="开源许可证"
|
||||||
|
>
|
||||||
|
{getFieldDecorator('license_id')(
|
||||||
|
<Select value={openSourceType} className="inline_Tag">
|
||||||
|
<Option key="0">选择开源信息模板</Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item
|
||||||
|
label="可见性"
|
||||||
|
style={{marginBottom:"0px"}}
|
||||||
|
>
|
||||||
|
{getFieldDecorator('private')(
|
||||||
|
<Checkbox value="limit">将项目设为私有</Checkbox>
|
||||||
|
)}
|
||||||
|
</Form.Item >
|
||||||
|
<p className="formTip">只有企业所有人或拥有权限的企业成员才能看到</p>
|
||||||
|
<Form.Item className="formTip">
|
||||||
|
<Button type="primary" onClick={this.subMitFrom} className="mr20">创建项目</Button>
|
||||||
|
<a className="btn_32" onClick={() => this.props.onCancel()}>取消</ a>
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</Form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const WrappedIndexForm = Form.create({ name: 'NewWorkForm' })(Index);
|
||||||
|
export default WrappedIndexForm;
|
@ -0,0 +1,77 @@
|
|||||||
|
.newPanel{
|
||||||
|
border:1px solid #eaeaea;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.newPanel_title{
|
||||||
|
height: 3rem;
|
||||||
|
line-height: 3rem;
|
||||||
|
background: #f0f0f0;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 4px 4px 0px 0px;
|
||||||
|
font-size: 1.6em;
|
||||||
|
border-bottom: 1px solid #f0f0f0
|
||||||
|
}
|
||||||
|
.newPanel_content{
|
||||||
|
width: 600px;
|
||||||
|
margin:1rem auto;
|
||||||
|
}
|
||||||
|
.newPanel_content .ant-row.ant-form-item{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.newPanel_content .ant-form-item-label{
|
||||||
|
width: 100px;
|
||||||
|
display: block;
|
||||||
|
text-align: right;
|
||||||
|
margin-right: 10px;
|
||||||
|
height: 37px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
.newPanel_content .ant-form-item-control-wrapper{
|
||||||
|
flex: 1;
|
||||||
|
min-width: 280px;
|
||||||
|
}
|
||||||
|
.newPanel_content .ant-select-selection{
|
||||||
|
height: 37px;
|
||||||
|
}
|
||||||
|
.newPanel_content .ant-select-selection__rendered,.newPanel_content input{
|
||||||
|
height: 35px;
|
||||||
|
line-height: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.newContent_inline{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items:flex-end
|
||||||
|
}
|
||||||
|
.newContent_inline .ant-form-item-control-wrapper{
|
||||||
|
min-width: 235px;
|
||||||
|
}
|
||||||
|
.newContent_inline .inline_Tag{
|
||||||
|
width: 235px;
|
||||||
|
}
|
||||||
|
.newContent_inline > .ant-form-item:nth-child(2){
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
.formTip{
|
||||||
|
margin:0px 0px 20px 110px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 750px){
|
||||||
|
.newPanel_content{
|
||||||
|
width:95%;
|
||||||
|
}
|
||||||
|
.newPanel_content .ant-row.ant-form-item{
|
||||||
|
display: grid
|
||||||
|
}
|
||||||
|
.newPanel_content .ant-form-item-label{
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.newContent_inline > .ant-form-item:nth-child(2){
|
||||||
|
margin-left:0px
|
||||||
|
}
|
||||||
|
.formTip{
|
||||||
|
margin:0px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
body{
|
||||||
|
font-size:62.5%;
|
||||||
|
}
|
||||||
|
.main{
|
||||||
|
width: 1200px;
|
||||||
|
margin:2rem auto;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.btn_32{
|
||||||
|
border-radius: 4px;
|
||||||
|
padding:0px 12px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #666;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1200px){
|
||||||
|
.main{
|
||||||
|
width:1000px;
|
||||||
|
margin:1rem auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1000px){
|
||||||
|
.main{
|
||||||
|
width: 750px;
|
||||||
|
margin:1rem auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 750px){
|
||||||
|
.main{
|
||||||
|
width: 95%;
|
||||||
|
margin:1rem auto;
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue