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
f4809454
Commit
f4809454
authored
Dec 15, 2020
by
zhangleyuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:联调创建直播课的接口
parent
471a280f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
110 additions
and
130 deletions
+110
-130
src/data-source/course/request-api.ts
+8
-5
src/domains/course-domain/CourseService.ts
+8
-5
src/modules/course-manage/AddLive.jsx
+59
-92
src/modules/course-manage/components/AddLiveClass.jsx
+35
-28
No files found.
src/data-source/course/request-api.ts
View file @
f4809454
/*
/*
* @Author: wufan
* @Author: wufan
* @Date: 2020-12-12 11:57:10
* @Date: 2020-12-12 11:57:10
* @LastEditors:
wuf
an
* @LastEditors:
zhangleyu
an
* @LastEditTime: 2020-12-14
18:05:23
* @LastEditTime: 2020-12-14
20:32:46
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -14,5 +14,9 @@ export function fetchLecturerData(params: object) {
...
@@ -14,5 +14,9 @@ export function fetchLecturerData(params: object) {
}
}
export
function
fetchUserData
(
params
:
object
)
{
export
function
fetchUserData
(
params
:
object
)
{
return
Service
.
Hades
(
"public/courseCloud/queryStudentVisitData"
,
params
);
return
Service
.
Hades
(
"public/courseCloud/queryStudentVisitData"
,
params
);
}
}
\ No newline at end of file
export
function
createLiveCloudCourse
(
params
:
object
)
{
return
Service
.
Hades
(
"public/courseCloud/createLiveCloudCourse"
,
params
);
}
src/domains/course-domain/CourseService.ts
View file @
f4809454
/*
/*
* @Author: wufan
* @Author: wufan
* @Date: 2020-11-25 18:25:02
* @Date: 2020-11-25 18:25:02
* @LastEditors:
wuf
an
* @LastEditors:
zhangleyu
an
* @LastEditTime: 2020-12-14
18:08:07
* @LastEditTime: 2020-12-14
21:01:52
* @Description: Description
* @Description: Description
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
{
fetchLecturerData
,
fetchUserData
}
from
'@/data-source/course/request-api'
;
import
{
fetchLecturerData
,
fetchUserData
,
createLiveCloudCourse
}
from
'@/data-source/course/request-api'
;
export
default
class
Stor
eService
{
export
default
class
cours
eService
{
// 获取讲师上课数据
// 获取讲师上课数据
static
fetchLecturerData
(
params
:
any
)
{
static
fetchLecturerData
(
params
:
any
)
{
return
fetchLecturerData
(
params
);
return
fetchLecturerData
(
params
);
...
@@ -18,5 +18,7 @@ export default class StoreService {
...
@@ -18,5 +18,7 @@ export default class StoreService {
static
fetchUserData
(
params
:
any
)
{
static
fetchUserData
(
params
:
any
)
{
return
fetchUserData
(
params
);
return
fetchUserData
(
params
);
}
}
static
createLiveCloudCourse
(
params
:
any
)
{
return
createLiveCloudCourse
(
params
);
}
}
}
\ No newline at end of file
src/modules/course-manage/AddLive.jsx
View file @
f4809454
...
@@ -18,8 +18,9 @@ import AddLiveClass from './components/AddLiveClass';
...
@@ -18,8 +18,9 @@ import AddLiveClass from './components/AddLiveClass';
import
AddLiveIntro
from
'./components/AddLiveIntro'
;
import
AddLiveIntro
from
'./components/AddLiveIntro'
;
import
PreviewCourseModal
from
'./modal/PreviewCourseModal'
;
import
PreviewCourseModal
from
'./modal/PreviewCourseModal'
;
import
LackConsumeStudentModal
from
'./modal/LackConsumeStudentModal'
;
import
LackConsumeStudentModal
from
'./modal/LackConsumeStudentModal'
;
import
StoreService
from
"@/domains/store-domain/stor
eService"
;
import
CourseService
from
"@/domains/course-domain/Cours
eService"
;
import
moment
from
'moment'
;
import
moment
from
'moment'
;
import
User
from
'@/common/js/user'
;
import
'./AddLive.less'
;
import
'./AddLive.less'
;
...
@@ -268,44 +269,14 @@ class AddLive extends React.Component {
...
@@ -268,44 +269,14 @@ class AddLive extends React.Component {
}
}
// 修改上课信息
// 修改上课信息
handleChangeClassInfo
=
(
field
,
value
,
teacherList
)
=>
{
handleChangeClassInfo
=
(
field
,
value
)
=>
{
console
.
log
(
"change-----"
,
value
);
const
_value
=
value
?
value
.
valueOf
()
:
null
;
const
_value
=
value
?
value
.
valueOf
()
:
null
;
if
(
teacherList
)
{
this
.
setState
({
let
selectedTeacher
;
addLiveClassInfo
:
{
if
(
field
===
'teacherId'
)
{
...
this
.
state
.
addLiveClassInfo
,
selectedTeacher
=
_
.
find
(
teacherList
,
item
=>
item
.
teacherId
===
value
)
[
field
]:
_value
,
// 判断上课老师是否已经被选为了助教老师
const
{
addLiveClassInfo
:
{
assistant
}
}
=
this
.
state
;
if
(
selectedTeacher
&&
assistant
.
includes
(
selectedTeacher
.
teacherId
))
{
message
.
warning
(
'上课老师和助教老师不能是同一个人'
);
return
;
}
}
this
.
setState
({
addLiveClassInfo
:
{
...
this
.
state
.
addLiveClassInfo
,
nickname
:
selectedTeacher
?
selectedTeacher
.
teacherName
:
null
,
[
field
]:
_value
,
}
});
}
else
{
if
(
field
===
'assistant'
)
{
// 判断助教老师是否已经被选为了上课老师
const
{
addLiveClassInfo
:
{
teacherId
}
}
=
this
.
state
;
if
(
_value
&&
_value
.
includes
(
teacherId
))
{
message
.
warning
(
'上课老师和助教老师不能是同一个人'
);
return
;
}
}
}
this
.
setState
({
});
addLiveClassInfo
:
{
...
this
.
state
.
addLiveClassInfo
,
[
field
]:
_value
,
}
});
}
// 批量开始时间改变,结束时间自动同步一致
// 批量开始时间改变,结束时间自动同步一致
if
(
field
===
'startTime'
)
{
if
(
field
===
'startTime'
)
{
this
.
setState
({
this
.
setState
({
...
@@ -355,7 +326,7 @@ class AddLive extends React.Component {
...
@@ -355,7 +326,7 @@ class AddLive extends React.Component {
if
(
!
res
)
return
;
if
(
!
res
)
return
;
const
{
type
}
=
this
.
state
;
const
{
type
}
=
this
.
state
;
const
{
courseName
,
coverId
,
coverUrl
}
=
addLiveBasicInfo
;
const
{
courseName
,
coverId
,
coverUrl
,
parentCatalogId
}
=
addLiveBasicInfo
;
const
{
const
{
podium
,
podium
,
liveType
,
liveType
,
...
@@ -374,7 +345,7 @@ class AddLive extends React.Component {
...
@@ -374,7 +345,7 @@ class AddLive extends React.Component {
let
{
startTime
,
endTime
}
=
addLiveClassInfo
;
let
{
startTime
,
endTime
}
=
addLiveClassInfo
;
const
{
liveCourseMediaRequests
,
needRecord
,
liveCourseWarmMedia
,
isAutoSendReport
}
=
addLiveIntroInfo
;
const
{
liveCourseMediaRequests
,
needRecord
,
liveCourseWarmMedia
,
isAutoSendReport
}
=
addLiveIntroInfo
;
if
(
window
.
NewVersion
&&
type
===
'add'
)
{
if
(
type
===
'add'
)
{
startTime
=
startTime
;
startTime
=
startTime
;
endTime
=
endTime
;
endTime
=
endTime
;
}
else
{
}
else
{
...
@@ -387,42 +358,37 @@ class AddLive extends React.Component {
...
@@ -387,42 +358,37 @@ class AddLive extends React.Component {
}
}
const
commonParams
=
{
const
commonParams
=
{
coverId
,
adminIds
:[
'1338412893361590273'
],
startTime
,
calendarTime
,
categoryId
:
parentCatalogId
,
endTime
,
endTime
,
teacherId
,
liveType
,
consumeHourNum
,
consumeClassTime
,
adminIds
:
assistant
,
courseName
:
courseName
.
trim
(),
studentIds
:
_
.
pluck
(
studentList
,
"studentId"
),
consumeStudentIds
:
consumeStudentList
,
liveCourseMediaRequests
:
liveCourseMediaRequests
.
filter
(
item
=>
{
return
!!
item
.
mediaContent
;
}),
needRecord
,
needRecord
,
liveCourseWarmMedia
,
operatorId
:
User
.
getUserId
(),
applyMode
,
startTime
,
autoSendReport
:
isAutoSendReport
?
"AUTO"
:
"OFF_AUTO"
,
storeId
:
User
.
getUserId
(),
calendarTime
courseName
:
courseName
.
trim
(),
storeId
:
User
.
getStoreId
(),
teacherId
:
'1338461876914020353'
,
}
}
if
(
type
===
'add'
)
{
if
(
type
===
'add'
)
{
const
params
=
{
const
params
=
{
coverUrl
,
...
commonParams
,
...
commonParams
,
}
}
if
(
params
.
liveCourseWarmMedia
&&
!
params
.
liveCourseWarmMedia
.
mediaUrl
)
{
// if(params.liveCourseWarmMedia && !params.liveCourseWarmMedia.mediaUrl) {
delete
params
.
liveCourseWarmMedia
// delete params.liveCourseWarmMedia
}
// }
axios
.
Apollo
(
"public/businessLive/createCourse"
,
params
).
then
((
res
)
=>
{
if
(
!
res
)
return
;
CourseService
.
createLiveCloudCourse
(
params
).
then
((
res
)
=>
{
message
.
success
(
"新建成功"
);
// if (!res) return;
localStorage
.
setItem
(
'largeLiveCourseItem'
,
JSON
.
stringify
({
// message.success("新建成功");
...
params
,
// localStorage.setItem('largeLiveCourseItem', JSON.stringify({
liveCourseId
:
res
.
result
// ...params,
}));
// liveCourseId: res.result
// }));
window
.
RCHistory
.
goBack
();
// window.RCHistory.goBack();
});
});
}
else
{
}
else
{
const
params
=
{
const
params
=
{
...
commonParams
,
...
commonParams
,
...
@@ -527,37 +493,38 @@ class AddLive extends React.Component {
...
@@ -527,37 +493,38 @@ class AddLive extends React.Component {
}
}
}
}
}
}
resolve
(
true
)
// if(consumeClassTime > (endTime - startTime) / 60000) {
// if(consumeClassTime > (endTime - startTime) / 60000) {
// message.warning('到课规则时长不能超过排课时长');
// message.warning('到课规则时长不能超过排课时长');
// resolve(false);
// resolve(false);
// return;
// return;
// }
// }
if
(
!
teacherId
)
{
//
if(!teacherId) {
message
.
warning
(
'上课老师不能为空'
);
//
message.warning('上课老师不能为空');
resolve
(
false
);
//
resolve(false);
return
;
//
return;
}
else
if
(
!
applyMode
)
{
//
} else if(!applyMode) {
message
.
warning
(
'请选择分享设置'
);
//
message.warning('请选择分享设置');
resolve
(
false
);
//
resolve(false);
return
;
//
return;
}
else
{
//
} else {
const
textIntro
=
liveCourseMediaRequests
.
filter
(
item
=>
{
return
item
.
mediaType
===
'TEXT'
;
});
//
const textIntro = liveCourseMediaRequests.filter(item => { return item.mediaType === 'TEXT'; });
for
(
let
i
=
0
,
len
=
textIntro
.
length
;
i
<
len
;
i
++
)
{
//
for (let i = 0, len = textIntro.length; i < len; i++) {
if
(
textIntro
[
i
].
mediaContent
&&
textIntro
[
i
].
mediaContentLength
.
length
>
1000
)
{
//
if (textIntro[i].mediaContent && textIntro[i].mediaContentLength.length > 1000) {
message
.
warning
(
`第
${
i
+
1
}
个文字简介的字数超过了1000个字`
);
//
message.warning(`第${i+1}个文字简介的字数超过了1000个字`);
resolve
(
false
);
//
resolve(false);
return
;
//
return;
}
//
}
}
//
}
}
//
}
if
(
window
.
NewVersion
&&
type
===
'add'
)
{
//
if(window.NewVersion && type === 'add') {
this
.
handleValidateLackConsumeModal
(
consumeHourNum
,
calendarTime
,
consumeStudentList
).
then
(
res
=>
{
//
this.handleValidateLackConsumeModal(consumeHourNum, calendarTime, consumeStudentList).then(res => {
resolve
(
res
)
//
resolve(res)
})
//
})
}
else
{
//
} else {
resolve
(
true
);
//
resolve(true);
}
//
}
});
});
}
}
...
...
src/modules/course-manage/components/AddLiveClass.jsx
View file @
f4809454
...
@@ -19,9 +19,10 @@ import MultipleDatePicker from '@/components/MultipleDatePicker';
...
@@ -19,9 +19,10 @@ import MultipleDatePicker from '@/components/MultipleDatePicker';
import
moment
from
'moment'
;
import
moment
from
'moment'
;
import
'./AddLiveClass.less'
;
import
'./AddLiveClass.less'
;
const
defaultQuery
=
{
const
default
Teacher
Query
=
{
size
:
10
,
size
:
10
,
current
:
1
,
current
:
1
,
nickName
:
null
}
}
class
AddLiveClass
extends
React
.
Component
{
class
AddLiveClass
extends
React
.
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
...
@@ -29,7 +30,7 @@ class AddLiveClass extends React.Component {
...
@@ -29,7 +30,7 @@ class AddLiveClass extends React.Component {
this
.
state
=
{
this
.
state
=
{
loading
:
false
,
loading
:
false
,
hasNext
:
false
,
hasNext
:
false
,
teacherQuery
:
defaultQuery
,
teacherQuery
:
default
Teacher
Query
,
teacherList
:[],
teacherList
:[],
assistantList
:
[],
// 助教老师列表
assistantList
:
[],
// 助教老师列表
addLiveType
:
props
.
addLiveType
addLiveType
:
props
.
addLiveType
...
@@ -41,30 +42,20 @@ class AddLiveClass extends React.Component {
...
@@ -41,30 +42,20 @@ class AddLiveClass extends React.Component {
this
.
getAssistantList
();
this
.
getAssistantList
();
}
}
getTeacherList
(
current
=
1
,
selectList
){
getTeacherList
(
current
=
1
,
selectList
){
const
{
teacherQuery
,}
=
this
.
state
;
const
{
teacherQuery
,
teacherList
}
=
this
.
state
;
const
idList
=
selectList
?
selectList
:
[];
const
_query
=
{
const
_query
=
{
...
teacherQuery
,
...
teacherQuery
,
current
,
current
,
idList
,
size
:
10
size
:
idList
.
length
<=
10
?
10
:
idList
.
length
+
10
};
};
StoreService
.
getEmployeeList
(
_query
).
then
((
res
)
=>
{
StoreService
.
getEmployeeList
(
_query
).
then
((
res
)
=>
{
// const { result = {} } = res;
const
{
result
=
{}
}
=
res
;
// const { records = [], total = 0, hasNext } = result;
const
{
records
=
[],
total
=
0
,
hasNext
}
=
result
;
// const list = current > 1 ? assistantList.concat(records) : records;
const
list
=
current
>
1
?
teacherList
.
concat
(
records
)
:
records
;
// const _assistantList = _.uniq(
this
.
setState
({
// selectedAssistant.concat(
hasNext
,
// _.reject(list, (item) => item.id === teacherId)
teacherList
:
list
,
// ),
})
// false,
// (item) => item.id
// );
// this.setState({
// hasNext,
// assistantList: list,
// _assistantList: _assistantList
// })
});
});
}
}
// 获取助教老师列表
// 获取助教老师列表
...
@@ -133,6 +124,8 @@ class AddLiveClass extends React.Component {
...
@@ -133,6 +124,8 @@ class AddLiveClass extends React.Component {
render
()
{
render
()
{
const
{
const
{
loading
,
loading
,
teacherList
,
teacherQuery
}
=
this
.
state
;
}
=
this
.
state
;
// pageType: 页面类型:add->新建、edit->编辑
// pageType: 页面类型:add->新建、edit->编辑
...
@@ -140,13 +133,14 @@ class AddLiveClass extends React.Component {
...
@@ -140,13 +133,14 @@ class AddLiveClass extends React.Component {
// data:表单数据
// data:表单数据
// selectedAssistant: 已经选择的助教
// selectedAssistant: 已经选择的助教
const
{
pageType
,
liveScene
,
data
,
selectedAssistant
,
isXiaomai
,
isEdit
,
after
}
=
this
.
props
;
const
{
pageType
,
liveScene
,
data
,
selectedAssistant
,
isXiaomai
,
isEdit
,
after
}
=
this
.
props
;
const
{
const
{
endTime
,
endTime
,
startTime
,
startTime
,
studentList
,
studentList
,
consumeStudentList
,
consumeStudentList
,
calendarTime
calendarTime
,
}
=
data
;
}
=
data
;
// 已选择的上课学员数量(不扣课时)
// 已选择的上课学员数量(不扣课时)
const
hasSelectedStu
=
studentList
.
length
;
const
hasSelectedStu
=
studentList
.
length
;
...
@@ -214,13 +208,25 @@ class AddLiveClass extends React.Component {
...
@@ -214,13 +208,25 @@ class AddLiveClass extends React.Component {
placeholder=
"请选择讲师"
placeholder=
"请选择讲师"
style=
{
{
width
:
240
,
marginTop
:
6
}
}
style=
{
{
width
:
240
,
marginTop
:
6
}
}
filterOption=
{
(
input
,
option
)
=>
option
}
filterOption=
{
(
input
,
option
)
=>
option
}
onSearch=
{
(
value
)
=>
{
// onPopupScroll={this.handleScroll}
onChange=
{
(
value
)
=>
{
this
.
props
.
onChange
(
'teacherId'
,
value
)
}
}
}
}
onBlur=
{
()
=>
{
onSearch=
{
(
value
)
=>
{
teacherQuery
.
nickName
=
value
this
.
setState
({
teacherQuery
},
()
=>
{
this
.
getAssistantList
()
})
}
}
}
}
></
Select
>
>
{
_
.
map
(
teacherList
,
(
item
,
index
)
=>
{
return
(
<
Select
.
Option
value=
{
item
.
id
}
key=
{
item
.
id
}
>
{
item
.
nickName
}
</
Select
.
Option
>
);
})
}
</
Select
>
</
div
>
</
div
>
<
div
className=
"assistant-teacher"
>
<
div
className=
"assistant-teacher"
>
<
span
className=
"label"
>
助教:
</
span
>
<
span
className=
"label"
>
助教:
</
span
>
...
@@ -231,6 +237,7 @@ class AddLiveClass extends React.Component {
...
@@ -231,6 +237,7 @@ class AddLiveClass extends React.Component {
style=
{
{
width
:
240
,
marginTop
:
6
}
}
style=
{
{
width
:
240
,
marginTop
:
6
}
}
filterOption=
{
(
input
,
option
)
=>
option
}
filterOption=
{
(
input
,
option
)
=>
option
}
>
>
</
Select
>
</
Select
>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
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