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
99ed4231
Commit
99ed4231
authored
Mar 16, 2021
by
zhangleyuan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/zhangleyuan/20200220/training-program' into dev
parents
39b0451b
1a754a5a
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
246 additions
and
217 deletions
+246
-217
src/core/antd.less
+3
-1
src/modules/course-manage/components/LiveCourseList.jsx
+25
-6
src/modules/course-manage/modal/RelatedPlanModal.jsx
+1
-7
src/modules/course-manage/modal/RelatedPlanModal.less
+2
-1
src/modules/course-manage/video-course/components/VideoCourseList.jsx
+26
-11
src/modules/plan-manage/AddPlan.jsx
+3
-3
src/modules/plan-manage/LearningData.less
+4
-1
src/modules/plan-manage/components/BasicInfo.jsx
+3
-3
src/modules/plan-manage/components/BasicInfo.less
+3
-0
src/modules/plan-manage/components/EmployeeShareData.jsx
+30
-27
src/modules/plan-manage/components/EmployeeShareData.less
+13
-0
src/modules/plan-manage/components/ExpiredCourseList.less
+7
-4
src/modules/plan-manage/components/PlanList.jsx
+4
-46
src/modules/plan-manage/components/PlanList.less
+27
-0
src/modules/plan-manage/components/TrainingTask.jsx
+4
-3
src/modules/plan-manage/components/TrainingTask.less
+31
-14
src/modules/plan-manage/components/UserLearningData.jsx
+2
-1
src/modules/plan-manage/components/UserLearningData.less
+5
-0
src/modules/plan-manage/components/UserLearningDataFilter.jsx
+4
-1
src/modules/plan-manage/modal/SharePlanModal.jsx
+1
-2
src/modules/plan-manage/modal/UserLearnDetailModal.jsx
+19
-46
src/modules/plan-manage/modal/UserLearnDetailModal.less
+21
-36
src/modules/plan-manage/modal/relatedCourseModal.jsx
+2
-2
src/modules/plan-manage/modal/relatedCourseModal.less
+6
-2
No files found.
src/core/antd.less
View file @
99ed4231
...
@@ -616,7 +616,9 @@ mr0 {
...
@@ -616,7 +616,9 @@ mr0 {
.ant-table-thead > tr > th{
.ant-table-thead > tr > th{
font-weight:normal !important;
font-weight:normal !important;
}
}
td.ant-table-column-sort{
background: none;
}
...
...
src/modules/course-manage/components/LiveCourseList.jsx
View file @
99ed4231
...
@@ -293,9 +293,12 @@ class LiveCourseList extends React.Component {
...
@@ -293,9 +293,12 @@ class LiveCourseList extends React.Component {
return
(
return
(
<
div
className=
"related-task"
>
<
div
className=
"related-task"
>
{
record
.
relatedPlanList
?
{
record
.
relatedPlanList
?
record
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
<
Tooltip
title=
{
this
.
handlePlanName
(
record
.
relatedPlanList
)
}
>
return
<
span
>
{
item
.
planName
}
{
(
index
<
record
.
relatedPlanList
.
length
-
1
)
&&
(<
span
>
、
</
span
>)
}
</
span
>
{
record
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
})
return
<
span
>
{
item
.
planName
}
{
(
index
<
record
.
relatedPlanList
.
length
-
1
)
&&
(<
span
>
、
</
span
>)
}
</
span
>
})
}
</
Tooltip
>
:
:
<
span
></
span
>
<
span
></
span
>
}
}
...
@@ -510,9 +513,12 @@ class LiveCourseList extends React.Component {
...
@@ -510,9 +513,12 @@ class LiveCourseList extends React.Component {
return
(
return
(
<
div
className=
"related-task"
>
<
div
className=
"related-task"
>
{
record
.
relatedPlanList
?
{
record
.
relatedPlanList
?
record
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
<
Tooltip
title=
{
this
.
handlePlanName
(
record
.
relatedPlanList
)
}
>
return
<
span
>
{
item
.
planName
}
{
(
index
<
record
.
relatedPlanList
.
length
-
1
)
&&
(<
span
>
、
</
span
>)
}
</
span
>
{
record
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
})
return
<
span
>
{
item
.
planName
}
{
(
index
<
record
.
relatedPlanList
.
length
-
1
)
&&
(<
span
>
、
</
span
>)
}
</
span
>
})
}
</
Tooltip
>
:
:
<
span
></
span
>
<
span
></
span
>
}
}
...
@@ -535,6 +541,19 @@ class LiveCourseList extends React.Component {
...
@@ -535,6 +541,19 @@ class LiveCourseList extends React.Component {
})
})
return
adminStr
return
adminStr
}
}
handlePlanName
=
(
planArray
)
=>
{
let
planStr
=
""
;
planArray
.
map
((
item
,
index
)
=>
{
if
(
index
<
planArray
.
length
-
1
){
planStr
=
planStr
+
item
.
planName
+
'、'
;
}
else
{
planStr
=
planStr
+
item
.
planName
}
})
return
planStr
}
renderMoreOperate
=
(
item
)
=>
{
renderMoreOperate
=
(
item
)
=>
{
return
(
return
(
<
div
className=
"live-course-more-menu"
>
<
div
className=
"live-course-more-menu"
>
...
...
src/modules/course-manage/modal/RelatedPlanModal.jsx
View file @
99ed4231
...
@@ -220,13 +220,6 @@ class RelatedPlanModal extends React.Component {
...
@@ -220,13 +220,6 @@ class RelatedPlanModal extends React.Component {
this
.
selectPlanList
(
record
,
selected
,
_record
.
planId
);
this
.
selectPlanList
(
record
,
selected
,
_record
.
planId
);
},
},
onSelectAll
:
(
selected
,
_selectedRows
,
changeRows
)
=>
{
onSelectAll
:
(
selected
,
_selectedRows
,
changeRows
)
=>
{
// let _list = [];
// if (selected)
{
// _list = _.uniq(selectVideo.concat(changeRows), false, (item) => item.id);
//
}
else
{
// _list = _.reject(selectVideo, (item) => _.find(changeRows, (data) => data.id === item.id));
//
}
// this.setState(
{
selectVideo
:
_list
});
},
},
}
}
}
}
/>
/>
...
@@ -241,6 +234,7 @@ class RelatedPlanModal extends React.Component {
...
@@ -241,6 +234,7 @@ class RelatedPlanModal extends React.Component {
current=
{
query
.
current
-
1
}
current=
{
query
.
current
-
1
}
pageSize=
{
size
}
pageSize=
{
size
}
total=
{
totalCount
}
total=
{
totalCount
}
size=
"small"
toPage=
{
(
page
)
=>
{
toPage=
{
(
page
)
=>
{
const
_query
=
{...
query
,
current
:
page
+
1
};
const
_query
=
{...
query
,
current
:
page
+
1
};
this
.
setState
({
this
.
setState
({
...
...
src/modules/course-manage/modal/RelatedPlanModal.less
View file @
99ed4231
...
@@ -43,7 +43,8 @@
...
@@ -43,7 +43,8 @@
.course-type{
.course-type{
font-size:11px;
font-size:11px;
color:#666666;
color:#666666;
padding:1px 8px;
padding:0px 6px;
line-height: 16px;
border: 1px solid #999999;
border: 1px solid #999999;
margin-right:4px;
margin-right:4px;
border-radius: 2px;
border-radius: 2px;
...
...
src/modules/course-manage/video-course/components/VideoCourseList.jsx
View file @
99ed4231
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-05 10:12:45
* @Date: 2020-08-05 10:12:45
* @LastEditors: zhangleyuan
* @LastEditors: zhangleyuan
* @LastEditTime: 2021-03-1
1 17:16:20
* @LastEditTime: 2021-03-1
5 17:05:01
* @Description: 视频课-列表模块
* @Description: 视频课-列表模块
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -175,14 +175,17 @@ class VideoCourseList extends React.Component {
...
@@ -175,14 +175,17 @@ class VideoCourseList extends React.Component {
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
record
)
=>
{
return
(
return
(
<
div
className=
"related-task"
>
<
div
className=
"related-task"
>
{
record
.
relatedPlanList
?
{
record
.
relatedPlanList
?
record
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
<
Tooltip
title=
{
this
.
handlePlanName
(
record
.
relatedPlanList
)
}
>
return
<
span
>
{
item
.
planName
}
{
(
index
<
record
.
relatedPlanList
.
length
-
1
)
&&
(<
span
>
、
</
span
>)
}
</
span
>
{
record
.
relatedPlanList
.
map
((
item
,
index
)
=>
{
})
return
<
span
>
{
item
.
planName
}
{
(
index
<
record
.
relatedPlanList
.
length
-
1
)
&&
(<
span
>
、
</
span
>)
}
</
span
>
:
})
<
span
></
span
>
}
}
</
Tooltip
>
</
div
>
:
<
span
></
span
>
}
</
div
>
)
)
}
}
},
},
...
@@ -217,7 +220,7 @@ class VideoCourseList extends React.Component {
...
@@ -217,7 +220,7 @@ class VideoCourseList extends React.Component {
];
];
return
columns
;
return
columns
;
}
}
renderMoreOperate
=
(
item
)
=>
{
renderMoreOperate
=
(
item
)
=>
{
return
(
return
(
<
div
className=
"live-course-more-menu"
>
<
div
className=
"live-course-more-menu"
>
...
@@ -240,7 +243,19 @@ class VideoCourseList extends React.Component {
...
@@ -240,7 +243,19 @@ class VideoCourseList extends React.Component {
</
div
>
</
div
>
)
)
}
}
//改变上架状态
handlePlanName
=
(
planArray
)
=>
{
let
planStr
=
""
;
planArray
.
map
((
item
,
index
)
=>
{
if
(
index
<
planArray
.
length
-
1
){
planStr
=
planStr
+
item
.
planName
+
'、'
;
}
else
{
planStr
=
planStr
+
item
.
planName
}
})
return
planStr
}
//改变上架状态
changeShelfState
=
(
item
)
=>
{
changeShelfState
=
(
item
)
=>
{
let
_shelfState
=
item
.
shelfState
let
_shelfState
=
item
.
shelfState
if
(
_shelfState
===
'NO'
){
if
(
_shelfState
===
'NO'
){
...
...
src/modules/plan-manage/AddPlan.jsx
View file @
99ed4231
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: zhangleyuan
* @Author: zhangleyuan
* @Date: 2021-02-20 16:13:39
* @Date: 2021-02-20 16:13:39
* @LastEditors: zhangleyuan
* @LastEditors: zhangleyuan
* @LastEditTime: 2021-03-1
5 14:19:22
* @LastEditTime: 2021-03-1
6 11:27:06
* @Description: 描述一下
* @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -120,7 +120,8 @@ function AddPlan() {
...
@@ -120,7 +120,8 @@ function AddPlan() {
function
submitInfo
(){
function
submitInfo
(){
const
{
planName
,
enableState
,
selectOperatorList
,
instro
,
operateType
,
percentCompleteLive
,
percentCompleteVideo
,
coverId
,
coverUrl
}
=
basicData
;
const
{
planName
,
enableState
,
selectOperatorList
,
instro
,
operateType
,
percentCompleteLive
,
percentCompleteVideo
,
coverId
,
coverUrl
}
=
basicData
;
if
(
!
planName
){
let
input
=
/^
[\s]
*$/
;
if
(
!
planName
||
input
.
test
(
planName
)){
message
.
warning
(
'请输入的培训计划名称'
);
message
.
warning
(
'请输入的培训计划名称'
);
return
;
return
;
}
}
...
@@ -140,7 +141,6 @@ function AddPlan() {
...
@@ -140,7 +141,6 @@ function AddPlan() {
message
.
warning
(
'请输入培训计划内容'
);
message
.
warning
(
'请输入培训计划内容'
);
return
;
return
;
}
}
let
input
=
/^
[\s]
*$/
;
for
(
let
i
=
0
;
i
<
taskList
.
length
;
i
++
){
for
(
let
i
=
0
;
i
<
taskList
.
length
;
i
++
){
if
(
input
.
test
(
taskList
[
i
].
taskName
)){
if
(
input
.
test
(
taskList
[
i
].
taskName
)){
message
.
warning
(
'培训任务名称不能为空'
);
message
.
warning
(
'培训任务名称不能为空'
);
...
...
src/modules/plan-manage/LearningData.less
View file @
99ed4231
.plan-learn-data-list{
.plan-learn-data-list{
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
.ant-tabs-tab.ant-tabs-tab-active{
font-weight:normal;
}
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{
font-weight:normal;
font-weight:normal;
}
}
.plan-info{
.plan-info{
...
...
src/modules/plan-manage/components/BasicInfo.jsx
View file @
99ed4231
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: zhangleyuan
* @Author: zhangleyuan
* @Date: 2021-02-20 16:45:51
* @Date: 2021-02-20 16:45:51
* @LastEditors: zhangleyuan
* @LastEditors: zhangleyuan
* @LastEditTime: 2021-03-15 1
4:47:39
* @LastEditTime: 2021-03-15 1
7:01:47
* @Description: 描述一下
* @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -219,7 +219,7 @@ class BasicInfo extends React.Component{
...
@@ -219,7 +219,7 @@ class BasicInfo extends React.Component{
<
span
className=
"label"
><
span
className=
"require"
>
*
</
span
>
培训计划名称:
</
span
>
<
span
className=
"label"
><
span
className=
"require"
>
*
</
span
>
培训计划名称:
</
span
>
<
Input
<
Input
value=
{
planName
}
value=
{
planName
}
placeholder=
"请输入培训计划名称
,最多20字
"
placeholder=
"请输入培训计划名称
(20字以内)
"
maxLength=
{
20
}
maxLength=
{
20
}
style=
{
{
width
:
240
}
}
style=
{
{
width
:
240
}
}
onChange=
{
(
e
)
=>
this
.
props
.
onChange
(
'planName'
,
e
.
target
.
value
)
}
onChange=
{
(
e
)
=>
this
.
props
.
onChange
(
'planName'
,
e
.
target
.
value
)
}
...
@@ -253,7 +253,7 @@ class BasicInfo extends React.Component{
...
@@ -253,7 +253,7 @@ class BasicInfo extends React.Component{
<
TextArea
<
TextArea
placeholder=
"请输入培训计划简介"
placeholder=
"请输入培训计划简介"
maxLength=
{
200
}
maxLength=
{
200
}
style=
{
{
width
:
'552px'
,
height
:
'
9
0px'
}
}
style=
{
{
width
:
'552px'
,
height
:
'
11
0px'
}
}
className=
"instro-textarea"
className=
"instro-textarea"
value=
{
instro
}
value=
{
instro
}
onChange=
{
(
e
)
=>
this
.
props
.
onChange
(
'instro'
,
e
.
target
.
value
)
}
onChange=
{
(
e
)
=>
this
.
props
.
onChange
(
'instro'
,
e
.
target
.
value
)
}
...
...
src/modules/plan-manage/components/BasicInfo.less
View file @
99ed4231
...
@@ -80,6 +80,9 @@
...
@@ -80,6 +80,9 @@
.view-range{
.view-range{
display:flex;
display:flex;
margin-top:16px;
margin-top:16px;
.label{
margin-top:2px;
}
.instro-text{
.instro-text{
color:#999;
color:#999;
margin-left:12px;
margin-left:12px;
...
...
src/modules/plan-manage/components/EmployeeShareData.jsx
View file @
99ed4231
...
@@ -162,41 +162,44 @@ class EmployeeShareData extends React.Component {
...
@@ -162,41 +162,44 @@ class EmployeeShareData extends React.Component {
title
:
'学习人数'
,
title
:
'学习人数'
,
key
:
'learnNum'
,
key
:
'learnNum'
,
dataIndex
:
'learnNum'
,
dataIndex
:
'learnNum'
,
width
:
110
,
sorter
:
true
,
sorter
:
true
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
record
)
=>
{
return
(
return
(
<
div
>
<
div
className=
"learn-num"
>
{
val
}
</
div
>
)
}
},
{
title
:
'已学完'
,
key
:
'learnFinishNum'
,
dataIndex
:
'learnFinishNum'
,
sorter
:
true
,
render
:
(
val
,
record
)
=>
{
return
(
<
div
>
{
val
}
</
div
>
)
}
},
{
title
:
'未学完'
,
key
:
'learnNoFinishNum'
,
dataIndex
:
'learnNoFinishNum'
,
sorter
:
true
,
render
:
(
val
,
record
)
=>
{
return
(
<
div
>
{
val
}
{
val
}
</
div
>
</
div
>
)
)
}
}
},
},
// {
// title: '已学完',
// key: 'learnFinishNum',
// dataIndex: 'learnFinishNum',
// width:110,
// sorter:true,
// render: (val, record) => {
// return (
// <div className="learn-finish-num">
// {val}
// </div>
// )
// }
// },
// {
// title: '未学完',
// key: 'learnNoFinishNum',
// dataIndex: 'learnNoFinishNum',
// width:110,
// sorter:true,
// render: (val, record) => {
// return (
// <div className="learn-no-finish-num">
// {val}
// </div>
// )
// }
// },
{
{
title
:
'操作'
,
title
:
'操作'
,
key
:
'operate'
,
key
:
'operate'
,
...
...
src/modules/plan-manage/components/EmployeeShareData.less
View file @
99ed4231
...
@@ -7,4 +7,16 @@
...
@@ -7,4 +7,16 @@
color:#5289FA;
color:#5289FA;
cursor: pointer;
cursor: pointer;
}
}
.learn-num{
text-align:right;
margin-right:20px;
}
.learn-finish-num{
text-align:right;
margin-right:30px;
}
.learn-no-finish-num{
text-align:right;
margin-right:35px;
}
}
}
\ No newline at end of file
src/modules/plan-manage/components/ExpiredCourseList.less
View file @
99ed4231
.expired-course-list{
.expired-course-list{
margin:18px 10px 16px;
margin:8px 10px 16px;
.course-item{
.course-item{
display:flex;
display:flex;
padding:16px 0;
padding:16px 0;
border-bottom:1px
soli
d #E8E8E8;
border-bottom:1px
dotte
d #E8E8E8;
justify-content: space-between;
justify-content: space-between;
&:last-child{
border-bottom:none;
}
.course-left{
.course-left{
display:flex;
display:flex;
...
@@ -19,11 +21,12 @@
...
@@ -19,11 +21,12 @@
.course-type{
.course-type{
margin-right:16px;
margin-right:16px;
span{
span{
padding:
2px 8
px;
padding:
0px 6
px;
color:#666666;
color:#666666;
font-size:11px;
font-size:11px;
border-radius: 2px;
border-radius: 2px;
border: 1px solid #999999;
border: 1px solid #999999;
line-height: 16px;
}
}
}
}
.course-instro{
.course-instro{
...
...
src/modules/plan-manage/components/PlanList.jsx
View file @
99ed4231
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: zhangleyuan
* @Author: zhangleyuan
* @Date: 2021-02-20 16:46:46
* @Date: 2021-02-20 16:46:46
* @LastEditors: zhangleyuan
* @LastEditors: zhangleyuan
* @LastEditTime: 2021-03-1
3 18:00:15
* @LastEditTime: 2021-03-1
5 16:19:53
* @Description: 描述一下
* @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -85,7 +85,7 @@ function PlanList(props) {
...
@@ -85,7 +85,7 @@ function PlanList(props) {
},
},
{
{
title
:
'更新时间'
,
title
:
'更新时间'
,
width
:
"1
2.5
%"
,
width
:
"1
0
%"
,
key
:
'updated'
,
key
:
'updated'
,
dataIndex
:
'updated'
,
dataIndex
:
'updated'
,
sorter
:
true
,
sorter
:
true
,
...
@@ -95,7 +95,7 @@ function PlanList(props) {
...
@@ -95,7 +95,7 @@ function PlanList(props) {
},
},
{
{
title
:
'参培人数'
,
title
:
'参培人数'
,
width
:
"10%"
,
width
:
76
,
key
:
'cultureCustomerNum'
,
key
:
'cultureCustomerNum'
,
dataIndex
:
'cultureCustomerNum'
,
dataIndex
:
'cultureCustomerNum'
,
sorter
:
true
,
sorter
:
true
,
...
@@ -227,49 +227,6 @@ function PlanList(props) {
...
@@ -227,49 +227,6 @@ function PlanList(props) {
props
.
onChange
();
props
.
onChange
();
}
}
})
})
// let _enableState = record.enableState
// if(_enableState==='NO'){
// // _enableState = "YES";
// const params={
// "planId": record.planId,
// "enableState":"YES"
// }
// PlanService.updateStateTrainingPlan(params).then((res)=>{
// if(res.success){
// // if(_enableState === "YES"){
// record.enableState = "YES";
// message.success("已启用此计划");
// // }
// }
// })
// }else{
// // _enableState = "NO";
// // item.enableState = "YES";
// return confirm({
// title: "确定要禁用培训计划吗?",
// content: "禁用后,培训计划不再支持新用户加入,已参与培训的用户可继续培训",
// icon: (
// <span className="icon iconfont default-confirm-icon"> </span>
// ),
// okText: "确定",
// okType: "danger",
// cancelText: "取消",
// onOk: () => {
// const params={
// "planId": record.planId,
// "enableState":"NO"
// }
// PlanService.updateStateTrainingPlan(params).then((res)=>{
// if(res.success){
// // if(_enableState === "NO"){
// record.enableState = "NO";
// message.success("已禁用此计划");
// // }
// }
// })
// },
// });
// }
}
}
function
toEditPlanPage
(
item
){
function
toEditPlanPage
(
item
){
...
@@ -336,6 +293,7 @@ function PlanList(props) {
...
@@ -336,6 +293,7 @@ function PlanList(props) {
bordered
bordered
size=
"middle"
size=
"middle"
scroll=
{
{
x
:
1400
}
}
scroll=
{
{
x
:
1400
}
}
className=
"plan-list-table"
/>
/>
<
div
className=
"box-footer"
>
<
div
className=
"box-footer"
>
<
PageControl
<
PageControl
...
...
src/modules/plan-manage/components/PlanList.less
View file @
99ed4231
.plan-list{
.plan-list{
margin-top:12px;
margin-top:12px;
.plan-list-table{
tbody {
tr{
&:nth-child(even){
background: transparent !important;
td{
background:#FFF !important;
}
}
&:nth-child(odd){
background: #FAFAFA !important;
td{
background: #FAFAFA !important;
}
}
&:hover{
td{
background:#F3f6fa !important;
}
}
}
}
}
.plan-name{
.plan-name{
text-overflow: -o-ellipsis-lastline;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
overflow: hidden;
...
@@ -26,6 +49,10 @@
...
@@ -26,6 +49,10 @@
}
}
}
}
}
}
.join-number{
text-align:right;
margin-right:12px;
}
.more-operate{
.more-operate{
line-height:20px;
line-height:20px;
}
}
...
...
src/modules/plan-manage/components/TrainingTask.jsx
View file @
99ed4231
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: zhangleyuan
* @Author: zhangleyuan
* @Date: 2021-02-20 16:45:51
* @Date: 2021-02-20 16:45:51
* @LastEditors: zhangleyuan
* @LastEditors: zhangleyuan
* @LastEditTime: 2021-03-1
2 16:49:01
* @LastEditTime: 2021-03-1
6 11:36:36
* @Description: 描述一下
* @Description: 描述一下
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -41,6 +41,7 @@ const courseStateShow = {
...
@@ -41,6 +41,7 @@ const courseStateShow = {
title
:
"未成功开课"
,
title
:
"未成功开课"
,
},
},
};
};
const
DragHandle
=
sortableHandle
(()
=>
(
const
DragHandle
=
sortableHandle
(()
=>
(
<
span
className=
"operate__item"
>
<
span
className=
"operate__item"
>
<
span
className=
"icon iconfont"
>

</
span
>
<
span
className=
"icon iconfont"
>

</
span
>
...
@@ -341,7 +342,7 @@ class TrainingTask extends React.Component {
...
@@ -341,7 +342,7 @@ class TrainingTask extends React.Component {
<
Input
className=
"course-name-input"
defaultValue=
{
record
.
courseName
}
style=
{
{
width
:
300
}
}
placeholder=
"请输入课程名称(40字以内)"
maxLength=
{
40
}
onChange=
{
(
e
)
=>
{
this
.
handleRenameCourseName
(
e
,
record
)}
}
onBlur=
{
(
e
)
=>
{
this
.
handleCourseNameBlur
(
e
,
record
)}
}
/></
Form
.
Item
>
<
Input
className=
"course-name-input"
defaultValue=
{
record
.
courseName
}
style=
{
{
width
:
300
}
}
placeholder=
"请输入课程名称(40字以内)"
maxLength=
{
40
}
onChange=
{
(
e
)
=>
{
this
.
handleRenameCourseName
(
e
,
record
)}
}
onBlur=
{
(
e
)
=>
{
this
.
handleCourseNameBlur
(
e
,
record
)}
}
/></
Form
.
Item
>
</
Form
>
</
Form
>
:
:
<
span
className=
"course-name"
>
{
parentIndex
+
1
}
.
{
index
+
1
}{
record
.
courseName
}
</
span
>
<
span
className=
"course-name"
>
{
parentIndex
+
1
}
.
{
index
+
1
}
{
record
.
courseName
}
</
span
>
}
}
{
record
.
courseState
===
"EXPIRED"
&&
{
record
.
courseState
===
"EXPIRED"
&&
<
span
className=
"icon iconfont tip"
>

</
span
>
<
span
className=
"icon iconfont tip"
>

</
span
>
...
@@ -351,7 +352,7 @@ class TrainingTask extends React.Component {
...
@@ -351,7 +352,7 @@ class TrainingTask extends React.Component {
}
}
</
div
>
</
div
>
<
div
className=
"operate"
>
<
div
className=
"
course-
operate"
>
<
DragHandle
/>
<
DragHandle
/>
{
/* <span className="operate__item">
{
/* <span className="operate__item">
<span className="icon iconfont"></span>
<span className="icon iconfont"></span>
...
...
src/modules/plan-manage/components/TrainingTask.less
View file @
99ed4231
...
@@ -55,22 +55,29 @@
...
@@ -55,22 +55,29 @@
}
}
}
}
}
}
}
.operate{
.operate{
display: none;
.operate__item{
.operate__item{
cursor:pointer;
cursor:pointer;
margin-left:16px;
margin-left:16px;
color:#666666;
color:#666666;
font-size:14px;
.icon{
font-size:14px;
font-size:14px;
color:#999;
.icon{
font-size:14px;
color:#999;
}
.text{
margin-left:8px;
}
}
}
.text{
}
margin-left:8px;
&:hover{
.operate{
display:block;
}
}
}
}
}
}
.course-box{
.course-box{
.add-course-con{
.add-course-con{
padding:16px 51px;
padding:16px 51px;
...
@@ -85,10 +92,18 @@
...
@@ -85,10 +92,18 @@
}
}
.plan-course-sort-item{
.plan-course-sort-item{
display:flex;
display:flex;
padding:16px 16px 16px 51px;
padding:16px 16px 16px 0px;
margin-left:51px;
justify-content: space-between;
justify-content: space-between;
align-items: center;
align-items: center;
.operate{
border-bottom:1px dotted #E8E8E8;
&:hover{
.course-operate{
display:block;
}
}
.course-operate{
display: none;
.operate__item{
.operate__item{
cursor:pointer;
cursor:pointer;
margin-left:16px;
margin-left:16px;
...
@@ -103,6 +118,7 @@
...
@@ -103,6 +118,7 @@
}
}
}
}
}
}
.course-info{
.course-info{
.ant-form{
.ant-form{
display:inline-block;
display:inline-block;
...
@@ -113,10 +129,11 @@
...
@@ -113,10 +129,11 @@
.course-type{
.course-type{
font-size:11px;
font-size:11px;
color:#666666;
color:#666666;
padding:
1px 8
px;
padding:
0px 6
px;
border: 1px solid #999999;
border: 1px solid #999999;
margin-right:4px;
margin-right:4px;
border-radius: 2px;
border-radius: 2px;
line-height: 16px;
}
}
.course-name{
.course-name{
color:#666666;
color:#666666;
...
...
src/modules/plan-manage/components/UserLearningData.jsx
View file @
99ed4231
...
@@ -229,10 +229,11 @@ class UserLearningData extends React.Component {
...
@@ -229,10 +229,11 @@ class UserLearningData extends React.Component {
</
span
>,
</
span
>,
key
:
'learnNum'
,
key
:
'learnNum'
,
dataIndex
:
'learnNum'
,
dataIndex
:
'learnNum'
,
width
:
130
,
sorter
:
true
,
sorter
:
true
,
render
:
(
val
,
record
)
=>
{
render
:
(
val
,
record
)
=>
{
return
(
return
(
<
div
>
<
div
className=
"learn-num"
>
<
span
>
{
record
.
courseFinishNum
}
</
span
>
<
span
>
{
record
.
courseFinishNum
}
</
span
>
<
span
>
/
</
span
>
<
span
>
/
</
span
>
<
span
>
{
record
.
courseNum
}
</
span
>
<
span
>
{
record
.
courseNum
}
</
span
>
...
...
src/modules/plan-manage/components/UserLearningData.less
View file @
99ed4231
...
@@ -13,4 +13,8 @@
...
@@ -13,4 +13,8 @@
color: #BFBFBF;
color: #BFBFBF;
}
}
}
}
.learn-num{
text-align:right;
margin-right:20px;
}
}
}
\ No newline at end of file
src/modules/plan-manage/components/UserLearningDataFilter.jsx
View file @
99ed4231
...
@@ -42,12 +42,15 @@ function UserLearningDataFilter(props) {
...
@@ -42,12 +42,15 @@ function UserLearningDataFilter(props) {
useEffect
(()
=>
{
useEffect
(()
=>
{
Bus
.
bind
(
'watchDataView'
,(
record
)
=>
handleChangeCreatorQuery
(
record
))
Bus
.
bind
(
'watchDataView'
,(
record
)
=>
handleChangeCreatorQuery
(
record
))
}
,
[]
);
});
useEffect
(()
=>
{
useEffect
(()
=>
{
getCreatorList
();
getCreatorList
();
},
[]);
},
[]);
function
handleChangeCreatorQuery
(
record
){
function
handleChangeCreatorQuery
(
record
){
console
.
log
(
'11'
);
const
_creatorQuery
=
{...
creatorQuery
};
const
_creatorQuery
=
{...
creatorQuery
};
_creatorQuery
.
operateId
=
record
.
storeUserId
;
_creatorQuery
.
operateId
=
record
.
storeUserId
;
setCreatorQuery
(
_creatorQuery
);
setCreatorQuery
(
_creatorQuery
);
...
...
src/modules/plan-manage/modal/SharePlanModal.jsx
View file @
99ed4231
...
@@ -142,8 +142,7 @@ class ShareLiveModal extends React.Component {
...
@@ -142,8 +142,7 @@ class ShareLiveModal extends React.Component {
<
div
className=
"share-url right__item"
>
<
div
className=
"share-url right__item"
>
<
div
className=
"title"
>
② 链接分享
</
div
>
<
div
className=
"title"
>
② 链接分享
</
div
>
<
div
className=
"sub-title"
>
用户可通过微信或浏览器打开以下链接,查看培训计划
</
div
>
<
div
className=
"sub-title"
>
用户可通过微信打开以下链接,查看培训计划
</
div
>
<
div
className=
"content url-content"
>
<
div
className=
"content url-content"
>
<
div
className=
"share-url"
id=
"shareUrl"
>
{
shareUrl
}
</
div
>
<
div
className=
"share-url"
id=
"shareUrl"
>
{
shareUrl
}
</
div
>
<
Button
type=
"primary"
onClick=
{
this
.
handleCopy
}
>
复制
</
Button
>
<
Button
type=
"primary"
onClick=
{
this
.
handleCopy
}
>
复制
</
Button
>
...
...
src/modules/plan-manage/modal/UserLearnDetailModal.jsx
View file @
99ed4231
...
@@ -36,7 +36,7 @@ class UserLearnDetailModal extends React.Component {
...
@@ -36,7 +36,7 @@ class UserLearnDetailModal extends React.Component {
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
this
.
state
=
{
this
.
state
=
{
planDataSource
:
[]
,
planDataSource
:
{}
,
taskDataSource
:[],
taskDataSource
:[],
taskSize
:
10
,
taskSize
:
10
,
taskQuery
:
{
taskQuery
:
{
...
@@ -72,11 +72,11 @@ class UserLearnDetailModal extends React.Component {
...
@@ -72,11 +72,11 @@ class UserLearnDetailModal extends React.Component {
}
}
return
item
;
return
item
;
})
})
const
planDataSource
=
[
{
const
planDataSource
=
{
planName
,
planName
,
learnFinishPercentage
,
learnFinishPercentage
,
coverUrl
:
coverUrl
||
defaultCover
coverUrl
:
coverUrl
||
defaultCover
}
]
}
this
.
setState
({
this
.
setState
({
storeCustomerName
,
storeCustomerName
,
storeCustomerPhone
,
storeCustomerPhone
,
...
@@ -85,39 +85,6 @@ class UserLearnDetailModal extends React.Component {
...
@@ -85,39 +85,6 @@ class UserLearnDetailModal extends React.Component {
})
})
})
})
}
}
parsePlanColumns
=
()
=>
{
const
columns
=
[
{
title
:
'培训计划名称'
,
key
:
'planInfo'
,
dataIndex
:
'planInfo'
,
render
:
(
val
,
record
)
=>
{
return
(
<
div
className=
"plan-instro"
>
<
div
className=
"img-con"
>
<
img
src=
{
record
.
coverUrl
}
/>
</
div
>
<
div
className=
"plan-name"
>
{
record
.
planName
}
</
div
>
</
div
>
)
}
},
{
title
:
'学习进度'
,
key
:
'learnFinishPercentage'
,
dataIndex
:
'learnFinishPercentage'
,
width
:
167
,
render
:
(
val
,
record
)
=>
{
return
(
<
div
className=
"plan-learn-percentage"
>
{
val
}
%
</
div
>
)
}
}
];
return
columns
;
}
parseTaskColumns
=
()
=>
{
parseTaskColumns
=
()
=>
{
const
columns
=
[
const
columns
=
[
...
@@ -158,9 +125,12 @@ class UserLearnDetailModal extends React.Component {
...
@@ -158,9 +125,12 @@ class UserLearnDetailModal extends React.Component {
render
:
(
val
,
record
,
index
)
=>
{
render
:
(
val
,
record
,
index
)
=>
{
return
(
return
(
<
div
className=
"course-info"
>
<
div
className=
"course-info"
>
<
div
className=
"course-type"
>
{
CourseType
[
record
.
courseType
].
text
}
</
div
>
<
div
>
<
span
className=
"course-type"
>
{
CourseType
[
record
.
courseType
].
text
}
</
span
>
<
span
>
{
parentIndex
+
1
}
.
{
index
+
1
}
</
span
>
</
div
>
<
div
className=
"name-and-state"
>
<
div
className=
"name-and-state"
>
<
span
className=
"course-name"
>
{
parentIndex
+
1
}
.
{
index
+
1
}{
record
.
courseName
}
</
span
>
<
span
className=
"course-name"
>
{
record
.
courseName
}
</
span
>
{
record
.
courseType
===
"LIVE"
&&
{
record
.
courseType
===
"LIVE"
&&
<
span
className=
"course-state"
>
{
courseStateShow
[
record
.
courseState
].
title
}
</
span
>
<
span
className=
"course-state"
>
{
courseStateShow
[
record
.
courseState
].
title
}
</
span
>
}
}
...
@@ -210,15 +180,18 @@ class UserLearnDetailModal extends React.Component {
...
@@ -210,15 +180,18 @@ class UserLearnDetailModal extends React.Component {
<
span
>
{
storeCustomerPhone
}
</
span
>
<
span
>
{
storeCustomerPhone
}
</
span
>
</
span
>
</
span
>
</
div
>
</
div
>
<
div
>
<
div
className=
"plan-instro"
>
<
Table
<
div
className=
"img-con"
>
dataSource=
{
planDataSource
}
<
img
src=
{
planDataSource
.
coverUrl
}
/>
columns=
{
this
.
parsePlanColumns
()
}
</
div
>
pagination=
{
false
}
<
div
>
bordered
<
div
className=
"plan-name"
>
{
planDataSource
.
planName
}
</
div
>
className=
"plan-table"
<
div
className=
"task-learn-percentage"
>
/>
<
span
>
学习进度:
{
planDataSource
.
learnFinishPercentage
}
%
</
span
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
>
<
div
>
<
Table
<
Table
rowKey=
{
(
record
)
=>
record
.
taskId
}
rowKey=
{
(
record
)
=>
record
.
taskId
}
...
...
src/modules/plan-manage/modal/UserLearnDetailModal.less
View file @
99ed4231
...
@@ -12,40 +12,26 @@
...
@@ -12,40 +12,26 @@
color:#333;
color:#333;
}
}
}
}
.plan-table{
.plan-instro{
margin-bottom:8px;
display: flex;
.ant-table-thead{
align-items: center;
tr {
margin-bottom:16px;
th{
.img-con{
padding:9px 24px;
margin-right:8px;
}
img{
width: 97px;
height: 54px;
display: inline-block;
border-radius:4px;
}
}
}
}
tr{
.plan-name{
td{
color:#333;
padding:8px 24px;
font-size:16px;
}
}
}
.plan-instro{
.plan-learn-percentage{
display: flex;
color:#333;
align-items: center;
font-size:14px;
.img-con{
margin-right:8px;
img{
width: 97px;
height: 54px;
display: inline-block;
border-radius:4px;
}
}
.plan-name{
color:#666666;
font-size:14px;
}
.plan-learn-percentage{
color:#666666;
font-size:14px;
}
}
}
}
}
.task-table{
.task-table{
...
@@ -62,11 +48,11 @@
...
@@ -62,11 +48,11 @@
}
}
}
}
.taskName{
.taskName{
color:#
666666
;
color:#
333
;
font-size:14px;
font-size:14px;
}
}
.task-learn-percentage{
.task-learn-percentage{
color:#
666666
;
color:#
333
;
font-size:14px;
font-size:14px;
}
}
.course-info{
.course-info{
...
@@ -74,14 +60,13 @@
...
@@ -74,14 +60,13 @@
margin-left:57px;
margin-left:57px;
align-items: center;
align-items: center;
.course-type{
.course-type{
width:54px;
height: 22px;
font-size:11px;
font-size:11px;
color:#666666;
color:#666666;
padding:
1px 8
px;
padding:
0px 6
px;
border: 1px solid #999999;
border: 1px solid #999999;
margin-right:4px;
margin-right:4px;
border-radius: 2px;
border-radius: 2px;
line-height: 16px;
}
}
.name-and-state{
.name-and-state{
flex:1;
flex:1;
...
...
src/modules/plan-manage/modal/relatedCourseModal.jsx
View file @
99ed4231
...
@@ -352,9 +352,9 @@ class SelectOperatorModal extends React.Component {
...
@@ -352,9 +352,9 @@ class SelectOperatorModal extends React.Component {
closeIcon=
{
<
span
className=
"icon iconfont modal-close-icon"
>

</
span
>
}
closeIcon=
{
<
span
className=
"icon iconfont modal-close-icon"
>

</
span
>
}
footer=
{
[
footer=
{
[
activeKey
===
'live'
?
activeKey
===
'live'
?
<
a
target=
'_blank'
className=
"link-create-course"
href=
{
window
.
location
.
origin
+
window
.
location
.
pathname
+
'#/create-live-course?type=add'
}
>
没有找到需要的直播课?
<
span
>
去创建
</
span
></
a
>
<
a
target=
'_blank'
className=
"link-create-course"
href=
{
window
.
location
.
origin
+
window
.
location
.
pathname
+
'#/create-live-course?type=add'
}
onClick=
{
this
.
props
.
onClose
}
>
没有找到需要的直播课?
<
span
>
去创建
</
span
></
a
>
:
:
<
a
target=
'_blank'
className=
"link-create-course"
href=
{
window
.
location
.
origin
+
window
.
location
.
pathname
+
'#/create-video-course?type=add'
}
>
没有找到需要的视频课?
<
span
>
去创建
</
span
></
a
>
<
a
target=
'_blank'
className=
"link-create-course"
href=
{
window
.
location
.
origin
+
window
.
location
.
pathname
+
'#/create-video-course?type=add'
}
onClick=
{
this
.
props
.
onClose
}
>
没有找到需要的视频课?
<
span
>
去创建
</
span
></
a
>
,
,
<
Button
<
Button
onClick=
{
()
=>
{
onClick=
{
()
=>
{
...
...
src/modules/plan-manage/modal/relatedCourseModal.less
View file @
99ed4231
...
@@ -5,6 +5,9 @@
...
@@ -5,6 +5,9 @@
.ant-tabs-nav-list{
.ant-tabs-nav-list{
margin:0 auto;
margin:0 auto;
}
}
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{
font-weight:normal;
}
.ant-tabs-nav .ant-tabs-tab{
.ant-tabs-nav .ant-tabs-tab{
padding:6px 12px !important;
padding:6px 12px !important;
margin:0;
margin:0;
...
@@ -19,9 +22,10 @@
...
@@ -19,9 +22,10 @@
border-radius: 0px 4px 4px 0px;
border-radius: 0px 4px 4px 0px;
}
}
}
}
.ant-tabs-nav .ant-tabs-tab-active{
.ant-tabs-nav .ant-tabs-tab-active{
border: 1px solid #FFB714;
border: 1px solid #FFB714;
color:#FFB714;
color:#FFB714;
}
}
.ant-tabs-top .ant-tabs-ink-bar-animated:after{
.ant-tabs-top .ant-tabs-ink-bar-animated:after{
...
...
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