Merge branch 'develop' of http://git.trustie.net/jasder/forgeplus-react into develop

This commit is contained in:
caicai8 2020-03-24 15:40:27 +08:00
commit 20e32871d7
11 changed files with 345 additions and 244 deletions

View File

@ -2,9 +2,10 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="9830c5da-176a-4c72-a301-9f6ce98c82fe" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/forge/Main/Detail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Main/Detail.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/forge/Order/CopyDetail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Order/CopyDetail.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/forge/Order/Detail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Order/Detail.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/forge/Order/UpdateDetail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Order/UpdateDetail.js" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
@ -13,56 +14,25 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/forge/Order/order.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="231">
<caret line="23" column="19" selection-start-line="23" selection-start-column="19" selection-end-line="23" selection-end-column="19" />
<folding>
<element signature="e#0#42#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/forge/Order/Detail.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2342">
<caret line="436" column="13" selection-start-line="436" selection-start-column="13" selection-end-line="436" selection-end-column="13" />
<state relative-caret-position="215">
<caret line="392" column="46" lean-forward="true" selection-start-line="392" selection-start-column="46" selection-end-line="392" selection-end-column="46" />
<folding>
<element signature="e#0#40#0" expanded="true" />
<element signature="e#15286#16091#0" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js">
<entry file="file://$PROJECT_DIR$/src/forge/Main/Detail.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="166">
<caret line="58" column="29" selection-start-line="58" selection-start-column="29" selection-end-line="58" selection-end-column="29" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/forge/Main/CoderRootIndex.js">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#42#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/forge/Order/OrderItem.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="295">
<caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="25" />
<state relative-caret-position="363">
<caret line="501" lean-forward="true" selection-start-line="501" selection-end-line="501" />
<folding>
<element signature="e#0#42#0" expanded="true" />
</folding>
@ -77,10 +47,19 @@
<find>versions</find>
<find>缺陷</find>
<find>contents/file</find>
<find>新建翻转课堂</find>
<find>nHeader</find>
<find>点赞</find>
<find>Educoder</find>
<find>fork</find>
<find>isedit</find>
<find>.push(</find>
<find>QuillForEditor</find>
</findStrings>
<dirStrings>
<dir>$PROJECT_DIR$/src/forge</dir>
<dir>$PROJECT_DIR$/src</dir>
<dir>$PROJECT_DIR$</dir>
</dirStrings>
</component>
<component name="Git.Settings">
@ -90,11 +69,19 @@
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/AppConfig.js" />
<option value="$PROJECT_DIR$/src/forge/Order/Tags.js" />
<option value="$PROJECT_DIR$/src/forge/Version/NewVersion.js" />
<option value="$PROJECT_DIR$/src/forge/Order/newMilepost.js" />
<option value="$PROJECT_DIR$/src/forge/Order/Detail.js" />
<option value="$PROJECT_DIR$/src/forge/Index.js" />
<option value="$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js" />
<option value="$PROJECT_DIR$/src/forge/Order/Tags.js" />
<option value="$PROJECT_DIR$/src/forge/Order/Milepost.js" />
<option value="$PROJECT_DIR$/src/forge/Merge/merge.js" />
<option value="$PROJECT_DIR$/src/modules/tpm/NewHeader.js" />
<option value="$PROJECT_DIR$/src/forge/Order/New.js" />
<option value="$PROJECT_DIR$/src/forge/Main/Detail.js" />
<option value="$PROJECT_DIR$/src/forge/Order/Detail.js" />
<option value="$PROJECT_DIR$/src/forge/Order/UpdateDetail.js" />
<option value="$PROJECT_DIR$/src/forge/Order/CopyDetail.js" />
</list>
</option>
</component>
@ -130,7 +117,7 @@
<item name="forgeplus-react" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="forge" type="462c0819:PsiDirectoryNode" />
<item name="Main" type="462c0819:PsiDirectoryNode" />
<item name="Order" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
@ -171,25 +158,21 @@
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1584692398144</updated>
<workItem from="1584692401543" duration="5996000" />
<workItem from="1584692401543" duration="6228000" />
<workItem from="1585015135223" duration="11104000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="5996000" />
<option name="totallyTimeSpent" value="17332000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Favorites" side_tool="true" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24964234" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2532189" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" weight="0.47228914" />
<window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.49156627" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
@ -197,10 +180,15 @@
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Database" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" order="8" />
<window_info anchor="bottom" id="Version Control" order="9" weight="0.47228914" />
<window_info active="true" anchor="bottom" id="Terminal" order="10" visible="true" weight="0.32891566" />
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
<window_info anchor="right" id="Database" order="3" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
@ -236,25 +224,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/Milepost.js">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#40#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/Tags.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-3771">
<caret line="70" column="25" selection-start-line="70" selection-start-column="25" selection-end-line="70" selection-end-column="25" />
<folding>
<element signature="e#0#40#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/newMilepost.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="87">
@ -275,19 +244,9 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/OrderItem.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="295">
<caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="25" />
<folding>
<element signature="e#0#42#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/order.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="231">
<state relative-caret-position="221">
<caret line="23" column="19" selection-start-line="23" selection-start-column="19" selection-end-line="23" selection-end-column="19" />
<folding>
<element signature="e#0#42#0" expanded="true" />
@ -304,19 +263,115 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255">
<caret line="33" column="4" selection-start-line="33" selection-start-column="4" selection-end-line="33" selection-end-column="4" />
<folding>
<element signature="e#0#26#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/modules/home/shixunsHome.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-5268">
<folding>
<element signature="e#0#41#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="166">
<caret line="58" column="29" selection-start-line="58" selection-start-column="29" selection-end-line="58" selection-end-column="29" />
<state relative-caret-position="277">
<caret line="64" column="45" selection-start-line="64" selection-start-column="45" selection-end-line="64" selection-end-column="45" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Main/IndexItem.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="209">
<caret line="35" column="23" selection-start-line="35" selection-start-column="23" selection-end-line="35" selection-end-column="23" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Merge/merge.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270">
<caret line="276" column="20" selection-start-line="276" selection-start-column="20" selection-end-line="276" selection-end-column="20" />
<folding>
<element signature="e#0#42#0" expanded="true" />
<element signature="e#6583#7400#0" />
<element signature="e#7409#9273#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="11" selection-start-line="11" selection-end-line="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/Tags.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="319" column="18" selection-start-line="319" selection-start-column="18" selection-end-line="319" selection-end-column="18" />
<folding>
<element signature="e#0#40#0" expanded="true" />
<element signature="e#6599#6910#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/Milepost.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="172">
<caret line="280" column="38" selection-start-line="280" selection-start-column="38" selection-end-line="280" selection-end-column="38" />
<folding>
<element signature="e#0#40#0" expanded="true" />
<element signature="e#4332#4367#0" />
<element signature="e#4350#5226#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/OrderItem.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="25" />
<folding>
<element signature="e#0#42#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/modules/tpm/NewHeader.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="1089" column="31" selection-start-line="1089" selection-start-column="31" selection-end-line="1089" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Main/Detail.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="363">
<caret line="501" lean-forward="true" selection-start-line="501" selection-end-line="501" />
<folding>
<element signature="e#0#42#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/forge/Order/Detail.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2342">
<caret line="436" column="13" selection-start-line="436" selection-start-column="13" selection-end-line="436" selection-end-column="13" />
<state relative-caret-position="215">
<caret line="392" column="46" lean-forward="true" selection-start-line="392" selection-start-column="46" selection-end-line="392" selection-end-column="46" />
<folding>
<element signature="e#0#40#0" expanded="true" />
<element signature="e#15286#16091#0" />
</folding>
</state>
</provider>

View File

@ -57,12 +57,13 @@ class CoderRootFileDetail extends Component{
axios.delete(url,{
params:{
filepath:detail.path,
branch
branch,
sha:detail.sha
}
}).then(result=>{
if(result){
this.props.showNotification("删除成功!");
this.props.history.push(`/projects/${projectsId}/${authorLogin}`);
this.props.history.push(`/projects/${projectsId}`);
}
}).catch(error=>{
console.log(error);

View File

@ -1,5 +1,5 @@
import React , { Component } from 'react';
import { Link , Route , Switch } from 'react-router-dom';
import { Link , Route , Switch,withRouter } from 'react-router-dom';
import '../css/index.css'
import './list.css';
@ -124,6 +124,7 @@ const TrendsIndex = Loadable({
/**
* permissionManager:管理员Reporter报告人员(只有读取权限)Developer开发人员除不能设置仓库信息外
*/
class Detail extends Component{
constructor(props){
super(props);
@ -245,7 +246,8 @@ class Detail extends Component{
const url = `/projects/${project_id}/forks.json`;
axios.post(url).then(result=>{
if(result && result.data.status === 0){
this.props.history.push(`/projects/${result.data.identifier}/coders`);
this.props.history.push(`/projects/${result.data.id}/coders`);
this.props.showNotification(result.data.message);
}else{
this.props.showNotification(result.data.message);
}
@ -494,4 +496,4 @@ class Detail extends Component{
}
}
export default Detail;
export default withRouter(Detail);

View File

@ -250,62 +250,73 @@ class merge extends Component{
<div className="main">
<div className="topWrapper">
<Nav {...this.props} {...this.state}/>
<Link to={`/projects/${projectsId}/merge/new`} className="topWrapper_btn">创建合并请求</Link>
</div>
<div className="topWrapper" style={{borderBottom:"none"}}>
<p className="topWrapper_type">
<li className={openselect ? "active":""} onClick={()=>this.openorder(1)}>{data && data.open_count}个开启中</li>
<li className={closeselect ? "active":""} onClick={()=>this.openorder(2)}>{data && data.close_count}个已关闭</li>
{/* <span onClick={this.openorder} className={author_id ? "active":""}>{data && data.open_count}</span>
<span onClick={this.closeorder} className={author_id ? "active":""}>{data && data.close_count}个已关闭</span> */}
</p>
<div>
<Search
placeholder="搜索"
enterButton
onSearch={this.searchFunc}
style={{ width: 300 }}
/>
</div>
</div>
<Spin spinning={isSpin}>
<div className="f-wrap-between mb20">
<ul >
<li> </li>
</ul>
<ul className="topWrapper_select">
<li>
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_tag,'标签','issue_tag_id')} trigger={['click']} placement="bottomCenter">
<span>{this.state.issue_tag_ids}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
<li>
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_version,'里程碑','fixed_version_id')} trigger={['click']} placement="bottomCenter">
<span>{this.state.fixed_version_ids}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
<li>
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.assign_user,'指派人','assigned_to_id')} trigger={['click']} placement="bottomCenter">
<span>{this.state.assigned_to_ids}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
<li>
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
<span>{this.state.paix}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
</ul>
</div>
{
search_count === 0 ?
<NoneData></NoneData>
:
<OrderItem issues={issues} search_count={search_count} page={page} limit={limit} {...this.props} {...this.state}></OrderItem>
data && data.user_admin_or_member ?
<Link to={`/projects/${projectsId}/merge/new`} className="topWrapper_btn">创建合并请求</Link>
: ''
}
{ Paginations }
</Spin>
</div>
{
data && data.search_count && data.search_count > 0 ?
<div>
<div className="topWrapper" style={{borderBottom:"none"}}>
<p className="topWrapper_type">
<li className={openselect ? "active":""} onClick={()=>this.openorder(1)}>{data && data.open_count}个开启中</li>
<li className={closeselect ? "active":""} onClick={()=>this.openorder(2)}>{data && data.close_count}个已关闭</li>
{/* <span onClick={this.openorder} className={author_id ? "active":""}>{data && data.open_count}</span>
<span onClick={this.closeorder} className={author_id ? "active":""}>{data && data.close_count}个已关闭</span> */}
</p>
<div>
<Search
placeholder="搜索"
enterButton
onSearch={this.searchFunc}
style={{ width: 300 }}
/>
</div>
</div>
<Spin spinning={isSpin}>
<div className="f-wrap-between mb20">
<ul >
<li> </li>
</ul>
<ul className="topWrapper_select">
<li>
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_tag,'标签','issue_tag_id')} trigger={['click']} placement="bottomCenter">
<span>{this.state.issue_tag_ids}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
<li>
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_version,'里程碑','fixed_version_id')} trigger={['click']} placement="bottomCenter">
<span>{this.state.fixed_version_ids}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
<li>
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.assign_user,'指派人','assigned_to_id')} trigger={['click']} placement="bottomCenter">
<span>{this.state.assigned_to_ids}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
<li>
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
<span>{this.state.paix}<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
</ul>
</div>
{
search_count === 0 ?
<NoneData></NoneData>
:
<OrderItem issues={issues} search_count={search_count} page={page} limit={limit} {...this.props} {...this.state}></OrderItem>
}
{ Paginations }
</Spin>
</div>
:
<NoneData/>
}
</div>
)
}

