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
a48e984c
Commit
a48e984c
authored
Jul 09, 2021
by
zhangleyuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:处理科技格式拓展
parent
2e80dc54
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
92 additions
and
27 deletions
+92
-27
src/modules/course-manage/video-course/AddVideoCourse.jsx
+92
-27
No files found.
src/modules/course-manage/video-course/AddVideoCourse.jsx
View file @
a48e984c
/*
/*
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-05 10:07:47
* @Date: 2020-08-05 10:07:47
* @LastEditors:
yuananting
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-07-0
8 17:23:24
* @LastEditTime: 2021-07-0
9 11:20:49
* @Description: 线上课新增/编辑页
* @Description: 线上课新增/编辑页
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
import
React
from
'react'
import
React
from
'react'
import
{
Button
,
Input
,
message
,
Modal
,
Cascader
,
Tooltip
,
Form
,
Popconfirm
}
from
'antd'
import
{
Button
,
Input
,
message
,
Modal
,
Cascader
,
Tooltip
,
Form
,
Popconfirm
,
Menu
,
Dropdown
}
from
'antd'
import
{
FileTypeIcon
,
FileVerifyMap
}
from
'@/common/constants/academic/lessonEnum'
import
{
FileTypeIcon
,
FileVerifyMap
}
from
'@/common/constants/academic/lessonEnum'
import
ShowTips
from
'@/components/ShowTips'
import
ShowTips
from
'@/components/ShowTips'
import
Breadcrumbs
from
'@/components/Breadcrumbs'
import
Breadcrumbs
from
'@/components/Breadcrumbs'
...
@@ -84,8 +84,10 @@ class AddVideoCourse extends React.Component {
...
@@ -84,8 +84,10 @@ class AddVideoCourse extends React.Component {
introduce
:
''
,
introduce
:
''
,
courseChapterList
:[
courseChapterList
:[
],
// 课节列表
],
// 课节列表
videoType
:
"MP4"
,
//
videoType: "MP4",
mediaNameAlias
:
''
,
// 任一视频重命名的名称(气泡框)
mediaNameAlias
:
''
,
// 任一视频重命名的名称(气泡框)
selectTypeList
:[
'MP4'
],
accept
:
'video/mp4'
}
}
}
}
...
@@ -135,7 +137,7 @@ class AddVideoCourse extends React.Component {
...
@@ -135,7 +137,7 @@ class AddVideoCourse extends React.Component {
let
coverId
let
coverId
let
coverUrl
let
coverUrl
let
videoDuration
let
videoDuration
let
videoName
//
let videoName
let
scheduleMedia
=
[]
let
scheduleMedia
=
[]
let
scheduleVideoUrl
let
scheduleVideoUrl
let
hasIntro
let
hasIntro
...
@@ -172,7 +174,7 @@ class AddVideoCourse extends React.Component {
...
@@ -172,7 +174,7 @@ class AddVideoCourse extends React.Component {
loadintroduce
:
!
hasIntro
,
loadintroduce
:
!
hasIntro
,
coverId
,
coverId
,
coverUrl
,
coverUrl
,
videoName
,
//
videoName,
videoDuration
,
videoDuration
,
scheduleMedia
,
scheduleMedia
,
courseName
,
courseName
,
...
@@ -199,9 +201,8 @@ class AddVideoCourse extends React.Component {
...
@@ -199,9 +201,8 @@ class AddVideoCourse extends React.Component {
}
}
handleGoBack
=
()
=>
{
handleGoBack
=
()
=>
{
const
{
coverId
,
videoName
,
videoDuration
,
courseName
,
scheduleMedia
,
courseChapterList
,
categoryId
,
shelfState
,
whetherVisitorsJoin
}
=
this
.
state
const
{
coverId
,
videoDuration
,
courseName
,
scheduleMedia
,
courseChapterList
,
categoryId
,
shelfState
,
whetherVisitorsJoin
}
=
this
.
state
if
(
if
(
videoName
||
videoDuration
||
videoDuration
||
!
courseChapterList
.
length
||
!
courseChapterList
.
length
||
!
_
.
isEqual
(
scheduleMedia
,
defaultScheduleMedia
)
||
!
_
.
isEqual
(
scheduleMedia
,
defaultScheduleMedia
)
||
...
@@ -316,7 +317,7 @@ class AddVideoCourse extends React.Component {
...
@@ -316,7 +317,7 @@ class AddVideoCourse extends React.Component {
selectedFileList
.
map
((
file
,
index
)
=>
{
selectedFileList
.
map
((
file
,
index
)
=>
{
const
{
ossUrl
,
resourceId
,
folderName
,
folderFormat
,
folderSize
}
=
file
;
const
{
ossUrl
,
resourceId
,
folderName
,
folderFormat
,
folderSize
}
=
file
;
if
(
folderFormat
===
'VIDEO'
){
const
videoDom
=
document
.
createElement
(
'video'
)
const
videoDom
=
document
.
createElement
(
'video'
)
videoDom
.
src
=
ossUrl
videoDom
.
src
=
ossUrl
videoDom
.
onloadedmetadata
=
()
=>
{
videoDom
.
onloadedmetadata
=
()
=>
{
...
@@ -330,14 +331,33 @@ class AddVideoCourse extends React.Component {
...
@@ -330,14 +331,33 @@ class AddVideoCourse extends React.Component {
mediaUrl
:
ossUrl
,
mediaUrl
:
ossUrl
,
sort
:
_courseChapterList
.
length
sort
:
_courseChapterList
.
length
})
})
this
.
setState
({
this
.
setState
({
size
:
folderSize
,
// size: folderSize,
videoName
:
folderName
,
// videoName: folderName,
videoType
:
folderFormat
,
// videoType: folderFormat,
courseChapterList
:
_courseChapterList
})
}
}
else
{
const
suffix
=
_
.
last
(
folderName
.
split
(
'.'
)).
toUpperCase
();
console
.
log
(
'suffix'
,
suffix
);
_courseChapterList
.
push
({
mediaContent
:
resourceId
,
contentType
:
'SCHEDULE'
,
mediaType
:
suffix
,
mediaName
:
folderName
,
id
:
resourceId
,
mediaUrl
:
ossUrl
,
sort
:
_courseChapterList
.
length
})
this
.
setState
({
// size: folderSize,
// videoName: folderName,
// videoType: folderFormat,
courseChapterList
:
_courseChapterList
courseChapterList
:
_courseChapterList
})
})
}
}
})
})
}
}
...
@@ -392,7 +412,7 @@ class AddVideoCourse extends React.Component {
...
@@ -392,7 +412,7 @@ class AddVideoCourse extends React.Component {
id
,
id
,
coverId
,
coverId
,
pageType
,
pageType
,
videoName
,
//
videoName,
videoDuration
,
videoDuration
,
courseName
,
courseName
,
scheduleMedia
,
scheduleMedia
,
...
@@ -405,7 +425,7 @@ class AddVideoCourse extends React.Component {
...
@@ -405,7 +425,7 @@ class AddVideoCourse extends React.Component {
}
=
this
.
state
}
=
this
.
state
const
commonParams
=
{
const
commonParams
=
{
videoName
,
//
videoName,
videoDuration
,
videoDuration
,
scheduleMedia
:
scheduleMedia
.
filter
((
item
)
=>
!!
item
.
mediaContent
),
scheduleMedia
:
scheduleMedia
.
filter
((
item
)
=>
!!
item
.
mediaContent
),
categoryId
,
categoryId
,
...
@@ -693,7 +713,40 @@ class AddVideoCourse extends React.Component {
...
@@ -693,7 +713,40 @@ class AddVideoCourse extends React.Component {
courseChapterList
:
_courseChapterList
courseChapterList
:
_courseChapterList
})
})
}
}
renderTypemenu
=
()
=>
{
return
<
Menu
>
<
Menu
.
Item
>
<
span
onClick=
{
()
=>
{
this
.
selectFileType
(
"VIDEO"
)}
}
>
视频文件
</
span
>
</
Menu
.
Item
>
<
Menu
.
Item
>
<
span
onClick=
{
()
=>
{
this
.
selectFileType
(
"WORD_PDF"
)}
}
>
资料文件
</
span
>
</
Menu
.
Item
>
</
Menu
>
}
selectFileType
=
(
type
)
=>
{
const
{
courseChapterList
}
=
this
.
state
;
if
(
courseChapterList
.
length
>=
20
)
{
message
.
warning
(
`最多只能上传20个文件`
);
return
;
}
if
(
type
===
"VIDEO"
){
this
.
setState
({
showSelectFileModal
:
true
,
selectTypeList
:[
'MP4'
],
accept
:
'video/mp4'
})
}
else
{
this
.
setState
({
showSelectFileModal
:
true
,
selectTypeList
:[
'DOC'
,
'DOCX'
,
'PDF'
],
accept
:
'.doc,.docx,.pdf'
})
}
}
render
()
{
render
()
{
const
{
const
{
pageType
,
pageType
,
...
@@ -702,7 +755,7 @@ class AddVideoCourse extends React.Component {
...
@@ -702,7 +755,7 @@ class AddVideoCourse extends React.Component {
scheduleMedia
,
scheduleMedia
,
showSelectFileModal
,
showSelectFileModal
,
diskList
,
diskList
,
videoType
,
//
videoType,
shelfState
,
shelfState
,
categoryName
,
categoryName
,
courseCatalogList
,
courseCatalogList
,
...
@@ -715,10 +768,12 @@ class AddVideoCourse extends React.Component {
...
@@ -715,10 +768,12 @@ class AddVideoCourse extends React.Component {
loadintroduce
,
loadintroduce
,
id
,
id
,
courseChapterList
,
courseChapterList
,
imageFile
imageFile
,
selectTypeList
,
accept
}
=
this
.
state
}
=
this
.
state
const
courseWareIcon
=
FileVerifyMap
[
videoType
]
?
FileTypeIcon
[
FileVerifyMap
[
videoType
].
type
]
:
FileTypeIcon
[
videoType
]
//
const courseWareIcon = FileVerifyMap[videoType] ? FileTypeIcon[FileVerifyMap[videoType].type] : FileTypeIcon[videoType]
const
defaultCover
=
'https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png'
;
const
defaultCover
=
'https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png'
;
const
isDefaultCover
=
coverUrl
===
defaultCover
||
coverUrl
==
null
;
const
isDefaultCover
=
coverUrl
===
defaultCover
||
coverUrl
==
null
;
...
@@ -747,11 +802,11 @@ class AddVideoCourse extends React.Component {
...
@@ -747,11 +802,11 @@ class AddVideoCourse extends React.Component {
<
div
className=
'upload-video mt16'
>
<
div
className=
'upload-video mt16'
>
<
div
className=
'content flex'
>
<
div
className=
'content flex'
>
<
span
className=
'label required'
>
视频上传
:
</
span
>
<
span
className=
'label required'
>
上传课节
:
</
span
>
</
div
>
</
div
>
<
div
className=
'sub-content'
>
<
div
className=
'sub-content'
>
<
div
className=
"btn-wrap"
>
<
div
className=
"btn-wrap"
>
<
Button
{
/*
<Button
onClick={() => {
onClick={() => {
if(courseChapterList.length >= 20) {
if(courseChapterList.length >= 20) {
message.warning(`最多只能上传20个文件`);
message.warning(`最多只能上传20个文件`);
...
@@ -760,10 +815,20 @@ class AddVideoCourse extends React.Component {
...
@@ -760,10 +815,20 @@ class AddVideoCourse extends React.Component {
this.setState({
this.setState({
showSelectFileModal: true
showSelectFileModal: true
})
})
}
}
>
添加视频
</
Button
>
}}>添加视频</Button> */
}
<
div
className=
'select-file'
>
<
Dropdown
overlay=
{
this
.
renderTypemenu
()
}
>
<
Button
>
选择文件
</
Button
>
</
Dropdown
>
</
div
>
<
div
className=
'course-ware--empty'
>
从资料云盘中选择视频
</
div
>
<
div
className=
'course-ware--empty'
>
从资料云盘中选择视频
</
div
>
</
div
>
</
div
>
<
div
className=
'tips'
>
视频数量限制20个,每个视频文件大小不超过2G
</
div
>
<
div
className=
'tips'
>
课节数量限制20个,文件规格说明
<
Tooltip
title=
"视频支持mp4格式,大小不超过2G;文件支持PDF、docx、doc格式,大小不超过100M"
>
<
i
className=
'icon iconfont'
style=
{
{
cursor
:
'pointer'
,
color
:
'#bfbfbf'
,
fontSize
:
'14px'
}
}
>

