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

dev_unstable
杨树明 6 years ago
commit 6df73b3058

@ -172,7 +172,7 @@ class AttachmentsController < ApplicationController
# 课堂资源、作业、毕设相关资源的权限判断 # 课堂资源、作业、毕设相关资源的权限判断
if @file.container.is_a?(Course) if @file.container.is_a?(Course)
course = @file.container course = @file.container
candown = current_user.member_of_course?(course) || @file.is_public == 1 candown = current_user.member_of_course?(course) || (course.is_public? && @file.publiced?)
elsif @file.container.is_a?(HomeworkCommon) || @file.container.is_a?(GraduationTask) || @file.container.is_a?(GraduationTopic) elsif @file.container.is_a?(HomeworkCommon) || @file.container.is_a?(GraduationTask) || @file.container.is_a?(GraduationTopic)
course = @file.container&.course course = @file.container&.course
candown = current_user.member_of_course?(course) candown = current_user.member_of_course?(course)

@ -339,10 +339,11 @@ class ExerciseQuestionsController < ApplicationController
@exercise_question.exercise_shixun_challenges.each_with_index do |challenge, index| @exercise_question.exercise_shixun_challenges.each_with_index do |challenge, index|
challenge.question_score = params[:question_scores][index].to_f.round(1) challenge.question_score = params[:question_scores][index].to_f.round(1)
challenge.save challenge.save
question_score += challenge.question_score question_score += params[:question_scores][index].to_f.round(1)
end end
@exercise_question.question_score = question_score @exercise_question.question_score = question_score
@exercise_question.shixun_name = shixun_name @exercise_question.shixun_name = shixun_name
@exercise_question.save
end end
#当试卷已发布时(试卷的总状态),当标准答案修改时,如有已提交的学生,需重新计算分数. #当试卷已发布时(试卷的总状态),当标准答案修改时,如有已提交的学生,需重新计算分数.

@ -26,6 +26,12 @@ class Users::BaseController < ApplicationController
render_forbidden render_forbidden
end end
def require_teacher!
return if current_user.admin_or_business? || observed_user.is_teacher?
render_forbidden
end
def require_auth_teacher! def require_auth_teacher!
return if current_user.admin_or_business? || observed_user.certification_teacher? return if current_user.admin_or_business? || observed_user.certification_teacher?

@ -1,5 +1,6 @@
class Users::VideosController < Users::BaseController class Users::VideosController < Users::BaseController
before_action :private_user_resources!, :check_account before_action :private_user_resources!, :check_account
before_action :require_teacher!
before_action :require_auth_teacher!, except: [:index, :review] before_action :require_auth_teacher!, except: [:index, :review]
helper_method :current_video helper_method :current_video

@ -10,7 +10,15 @@ module AliyunVod::Service::Base
Rails.logger.info("[AliyunVod] response => status: #{response.status}, result: #{result}") Rails.logger.info("[AliyunVod] response => status: #{response.status}, result: #{result}")
raise AliyunVod::Error, result['Code'] if response.status != 200 if response.status != 200
message =
case result['Code']
when 'InvalidFileName.Extension' then '不支持的视频格式'
when 'IllegalCharacters' then '视频名称包含非法字符'
else raise AliyunVod::Error, result['Message']
end
raise AliyunVod::Error, message if message.present?
end
result result
rescue => ex rescue => ex

@ -16,15 +16,6 @@ module AliyunVod::Service::VideoUpload
result = request(:post, params) result = request(:post, params)
if result['Code'].present?
message =
case result['Code']
when 'InvalidFileName.Extension' then '不支持的文件格式'
when 'IllegalCharacters' then '文件名称包含非法字符'
end
raise AliyunVod::Error, message if message.present?
end
raise AliyunVod::Error, '获取上传凭证失败' if result['UploadAddress'].blank? raise AliyunVod::Error, '获取上传凭证失败' if result['UploadAddress'].blank?
result result

@ -21,7 +21,14 @@ class Videos::CreateAuthService < ApplicationService
private private
def title def title
@_title ||= params.delete(:title).to_s.strip @_title ||= begin
str = params.delete(:title).to_s.strip
if str.length > 30
"#{str[0, 15]}...#{str.reverse[0,10].reverse}"
else
str
end
end
end end
def filename def filename

@ -13,6 +13,7 @@ class Videos::DispatchCallbackService < ApplicationService
case params['EventType'] case params['EventType']
when 'FileUploadComplete' then # 视频上传完成 when 'FileUploadComplete' then # 视频上传完成
video.file_url = params['FileUrl'] video.file_url = params['FileUrl']
video.filesize = params['Size']
video.upload_success video.upload_success
video.save! video.save!
when 'SnapshotComplete' then # 封面截图完成 when 'SnapshotComplete' then # 封面截图完成

@ -0,0 +1,5 @@
class AddFilesizeToVideos < ActiveRecord::Migration[5.2]
def change
add_column :videos, :filesize, :integer, default: 0
end
end

@ -0,0 +1,33 @@
import React,{ Component } from "react";
class AttachmentsList extends Component{
constructor(props){
super(props);
}
render(){
let { attachments } = this.props;
return(
<React.Fragment>
{
attachments.map((item,key)=>{
return(
<p key={key}>
<a className="color-grey">
<i className="font-14 color-green iconfont icon-fujian mr8"></i>
</a>
{
item.is_pdf && item.is_pdf == true ?
<a href={item.url} className="mr12" length="58" target="_blank">{item.title}</a>
:
<a href={item.url} className="mr12" length="58">{item.title}</a>
}
<span className="color-grey mt2 color-grey-6 font-12">{item.filesize}</span>
</p>
)
})
}
</React.Fragment>
)
}
}
export default AttachmentsList;

