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

dev_local_2
hjm 6 years ago
commit 64fc784268

@ -441,6 +441,7 @@ class SubjectsController < ApplicationController
def user_subject_progress challenge_ids def user_subject_progress challenge_ids
pass_games = Game.select(:id, :cost_time, :challenge_id).where(status: 2, user_id: current_user.id, challenge_id: challenge_ids) if current_user.logged? pass_games = Game.select(:id, :cost_time, :challenge_id).where(status: 2, user_id: current_user.id, challenge_id: challenge_ids) if current_user.logged?
@all_score = Challenge.where(id: challenge_ids).size
# 如果没有通关的,没必要再继续统计了 # 如果没有通关的,没必要再继续统计了
if pass_games.blank? if pass_games.blank?
@my_score = 0 @my_score = 0
@ -448,15 +449,14 @@ class SubjectsController < ApplicationController
@time = 0 @time = 0
@user_tags = [] @user_tags = []
else else
@all_score = Challenge.where(id: challenge_ids).size
pass_challenge_ids = pass_games.map(&:challenge_id).uniq # 按道理是不用去重的,但是历史数据与重复 pass_challenge_ids = pass_games.map(&:challenge_id).uniq # 按道理是不用去重的,但是历史数据与重复
subject_challenge_count = @subject.shixuns.sum(:challenges_count) # subject_challenge_count = @subject.shixuns.sum(:challenges_count)
# 用户通关获得的标签 # 用户通关获得的标签
@user_tags = ChallengeTag.where(challenge_id: pass_challenge_ids).pluck(:name) @user_tags = ChallengeTag.where(challenge_id: pass_challenge_ids).pluck(:name)
# 用户学习进度 # 用户学习进度
@learned = @learned =
subject_challenge_count == 0 ? 0 : @all_score == 0 ? 0 :
((pass_challenge_ids.size.to_f / subject_challenge_count).round(2) * 100).to_i ((pass_challenge_ids.size.to_f / @all_score).round(2) * 100).to_i
# 用户通关分数 # 用户通关分数
@my_score = Challenge.where(id: pass_challenge_ids).size @my_score = Challenge.where(id: pass_challenge_ids).size
@time = pass_games.map(&:cost_time).sum @time = pass_games.map(&:cost_time).sum

@ -111,7 +111,7 @@ module CoursesHelper
when "announcement" when "announcement"
course.informs.count course.informs.count
when "online_learning" when "online_learning"
course.subject&.shixuns_count course.shixuns.count
end end
end end

@ -239,7 +239,12 @@ module HomeworkCommonsHelper
end end
def student_redo_work work, homework def student_redo_work work, homework
status = false
publish_time = homework.homework_group_setting(work.user_id)&.publish_time publish_time = homework.homework_group_setting(work.user_id)&.publish_time
work.myshixun && publish_time && work.myshixun.games.where("status = 2 and answer_open = 1 and end_time <= '#{publish_time}'").count > 0 ? true : false if work.myshixun && publish_time && work.myshixun.created_at < publish_time && work.myshixun.games.where("answer_open > 0").count > 0
min_time = Grade.where(container_type: "Answer", container_id: work.myshixun.games.where("answer_open > 0").pluck(:id)).pluck(:created_at).min
status = min_time && min_time < publish_time
end
status
end end
end end

@ -50,7 +50,8 @@ module Searchable::Shixun
author_school_name: user.school_name, author_school_name: user.school_name,
visits_count: visits, visits_count: visits,
challenges_count: challenges_count, challenges_count: challenges_count,
study_count: myshixuns_count study_count: myshixuns_count,
description: description
} }
end end

@ -5,6 +5,8 @@ if identity == Course::STUDENT
json.task_operation task_operation_url(myshixun, shixun) json.task_operation task_operation_url(myshixun, shixun)
json.view_report work.work_status > 0 json.view_report work.work_status > 0
json.commit_des commit_des_status(work, homework) json.commit_des commit_des_status(work, homework)
json.redo_work (homework.end_or_late ? false : student_redo_work(work, homework))
json.myshixun_identifier myshixun&.identifier
else else
json.work_statuses student_work_status(homework, work.user_id, homework.course, work) json.work_statuses student_work_status(homework, work.user_id, homework.course, work)
end end

@ -40,8 +40,6 @@ elsif @user_course_identity == Course::STUDENT
json.efficiency work_score_format(@work.efficiency, true, @score_open) json.efficiency work_score_format(@work.efficiency, true, @score_open)
json.eff_score work_score_format(@work.eff_score, true, @score_open) json.eff_score work_score_format(@work.eff_score, true, @score_open)
json.complete_count @work.myshixun.try(:passed_count) json.complete_count @work.myshixun.try(:passed_count)
json.redo_work (@homework.end_or_late ? false : student_redo_work(@work, @homework))
json.myshixun_identifier @work.myshixun&.identifier
else else
json.(@work, :id, :work_status, :update_time, :ultimate_score) json.(@work, :id, :work_status, :update_time, :ultimate_score)

