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
5e976cf4
Commit
5e976cf4
authored
Apr 16, 2021
by
zhujian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
'fix'
parent
1f70803e
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
156 additions
and
2 deletions
+156
-2
src/core/global.less
+21
-0
src/modules/course-manage/components/CerateQWCourse.tsx
+121
-0
src/modules/course-manage/components/LiveCourseOpt.jsx
+14
-2
No files found.
src/core/global.less
View file @
5e976cf4
...
@@ -1700,3 +1700,23 @@ input:focus {
...
@@ -1700,3 +1700,23 @@ input:focus {
.ant-tag-blue{
.ant-tag-blue{
background: transparent !important;
background: transparent !important;
}
}
.createQWCourse{
.footer {
position: fixed;
bottom: 0;
height: 58px;
width: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
padding-right: 252px;
background: #fff;
border-top: 1px solid #E8E8E8;
z-index: 999;
.ant-btn {
margin-left: 10px;
}
}
}
\ No newline at end of file
src/modules/course-manage/components/CerateQWCourse.tsx
0 → 100644
View file @
5e976cf4
import
React
,
{
useState
,
useRef
,
useEffect
,
useContext
}
from
'react'
import
{
Route
,
withRouter
}
from
'react-router-dom'
;
import
Breadcrumbs
from
"@/components/Breadcrumbs"
;
import
moment
from
'moment'
import
{
Form
,
Alert
,
Input
,
Button
,
InputNumber
,
DatePicker
,
Select
,
Radio
,
message
,
Modal
}
from
'antd'
;
import
Service
from
"@/common/js/service"
;
import
User
from
"@/common/js/user"
;
declare
var
wx
:
any
;
const
{
Option
}
=
Select
;
const
courseType
=
{
0
:
'通用直播'
,
1
:
'小班课'
,
2
:
'大班课'
,
3
:
'企业培训'
,
4
:
'活动直播'
}
function
CerateQWCourse
(
props
:
any
)
{
const
[
courseName
,
setCourseName
]
=
useState
(
''
);
const
[
liveDuration
,
setLiveDuration
]
=
useState
(
60
);
const
[
liveStart
,
setLiveStart
]
=
useState
(
0
);
const
[
type
,
setType
]
=
useState
(
'0'
);
function
handleSave
()
{
const
param
=
{
courseName
,
description
:
'直播的简介,最多支持300个字节直播的简介,最多支持300个字节直播的简介,最多支持300个字节直播的简介,最多支持300个字节直播的简介,最多支持300个字节直播的简介,最多支持300个字节'
,
liveDuration
:
liveDuration
*
60
*
100
,
liveStart
,
remindTime
:
1000
*
60
*
10
,
storeId
:
User
.
getStoreId
(),
storeUserId
:
User
.
getStoreUserId
(),
type
:
parseInt
(
type
)
}
Service
.
Hades
(
'anon/hades/wxWorkCreateLiveDemo'
,
param
).
then
((
res
)
=>
{
wx
.
invoke
(
'startLiving'
,
{
"livingId"
:
res
.
result
,
},
function
(
res
:
any
)
{
if
(
res
.
err_msg
==
"startLiving:ok"
)
{
// livingId = res.livingId;
}
});
})
}
return
<
div
className=
"page createQWCourse "
>
<
Breadcrumbs
navList=
{
props
.
type
===
'edit'
?
"编辑考试"
:
"新建直播课"
}
goBack=
{
props
.
history
.
goBack
}
/>
<
div
className=
"box"
>
<
div
className=
"form"
>
<
div
className=
"title"
>
直播信息
</
div
>
<
Form
labelCol=
{
{
span
:
3
}
}
wrapperCol=
{
{
span
:
14
}
}
layout=
"horizontal"
>
<
Form
.
Item
label=
"课程名称"
required
>
<
Input
value=
{
courseName
}
onChange=
{
(
e
)
=>
{
setCourseName
(
e
.
target
.
value
)
}
}
style=
{
{
width
:
200
}
}
></
Input
>
</
Form
.
Item
>
<
Form
.
Item
label=
"持续时长"
required
>
<
InputNumber
value=
{
liveDuration
}
max=
{
1440
}
min=
{
1
}
onChange=
{
(
value
:
any
)
=>
{
setLiveDuration
(
parseInt
(
value
)
as
any
)
}
}
style=
{
{
width
:
100
}
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"开始时间"
required
>
<
DatePicker
format=
"YYYY/MM/DD HH:mm"
value=
{
liveStart
?
moment
(
Number
(
liveStart
))
:
null
}
style=
{
{
width
:
200
}
}
placeholder=
"开始时间"
showTime
onChange=
{
(
date
:
any
)
=>
{
setLiveStart
(
date
?
date
.
valueOf
()
:
0
)
}
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
"直播的类型"
required
>
<
Select
value=
{
type
}
placeholder=
"请选直播的类型"
style=
{
{
width
:
200
}
}
onChange=
{
(
val
)
=>
{
setType
(
val
)
}
}
>
{
Object
.
keys
(
courseType
).
map
((
key
:
any
)
=>
{
return
<
Option
value=
{
key
}
>
{
(
courseType
as
any
)[
key
]
}
</
Option
>
})
}
</
Select
>
</
Form
.
Item
>
</
Form
>
</
div
>
</
div
>
<
div
className=
"footer"
>
<
Button
onClick=
{
props
.
history
.
goBack
}
>
取消
</
Button
>
<
Button
type=
"primary"
onClick=
{
handleSave
}
>
保存
</
Button
>
</
div
>
</
div
>
}
export
default
withRouter
(
CerateQWCourse
);
\ No newline at end of file
src/modules/course-manage/components/LiveCourseOpt.jsx
View file @
5e976cf4
...
@@ -9,8 +9,10 @@
...
@@ -9,8 +9,10 @@
import
React
from
'react'
;
import
React
from
'react'
;
import
{
Button
,
Modal
,
message
}
from
'antd'
;
import
{
Button
,
Modal
,
message
}
from
'antd'
;
import
Service
from
'@/common/js/service'
;
import
Service
from
'@/common/js/service'
;
import
{
withRouter
,
Route
}
from
"react-router-dom"
;
import
'./liveCourseOpt.less'
;
import
'./liveCourseOpt.less'
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
CerateQWCourse
from
'./CerateQWCourse'
import
User
from
'@/common/js/user'
import
User
from
'@/common/js/user'
class
LiveCourseOpt
extends
React
.
Component
{
class
LiveCourseOpt
extends
React
.
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
...
@@ -25,6 +27,13 @@ class LiveCourseOpt extends React.Component {
...
@@ -25,6 +27,13 @@ class LiveCourseOpt extends React.Component {
pathname
:
'/create-live-course?type=add'
,
pathname
:
'/create-live-course?type=add'
,
})
})
}
}
handleCreateQWCouese
=
()
=>
{
const
{
match
}
=
this
.
props
;
this
.
props
.
history
.
push
(
`
${
match
.
url
}
/createqwcourse`
)
}
// 下载直播客户端
// 下载直播客户端
handleDownloadClient
=
()
=>
{
handleDownloadClient
=
()
=>
{
const
{
isMac
}
=
this
.
state
;
const
{
isMac
}
=
this
.
state
;
...
@@ -47,17 +56,20 @@ class LiveCourseOpt extends React.Component {
...
@@ -47,17 +56,20 @@ class LiveCourseOpt extends React.Component {
}
}
render
()
{
render
()
{
const
userRole
=
User
.
getUserRole
();
const
userRole
=
User
.
getUserRole
();
const
{
match
}
=
this
.
props
;
return
(
return
(
<
div
className=
"live-course-opt"
>
<
div
className=
"live-course-opt"
>
<
div
className=
"opt__left"
>
<
div
className=
"opt__left"
>
{
userRole
!==
"CloudLecturer"
&&
{
userRole
!==
"CloudLecturer"
&&
<
Button
type=
"primary"
onClick=
{
this
.
handleCreateLiveCouese
}
>
新建直播课
</
Button
>
<
Button
type=
"primary"
onClick=
{
this
.
handleCreateLiveCouese
}
>
新建直播课
</
Button
>
}
}
<
Button
type=
"primary"
onClick=
{
this
.
handleCreateQWCouese
}
>
新建企微直播课
</
Button
>
{
!
this
.
state
.
isMac
&&
<
Button
onClick=
{
this
.
handleDownloadClient
}
>
下载直播客户端
</
Button
>
}
{
!
this
.
state
.
isMac
&&
<
Button
onClick=
{
this
.
handleDownloadClient
}
>
下载直播客户端
</
Button
>
}
</
div
>
</
div
>
<
Route
path=
{
`${match.url}/createqwcourse`
}
component=
{
CerateQWCourse
}
/>
</
div
>
</
div
>
)
)
}
}
}
}
export
default
LiveCourseOpt
;
export
default
withRouter
(
LiveCourseOpt
);
\ No newline at end of file
\ No newline at end of file
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