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
0d46d6db
Commit
0d46d6db
authored
Jun 17, 2021
by
wufan
Browse files
Options
Browse Files
Download
Plain Diff
fix:合并master
parents
7976d506
3ceb4c87
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
532 additions
and
159 deletions
+532
-159
src/bu-components/ChooseMembersModal.jsx
+2
-3
src/bu-components/ChooseMembersModal.less
+1
-1
src/bu-components/ManagingMembersModal.jsx
+8
-6
src/bu-components/ManagingMembersModal.less
+3
-0
src/domains/basic-domain/constants.ts
+2
-2
src/domains/course-domain/constants.ts
+2
-2
src/modules/course-manage/graphics-course/components/GraphicsCourseList.jsx
+2
-2
src/modules/course-manage/modal/ShareLiveModal.jsx
+31
-2
src/modules/course-manage/modal/ShareLiveModal.less
+140
-63
src/modules/course-manage/offline-course/components/OfflineCourseList.jsx
+2
-2
src/modules/knowledge-base/components/KnowledgeBaseList.jsx
+2
-2
src/modules/plan-manage/modal/SharePlanModal.jsx
+34
-3
src/modules/plan-manage/modal/SharePlanModal.less
+142
-64
src/modules/resource-disk/components/FolderList.jsx
+0
-0
src/modules/resource-disk/modal/PreviewFileModal.jsx
+57
-0
src/modules/resource-disk/modal/PreviewFileModal.less
+54
-0
src/modules/root/App.tsx
+1
-2
src/modules/root/Header.jsx
+19
-4
src/modules/root/Menu.less
+10
-1
src/modules/root/Menu.tsx
+20
-0
No files found.
src/bu-components/ChooseMembersModal.jsx
View file @
0d46d6db
...
@@ -157,7 +157,7 @@ class ChooseMembersModal extends React.Component {
...
@@ -157,7 +157,7 @@ class ChooseMembersModal extends React.Component {
let
rightsList
=
[];
// 保存新加进去的成员
let
rightsList
=
[];
// 保存新加进去的成员
selectUserList
.
map
((
item
)
=>
{
selectUserList
.
map
((
item
)
=>
{
rightsList
.
push
({
rightsList
.
push
({
rights
:
"LOOK
_DOWNLOAD
"
,
rights
:
"LOOK"
,
userId
:
item
.
userId
userId
:
item
.
userId
})
})
return
rightsList
return
rightsList
...
@@ -207,7 +207,6 @@ class ChooseMembersModal extends React.Component {
...
@@ -207,7 +207,6 @@ class ChooseMembersModal extends React.Component {
dataIndex
:
'avatar'
,
dataIndex
:
'avatar'
,
render
:
(
value
,
record
)
=>
{
render
:
(
value
,
record
)
=>
{
const
{
adminName
}
=
record
;
const
{
adminName
}
=
record
;
return
(
return
(
<
div
className=
'avatar'
>
<
div
className=
'avatar'
>
{
{
...
@@ -233,7 +232,7 @@ class ChooseMembersModal extends React.Component {
...
@@ -233,7 +232,7 @@ class ChooseMembersModal extends React.Component {
title
:
'学员名'
,
title
:
'学员名'
,
key
:
'adminNameRight'
,
key
:
'adminNameRight'
,
dataIndex
:
'adminName'
,
dataIndex
:
'adminName'
,
width
:
'
70
%'
,
width
:
'
65
%'
,
render
:
(
value
,
record
)
=>
{
render
:
(
value
,
record
)
=>
{
const
{
adminName
=
''
,
avatar
}
=
record
;
const
{
adminName
=
''
,
avatar
}
=
record
;
return
(
return
(
...
...
src/bu-components/ChooseMembersModal.less
View file @
0d46d6db
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
>tr >td {
>tr >td {
border-bottom: none;
border-bottom: none;
background-color: #fff !important;
background-color: #fff !important;
padding:8px 8px !important;
}
}
}
}
}
}
...
...
src/bu-components/ManagingMembersModal.jsx
View file @
0d46d6db
...
@@ -19,7 +19,7 @@ class ManagingMembersModal extends React.Component {
...
@@ -19,7 +19,7 @@ class ManagingMembersModal extends React.Component {
addManagingMember
:
false
,
// 是否点击了添加成员
addManagingMember
:
false
,
// 是否点击了添加成员
storeId
:
User
.
getStoreId
()
,
// 学院Id
storeId
:
User
.
getStoreId
()
,
// 学院Id
iconRotateList
:
[],
iconRotateList
:
[],
userAuthority
:
[
'可编辑'
,
'可
查看/下载'
,
'仅
可查看'
,
''
,
'创建者'
,
'学院管理员'
]
,
// 空 代表删除
userAuthority
:
[
'可编辑'
,
'可
下载'
,
'
可查看'
,
''
,
'创建者'
,
'学院管理员'
]
,
// 空 代表删除
}
}
}
}
componentDidMount
()
{
componentDidMount
()
{
...
@@ -64,7 +64,7 @@ class ManagingMembersModal extends React.Component {
...
@@ -64,7 +64,7 @@ class ManagingMembersModal extends React.Component {
// 修改成员权限
// 修改成员权限
updateFileUserAuthority
=
(
params
,
newRights
=
1
)
=>
{
updateFileUserAuthority
=
(
params
,
newRights
=
1
)
=>
{
const
rightList
=
[
'EDIT'
,
'LOOK_DOWNLOAD'
,
''
];
const
rightList
=
[
'EDIT'
,
'LOOK_DOWNLOAD'
,
'
LOOK
'
];
let
{
iconRotateList
}
=
this
.
state
;
let
{
iconRotateList
}
=
this
.
state
;
let
_params
=
params
;
let
_params
=
params
;
_params
.
rights
=
rightList
[
newRights
];
_params
.
rights
=
rightList
[
newRights
];
...
@@ -173,10 +173,10 @@ class ManagingMembersModal extends React.Component {
...
@@ -173,10 +173,10 @@ class ManagingMembersModal extends React.Component {
<
span
className=
'menu-bottom'
>
下载、复制
</
span
>
<
span
className=
'menu-bottom'
>
下载、复制
</
span
>
</
div
>
</
div
>
</
Menu
.
Item
>
</
Menu
.
Item
>
{
/*
<Menu.Item key="LOOK" >
<
Menu
.
Item
key=
"LOOK"
>
<div onClick={() => this.updateFileUserAuthority(params, 2)}>
仅可查看
</div>
<
div
onClick=
{
()
=>
this
.
updateFileUserAuthority
(
params
,
2
)
}
>
{
userAuthority
[
2
]
}
</
div
>
<span className='menu-bottom'>
{userAuthority[2]}
</span>
<
span
className=
'menu-bottom'
>
查看
</
span
>
</Menu.Item>
*/
}
</
Menu
.
Item
>
<
Menu
.
Divider
key=
'LINE'
/>
<
Menu
.
Divider
key=
'LINE'
/>
<
Menu
.
Item
key=
"REMOVE"
>
<
Menu
.
Item
key=
"REMOVE"
>
<
div
className=
'remove'
onClick=
{
()
=>
this
.
removeUser
(
params
,
userAuthority
[
3
])
}
>
移除
</
div
>
<
div
className=
'remove'
onClick=
{
()
=>
this
.
removeUser
(
params
,
userAuthority
[
3
])
}
>
移除
</
div
>
...
@@ -247,6 +247,8 @@ class ManagingMembersModal extends React.Component {
...
@@ -247,6 +247,8 @@ class ManagingMembersModal extends React.Component {
num
=
1
;
num
=
1
;
}
else
if
(
record
.
rights
===
"EDIT"
)
{
}
else
if
(
record
.
rights
===
"EDIT"
)
{
num
=
0
;
num
=
0
;
}
else
if
(
record
.
rights
==
"LOOK"
){
num
=
2
;
}
}
}
}
return
(
return
(
...
...
src/bu-components/ManagingMembersModal.less
View file @
0d46d6db
...
@@ -35,6 +35,9 @@
...
@@ -35,6 +35,9 @@
.ant-table-row{
.ant-table-row{
background-color: #fff !important;
background-color: #fff !important;
}
}
tr:first-child{
display: none;
}
.ant-table-row:hover{
.ant-table-row:hover{
background-color: #E9E9E9;
background-color: #E9E9E9;
}
}
...
...
src/domains/basic-domain/constants.ts
View file @
0d46d6db
/*
/*
* @Author: 陈剑宇
* @Author: 陈剑宇
* @Date: 2020-05-07 14:43:01
* @Date: 2020-05-07 14:43:01
* @LastEditTime: 2021-0
5-28 15:20:40
* @LastEditTime: 2021-0
6-11 16:44:17
* @LastEditors:
fusanqiasng
* @LastEditors:
Please set LastEditors
* @Description:
* @Description:
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
*/
*/
...
...
src/domains/course-domain/constants.ts
View file @
0d46d6db
/*
/*
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-20 09:21:40
* @Date: 2020-08-20 09:21:40
* @LastEditors:
zhangleyuan
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
2-20 17:08:58
* @LastEditTime: 2021-0
6-11 15:17:56
* @Description:
* @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
...
...
src/modules/course-manage/graphics-course/components/GraphicsCourseList.jsx
View file @
0d46d6db
/*
/*
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-05 10:12:45
* @Date: 2020-08-05 10:12:45
* @LastEditors:
yuananting
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-06-
02 15:05:54
* @LastEditTime: 2021-06-
15 20:01:05
* @Description: 视频课-列表模块
* @Description: 视频课-列表模块
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
...
...
src/modules/course-manage/modal/ShareLiveModal.jsx
View file @
0d46d6db
...
@@ -52,6 +52,13 @@ class ShareLiveModal extends React.Component {
...
@@ -52,6 +52,13 @@ class ShareLiveModal extends React.Component {
size
:
98
,
size
:
98
,
})
})
qrcodeWrapDom
.
appendChild
(
qrcodeNode
)
qrcodeWrapDom
.
appendChild
(
qrcodeNode
)
const
qrcodeWrapDomDownload
=
document
.
querySelector
(
'#qrcodeWrap-dowload'
)
const
qrcodeNodeDownLoad
=
new
qrcode
({
text
:
this
.
state
.
shareUrl
,
size
:
196
,
})
qrcodeWrapDomDownload
.
appendChild
(
qrcodeNodeDownLoad
)
}
}
)
)
})
})
...
@@ -72,13 +79,12 @@ class ShareLiveModal extends React.Component {
...
@@ -72,13 +79,12 @@ class ShareLiveModal extends React.Component {
()
=>
{
()
=>
{
this
.
setState
({
time
:
new
Date
().
valueOf
()
},
()
=>
{
this
.
setState
({
time
:
new
Date
().
valueOf
()
},
()
=>
{
setTimeout
(()
=>
{
setTimeout
(()
=>
{
let
node
=
document
.
getElementById
(
'poster'
)
let
node
=
document
.
getElementById
(
'poster
-dowload
'
)
domtoimage
.
toPng
(
node
).
then
((
imgData
)
=>
{
domtoimage
.
toPng
(
node
).
then
((
imgData
)
=>
{
console
.
log
(
imgData
)
console
.
log
(
imgData
)
const
download
=
document
.
createElement
(
'a'
)
const
download
=
document
.
createElement
(
'a'
)
const
{
courseName
}
=
this
.
props
.
data
const
{
courseName
}
=
this
.
props
.
data
$
(
download
).
attr
(
'href'
,
imgData
).
attr
(
'download'
,
`
${
courseName
}
.png`
).
get
(
0
).
click
()
$
(
download
).
attr
(
'href'
,
imgData
).
attr
(
'download'
,
`
${
courseName
}
.png`
).
get
(
0
).
click
()
// this.props.close()
})
})
},
1000
)
},
1000
)
})
})
...
@@ -158,6 +164,29 @@ class ShareLiveModal extends React.Component {
...
@@ -158,6 +164,29 @@ class ShareLiveModal extends React.Component {
<
div
className=
'qrcode-wrap__right'
id=
'qrcodeWrap'
></
div
>
<
div
className=
'qrcode-wrap__right'
id=
'qrcodeWrap'
></
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
id=
'poster-dowload'
>
<
div
className=
'store-name'
>
<
span
className=
'text'
>
{
User
.
getStoreName
()
}
</
span
>
</
div
>
<
div
className=
'course-name-title'
>
{
type
===
'videoClass'
?
`${courseName}开课啦`
:
`邀请你观看直播:`
}
</
div
>
{
type
===
'liveClass'
&&
<
div
class=
'live-couse-name'
>
{
courseName
}
</
div
>
}
<
Choose
>
<
When
condition=
{
showImg
}
>
<
img
crossOrigin=
'*'
src=
{
coverImgSrc
+
`?=${time}`
}
className=
'course-cover'
alt=
''
/>
</
When
>
<
Otherwise
>
<
img
src=
{
coverImgSrc
+
`?=${time}`
}
className=
'course-cover'
alt=
''
/>
</
Otherwise
>
</
Choose
>
<
div
className=
'qrcode-wrap'
>
<
div
className=
'qrcode-wrap__left'
>
<
div
className=
'text'
>
长按识别二维码进入观看
</
div
>
<
img
className=
'finger'
src=
'https://image.xiaomaiketang.com/xm/thpkWDwJsC.png'
alt=
''
/>
</
div
>
<
div
className=
'qrcode-wrap__right'
id=
'qrcodeWrap-dowload'
></
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
'right'
>
<
div
className=
'right'
>
<
div
className=
'share-poster right__item'
>
<
div
className=
'share-poster right__item'
>
...
...
src/modules/course-manage/modal/ShareLiveModal.less
View file @
0d46d6db
.share-live-modal {
.share-live-modal {
.ant-modal-body {
.ant-modal-body {
display: flex;
display: flex;
#poster{
height:510px !important;
background: #FFF;
overflow: hidden !important;
margin:0;
padding: 20px;
}
.left {
.left {
width: 303px;
width: 303px;
margin: 0 32px 0 16px;
margin: 0 32px 0 16px;
box-shadow:0px 2px 10px 0px rgba(0,0,0,0.05);
box-shadow:0px 2px 10px 0px rgba(0,0,0,0.05);
border-radius: 12px;
border-radius: 12px;
#poster{
.course-name-title {
background: #FFF;
font-size: 14px;
margin:0;
color: #333;
padding: 20px;
line-height: 20px;
margin-bottom:140px;
margin-bottom: 4px;
.course-name-title {
}
font-size: 14px;
.live-couse-name{
font-size:16px;
color:#333333;
font-weight: 600;
}
.course-name {
color: #333;
color: #333;
font-size: 16px;
font-weight: 600;
line-height: 20px;
line-height: 20px;
}
margin-bottom: 4px;
}
.course-cover {
.live-couse-name{
width: 263px;
font-size:16px;
height: 143px;
color:#333333;
border-radius: 6px;
font-weight: 600;
margin-top: 8px;
}
}
.course-name {
color: #333;
font-size: 16px;
font-weight: 600;
line-height: 20px;
}
.course-cover {
width: 263px;
height: 143px;
border-radius: 6px;
margin-top: 8px;
}
.qrcode-wrap {
.qrcode-wrap {
padding: 0 16px;
padding: 0 16px;
display: flex;
display: flex;
align-items: center;
align-items: center;
margin: 24px 0 16px 0;
margin: 24px 0 16px 0;
&__left {
&__left {
width: 98px;
width: 98px;
text-align: center;
text-align: center;
margin-right: 22px;
margin-right: 22px;
.text {
.text {
line-height: 20px;
line-height: 20px;
}
.finger {
width: 40px;
height: 40px;
margin-top: 8px;
}
}
}
.finger
{
&__right
{
width:
4
0px;
width:
11
0px;
height:
4
0px;
height:
11
0px;
margin-top: 8px;
padding: 6px
}
}
}
}
&__right {
.store-name {
width: 110px;
// padding: 8px 16px;
height: 110px;
display: flex;
padding: 6px
align-items: center;
margin-bottom: 8px;
.text {
font-size: 12px;
color: #999;
font-size: 14px;
line-height: 20px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
}
}
}
#poster-dowload{
.store-name {
background: #FFF;
// padding: 8px 16px;
margin:0;
display: flex;
padding: 40px;
align-items: center;
width:606px;
.course-name-title {
font-size: 28px;
color: #333;
line-height: 40px;
margin-bottom: 8px;
margin-bottom: 8px;
.text {
}
font-size: 12px;
.live-couse-name{
color: #999;
font-size:32px;
font-size: 14px;
color:#333333;
line-height: 20px;
font-weight: 600;
text-overflow: ellipsis;
}
overflow: hidden;
.course-name {
white-space: nowrap;
color: #333;
width: 100%;
font-size: 32px;
font-weight: 600;
line-height: 40px;
}
.course-cover {
width: 526px;
height: 286px;
border-radius: 6px;
margin-top: 16px;
}
.qrcode-wrap {
padding: 0 32px;
display: flex;
align-items: center;
margin: 48px 0 32px 0;
&__left {
width: 196px;
text-align: center;
margin-right: 44px;
.text {
line-height: 40px;
}
.finger {
width: 80px;
height: 80px;
margin-top: 16px;
}
}
&__right {
width: 220px;
height: 220px;
padding: 12px
}
}
.store-name {
// padding: 8px 16px;
display: flex;
align-items: center;
margin-bottom: 16px;
.text {
font-size: 24px;
color: #999;
font-size: 28px;
line-height: 40px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
}
}
}
}
}
.right {
.right {
.title {
.title {
color: #333;
color: #333;
...
...
src/modules/course-manage/offline-course/components/OfflineCourseList.jsx
View file @
0d46d6db
/*
/*
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-05 10:12:45
* @Date: 2020-08-05 10:12:45
* @LastEditors:
yuananting
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-06-
02 16:15:55
* @LastEditTime: 2021-06-
11 16:44:42
* @Description: 视频课-列表模块
* @Description: 视频课-列表模块
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
...
...
src/modules/knowledge-base/components/KnowledgeBaseList.jsx
View file @
0d46d6db
...
@@ -2,8 +2,8 @@
...
@@ -2,8 +2,8 @@
* @Description:
* @Description:
* @Author: zangsuyun
* @Author: zangsuyun
* @Date: 2021-03-12 14:49:40
* @Date: 2021-03-12 14:49:40
* @LastEditors:
wufan
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
5-30 20:37:42
* @LastEditTime: 2021-0
6-11 16:44:59
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
...
src/modules/plan-manage/modal/SharePlanModal.jsx
View file @
0d46d6db
...
@@ -51,6 +51,13 @@ class ShareLiveModal extends React.Component {
...
@@ -51,6 +51,13 @@ class ShareLiveModal extends React.Component {
size
:
98
,
size
:
98
,
})
})
qrcodeWrapDom
.
appendChild
(
qrcodeNode
)
qrcodeWrapDom
.
appendChild
(
qrcodeNode
)
const
qrcodeWrapDomDownload
=
document
.
querySelector
(
'#qrcodeWrap-dowload'
)
const
qrcodeNodeDownLoad
=
new
qrcode
({
text
:
this
.
state
.
shareUrl
,
size
:
196
,
})
qrcodeWrapDomDownload
.
appendChild
(
qrcodeNodeDownLoad
)
}
}
)
)
})
})
...
@@ -70,9 +77,8 @@ class ShareLiveModal extends React.Component {
...
@@ -70,9 +77,8 @@ class ShareLiveModal extends React.Component {
},
},
()
=>
{
()
=>
{
this
.
setState
({
time
:
new
Date
().
valueOf
()
},
()
=>
{
this
.
setState
({
time
:
new
Date
().
valueOf
()
},
()
=>
{
let
node
=
document
.
getElementById
(
'poster'
)
let
node
=
document
.
getElementById
(
'poster
-dowload
'
)
domtoimage
.
toPng
(
node
).
then
((
imgData
)
=>
{
domtoimage
.
toPng
(
node
).
then
((
imgData
)
=>
{
console
.
log
(
imgData
)
const
download
=
document
.
createElement
(
'a'
)
const
download
=
document
.
createElement
(
'a'
)
const
{
planName
}
=
this
.
props
.
data
const
{
planName
}
=
this
.
props
.
data
$
(
download
).
attr
(
'href'
,
imgData
).
attr
(
'download'
,
`
${
planName
}
.png`
).
get
(
0
).
click
()
$
(
download
).
attr
(
'href'
,
imgData
).
attr
(
'download'
,
`
${
planName
}
.png`
).
get
(
0
).
click
()
...
@@ -112,7 +118,7 @@ class ShareLiveModal extends React.Component {
...
@@ -112,7 +118,7 @@ class ShareLiveModal extends React.Component {
<
div
className=
'course-name-title'
>
邀请你参与培训:
</
div
>
<
div
className=
'course-name-title'
>
邀请你参与培训:
</
div
>
<
div
class=
'live-couse-name'
>
{
planName
}
</
div
>
<
div
class
Name
=
'live-couse-name'
>
{
planName
}
</
div
>
<
Choose
>
<
Choose
>
<
When
condition=
{
showImg
}
>
<
When
condition=
{
showImg
}
>
<
img
crossOrigin=
'*'
src=
{
coverUrl
+
`?=${time}`
}
className=
'course-cover'
alt=
''
/>
<
img
crossOrigin=
'*'
src=
{
coverUrl
+
`?=${time}`
}
className=
'course-cover'
alt=
''
/>
...
@@ -130,6 +136,31 @@ class ShareLiveModal extends React.Component {
...
@@ -130,6 +136,31 @@ class ShareLiveModal extends React.Component {
<
div
className=
'qrcode-wrap__right'
id=
'qrcodeWrap'
></
div
>
<
div
className=
'qrcode-wrap__right'
id=
'qrcodeWrap'
></
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
id=
'poster-dowload'
>
<
div
className=
'store-name'
>
<
span
className=
'text'
>
{
User
.
getStoreName
()
}
</
span
>
</
div
>
<
div
className=
'course-name-title'
>
邀请你参与培训:
</
div
>
<
div
className=
'live-couse-name'
>
{
planName
}
</
div
>
<
Choose
>
<
When
condition=
{
showImg
}
>
<
img
crossOrigin=
'*'
src=
{
coverUrl
+
`?=${time}`
}
className=
'course-cover'
alt=
''
/>
</
When
>
<
Otherwise
>
<
img
src=
{
coverUrl
+
`?=${time}`
}
className=
'course-cover'
alt=
''
/>
</
Otherwise
>
</
Choose
>
<
div
className=
'qrcode-wrap'
>
<
div
className=
'qrcode-wrap__left'
>
<
div
className=
'text'
>
长按识别二维码进入观看
</
div
>
<
img
className=
'finger'
src=
'https://image.xiaomaiketang.com/xm/thpkWDwJsC.png'
alt=
''
/>
</
div
>
<
div
className=
'qrcode-wrap__right'
id=
'qrcodeWrap-dowload'
></
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
'right'
>
<
div
className=
'right'
>
<
div
className=
'share-poster right__item'
>
<
div
className=
'share-poster right__item'
>
...
...
src/modules/plan-manage/modal/SharePlanModal.less
View file @
0d46d6db
.share-live-modal {
.share-live-modal {
.ant-modal-body {
.ant-modal-body {
display: flex;
display: flex;
#poster{
height:510px !important;
background: #FFF;
overflow: hidden !important;
margin:0;
padding: 20px;
}
.left {
.left {
width: 303px;
width: 303px;
margin: 0 32px 0 16px;
margin: 0 32px 0 16px;
box-shadow:0px 2px 10px 0px rgba(0,0,0,0.05);
box-shadow:0px 2px 10px 0px rgba(0,0,0,0.05);
border-radius: 12px;
border-radius: 12px;
#poster{
.course-name-title {
background: #FFF;
font-size: 14px;
margin:0;
color: #333;
padding: 20px;
line-height: 20px;
margin-bottom:140px;
margin-bottom: 4px;
.course-name-title {
}
font-size: 14px;
.live-couse-name{
color: #333;
font-size:16px;
line-height: 20px;
color:#333333;
margin-bottom: 4px;
font-weight: 600;
}
}
.live-couse-name{
.course-name {
font-size:16px;
color: #333;
color:#333333;
font-size: 16px;
font-weight: 600;
font-weight: 600;
}
line-height: 20px;
.course-name {
}
color: #333;
font-size: 16px;
.course-cover {
font-weight: 600;
width: 263px;
line-height: 20px;
height: 143px;
}
border-radius: 6px;
margin-top: 8px;
.course-cover {
}
width: 263px;
height: 143px;
border-radius: 6px;
margin-top: 8px;
}
.qrcode-wrap {
.qrcode-wrap {
padding: 0 16px;
padding: 0 16px;
display: flex;
display: flex;
align-items: center;
align-items: center;
margin: 24px 0 16px 0;
margin: 24px 0 16px 0;
&__left {
&__left {
width: 98px;
width: 98px;
text-align: center;
text-align: center;
margin-right: 22px;
margin-right: 22px;
.text {
.text {
line-height: 20px;
line-height: 20px;
}
.finger {
width: 40px;
height: 40px;
margin-top: 8px;
}
}
}
.finger
{
&__right
{
width:
4
0px;
width:
11
0px;
height:
4
0px;
height:
11
0px;
margin-top: 8px;
padding: 6px
}
}
}
}
&__right {
.store-name {
width: 110px;
// padding: 8px 16px;
height: 110px;
display: flex;
padding: 6px
align-items: center;
margin-bottom: 8px;
.text {
font-size: 12px;
color: #999;
font-size: 14px;
line-height: 20px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
}
}
}
#poster-dowload{
background: #FFF;
margin:0;
padding: 40px;
width:606px;
.course-name-title {
font-size: 28px;
color: #333;
line-height: 40px;
margin-bottom: 8px;
}
.live-couse-name{
font-size:32px;
color:#333333;
font-weight: 600;
}
.course-name {
color: #333;
font-size: 32px;
font-weight: 600;
line-height: 40px;
}
.course-cover {
width: 526px;
height: 286px;
border-radius: 6px;
margin-top: 16px;
}
.store-name {
.qrcode-wrap {
// padding: 8px 16px;
padding: 0 32px;
display: flex;
display: flex;
align-items: center;
align-items: center;
margin-bottom: 8px;
margin: 48px 0 32px 0;
.text {
font-size: 12px;
&__left {
color: #999;
width: 196px;
font-size: 14px;
text-align: center;
line-height: 20px;
margin-right: 44px;
text-overflow: ellipsis;
overflow: hidden;
.text {
white-space: nowrap;
line-height: 40px;
width: 100%;
}
.finger {
width: 80px;
height: 80px;
margin-top: 16px;
}
}
&__right {
width: 220px;
height: 220px;
padding: 12px
}
}
.store-name {
// padding: 8px 16px;
display: flex;
align-items: center;
margin-bottom: 16px;
.text {
font-size: 12px;
color: #999;
font-size: 28px;
line-height: 40px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
}
}
}
}
}
...
...
src/modules/resource-disk/components/FolderList.jsx
View file @
0d46d6db
This diff is collapsed.
Click to expand it.
src/modules/resource-disk/modal/PreviewFileModal.jsx
0 → 100644
View file @
0d46d6db
import
React
from
'react'
;
import
"./PreviewFileModal.less"
;
import
{
Spin
}
from
'antd'
class
PreviewFileModal
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{};
}
cancelPreView
=
()
=>
{
this
.
props
.
onCancel
();
}
toPreView
=
(
url
)
=>
{
const
a
=
document
.
createElement
(
'a'
);
document
.
body
.
appendChild
(
a
);
a
.
setAttribute
(
'href'
,
url
);
a
.
setAttribute
(
'target'
,
'_blank'
);
a
.
click
();
document
.
body
.
removeChild
(
a
);
this
.
props
.
onCancel
();
}
render
()
{
const
{
previewStatus
,
url
}
=
this
.
props
return
(
<
div
className=
"preview-modal"
>
<
div
className=
"preview-modal-content"
>
<
div
className=
"load-img-box"
>
{
previewStatus
===
"UPLOAD"
&&
<
Spin
size=
"large"
/>
}
{
previewStatus
===
"UPLOAD_SUCCESS"
&&
<
img
className=
"load-img"
src=
"https://image.xiaomaiketang.com/xm/jJRK3bTEdc.png"
></
img
>
}
</
div
>
<
div
className=
"load-text-box"
>
{
previewStatus
===
"UPLOAD"
&&
<
div
className=
"load-text-box-title"
>
预览生成中
</
div
>
}
{
previewStatus
===
"UPLOAD_SUCCESS"
&&
<
div
className=
"load-text-box-title"
>
预览生成成功
</
div
>
}
</
div
>
<
div
className=
"operate"
>
<
span
className=
"btn cancel-preview-btn"
onClick=
{
()
=>
this
.
cancelPreView
()
}
>
取消预览
</
span
>
{
previewStatus
===
"UPLOAD"
&&
<
span
className=
"btn to-preview-btn__disabled to-preview-btn"
>
去查看
</
span
>
}
{
previewStatus
===
"UPLOAD_SUCCESS"
&&
<
span
className=
"btn to-preview-btn"
onClick=
{
()
=>
this
.
toPreView
(
url
)
}
>
去查看
</
span
>
}
</
div
>
</
div
>
</
div
>
);
}
}
export
default
PreviewFileModal
;
src/modules/resource-disk/modal/PreviewFileModal.less
0 → 100644
View file @
0d46d6db
.preview-modal{
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 102;
height: 100%;
background: rgba(0, 0, 0, 0.7);
.preview-modal-content{
position:absolute;
left:calc(50% - 133px);
top:calc(50% - 87px);
color:#FFF;
text-align:center;
width:266px;
height:174px;
.ant-spin-dot-item{
background-color: #FFF;
}
.load-img-box{
.load-img{
width:44px;
height:44px;
}
}
.load-text-box{
margin-top:23px;
font-size:16px;
color:#FFF;
.load-text-box-title{
margin-bottom:8px;
}
}
.operate{
margin-top:24px;
.btn {
padding:5px 12px;
border:1px solid #E8E8E8;
border-radius:2px;
}
.cancel-preview-btn{
margin-right:8px;
}
.to-preview-btn__disabled{
border:1px solid #E8E8E8;
opacity: 0.4;
}
}
}
}
\ No newline at end of file
src/modules/root/App.tsx
View file @
0d46d6db
...
@@ -116,7 +116,6 @@ const App: React.FC = (props: any) => {
...
@@ -116,7 +116,6 @@ const App: React.FC = (props: any) => {
setMenuType
(
!
menuType
);
setMenuType
(
!
menuType
);
}
}
if
(
!
storeUserId
)
{
if
(
!
storeUserId
)
{
return
<
div
></
div
>
return
<
div
></
div
>
}
}
...
@@ -127,7 +126,7 @@ const App: React.FC = (props: any) => {
...
@@ -127,7 +126,7 @@ const App: React.FC = (props: any) => {
<
ConfigProvider
locale=
{
zhCN
}
autoInsertSpaceInButton=
{
false
}
>
<
ConfigProvider
locale=
{
zhCN
}
autoInsertSpaceInButton=
{
false
}
>
<
Main
menuType=
{
menuType
}
/>
<
Main
menuType=
{
menuType
}
/>
</
ConfigProvider
>
</
ConfigProvider
>
<
Menu
menuType=
{
menuType
}
handleMenuType=
{
handleMenuType
}
/>
<
Menu
menuType=
{
menuType
}
handleMenuType=
{
handleMenuType
}
/>
</
div
>
</
div
>
)
)
}
}
...
...
src/modules/root/Header.jsx
View file @
0d46d6db
...
@@ -11,6 +11,7 @@ import { Radio, Button, Dropdown, Modal, Tooltip, message } from "antd";
...
@@ -11,6 +11,7 @@ import { Radio, Button, Dropdown, Modal, Tooltip, message } from "antd";
import
{
LIVE_SHARE
}
from
"@/domains/course-domain/constants"
;
import
{
LIVE_SHARE
}
from
"@/domains/course-domain/constants"
;
import
User
from
"@/common/js/user"
;
import
User
from
"@/common/js/user"
;
import
Service
from
"@/common/js/service"
;
import
Service
from
"@/common/js/service"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
{
XMContext
}
from
"@/store/context"
;
import
{
XMContext
}
from
"@/store/context"
;
import
logoImg
from
"@/common/images/logo.png"
;
import
logoImg
from
"@/common/images/logo.png"
;
...
@@ -18,6 +19,7 @@ import CourseService from "@/domains/course-domain/CourseService";
...
@@ -18,6 +19,7 @@ import CourseService from "@/domains/course-domain/CourseService";
import
qrcode
from
"@/libs/qrcode/qrcode.js"
;
import
qrcode
from
"@/libs/qrcode/qrcode.js"
;
import
Bus
from
'@/core/tbus'
;
import
Bus
from
'@/core/tbus'
;
import
ClickOutside
from
'../../components/ClickOutside'
;
import
ClickOutside
from
'../../components/ClickOutside'
;
import
_
from
"underscore"
;
const
baseImg
=
"https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png"
;
const
baseImg
=
"https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png"
;
const
{
confirm
}
=
Modal
;
const
{
confirm
}
=
Modal
;
...
@@ -38,6 +40,8 @@ function Header(props) {
...
@@ -38,6 +40,8 @@ function Header(props) {
const
storeUserId
=
User
.
getStoreUserId
();
const
storeUserId
=
User
.
getStoreUserId
();
const
enterpriseId
=
User
.
getEnterpriseId
();
const
enterpriseId
=
User
.
getEnterpriseId
();
const
messageHelpRef
=
useRef
(
null
)
const
domRef
=
useRef
(
null
);
const
domRef
=
useRef
(
null
);
const
listRef
=
useRef
(
list
);
const
listRef
=
useRef
(
list
);
...
@@ -53,6 +57,17 @@ function Header(props) {
...
@@ -53,6 +57,17 @@ function Header(props) {
storeUserId
&&
getUserInfo
();
storeUserId
&&
getUserInfo
();
enterpriseId
?
getEnterpriseUser
()
:
User
.
setIsAdmin
(
false
);
enterpriseId
?
getEnterpriseUser
()
:
User
.
setIsAdmin
(
false
);
},
[
storeUserId
]);
},
[
storeUserId
]);
useEffect
(()
=>
{
if
(
!
messageHelpRef
.
current
)
{
return
}
if
(
menuType
)
{
messageHelpRef
.
current
.
style
.
marginLeft
=
"194px"
}
else
{
messageHelpRef
.
current
.
style
.
marginLeft
=
"76px"
}
},[
menuType
])
function
getUserInfo
()
{
function
getUserInfo
()
{
const
param
=
{
const
param
=
{
...
@@ -218,10 +233,10 @@ function Header(props) {
...
@@ -218,10 +233,10 @@ function Header(props) {
return
(
return
(
<
div
id=
"top-container"
className=
"top-container"
>
<
div
id=
"top-container"
className=
"top-container"
>
<
div
className=
"top top-nav"
>
<
div
className=
"top top-nav"
>
<
div
>
{
/*
<div>
<
img
src=
'https://image.xiaomaiketang.com/xm/WEsMPAYxAs.png'
className=
"logo"
alt=
""
/>
<img src=
{topLeftLogo}
className="logo" alt="" />
</
div
>
</div>
*/
}
<
div
className=
"message-help"
>
<
div
className=
"message-help"
ref=
{
messageHelpRef
}
>
{
list
.
length
?
(
{
list
.
length
?
(
<
ClickOutside
<
ClickOutside
onClickOutside=
{
()
=>
{
onClickOutside=
{
()
=>
{
...
...
src/modules/root/Menu.less
View file @
0d46d6db
@import '../../core/variables.less';
@import '../../core/variables.less';
@top-height:
6
0px;
@top-height: 0px;
@menu-bakg: #FFF;
@menu-bakg: #FFF;
@active-color: #2966FF;
@active-color: #2966FF;
.left-container {
.left-container {
...
@@ -12,6 +12,15 @@
...
@@ -12,6 +12,15 @@
width: @xm-left-width;
width: @xm-left-width;
background: @menu-bakg;
background: @menu-bakg;
color: #333;
color: #333;
.topLogo {
height: 62px;
img {
width: 138px;
height: 35px;
margin-left: 19px;
margin-top: 13px;
}
}
.menu-type-icon{
.menu-type-icon{
margin:4px 0 0px 150px;
margin:4px 0 0px 150px;
cursor: pointer;
cursor: pointer;
...
...
src/modules/root/Menu.tsx
View file @
0d46d6db
...
@@ -5,8 +5,12 @@ import {
...
@@ -5,8 +5,12 @@ import {
import
{
Menu
}
from
'antd'
;
import
{
Menu
}
from
'antd'
;
import
{
menuList
}
from
'../../routes//config/menuList'
import
{
menuList
}
from
'../../routes//config/menuList'
import
{
XMContext
}
from
'../../store/context'
;
import
{
XMContext
}
from
'../../store/context'
;
import
Service
from
"@/common/js/service"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
User
from
"@/common/js/user"
;
import
_
from
'underscore'
;
import
_
from
'underscore'
;
import
"./Menu.less"
;
import
"./Menu.less"
;
console
.
log
(
'2021-06-17'
)
const
{
SubMenu
}
=
Menu
;
const
{
SubMenu
}
=
Menu
;
function
Aside
(
props
:
any
)
{
function
Aside
(
props
:
any
)
{
...
@@ -14,6 +18,7 @@ function Aside(props: any) {
...
@@ -14,6 +18,7 @@ function Aside(props: any) {
const
ctx
:
any
=
useContext
(
XMContext
);
const
ctx
:
any
=
useContext
(
XMContext
);
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
useEffect
(()
=>
{
useEffect
(()
=>
{
const
link
=
props
.
location
.
pathname
;
const
link
=
props
.
location
.
pathname
;
...
@@ -31,6 +36,17 @@ function Aside(props: any) {
...
@@ -31,6 +36,17 @@ function Aside(props: any) {
return
item
;
return
item
;
})
})
},
[
props
.
location
.
pathname
])
},
[
props
.
location
.
pathname
])
useEffect
(()
=>
{
getTopLeftLogo
()
})
function
getTopLeftLogo
()
{
if
(
User
.
getToken
())
{
StoreService
.
getStoreDetail
({
storeId
:
User
.
getStoreId
()})
.
then
(
res
=>
{
setTopLogoUrl
(
res
.
result
.
logo
)
})
}
}
function
toggleMenu
(
item
:
any
)
{
function
toggleMenu
(
item
:
any
)
{
window
.
RCHistory
.
push
(
item
.
link
)
window
.
RCHistory
.
push
(
item
.
link
)
}
}
...
@@ -54,6 +70,10 @@ function Aside(props: any) {
...
@@ -54,6 +70,10 @@ function Aside(props: any) {
:
"left-container left-container-vertical"
:
"left-container left-container-vertical"
}
}
>
>
<
div
className=
"topLogo"
>
{
menuType
?
(<
img
src=
{
topLogoUrl
}
alt=
""
></
img
>)
:
(
""
)
}
</
div
>
<
div
className=
"menu-type-icon"
onClick=
{
handleMenu
}
>
<
div
className=
"menu-type-icon"
onClick=
{
handleMenu
}
>
{
menuType
?
(
{
menuType
?
(
<
span
<
span
...
...
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