courseware
daiao 5 years ago
commit 5885cd2ac1

@ -34,7 +34,10 @@ class AttendancesController < ApplicationController
@normal_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "NORMAL").size @normal_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "NORMAL").size
@leave_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "LEAVE").size @leave_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "LEAVE").size
@absence_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "ABSENCE").size @absence_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "ABSENCE").size
else
@attendances = @attendances.where("attendance_date = '#{current_date}' and start_time <= '#{current_end_time}' and end_time > '#{current_end_time}'")
end end
end end
@attendances_count = @attendances.size @attendances_count = @attendances.size

@ -1298,7 +1298,7 @@ class CoursesController < ApplicationController
def left_banner def left_banner
@user = current_user @user = current_user
@is_teacher = @user_course_identity < Course::ASSISTANT_PROFESSOR @is_teacher = @user_course_identity < Course::ASSISTANT_PROFESSOR
@course_modules = @course.course_modules.where.not(module_type: 'attendance').where(hidden: 0).includes(first_categories: :children) @course_modules = @course.course_modules.where(hidden: 0).includes(first_categories: :children)
@hidden_modules = @course.course_modules.where(hidden: 1) @hidden_modules = @course.course_modules.where(hidden: 1)
@second_category_type = ["shixun_homework", "graduation", "attachment", "board", "course_group", "video", "common_homework", "group_homework"] @second_category_type = ["shixun_homework", "graduation", "attachment", "board", "course_group", "video", "common_homework", "group_homework"]
end end

@ -9,8 +9,10 @@ class Weapps::AttendancesController < ApplicationController
def create def create
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
attendance = @course.course_attendances.create!(create_params.merge(user_id: current_user.id)) attendance = @course.course_attendances.create!(create_params.merge(user_id: current_user.id))
unless params[:group_ids].blank? || @course.course_groups.where(id: params[:group_ids]).count == @course.course_groups.count group_ids = params[:group_ids] || []
group_ids = @course.charge_group_ids(current_user) & params[:group_ids].map(&:to_i) group_ids = group_ids.blank? ? @course.charge_group_ids(current_user) : @course.charge_group_ids(current_user) & params[:group_ids].map(&:to_i)
unless group_ids.blank? || @course.course_groups.where(id: group_ids).count == @course.course_groups.count
# group_ids = @course.charge_group_ids(current_user) & params[:group_ids].map(&:to_i)
group_ids.each do |group_id| group_ids.each do |group_id|
@course.course_attendance_groups.create!(course_group_id: group_id, course_attendance: attendance) @course.course_attendance_groups.create!(course_group_id: group_id, course_attendance: attendance)
end end

@ -11,7 +11,7 @@ class StudentJoinAttendanceRecordJob < ApplicationJob
group_ids = member.course_group_id == 0 ? [0] : [member.course_group_id, 0] group_ids = member.course_group_id == 0 ? [0] : [member.course_group_id, 0]
current_attendance_ids = course.course_attendances.joins(:course_attendance_groups).where(course_attendance_groups: {course_group_id: group_ids}). current_attendance_ids = course.course_attendances.joins(:course_attendance_groups).where(course_attendance_groups: {course_group_id: group_ids}).
where("(attendance_date = '#{current_date}' and start_time <= '#{current_end_time}' and end_time > '#{current_end_time}') or (attendance_date > '#{current_date}')").pluck(:id) where("(attendance_date = '#{current_date}' and end_time > '#{current_end_time}') or (attendance_date > '#{current_date}')").pluck(:id)
all_group_attendance_ids = course.course_attendances.joins(:course_attendance_groups).where(course_attendance_groups: {course_group_id: 0}).pluck(:id) all_group_attendance_ids = course.course_attendances.joins(:course_attendance_groups).where(course_attendance_groups: {course_group_id: 0}).pluck(:id)
member.course_member_attendances.where.not(course_attendance_id: all_group_attendance_ids+current_attendance_ids).delete_all member.course_member_attendances.where.not(course_attendance_id: all_group_attendance_ids+current_attendance_ids).delete_all