View File

@ -225,9 +225,8 @@ class CopyDetail extends Component{
)}
</Form.Item>
<div className="quillContent" style={{marginBottom:"20px"}}>
<QuillForEditor
value = {textcount}
imgAttrs={{ width: '60px', height: '30px' }}
<QuillForEditor
setContents = {textcount}
wrapStyle={{
height: '220px',
opacity:1,

View File

@ -387,7 +387,26 @@ class Detail extends Component{
}
</div>
<div style={{display: (isedit && isedit === item.id) ? "block" : "none"}}>
<TextArea style={{height:"200px"}} value={this.state.countvalue} onChange={this.changmodelname}/>
<div className="quillContent">
<QuillForEditor
wrapStyle={{
height: '220px',
opacity:1,
}}
autoFocus={true}
style={{ height: '150px' }}
placeholder="添加评论..."
options={options}
setContents={this.state.countvalue}
onContentChange={this.onContentChange}
showUploadImage={this.handleShowImage}
// onContentChange={handleContentChange}
/>
<p className="quillFlag">
{ quillFlag && <span className="">请输入评论内容</span>}
</p>
</div>
{/*<TextArea style={{height:"200px"}} value={this.state.countvalue} onChange={this.changmodelname}/>*/}
<p className="clearfix mt15">
<a className="topWrapper_btn fr" type="submit" onClick={()=>this.updatedetail(item.id)}>保存</a>
<a className="a_btn cancel_btn fr" type="submit" onClick={()=>this.editdetail(item.content,undefined)}>取消</a>
@ -492,7 +511,7 @@ class Detail extends Component{
<div className="new_context">
<div className="quillContent">
<QuillForEditor
imgAttrs={{ width: '30px' }}
wrapStyle={{
height: '220px',
opacity:1,

View File

@ -172,12 +172,28 @@ class Milepost extends Component{
const renderList =()=>{
if(data && data.versions && data.versions.length>0 ){
return(
<div className="tagList">
{
data.versions.map((item,key)=>{
return(
<div style={{display:'block'}}>
<div className="milepostdiv">
<div>
<div className="topWrapper">
<div className="topWrapper_type">
<li className={openselect ? "active":""} onClick={()=>this.opneMilelist(1)}>{data && data.open_count}个开启中</li>
<li className={closeselect ? "active":""} onClick={()=>this.opneMilelist(2)}>{data && data.closed_count}个已关闭</li>
{/* <span onClick={this.opneMilelist}>{ data && data.open_count }</span>
<span onClick={this.closeMilelist}>{ data && data.closed_count }已关闭</span> */}
</div>
<ul className="topWrapper_select">
<li>
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
<span>排序<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
</ul>
</div>
<div className="tagList">
{
data.versions.map((item,key)=>{
return(
<div style={{display:'block'}}>
<div className="milepostdiv">
<div className="milepostwidth">
<div className="grid-item width100">
<i className="iconfont icon-lubiaosignpost3 font-12 mr3"></i>
@ -185,8 +201,8 @@ class Milepost extends Component{
</div>
</div>
</div>
<div className="milepostdiv" style={{marginTop:5}}>
</div>
<div className="milepostdiv" style={{marginTop:5}}>
<div className="milepostrighe">
<div className="grid-item mr10">
@ -212,43 +228,45 @@ class Milepost extends Component{
</span>
</div>
</div>
{
data && data.user_admin_or_member ?
<div className="milepostleft">
<div className="grid-item mr15 color-grey-9">
<i className="iconfont icon-bianji3 font-14 mr5"></i>
<Link to={`/projects/${projectsId}/orders/${item.id}/meilpost`} className="color-grey-9">编辑</Link>
</div>
<div className="grid-item mr15 color-grey-9">
<i className="iconfont icon-yiguanbi1 font-14 mr5"></i>
<a onClick={()=>this.updatestatusemile(this.state.status==="closed"?"open":"closed",item)} className="color-grey-9">{this.state.status==="closed"?"开启":"关闭"}</a>
</div>
<div className="grid-item mr15 color-grey-9">
<i className="iconfont icon-lajitong font-14 mr5" ></i>
<Popconfirm placement="bottom" title={'是否删除里程碑?'} okText="是" cancelText="否" onConfirm={()=>this.closemile(item)}>
<a className="color-grey-9">删除</a>
</Popconfirm>
</div>
{
data && data.user_admin_or_member ?
<div className="milepostleft">
<div className="grid-item mr15 color-grey-9">
<i className="iconfont icon-bianji3 font-14 mr5"></i>
<Link to={`/projects/${projectsId}/orders/${item.id}/meilpost`} className="color-grey-9">编辑</Link>
</div>
<div className="grid-item mr15 color-grey-9">
<i className="iconfont icon-yiguanbi1 font-14 mr5"></i>
<a onClick={()=>this.updatestatusemile(this.state.status==="closed"?"open":"closed",item)} className="color-grey-9">{this.state.status==="closed"?"开启":"关闭"}</a>
</div>
<div className="grid-item mr15 color-grey-9">
<i className="iconfont icon-lajitong font-14 mr5" ></i>
<Popconfirm placement="bottom" title={'是否删除里程碑?'} okText="是" cancelText="否" onConfirm={()=>this.closemile(item)}>
<a className="color-grey-9">删除</a>
</Popconfirm>
</div>
</div>
: ''
}
</div>
: ''
}
</div>
<div className="milepostdiv"style={{marginTop:5}}>
</div>
<div className="milepostdiv"style={{marginTop:5}}>
<div className="textwidth">
<Text
<Text
type="secondary"
ellipsis={{rows: 30, expandable: false, onExpand: Function}}
>
>
{item.description}</Text>
</div>
</div>
</div>
)
})
}
</div>
</div>
)
})
}
</div>
</div>
)
}else{
return(
@ -268,28 +286,13 @@ class Milepost extends Component{
: ''
}
</div>
<div style={{display: this.state.display}}>
<div className="tagdiv" >
<span>里程碑{ data && data.issue_tags_count }已创建</span>
</div>
</div>
<div className="topWrapper">
<div className="topWrapper_type">
<li className={openselect ? "active":""} onClick={()=>this.opneMilelist(1)}>{data && data.open_count}个开启中</li>
<li className={closeselect ? "active":""} onClick={()=>this.opneMilelist(2)}>{data && data.closed_count}个已关闭</li>
{/* <span onClick={this.opneMilelist}>{ data && data.open_count }</span>
<span onClick={this.closeMilelist}>{ data && data.closed_count }已关闭</span> */}
</div>
<ul className="topWrapper_select">
<li>
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
<span>排序<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
</ul>
</div>
{ renderList()}
{ Paginations }
</div>

View File

@ -163,7 +163,6 @@ class New extends Component{
<div className="quillContent" style={{marginBottom:"20px"}}>
<QuillForEditor
value = {description}
imgAttrs={{ width: '60px', height: '30px' }}
wrapStyle={{
height: '220px',
opacity:1,

View File

@ -280,33 +280,46 @@ class Tags extends Component{
const renderList =()=>{
if(data && data.issue_tags && data.issue_tags.length>0 ){
return(
<div className="tagList">
{
data.issue_tags.map((item,key)=>{
return(
<div>
<div>
<div className="topWrapper">
<span>{ data && data.issue_tags_count }个标签</span>
<ul className="topWrapper_select">
<li>
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
<span>标签<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
</ul>
</div>
<div className="tagList">
{
data.issue_tags.map((item,key)=>{
return(
<div>
<span className="width20 mr10">
<span style={{backgroundColor:`${item.color}`}} className="tagColor"></span>
{item.name}
</span>
<span className="hide-1 width50 mr10">{item.description}</span>
<span className="width15 mr10">{item.issues_count}个开启的工单</span>
{
data && data.user_admin_or_member ?
<div className="width15 text-right">
<a onClick={()=>this.editshow(item)} className="topWrapper_btn fr" >编辑</a>
<Popconfirm placement="bottom" title={'删除标签会将其从所有引用中删除。继续?'} okText="是" cancelText="否" onConfirm={()=>this.deletetag(item.id)}>
<a className="a_btn delete_btn fr" >删除</a>
</Popconfirm>
<span className="hide-1 width50 mr10">{item.description}</span>
<span className="width15 mr10">{item.issues_count}个开启的工单</span>
{
data && data.user_admin_or_member ?
<div className="width15 text-right">
<a onClick={()=>this.editshow(item)} className="topWrapper_btn fr" >编辑</a>
<Popconfirm placement="bottom" title={'删除标签会将其从所有引用中删除。继续?'} okText="是" cancelText="否" onConfirm={()=>this.deletetag(item.id)}>
<a className="a_btn delete_btn fr" >删除</a>
</Popconfirm>
</div>
: ''
}
</div>
)
})
}
</div>
: ''
}
</div>
)
})
}
</div>
</div>
)
}else{
return(
@ -378,16 +391,7 @@ class Tags extends Component{
</div>
<div className="topWrapper">
<span>{ data && data.issue_tags_count }个标签</span>
<ul className="topWrapper_select">
<li>
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
<span>标签<Icon type="caret-down" className="ml5" /></span>
</Dropdown>
</li>
</ul>
</div>
{ renderList() }
{ Paginations }
</div>

View File

@ -208,9 +208,8 @@ class UpdateDetail extends Component{
)}
</Form.Item>
<div className="quillContent" style={{marginBottom:"20px"}}>
<QuillForEditor
value = {textcount}
imgAttrs={{ width: '60px', height: '30px' }}
<QuillForEditor
setContents = {textcount}
wrapStyle={{
height: '220px',
opacity:1,

View File

@ -1079,13 +1079,15 @@ submittojoinclass=(value)=>{
{/*<li className={`${activeIndex === true ? 'active' : ''}`}><a href="/">首页</a></li>*/}
{/*<li><a href={this.props.Headertop===undefined?"":this.props.Headertop.shixun_paths_url}>实训路径</a></li>*/}
<li className={`${activePaths === true ? 'pr active' : 'pr'}`}>
<Link to={this.props.Headertop===undefined?"":'/paths'}>实践课程</Link>
</li>
<li className={`${activePaths === true ? 'pr active' : 'pr'}`}>
<Link to={'/projects'}>开源项目</Link>
</li>
{/*<li className={`${activePaths === true ? 'pr active' : 'pr'}`}>*/}
{/*<Link to={this.props.Headertop===undefined?"":'/paths'}>实践课程</Link>*/}
{/*</li>*/}
{/*<li><a href={this.props.Headertop===undefined?"":'/courses'}>课堂</a></li>*/}
<li className={`${coursestype === true ? 'pr active' : 'pr'}`}>
{/*<a href={this.props.Headertop===undefined?"":this.props.Headertop.course_url}>课堂</a>*/}
<Link to={this.props.Headertop===undefined?"":'/courses'}>翻转课堂</Link>
</li>
<li className={`${activeShixuns === true ? 'pr active' : 'pr'}`}>
@ -1280,7 +1282,14 @@ submittojoinclass=(value)=>{
{this.props.user&&this.props.user.main_site===true?"":this.props.Headertop===undefined?"":
pathstype===true?"":this.props.user&&this.props.user.admin===true||this.props.user&&this.props.user.is_teacher===true||this.props.user&&this.props.user.business===true?<li><a onClick={(url)=>this.getUser("/paths/new")} >新建实践课程</a></li>:""
}
{this.props.user&&this.props.user.main_site===true?<li><a onClick={(url)=>this.getUser("/projects/new","projects")} target="_blank">新建开发项目</a></li>:""}
{/*{this.props.user&&this.props.user.login?<li><a onClick={(url)=>this.getUser("/projects/new","projects")} target="_blank">新建开发项目</a></li>:""}*/}
{
this.props.user&&this.props.user.login?<li><Link to={"/projects/mirror/new"}>新建镜像项目</Link></li>:""
}
{
this.props.user&&this.props.user.login?<li><Link to={"/projects/deposit/new"}>新建托管项目</Link></li>:""
}
</ul>
{coursestypes===true&&this.props.user&&this.props.user.main_site===false?"":<ul className="fl with50 edu-txt-center">