From 1a8d0378aaef0c6d2a0633eba73badb81859bd98 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Fri, 11 Oct 2019 15:03:00 +0800
Subject: [PATCH 01/22] no message
---
.../src/modules/courses/ListPageIndex.js | 8 +-
.../courses/members/CourseGroupList.js | 189 ++++++++++++++++++
2 files changed, 196 insertions(+), 1 deletion(-)
create mode 100644 public/react/src/modules/courses/members/CourseGroupList.js
diff --git a/public/react/src/modules/courses/ListPageIndex.js b/public/react/src/modules/courses/ListPageIndex.js
index 730a1bdce..8c5652838 100644
--- a/public/react/src/modules/courses/ListPageIndex.js
+++ b/public/react/src/modules/courses/ListPageIndex.js
@@ -33,6 +33,12 @@ const StudentsList= Loadable({
loader: () => import('./members/studentsList'),
loading: Loading,
});
+//分班列表
+const CourseGroupList= Loadable({
+ loader: () => import('./members/CourseGroupList'),
+ loading: Loading,
+});
+
const Eduinforms= Loadable({
loader: () => import('./gradinforms/Eduinforms.js'),
loading: Loading,
@@ -234,7 +240,7 @@ class ListPageIndex extends Component{
>
()
+ (props) => ()
}
>
diff --git a/public/react/src/modules/courses/members/CourseGroupList.js b/public/react/src/modules/courses/members/CourseGroupList.js
new file mode 100644
index 000000000..26a1abda3
--- /dev/null
+++ b/public/react/src/modules/courses/members/CourseGroupList.js
@@ -0,0 +1,189 @@
+// 分班列表 加入分班
+
+import React, { useState, useEffect } from 'react'
+
+import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Divider, Popconfirm } from "antd";
+import ClipboardJS from 'clipboard'
+import axios from 'axios'
+import _ from 'lodash'
+
+import '../css/Courses.css'
+import '../css/members.css'
+
+import CourseLayoutcomponent from '../common/CourseLayoutComponent'
+import Titlesearchsection from '../common/titleSearch/TitleSearchSection'
+import ColorCountText from '../common/titleSearch/ColorCountText'
+
+import { WordsBtn, trigger, on, off, getUrl, downloadFile , sortDirections } from 'educoder'
+import Modals from "../../modals/Modals";
+import NoneData from "../coursesPublic/NoneData"
+import DownloadMessageysl from "../../modals/DownloadMessageysl";
+import CreateGroupByImportModal from './modal/CreateGroupByImportModal'
+import ChangeRolePop from './ChangeRolePop'
+/**
+ 角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生
+*/
+function CourseGroupList(props) {
+ const [checkBoxRoles, setCheckBoxRoles] = useState()
+
+ const courseId = props.match.params.coursesId
+
+ useEffect(() => {
+ fetchAll()
+ }, [])
+ function fetchAll() {
+ const url = `/courses/${courseId}/course_groups.json`
+ }
+ const onConfirm = async () => {
+ }
+
+ function createGroupImportSuccess() {
+
+ }
+ function addDir() {
+
+ }
+ function deleteDir() {
+
+ }
+ function onPressEnter() {
+
+ }
+ function onInputSearchChange() {
+
+ }
+ function onInputSearchChange() {
+
+ }
+ function Downloadcal() {
+
+ }
+ const confirmysl = (url) => {
+ axios.get(url + 'export=true').then((response) => {
+ if(response === undefined){
+ return
+ }
+ if(response.data.status&&response.data.status===-1){
+
+ }else if(response.data.status&&response.data.status===-2){
+ if(response.data.message === "100"){
+ // 已超出文件导出的上限数量(100 ),建议:
+
+ this.setState({
+ DownloadType:true,
+ DownloadMessageval:100
+ })
+ }else {
+ //因附件资料超过500M
+ this.setState({
+ DownloadType:true,
+ DownloadMessageval:500
+ })
+ }
+ }else {
+ props.slowDownload(url)
+ }
+ }).catch((error) => {
+ console.log(error)
+ });
+ }
+
+ const isAdmin = true;
+ const isSuperAdmin = true;
+ const isParent = true;
+ const searchValue = '';
+ const isCourseEnd= '';
+ const course_group_id= '';
+
+ const DownloadMessageval= '';
+ const DownloadType= '';
+ const total_count = 9
+
+ let exportUrl = `/courses/${courseId}/export_member_scores_excel.xlsx?`; //总成绩
+ let exportUrltwo = `/courses/${courseId}/export_couser_info.xlsx?`; //课堂信息
+ let exportUrlthree = `/courses/${courseId}/export_member_act_score.xlsx?`; //活跃度
+ return (
+
+
+ = 10}
+ searchPlaceholder={ '请输入姓名、学号进行搜索' }
+ firstRowRight={
+
+ { // pageType !== TYPE_STUDENTS &&
+ isSuperAdmin &&
+ {/* ref="createGroupByImportModal" */}
+
+ {/* this.refs['createGroupByImportModal'].setVisible(true) */}
+ {}}>导入创建分班
+ }
+ {
+ // pageType !== TYPE_STUDENTS &&
+ !isCourseEnd && isAdmin && isParent && addDir()}>添加分班 }
+ {
+ isAdmin && !isParent && course_group_id != 0 && deleteDir()}>删除分班 }
+ {/* {
+ isAdmin && !isParent && course_group_id != 0 && this.renameDir()}>分班重命名 } */}
+
+ { isAdmin &&
+
+ 导出
+
+
+ }
+
+ }
+ secondRowLeft={
+ total_count ? : ''
+ }
+ onPressEnter={onPressEnter}
+ >
+
+ )
+}
+export default CourseGroupList
\ No newline at end of file
From e4ec0cc0a278ff8e79374119e0a259dd799be420 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Fri, 11 Oct 2019 15:25:17 +0800
Subject: [PATCH 02/22] list
---
.../courses/members/CourseGroupList.js | 43 +++++++++++--------
1 file changed, 26 insertions(+), 17 deletions(-)
diff --git a/public/react/src/modules/courses/members/CourseGroupList.js b/public/react/src/modules/courses/members/CourseGroupList.js
index 26a1abda3..15bc12bd8 100644
--- a/public/react/src/modules/courses/members/CourseGroupList.js
+++ b/public/react/src/modules/courses/members/CourseGroupList.js
@@ -24,15 +24,27 @@ import ChangeRolePop from './ChangeRolePop'
角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生
*/
function CourseGroupList(props) {
- const [checkBoxRoles, setCheckBoxRoles] = useState()
+ const [serachValue, setSerachValue] = useState('')
+
+ const [DownloadType, setDownloadType] = useState()
+ const [DownloadMessageval, setDownloadMessageval] = useState()
+
+ const [listRes, setListRes] = useState({})
const courseId = props.match.params.coursesId
useEffect(() => {
fetchAll()
}, [])
- function fetchAll() {
+ async function fetchAll() {
const url = `/courses/${courseId}/course_groups.json`
+ const response = await axios.get(url, params: {
+ search: searchValue
+ });
+ console.log(response)
+ if (response) {
+ setListRes(response.data)
+ }
}
const onConfirm = async () => {
}
@@ -52,8 +64,8 @@ function CourseGroupList(props) {
function onInputSearchChange() {
}
- function onInputSearchChange() {
-
+ function onInputSearchChange(e) {
+ setSerachValue(e.target.value)
}
function Downloadcal() {
@@ -67,18 +79,13 @@ function CourseGroupList(props) {
}else if(response.data.status&&response.data.status===-2){
if(response.data.message === "100"){
- // 已超出文件导出的上限数量(100 ),建议:
-
- this.setState({
- DownloadType:true,
- DownloadMessageval:100
- })
+ // 已超出文件导出的上限数量(100 ),建议:
+ setDownloadType(true)
+ setDownloadMessageval(100)
}else {
- //因附件资料超过500M
- this.setState({
- DownloadType:true,
- DownloadMessageval:500
- })
+ //因附件资料超过500M
+ setDownloadType(true)
+ setDownloadMessageval(500)
}
}else {
props.slowDownload(url)
@@ -97,7 +104,9 @@ function CourseGroupList(props) {
const DownloadMessageval= '';
const DownloadType= '';
- const total_count = 9
+ const total_count = listRes.group_count;
+ const none_group_member_count = listRes.none_group_member_count;
+ const course_groups = listRes.course_groups
let exportUrl = `/courses/${courseId}/export_member_scores_excel.xlsx?`; //总成绩
let exportUrltwo = `/courses/${courseId}/export_couser_info.xlsx?`; //课堂信息
@@ -115,7 +124,7 @@ function CourseGroupList(props) {
searchValue={ searchValue }
onInputSearchChange={onInputSearchChange}
showSearchInput={total_count >= 10}
- searchPlaceholder={ '请输入姓名、学号进行搜索' }
+ searchPlaceholder={ '请输入名称进行搜索' }
firstRowRight={
{ // pageType !== TYPE_STUDENTS &&
From 7d6658f72d2adaa454e9bf01f5f1e17efdd8175c Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Fri, 11 Oct 2019 15:51:26 +0800
Subject: [PATCH 03/22] table
---
.../courses/members/CourseGroupList.js | 13 +-
.../courses/members/CourseGroupListTable.js | 117 ++++++++++++++++++
2 files changed, 126 insertions(+), 4 deletions(-)
create mode 100644 public/react/src/modules/courses/members/CourseGroupListTable.js
diff --git a/public/react/src/modules/courses/members/CourseGroupList.js b/public/react/src/modules/courses/members/CourseGroupList.js
index 15bc12bd8..248a4d52d 100644
--- a/public/react/src/modules/courses/members/CourseGroupList.js
+++ b/public/react/src/modules/courses/members/CourseGroupList.js
@@ -20,6 +20,7 @@ import NoneData from "../coursesPublic/NoneData"
import DownloadMessageysl from "../../modals/DownloadMessageysl";
import CreateGroupByImportModal from './modal/CreateGroupByImportModal'
import ChangeRolePop from './ChangeRolePop'
+import CourseGroupListTable from './CourseGroupListTable'
/**
角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生
*/
@@ -38,9 +39,9 @@ function CourseGroupList(props) {
}, [])
async function fetchAll() {
const url = `/courses/${courseId}/course_groups.json`
- const response = await axios.get(url, params: {
+ const response = await axios.get(url, { params: {
search: searchValue
- });
+ }});
console.log(response)
if (response) {
setListRes(response.data)
@@ -102,8 +103,7 @@ function CourseGroupList(props) {
const isCourseEnd= '';
const course_group_id= '';
- const DownloadMessageval= '';
- const DownloadType= '';
+
const total_count = listRes.group_count;
const none_group_member_count = listRes.none_group_member_count;
const course_groups = listRes.course_groups
@@ -192,6 +192,11 @@ function CourseGroupList(props) {
}
onPressEnter={onPressEnter}
>
+
+
)
}
diff --git a/public/react/src/modules/courses/members/CourseGroupListTable.js b/public/react/src/modules/courses/members/CourseGroupListTable.js
new file mode 100644
index 000000000..96a13cf27
--- /dev/null
+++ b/public/react/src/modules/courses/members/CourseGroupListTable.js
@@ -0,0 +1,117 @@
+import React, { useState, useEffect } from 'react'
+
+import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Divider, Popconfirm } from "antd";
+
+import { WordsBtn, trigger, on, off, getUrl, downloadFile , sortDirections } from 'educoder'
+/**
+ 角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生
+ course_members_count: 0
+ id: 2441
+ invite_code: "WUNX9K"
+ member_manager: "全部教师"
+ name: "e'e'e"
+*/
+function buildColumns() {
+ const columns=[{
+ title: '序号',
+ dataIndex: 'id',
+ key: 'id',
+ align:'center',
+ width:"10%",
+ className:"color-grey-6",
+ render: (id, record, index) => {
+ return index + 1
+ }
+ },
+ {
+ title: '分班名称',
+ dataIndex: 'name',
+ key: 'name',
+ align:'center',
+ width:"20%",
+ className:"color-grey-6",
+ render: (name, record, index) => {
+ return name
+ }
+ },
+ {
+ title: '邀请码',
+ dataIndex: 'invite_code',
+ key: 'invite_code',
+ align:'center',
+ width:"10%",
+ className:"color-grey-6",
+ render: (invite_code, record, index) => {
+ return invite_code
+ }
+ },
+ {
+ title: '学生成员',
+ dataIndex: 'course_members_count',
+ key: 'course_members_count',
+ align:'center',
+ width:"10%",
+ className:"color-grey-6",
+ render: (course_members_count, record, index) => {
+ return course_members_count
+ }
+ },
+ {
+ title: '管理教师',
+ dataIndex: 'member_manager',
+ key: 'member_manager',
+ align:'center',
+ width:"25%",
+ className:"color-grey-6",
+ render: (member_manager, record, index) => {
+ return member_manager
+ }
+ },
+ {
+ title: '操作',
+ dataIndex: 'setting',
+ key: 'setting',
+ align:'center',
+ width:"25%",
+ className:"color-grey-6",
+ render: (none, record, index) => {
+ return
+ }
+ },
+ ]
+ return columns
+}
+function CourseGroupListTable(props) {
+ const [serachValue, setSerachValue] = useState('')
+
+ const courseId = props.match.params.coursesId
+
+ useEffect(() => {
+
+ }, [])
+
+ const onConfirm = async () => {
+ }
+
+ function deleteDir() {
+
+ }
+ const isAdmin = true;
+ const isSuperAdmin = true;
+ const isParent = true;
+ const searchValue = '';
+ const isCourseEnd= '';
+ const course_group_id= '';
+
+
+ const course_groups = props.course_groups
+ const columns = buildColumns()
+ return (
+
+ {/* onChange={onTableChange} */}
+
+
+
+ )
+}
+export default CourseGroupListTable
\ No newline at end of file
From 96f5a895761474315cff8be55979785ef94f5095 Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Mon, 14 Oct 2019 11:30:49 +0800
Subject: [PATCH 04/22] CourseGroupListTable
---
public/react/src/common/course/WordsBtn.js | 8 +-
.../courses/members/CourseGroupList.js | 42 ++-
.../courses/members/CourseGroupListTable.js | 240 ++++++++++++------
.../modules/courses/members/studentsList.css | 3 +-
4 files changed, 195 insertions(+), 98 deletions(-)
diff --git a/public/react/src/common/course/WordsBtn.js b/public/react/src/common/course/WordsBtn.js
index 85a85cfb6..e1fc5683d 100644
--- a/public/react/src/common/course/WordsBtn.js
+++ b/public/react/src/common/course/WordsBtn.js
@@ -8,20 +8,20 @@ class WordsBtn extends Component {
}
render() {
- let{to, href,targets, style2 }=this.props
+ let{to, href,targets, style2, style, ...others }=this.props
return(
{
to==undefined&&targets==undefined ?
{this.props.children}:
targets!=undefined? {this.props.children}
:
{this.props.children}
}
diff --git a/public/react/src/modules/courses/members/CourseGroupList.js b/public/react/src/modules/courses/members/CourseGroupList.js
index 248a4d52d..e749adcf1 100644
--- a/public/react/src/modules/courses/members/CourseGroupList.js
+++ b/public/react/src/modules/courses/members/CourseGroupList.js
@@ -1,6 +1,6 @@
// 分班列表 加入分班
-import React, { useState, useEffect } from 'react'
+import React, { useState, useEffect, useRef } from 'react'
import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Divider, Popconfirm } from "antd";
import ClipboardJS from 'clipboard'
@@ -21,6 +21,8 @@ import DownloadMessageysl from "../../modals/DownloadMessageysl";
import CreateGroupByImportModal from './modal/CreateGroupByImportModal'
import ChangeRolePop from './ChangeRolePop'
import CourseGroupListTable from './CourseGroupListTable'
+
+import './studentsList.css'
/**
角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生
*/
@@ -31,12 +33,20 @@ function CourseGroupList(props) {
const [DownloadMessageval, setDownloadMessageval] = useState()
const [listRes, setListRes] = useState({})
+ const createGroupModalEl = useRef(null);
const courseId = props.match.params.coursesId
useEffect(() => {
fetchAll()
+ on('updateNavSuccess', onOperationSuccess)
+ return () => {
+ off('updateNavSuccess', onOperationSuccess)
+ }
}, [])
+ function onOperationSuccess() {
+ fetchAll()
+ }
async function fetchAll() {
const url = `/courses/${courseId}/course_groups.json`
const response = await axios.get(url, { params: {
@@ -54,7 +64,7 @@ function CourseGroupList(props) {
}
function addDir() {
-
+ trigger('groupAdd', props.coursesids)
}
function deleteDir() {
@@ -96,8 +106,8 @@ function CourseGroupList(props) {
});
}
- const isAdmin = true;
- const isSuperAdmin = true;
+ const isAdmin = props.isAdmin();
+ const isSuperAdmin = props.isSuperAdmin();
const isParent = true;
const searchValue = '';
const isCourseEnd= '';
@@ -107,6 +117,7 @@ function CourseGroupList(props) {
const total_count = listRes.group_count;
const none_group_member_count = listRes.none_group_member_count;
const course_groups = listRes.course_groups
+ const current_group_id = listRes.current_group_id
let exportUrl = `/courses/${courseId}/export_member_scores_excel.xlsx?`; //总成绩
let exportUrltwo = `/courses/${courseId}/export_couser_info.xlsx?`; //课堂信息
@@ -131,16 +142,17 @@ function CourseGroupList(props) {
isSuperAdmin &&
{/* ref="createGroupByImportModal" */}
{/* this.refs['createGroupByImportModal'].setVisible(true) */}
- {}}>导入创建分班
+ {createGroupModalEl.current.setVisible(true)}}>导入创建分班
}
{
// pageType !== TYPE_STUDENTS &&
- !isCourseEnd && isAdmin && isParent && addDir()}>添加分班 }
- {
- isAdmin && !isParent && course_group_id != 0 && deleteDir()}>删除分班 }
+ !isCourseEnd && isAdmin && isParent && addDir()}>新建分班 }
+ {/* {
+ isAdmin && !isParent && course_group_id != 0 && deleteDir()}>删除分班 } */}
{/* {
isAdmin && !isParent && course_group_id != 0 && this.renameDir()}>分班重命名 } */}
+ {this.props.isAdmin?this.stopPro(event)} className={this.props.isAdminOrCreator()?"homepagePostSetting homepagePostSettingname":"homepagePostSetting homepagePostSettingbox"} style={{"right":"-2px","top":"6px","display":"block"}}>
+ 实训详情
+ {this.props.isAdminOrCreator()?this.editname(discussMessage.name,discussMessage.homework_id,event)} className={"btn colorblue ml20 font-16"}>重命名:""}
+ {/* 设置*/}
+ 设置
+ :""}
+
+
+ {this.props.isStudent===true?this.props.course_identity===5?
+
+ {startbtn===false?
+ (discussMessage.task_operation[0] == '继续挑战' || discussMessage.task_operation[0] == '查看实战' ?
+
+ {discussMessage.task_operation[0]}
+
+ :
+ this.taskoperationId(discussMessage.task_operation[1])}>
+ {discussMessage.task_operation[0]}
+ ):开启中}
+ :"":""
+ }
-
-
+
+
{/* {discussMessage.author.name} */}
{ discussMessage.author && {discussMessage.author} }
{discussMessage.commit_count===undefined?"":已开始做题 {discussMessage.commit_count}人}
@@ -381,7 +414,7 @@ class ShixunhomeWorkItem extends Component{
{
discussMessage && discussMessage.upper_category_name &&
22 }>
- { {discussMessage.upper_category_name}}
+ { 所属目录:{discussMessage.upper_category_name}
}
}
@@ -396,39 +429,6 @@ class ShixunhomeWorkItem extends Component{
-
- {this.props.isAdmin?:""}
-
-
- {this.props.isStudent===true?this.props.course_identity===5?
-
- {startbtn===false?
- (discussMessage.task_operation[0] == '继续挑战' || discussMessage.task_operation[0] == '查看实战' ?
-
- {discussMessage.task_operation[0]}
-
- :
- this.taskoperationId(discussMessage.task_operation[1])}>
- {discussMessage.task_operation[0]}
- ):开启中}
- :"":""
- }
diff --git a/public/react/src/modules/courses/shixunHomework/shixunHomework.js b/public/react/src/modules/courses/shixunHomework/shixunHomework.js
index cbfdaf72b..5124bdd58 100644
--- a/public/react/src/modules/courses/shixunHomework/shixunHomework.js
+++ b/public/react/src/modules/courses/shixunHomework/shixunHomework.js
@@ -1152,7 +1152,7 @@ class ShixunHomework extends Component{
{this.props.isAdmin()===true?datas&&datas.category_name===undefined||datas&&datas.category_name===null?
- this.addDir()} className={"mr30 font-16"}>添加目录
+ this.addDir()} className={"mr30 font-16"}>新建目录
{/*this.editname(datas&&datas.main_category_name)} className={"mr30"}>目录重命名*/}
:
this.editDir(datas&&datas.category_name)} className={"mr30 font-16"}>目录重命名:""}
@@ -1252,7 +1252,7 @@ class ShixunHomework extends Component{
{this.props.isAdmin()?datas&&datas.category_name===undefined||datas&&datas.category_name===null?
- this.addDir()}>添加目录...
+ this.addDir()}>新建目录...
:"":""}
diff --git a/public/react/src/modules/login/LoginDialog.js b/public/react/src/modules/login/LoginDialog.js
index 3f5afd845..552e8765e 100644
--- a/public/react/src/modules/login/LoginDialog.js
+++ b/public/react/src/modules/login/LoginDialog.js
@@ -541,7 +541,7 @@ class LoginDialog extends Component {
if (isRender === undefined) {
isRender = false
}
- console.log(this.props)
+ // console.log(this.props)
return (