@ -34,11 +34,18 @@ class Weapps::ShixunSearchService < ApplicationService
unless params[:keyword].blank? unless params[:keyword].blank?
keyword = params[:keyword].strip keyword = params[:keyword].strip
shixuns = shixuns.joins(:user). shixuns = shixuns.joins(:user).
where("concat(lastname, firstname) like :keyword or shixuns.name like :keyword", where("concat(lastname, firstname) like :keyword or shixuns.name like :keyword",
keyword: "%#{keyword}%", name: "%#{keyword.split(" ").join("%")}%").distinct keyword: "%#{keyword}%", name: "%#{keyword.split(" ").join("%")}%").distinct
end end
shixuns.order("#{sort_str} #{order_str}") order =
if sort_str == "wechat_myshixuns_count"
"is_wechat_support desc, myshixuns_count #{order_str}"
else
"#{sort_str} #{order_str}"
end
shixuns.order(order)
end end
private private

@ -5,5 +5,6 @@ json.shixun_list @results do |obj|
json.study_count obj.myshixuns_count json.study_count obj.myshixuns_count
json.author_name obj.user.real_name json.author_name obj.user.real_name
json.author_img url_to_avatar(obj.user) json.author_img url_to_avatar(obj.user)
json.pic url_to_avatar(obj)
end end
json.shixuns_count @total_count json.shixuns_count @total_count

