Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_cs
cxt 5 years ago
commit d7d2903d4d

@ -6,6 +6,12 @@ json.results do
json.title highlights.delete(:name)&.join('...') || obj.searchable_title json.title highlights.delete(:name)&.join('...') || obj.searchable_title
# json.description highlights.values[0,5].each { |arr| arr.is_a?(Array) ? arr.join('...') : arr }.join('<br/>') # json.description highlights.values[0,5].each { |arr| arr.is_a?(Array) ? arr.join('...') : arr }.join('<br/>')
# 去除开头标点符号
reg = /^[,。?:;‘’!“”—……、]/
highlights[:description]&.first&.sub!(reg, '')
highlights[:content]&.first&.sub!(reg, '')
json.content highlights json.content highlights
end end
end end

@ -72,9 +72,8 @@ class AppraiseModal extends Component{
challenge_id:challenge_id challenge_id:challenge_id
}).then((response) => { }).then((response) => {
if(response.data.status===0){ if(response.data.status===0){
debugger this.props.showCancel(comment,hidden_comment,challenge_id,response.data.comment_id)
this.props.showNotification(response.data.message) this.props.showNotification(response.data.message)
this.props.showCancel(comment,hidden_comment,response.data.comment_id)
}else{ }else{
this.props.showNotification(response.data.message) this.props.showNotification(response.data.message)
} }

@ -0,0 +1,49 @@
.maxnamewidth100{
max-width: 100px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth110{
max-width: 100px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth200{
max-width: 200px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth145{
max-width: 145px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth215{
max-width: 215px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth255{
max-width: 255px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth175{
max-width: 175px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}

@ -241,7 +241,7 @@ class Bullsubdirectory extends Component{
<div> <div>
<span className="fr yslbianji" style={{marginRight:"17px"}}> <span className="fr yslbianji" style={{marginRight:"17px"}}>
{ {
this.props.isClassManagement() === true ? this.props.isAdmin() === true ?
(this.props.yslbool===false? (this.props.yslbool===false?
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
编辑 编辑
@ -256,7 +256,7 @@ class Bullsubdirectory extends Component{
</span> </span>
<span className="fr yslbianji" style={{marginRight:"22px"}}> <span className="fr yslbianji" style={{marginRight:"22px"}}>
{ {
this.props.isClassManagement() === true ? this.props.isAdmin() === true ?
(this.props.yslbool===false? (this.props.yslbool===false?
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
删除 删除

@ -231,7 +231,7 @@ class Eduinforms extends Component{
<p style={{height: '20px'}}> <p style={{height: '20px'}}>
<span className="font-18 fl color-dark-21">公告栏</span> <span className="font-18 fl color-dark-21">公告栏</span>
{ {
this.props.isClassManagement()===true? this.props.isAdmin()===true?
(this.state.yslbool===false? (this.state.yslbool===false?
<li className="btn colorblue font-16 fr bluebkbk pointer" <li className="btn colorblue font-16 fr bluebkbk pointer"
onClick={() => this.bianji(true)}> onClick={() => this.bianji(true)}>

@ -188,17 +188,16 @@ class ShixunWorkReport extends Component {
showAppraiseModaltype:false, showAppraiseModaltype:false,
}) })
} }
showAppraiseModals=(show,hidden,id)=>{ showAppraiseModals=(show,hidden,id,comment_id)=>{
let{data,showAppraisetype}=this.state; let{data,showAppraisetype}=this.state;
if(showAppraisetype==="child"){ if(showAppraisetype==="child"){
data.stage_list.forEach((item,key)=>{ data.stage_list.forEach((item,key)=>{
if(item.challenge_id===id){ if(item.challenge_id===id){
item.challenge_comment=show; item.challenge_comment=show;
item.challenge_comment_hidden=hidden; item.challenge_comment_hidden=hidden;
item.challenge_id=id; item.comment_id=comment_id
} }
}) })
this.setState({ this.setState({
@ -206,7 +205,7 @@ class ShixunWorkReport extends Component {
data:data data:data
}) })
}else{ }else{
data.comment_id=id data.comment_id=comment_id;
this.setState({ this.setState({
showAppraiseModaltype:false, showAppraiseModaltype:false,
work_comment:show, work_comment:show,
@ -216,11 +215,14 @@ class ShixunWorkReport extends Component {
} }
} }
isdeleteModal=(comment_id,visible_comment)=>{ isdeleteModal=(comment_id,visible_comment,type)=>{
let newcomment_id=comment_id;
let newvisible_comment=visible_comment;
let newtype=type;
this.setState({ this.setState({
modalsType: true, modalsType: true,
modalsTopval:"是否确认删除?", modalsTopval:"是否确认删除?",
modalSave: ()=>this.isdeleteModals(comment_id,visible_comment), modalSave: ()=>this.isdeleteModals(newcomment_id,newvisible_comment,newtype),
modalCancel:()=>this.hideisdeleteModals(), modalCancel:()=>this.hideisdeleteModals(),
}) })
} }
@ -235,20 +237,22 @@ class ShixunWorkReport extends Component {
} }
hideisdeleteModal=(comment_id,visible_comment)=>{ hideisdeleteModal=(comment_id,visible_comment,type)=>{
let{data,work_comment,work_comment_hidden,showAppraisetype}=this.state; let{data,work_comment,work_comment_hidden}=this.state;
if(showAppraisetype==="child"){
data.stage_list.forEach((item,key)=>{ if(type==="child"){
if(item.comment_id===comment_id){ data.stage_list.map((item,key)=>{
if(visible_comment===true){ console.log(item)
if(item.comment_id!=null){
if(item.comment_id===comment_id){
item.challenge_comment=null; item.challenge_comment=null;
}else{
item.challenge_comment_hidden=null; item.challenge_comment_hidden=null;
} }
} }
}) })
this.setState({ this.setState({
modalsType:false, modalsType:false,
modalsTopval:"是否确认删除?", modalsTopval:"是否确认删除?",
@ -256,47 +260,45 @@ class ShixunWorkReport extends Component {
modalCancel:"", modalCancel:"",
data:data data:data
}) })
}else{ }else{
if(visible_comment===true){
this.setState({
modalsType:false,
modalsTopval:"是否确认删除?",
modalSave: "",
modalCancel:"",
work_comment:visible_comment===true?null:work_comment,
})
}else{
this.setState({ this.setState({
modalsType:false, modalsType:false,
modalsTopval:"是否确认删除?", modalsTopval:"是否确认删除?",
modalSave: "", modalSave: "",
modalCancel:"", modalCancel:"",
work_comment_hidden:visible_comment===false?null:work_comment_hidden work_comment:null,
work_comment_hidden:null
}) })
}
} }
} }
isdeleteModals=(comment_id,visible_comment)=>{ isdeleteModals=(comment_id,visible_comment,type)=>{
let url =`/student_works/${this.props.match.params.homeworkid}/destroy_work_comment.json` let newcomment_id=comment_id;
axios.delete(url, { data: { let newvisible_comment=visible_comment;
comment_id:comment_id, let newtype=type;
visible_comment:visible_comment if(comment_id!=null){
}}).then((response) => { let url =`/student_works/${this.props.match.params.homeworkid}/destroy_work_comment.json`
// const { status } = response.data; axios.delete(url, { data: {
if(response.data.status===0){ comment_id:comment_id,
this.props.showNotification(response.data.message) }}).then((response) => {
// const { status } = response.data;
this.hideisdeleteModal(comment_id,visible_comment) if(response.data.status===0){
}else{ this.props.showNotification(response.data.message)
this.props.showNotification(response.data.message) this.hideisdeleteModal(newcomment_id,newvisible_comment,newtype)
} }else{
}) this.props.showNotification(response.data.message)
.catch(function (error) { }
console.log(error); })
}); .catch(function (error) {
console.log(error);
});
}
} }
render() { render() {
let{data,showAppraiseModaltype,work_comment_hidden,work_comment} =this.state; let{data,showAppraiseModaltype,work_comment_hidden,work_comment} =this.state;
@ -308,9 +310,7 @@ class ShixunWorkReport extends Component {
// let showAppraiseModals=this.props&&this.props.isAdminOrTeacher()===true?work_comment===null||work_comment===undefined?false:true:work_comment===null||work_comment===undefined?false:true; // let showAppraiseModals=this.props&&this.props.isAdminOrTeacher()===true?work_comment===null||work_comment===undefined?false:true:work_comment===null||work_comment===undefined?false:true;
let showAppraiseModals=work_comment===null||work_comment===undefined?false:true; let showAppraiseModals=work_comment===null||work_comment===undefined?false:true;
console.log(data)
console.log(work_comment_hidden)
console.log(work_comment)
return ( return (
data===undefined?"":<Spin indicator={antIcon} spinning={this.state.spinning}> data===undefined?"":<Spin indicator={antIcon} spinning={this.state.spinning}>
@ -329,7 +329,7 @@ class ShixunWorkReport extends Component {
{...this.state} {...this.state}
visible={showAppraiseModaltype} visible={showAppraiseModaltype}
Cancel={()=>this.hideAppraiseModal()} Cancel={()=>this.hideAppraiseModal()}
showCancel={(show,hidden,id)=>this.showAppraiseModals(show,hidden,id)} showCancel={(show,hidden,id,comment_id)=>this.showAppraiseModals(show,hidden,id,comment_id)}
work_comment={this.state.work_comment} work_comment={this.state.work_comment}
work_type={work_comment===null||work_comment===undefined?this.state.work_type:work_comment_hidden===true?1:0} work_type={work_comment===null||work_comment===undefined?this.state.work_type:work_comment_hidden===true?1:0}
/>:""} />:""}
@ -551,7 +551,7 @@ class ShixunWorkReport extends Component {
<ShowAppraiseList <ShowAppraiseList
{...this.props} {...this.props}
{...this.state} {...this.state}
isdeleteModal={(comment_id,visible_comment)=>this.isdeleteModal(comment_id,visible_comment)} isdeleteModal={(comment_id,visible_comment,type)=>this.isdeleteModal(comment_id,visible_comment,type)}
showAppraiseModal={(type,id,show,hidden)=>this.showAppraiseModal(type,id,show,hidden)} showAppraiseModal={(type,id,show,hidden)=>this.showAppraiseModal(type,id,show,hidden)}
/> />

@ -2,6 +2,7 @@ import React,{ Component } from "react";
import { Modal,Checkbox,Upload,Button,Icon,message,Input,Radio} from "antd"; import { Modal,Checkbox,Upload,Button,Icon,message,Input,Radio} from "antd";
import { WordNumberTextarea,markdownToHTML } from 'educoder'; import { WordNumberTextarea,markdownToHTML } from 'educoder';
import axios from 'axios'; import axios from 'axios';
import './style.css';
class ShowAppraiseList extends Component{ class ShowAppraiseList extends Component{
constructor(props){ constructor(props){
@ -11,16 +12,12 @@ class ShowAppraiseList extends Component{
} }
} }
componentDidMount() {
}
render(){ render(){
let {data,work_comment,work_comment_hidden}=this.props; let {data, work_comment,work_comment_hidden}=this.props;
console.log(data) let work_commenttype=work_comment===undefined||work_comment===null||work_comment==="";
let work_comment_hiddentype=work_comment===undefined||work_comment===null||work_comment==="";
return( return(
<div> <div>
<style> <style>
@ -38,123 +35,124 @@ class ShowAppraiseList extends Component{
text-align: center; text-align: center;
line-height: 22px; line-height: 22px;
} }
.markdown-body{
padding-bottom: 10px;
}
.borderbom{
margin-bottom: 15px;
border-bottom: 2px solid #fafafa;
}
` `
} }
</style> </style>
{data===undefined?"":work_comment===undefined||work_comment===null||work_comment===""?"": {data===undefined?"":work_commenttype===true&&work_comment_hiddentype===true?"":
<div className="stud-class-set mt17"> <div className="stud-class-set mt17">
<div className="clearfix edu-back-white poll_list"> <div className="clearfix edu-back-white poll_list">
<div className="font-16 color-dark-21 shixunreporttitleboxtop pd20 color333"> <div className="font-16 color-dark-21 shixunreporttitleboxtop pd20 color333">
<span className={"appraisebox"}>总体评阅</span> <span className={"appraisebox"}>总体评阅</span>
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr ml20" {this.props&&this.props.isAdmin()===true?<a className="color-blue font-14 fr ml20"
onClick={()=>this.props.isdeleteModal(data.comment_id,true)} onClick={()=>this.props.isdeleteModal(data.comment_id,true,"main")}
>删除</a>:""} >删除</a>:""}
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr" {this.props&&this.props.isAdmin()===true?<a className="color-blue font-14 fr"
onClick={()=>this.props.showAppraiseModal("main",undefined,work_comment,work_comment_hidden)} onClick={()=>this.props.showAppraiseModal("main",undefined,work_comment,work_comment_hidden)}
>编辑</a>:""} >编辑</a>:""}
</div> </div>
<div className="font-16 color-dark-21 shixunreporttitleboxbom pd30"> {this.props&&this.props.isAdmin()===true?
<div style={{minHeight:'50px'}}> <div className="font-16 color-dark-21 shixunreporttitleboxbom pd30bt">
<div className={"personalsummary"}> <div>
<div className={"markdown-body"} <span className={"z000"}>学生可见<span className={"z666"}>学生可查看老师的评阅内容</span></span>
dangerouslySetInnerHTML={{__html: markdownToHTML(work_comment).replace(/▁/g, "▁▁▁")}}></div> </div>
<div className={"borderbom"} style={{minHeight:'40px'}}>
{work_comment===true?"":<div className={"personalsummary"}>
<div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(work_comment).replace(/▁/g, "▁▁▁")}}></div>
</div>}
</div> </div>
</div>
</div>
</div>
</div>}
{data===undefined?"":work_comment_hidden===undefined||work_comment_hidden===null||work_comment_hidden===""?"":this.props&&this.props.isAdminOrTeacher()===true?
<div className="stud-class-set mt17">
<div className="clearfix edu-back-white poll_list">
<div className="font-16 color-dark-21 shixunreporttitleboxtop pd20 color333">
<span className={"appraisebox"}>总体评阅</span><span></span>
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr ml20"
onClick={()=>this.props.isdeleteModal(data.comment_id,false)}
>删除</a>:""}
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr" <div>
onClick={()=>this.props.showAppraiseModal("main",undefined,work_comment,work_comment_hidden)} <span className={"z000"}>学生不可见<span className={"z666"}>仅对课堂老师可见</span></span>
>编辑</a>:""} </div>
<div style={{minHeight:'40px'}}>
{work_comment_hidden===true?"":<div className={"personalsummary"}>
<div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(work_comment_hidden).replace(/▁/g, "▁▁▁")}}></div>
</div>}
</div>
</div>
<div className="font-16 color-dark-21 shixunreporttitleboxbom pd30"> </div>:<div className="font-16 color-dark-21 shixunreporttitleboxbom pd30">
<div style={{minHeight:'50px'}}> <div style={{minHeight:'40px'}}>
<div className={"personalsummary"}> <div className={"personalsummary"}>
<div className={"markdown-body"} <div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(work_comment_hidden).replace(/▁/g, "▁▁▁")}}></div> dangerouslySetInnerHTML={{__html: markdownToHTML(work_comment).replace(/▁/g, "▁▁▁")}}></div>
</div> </div>
</div> </div>
</div> </div>}
</div> </div>
</div>:""} </div>}
{data===undefined?"":data.stage_list.map((item,key)=>{ {data===undefined?"":data.stage_list.map((item,key)=>{
let challenge_comment_hidden=item.challenge_comment_hidden===undefined||item.challenge_comment_hidden===null||item.challenge_comment_hidden===""; let challenge_comment_hidden=item.challenge_comment_hidden===undefined||item.challenge_comment_hidden===null||item.challenge_comment_hidden==="";
let challenge_comment=item.challenge_comment===undefined||item.challenge_comment===null||item.challenge_comment===""; let challenge_comment=item.challenge_comment===undefined||item.challenge_comment===null||item.challenge_comment==="";
return( return(
<div> <div key={key}>
{challenge_comment===false?<div className="stud-class-set mt17" key={key}> {challenge_comment===false&&challenge_comment_hidden==false?<div className="stud-class-set mt17" >
<div className="clearfix edu-back-white poll_list"> <div className="clearfix edu-back-white poll_list">
<div className="font-16 color-dark-21 shixunreporttitleboxtop pd20 color333"> <div className="font-16 color-dark-21 shixunreporttitleboxtop pd20 color333">
<span className={"appraisebox"}>{key+1}</span> <span className={"appraisebox"}>{key+1}</span>{item.name}
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr ml20" {this.props&&this.props.isAdmin()===true?<a className="color-blue font-14 fr ml20"
onClick={()=>this.props.isdeleteModal(item.comment_id,true)} onClick={()=>this.props.isdeleteModal(item.comment_id,true,"child")}
>删除</a>:""} >删除</a>:""}
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr" {this.props&&this.props.isAdmin()===true?<a className="color-blue font-14 fr"
onClick={()=>this.props.showAppraiseModal("child",item.challenge_id,item.challenge_comment,item.challenge_comment_hidden)} onClick={()=>this.props.showAppraiseModal("child",item.challenge_id,item.challenge_comment,item.challenge_comment_hidden)}
>编辑</a>:""} >编辑</a>:""}
</div> </div>
<div className="font-16 color-dark-21 shixunreporttitleboxbom pd30">
<div style={{minHeight:'50px'}}>
<div className={"personalsummary"}>
<div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(item.challenge_comment).replace(/▁/g, "▁▁▁")}}></div>
</div>
</div>
</div>
</div> {this.props&&this.props.isAdmin()===true?
</div>:""} <div className="font-16 color-dark-21 shixunreporttitleboxbom pd30bt">
<div>
<span className={"z000"}>学生可见<span className={"z666"}>学生可查看老师的评阅内容</span></span>
{challenge_comment_hidden===false&&this.props&&this.props.isAdminOrTeacher()===true?<div className="stud-class-set mt17" key={key}> </div>
<div className="clearfix edu-back-white poll_list"> <div className={"borderbom"} style={{minHeight:'40px'}}>
<div className="font-16 color-dark-21 shixunreporttitleboxtop pd20 color333"> {challenge_comment===true?"":<div className={"personalsummary"}>
<span className={"appraisebox"}>{key+1}</span><span></span> <div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(item.challenge_comment).replace(/▁/g, "▁▁▁")}}></div>
</div>}
</div>
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr ml20" <div>
onClick={()=>this.props.isdeleteModal(item.comment_id,false)} <span className={"z000"}>学生不可见<span className={"z666"}>仅对课堂老师可见</span></span>
>删除</a>:""} </div>
<div style={{minHeight:'40px'}}>
{challenge_comment_hidden===true?"":<div className={"personalsummary"}>
<div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(item.challenge_comment_hidden).replace(/▁/g, "▁▁▁")}}></div>
</div>}
</div>
{this.props&&this.props.isAdminOrTeacher()===true?<a className="color-blue font-14 fr" </div>: <div className="font-16 color-dark-21 shixunreporttitleboxbom pd30">
onClick={()=>this.props.showAppraiseModal("child",item.challenge_id,item.challenge_comment,item.challenge_comment_hidden)} <div style={{minHeight:'40px'}}>
>编辑</a>:""} <div className={"personalsummary"}>
</div> <div className={"markdown-body"}
<div className="font-16 color-dark-21 shixunreporttitleboxbom pd30"> dangerouslySetInnerHTML={{__html: markdownToHTML(item.challenge_comment).replace(/▁/g, "▁▁▁")}}></div>
<div style={{minHeight:'50px'}}> </div>
<div className={"personalsummary"}>
<div className={"markdown-body"}
dangerouslySetInnerHTML={{__html: markdownToHTML(item.challenge_comment_hidden).replace(/▁/g, "▁▁▁")}}></div>
</div> </div>
</div> </div>}
</div>
</div> </div>
</div>:""} </div>:""}

@ -38,13 +38,34 @@
.TopicDetailTable .bottomBody li:last-child{border-bottom: none;} .TopicDetailTable .bottomBody li:last-child{border-bottom: none;}
.maxnamewidth100{ .maxnamewidth100{
max-width: 145px; max-width: 100px;
overflow:hidden; overflow:hidden;
text-overflow:ellipsis; text-overflow:ellipsis;
white-space:nowrap; white-space:nowrap;
cursor: default; cursor: default;
} }
.maxnamewidth110{ .maxnamewidth110{
max-width: 100px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth200{
max-width: 200px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth145{
max-width: 145px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}
.maxnamewidth145{
max-width: 145px; max-width: 145px;
overflow:hidden; overflow:hidden;
text-overflow:ellipsis; text-overflow:ellipsis;
@ -54,3 +75,16 @@
.ysyslxh{ .ysyslxh{
background: #fafafa; background: #fafafa;
} }
.z666{
color: #666;
font-size:14px;
}
.z000{
color: #000;
font-size:16px;
}
.pd30bt{
padding: 10px 30px 0px 30px;
}

@ -144,6 +144,11 @@ class VNCContainer extends Component {
.codeEvaluateDrawer .ant-drawer-body { .codeEvaluateDrawer .ant-drawer-body {
padding: 0px; padding: 0px;
} }
.codeEvaluateDrawer .ant-drawer-content-wrapper, .codeEvaluateDrawer .ant-drawer-mask {
position: absolute;
}
.codeEvaluateFloatButton { .codeEvaluateFloatButton {
bottom: 180px !important; bottom: 180px !important;
left: unset; left: unset;
@ -211,7 +216,7 @@ class VNCContainer extends Component {
mask={true} mask={true}
title="" title=""
width={firstDrawerWidth} width={firstDrawerWidth}
// closable={false} closable={false}
onClose={this.onBottomDrawerClose} onClose={this.onBottomDrawerClose}
visible={this.state.bottomDrawer} visible={this.state.bottomDrawer}
className={'codeEvaluateDrawer'} className={'codeEvaluateDrawer'}

Loading…
Cancel
Save