import React, {Component} from "react"; import '../../signin/css/signincdi.css'; import {Pagination, Table, Menu, Dropdown,Spin} from 'antd'; import {getImageUrl, sortDirections,formatSeconds} from 'educoder'; import axios from 'axios'; import LoadingSpin from "../../../../common/LoadingSpin"; import NoneDatas from "../../signin/component/NoneDatas"; //条目 class Videostatisticscomtwo extends Component { //条目组件 constructor(props) { super(props); this.state = { data: [], page: 1, limit: 20, members_count: 0, columnsstu: [ { title: '序号', dataIndex: 'number', key: 'number', align: "center", className: 'font-14', width: '50px', render: (text, record) => ( {record.number} ), }, { title: '用户', dataIndex: 'user_name', key: 'user_name', align: "center", className: 'font-14 maxnamewidth100s', width: '100px', render: (text, record) => ( {record.user_name} ), }, { title: '视频是否看完', dataIndex: 'is_finished', key: 'is_finished', align: "center", className: 'font-14', width: '98px', render: (text, record) => ( {record.is_finished === true ? 是 : 否} ), }, { title: '视频累计观看时长', dataIndex: 'total_duration', key: 'total_duration', align: "center", className: 'font-14 maxnamewidth150s', width: '150px', sorter: true, sortDirections: sortDirections, render: (text, record) => ( {record.total_duration} ), }, { title: '累计观看次数(次)', dataIndex: 'feq', key: 'feq', align: "center", className: 'font-14 maxnamewidth100s', width: '100px', sorter: true, sortDirections: sortDirections, render: (text, record) => ( {record.feq} ), }, { title: '最早观看时间', dataIndex: 'start_at', key: 'start_at', align: "center", className: 'font-14 maxnamewidth100s', width: '100px', render: (text, record) => ( {record.start_at} ), }, { title: '最后观看时间', dataIndex: 'end_at', key: 'end_at', align: "center", className: 'font-14 maxnamewidth100s', width: '100px', render: (text, record) => ( {record.end_at} ), } ], loading: false, order: undefined, course_groups: [], fbbool: false, groupsid: null, none_group_member_count:0, } } componentDidMount() { this.setState({ order: undefined }) 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) => { } //分班 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(this.state.page) - 1) * parseInt(this.state.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({ page: pageNumber, }) let data = {} if (this.props.isAdmin()) { //老师 const CourseId = this.props.match.params.coursesId; data = { id: CourseId, page: pageNumber, group_id: this.state.groupsid, order: this.state.order, } } else { //学生 data = { page: pageNumber, order: this.state.order, } } this.getdatas(data); } fenbanone = () => { if (this.state.fbbool === false) { this.setState({ fbbool: true }) } else { this.setState({ fbbool: false }) } } setcourse_groups = (id) => { this.setState({ groupsid: id }) //老师 const CourseId = this.props.match.params.coursesId; var data = {}; if (id) { data = { id: CourseId, page: this.state.page, group_id: id } } else { data = { id: CourseId, page: this.state.page } } this.getdatas(data); } //实训作业tbale 列表塞选数据 table1handleChange = (pagination, filters, sorter) => { if (JSON.stringify(sorter) === "{}") { //没有选择 } else { try { //学生学号排序 if (sorter.columnKey === "total_duration" || sorter.columnKey === "feq") { let mysorder = ""; if (sorter.order === "ascend") { if (sorter.columnKey === "total_duration") { mysorder = "total_duration-asc"; } else { mysorder = "freq-asc"; } //升序 let data = {} if (this.props.isAdmin()) { //老师 const CourseId = this.props.match.params.coursesId; if (this.state.groupsid) { data = { id: CourseId, page: this.state.page, group_id: this.state.groupsid, order: mysorder, } } else { data = { id: CourseId, page: this.state.page, order: mysorder, } } } else { //学生 data = { page: this.state.page, order: mysorder, } } this.getdatas(data); this.setState({ order: mysorder, }) } else if (sorter.order === "descend") { if (sorter.columnKey === "total_duration") { mysorder = "total_duration-desc"; } else { mysorder = "freq-desc"; } //降序 let data = {} if (this.props.isAdmin()) { //老师 const CourseId = this.props.match.params.coursesId; if (this.state.groupsid) { data = { id: CourseId, page: this.state.page, group_id: this.state.groupsid, order: mysorder, } } else { data = { id: CourseId, page: this.state.page, order: mysorder, } } } else { //学生 data = { page: this.state.page, order: mysorder, } } this.getdatas(data); this.setState({ order: mysorder, }) } } } catch (e) { } } } render() { let {loading, data, page, limit, members_count, columnsstu, fbbool, course_groups} = this.state; const isAdmin = this.props&& this.props.isAdmin(); const menu = (
); return (