视频统计

courseware
杨树林 5 years ago
parent 7c357ff220
commit b6cf167b1d

@ -52,7 +52,8 @@ class Videostatistics extends Component{
render(){
let {watch_staticsdata,tisticsbool}= this.state;
let {watch_staticsdata,tisticsbool,tisid}= this.state;
return(
<React.Fragment>
<div className="ws100s">
@ -82,7 +83,7 @@ class Videostatistics extends Component{
</div>
</div>
:
<Videostatisticscomtwo {...this.state} {...this.props} tisticsbools={(b,id)=>this.tisticsbools(b,id)}></Videostatisticscomtwo>
<Videostatisticscomtwo {...this.state} {...this.props} tisid={tisid} tisticsbools={(b,id)=>this.tisticsbools(b,id)}></Videostatisticscomtwo>
}
</div>

@ -19,13 +19,110 @@ class Videostatisticscom extends Component {
page:1,
limit:10,
members_count:0,
columnsstu:[],
columnsstu: [
{
title: '序号',
dataIndex: 'number',
key: 'number',
align: "center",
className: 'font-14',
width: '50px',
render: (text, record) => (
<span style={{width: '50px'}}>{record.number}</span>
),
},
{
title: '用户',
dataIndex: 'user_name',
key: 'user_name',
align: "center",
className: 'font-14 maxnamewidth100s',
width: '100px',
render: (text, record) => (
<span style={{width: '100px'}} className="maxnamewidth100s">{record.user_name}</span>
),
},
{
title: '视频是否看完',
dataIndex: 'is_finished',
key: 'is_finished',
align: "center",
className: 'font-14',
width: '98px',
render: (text, record) => (
<span style={{width: '98px'}}>{record.is_finished}</span>
),
},
{
title: '视频累计观看时长',
dataIndex: 'total_duration',
key: 'total_duration',
align: "center",
className: 'font-14 maxnamewidth150s',
width: '150px',
render: (text, record) => (
<span style={{width: '150px'}} className="maxnamewidth150s">{record.total_duration}</span>
),
},
{
title: '累计观看次数(次)',
dataIndex: 'feq',
key: 'feq',
align: "center",
className: 'font-14 maxnamewidth100s',
width: '100px',
render: (text, record) => (
<span style={{width: '100px'}} className="maxnamewidth100s">{record.feq}</span>
),
},
{
title: '最早观看时间',
dataIndex: 'start_at',
key: 'start_at',
align: "center",
className: 'font-14 maxnamewidth100s',
width: '100px',
render: (text, record) => (
<span style={{width: '100px',color:'#5091FF'}} className="xiaoshou" >{record.start_at}</span>
),
},
{
title: '最后观看时间',
dataIndex: 'end_at',
key: 'end_at',
align: "center",
className: 'font-14 maxnamewidth100s',
width: '100px',
render: (text, record) => (
<span style={{width: '100px',color:'#5091FF'}} className="xiaoshou" >{record.end_at}</span>
),
}
],
loading:false,
order:undefined,
course_groups:[],
}
}
componentDidMount() {
if(this.props.isAdmin()){
//老师
const CourseId=this.props.match.params.coursesId;
var data={
id:CourseId,
page:this.state.page,
}
this.getdatas(data);
}else{
//学生
var data={
page:this.state.page,
}
this.getdatas(data);
}
this.fenbans();
}
componentDidUpdate = (prevProps) => {
@ -33,6 +130,88 @@ class Videostatisticscom extends Component {
}
//分班
fenbans=()=>{
const CourseId=this.props.match.params.coursesId;
let url=`/courses/${CourseId}/course_groups.json`;
axios.get(url).then((response) => {
if(response){
console.log("分班");
console.log("response");
console.log(response);
this.setState({
course_groups:response.data.course_groups,
current_group_id:response.data.current_group_id,
none_group_member_count:response.data.none_group_member_count,
group_count:response.data.group_count,
})
}
}).catch((error) => {
});
}
//学生
getdatas=(data)=>{
this.setState({
loading:true
})
const CourseId=this.props.match.params.coursesId;
let url="";
if(this.props.isAdmin()){
url=`/course_videos/${this.props.tisid}/watch_histories.json`;
}else {
url=`/courses/${CourseId}/own_watch_histories.json`;
}
axios.get(url,{params:data}).then((response) => {
if(response){
if(response.data){
if(response.data.data.length>0){
let datalists=[];
for (var i = 0; i < response.data.data.length; i++) {
datalists.push({
number: (parseInt(page) - 1) * parseInt(limit) + (i + 1),
user_name:response.data.data[i].user_name,
is_finished:response.data.data[i].is_finished,
total_duration:response.data.data[i].total_duration,
feq:response.data.data[i].feq,
start_at:response.data.data[i].start_at,
end_at:response.data.data[i].end_at,
})
}
this.setState({
data:datalists,
members_count:response.data.count,
})
}else{
this.setState({
data:[],
members_count:response.data.count,
})
}
}else{
this.setState({
data:[],
members_count:response.data.count,
})
}
}
this.setState({
loading:false
})
}).catch((error) => {
this.setState({
loading:false
})
});
}
paginationonChange = (pageNumber) => {
this.setState({
@ -41,7 +220,9 @@ class Videostatisticscom extends Component {
}
render() {
let {loading,data,page,limit,members_count,columnsstu}=this.state
let {loading,data,page,limit,members_count,columnsstu}=this.state;
const isAdmin =this.props.isAdmin();
return (
<React.Fragment>
<div className="ws100s" >

@ -120,7 +120,7 @@ class Videostatisticslist extends Component {
if(response){
this.setState({
data:response.data&&response.data.videos?response.data.videos:[],
members_count:count,
members_count:response.data.count,
})
}

Loading…
Cancel
Save