@ -0,0 +1,7 @@
class MigrateGradeIndex < ActiveRecord::Migration[5.2]
def change
remove_index :grades, [:user_id, :container_id]
add_index :grades, [:container_id, :container_type]
add_index :grades, [:user_id]
end
end

@ -388,6 +388,13 @@ class YslDetailCards extends Component{
margin-bottom: 20px; margin-bottom: 20px;
background-color: #fff; background-color: #fff;
} }
.lessonvalue{
max-width: 556px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
}
` `
}</style> }</style>

@ -683,7 +683,7 @@ class studentsList extends Component{
{isAdmin && <li className="li_line"><a href="javascript:void(0)" className="color-grey-9" onClick={this.onDelete}>删除</a></li>} {isAdmin && <li className="li_line"><a href="javascript:void(0)" className="color-grey-9" onClick={this.onDelete}>删除</a></li>}
{isAdmin && <li className="drop_down"> {isAdmin && <li className="drop_down">
移动到...<i className="iconfont icon-xiajiantou font-12 ml2"></i> 移动到...<i className="iconfont icon-xiajiantou font-12 ml2"></i>
<ul className="drop_down_menu" style={{"right":"0px","left":"unset", minWidth: '160px', maxHeight: '324px', overflowY: 'auto'}}> <ul className="drop_down_menu" style={{"right":"0px","left":"unset", width: '200px', maxHeight: '324px', overflowY: 'auto'}}>
{ {
course_groups && course_groups.length > 9 ? course_groups && course_groups.length > 9 ?
(<p className="drop_down_search"> (<p className="drop_down_search">

@ -3,7 +3,8 @@ import {Link, NavLink} from 'react-router-dom';
import {WordsBtn, ActionBtn} from 'educoder'; import {WordsBtn, ActionBtn} from 'educoder';
import axios from 'axios'; import axios from 'axios';
import { import {
notification notification,
Spin
} from "antd"; } from "antd";
import '../css/members.css'; import '../css/members.css';
import "../common/formCommon.css"; import "../common/formCommon.css";
@ -38,6 +39,7 @@ class ShixunHomeworkPage extends Component {
Modalstopval:"你在该实训的学习记录将被清空,无法恢复", Modalstopval:"你在该实训的学习记录将被清空,无法恢复",
ModalsBottomval:"是否确认重做?", ModalsBottomval:"是否确认重做?",
ModalsType:false, ModalsType:false,
mylistisSpin:false,
} }
} }
@ -119,7 +121,7 @@ class ShixunHomeworkPage extends Component {
Modalstopval:"" Modalstopval:""
}); });
if(this.state.teacherdatapage){ if(this.state.teacherdatapage){
this.resetshixunCombat(this.state.teacherdatapage.myshixun_identifier); this.resetshixunCombat(this.state.teacherdatapage.myshixun_identifier);
} }
try { try {
console.log("this.child"); console.log("this.child");
@ -146,13 +148,23 @@ class ShixunHomeworkPage extends Component {
} }
//重置按钮 //重置按钮
resetshixunCombat=(id)=>{ resetshixunCombat=(id)=>{
console.log(id); this.setState({
mylistisSpin:true,
})
let zrl=`/myshixuns/${id}/reset_my_game.json`; let zrl=`/myshixuns/${id}/reset_my_game.json`;
axios.get(zrl).then((response) => { axios.get(zrl).then((response) => {
// window.location.href = "/shixuns/" + response.data.shixun_identifier + "/challenges"; // window.location.href = "/shixuns/" + response.data.shixun_identifier + "/challenges";
this.setState({
mylistisSpin:false,
})
this.child.Isupdatass(); this.child.Isupdatass();
this.props.showNotification("重置成功"); this.props.showNotification("已清空本实训的学习记录\n" +
"\n" +
"请点击“开启挑战”重做实训作业");
}).catch((error) => { }).catch((error) => {
this.setState({
mylistisSpin:false,
})
console.log(error) console.log(error)
}); });
} }
@ -183,9 +195,8 @@ class ShixunHomeworkPage extends Component {
loadtype={false} loadtype={false}
> >
</Modals> </Modals>
<div className={"educontent mt10 mb20"} style={{width: "1200px"}}> <div className={"educontent mt10 mb20"} style={{width: "1200px"}}>
<Spin size="large" spinning={this.state.mylistisSpin}>
<div className="educontent mb20"> <div className="educontent mb20">
<p className="clearfix mb20 mt10"> <p className="clearfix mb20 mt10">
<a className="btn colorgrey fl hovercolorblue " href={this.props.current_user&&this.props.current_user.first_category_url}>{jobsettingsdatapage === undefined ? "" : jobsettingsdatapage.data.course_name}</a> <a className="btn colorgrey fl hovercolorblue " href={this.props.current_user&&this.props.current_user.first_category_url}>{jobsettingsdatapage === undefined ? "" : jobsettingsdatapage.data.course_name}</a>
@ -211,7 +222,6 @@ class ShixunHomeworkPage extends Component {
</div> </div>
<div className="edu-back-white "> <div className="edu-back-white ">
<div className="stud-class-set bor-bottom-greyE "> <div className="stud-class-set bor-bottom-greyE ">
<div className=" clearfix edu-back-white poll_list"> <div className=" clearfix edu-back-white poll_list">
@ -301,35 +311,31 @@ class ShixunHomeworkPage extends Component {
<a className="fr color-blue font-16" <a className="fr color-blue font-16"
href={`/courses/${this.props.match.params.coursesId}/${jobsettingsdatapage === undefined ? "" : jobsettingsdatapage.data.category.main === 1 ? "shixun_homeworks" :"shixun_homework"}/${teacherdatapage === undefined ? "" : teacherdatapage.id}/commitsummary/${this.props.match.params.homeworkid}`}>{teacherdatapage.commit_des}</a> href={`/courses/${this.props.match.params.coursesId}/${jobsettingsdatapage === undefined ? "" : jobsettingsdatapage.data.category.main === 1 ? "shixun_homeworks" :"shixun_homework"}/${teacherdatapage === undefined ? "" : teacherdatapage.id}/commitsummary/${this.props.match.params.homeworkid}`}>{teacherdatapage.commit_des}</a>
} }
{this.props.isStudent() ?
(
teacherdatapage&&teacherdatapage.redo_work===true?
<a className="fr color-blue font-16" onClick={()=>this.Modalcancelss()}>重做</a>
:""
)
: "" }
{teacherdatapage === undefined ? "" : <Startshixuntask {teacherdatapage === undefined ? "" : <Startshixuntask
{...this.props} {...this.props}
data={teacherdatapage} data={teacherdatapage}
/>} />}
{this.props.isStudent() ?
(
teacherdatapage&&teacherdatapage.redo_work===true?
<a className="fr color-blue font-16" onClick={()=>this.Modalcancelss()}>重做</a>
:""
)
: "" }
</div> </div>
</div> </div>
</div> </div>
{/*<DownloadMessageysl*/} {/*<DownloadMessageysl*/}
{/*{...this.props}*/} {/*{...this.props}*/}
{/*value={this.state.DownloadMessageval}*/} {/*value={this.state.DownloadMessageval}*/}
{/*modalCancel={this.Downloadcal}*/} {/*modalCancel={this.Downloadcal}*/}
{/*modalsType={this.state.DownloadType}*/} {/*modalsType={this.state.DownloadType}*/}
{/*/>*/} {/*/>*/}
{parseInt(tab) === 0 ?<Listofworksstudentone triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></Listofworksstudentone>:""} {parseInt(tab) === 0 ?<Listofworksstudentone triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></Listofworksstudentone>:""}
{parseInt(tab) === 1 ?<Workquestionandanswer triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></Workquestionandanswer>:""} {parseInt(tab) === 1 ?<Workquestionandanswer triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></Workquestionandanswer>:""}
{parseInt(tab) === 2 ?<ShixunStudentWork triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></ShixunStudentWork>:""} {parseInt(tab) === 2 ?<ShixunStudentWork triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></ShixunStudentWork>:""}
{parseInt(tab) === 3 ?<Trainingjobsetting triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></Trainingjobsetting>:""} {parseInt(tab) === 3 ?<Trainingjobsetting triggerRef={this.bindRef} {...this.props} {...this.state} Getdataback={(jobsettingsdata, teacherdata) => this.Getdataback(jobsettingsdata, teacherdata)}></Trainingjobsetting>:""}
</Spin>
</div> </div>
</div> </div>
) )

@ -288,7 +288,7 @@ class PathNew extends Component{
</div> </div>
<div className="clearfix mb30 mt30"> <div className="clearfix mb30 mt30">
<Button className="defalutSubmitbtn fl mr20" loading={this.state.bottonloading} onClick={this.submitNewPath}>提交</Button> <button className="defalutSubmitbtn fl mr20" loading={this.state.bottonloading} onClick={this.submitNewPath}>提交</button>
{this.isEditPage ? {this.isEditPage ?
<Link to={`/paths/${this.props.match.params.pathId}`} <Link to={`/paths/${this.props.match.params.pathId}`}
className="defalutCancelbtn fl">取消</Link> className="defalutCancelbtn fl">取消</Link>

Loading…
Cancel
Save