Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
B
biz.qingxiao.com
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangxuelai
biz.qingxiao.com
Commits
63b43bd5
Commit
63b43bd5
authored
Dec 02, 2019
by
baixian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug修改
parent
9463cde5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
699 additions
and
98 deletions
+699
-98
birthday_icon.png
image/teacher/birthday_icon.png
+0
-0
wx_icon.png
image/teacher/wx_icon.png
+0
-0
api.js
src/common/api.js
+2
-0
classmgt.js
src/models/classmgt.js
+23
-0
students.js
src/models/students.js
+12
-0
teachersinfo.js
src/models/teachersinfo.js
+54
-2
index.js
src/pages/classmgt/index.js
+32
-0
index.js
src/pages/classrecord/index.js
+0
-1
index.js
src/pages/index/index.js
+159
-16
index.less
src/pages/index/index.less
+1
-0
RenewEdit.js
src/pages/student/RenewEdit.js
+19
-0
eliminateEdit.js
src/pages/student/eliminateEdit.js
+71
-23
eliminateEdit.less
src/pages/student/eliminateEdit.less
+6
-0
index.js
src/pages/student/index.js
+23
-17
index.js
src/pages/studentinfo/index.js
+42
-29
index.less
src/pages/studentinfo/index.less
+11
-0
index.js
src/pages/teacher/index.js
+44
-8
index.js
src/pages/teacherinfo/index.js
+185
-2
classmgt.js
src/services/classmgt.js
+7
-0
teachers.js
src/services/teachers.js
+8
-0
No files found.
image/teacher/birthday_icon.png
0 → 100644
View file @
63b43bd5
563 Bytes
image/teacher/wx_icon.png
0 → 100644
View file @
63b43bd5
641 Bytes
src/common/api.js
View file @
63b43bd5
...
...
@@ -94,9 +94,11 @@ export default {
addClassStudents
:
`
${
dakaapi
}
member/erp/class/student/add`
,
plansAdd
:
`
${
dakaapi
}
member/erp/plans`
,
wxConfig
:
`
${
dakaapi
}
member/erp/config`
,
deleteClassMgt
:
`
${
dakaapi
}
member/class`
,
},
teacherMgt
:
{
teacherInvitations
:
`
${
dakaapi
}
member/erp/teacher/invitations`
,
courseStatistical
:
`
${
dakaapi
}
member/erp/teachers/course_statistical`
,
},
studentMgt
:
{
studentsList
:
`
${
dakaapi
}
member/erp/students`
,
...
...
src/models/classmgt.js
View file @
63b43bd5
...
...
@@ -169,6 +169,29 @@ export default {
},
});
},
*
deleteClass
({
payload
},
{
call
,
put
,
select
})
{
const
{
id
}
=
payload
;
const
data
=
yield
call
(
classMgtAjax
.
deleteClassMgt
,
{
id
,
});
if
(
data
.
code
==
200
)
{
message
.
success
(
'删除成功'
,
0.5
);
yield
put
({
type
:
'queryClassList'
,
payload
:
{
params
:
{
},
},
});
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
,
},
});
}
},
*
queryStatusChanageClassList
({
payload
},
{
call
,
put
,
select
})
{
const
{
params
,
action
}
=
payload
;
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
...
...
src/models/students.js
View file @
63b43bd5
...
...
@@ -518,6 +518,7 @@ export default {
operator_id
,
isBuycourse
,
force
,
params
,
}
=
payload
;
const
classids
=
new
Array
(
class_ids
).
join
(
','
);
const
loadmessage
=
message
.
loading
(
'资料保存中...'
,
0
);
...
...
@@ -542,6 +543,16 @@ export default {
});
setTimeout
(
loadmessage
);
if
(
data
.
code
==
200
)
{
console
.
log
(
data
.
data
.
name
,
'data'
);
if
(
params
&&
params
.
type
===
'index'
)
{
yield
put
(
routerRedux
.
push
(
'/sjd/student'
));
yield
put
({
type
:
'updateState'
,
payload
:
{
indexQrcodeTitle
:
`请学员
${
data
.
data
.
name
}
扫描绑定小程序`
,
},
});
}
if
(
isBuycourse
)
{
const
{
courseList
}
=
yield
select
(
state
=>
state
.
students
);
const
renewCourses
=
courseList
;
...
...
@@ -701,6 +712,7 @@ export default {
expend
:
values
.
expend
,
remark
:
values
.
remark
,
mode_type
:
values
.
course_mode
||
1
,
course_type
:
values
.
course_type
,
});
yield
put
({
type
:
'updateState'
,
...
...
src/models/teachersinfo.js
View file @
63b43bd5
...
...
@@ -13,7 +13,6 @@ import * as schedulemgtAjax from '../services/schedulemgt';
import
*
as
classroommgtAjax
from
'../services/classroommgt'
;
import
*
as
courseAjax
from
'../services/course'
;
import
*
as
commonAjax
from
'../services/common'
;
export
default
{
namespace
:
'teachersinfo'
,
state
:
{
...
...
@@ -98,6 +97,15 @@ export default {
callDetailShow
:
false
,
// 查看点名详情的接口
timeArr
:
[],
courseStaticParams
:
{
start_time
:
''
,
end_time
:
''
,
course_id
:
''
,
page
:
1
,
perPage
:
10
,
},
courseStaticList
:
[],
courseStaticTotal
:
0
,
},
subscriptions
:
{
setup
({
dispatch
,
history
})
{
// eslint-disable-line
...
...
@@ -235,6 +243,12 @@ export default {
yield
put
({
type
:
'queryTimeList'
,
});
yield
put
({
type
:
'selectCourseStatistical'
,
payload
:
{
params
:
{},
},
});
},
*
queryClassroomList
({
payload
},
{
call
,
put
,
select
})
{
const
{
classroomList
}
=
yield
select
(
state
=>
state
.
classmgt
);
...
...
@@ -668,6 +682,36 @@ export default {
// message.error(timeListData.msg, 1);
}
},
*
selectCourseStatistical
({
payload
},
{
call
,
put
,
select
})
{
const
{
params
}
=
payload
;
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
const
{
courseStaticParams
,
courseStaticTotal
,
teacherId
}
=
yield
select
(
state
=>
state
.
teachersinfo
);
const
newParams
=
Object
.
assign
(
courseStaticParams
,
params
,
{
school_id
:
sid
,
teacher_id
:
teacherId
,
});
let
newTotal
=
courseStaticTotal
;
const
data
=
yield
call
(
teachersAjax
.
selectCourseStatistical
,
newParams
);
if
(
data
.
code
==
200
)
{
if
(
data
.
data
.
total
!=
undefined
)
{
newTotal
=
data
.
data
.
total
;
}
yield
put
({
type
:
'updateState'
,
payload
:
{
courseStaticList
:
data
.
data
&&
data
.
data
.
list
,
courseStaticTotal
:
newTotal
,
},
});
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
,
},
});
}
},
*
pageInit
({
payload
},
{
call
,
put
,
select
})
{
yield
put
({
type
:
'updateState'
,
...
...
@@ -750,7 +794,15 @@ export default {
callStudentTotal
:
0
,
callStudentList
:
[],
callDetailShow
:
false
,
// 查看点名详情的接口
courseStaticParams
:
{
start_time
:
''
,
end_time
:
''
,
course_id
:
''
,
page
:
1
,
perPage
:
10
,
},
courseStaticList
:
[],
courseStaticTotal
:
0
,
},
});
},
...
...
src/pages/classmgt/index.js
View file @
63b43bd5
...
...
@@ -445,6 +445,36 @@ class ClassMgtForm extends React.Component {
payload
:
timeKey
,
});
}
deleteClass
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
console
.
log
(
record
,
'record'
);
Modal
.
confirm
({
title
:
`确认要删除
${
record
.
title
}
这个班级吗?`
,
okText
:
'确认'
,
cancelText
:
'取消'
,
okType
:
'danger'
,
centered
:
true
,
okButtonProps
:
{
type
:
'danger'
,
style
:
{
color
:
'#fff'
,
backgroundColor
:
'#ff4d4f'
,
borderColor
:
'#ff4d4f'
,
},
},
icon
:
<
Icon
type
=
"close-circle"
style
=
{{
color
:
'red'
}}
/>
,
onOk
:
()
=>
{
dispatch
({
type
:
'classmgt/deleteClass'
,
payload
:
{
id
:
record
.
id
,
},
});
},
onCancel
:
()
=>
{
},
});
}
render
()
{
const
{
getFieldDecorator
}
=
this
.
props
.
form
;
const
{
...
...
@@ -569,6 +599,8 @@ class ClassMgtForm extends React.Component {
}
{
hasBtnPower
(
'sjd/classmgt'
,
'singleWindingUp'
)
&&
record
.
graduation_status
==
2
&&
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
singleResetClassStatusChange
(
record
)}
>
已结业
<
/span>
}
{
hasBtnPower
(
'sjd/classmgt'
,
'singleWindingUp'
)
&&
record
.
graduation_status
==
1
&&
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
singleClassStatusChange
(
record
)}
>
结业
<
/span>
}
<
span
className
=
{
pageStyle
.
divideline
}
>|<
/span
>
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
deleteClass
(
record
)}
>
删除
<
/span
>
<
/div
>
);
},
...
...
src/pages/classrecord/index.js
View file @
63b43bd5
...
...
@@ -172,7 +172,6 @@ class StaticCenter extends React.Component {
queryCallStudentListParams
,
schoolUserInfo
,
}
=
this
.
props
;
console
.
log
(
schoolUserInfo
,
'schoolUserInfo'
);
const
formItemLayout
=
{
labelCol
:
{
xs
:
{
span
:
9
},
...
...
src/pages/index/index.js
View file @
63b43bd5
...
...
@@ -34,10 +34,38 @@ import PlanCourse from '../../components/PlanCourse';
import
ClassRoomMgt
from
'../classmgt/classRoomMgt'
;
import
AddCourseTime
from
'../classdetail/AddCourseTime'
;
import
CourseTimeList
from
'../classdetail/CourseTimeList'
;
import
StudentAdd
from
'../student/StudentAdd'
;
import
Cropper
from
'../../components/Cropper'
;
const
{
RangePicker
}
=
DatePicker
;
const
echarts
=
require
(
'echarts'
);
class
StaticCenter
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
avatorUploader
:
{
maxsize
:
8192
,
// 奖品图片最大尺寸KBcropper: {
cropper
:
{
croppered_params
:
[],
// 图片裁剪后的参数
config
:
{
dragMode
:
'move'
,
viewMode
:
1
,
aspectRatio
:
1
,
autoCropArea
:
0.8
,
guides
:
!
1
,
center
:
!
0
,
highlight
:
!
1
,
dragCrop
:
!
1
,
cropBoxMovable
:
!
1
,
cropBoxResizable
:
!
1
,
zoom
:
-
0.2
,
checkImageOrigin
:
!
0
,
background
:
!
1
,
rotatable
:
!
0
,
},
},
},
};
}
componentDidMount
()
{
// 挂载
pageIn
(
'轻校-概况'
);
}
...
...
@@ -103,19 +131,31 @@ class StaticCenter extends React.Component {
});
}
goDeadlineStudent
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
const
{
dispatch
,
renew
}
=
this
.
props
;
if
(
renew
.
total
===
0
)
{
message
.
warning
(
'还没有续费提醒噢~'
);
return
;
}
dispatch
({
type
:
'indexstaic/goDeadlineStudent'
,
});
}
goBirthStudent
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
const
{
dispatch
,
birthday
}
=
this
.
props
;
if
(
birthday
.
total
===
0
)
{
message
.
warning
(
'还没有学员过生日噢~'
);
return
;
}
dispatch
({
type
:
'indexstaic/goBirthStudent'
,
});
}
goCallStudent
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
const
{
dispatch
,
callData
}
=
this
.
props
;
if
(
callData
.
total
===
0
)
{
message
.
warning
(
'还没有未点名的学生噢~'
);
return
;
}
dispatch
({
type
:
'indexstaic/goCallStudent'
,
});
...
...
@@ -127,7 +167,11 @@ class StaticCenter extends React.Component {
});
}
goPlanStudent
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
const
{
dispatch
,
assign
}
=
this
.
props
;
if
(
assign
.
total
===
0
)
{
message
.
warning
(
'还没有分配的学员噢~'
);
return
;
}
dispatch
({
type
:
'indexstaic/goPlanStudent'
,
});
...
...
@@ -264,6 +308,69 @@ class StaticCenter extends React.Component {
this
.
ds
.
setState
(
'start'
,
new
Date
((
`
${
startText
}
00:00:00`
).
replace
(
/-/g
,
'/'
)).
getTime
());
this
.
ds
.
setState
(
'end'
,
new
Date
((
`
${
endText
}
23:59:59`
).
replace
(
/-/g
,
'/'
)).
getTime
());
}
// 添加学员方法
setModal1Visible
(
visible
)
{
const
{
dispatch
,
schoolUserInfo
}
=
this
.
props
;
dispatch
({
type
:
'students/updateState'
,
payload
:
{
operator
:
{
...
schoolUserInfo
},
studentAvator
:
''
,
},
});
dispatch
({
type
:
'students/modalshoworhide'
,
payload
:
{
visible
,
},
});
}
saveStudent
=
(
value
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'students/studentsAdd'
,
payload
:
{
...
value
,
params
:
{
type
:
'index'
,
// 首页
},
},
});
}
uploadStudentAvator
=
({
files
,
uploadtype
})
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'uploader/queryimgsignature'
,
payload
:
{
files
,
avatorUploader
:
this
.
state
.
avatorUploader
,
uploadtype
,
},
});
}
cancelCropper
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'uploader/cancelcropper'
,
});
}
getCropperUrl
=
(
url
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'uploader/updateState'
,
payload
:
{
cropperUrl
:
url
,
},
});
}
sureCropper
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'uploader/surecropper'
,
payload
:
{
},
});
}
render
()
{
const
that
=
this
;
const
{
...
...
@@ -287,6 +394,12 @@ class StaticCenter extends React.Component {
chartStartDate
,
scheduleCount
,
courseTimeListShow
,
addOrUpdateDiaShow
,
datetime
,
studentAvator
,
cropperboxShow
,
uploadImgUrl
,
avatorUploader
,
}
=
this
.
props
;
// 图表功能注释代码
// const dataArray = clockCharts;
...
...
@@ -577,45 +690,45 @@ class StaticCenter extends React.Component {
<
Card
className
=
{
pageStyle
.
informList
}
bodyStyle
=
{{
borderRadius
:
6
,
padding
:
'36px 0'
}}
bordered
=
{
false
}
>
<
Row
gutter
=
{
24
}
>
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
4
,
offset
:
1
}}
lg
=
{{
span
:
4
,
offset
:
1
}}
xl
=
{{
span
:
4
,
offset
:
1
}}
>
<
div
className
=
{
pageStyle
.
informItem
}
>
<
div
className
=
{
pageStyle
.
informItem
}
onClick
=
{()
=>
this
.
setModal1Visible
(
true
)}
>
<
div
className
=
{
pageStyle
.
informImg
}
><
img
src
=
{
`
${
__IMGCDN__
}
/index/inform_icon1.png`
}
alt
=
""
/>
<
Badge
className
=
{
pageStyle
.
informNum
}
count
=
{
99
}
>
<
Badge
className
=
{
pageStyle
.
informNum
}
>
<
/Badge
>
<
/div
>
<
div
className
=
{
pageStyle
.
informTip
}
>
学员报名
<
/div
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
4
,
offset
:
1
}}
lg
=
{{
span
:
4
,
offset
:
1
}}
xl
=
{{
span
:
4
,
offset
:
1
}}
>
<
div
className
=
{
pageStyle
.
informItem
}
>
<
div
className
=
{
pageStyle
.
informItem
}
onClick
=
{
this
.
goCallStudent
}
>
<
div
className
=
{
pageStyle
.
informImg
}
><
img
src
=
{
`
${
__IMGCDN__
}
/index/inform_icon2.png`
}
alt
=
""
/>
<
Badge
className
=
{
pageStyle
.
informNum
}
count
=
{
99
}
>
<
Badge
className
=
{
pageStyle
.
informNum
}
overflowCount
=
{
999
}
count
=
{
callData
.
total
}
>
<
/Badge
>
<
/div
>
<
div
className
=
{
pageStyle
.
informTip
}
>
点名提醒
<
/div
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
4
,
offset
:
1
}}
lg
=
{{
span
:
4
,
offset
:
1
}}
xl
=
{{
span
:
4
,
offset
:
1
}}
>
<
div
className
=
{
pageStyle
.
informItem
}
>
<
div
className
=
{
pageStyle
.
informItem
}
onClick
=
{
this
.
goPlanStudent
}
>
<
div
className
=
{
pageStyle
.
informImg
}
><
img
src
=
{
`
${
__IMGCDN__
}
/index/inform_icon3.png`
}
alt
=
""
/>
<
Badge
className
=
{
pageStyle
.
informNum
}
count
=
{
99
}
>
<
Badge
className
=
{
pageStyle
.
informNum
}
overflowCount
=
{
999
}
count
=
{
assign
.
total
}
>
<
/Badge
>
<
/div
>
<
div
className
=
{
pageStyle
.
informTip
}
>
分配提醒
<
/div
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
4
,
offset
:
1
}}
lg
=
{{
span
:
4
,
offset
:
1
}}
xl
=
{{
span
:
4
,
offset
:
1
}}
>
<
div
className
=
{
pageStyle
.
informItem
}
>
<
div
className
=
{
pageStyle
.
informItem
}
onClick
=
{
this
.
goBirthStudent
}
>
<
div
className
=
{
pageStyle
.
informImg
}
><
img
src
=
{
`
${
__IMGCDN__
}
/index/inform_icon4.png`
}
alt
=
""
/>
<
Badge
className
=
{
pageStyle
.
informNum
}
count
=
{
99
}
>
<
Badge
className
=
{
pageStyle
.
informNum
}
overflowCount
=
{
999
}
count
=
{
birthday
.
total
}
>
<
/Badge
>
<
/div
>
<
div
className
=
{
pageStyle
.
informTip
}
>
生日提醒
<
/div
>
<
/div
>
<
/Col
>
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
4
,
offset
:
0
}}
lg
=
{{
span
:
4
,
offset
:
0
}}
xl
=
{{
span
:
4
,
offset
:
0
}}
>
<
div
className
=
{
pageStyle
.
informItem
}
>
<
div
className
=
{
pageStyle
.
informItem
}
onClick
=
{
this
.
goDeadlineStudent
}
>
<
div
className
=
{
pageStyle
.
informImg
}
><
img
src
=
{
`
${
__IMGCDN__
}
/index/inform_icon5.png`
}
alt
=
""
/>
<
Badge
className
=
{
pageStyle
.
informNum
}
count
=
{
99
}
>
<
Badge
className
=
{
pageStyle
.
informNum
}
overflowCount
=
{
999
}
count
=
{
renew
.
total
}
>
<
/Badge
>
<
/div
>
<
div
className
=
{
pageStyle
.
informTip
}
>
续费提醒
<
/div
>
...
...
@@ -634,7 +747,21 @@ class StaticCenter extends React.Component {
<
/div
>
<
/Col
>
<
/Row
>
<
StudentAdd
visible
=
{
addOrUpdateDiaShow
}
save
=
{
this
.
saveStudent
}
datetime
=
{
datetime
}
hide
=
{()
=>
this
.
setModal1Visible
(
false
)}
uploadAvator
=
{
this
.
uploadStudentAvator
}
studentAvator
=
{
studentAvator
}
/
>
{
cropperboxShow
&&
<
Cropper
avatorUploader
=
{
this
.
state
.
avatorUploader
}
cancelCropper
=
{
this
.
cancelCropper
}
getCropperUrl
=
{
this
.
getCropperUrl
}
sureCropper
=
{
this
.
sureCropper
}
uploadImgUrl
=
{
uploadImgUrl
}
/>
}
{
/* <AddCourseTime */
}
{
/* visible={addCourseTimeShow} */
}
{
/* saveCourseTime={this.saveCourseTime} */
}
...
...
@@ -678,6 +805,16 @@ function mapStateToProps(state) {
}
=
state
.
indexstaic
;
// eslint-disable-next-line no-empty-pattern
const
{}
=
state
.
createtheme
;
const
{
cropperboxShow
,
uploadImgUrl
,
avatorUploader
,
}
=
state
.
uploader
;
const
{
addOrUpdateDiaShow
,
datetime
,
studentAvator
,
}
=
state
.
students
;
return
{
staticcenter
,
clockCharts
,
...
...
@@ -700,6 +837,12 @@ function mapStateToProps(state) {
chartStartDate
,
scheduleCount
,
courseTimeListShow
,
addOrUpdateDiaShow
,
datetime
,
studentAvator
,
cropperboxShow
,
uploadImgUrl
,
avatorUploader
,
};
}
export
default
connect
(
mapStateToProps
)(
StaticCenter
);
...
...
src/pages/index/index.less
View file @
63b43bd5
...
...
@@ -184,6 +184,7 @@
border-radius: 6px;
margin: 14px 0;
.informItem {
cursor: pointer;
.informImg {
width: 77px;
height: 77px;
...
...
src/pages/student/RenewEdit.js
View file @
63b43bd5
...
...
@@ -322,6 +322,25 @@ class RenewEdit extends React.Component {
<
/div
>
}
<
/Col
>
<
Col
className
=
{
pageStyle
.
course
}
>
<
Form
.
Item
label
=
{
<
span
>
备
&
nbsp
;
&
nbsp
;
&
nbsp
;
&
nbsp
;
&
nbsp
;
&
nbsp
;
注
<
/span>
}
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
4
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
20
},
}}
>
{
getFieldDecorator
(
'remark'
,
{
initialValue
:
''
,
})(
<
TextArea
placeholder
=
"请输入备注"
rows
=
{
4
}
/>
,
)}
<
/Form.Item
>
<
/Col
>
<
Col
className
=
{
pageStyle
.
course
}
>
<
Form
.
Item
label
=
{
<
span
>&
nbsp
;
&
nbsp
;
操
&
nbsp
;
&
nbsp
;
作
&
nbsp
;
&
nbsp
;
人
<
/span>
}
...
...
src/pages/student/eliminateEdit.js
View file @
63b43bd5
import
{
connect
}
from
'dva'
;
import
React
from
'react'
;
import
{
Icon
,
Button
,
Row
,
Col
,
Input
,
InputNumber
,
Select
,
Checkbox
,
Table
,
Modal
,
Form
,
Alert
}
from
'antd'
;
import
{
Icon
,
Button
,
Row
,
Col
,
Input
,
InputNumber
,
Select
,
Checkbox
,
Table
,
Modal
,
Form
,
Radio
}
from
'antd'
;
import
pageStyle
from
'./eliminateEdit.less'
;
import
{
pageIn
}
from
'../../utils/index'
;
const
{
Option
}
=
Select
;
...
...
@@ -15,6 +15,8 @@ class eliminateEdit extends React.Component {
},
expendValue
:
null
,
remarkTitle
:
''
,
payCourseValue
:
0
,
giveCourseValue
:
0
,
};
}
componentDidMount
()
{
// 挂载
...
...
@@ -71,20 +73,25 @@ class eliminateEdit extends React.Component {
surplus
:
0
,
},
remarkTitle
:
''
,
giveCourseValue
:
0
,
payCourseValue
:
0
,
});
}
expendChange
=
(
e
)
=>
{
const
{
currentCourse
}
=
this
.
state
;
const
{
studentinfo
}
=
this
.
props
;
const
{
getFieldDecorator
,
getFieldValue
}
=
this
.
props
.
form
;
this
.
props
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
this
.
setState
({
expendValue
:
Number
(
currentCourse
.
surplus
-
Number
(
e
.
target
.
value
)),
giveCourseValue
:
Number
(
getFieldValue
(
'course_type'
))
===
2
?
Number
(
studentinfo
.
surplus_give
-
Number
(
e
.
target
.
value
))
:
studentinfo
.
surplus_give
,
payCourseValue
:
Number
(
getFieldValue
(
'course_type'
))
===
1
?
Number
(
studentinfo
.
surplus_buy
-
Number
(
e
.
target
.
value
))
:
studentinfo
.
surplus_buy
,
});
}
});
}
handleChangeSize
=
(
e
)
=>
{
console
.
log
(
e
.
target
.
value
,
'1111111'
);
this
.
setState
({
remarkTitle
:
e
.
target
.
value
,
});
...
...
@@ -101,7 +108,9 @@ class eliminateEdit extends React.Component {
}
=
this
.
props
;
const
{
getFieldDecorator
,
getFieldValue
}
=
this
.
props
.
form
;
const
courseExcludeClassTypeList
=
(
studentinfo
.
student_courses
&&
studentinfo
.
student_courses
.
filter
(
ele
=>
ele
.
course_mode
!=
3
))
||
[];
const
{
currentCourse
,
expendValue
,
remarkTitle
}
=
this
.
state
;
const
{
currentCourse
,
expendValue
,
remarkTitle
,
giveCourseValue
,
payCourseValue
,
}
=
this
.
state
;
return
(
<
Modal
visible
=
{
visible
}
...
...
@@ -120,11 +129,11 @@ class eliminateEdit extends React.Component {
label
=
"已购课程"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
1
9
},
sm
:
{
span
:
1
8
},
}}
>
{
getFieldDecorator
(
'student_course_id'
,
{
...
...
@@ -139,11 +148,11 @@ class eliminateEdit extends React.Component {
label
=
"当前剩余"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
1
9
},
sm
:
{
span
:
1
8
},
}}
>
{
currentCourse
.
course_mode
==
1
&&
...
...
@@ -156,15 +165,38 @@ class eliminateEdit extends React.Component {
)
:
(
''
)}
{
currentCourse
.
course_mode
===
1
?
<
Form
.
Item
label
=
"选择课时类型"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
18
},
}}
>
{
getFieldDecorator
(
'course_type'
,
{
initialValue
:
'1'
,
})(
<
Radio
.
Group
>
<
Radio
value
=
"1"
>
付费(剩余课时
{
studentinfo
.
surplus_buy
}
)
<
/Radio
>
<
Radio
value
=
"2"
>
赠送(赠送课时
{
studentinfo
.
surplus_give
}
)
<
/Radio
>
<
/Radio.Group>
,
)}
<
/Form.Item> : '
'
}
<
Form
.
Item
label
=
"本次消耗"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
1
9
},
sm
:
{
span
:
1
8
},
}}
>
{
getFieldDecorator
(
'expend'
,
{
...
...
@@ -184,28 +216,44 @@ class eliminateEdit extends React.Component {
},
],
})(
<
InputNumber
onBlur
=
{
e
=>
this
.
expendChange
(
e
)}
placeholder
=
"请输入消课数量"
style
=
{{
width
:
200
}}
/>
,
<
InputNumber
step
=
{
currentCourse
.
course_mode
===
1
?
0.5
:
1
}
onBlur
=
{
e
=>
this
.
expendChange
(
e
)}
placeholder
=
"请输入消课数量"
style
=
{{
width
:
200
}}
/>
,
)}
<
span
className
=
"ant-form-text"
>
{
currentCourse
.
course_mode
===
1
?
'课时'
:
'天'
}
<
/span
>
<
/Form.Item
>
{
getFieldValue
(
'student_course_id'
)
!=
undefined
?
(
{
getFieldValue
(
'student_course_id'
)
!=
undefined
&&
currentCourse
.
course_mode
===
1
?
(
<
Form
.
Item
label
=
"消
耗后剩余
"
label
=
"消
课后总剩余课时
"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
19
},
sm
:
{
span
:
18
},
}}
>
<
div
className
=
{
pageStyle
.
typeCourseList
}
>
<
span
>
{
expendValue
||
currentCourse
.
surplus
}
<
/span
>
<
span
>
付费剩余课时
:
{
payCourseValue
}
<
/span
>
<
span
>
赠送剩余课时
:
{
giveCourseValue
}
<
/span
>
<
/div
>
<
/Form.Item
>
)
:
(
''
)}
{
getFieldValue
(
'student_course_id'
)
!=
undefined
&&
currentCourse
.
course_mode
==
2
?
(
<
Form
.
Item
label
=
"消课后"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
18
},
}}
>
{
currentCourse
.
course_mode
==
1
&&
<
span
>
{
expendValue
||
currentCourse
.
surplus
}
课时
<
/span
>
}
{
currentCourse
.
course_mode
==
2
&&
<
span
>
{
expendValue
||
currentCourse
.
surplus
}
天
<
/span
>
}
<
/Form.Item
>
)
:
(
''
...
...
@@ -214,11 +262,11 @@ class eliminateEdit extends React.Component {
label
=
"备注"
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
1
9
},
sm
:
{
span
:
1
8
},
}}
>
{
getFieldDecorator
(
'remark'
,
{
...
...
@@ -233,11 +281,11 @@ class eliminateEdit extends React.Component {
label
=
{
<
span
>&
nbsp
;
&
nbsp
;
操
&
nbsp
;
&
nbsp
;
作
&
nbsp
;
&
nbsp
;
人
<
/span>
}
labelCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
sm
:
{
span
:
6
},
}}
wrapperCol
=
{{
xs
:
{
span
:
24
},
sm
:
{
span
:
1
9
},
sm
:
{
span
:
1
8
},
}}
>
{
getFieldDecorator
(
'operator_id'
,
{
...
...
src/pages/student/eliminateEdit.less
View file @
63b43bd5
...
...
@@ -10,3 +10,9 @@
bottom: -2px;
}
}
.typeCourseList {
&>span {
display: inline-block;
margin-right: 10px;
}
}
src/pages/student/index.js
View file @
63b43bd5
...
...
@@ -745,6 +745,7 @@ class StudentMgt extends React.Component {
historyStudentLoading
,
deleteOneVisible
,
deleteTabKey
,
indexQrcodeTitle
,
}
=
this
.
props
;
const
{
qrCodeTitle
,
isExpendMore
,
isChecked
,
isShowQuestion
,
...
...
@@ -785,38 +786,41 @@ class StudentMgt extends React.Component {
return
(
<
div
>
{
/* { new Date(Date(record.birthday)).getFullYear()} */
}
{
record
.
birthday
?
(
new
Date
().
getFullYear
()
+
1
)
-
new
Date
(
record
.
birthday
).
getFullYear
()
:
''
}
{
record
.
birthday
?
`
${(
new
Date
().
getFullYear
()
+
1
)
-
new
Date
(
record
.
birthday
).
getFullYear
()}
岁`
:
''
}
<
/div
>
);
},
},
{
title
:
'购买课时'
,
title
:
'购买
总
课时'
,
dataIndex
:
'buy'
,
key
:
'buy'
,
},
{
title
:
'
赠送课时
'
,
dataIndex
:
'
give
'
,
key
:
'
give
'
,
},
{
title
:
'已消耗课时'
,
dataIndex
:
'expend'
,
key
:
'expend'
,
title
:
'
付费课时(消耗/总数)
'
,
dataIndex
:
'
expend_buy
'
,
key
:
'
expend_buy
'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
record
.
expend_buy
}
/ {record.buy}</
div
>
);
}
,
},
{
title
:
'
剩余课时
'
,
dataIndex
:
'
remian
'
,
key
:
'
remian
'
,
title
:
'
赠送课时(消耗/总数)
'
,
dataIndex
:
'
expend_give
'
,
key
:
'
expend_give
'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
record
.
total
-
record
.
expend
}
<
/div
>
<
div
>
{
record
.
expend_give
}
/ {record.give}</
div
>
);
},
},
{
title
:
'剩余总课时'
,
dataIndex
:
'surplus'
,
key
:
'surplus'
,
},
{
title
:
'缺课次数'
,
dataIndex
:
'truancy_count'
,
...
...
@@ -1011,7 +1015,7 @@ class StudentMgt extends React.Component {
previewQrcodeShow
=
{
previewQrcodeShow
}
closeQrcodeShow
=
{
this
.
closeQrcodeShow
}
previewQrcode
=
{
previewQrcode
}
title
=
{
qrCodeTitle
}
title
=
{
qrCodeTitle
||
indexQrcodeTitle
}
/
>
<
Modal
className
=
{
pageStyle
.
deleteModal
}
...
...
@@ -1298,6 +1302,7 @@ function mapStateToProps(state) {
historyStudentLoading
,
deleteOneVisible
,
deleteTabKey
,
indexQrcodeTitle
,
}
=
state
.
students
;
const
{
schoolUserInfo
,
...
...
@@ -1354,6 +1359,7 @@ function mapStateToProps(state) {
historyStudentLoading
,
deleteOneVisible
,
deleteTabKey
,
indexQrcodeTitle
,
};
}
export
default
connect
(
mapStateToProps
)(
ForgotPassword
);
...
...
src/pages/studentinfo/index.js
View file @
63b43bd5
This diff is collapsed.
Click to expand it.
src/pages/studentinfo/index.less
View file @
63b43bd5
...
...
@@ -184,3 +184,14 @@
color: #108EE9;
font-weight: 700;
}
.item {
:global {
.ant-descriptions-item-content {
&>img {
width: 22px;
height: 22px;
margin-right: 11px;
}
}
}
}
src/pages/teacher/index.js
View file @
63b43bd5
...
...
@@ -344,13 +344,37 @@ class ClassMgt extends React.Component {
key
:
'phone'
,
},
{
title
:
'上月课次'
,
title
:
'上月
已上
课次'
,
dataIndex
:
'last_month_time'
,
key
:
'last_month_time'
,
render
:
(
text
,
record
,
index
)
=>
{
return
(
<
div
>
{(
record
.
last_month_time
&&
record
.
last_month_time
)
||
'-'
}
{
text
||
'-'
}
<
/div
>
);
},
},
{
title
:
'上月点名课次'
,
dataIndex
:
'last_month_call_time'
,
key
:
'last_month_call_time'
,
render
:
(
text
)
=>
{
return
(
<
div
>
{
text
||
'-'
}
<
/div
>
);
},
},
{
title
:
'上月消耗课时'
,
dataIndex
:
'last_extend_time'
,
key
:
'last_extend_time'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
text
||
'-'
}
<
/div
>
);
},
...
...
@@ -359,34 +383,46 @@ class ClassMgt extends React.Component {
title
:
'本月课次'
,
dataIndex
:
'cur_month_time'
,
key
:
'cur_month_time'
,
render
:
(
text
,
record
,
index
)
=>
{
render
:
(
text
)
=>
{
return
(
<
div
>
{
(
record
.
cur_month_time
&&
record
.
cur_month_time
)
||
'-'
}
{
text
||
'-'
}
<
/div
>
);
},
},
{
title
:
'已上课次'
,
title
:
'
本月
已上课次'
,
dataIndex
:
'total_month_time'
,
key
:
'total_month_time'
,
render
:
(
text
,
record
,
index
)
=>
{
return
(
<
div
>
{
(
record
.
total_month_time
&&
record
.
total_month_time
)
||
'-'
}
{
text
||
'-'
}
<
/div
>
);
},
},
{
title
:
'
已
点名课次'
,
title
:
'
本月
点名课次'
,
dataIndex
:
'already_total_month_time'
,
key
:
'already_total_month_time'
,
render
:
(
text
,
record
,
index
)
=>
{
return
(
<
div
>
{(
record
.
already_total_month_time
&&
record
.
already_total_month_time
)
||
'-'
}
{
text
||
'-'
}
<
/div
>
);
},
},
{
title
:
'本月消耗课时'
,
dataIndex
:
'cur_extend_time'
,
key
:
'cur_extend_time'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
text
||
'-'
}
<
/div
>
);
},
...
...
src/pages/teacherinfo/index.js
View file @
63b43bd5
import
{
connect
}
from
'dva'
;
import
React
from
'react'
;
import
{
Icon
,
Button
,
Row
,
Col
,
message
,
Tabs
,
Select
,
Descriptions
,
InputNumber
,
DatePicker
,
Tooltip
,
Form
,
Table
,
Modal
,
Input
,
Pagination
}
from
'antd'
;
import
moment
from
'moment'
;
import
pageStyle
from
'./index.less'
;
import
{
pageIn
,
imagify
,
hasBtnPower
}
from
'../../utils/index'
;
import
ChangeCourse
from
'../classdetail/ChangeCourse'
;
...
...
@@ -11,6 +12,7 @@ const { confirm } = Modal;
const
{
Option
}
=
Select
;
const
{
TextArea
}
=
Input
;
const
{
TabPane
}
=
Tabs
;
const
FormItem
=
Form
.
Item
;
class
teachersForm
extends
React
.
Component
{
state
=
{
// visible: false,
...
...
@@ -412,9 +414,79 @@ class teachersForm extends React.Component {
},
});
}
handleSearchCourse
=
(
e
)
=>
{
const
{
dispatch
,
form
}
=
this
.
props
;
e
.
preventDefault
();
this
.
props
.
form
.
validateFields
((
err
,
values
)
=>
{
if
(
!
err
)
{
const
{
time
,
course_id
,
}
=
values
;
let
start_time
;
let
end_time
;
if
(
time
)
{
start_time
=
moment
(
time
[
0
]).
format
(
'YYYY-MM-DD'
);
end_time
=
moment
(
time
[
1
]).
format
(
'YYYY-MM-DD'
);
delete
[
'time'
];
}
dispatch
({
type
:
'teachersinfo/selectCourseStatistical'
,
payload
:
{
params
:
{
page
:
1
,
start_time
,
end_time
,
course_id
,
},
},
});
}
});
}
courseStaticPagination
=
(
page
,
perPage
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'teachersinfo/selectCourseStatistical'
,
payload
:
{
params
:
{
page
,
perPage
,
},
},
});
}
courseStaticSize
=
(
page
,
perPage
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'teachersinfo/selectCourseStatistical'
,
payload
:
{
params
:
{
page
,
perPage
,
},
},
});
}
handleSearchResetCourse
=
()
=>
{
const
{
dispatch
,
form
}
=
this
.
props
;
form
.
resetFields
();
dispatch
({
type
:
'teachersinfo/selectCourseStatistical'
,
payload
:
{
params
:
{
perPage
:
10
,
page
:
1
,
start_time
:
''
,
end_time
:
''
,
course_id
:
''
,
},
},
});
}
render
()
{
const
{
getFieldDecorator
}
=
this
.
props
.
form
;
const
{
form
:
{
getFieldDecorator
,
getFieldValue
},
teachersdetail
,
addOrUpdateDiaShow
,
teachersschedulelist
,
...
...
@@ -451,6 +523,9 @@ class teachersForm extends React.Component {
callStudentTotal
,
callStudentList
,
timeArr
,
courseStaticList
,
courseStaticTotal
,
courseStaticParams
,
}
=
this
.
props
;
const
classinfo
=
[
{
...
...
@@ -748,6 +823,47 @@ class teachersForm extends React.Component {
},
},
];
const
courseStaticColumns
=
[
{
title
:
'课程名称'
,
dataIndex
:
'title'
,
key
:
'title'
,
},
{
title
:
'已上课次'
,
dataIndex
:
'time'
,
key
:
'time'
,
render
:
(
text
)
=>
{
return
<
div
>
{
text
||
0
}
<
/div>
;
},
},
{
title
:
'已点名课次'
,
dataIndex
:
'call_time'
,
key
:
'call_time'
,
render
:
(
text
)
=>
{
return
<
div
>
{
text
||
0
}
<
/div>
;
},
},
{
title
:
'已消耗课时'
,
dataIndex
:
'extend_time'
,
key
:
'extend_time'
,
render
:
(
text
)
=>
{
return
<
div
>
{
text
||
0
}
<
/div>
;
},
},
];
const
formItemLayout
=
{
labelCol
:
{
xs
:
{
span
:
4
},
sm
:
{
span
:
5
},
},
wrapperCol
:
{
xs
:
{
span
:
20
},
sm
:
{
span
:
19
},
},
};
return
(
<
div
className
=
{
`
${
pageStyle
.
container
}
container`
}
>
<
Modal
...
...
@@ -818,7 +934,7 @@ class teachersForm extends React.Component {
<
Col
span
=
{
12
}
>
<
Descriptions
style
=
{{
width
:
600
}}
>
<
Descriptions
.
Item
className
=
{
pageStyle
.
item
}
><
img
src
=
{
`
${
__IMGCDN__
}
/teacher/people_icon.png`
}
alt
=
""
/>
{
teachersdetail
.
nickname
}
<
/Descriptions.Item
>
<
Descriptions
.
Item
className
=
{
pageStyle
.
item
}
><
img
src
=
{
`
${
__IMGCDN__
}
/teacher/phone_icon.png`
}
alt
=
""
/>
{
teachersdetail
.
phone
}
<
/Descriptions.Item
>
<
Descriptions
.
Item
className
=
{
pageStyle
.
item
}
><
img
src
=
{
`
${
__IMGCDN__
}
/teacher/phone_icon.png`
}
alt
=
""
/>
{
teachersdetail
.
phone
||
'-'
}
<
/Descriptions.Item
>
<
Descriptions
.
Item
className
=
{
pageStyle
.
item
}
label
=
"备注"
>
{
teachersdetail
.
remark
}
<
/Descriptions.Item
>
<
/Descriptions
>
<
/Col
>
...
...
@@ -953,6 +1069,67 @@ class teachersForm extends React.Component {
<
Table
scroll
=
{{
x
:
'max-content'
}}
rowKey
=
"id"
dataSource
=
{
scheduleList
}
columns
=
{
columns
}
/
>
<
/div
>
<
/TabPane
>
<
TabPane
tab
=
"课时统计"
key
=
"4"
>
<
div
>
<
div
className
=
{
pageStyle
.
name
}
>
<
Form
labelAlign
=
"left"
onSubmit
=
{
this
.
handleSearchCourse
}
>
<
Row
gutter
=
{{
sm
:
2
,
xs
:
12
,
md
:
24
,
lg
:
24
,
}}
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
24
}}
md
=
{{
span
:
8
}}
lg
=
{{
span
:
5
}}
xl
=
{{
span
:
5
}}
>
<
FormItem
{...
formItemLayout
}
label
=
"上课时间"
>
{
getFieldDecorator
(
'time'
,
{
initialValue
:
''
})(
<
RangePicker
style
=
{{
width
:
'100%'
}}
/>
,
)}
<
/FormItem
>
<
/Col
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
12
}}
md
=
{{
span
:
8
}}
lg
=
{{
span
:
5
}}
xl
=
{{
span
:
5
}}
>
<
FormItem
{...
formItemLayout
}
label
=
"课程"
>
{
getFieldDecorator
(
'course_id'
,
{
initialValue
:
''
})(
<
Select
style
=
{{
width
:
150
}}
>
<
Option
value
=
""
>
全部
<
/Option
>
{
courseList
.
map
(
ele
=>
<
Option
key
=
{
ele
.
id
}
value
=
{
ele
.
id
}
>
{
ele
.
title
}
<
/Option>
)
}
<
/Select>
,
)}
<
/FormItem
>
<
/Col
>
<
Col
xs
=
{{
span
:
24
}}
sm
=
{{
span
:
24
}}
md
=
{{
span
:
8
}}
lg
=
{{
span
:
5
}}
xl
=
{{
span
:
5
}}
>
<
FormItem
>
<
Button
onClick
=
{
this
.
handleSearchResetCourse
}
style
=
{{
marginRight
:
20
}}
>
重置
<
/Button
>
<
Button
type
=
"primary"
htmlType
=
"submit"
>
搜索
<
/Button
>
<
/FormItem
>
<
/Col
>
<
/Row
>
<
/Form
>
<
/div
>
<
/div
>
<
div
className
=
{
pageStyle
.
tablebox
}
>
<
Table
rowKey
=
"id"
dataSource
=
{
courseStaticList
}
columns
=
{
courseStaticColumns
}
pagination
=
{
false
}
scroll
=
{{
x
:
'max-content'
}}
footer
=
{()
=>
(
<
div
className
=
"tablefooterbox"
>
<
span
className
=
"tablefooterstatic"
>
共
{
courseStaticTotal
}
条数据
<
/span
>
<
Pagination
showSizeChanger
total
=
{
Number
(
courseStaticTotal
)}
onChange
=
{
this
.
courseStaticPagination
}
onShowSizeChange
=
{
this
.
courseStaticSize
}
/
>
<
/div
>
)}
/
>
<
/div
>
<
/TabPane
>
<
/Tabs
>
<
/div
>
<
/div
>
...
...
@@ -1017,6 +1194,9 @@ function mapStateToProps(state) {
timeArr
,
teacherList
,
datetime
,
courseStaticList
,
courseStaticTotal
,
courseStaticParams
,
}
=
state
.
teachersinfo
;
const
{
changeScheduleIndex
,
...
...
@@ -1077,6 +1257,9 @@ function mapStateToProps(state) {
callStudentTotal
,
callStudentList
,
timeArr
,
courseStaticList
,
courseStaticTotal
,
courseStaticParams
,
};
}
export
default
connect
(
mapStateToProps
)(
ForgotPassword
);
...
...
src/services/classmgt.js
View file @
63b43bd5
...
...
@@ -127,3 +127,10 @@ export function GetWxConfig(params) {
data
,
});
}
export
function
deleteClassMgt
(
params
)
{
const
data
=
qs
.
stringify
(
params
);
return
request
({
url
:
`
${
api
.
classMgt
.
deleteClassMgt
}
/
${
params
.
id
}
`
,
method
:
'DELETE'
,
});
}
src/services/teachers.js
View file @
63b43bd5
...
...
@@ -63,3 +63,11 @@ export function teacherInvitations(params) {
data
,
});
}
export
function
selectCourseStatistical
(
params
)
{
const
data
=
qs
.
stringify
(
params
);
return
request
({
url
:
`
${
api
.
teacherMgt
.
courseStatistical
}
?
${
data
}
`
,
method
:
'GET'
,
data
,
});
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment