新建+issue
This commit is contained in:
parent
636d2ee36b
commit
bf7afa9087
|
|
@ -1,11 +1,12 @@
|
|||
import React , { Component } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Input , Form , Select , Checkbox , Button , Divider ,Spin } from 'antd';
|
||||
import { Input , Form , Select , Checkbox , Button , Divider , Spin , AutoComplete } from 'antd';
|
||||
|
||||
import '../css/index.css';
|
||||
import './new.css'
|
||||
|
||||
import axios from 'axios' ;
|
||||
import { callbackify } from 'util';
|
||||
const Option = Select.Option
|
||||
class Index extends Component{
|
||||
constructor(props){
|
||||
|
|
@ -23,6 +24,21 @@ class Index extends Component{
|
|||
GitignoreList:undefined,
|
||||
LicensesList:undefined,
|
||||
isSpin:false,
|
||||
|
||||
project_language_id:undefined,
|
||||
project_category_id:undefined,
|
||||
license_id:undefined,
|
||||
ignore_id:undefined,
|
||||
|
||||
project_language_list:undefined,
|
||||
project_category_list:undefined,
|
||||
license_list:undefined,
|
||||
ignore_list:undefined,
|
||||
|
||||
project_language_name:undefined,
|
||||
project_category_name:undefined,
|
||||
license_name:undefined,
|
||||
ignore_name:undefined
|
||||
}
|
||||
}
|
||||
getUserInfo=()=>{
|
||||
|
|
@ -53,9 +69,9 @@ class Index extends Component{
|
|||
const url = `/project_categories.json`
|
||||
axios.get(url).then((result)=>{
|
||||
if(result){
|
||||
let CategoryList = this.setOptionsList(result.data.project_categories)
|
||||
this.setOptionsList(result.data.project_categories,'project_category');
|
||||
this.setState({
|
||||
CategoryList
|
||||
CategoryList:result.data.project_categories
|
||||
})
|
||||
}
|
||||
}).catch((error)=>{})
|
||||
|
|
@ -65,9 +81,9 @@ class Index extends Component{
|
|||
const url = `/project_languages.json`
|
||||
axios.get(url).then((result)=>{
|
||||
if(result){
|
||||
let LanguageList = this.setOptionsList(result.data.project_languages)
|
||||
this.setOptionsList(result.data.project_languages,'project_language')
|
||||
this.setState({
|
||||
LanguageList
|
||||
LanguageList:result.data.project_languages
|
||||
})
|
||||
}
|
||||
}).catch((error)=>{})
|
||||
|
|
@ -77,9 +93,9 @@ class Index extends Component{
|
|||
const url = `/ignores.json`
|
||||
axios.get(url).then((result)=>{
|
||||
if(result){
|
||||
let GitignoreList = this.setOptionsList(result.data.ignores)
|
||||
this.setOptionsList(result.data.ignores,'ignore');
|
||||
this.setState({
|
||||
GitignoreList
|
||||
GitignoreList:result.data.ignores
|
||||
})
|
||||
}
|
||||
}).catch((error)=>{})
|
||||
|
|
@ -89,24 +105,30 @@ class Index extends Component{
|
|||
const url = `/licenses.json`
|
||||
axios.get(url).then((result)=>{
|
||||
if(result){
|
||||
let LicensesList = this.setOptionsList(result.data.licenses)
|
||||
this.setOptionsList(result.data.licenses,'license');
|
||||
this.setState({
|
||||
LicensesList
|
||||
LicensesList:result.data.licenses
|
||||
})
|
||||
}
|
||||
}).catch((error)=>{})
|
||||
}
|
||||
|
||||
setOptionsList = (data) =>{
|
||||
let list = undefined;
|
||||
// 设置option
|
||||
setOptionsList = (data,_head,name) =>{
|
||||
if(data && data.length > 0){
|
||||
list = data.map((item,key)=>{
|
||||
return(
|
||||
<Option key={item.id}>{item.name}</Option>
|
||||
)
|
||||
let _data = data;
|
||||
if(name){
|
||||
_data = data.filter(item=>item.name.indexOf(name)>-1);
|
||||
}
|
||||
let list = _data && _data.map((item) => (
|
||||
<Option key={item.id} value={item.name}>
|
||||
{item.name}
|
||||
</Option>
|
||||
));
|
||||
this.setState({
|
||||
[_head+"_list"]:list
|
||||
})
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
subMitFrom = () =>{
|
||||
|
|
@ -117,9 +139,14 @@ class Index extends Component{
|
|||
if(!err){
|
||||
const { current_user } = this.props;
|
||||
const { projectsType } =this.props.match.params;
|
||||
const { project_language_id, project_category_id, license_id, ignore_id } = this.state;
|
||||
const url = projectsType === "deposit" ? "/projects.json" :"/projects/migrate.json";
|
||||
axios.post(url,{
|
||||
...values,
|
||||
project_language_id,
|
||||
project_category_id,
|
||||
license_id,
|
||||
ignore_id,
|
||||
user_id:current_user.user_id
|
||||
}).then((result)=>{
|
||||
if(result){
|
||||
|
|
@ -145,6 +172,39 @@ class Index extends Component{
|
|||
})
|
||||
}
|
||||
|
||||
ChangePlatform=(value,e,name,list)=>{
|
||||
this.setOptionsList(list,name,value)
|
||||
this.setState({
|
||||
[name+"_id"]:e.key,
|
||||
[name+"_name"]:value,
|
||||
})
|
||||
}
|
||||
|
||||
blurCategory=(value,list,name)=>{
|
||||
// console.log(value);
|
||||
let filter = list && list.filter(item=>item.name === value);
|
||||
if(!filter || filter.length===0){
|
||||
this.props.form.setFieldsValue({
|
||||
[name]:undefined
|
||||
})
|
||||
this.setState({
|
||||
[name+"_name"]:undefined,
|
||||
[name+"_id"]:undefined
|
||||
})
|
||||
this.setOptionsList(list,name);
|
||||
}
|
||||
}
|
||||
|
||||
checkId=(rule, value, callback,list,title)=>{
|
||||
let filter = list.filter(item=>item.name === value);
|
||||
if(filter && filter.length>0){
|
||||
callback();
|
||||
}else{
|
||||
callback('请在下拉选项中选择正确的'+title+"!");
|
||||
}
|
||||
callback();
|
||||
}
|
||||
|
||||
render(){
|
||||
const { getFieldDecorator } = this.props.form;
|
||||
// 项目类型:deposit-托管项目,mirror-镜像项目
|
||||
|
|
@ -161,10 +221,18 @@ class Index extends Component{
|
|||
LanguageList,
|
||||
GitignoreList,
|
||||
LicensesList,
|
||||
isSpin
|
||||
}=this.state;
|
||||
isSpin,
|
||||
project_language_name,
|
||||
project_category_name,
|
||||
license_name,
|
||||
ignore_name,
|
||||
|
||||
console.log("current_user",this.props);
|
||||
project_language_list,
|
||||
project_category_list,
|
||||
license_list,
|
||||
ignore_list,
|
||||
}=this.state;
|
||||
console.log("a:",project_category_list);
|
||||
return(
|
||||
<div className="main back-white">
|
||||
<div className="newPanel">
|
||||
|
|
@ -172,21 +240,8 @@ class Index extends Component{
|
|||
<Spin spinning={isSpin}>
|
||||
<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> */}
|
||||
{
|
||||
projectsType != "deposit" &&
|
||||
projectsType !== "deposit" &&
|
||||
<React.Fragment>
|
||||
<Form.Item
|
||||
label="镜像版本库地址"
|
||||
|
|
@ -239,44 +294,46 @@ class Index extends Component{
|
|||
)}
|
||||
</Form.Item>
|
||||
<p className="formTip">好的存储库名称使用简单、深刻和独特的关键字</p>
|
||||
{/* <div className="newContent_inline"> */}
|
||||
<Form.Item
|
||||
label="项目类别"
|
||||
>
|
||||
{getFieldDecorator('project_category_id', {
|
||||
{getFieldDecorator('project_category', {
|
||||
rules: [{
|
||||
required: true, message: '请选择大类别'
|
||||
required: true, message: '请选择大类别',
|
||||
},{
|
||||
validator:(rule, value, callback)=>this.checkId(rule, value, callback,CategoryList,'项目类别')
|
||||
}],
|
||||
})(
|
||||
<Select value={preType}>
|
||||
{CategoryList}
|
||||
</Select>
|
||||
<AutoComplete
|
||||
placeholder="请选择项目类别"
|
||||
onChange={(value,e)=>this.ChangePlatform(value,e,'project_category',CategoryList)}
|
||||
className="plateAutoComplete"
|
||||
onBlur={(value)=>this.blurCategory(value,CategoryList,"project_category")}
|
||||
>
|
||||
{/* {this.setOptionsList(CategoryList,project_category_name)} */}
|
||||
{project_category_list}
|
||||
</AutoComplete>
|
||||
)}
|
||||
</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', {
|
||||
{getFieldDecorator('project_language', {
|
||||
rules: [{
|
||||
required: true, message: '请选择项目语言'
|
||||
},{
|
||||
validator:(rule, value, callback)=>this.checkId(rule, value, callback,LanguageList,'项目语言')
|
||||
}],
|
||||
})(
|
||||
<Select value={languageValue}>
|
||||
{LanguageList}
|
||||
</Select>
|
||||
<AutoComplete
|
||||
placeholder="请选择项目语言"
|
||||
onChange={(value,e)=>this.ChangePlatform(value,e,'project_language',LanguageList)}
|
||||
className="plateAutoComplete"
|
||||
onBlur={(value)=>this.blurCategory(value,LanguageList,"project_language")}
|
||||
>
|
||||
{/* {this.setOptionsList(LanguageList,project_language_name)} */}
|
||||
{project_language_list}
|
||||
</AutoComplete>
|
||||
)}
|
||||
</Form.Item>
|
||||
</div>
|
||||
|
|
@ -288,19 +345,39 @@ class Index extends Component{
|
|||
<Form.Item
|
||||
label=".gitignore"
|
||||
>
|
||||
{getFieldDecorator('ignore_id')(
|
||||
<Select value={gitignoreType} className="inline_Tag">
|
||||
{GitignoreList}
|
||||
</Select>
|
||||
{getFieldDecorator('ignore',{
|
||||
rules: [{
|
||||
validator:(rule, value, callback)=>this.checkId(rule, value, callback,GitignoreList,'gitignore')
|
||||
}],
|
||||
})(
|
||||
<AutoComplete
|
||||
placeholder="请选择gitignore"
|
||||
onChange={(value,e)=>this.ChangePlatform(value,e,'ignore',GitignoreList)}
|
||||
className="plateAutoComplete"
|
||||
onBlur={(value)=>this.blurCategory(value,GitignoreList,"ignore")}
|
||||
>
|
||||
{/* {this.setOptionsList(GitignoreList,ignore_name)} */}
|
||||
{ignore_list}
|
||||
</AutoComplete>
|
||||
)}
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="开源许可证"
|
||||
>
|
||||
{getFieldDecorator('license_id')(
|
||||
<Select value={LicensesType} className="inline_Tag">
|
||||
{LicensesList}
|
||||
</Select>
|
||||
{getFieldDecorator('license',{
|
||||
rules: [{
|
||||
validator:(rule, value, callback)=>this.checkId(rule, value, callback,LicensesList,'开源许可证')
|
||||
}],
|
||||
})(
|
||||
<AutoComplete
|
||||
placeholder="请选择开源许可证"
|
||||
onChange={(value,e)=>this.ChangePlatform(value,e,'license',LicensesList)}
|
||||
className="plateAutoComplete"
|
||||
onBlur={(value)=>this.blurCategory(value,LicensesList,"license")}
|
||||
>
|
||||
{/* {this.setOptionsList(LicensesList,license_name)} */}
|
||||
{license_list}
|
||||
</AutoComplete>
|
||||
)}
|
||||
</Form.Item>
|
||||
</React.Fragment>
|
||||
|
|
|
|||
|
|
@ -101,7 +101,8 @@ class Detail extends Component{
|
|||
issue_id:data.id,
|
||||
attachment_ids:fileList
|
||||
}).then(result=>{
|
||||
if(result && result.journals_count > 0){
|
||||
if(result){
|
||||
this.props.showNotification("评论成功!");
|
||||
this.props.form.setFieldsValue({
|
||||
content: ""
|
||||
});
|
||||
|
|
@ -111,7 +112,6 @@ class Detail extends Component{
|
|||
quillFlag:false
|
||||
})
|
||||
this.getjournalslist(page, limit);
|
||||
this.props.showNotification("评论成功!");
|
||||
}
|
||||
}).catch(error=>{
|
||||
console.log(error);
|
||||
|
|
@ -178,13 +178,13 @@ class Detail extends Component{
|
|||
|
||||
//修改评论
|
||||
updatedetail=(id)=>{
|
||||
const {page, limit } = this.state;
|
||||
const { page , limit , countvalue } = this.state;
|
||||
const {orderId} = this.props.match.params;
|
||||
const url = `/issues/${orderId}/journals/${id}.json`;
|
||||
axios.put(url,{
|
||||
issue_id:orderId,
|
||||
id:id,
|
||||
content:this.state.countvalue
|
||||
content:JSON.stringify(countvalue)
|
||||
}).then(result=>{
|
||||
if(result){
|
||||
this.setState({
|
||||
|
|
@ -221,20 +221,15 @@ class Detail extends Component{
|
|||
})
|
||||
}
|
||||
|
||||
changmodelname=(e)=>{
|
||||
this.setState({
|
||||
countvalue:e.target.value
|
||||
})
|
||||
}
|
||||
|
||||
editdetail=(count,status)=>{
|
||||
this.setState({
|
||||
countvalue:count,
|
||||
countvalue:this.stringJson(count),
|
||||
isedit:status
|
||||
})
|
||||
}
|
||||
|
||||
renderJournalList=(list)=>{
|
||||
// console.log(list);
|
||||
if(list && list.length >0){
|
||||
return(
|
||||
list.map((item,key)=>{
|
||||
|
|
@ -299,6 +294,7 @@ class Detail extends Component{
|
|||
showFiles:flag
|
||||
})
|
||||
}
|
||||
// 新建评论
|
||||
onContentChange=(value)=>{
|
||||
if(value){
|
||||
this.setState({
|
||||
|
|
@ -307,6 +303,14 @@ class Detail extends Component{
|
|||
})
|
||||
}
|
||||
}
|
||||
// 编辑评论
|
||||
onEditContentChange=(value)=>{
|
||||
if(value){
|
||||
this.setState({
|
||||
countvalue:value
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
handleShowImage=(value)=>{
|
||||
// console.log("imgOnclick",value);
|
||||
|
|
@ -336,14 +340,14 @@ class Detail extends Component{
|
|||
<QuillForEditor
|
||||
readOnly={true}
|
||||
value={_ctx}
|
||||
showUploadImage={this.handleShowImage}
|
||||
// showUploadImage={this.handleShowImage}
|
||||
/>
|
||||
)
|
||||
};
|
||||
|
||||
render(){
|
||||
const { projectsId , orderId } = this.props.match.params;
|
||||
const { data,journalsdata, page, limit, search_count, isSpin, isedit, showFiles , quillValue , quillFlag } = this.state;
|
||||
const { data,journalsdata, page, limit, search_count, isSpin, isedit, showFiles , quillValue , quillFlag , countvalue } = this.state;
|
||||
const { current_user } = this.props;
|
||||
const Paginations = (
|
||||
<React.Fragment>
|
||||
|
|
@ -398,20 +402,19 @@ class Detail extends Component{
|
|||
}
|
||||
</div>
|
||||
<div style={{display: (isedit && isedit === item.id) ? "block" : "none"}}>
|
||||
<div className="quillContent">
|
||||
<div className="quillContent mt20">
|
||||
<QuillForEditor
|
||||
wrapStyle={{
|
||||
height: '220px',
|
||||
opacity:1,
|
||||
}}
|
||||
autoFocus={true}
|
||||
style={{ height: '150px' }}
|
||||
style={{ height: '170px' }}
|
||||
placeholder="添加评论..."
|
||||
options={options}
|
||||
value={this.stringJson(this.state.countvalue)}
|
||||
onContentChange={this.onContentChange}
|
||||
showUploadImage={this.handleShowImage}
|
||||
// onContentChange={handleContentChange}
|
||||
value={countvalue}
|
||||
onContentChange={this.onEditContentChange}
|
||||
// showUploadImage={this.handleShowImage}
|
||||
/>
|
||||
<p className="quillFlag">
|
||||
{ quillFlag && <span className="">请输入评论内容</span>}
|
||||
|
|
@ -538,8 +541,7 @@ class Detail extends Component{
|
|||
options={options}
|
||||
value={quillValue}
|
||||
onContentChange={this.onContentChange}
|
||||
showUploadImage={this.handleShowImage}
|
||||
// onContentChange={handleContentChange}
|
||||
// showUploadImage={this.handleShowImage}
|
||||
/>
|
||||
<p className="quillFlag">
|
||||
{ quillFlag && <span className="">请输入评论内容</span>}
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ class UpdateDetail extends Component{
|
|||
|
||||
onContentChange=(value)=>{
|
||||
this.setState({
|
||||
textcount:value
|
||||
textcount:JSON.stringify(value)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -174,12 +174,12 @@ class UpdateDetail extends Component{
|
|||
project_id:projectsId,
|
||||
subject:subject,
|
||||
id: orderId,
|
||||
description:JSON.stringify(textcount),
|
||||
description:textcount,
|
||||
attachment_ids:fileList,
|
||||
...values
|
||||
}).then(result=>{
|
||||
if(result){
|
||||
this.props.history.push(`/projects/${projectsId}/orders`);
|
||||
this.props.history.push(`/projects/${projectsId}/orders/${orderId}/detail`);
|
||||
}
|
||||
}).catch(error=>{
|
||||
console.log(error);
|
||||
|
|
|
|||
Loading…
Reference in New Issue