</
i
>
</
Tooltip
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
...
@@ -775,7 +840,7 @@ class AddVideoCourse extends React.Component {
...
@@ -775,7 +840,7 @@ class AddVideoCourse extends React.Component {
_
.
map
(
courseChapterList
,(
item
,
index
)
=>
{
_
.
map
(
courseChapterList
,(
item
,
index
)
=>
{
return
<
div
className=
'course-ware'
key=
{
index
}
>
return
<
div
className=
'course-ware'
key=
{
index
}
>
<
div
className=
"course-ware__index"
>
{
`0${index + 1 } `
}
</
div
>
<
div
className=
"course-ware__index"
>
{
`0${index + 1 } `
}
</
div
>
<
img
className=
'course-ware__img'
src=
{
courseWareIcon
}
alt=
''
/>
{
/* <img className='course-ware__img' src={courseWareIcon} alt='' /> */
}
<
div
className=
'course-ware__name'
>
{
item
.
mediaName
&&
item
.
mediaName
.
length
>
24
?
<
Tooltip
title=
{
item
.
mediaName
}
>
{
item
.
mediaName
}
</
Tooltip
>:
item
.
mediaName
}
</
div
>
<
div
className=
'course-ware__name'
>
{
item
.
mediaName
&&
item
.
mediaName
.
length
>
24
?
<
Tooltip
title=
{
item
.
mediaName
}
>
{
item
.
mediaName
}
</
Tooltip
>:
item
.
mediaName
}
</
div
>
<
div
className=
"course-chapter__opt"
id=
{
item
.
id
}
>
<
div
className=
"course-chapter__opt"
id=
{
item
.
id
}
>
<
div
className=
{
`up ${Number(index) === 0 ? 'disabled':''}`
}
onClick=
{
()
=>
this
.
handleChangeIndex
(
true
,
item
.
sort
,
item
.
id
)
}
>
上移
</
div
>
<
div
className=
{
`up ${Number(index) === 0 ? 'disabled':''}`
}
onClick=
{
()
=>
this
.
handleChangeIndex
(
true
,
item
.
sort
,
item
.
id
)
}
>
上移
</
div
>
...
@@ -911,13 +976,13 @@ class AddVideoCourse extends React.Component {
...
@@ -911,13 +976,13 @@ class AddVideoCourse extends React.Component {
<
SelectPrepareFileModal
<
SelectPrepareFileModal
multiple=
{
true
}
multiple=
{
true
}
operateType=
'select'
operateType=
'select'
selectTypeList=
{
[
'MP4'
]
}
selectTypeList=
{
selectTypeList
}
accept=
'video/mp4'
accept=
{
accept
}
confirm=
{
{
confirm=
{
{
title
:
'文件过大,无法上传'
,
title
:
'文件过大,无法上传'
,
content
:
'为保障学员的观看体验,上传的视频大小不能超过2G'
content
:
'为保障学员的观看体验,上传的视频大小不能超过2G'
}
}
}
}
tooltip=
{
'
格式支持mp4,大小不超过2G
'
}
tooltip=
{
''
}
isOpen=
{
showSelectFileModal
}
isOpen=
{
showSelectFileModal
}
diskList=
{
diskList
}
diskList=
{
diskList
}
addVideo=
{
true
}
addVideo=
{
true
}
...
...
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