@ -19,11 +19,11 @@ const { Option } = Select;
class NullChildEditor extends Component{ class NullChildEditor extends Component{
constructor(props){ constructor(props){
super(props); super(props);
this.state = { this.state = {
} }
} }
// toMDMode = (that) => { // toMDMode = (that) => {
// if (this.mdReactObject) { // if (this.mdReactObject) {
// let mdReactObject = this.mdReactObject; // let mdReactObject = this.mdReactObject;
@ -41,7 +41,7 @@ class NullChildEditor extends Component{
render() { render() {
let { question_title, question_score, question_type, question_choices, standard_answers } = this.state; let { question_title, question_score, question_type, question_choices, standard_answers } = this.state;
let { question_id, index, onAnswerChange, addChildAnswer, toMDMode, exerciseIsPublish, let { question_id, index, onAnswerChange, addChildAnswer, toMDMode, exerciseIsPublish,
answers } = this.props; answers } = this.props;
// marginTop: '18px' // marginTop: '18px'
return( return(
@ -57,18 +57,24 @@ class NullChildEditor extends Component{
className={'nullChildEditor'} className={'nullChildEditor'}
placeholder={`请输入参考答案${itemIndex == 0 ?'':'(可选)'}`} placeholder={`请输入参考答案${itemIndex == 0 ?'':'(可选)'}`}
toMDMode={toMDMode} noStorage={true} toMDMode={toMDMode} noStorage={true}
mdID={`answer_${index}${itemIndex}`} height={155} mdID={`answer_${index}${itemIndex}`} height={155}
initValue={item} onChange={(val) => onAnswerChange(index, itemIndex, val)} initValue={item} onChange={(val) => onAnswerChange(index, itemIndex, val)}
></DMDEditor> ></DMDEditor>
</div> </div>
{!exerciseIsPublish && {!exerciseIsPublish &&
<React.Fragment> <React.Fragment>
{itemIndex != 0 && <Tooltip title="删除"> {itemIndex != 0 && <Tooltip title="删除">
<i className="iconfont icon-htmal5icon19 font-18 color-grey-c ml10" <i className="iconfont icon-htmal5icon19 font-18 color-grey-c ml10"
onClick={() => this.props.deleteChildAnswer(index, itemIndex)} onClick={() => this.props.deleteChildAnswer(index, itemIndex)}
style={{float: 'right'}} style={{float: 'right'}}
></i> ></i>
</Tooltip> } </Tooltip> }
{itemIndex === 0 && <Tooltip title="删除">
<i className="iconfont icon-htmal5icon19 font-18 color-grey-c ml10"
onClick={() => this.props.deleteChildAnswermain(index, itemIndex)}
style={{float: 'right'}}
></i>
</Tooltip> }
{ <Tooltip title={`新增参考答案`}> { <Tooltip title={`新增参考答案`}>
<i className="color-green font-16 iconfont icon-roundaddfill ml6" <i className="color-green font-16 iconfont icon-roundaddfill ml6"
onClick={() => addChildAnswer(index)} onClick={() => addChildAnswer(index)}

@ -38,7 +38,7 @@ class NullEditor extends Component{
answers.answer_text.forEach((item, itemIndex) => { answers.answer_text.forEach((item, itemIndex) => {
_standard_answers[index].push(item) _standard_answers[index].push(item)
}) })
}) })
} }
this.state = { this.state = {
@ -53,7 +53,7 @@ class NullEditor extends Component{
this.setState({ is_ordered: e.target.checked}) this.setState({ is_ordered: e.target.checked})
} }
onSave = () => { onSave = () => {
const {question_title, question_score, question_type, question_choices, standard_answers, is_ordered } = this.state; const {question_title, question_score, question_type, question_choices, standard_answers, is_ordered } = this.state;
const { question_id_to_insert_after, question_id } = this.props const { question_id_to_insert_after, question_id } = this.props
@ -78,8 +78,8 @@ class NullEditor extends Component{
this.props.showNotification('分值必须大于0'); return; this.props.showNotification('分值必须大于0'); return;
} else if(!question_score || intScore == NaN) { } else if(!question_score || intScore == NaN) {
this.props.showNotification('分值:不能为空'); return; this.props.showNotification('分值:不能为空'); return;
} }
let isEmpty = false; let isEmpty = false;
standard_answers.forEach((answers, index) => { standard_answers.forEach((answers, index) => {
@ -91,8 +91,8 @@ class NullEditor extends Component{
answerArray[index].answer_text.push(item) answerArray[index].answer_text.push(item)
if(!item) { if(!item) {
this.refs[`nullChildEditor${index}`].showError(itemIndex) this.refs[`nullChildEditor${index}`].showError(itemIndex)
// this.props.showNotification(`请先输入第${index+1}个填空的第${itemIndex+1}参考答案。`); // this.props.showNotification(`请先输入第${index+1}个填空的第${itemIndex+1}参考答案。`);
this.props.showNotification(`答案:不能为空`); this.props.showNotification(`答案:不能为空`);
isEmpty = true; isEmpty = true;
} }
}) })
@ -122,7 +122,7 @@ class NullEditor extends Component{
"is_ordered":true "is_ordered":true
} }
}*/ }*/
const Id = this.props.match.params.Id const Id = this.props.match.params.Id
if (question_id) { if (question_id) {
const editUrl = this.props.getEditQuestionUrl(question_id); const editUrl = this.props.getEditQuestionUrl(question_id);
axios.put(editUrl, { axios.put(editUrl, {
@ -146,7 +146,7 @@ class NullEditor extends Component{
}); });
} else { } else {
const url = this.props.getAddQuestionUrl(); const url = this.props.getAddQuestionUrl();
axios.post(url, { axios.post(url, {
exercise_bank_id: Id, exercise_bank_id: Id,
question_title, question_title,
@ -165,13 +165,13 @@ class NullEditor extends Component{
.catch(function (error) { .catch(function (error) {
console.log(error); console.log(error);
}); });
} }
} }
onCancel = () => { onCancel = () => {
this.props.onEditorCancel() this.props.onEditorCancel()
} }
componentDidMount = () => { componentDidMount = () => {
} }
on_question_score_change = (e) => { on_question_score_change = (e) => {
this.setState({ question_score: e }) this.setState({ question_score: e })
@ -195,13 +195,13 @@ class NullEditor extends Component{
this.mdReactObject.toShowMode() this.mdReactObject.toShowMode()
} }
}) })
} }
onAnswerChange = (index, itemIndex, val) => { onAnswerChange = (index, itemIndex, val) => {
if (this.state.standard_answers[index]) { if (this.state.standard_answers[index]) {
this.setState( this.setState(
(prevState) => ({ (prevState) => ({
standard_answers : update(prevState.standard_answers standard_answers : update(prevState.standard_answers
, {[index]: {$splice: [[itemIndex, 1, val]]}}), , {[index]: {$splice: [[itemIndex, 1, val]]}}),
}) })
@ -217,6 +217,21 @@ class NullEditor extends Component{
) )
} }
deleteChildAnswermain=(index, childIndex)=>{
let newstandard_answers=this.state.standard_answers
this.props.confirm({
content: `确认要删除这个参考答案吗?`,
onOk: () => {
newstandard_answers.splice(index,1)
this.setState({
standard_answers:newstandard_answers
})
}
})
}
deleteChildAnswer = (index, childIndex) => { deleteChildAnswer = (index, childIndex) => {
if(!this.state.standard_answers[index][childIndex]) { if(!this.state.standard_answers[index][childIndex]) {
this.setState( this.setState(
@ -258,16 +273,16 @@ class NullEditor extends Component{
} }
this.mdReactObject = that; this.mdReactObject = that;
} }
render() { render() {
let { question_title, question_score, question_type, question_choices, standard_answers let { question_title, question_score, question_type, question_choices, standard_answers
, is_ordered } = this.state; , is_ordered } = this.state;
let { question_id, index, exerciseIsPublish, let { question_id, index, exerciseIsPublish,
// question_title, // question_title,
// question_type, // question_type,
// question_score, // question_score,
isNew } = this.props; isNew } = this.props;
// const { getFieldDecorator } = this.props.form; // const { getFieldDecorator } = this.props.form;
const isAdmin = this.props.isAdmin() const isAdmin = this.props.isAdmin()
@ -302,17 +317,17 @@ class NullEditor extends Component{
<span className="color-grey-9 font-12 fl">客观题由系统自动评分允许手动调分请设置标准答案 支持最多5个空每空得分按照本题的总分平均计算</span> <span className="color-grey-9 font-12 fl">客观题由系统自动评分允许手动调分请设置标准答案 支持最多5个空每空得分按照本题的总分平均计算</span>
</p> </p>
<NullMDEditor {...this.props} mdID={`question_${question_id}`} placeholder="请您输入题目" height={155} <NullMDEditor {...this.props} mdID={`question_${question_id}`} placeholder="请您输入题目" height={155}
initValue={question_title} onChange={(val) => this.setState({ question_title: val})} initValue={question_title} onChange={(val) => this.setState({ question_title: val})}
onPlaceholderChange={this.onPlaceholderChange} showNullButton={exerciseIsPublish ? false : true} onPlaceholderChange={this.onPlaceholderChange} showNullButton={exerciseIsPublish ? false : true}
ref="titleEditor" ref="titleEditor"
></NullMDEditor> ></NullMDEditor>
<div className="clearfix"> <div className="clearfix">
{ {
standard_answers.map((answers, index) => { standard_answers.map((answers, index) => {
return <NullChildEditor return <NullChildEditor
ref={`nullChildEditor${index}`} ref={`nullChildEditor${index}`}
{...this.props} {...this.props}
toMDMode={this.toMDMode} toMDMode={this.toMDMode}
@ -321,6 +336,7 @@ class NullEditor extends Component{
onAnswerChange={this.onAnswerChange} onAnswerChange={this.onAnswerChange}
addChildAnswer={this.addChildAnswer} addChildAnswer={this.addChildAnswer}
deleteChildAnswer={this.deleteChildAnswer} deleteChildAnswer={this.deleteChildAnswer}
deleteChildAnswermain={this.deleteChildAnswermain}
></NullChildEditor> ></NullChildEditor>
// answer.map((item, itemIndex) => { // answer.map((item, itemIndex) => {
// return <DMDEditor // return <DMDEditor
@ -331,7 +347,7 @@ class NullEditor extends Component{
// }) // })
}) })
} }
</div> </div>
<div className="clearfix "> <div className="clearfix ">
@ -346,16 +362,16 @@ class NullEditor extends Component{
<InputNumber step={0.1} precision={1} min={0} max={100} style={{width: 100}} value={question_score} onChange={this.on_question_score_change} <InputNumber step={0.1} precision={1} min={0} max={100} style={{width: 100}} value={question_score} onChange={this.on_question_score_change}
disabled={exerciseIsPublish} placeholder="请填写分数" disabled={exerciseIsPublish} placeholder="请填写分数"
></InputNumber > ></InputNumber >
<span className="fr"> <span className="fr">
<ActionBtn style="greyBack" className="middle mr20" onClick={this.onCancel} <ActionBtn style="greyBack" className="middle mr20" onClick={this.onCancel}
>取消</ActionBtn> >取消</ActionBtn>
<ActionBtn style="blue" className="middle" onClick={this.onSave}>保存</ActionBtn> <ActionBtn style="blue" className="middle" onClick={this.onSave}>保存</ActionBtn>
</span> </span>
</div> </div>
</div> </div>
) )
} }

@ -39,18 +39,24 @@ class Signinstatistics extends Component {
response.data.history_attendances.map((item,key)=>{ response.data.history_attendances.map((item,key)=>{
newlists.push({ newlists.push({
month: item.index, month: item.index,
name: item.name+" "+item.attendance_date+" "+item.start_time+"-"+item.end_time,
// month:item.name,
city:"到课率", city:"到课率",
temperature: (item.normal_rate).toFixed(0) temperature: (item.normal_rate*100).toFixed(0)
}) })
newlists.push({ newlists.push({
month: item.index, month: item.index,
name: item.name+" "+item.attendance_date+" "+item.start_time+"-"+item.end_time,
// month:item.name,
city: "旷课率", city: "旷课率",
temperature: (item.absence_rate).toFixed(0) temperature: (item.absence_rate*100).toFixed(0)
}) })
newlists.push({ newlists.push({
month: item.index, month: item.index,
name: item.name+" "+item.attendance_date+" "+item.start_time+"-"+item.end_time,
// month:item.name,
city: "请假率", city: "请假率",
temperature: (item.leave_rate).toFixed(0) temperature: (item.leave_rate*100).toFixed(0)
}) })
}) })
} }
@ -102,7 +108,16 @@ class Signinstatistics extends Component {
const cols = { const cols = {
month: { month: {
range: [0, 1] type: 'linear',
nice:[1,10],
min:1,
minLimit:1,
minTickInterval:2
},
temperature:{
type: 'linear',
nice:[0,100],
minTickInterval:2
} }
}; };
@ -190,7 +205,7 @@ class Signinstatistics extends Component {
<Col span={10}><Row type="flex" justify="end"> <Col span={10}><Row type="flex" justify="end">
<Col span={8} className={"Signinstatisticsfont"}>显示最近十次签到</Col> <Col span={8} className={"Signinstatisticsfont"}>显示最近十次签到</Col>
<Col span={10}> <Col span={10}>
<Select defaultValue={"全部"} onChange={(e)=>this.handleChange(e)} style={{width:"130px"}}> <Select defaultValue={"全部"} onChange={(e)=>this.handleChange(e)} style={{width:"130px"}} className={"Signinstatisticsfontselect"}>
{course_groups&&course_groups.map((item,key)=>{ {course_groups&&course_groups.map((item,key)=>{
return( return(
<Option value={item.id} title={item.name} >{item.name}</Option> <Option value={item.id} title={item.name} >{item.name}</Option>
@ -224,6 +239,14 @@ class Signinstatistics extends Component {
// color={"city"} // color={"city"}
shape={"smooth"} shape={"smooth"}
color={["city", ["#26C7C9", "#FF835C","#EDBA6F"]]} color={["city", ["#26C7C9", "#FF835C","#EDBA6F"]]}
tooltip={['name*temperature*city', (name, temperature,city) => {
return {
//自定义 tooltip 上显示的 title 显示内容等。
name: city,
title: name,
value: temperature+"%"
};
}]}
/> />
<Geom <Geom
type="point" type="point"
@ -235,6 +258,14 @@ class Signinstatistics extends Component {
stroke: "#fff", stroke: "#fff",
lineWidth: 1 lineWidth: 1
}} }}
// tooltip={['month*sold', (month, temperature) => {
// return {
// //自定义 tooltip 上显示的 title 显示内容等。
// name: 'sold1',
// title: 'dddd' + month,
// value: temperature
// };
// }]}
/> />
</Chart> </Chart>
</div> </div>

@ -120,6 +120,7 @@ class Detailss extends Component {
defaultActiveKey === "1" ? defaultActiveKey === "1" ?
<div className="ws25s" style={{ <div className="ws25s" style={{
position: "relative", position: "relative",
overflow: 'hidden',
}}> }}>
{ {
item && item.mode === "NUMBER" ? item && item.mode === "NUMBER" ?
@ -140,6 +141,15 @@ class Detailss extends Component {
<p className="h40s font-16" style={{ <p className="h40s font-16" style={{
color: "#909399" color: "#909399"
}}>签到码</p> }}>签到码</p>
<div style={{
overflow: 'hidden',
height: "1px",
width: "1px",
position: "absolute",
right: "-200px",
}}>
<input id={"file_path" + 1} className="file_path_input" value={item&&item.code}/>
</div>
</div> </div>
: :
item && item.mode === "QRCODE" ? item && item.mode === "QRCODE" ?
@ -174,14 +184,7 @@ class Detailss extends Component {
</div> </div>
</div> </div>
{
defaultActiveKey === "1" ?
item && item.mode === "NUMBER" ?
<input id={"file_path" + 1} className="file_path_input" value={item&&item.code}/>
:""
:
""
}
</div> </div>
</React.Fragment> </React.Fragment>

@ -102,7 +102,12 @@
color: rgba(153,153,153,1); color: rgba(153,153,153,1);
text-align: right; text-align: right;
margin-right: 20px; margin-right: 20px;
line-height: 32px; line-height: 32px !important;
height: 32px !important;
}
.Signinstatisticsfontselect .ant-select-selection--single .ant-select-selection__rendered{
line-height: 32px !important;
height: 32px !important;
} }
#form_in_modal_group_ids .ant-select-selection{ #form_in_modal_group_ids .ant-select-selection{
@ -150,6 +155,10 @@
color:#FF835C; color:#FF835C;
} }
.color909399{
color:#909399;
}
.color1890FF{ .color1890FF{
color:#1890FF; color:#1890FF;
} }
@ -185,4 +194,14 @@
.sginboxcolorFF835C .ant-select-arrow{ .sginboxcolorFF835C .ant-select-arrow{
color: #FF835C !important; color: #FF835C !important;
}
.sginboxcolor909399 .ant-select-selection--single{
border:1px solid #909399 !important;
}
.sginboxcolor909399 .ant-select-arrow{
color: #909399 !important;
} }

@ -14,7 +14,7 @@ class Signedinlist extends Component {
limit:5, limit:5,
page:1, page:1,
loading:false, loading:false,
attendanceslist:[{id:undefined,name:"全部分班"}], attendanceslist:[],
data:null, data:null,
group_ids:[], group_ids:[],
members_count:0, members_count:0,
@ -23,12 +23,12 @@ class Signedinlist extends Component {
{id:undefined,name:"全部状态"}, {id:undefined,name:"全部状态"},
{id:"NORMAL",name:"正常签到"}, {id:"NORMAL",name:"正常签到"},
{id:"LEAVE",name:"请 假"}, {id:"LEAVE",name:"请 假"},
{id:"ABSENCE",name:"旷 课"}, {id:"ABSENCE",name:this.props.defaultActiveKey ==="2"?"旷 课":"未签到"},
], ],
newstate:[ newstate:[
{id:"NORMAL",name:"正常签到"}, {id:"NORMAL",name:"正常签到"},
{id:"LEAVE",name:"请 假"}, {id:"LEAVE",name:"请 假"},
{id:"ABSENCE",name:"旷 课"}, {id:"ABSENCE",name:this.props.defaultActiveKey ==="2"?"旷 课":"未签到"},
], ],
course_members_count:'--', course_members_count:'--',
attendance_count:'--', attendance_count:'--',
@ -36,17 +36,15 @@ class Signedinlist extends Component {
} }
componentDidMount() { componentDidMount() {
this.getdatas(this.props&&this.props.switattendance_id,1,[],undefined) this.getdatas(this.props&&this.props.switattendance_id,1,[],undefined)
// this.getpath() // this.getpath()
} }
componentDidUpdate(prevProps, prevState) { componentDidUpdate(prevProps, prevState) {
if(prevProps.headdata!=this.props.headdata){ if(prevProps.headdata!=this.props.headdata){
let {attendanceslist}=this.state;
if(this.props.headdata){ if(this.props.headdata){
let listattendanceslist=attendanceslist; let listattendanceslist=[];
listattendanceslist.push({id:undefined,name:"全部分班"})
if(this.props.headdata.course_groups){ if(this.props.headdata.course_groups){
if(this.props.headdata.course_groups.length>0){ if(this.props.headdata.course_groups.length>0){
@ -56,7 +54,7 @@ class Signedinlist extends Component {
} }
} }
this.setState({ this.setState({
listattendanceslist:listattendanceslist, attendanceslist:listattendanceslist,
data:this.props.headdata, data:this.props.headdata,
course_members_count:this.props.headdata.normal_count, course_members_count:this.props.headdata.normal_count,
attendance_count:this.props.headdata.all_count attendance_count:this.props.headdata.all_count
@ -128,7 +126,7 @@ class Signedinlist extends Component {
let url=`/weapps/attendances/${this.props&&this.props.switattendance_id}.json`; let url=`/weapps/attendances/${this.props&&this.props.switattendance_id}.json`;
axios.get(url).then((response) => { axios.get(url).then((response) => {
if(response.data){ if(response.data){
listattendanceslist.push({id:undefined,name:"全部分班"})
if(response.data.course_groups.length>0){ if(response.data.course_groups.length>0){
response.data.course_groups.map((item,key)=>{ response.data.course_groups.map((item,key)=>{
listattendanceslist.push(item) listattendanceslist.push(item)
@ -151,7 +149,7 @@ class Signedinlist extends Component {
}) })
} }
this.setState({ this.setState({
listattendanceslist:listattendanceslist, attendanceslist:listattendanceslist,
data:response.data data:response.data
}) })
@ -161,7 +159,6 @@ class Signedinlist extends Component {
} }
handleChangestate=(value)=>{ handleChangestate=(value)=>{
let neval let neval
if(!value){ if(!value){
neval=undefined neval=undefined
this.setState({ this.setState({
@ -214,6 +211,7 @@ class Signedinlist extends Component {
this.setState({ this.setState({
member_attendances:newmember_attendances member_attendances:newmember_attendances
}) })
this.props.mygetdatas()
} }
}) })
.catch(function (error) { .catch(function (error) {
@ -264,14 +262,14 @@ class Signedinlist extends Component {
<span> <span>
<Select key={record.index} defaultValue={record.attendance_status} <Select key={record.index} defaultValue={record.attendance_status}
// className={"Signedinlistbox"} // className={"Signedinlistbox"}
className={record.attendance_status==="NORMAL"?"color26C7C9 Signedinlistbox sginboxcolor26C7C9":record.attendance_status==="LEAVE"?"colorEAAE4E Signedinlistbox sginboxcolorEAAE4E":record.attendance_status==="ABSENCE"?"colorFF835C Signedinlistbox sginboxcolorFF835C":"Signedinlistbox"} className={record.attendance_status==="NORMAL"?"color26C7C9 Signedinlistbox sginboxcolor26C7C9":record.attendance_status==="LEAVE"?"colorEAAE4E Signedinlistbox sginboxcolorEAAE4E":record.attendance_status==="ABSENCE"?this.props.defaultActiveKey==="2"?"colorFF835C Signedinlistbox sginboxcolorFF835C":"color909399 Signedinlistbox sginboxcolor909399":"Signedinlistbox"}
style={{ width: 167 }} onChange={(e)=>this.handleChange(e,record.user_id)}> style={{ width: 167 }} onChange={(e)=>this.handleChange(e,record.user_id)}>
{ {
newstate&&newstate.map((item,key)=>{ newstate&&newstate.map((item,key)=>{
return( return(
<Option value={item.id} key={key} <Option value={item.id} key={key}
className={item.name==="正常签到"?"color26C7C9 sginbox":item.name==="请 假"?"colorEAAE4E sginbox":item.name==="旷 课"?"colorFF835C sginbox":""}>{item.name}</Option> className={item.name==="正常签到"?"color26C7C9 sginbox":item.name==="请 假"?"colorEAAE4E sginbox":item.name==="旷 课"?"colorFF835C sginbox": item.name ==="未签到"?"color909399 sginbox":""}>{item.name}</Option>
) )
}) })
} }

@ -64,6 +64,7 @@ class Signindetails extends Component{
{/* 列表+筛选 */} {/* 列表+筛选 */}
<div> <div>
<Signedinlist <Signedinlist
mygetdatas={()=>this.mygetdatas()}
defaultActiveKey={this.props.defaultActiveKey} defaultActiveKey={this.props.defaultActiveKey}
switattendance_id={this.props.switattendance_id} switattendance_id={this.props.switattendance_id}
headdata={headdata} headdata={headdata}

@ -210,11 +210,9 @@ class Students_signin extends Component{
switchs:bool, switchs:bool,
switattendance_id:id, switattendance_id:id,
}) })
// if(bool){ if(bool===false){
// var currenturl = window.location.href; this.getsetdatas();
// var newUrl = (currenturl.split("?"))[0]; }
// window.history.pushState('','',newUrl+'?type='+2);
// }
} }
@ -355,10 +353,10 @@ class Students_signin extends Component{
{ {
isAdmin===true? isAdmin===true?
<TabPane tab="签到统计" key="3"> <TabPane tab="签到统计" key="3">
<Signinstatistics {defaultActiveKey&&defaultActiveKey==="3"?<Signinstatistics
{...this.props} {...this.props}
{...this.state} {...this.state}
/> />:""}
</TabPane> </TabPane>
: :
"" ""

Loading…
Cancel
Save