Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
aa7d4cbb
Commit
aa7d4cbb
authored
May 17, 2021
by
chenshu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:初始化
parent
7ea2f1f7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
33 additions
and
107 deletions
+33
-107
src/components/MultipleDatePicker.jsx
+1
-1
src/modules/course-manage/offline-course/AddOfflineCourse.jsx
+0
-0
src/modules/course-manage/offline-course/components/OfflineCourseList.jsx
+16
-97
src/modules/course-manage/offline-course/modal/QRCodeModal.jsx
+16
-9
No files found.
src/components/MultipleDatePicker.jsx
View file @
aa7d4cbb
...
@@ -115,7 +115,7 @@ class MultipleDatePicker extends React.Component {
...
@@ -115,7 +115,7 @@ class MultipleDatePicker extends React.Component {
}
}
handleShowDetail
(
time
,
className
)
{
handleShowDetail
(
time
,
className
)
{
if
(
!
this
.
props
.
canSelectTodayBefore
&&
className
===
'before-disabled'
)
{
if
(
(
!
this
.
props
.
canSelectTodayBefore
&&
className
===
'before-disabled'
)
||
this
.
props
.
disabled
)
{
return
return
}
}
let
date
=
time
.
valueOf
();
let
date
=
time
.
valueOf
();
...
...
src/modules/course-manage/offline-course/AddOfflineCourse.jsx
View file @
aa7d4cbb
This diff is collapsed.
Click to expand it.
src/modules/course-manage/offline-course/components/OfflineCourseList.jsx
View file @
aa7d4cbb
...
@@ -33,8 +33,6 @@ class OfflineCourseList extends React.Component {
...
@@ -33,8 +33,6 @@ class OfflineCourseList extends React.Component {
this
.
state
=
{
this
.
state
=
{
id
:
''
,
// 视频课ID
id
:
''
,
// 视频课ID
studentIds
:
[],
studentIds
:
[],
RelatedPlanModalVisible
:
false
,
selectPlanList
:
{},
}
}
}
}
...
@@ -169,8 +167,8 @@ class OfflineCourseList extends React.Component {
...
@@ -169,8 +167,8 @@ class OfflineCourseList extends React.Component {
return
(
return
(
<
div
className=
"operate"
>
<
div
className=
"operate"
>
<
div
className=
"operate__item"
onClick=
{
()
=>
window
.
RCHistory
.
push
(
`/offline-course/data?id=${record.courseId}`
)
}
>
参与数据
</
div
>
<
div
className=
"operate__item"
onClick=
{
()
=>
window
.
RCHistory
.
push
(
`/offline-course/data?id=${record.courseId}`
)
}
>
参与数据
</
div
>
<
span
className=
"operate__item split"
>
|
</
span
>
{
record
.
courseState
!==
'EXPIRED'
&&
<
span
className=
"operate__item split"
>
|
</
span
>
}
<
div
className=
"operate__item"
onClick=
{
()
=>
this
.
handleShowShareModal
(
record
)
}
>
分享
</
div
>
{
record
.
courseState
!==
'EXPIRED'
&&
<
div
className=
"operate__item"
onClick=
{
()
=>
this
.
handleShowShareModal
(
record
)
}
>
分享
</
div
>
}
<
span
className=
"operate__item split"
>
|
</
span
>
<
span
className=
"operate__item split"
>
|
</
span
>
<
Dropdown
overlay=
{
this
.
renderMoreOperate
(
record
)
}
>
<
Dropdown
overlay=
{
this
.
renderMoreOperate
(
record
)
}
>
<
span
className=
"more-operate"
>
<
span
className=
"more-operate"
>
...
@@ -190,42 +188,6 @@ class OfflineCourseList extends React.Component {
...
@@ -190,42 +188,6 @@ class OfflineCourseList extends React.Component {
];
];
return
columns
;
return
columns
;
}
}
handleRelatedModalShow
=
(
item
)
=>
{
const
selectPlanList
=
{};
if
(
item
.
relatedPlanList
){
item
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
selectPlanList
[
item
.
planId
]
=
{}
selectPlanList
[
item
.
planId
].
planId
=
item
.
planId
;
selectPlanList
[
item
.
planId
].
taskBaseVOList
=
[{
taskId
:
item
.
taskId
}];
return
item
})
}
this
.
setState
({
RelatedPlanModalVisible
:
true
,
selectCourseId
:
item
.
courseId
,
selectPlanList
:
selectPlanList
,
})
}
closeRelatedPlanModalVisible
=
()
=>
{
this
.
setState
({
RelatedPlanModalVisible
:
false
})
}
onChangeSelectPlanList
=
(
selectPlanList
)
=>
{
this
.
setState
({
selectPlanList
:
selectPlanList
})
}
onConfirmSelectPlanList
=
()
=>
{
this
.
setState
({
RelatedPlanModalVisible
:
false
},
()
=>
{
this
.
props
.
onChange
();
});
}
// 显示预览弹窗
// 显示预览弹窗
handleShowPreviewModal
=
(
query
)
=>
{
handleShowPreviewModal
=
(
query
)
=>
{
...
@@ -265,13 +227,13 @@ class OfflineCourseList extends React.Component {
...
@@ -265,13 +227,13 @@ class OfflineCourseList extends React.Component {
renderMoreOperate
=
(
item
)
=>
{
renderMoreOperate
=
(
item
)
=>
{
return
(
return
(
<
div
className=
"live-course-more-menu"
>
<
div
className=
"live-course-more-menu"
>
<
div
{
item
.
courseState
!==
'EXPIRED'
&&
<
div
className=
"operate__item"
className=
"operate__item"
key=
"qrcode"
key=
"qrcode"
onClick=
{
()
=>
{
onClick=
{
()
=>
{
this
.
setState
({
openQRCodeModal
:
true
,
qrcodeData
:
item
})
this
.
setState
({
openQRCodeModal
:
true
,
qrcodeData
:
item
})
}
}
}
}
>
考勤二维码
</
div
>
>
考勤二维码
</
div
>
}
<
div
<
div
className=
"operate__item"
className=
"operate__item"
key=
"preview"
key=
"preview"
...
@@ -279,20 +241,20 @@ class OfflineCourseList extends React.Component {
...
@@ -279,20 +241,20 @@ class OfflineCourseList extends React.Component {
this
.
handleShowPreviewModal
(
item
);
this
.
handleShowPreviewModal
(
item
);
}
}
}
}
>
预览
</
div
>
>
预览
</
div
>
<
div
{
item
.
courseState
===
'UN_START'
&&
item
.
courseState
===
'STARTING'
&&
<
div
className=
"operate__item"
className=
"operate__item"
key=
"cancel"
key=
"cancel"
onClick=
{
()
=>
{
onClick=
{
()
=>
{
this
.
handleDeleteOfflineCourse
(
item
.
courseId
);
this
.
handleDeleteOfflineCourse
(
item
.
courseId
);
}
}
}
}
>
取消课程
</
div
>
>
取消课程
</
div
>
}
<
div
{
item
.
courseState
===
'UN_START'
&&
<
div
className=
"operate__item"
className=
"operate__item"
key=
"edit"
key=
"edit"
onClick=
{
()
=>
{
onClick=
{
()
=>
{
RCHistory
.
push
(
`/create-offline-course?type=edit&id=${item.courseId}`
);
RCHistory
.
push
(
`/create-offline-course?type=edit&id=${item.courseId}`
);
}
}
}
}
>
编辑
</
div
>
>
编辑
</
div
>
}
<
div
<
div
className=
"operate__item"
className=
"operate__item"
key=
"delete"
key=
"delete"
...
@@ -402,55 +364,22 @@ class OfflineCourseList extends React.Component {
...
@@ -402,55 +364,22 @@ class OfflineCourseList extends React.Component {
handleChangeTable
=
(
pagination
,
filters
,
sorter
)
=>
{
handleChangeTable
=
(
pagination
,
filters
,
sorter
)
=>
{
const
{
columnKey
,
order
}
=
sorter
;
const
{
columnKey
,
order
}
=
sorter
;
const
{
query
}
=
this
.
props
;
const
{
query
}
=
this
.
props
;
let
{
order
:
_order
}
=
query
;
let
_columnKey
;
let
_order
;
// 按创建时间升序排序
// 按创建时间升序排序
if
(
columnKey
===
'created'
&&
order
===
'ascend'
)
{
_order
=
'CREATED
_ASC'
;
}
if
(
columnKey
===
'created'
&&
order
===
'ascend'
)
{
_columnKey
=
"CREATED"
;
_order
=
'SORT
_ASC'
;
}
// 按创建时间降序排序
// 按创建时间降序排序
if
(
columnKey
===
'created'
&&
order
===
'descend'
)
{
_order
=
'CREATED_DESC'
;
}
if
(
columnKey
===
'created'
&&
order
===
'descend'
)
{
_columnKey
=
"CREATED"
;
_order
=
'SORT_DESC'
;}
// 按更新时间升序排序
if
(
columnKey
===
'updated'
&&
order
===
'ascend'
)
{
_order
=
'UPDATED_ASC'
;
}
// 按更新时间降序排序
if
(
columnKey
===
'updated'
&&
order
===
'descend'
)
{
_order
=
'UPDATED_DESC'
;
}
const
_query
=
{
const
_query
=
{
...
query
,
...
query
,
orderEnum
:
_order
sortMap
:{}
};
};
_query
.
sortMap
[
_columnKey
]
=
_order
;
this
.
props
.
onChange
(
_query
);
this
.
props
.
onChange
(
_query
);
}
}
handleRelatedModalShow
=
(
item
)
=>
{
const
selectPlanList
=
{};
if
(
item
.
relatedPlanList
){
item
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
selectPlanList
[
item
.
planId
]
=
{}
selectPlanList
[
item
.
planId
].
planId
=
item
.
planId
;
selectPlanList
[
item
.
planId
].
taskBaseVOList
=
[{
taskId
:
item
.
taskId
}];
return
item
})
}
this
.
setState
({
RelatedPlanModalVisible
:
true
,
selectCourseId
:
item
.
courseId
,
selectPlanList
:
selectPlanList
})
}
closeRelatedPlanModalVisible
=
()
=>
{
this
.
setState
({
RelatedPlanModalVisible
:
false
})
}
onChangeSelectPlanList
=
(
selectPlanList
)
=>
{
this
.
setState
({
selectPlanList
:
selectPlanList
})
}
onConfirmSelectPlanList
=
()
=>
{
this
.
setState
({
RelatedPlanModalVisible
:
false
},()
=>
{
this
.
props
.
onChange
();})
}
render
()
{
render
()
{
const
{
RelatedPlanModalVisible
,
selectCourseId
,
selectPlanList
,
openQRCodeModal
,
qrcodeData
}
=
this
.
state
;
const
{
openQRCodeModal
,
qrcodeData
}
=
this
.
state
;
const
{
dataSource
=
[],
totalCount
,
query
,
match
}
=
this
.
props
;
const
{
dataSource
=
[],
totalCount
,
query
,
match
}
=
this
.
props
;
const
{
current
,
size
}
=
query
;
const
{
current
,
size
}
=
query
;
return
(
return
(
...
@@ -477,16 +406,6 @@ class OfflineCourseList extends React.Component {
...
@@ -477,16 +406,6 @@ class OfflineCourseList extends React.Component {
}
}
}
}
/>
/>
</
div
>
</
div
>
{
RelatedPlanModalVisible
&&
<
RelatedPlanModal
onClose=
{
this
.
closeRelatedPlanModalVisible
}
visible=
{
RelatedPlanModalVisible
}
selectCourseId=
{
selectCourseId
}
selectPlanList=
{
selectPlanList
}
onChange=
{
this
.
onChangeSelectPlanList
}
onConfirm=
{
this
.
onConfirmSelectPlanList
}
/>
}
{
this
.
state
.
shareLiveModal
}
{
this
.
state
.
shareLiveModal
}
{
this
.
state
.
previewOfflineModal
}
{
this
.
state
.
previewOfflineModal
}
<
QRCodeModal
<
QRCodeModal
...
...
src/modules/course-manage/offline-course/modal/QRCodeModal.jsx
View file @
aa7d4cbb
...
@@ -100,13 +100,20 @@ export default class QRCodeModal extends React.Component {
...
@@ -100,13 +100,20 @@ export default class QRCodeModal extends React.Component {
render
()
{
render
()
{
const
{
visible
,
onCancel
}
=
this
.
props
;
const
{
visible
,
onCancel
}
=
this
.
props
;
const
{
selectedDate
,
data
=
{}
}
=
this
.
state
;
const
{
selectedDate
,
data
=
{}
}
=
this
.
state
;
const
{
startTime
,
endTime
,
courseName
,
whetherSetSignIn
,
whetherSetSignOut
}
=
data
;
const
{
startTime
,
endTime
,
courseName
,
whetherSetSignIn
,
whetherSetSignOut
,
signInType
,
signOutType
}
=
data
;
const
date
=
moment
(
selectedDate
).
format
(
'YYYY-MM-DD'
);
const
unit
=
(
data
.
signInTimeUnit
||
''
).
toLocaleLowerCase
()
+
's'
;
const
unit
=
(
data
.
signInTimeUnit
||
''
).
toLocaleLowerCase
()
+
's'
;
const
time
=
moment
(
data
.
s
tart
Time
).
subtract
(
data
.
signInTimeNum
,
unit
);
const
time
=
moment
(
data
.
s
ignInType
==
'START_AGO'
?
data
.
startTime
:
data
.
end
Time
).
subtract
(
data
.
signInTimeNum
,
unit
);
const
s
tartUnit
=
(
data
.
signOutStartTimeUnit
||
''
).
toLocaleLowerCase
()
+
's'
;
const
s
ignInTime
=
data
.
signInType
==
'START_AGO'
?
`
${
date
}
${
moment
(
time
).
format
(
'HH:mm'
)}
~
${
date
}
${
moment
(
data
.
startTime
).
format
(
'HH:mm'
)}
`
:
`
${
date
}
${
moment
(
data
.
startTime
).
format
(
'HH:mm'
)}
~
${
date
}
${
moment
(
time
).
format
(
'HH:mm'
)}
`
;
const
endUnit
=
(
data
.
signOutEndTimeUnit
||
''
).
toLocaleLowerCase
()
+
's'
;
const
endUnit
=
(
data
.
signOutEndTimeUnit
||
''
).
toLocaleLowerCase
()
+
's'
;
const
start
=
moment
(
data
.
startTime
).
add
(
data
.
signOutStartTimeNum
,
startUnit
);
const
end
=
moment
(
data
.
endTime
).
add
(
data
.
signOutEndTimeNum
,
endUnit
);
const
end
=
moment
(
data
.
endTime
).
add
(
data
.
signOutEndTimeNum
,
endUnit
);
let
startUnit
=
''
;
let
start
=
''
;
if
(
data
.
signOutType
===
'START_LATER'
)
{
startUnit
=
(
data
.
signOutStartTimeUnit
||
''
).
toLocaleLowerCase
()
+
's'
;
start
=
moment
(
data
.
startTime
).
add
(
data
.
signOutStartTimeNum
,
startUnit
);
}
const
signOutTime
=
data
.
signOutType
===
'START_LATER'
?
`
${
date
}
${
moment
(
start
).
format
(
'HH:mm'
)}
~
${
date
}
${
moment
(
end
).
format
(
'HH:mm'
)}
`
:
`
${
date
}
${
moment
(
data
.
endTime
).
format
(
'HH:mm'
)}
~
${
date
}
${
moment
(
end
).
format
(
'HH:mm'
)}
`
;
return
(
return
(
<
Modal
<
Modal
title=
"考勤二维码"
title=
"考勤二维码"
...
@@ -128,7 +135,7 @@ export default class QRCodeModal extends React.Component {
...
@@ -128,7 +135,7 @@ export default class QRCodeModal extends React.Component {
}
}
}
}
>
>
{
(
data
.
calendarTime
||
[]).
map
(
item
=>
(
{
(
data
.
calendarTime
||
[]).
map
(
item
=>
(
<
Option
value=
{
item
}
>
{
moment
(
item
).
format
(
'MM月DD日'
)
}
</
Option
>
<
Option
value=
{
item
}
key=
{
item
}
>
{
moment
(
item
).
format
(
'MM月DD日'
)
}
</
Option
>
))
}
))
}
</
Select
>
</
Select
>
<
Button
<
Button
...
@@ -139,19 +146,19 @@ export default class QRCodeModal extends React.Component {
...
@@ -139,19 +146,19 @@ export default class QRCodeModal extends React.Component {
}
}
}
}
>
下载二维码
</
Button
>
>
下载二维码
</
Button
>
</
div
>
</
div
>
{
whetherSetSignIn
===
'YES'
&&
<
div
className=
"image-box"
>
{
whetherSetSignIn
===
'YES'
&&
<
div
className=
"image-box"
key=
"1"
>
<
img
src=
"https://image.xiaomaiketang.com/xm/xYSpX2y6ri.png"
className=
"image"
/>
<
img
src=
"https://image.xiaomaiketang.com/xm/xYSpX2y6ri.png"
className=
"image"
/>
<
div
className=
"title"
>
签到二维码
</
div
>
<
div
className=
"title"
>
签到二维码
</
div
>
<
div
className=
"name"
>
{
courseName
}
</
div
>
<
div
className=
"name"
>
{
courseName
}
</
div
>
<
div
className=
"qrcodeWrap"
id=
"qrcodeWrap1"
></
div
>
<
div
className=
"qrcodeWrap"
id=
"qrcodeWrap1"
></
div
>
<
div
className=
"time"
>
签到时间:
{
moment
(
selectedDate
).
format
(
'YYYY-MM-DD'
)
}
{
moment
(
time
).
format
(
'HH:mm'
)
}
~
{
moment
(
selectedDate
).
format
(
'YYYY-MM-DD'
)
}
{
moment
(
data
.
endTime
).
format
(
'HH:mm'
)
}
</
div
>
<
div
className=
"time"
>
签到时间:
{
signInTime
}
</
div
>
</
div
>
}
</
div
>
}
{
whetherSetSignOut
===
'YES'
&&
<
div
className=
"image-box"
>
{
whetherSetSignOut
===
'YES'
&&
<
div
className=
"image-box"
key=
"2"
>
<
img
src=
"https://image.xiaomaiketang.com/xm/xYSpX2y6ri.png"
className=
"image"
/>
<
img
src=
"https://image.xiaomaiketang.com/xm/xYSpX2y6ri.png"
className=
"image"
/>
<
div
className=
"title"
>
签退二维码
</
div
>
<
div
className=
"title"
>
签退二维码
</
div
>
<
div
className=
"name"
>
{
courseName
}
</
div
>
<
div
className=
"name"
>
{
courseName
}
</
div
>
<
div
className=
"qrcodeWrap"
id=
"qrcodeWrap2"
></
div
>
<
div
className=
"qrcodeWrap"
id=
"qrcodeWrap2"
></
div
>
<
div
className=
"time"
>
签退时间:
{
moment
(
selectedDate
).
format
(
'YYYY-MM-DD'
)
}
{
moment
(
start
).
format
(
'HH:mm'
)
}
~
{
moment
(
selectedDate
).
format
(
'YYYY-MM-DD'
)
}
{
moment
(
end
).
format
(
'HH:mm'
)
}
</
div
>
<
div
className=
"time"
>
签退时间:
{
signOutTime
}
</
div
>
</
div
>
}
</
div
>
}
</
Modal
>
</
Modal
>
)
)
...
...
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