@ -30,6 +30,9 @@ export { trace_collapse, trace, debug, info, warn, error, trace_c, debug_c, info
export { EDU_ADMIN, EDU_BUSINESS, EDU_SHIXUN_MANAGER, EDU_SHIXUN_MEMBER, EDU_CERTIFICATION_TEACHER export { EDU_ADMIN, EDU_BUSINESS, EDU_SHIXUN_MANAGER, EDU_SHIXUN_MEMBER, EDU_CERTIFICATION_TEACHER
, EDU_GAME_MANAGER, EDU_TEACHER, EDU_NORMAL} from './Const' , EDU_GAME_MANAGER, EDU_TEACHER, EDU_NORMAL} from './Const'
export { default as AttachmentList } from './components/attachment/AttachmentList'
export { themes, ThemeContext } from './context/ThemeContext' export { themes, ThemeContext } from './context/ThemeContext'
export { ModalHOC } from './components/ModalHOC' export { ModalHOC } from './components/ModalHOC'

@ -45,6 +45,7 @@ class Studentshavecompletedthelist extends Component {
teacherlist: undefined, teacherlist: undefined,
searchtext: "", searchtext: "",
Teacherliststudentlist: undefined, Teacherliststudentlist: undefined,
mylistansum:0,
review: null, review: null,
course_groupysls: undefined, course_groupysls: undefined,
nocomment: false, nocomment: false,
@ -109,17 +110,17 @@ class Studentshavecompletedthelist extends Component {
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> : }}>--</span> :
record.stduynumber === record.stduynumber ===
"" ? "" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> : }}>--</span> :
<span style={{ <span style={{
"color": '#9A9A9A', "color": '#9A9A9A',
"text-align": "center" "text-align": "center"
}}>{record.stduynumber}</span> }}>{record.stduynumber}</span>
} }
</span> </span>
@ -132,23 +133,23 @@ class Studentshavecompletedthelist extends Component {
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
width:"260px", width:"260px",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.classroom === null ? {record.classroom === null ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> : }}>--</span> :
record.classroom === record.classroom ===
"" ? "" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> : }}>--</span> :
<span style={{ <span style={{
"color": '#07111B', "color": '#07111B',
"text-align": "center" "text-align": "center"
}}>{record.classroom}</span> }}>{record.classroom}</span>
} }
</span> </span>
@ -159,16 +160,16 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'submitstate', dataIndex: 'submitstate',
key: 'submitstate', key: 'submitstate',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
<span style={record.submitstate === "未提交" ? { <span style={record.submitstate === "未提交" ? {
"color": '#999999', "color": '#999999',
"text-align": "center", "text-align": "center",
} : record.submitstate === "已提交" ? {"color": '#29BD8B', "text-align": "center"} : { } : record.submitstate === "已提交" ? {"color": '#29BD8B', "text-align": "center"} : {
"color": '#29BD8B', "color": '#29BD8B',
"text-align": "center", "text-align": "center",
}}>{record.submitstate}</span> }}>{record.submitstate}</span>
</span> </span>
) )
@ -179,7 +180,7 @@ class Studentshavecompletedthelist extends Component {
key: 'updatetime', key: 'updatetime',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.updatetime === "--" ? {record.updatetime === "--" ?
<span style={{"color": '#999999', "text-align": "center" }}>{record.updatetime}</span> <span style={{"color": '#999999', "text-align": "center" }}>{record.updatetime}</span>
@ -195,30 +196,30 @@ class Studentshavecompletedthelist extends Component {
key: 'completion', key: 'completion',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> { <span> {
record.completion === "--" ? record.completion === "--" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}> }}>
{record.completion} {record.completion}
</span> </span>
: :
<span style={parseInt(record.completion) > 90 ? { <span style={parseInt(record.completion) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
} : parseInt(record.completion) <= 90 ? { } : parseInt(record.completion) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center" "text-align": "center"
} : parseInt(record.completion) <= 60 ? { } : parseInt(record.completion) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
} : } :
{ {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
}}>{record.completion}</span> }}>{record.completion}</span>
} }
</span> </span>
@ -229,27 +230,27 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'levelscore', dataIndex: 'levelscore',
key: 'levelscore', key: 'levelscore',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.levelscore === "--" ? {record.levelscore === "--" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}> }}>
{record.levelscore} {record.levelscore}
</span> </span>
: :
<span style={parseInt(record.levelscore) > 90 ? { <span style={parseInt(record.levelscore) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
} : parseInt(record.levelscore) <= 90 ? { } : parseInt(record.levelscore) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center" "text-align": "center"
} : parseInt(record.levelscore) <= 60 ? { } : parseInt(record.levelscore) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
} : {"color": '#747A7F', "text-align": "center"}}>{record.levelscore}</span> } : {"color": '#747A7F', "text-align": "center"}}>{record.levelscore}</span>
} }
</span> </span>
) )
@ -259,34 +260,34 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'efficiencyscore', dataIndex: 'efficiencyscore',
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.efficiencyscore === "--" ? {record.efficiencyscore === "--" ?
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
<div>未评分</div> <div>未评分</div>
</div>}> </div>}>
<a style={{ <a style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}> }}>
{record.efficiencyscore} {record.efficiencyscore}
</a> </a>
</Tooltip> </Tooltip>
: :
<span style={parseInt(record.efficiencyscore) > 90 ? { <span style={parseInt(record.efficiencyscore) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
} : parseInt(record.efficiencyscore) <= 90 ? { } : parseInt(record.efficiencyscore) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center" "text-align": "center"
} : parseInt(record.efficiencyscore) <= 60 ? { } : parseInt(record.efficiencyscore) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center", "text-align": "center",
} : { } : {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
}}>{record.efficiencyscore}</span> }}>{record.efficiencyscore}</span>
} }
</span> </span>
) )
@ -298,7 +299,7 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'number', dataIndex: 'number',
key: 'number', key: 'number',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{ {
@ -318,7 +319,7 @@ class Studentshavecompletedthelist extends Component {
key: 'name', key: 'name',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{ {
record.name === "--" ? record.name === "--" ?
@ -336,24 +337,24 @@ class Studentshavecompletedthelist extends Component {
key: 'stduynumber', key: 'stduynumber',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.stduynumber === null ? {record.stduynumber === null ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> }}>--</span>
: :
record.stduynumber === "" ? record.stduynumber === "" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> }}>--</span>
: :
<span style={{ <span style={{
"color": '#9A9A9A', "color": '#9A9A9A',
"text-align": "center" "text-align": "center"
}}>{record.stduynumber}</span> }}>{record.stduynumber}</span>
} }
</span> </span>
@ -366,22 +367,22 @@ class Studentshavecompletedthelist extends Component {
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
width:"260px", width:"260px",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.classroom === null ? {record.classroom === null ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span>: record.classroom === "" ? }}>--</span>: record.classroom === "" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span>: }}>--</span>:
<span tyle={{ <span tyle={{
"color": '#07111B', "color": '#07111B',
"text-align": "center" "text-align": "center"
}}>{record.classroom}</span> }}>{record.classroom}</span>
} }
</span> </span>
) )
@ -391,16 +392,16 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'submitstate', dataIndex: 'submitstate',
key: 'submitstate', key: 'submitstate',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
<span style={record.submitstate === "未提交" ? { <span style={record.submitstate === "未提交" ? {
"color": '#999999', "color": '#999999',
"text-align": "center", "text-align": "center",
} : record.submitstate === "已提交" ? {"color": '#29BD8B', "text-align": "center"} : { } : record.submitstate === "已提交" ? {"color": '#29BD8B', "text-align": "center"} : {
"color": '#29BD8B', "color": '#29BD8B',
"text-align": "center", "text-align": "center",
}}>{record.submitstate}</span> }}>{record.submitstate}</span>
</span> </span>
) )
@ -411,7 +412,7 @@ class Studentshavecompletedthelist extends Component {
key: 'updatetime', key: 'updatetime',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.updatetime === "--"? {record.updatetime === "--"?
<span style={{"color": '#999999', "text-align": "center", }}>--</span> <span style={{"color": '#999999', "text-align": "center", }}>--</span>
@ -427,13 +428,13 @@ class Studentshavecompletedthelist extends Component {
key: 'completion', key: 'completion',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.completion === "--" ? {record.completion === "--" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}> }}>
-- --
</span> </span>
@ -441,16 +442,16 @@ class Studentshavecompletedthelist extends Component {
<span style={parseInt(record.completion) > 90 ? { <span style={parseInt(record.completion) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
} : parseInt(record.completion) <= 90 ? { } : parseInt(record.completion) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center" "text-align": "center"
} : parseInt(record.completion) <= 60 ? { } : parseInt(record.completion) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
} : { } : {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
}}>{record.completion}</span> }}>{record.completion}</span>
} }
</span> </span>
) )
@ -460,27 +461,27 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'levelscore', dataIndex: 'levelscore',
key: 'levelscore', key: 'levelscore',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.levelscore === "--"? {record.levelscore === "--"?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}> }}>
-- --
</span> </span>
: :
<span style={parseInt(record.levelscore) > 90 ? { <span style={parseInt(record.levelscore) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
} : parseInt(record.levelscore) <= 90 ? { } : parseInt(record.levelscore) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center" "text-align": "center"
} : parseInt(record.levelscore) <= 60 ? { } : parseInt(record.levelscore) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
} : {"color": '#747A7F', "text-align": "center"}}>{record.levelscore}</span> } : {"color": '#747A7F', "text-align": "center"}}>{record.levelscore}</span>
} }
</span> </span>
) )
@ -490,7 +491,7 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'efficiencyscore', dataIndex: 'efficiencyscore',
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
className: "edu-txt-center tabletd font-14", className: "edu-txt-center tabletd font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{ {
@ -498,25 +499,25 @@ class Studentshavecompletedthelist extends Component {
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
<div>未评分</div> <div>未评分</div>
</div>}> </div>}>
<a style={{ <a style={{
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
}}>--</a> }}>--</a>
</Tooltip> </Tooltip>
: :
<span style={parseInt(record.efficiencyscore) > 90 ? { <span style={parseInt(record.efficiencyscore) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center" "text-align": "center"
} : parseInt(record.efficiencyscore) <= 90 ? { } : parseInt(record.efficiencyscore) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center" "text-align": "center"
} : parseInt(record.efficiencyscore) <= 60 ? { } : parseInt(record.efficiencyscore) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center", "text-align": "center",
} : { } : {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center" "text-align": "center"
}}>{record.efficiencyscore}</span> }}>{record.efficiencyscore}</span>
} }
</span> </span>
@ -536,7 +537,7 @@ class Studentshavecompletedthelist extends Component {
record.number=== "--"? record.number=== "--"?
<span style={{"color": '#999999', "text-align": "center"}}>--</span> <span style={{"color": '#999999', "text-align": "center"}}>--</span>
: :
<span style={{"color": '#07111B', "text-align": "center"}}>{record.number}</span> <span style={{"color": '#07111B', "text-align": "center"}}>{record.number}</span>
} }
</span> </span>
@ -569,20 +570,20 @@ class Studentshavecompletedthelist extends Component {
<span> <span>
{record.stduynumber === null ? {record.stduynumber === null ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> }}>--</span>
: record.stduynumber === "" ? : record.stduynumber === "" ?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center" "text-align": "center"
}}>--</span> }}>--</span>
: :
<span style={{ <span style={{
"color": '#9A9A9A', "color": '#9A9A9A',
"text-align": "center" "text-align": "center"
}}>{record.stduynumber}</span> }}>{record.stduynumber}</span>
} }
</span> </span>
), ),
@ -609,7 +610,7 @@ class Studentshavecompletedthelist extends Component {
"color": '#07111B', "color": '#07111B',
"text-align": "center" "text-align": "center"
}}>{record.classroom}</span> }}>{record.classroom}</span>
} }
</span> </span>
) )
@ -662,10 +663,10 @@ class Studentshavecompletedthelist extends Component {
<span> <span>
{ {
record.completion === "--"? record.completion === "--"?
<span style={{ <span style={{
"color": '#999999', "color": '#999999',
"text-align": "center", "text-align": "center",
}}>--</span> }}>--</span>
: :
<span style={parseInt(record.completion) > 90 ? { <span style={parseInt(record.completion) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
@ -727,12 +728,12 @@ class Studentshavecompletedthelist extends Component {
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
<div>未评分</div> <div>未评分</div>
</div>}> </div>}>
<a style={{ <a style={{
"color": '#999999', "color": '#999999',
"text-align": "center", "text-align": "center",
}}>--</a> }}>--</a>
</Tooltip> </Tooltip>
: :
<span style={parseInt(record.efficiencyscore) > 90 ? { <span style={parseInt(record.efficiencyscore) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center", "text-align": "center",
@ -763,9 +764,9 @@ class Studentshavecompletedthelist extends Component {
:record.submitstate === "未提交"? :record.submitstate === "未提交"?
<span style={{"text-align": "center","color": '#999999',}}>--</span> <span style={{"text-align": "center","color": '#999999',}}>--</span>
: :
<a style={{"text-align": "center"}} className="color-blue" <a style={{"text-align": "center"}} className="color-blue"
href={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${record.myid}`}>{record.operating}</a> href={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${record.myid}`}>{record.operating}</a>
} }
</span> </span>
) )
@ -785,7 +786,7 @@ class Studentshavecompletedthelist extends Component {
key: 'number', key: 'number',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.number === "--" ? {record.number === "--" ?
<span style={{"color": '#999999', "text-align": "center"}}>--</span> <span style={{"color": '#999999', "text-align": "center"}}>--</span>
@ -801,7 +802,7 @@ class Studentshavecompletedthelist extends Component {
key: 'name', key: 'name',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.name==="--"? {record.name==="--"?
<span style={{"color": '#999999', "text-align": "center"}}>{record.name}</span> <span style={{"color": '#999999', "text-align": "center"}}>{record.name}</span>
@ -817,12 +818,12 @@ class Studentshavecompletedthelist extends Component {
key: 'stduynumber', key: 'stduynumber',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.stduynumber === "--" ? {record.stduynumber === "--" ?
<span style={{"color": '#999999', "text-align": "center"}}>{record.stduynumber}</span> <span style={{"color": '#999999', "text-align": "center"}}>{record.stduynumber}</span>
: :
<span style={{"color": '#9A9A9A', "text-align": "center"}}>{record.stduynumber}</span> <span style={{"color": '#9A9A9A', "text-align": "center"}}>{record.stduynumber}</span>
} }
</span> </span>
), ),
@ -850,7 +851,7 @@ class Studentshavecompletedthelist extends Component {
key: 'submitstate', key: 'submitstate',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
<span style={record.submitstate === "未提交" ? { <span style={record.submitstate === "未提交" ? {
"color": '#999999', "color": '#999999',
@ -869,7 +870,7 @@ class Studentshavecompletedthelist extends Component {
dataIndex: 'updatetime', dataIndex: 'updatetime',
key: 'updatetime', key: 'updatetime',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.updatetime==="--"? {record.updatetime==="--"?
@ -886,7 +887,7 @@ class Studentshavecompletedthelist extends Component {
key: 'completion', key: 'completion',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.completion=== "--"? {record.completion=== "--"?
<span style={{"color": '#999999', "text-align": "center"}}>--</span> <span style={{"color": '#999999', "text-align": "center"}}>--</span>
@ -902,7 +903,7 @@ class Studentshavecompletedthelist extends Component {
key: 'levelscore', key: 'levelscore',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.levelscore==="--"? {record.levelscore==="--"?
<span style={{"color": '#999999', "text-align": "center"}}>--</span> <span style={{"color": '#999999', "text-align": "center"}}>--</span>
@ -918,30 +919,30 @@ class Studentshavecompletedthelist extends Component {
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.efficiencyscore === "--" ? {record.efficiencyscore === "--" ?
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
<div>未评分</div> <div>未评分</div>
</div>}> </div>}>
<a style={{"color": '#999999', <a style={{"color": '#999999',
"text-align": "center",}}>--</a> "text-align": "center",}}>--</a>
</Tooltip> </Tooltip>
: :
<span style={parseInt(record.efficiencyscore) > 90 ? { <span style={parseInt(record.efficiencyscore) > 90 ? {
"color": '#DD1717', "color": '#DD1717',
"text-align": "center", "text-align": "center",
} : parseInt(record.efficiencyscore) <= 90 ? { } : parseInt(record.efficiencyscore) <= 90 ? {
"color": '#FF6800', "color": '#FF6800',
"text-align": "center", "text-align": "center",
} : parseInt(record.efficiencyscore) <= 60 ? { } : parseInt(record.efficiencyscore) <= 60 ? {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center", "text-align": "center",
} : { } : {
"color": '#747A7F', "color": '#747A7F',
"text-align": "center", "text-align": "center",
}}>{record.efficiencyscore}</span> }}>{record.efficiencyscore}</span>
} }
</span> </span>
) )
}, },
@ -951,7 +952,7 @@ class Studentshavecompletedthelist extends Component {
key: 'finalscore', key: 'finalscore',
align: 'center', align: 'center',
className: "edu-txt-center font-14", className: "edu-txt-center font-14",
render: (text, record) => ( render: (text, record) => (
<span> <span>
{record.finalscore==="--"? {record.finalscore==="--"?
<span style={{"text-align": "center","color": '#999999'}} <span style={{"text-align": "center","color": '#999999'}}
@ -959,9 +960,9 @@ class Studentshavecompletedthelist extends Component {
:record.submitstate === "未提交"? :record.submitstate === "未提交"?
<span style={{"text-align": "center","color": '#999999'}} <span style={{"text-align": "center","color": '#999999'}}
>--</span> >--</span>
: :
<a style={{"text-align": "center"}} className="color-blue" <a style={{"text-align": "center"}} className="color-blue"
href={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${record.myid}`}>{record.finalscore}</a> href={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${record.myid}`}>{record.finalscore}</a>
} }
</span> </span>
@ -1114,8 +1115,8 @@ class Studentshavecompletedthelist extends Component {
<Tooltip placement="bottom" title={<div> <Tooltip placement="bottom" title={<div>
<div>未评分</div> <div>未评分</div>
</div>}> </div>}>
<a style={{"color": '#999999', <a style={{"color": '#999999',
"text-align": "center",}}>--</a> "text-align": "center",}}>--</a>
</Tooltip> </Tooltip>
: :
<span style={parseInt(record.efficiencyscore) > 90 ? { <span style={parseInt(record.efficiencyscore) > 90 ? {
@ -1149,9 +1150,9 @@ class Studentshavecompletedthelist extends Component {
:record.submitstate === "未提交"? :record.submitstate === "未提交"?
<span style={{"text-align": "center","color": '#999999'}} <span style={{"text-align": "center","color": '#999999'}}
>--</span> >--</span>
: :
<a style={{"text-align": "center"}} className="color-blue" <a style={{"text-align": "center"}} className="color-blue"
href={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${record.myid}`}>{record.finalscore}</a> href={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${record.myid}`}>{record.finalscore}</a>
} }
</span> </span>
@ -1252,6 +1253,7 @@ class Studentshavecompletedthelist extends Component {
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
current_answer_user: response.data.current_answer_user, current_answer_user: response.data.current_answer_user,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users
}) })
if (response.data.current_answer_user === undefined || response.data.current_answer_user === null) { if (response.data.current_answer_user === undefined || response.data.current_answer_user === null) {
// 学生未截止 // 学生未截止
@ -1389,7 +1391,7 @@ class Studentshavecompletedthelist extends Component {
loadingstate: true, loadingstate: true,
}) })
} }
console.log(response); console.log(response);
console.log(1393); console.log(1393);
thiss.Generatenewdatasy(response.data.exercise_users, response); thiss.Generatenewdatasy(response.data.exercise_users, response);
} }
@ -1622,6 +1624,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
current_answer_user: response.data.current_answer_user, current_answer_user: response.data.current_answer_user,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
}) })
if (response.data.exercise_types.subjective === 0) { if (response.data.exercise_types.subjective === 0) {
@ -1756,6 +1759,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
loadingstate: false, loadingstate: false,
columnsys: arr, columnsys: arr,
}) })
@ -1788,6 +1792,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
columnsys: arr, columnsys: arr,
}) })
} }
@ -1799,7 +1804,7 @@ class Studentshavecompletedthelist extends Component {
//显示分班 //显示分班
//8ge //8ge
var arr =[]; var arr =[];
for(var i=0;i<this.state.columnsys.length;i++){ for(var i=0;i<this.state.columnsys.length;i++){
var item = this.state.columnsys[i]; var item = this.state.columnsys[i];
if(item.title==="客观题得分"){ if(item.title==="客观题得分"){
@ -1823,6 +1828,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
loadingstate: false, loadingstate: false,
columnsys: arr, columnsys: arr,
}) })
@ -1854,6 +1860,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
loadingstate: false, loadingstate: false,
columnsys: arr, columnsys: arr,
}) })
@ -1885,6 +1892,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
columnsys: arr, columnsys: arr,
}) })
} else { } else {
@ -1909,6 +1917,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
columnsys:arr, columnsys:arr,
}) })
} }
@ -1923,6 +1932,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
loadingstate: false, loadingstate: false,
columnsys: this.state.columnsystwo, columnsys: this.state.columnsystwo,
}) })
@ -1948,6 +1958,7 @@ class Studentshavecompletedthelist extends Component {
commit_status: response.data.commit_status, commit_status: response.data.commit_status,
exercise_users: response.data.exercise_users, exercise_users: response.data.exercise_users,
course_groups: response.data.course_groups, course_groups: response.data.course_groups,
mylistansum:response.data.exercise_types.answer_users+response.data.exercise_types.unanswer_users,
loadingstate: false, loadingstate: false,
columnsys: arr, columnsys: arr,
}) })
@ -2401,7 +2412,7 @@ class Studentshavecompletedthelist extends Component {
render() { render() {
const isAdmin = this.props.isAdmin(); const isAdmin = this.props.isAdmin();
let {data, datas, page, columns, course_groupyslsthree, columnstwo, styletable, course_groupyslstwodatas, limit, course_groupysls, course_groupyslstwodata, course_groupyslstwo, teacherlists, Teacherliststudentlist, order, columnss, course_groupsdatas, course_groups, Evaluationarray, unlimited, unlimiteds, unlimitedtwo, teacherlist, searchtext, loadingstate, review, nocomment, commented, unsubmitted, submitted, columnsys, exercise_users} = this.state; let {data, datas, page, columns, course_groupyslsthree, columnstwo, styletable, course_groupyslstwodatas, limit, course_groupysls, course_groupyslstwodata, course_groupyslstwo, teacherlists, Teacherliststudentlist, order, columnss, course_groupsdatas, course_groups, Evaluationarray, unlimited, unlimiteds, unlimitedtwo, teacherlist, searchtext, loadingstate, review, nocomment, commented, unsubmitted, submitted, columnsys, exercise_users,mylistansum} = this.state;
// console.log("Studentshavecompletedthelist"); // console.log("Studentshavecompletedthelist");
// console.log(this.props.current_status); // console.log(this.props.current_status);
return ( return (
@ -2789,11 +2800,11 @@ class Studentshavecompletedthelist extends Component {
</div> </div>
{ {
Teacherliststudentlist && Teacherliststudentlist.exercise_types.total_users && Teacherliststudentlist.exercise_types.total_users > limit ? mylistansum && mylistansum > limit ?
<div className="edu-txt-center mt30 mb20"> <div className="edu-txt-center mt30 mb20">
<Pagination showQuickJumper current={page} <Pagination showQuickJumper current={page}
onChange={this.paginationonChanges} pageSize={limit} onChange={this.paginationonChanges} pageSize={limit}
total={Teacherliststudentlist.exercise_types.total_users}></Pagination> total={mylistansum}></Pagination>
</div> </div>
: "" : ""
} }

@ -413,8 +413,8 @@ class Testpapersettinghomepage extends Component{
<a className="fr color-blue font-16 mt20" onClick={()=>this.setgameexercise(`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${this.props.current_user.login}`)}>开始答题</a>: <a className="fr color-blue font-16 mt20" onClick={()=>this.setgameexercise(`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${this.props.current_user.login}`)}>开始答题</a>:
<Link className="fr color-blue font-16 mt20" <Link className="fr color-blue font-16 mt20"
to={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${this.props.current_user.login}`}> to={`/courses/${this.props.match.params.coursesId}/exercises/${this.props.match.params.Id}/users/${this.props.current_user.login}`}>
{start_Value[Commonheadofthetestpaper&&Commonheadofthetestpaper.user_permission.current_status]} {Commonheadofthetestpaper && Commonheadofthetestpaper.exercise_status===3?"":Commonheadofthetestpaper && Commonheadofthetestpaper.exercise_status===4?"":start_Value[Commonheadofthetestpaper&&Commonheadofthetestpaper.user_permission.current_status]}
</Link> </Link>
:""} :""}
</div> </div>

@ -206,7 +206,9 @@ class PollDetailIndex extends Component{
{ {
user_permission && user_permission.current_status!=3 ? user_permission && user_permission.current_status!=3 ?
<WordsBtn style="blue" to={`/courses/${this.props.match.params.coursesId}/polls/${this.props.match.params.pollId}/users/${this.props.current_user.login}`}> <WordsBtn style="blue" to={`/courses/${this.props.match.params.coursesId}/polls/${this.props.match.params.pollId}/users/${this.props.current_user.login}`}>
{ user_permission && user_permission.current_status ==0 ? "继续答题" : user_permission.current_status == 1 ? "查看答题" : "开始答题" } { user_permission && user_permission.current_status ==0 ? "继续答题" : user_permission.current_status == 1 ?
(pollDetail && pollDetail.polls_status===3?"":pollDetail && pollDetail.polls_status===4?"":"查看答题")
: "开始答题" }
</WordsBtn> </WordsBtn>
:"" :""
} }

@ -5,70 +5,70 @@ import "../css/Courses.css";
import CoursesMarkdown from "../coursesPublic/CoursesMarkdown"; import CoursesMarkdown from "../coursesPublic/CoursesMarkdown";
import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor'; import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor';
import { import {
Form, Icon, Input, Button, Checkbox,message, Form, Icon, Input, Button, Checkbox,message,
} from "antd"; } from "antd";
import {WordsBtn} from 'educoder'; import {WordsBtn} from 'educoder';
//引入对应跳转的组件 //引入对应跳转的组件
import axios from 'axios'; import axios from 'axios';
//提交总结 //提交总结
class CommitSummary extends Component{ class CommitSummary extends Component{
constructor(props) { constructor(props) {
super(props) super(props)
this.state = { this.state = {
contents: [{val:"",id:1}], contents: [{val:"",id:1}],
course_id:0, course_id:0,
course_name:"", course_name:"",
category:[], category:[],
homework_id:0, homework_id:0,
user_name:"", user_name:"",
work_id:0, work_id:0,
description:"", description:"",
data:undefined, data:undefined,
cancels:false, cancels:false,
}
}
componentDidMount() {
this.Getsubmissionsummaryinterface();
let query = this.props.location.pathname;
const type = query.split('/');
this.setState({
shixuntypes:type[3]
})
} }
}
componentDidMount() {
this.Getsubmissionsummaryinterface();
let query = this.props.location.pathname;
const type = query.split('/');
this.setState({
shixuntypes:type[3]
})
}
//获取提交总结接口
Getsubmissionsummaryinterface=()=>{ //获取提交总结接口
var worksid=this.props.match.params.id; Getsubmissionsummaryinterface=()=>{
// console.log("Getsubmissionsummaryinterface"); var worksid=this.props.match.params.id;
// console.log(this.props.match.params); // console.log("Getsubmissionsummaryinterface");
// console.log(worksid); // console.log(this.props.match.params);
var url = `/student_works/${worksid}/commit_des.json`; // console.log(worksid);
axios.get(url).then((result) => { var url = `/student_works/${worksid}/commit_des.json`;
// console.log(result); axios.get(url).then((result) => {
if (result.status === 200) { // console.log(result);
// console.log(url) if (result.status === 200) {
// console.log("提交总结接口") // console.log(url)
// console.log(JSON.stringify(result)) // console.log("提交总结接口")
this.setState({ // console.log(JSON.stringify(result))
data:result.data, this.setState({
description: result.data.description, data:result.data,
cancels:true, description: result.data.description,
}) cancels:true,
}else {
this.props.showNotification(result.data.message);
}
}).catch((error) => {
console.log(error)
}) })
} }else {
this.props.showNotification(result.data.message);
submitCommitSummary=()=> { }
const mdContnet = this.refs[`md${1}`].getValue().trim(); }).catch((error) => {
console.log(mdContnet) console.log(error)
})
}
submitCommitSummary=()=> {
const mdContnet = this.refs[`md${1}`].getValue().trim();
console.log(mdContnet)
} }
gotohome=()=>{ gotohome=()=>{
// let courseId=this.props.match.params.coursesId; // let courseId=this.props.match.params.coursesId;
@ -77,126 +77,146 @@ class CommitSummary extends Component{
// }else{ // }else{
// this.props.history.push(this.props.current_user.first_category_url); // this.props.history.push(this.props.current_user.first_category_url);
// } // }
this.props.history.goBack() this.props.history.goBack()
} }
asdasdsad=()=>{ asdasdsad=()=>{
this.setState({ this.setState({
contents:"" contents:""
}) })
} }
handleSubmit=(e) => { handleSubmit=(e) => {
e.preventDefault(); e.preventDefault();
this.props.form.validateFields((err, values) => { this.props.form.validateFields((err, values) => {
if (!err) { if (!err) {
console.log(values.description); console.log(values.description);
if(values.description === undefined|| values.description === "" || values.description ===null){ if(values.description === undefined|| values.description === "" || values.description ===null){
this.props.showNotification(`请输入提交内容`); this.props.showNotification(`请输入提交内容`);
return return
} }
var worksid=this.props.match.params.id; var worksid=this.props.match.params.id;
var url = `/student_works/${worksid}/update_des.json`; var url = `/student_works/${worksid}/update_des.json`;
axios.post(url,{ axios.post(url,{
description:values.description, description:values.description,
}).then((result) => { }).then((result) => {
if (result.status === 200) { if (result.status === 200) {
// console.log(url) // console.log(url)
// console.log("提交总结接口") // console.log("提交总结接口")
// console.log(JSON.stringify(result)) // console.log(JSON.stringify(result))
// message.success(result.data.message); // message.success(result.data.message);
// 这里以前是学生 // 这里以前是学生
this.props.history.push(`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${this.props.match.params.homeworkid}/list?tab=0`); this.props.history.push(`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${this.props.match.params.homeworkid}/list?tab=0`);
} }
}).catch((error) => { }).catch((error) => {
console.log(error) console.log(error)
}) })
} }
}); });
} }
render() {
const {getFieldDecorator} = this.props.form;
let {contents,data}=this.state;
// console.log(this.props);
return (
<div>
<div className="newMain clearfix">
{/*<Form onSubmit={this.handleSubmit}>*/}
<div className={"educontent mb20"}>
<div style={{
width:'100%',
height:'20px'
}} >
<div className="educontent mb30">
<p className="clearfix mb20 mt10 ">
<a className="btn colorgrey fl hovercolorblue " onClick={()=>this.gotohome()}>{data === undefined ? "" :data.course_name===undefined?"": data.course_name}</a>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>
{/* style="grey" */}
<a
className="btn colorgrey fl hovercolorblue ">{data === undefined ? "" :data.category===undefined?"":data.category.category_name}</a>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>
<a className="fl">作业详情</a>
</p>
</div>
render() { </div>
const {getFieldDecorator} = this.props.form; <div className="mt20">
let {contents,data}=this.state; <p className=" fl color-black mt10 summaryname" onClick={this.asdasdsad}>{this.state.description ? '修改总结' : '提交总结'}</p>
// console.log(this.props); <a onClick={()=>this.gotohome()} className="color-grey-6 fr font-16 ml30 mt10">返回</a>
return ( </div>
<div> {/*educontentbox*/}
<div className="newMain clearfix"> <div className="stud-class-set pt40 pb40">
{/*<Form onSubmit={this.handleSubmit}>*/}
<div className={"educontent mb20"}> <div className={"mt10"}>
<div style={{ <div style={{ "background": "#fff", "padding": "15px"}}>
width:'100%',
height:'20px'
}} >
<div className="educontent mb30">
<p className="clearfix mb20 mt10 ">
<a className="btn colorgrey fl hovercolorblue " onClick={()=>this.gotohome()}>{data === undefined ? "" :data.course_name===undefined?"": data.course_name}</a>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>
{/* style="grey" */}
<a
className="btn colorgrey fl hovercolorblue ">{data === undefined ? "" :data.category===undefined?"":data.category.category_name}</a>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>
<a className="fl">作业详情</a>
</p>
</div>
</div>
<div>
<p className=" fl color-black mt10 summaryname" onClick={this.asdasdsad}>{this.state.description ? '修改总结' : '提交总结'}</p>
<a onClick={()=>this.gotohome()} className="color-grey-6 fr font-16 ml30 mt10">返回</a>
</div>
{/*educontentbox*/}
<div className="stud-class-set pt40 pb40">
<div className={"mt10"}>
<div style={{ "background": "#fff", "padding": "15px"}}>
<span className="commitcontentsysl"> <span className="commitcontentsysl">
<span className="color-red">*</span> <span className="color-red">*</span>
内容</span> 内容</span>
</div> </div>
<div className="new-wrap"> <div className="new-wrap">
<Form layout='vertical' onSubmit={this.handleSubmit} > <Form layout='vertical' onSubmit={this.handleSubmit} >
<Form.Item <Form.Item
> >
<div style={{ "background": "#fff","padding-bottom":"20px","padding-left":"20px","padding-right":"20px"}} <div style={{ "background": "#fff","padding-bottom":"20px","padding-left":"20px","padding-right":"20px"}}
className="mdInForm"> className="mdInForm">
{getFieldDecorator('description', { {getFieldDecorator('description', {
rules: [{ rules: [{
required: true, message: '请在此输入总结内容,最多5000个字符', required: true, message: '请在此输入总结内容,最多5000个字符',
}, { }, {
max: 5000, message: '最大限制为5000个字符', max: 5000, message: '最大限制为5000个字符',
}], }],
})( })(
<TPMMDEditor ref={this.mdRef} placeholder={'请在此输入总结内容最多5000个字符'} <TPMMDEditor ref={this.mdRef} placeholder={'请在此输入总结内容最多5000个字符'}
mdID={'courseMessageMD'} initValue={this.state.description} className="courseMessageMD"></TPMMDEditor> mdID={'courseMessageMD'} initValue={this.state.description} className="courseMessageMD"></TPMMDEditor>
)} )}
</div> </div>
</Form.Item> </Form.Item>
<style>
<Form.Item> {
<div className="clearfix mt40 mb30"> `
<Button type="primary" htmlType="submit" className="defalutSubmitbtn fl mr20" > .ant-form-item {
提交 -webkit-box-sizing: border-box;
</Button> box-sizing: border-box;
<a className="defalutCancelbtn fl" href={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${this.props.match.params.homeworkid}/list?tab=0`}>取消</a> margin: 0;
</div> padding: 0;
</Form.Item> color: rgba(0, 0, 0, 0.65);
</Form> font-size: 14px;
</div> font-variant: tabular-nums;
</div> line-height: 1.5;
list-style: none;
-webkit-font-feature-settings: 'tnum';
font-feature-settings: 'tnum';
/* margin-bottom: 24px; */
vertical-align: top;
}
`
}
</style>
<Form.Item>
<div className="clearfix mt40 mb30">
<Button type="primary" htmlType="submit" className="defalutSubmitbtn fl mr20" >
提交
</Button>
<a className="defalutCancelbtn fl" href={`/courses/${this.props.match.params.coursesId}/${this.state.shixuntypes}/${this.props.match.params.homeworkid}/list?tab=0`}>取消</a>
</div>
</Form.Item>
</Form>
</div>
</div>
</div>
</div>
{/*</Form>*/}
</div>
</div> </div>
)
} </div>
{/*</Form>*/}
</div>
</div>
)
}
} }
const GraduationTasksnewApp = Form.create({ name: 'coursesNew' })(CommitSummary); const GraduationTasksnewApp = Form.create({ name: 'coursesNew' })(CommitSummary);
export default GraduationTasksnewApp; export default GraduationTasksnewApp;

@ -132,7 +132,7 @@ class ShixunHomeworkPage extends Component {
<div className="newMain clearfix "> <div className="newMain clearfix ">
<div className={"educontent mt20 mb20"} style={{width: "1200px"}}> <div className={"educontent mt10 mb20"} style={{width: "1200px"}}>
<div className="educontent mb20"> <div className="educontent mb20">
<p className="clearfix mb20 mt10"> <p className="clearfix mb20 mt10">

@ -2,13 +2,15 @@ import React,{ Component } from "react";
import './css/moopCases.css' import './css/moopCases.css'
import '../courses/css/Courses.css' import '../courses/css/Courses.css'
import { getImageUrl , MarkdownToHtml , ActionBtn } from 'educoder'; import { getImageUrl , MarkdownToHtml , ActionBtn , AttachmentList } from 'educoder';
import Tags from './CaseTags' import Tags from './CaseTags'
import axios from 'axios'; import axios from 'axios';
import Modals from '../modals/Modals' import Modals from '../modals/Modals'
// import AttachmentList from '../../common/components/attachment/AttachmentList'
class CaseDetail extends Component{ class CaseDetail extends Component{
constructor(props){ constructor(props){
super(props); super(props);
@ -65,110 +67,103 @@ class CaseDetail extends Component{
} = this.state; } = this.state;
return( return(
<div className="educontent mt10 mb50"> <div className="educontent mt10 mb50">
<Modals {
modalsType={modalsType} CaseDetail &&
modalsTopval={modalsTopval} <React.Fragment>
modalsBottomval={modalsBottomval} <Modals
modalCancel={this.cancelDelClasses} modalsType={modalsType}
modalSave={this.sureDelClasses} modalsTopval={modalsTopval}
> modalsBottomval={modalsBottomval}
</Modals> modalCancel={this.cancelDelClasses}
<p className="mt10 mb20 clearfix lineh-20"> modalSave={this.sureDelClasses}
<a href="/moop_cases" className="color-grey-9">教学案例</a> &gt; <span className="color-grey-3">{ CaseDetail && CaseDetail.title}</span> >
</p> </Modals>
<p className="lineh-25 mb20 clearfix"> <p className="mt10 mb20 clearfix lineh-20">
<span className="font-22 fl mr10 task-hide" style={{maxWidth:"800px"}}> <a href="/moop_cases" className="color-grey-9">教学案例</a> &gt; <span className="color-grey-3">{ CaseDetail.title}</span>
{ CaseDetail && CaseDetail.title} </p>
</span> <p className="lineh-25 mb20 clearfix">
<span className="mt5 fl"> <span className="font-22 fl mr10 task-hide" style={{maxWidth:"800px"}}>
<Tags tags={tags}></Tags> { CaseDetail.title}
{ </span>
CaseDetail && CaseDetail.status == "pending" && <span class="edu-filter-btn fl cdefault edu-activity-green ml10">草稿</span> <span className="mt5 fl">
} <Tags tags={tags}></Tags>
{ {
CaseDetail && CaseDetail.status == "processing" && <span class="edu-filter-btn fl cdefault edu-activity-green ml10">审核中</span> CaseDetail.status == "pending" && <span class="edu-filter-btn fl cdefault edu-activity-green ml10">草稿</span>
} }
{ {
CaseDetail && CaseDetail.status == "refused" && <span class="edu-filter-btn fl cdefault edu-activity-orange ml10">未通过</span> CaseDetail.status == "processing" && <span class="edu-filter-btn fl cdefault edu-activity-green ml10">审核中</span>
}
</span>
<a href="/moop_cases" className="fr color-grey-9 mt5">返回</a>
</p>
<div className="edu-back-white">
<div className="padding30">
<div className="df mb5">
<a href="/users/moop"><img alt="82274?1563067098" className="radius mr15 mt3" height="50" src={getImageUrl(`images/${creator && creator.image_url}`)} width="50" /></a>
<div className="flex1">
<li className="clearfix mb5">
<span className="font-16 fl">{creator && creator.name}</span>
{
operation && operation.can_deletable ? <ActionBtn style="greyLine" onClick={this.delCases} className="fr">删除</ActionBtn>:""
}
{
operation && operation.can_editable ? <ActionBtn style="colorBlue" to={`/moop_cases/${this.props.match.params.caseID}/edit`} className="fr mr20">编辑</ActionBtn>:""
}
</li>
<li className="clearfix lineh-20">
<span className="fl color-grey-9 mr20">{creator && creator.school_name}</span>
<span className="fr">
<span className="fl color-grey-9 mr30">编码<span className="color-grey-6">{CaseDetail && CaseDetail.uuid}</span></span>
{
CaseDetail && CaseDetail.status=="published" ?
<span className="fl color-grey-9">发布时间<span className="color-grey-6">{CaseDetail && CaseDetail.published_at}</span></span>
:
<span className="fl color-grey-9">上传时间<span className="color-grey-6">{CaseDetail && CaseDetail.created_at}</span></span>
}
</span>
</li>
</div>
</div>
<div>
<span className="fl color-grey-9">作者</span>{CaseDetail && CaseDetail.author_name}/{CaseDetail && CaseDetail.author_school_name}
</div>
<style>
{`
.setMDStyle .editormd-html-preview{
width:100%!important;
} }
`}
</style>
<div class="mt20 setMDStyle">
{ CaseDetail && CaseDetail.content && <MarkdownToHtml content={CaseDetail.content} id="casesDetail" selector="casesDetail" style={{width:"100%!important"}}></MarkdownToHtml>}
</div>
{ attachments &&
<div className="mt10">
{ {
attachments.map((item,key)=>{ CaseDetail.status == "refused" && <span class="edu-filter-btn fl cdefault edu-activity-orange ml10">未通过</span>
return(
<p>
<a className="color-grey">
<i className="font-14 color-green iconfont icon-fujian mr8"></i>
</a>
<a href={item.url} className="mr12" length="58">{item.title}</a>
<span className="color-grey mt2 color-grey-6 font-12">{item.filesize}</span>
</p>
)
})
} }
</span>
<a href="/moop_cases" className="fr color-grey-9 mt5">返回</a>
</p>
<div className="edu-back-white">
<div className="padding30">
<div className="df mb5">
<a href="/users/moop"><img alt="82274?1563067098" className="radius mr15 mt3" height="50" src={getImageUrl(`images/${creator && creator.image_url}`)} width="50" /></a>
<div className="flex1">
<li className="clearfix mb5">
<span className="font-16 fl">{creator && creator.name}</span>
{
operation && operation.can_deletable ? <ActionBtn style="greyLine" onClick={this.delCases} className="fr">删除</ActionBtn>:""
}
{
operation && operation.can_editable ? <ActionBtn style="colorBlue" to={`/moop_cases/${this.props.match.params.caseID}/edit`} className="fr mr20">编辑</ActionBtn>:""
}
</li>
<li className="clearfix lineh-20">
<span className="fl color-grey-9 mr20">{creator && creator.school_name}</span>
<span className="fr">
<span className="fl color-grey-9 mr30">编码<span className="color-grey-6">{CaseDetail.uuid}</span></span>
{
CaseDetail && CaseDetail.status=="published" ?
<span className="fl color-grey-9">发布时间<span className="color-grey-6">{CaseDetail.published_at}</span></span>
:
<span className="fl color-grey-9">上传时间<span className="color-grey-6">{CaseDetail.created_at}</span></span>
}
</span>
</li>
</div>
</div>
<div>
<span className="fl color-grey-9">作者</span>{CaseDetail.author_name}/{CaseDetail.author_school_name}
</div>
<style>
{`
.setMDStyle .editormd-html-preview{
width:100%!important;
}
`}
</style>
<div class="mt20 setMDStyle">
{ CaseDetail.content && <MarkdownToHtml content={CaseDetail.content} id="casesDetail" selector="casesDetail" style={{width:"100%!important"}}></MarkdownToHtml>}
</div>
{ attachments &&
<div className="mt10">
<AttachmentList {...this.props} {...this.state} attachments={attachments}></AttachmentList>
</div>
}
<div class="mt40">
{
user_praised ?
<p className="pointsBtn pointedBtn">
<span>已赞</span>
<span>{praise_count}</span>
</p>
:
<p onClick = {()=>this.props.praisePoint(this.props.match.params.caseID)} className="pointsBtn">
<span><i class="iconfont icon-dianzan"></i></span>
<span>{praise_count}</span>
</p>
}
</div>
</div> </div>
}
<div class="mt40">
{
user_praised ?
<p className="pointsBtn pointedBtn">
<span>已赞</span>
<span>{praise_count}</span>
</p>
:
<p onClick = {()=>this.props.praisePoint(this.props.match.params.caseID)} className="pointsBtn">
<span><i class="iconfont icon-dianzan"></i></span>
<span>{praise_count}</span>
</p>
}
</div> </div>
</div> </React.Fragment>
</div> }
</div> </div>
) )
} }

Loading…
Cancel
Save