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
d2864915
Commit
d2864915
authored
Jul 12, 2021
by
zhujian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
知识库优化
parent
6379bb7a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
230 deletions
+25
-230
src/modules/knowledge-base/components/KnowledgeBaseFilter.jsx
+3
-29
src/modules/knowledge-base/components/KnowledgeBaseList.jsx
+14
-166
src/modules/knowledge-base/components/KnowledgeBaseOpt.jsx
+8
-35
No files found.
src/modules/knowledge-base/components/KnowledgeBaseFilter.jsx
View file @
d2864915
...
...
@@ -65,10 +65,11 @@ class KnowledgeBaseFilter extends React.Component {
<
Row
type=
"flex"
justify=
"space-between"
align=
"top"
>
<
div
className=
"search-condition"
>
<
div
className=
"search-condition__item"
>
<
span
className=
"search-name"
>
课程
名称:
</
span
>
<
span
className=
"search-name"
>
资料
名称:
</
span
>
<
Search
value=
{
name
}
placeholder=
"搜索课程名称"
// allowClear
placeholder=
"搜索资料名称"
onChange=
{
(
e
)
=>
{
this
.
handleChangeQuery
(
"name"
,
e
.
target
.
value
,
false
);
}
}
...
...
@@ -79,33 +80,6 @@ class KnowledgeBaseFilter extends React.Component {
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
/>
</
div
>
<
div
className=
"search-condition__item"
>
<
span
className=
"shelf-status"
>
课程类型:
</
span
>
<
Select
style=
{
{
width
:
"calc(100% - 84px)"
}
}
placeholder=
"请选择课程类型"
allowClear=
{
true
}
value=
{
type
}
onChange=
{
(
value
)
=>
{
this
.
handleChangeQuery
(
"type"
,
value
);
}
}
suffixIcon=
{
<
span
className=
"icon iconfont"
style=
{
{
fontSize
:
"12px"
,
color
:
"#BFBFBF"
}
}
>

</
span
>
}
>
{
Reflect
.
ownKeys
(
ENUM
.
CourseTypeEnum
).
map
((
item
)
=>
{
return
(
<
Option
key=
{
item
}
value=
{
item
}
>
{
ENUM
.
CourseTypeEnum
[
item
]
}
</
Option
>
);
})
}
</
Select
>
</
div
>
</
div
>
<
div
className=
"reset-fold-area"
>
<
Tooltip
title=
"清空筛选"
>
...
...
src/modules/knowledge-base/components/KnowledgeBaseList.jsx
View file @
d2864915
...
...
@@ -184,182 +184,30 @@ class KnowledgeBaseList extends React.Component {
title
:
"课程名称"
,
key
:
"name"
,
dataIndex
:
"name"
,
width
:
391
,
fixed
:
"left"
,
render
:
(
val
,
record
)
=>
{
const
{
coverUrl
,
mediaCourseUrl
,
courseDivision
}
=
record
.
source
let
hasCover
=
false
const
type
=
record
.
type
return
(
<
div
>
{
type
===
"LIVE"
&&
(
<
div
className=
'record__item'
>
{
record
.
source
&&
record
.
source
.
courseMediaVOS
.
map
((
item
,
index
)
=>
{
if
(
item
.
contentType
===
"COVER"
)
{
hasCover
=
true
return
<
img
className=
'course-cover'
key=
{
index
}
src=
{
item
.
mediaUrl
}
/>
}
})
}
{
!
hasCover
&&
(
<
img
className=
"course-cover"
src=
{
"https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png"
}
/>
)
}
<
div
>
{
val
.
length
>
17
?
(
<
Tooltip
title=
{
val
}
>
<
div
className=
'course-name'
>
{
val
}
</
div
>
</
Tooltip
>
)
:
(
<
div
className=
'course-name'
>
{
val
}
</
div
>
)
}
<
div
>
<
span
className=
'course-time'
>
{
formatDate
(
"YYYY-MM-DD H:i"
,
parseInt
(
record
.
source
.
startTime
))
}
~
{
formatDate
(
"H:i"
,
parseInt
(
record
.
source
.
endTime
))
}
</
span
>
<
span
className=
'course-status'
style=
{
{
color
:
ENUM
.
courseStateShow
[
record
.
source
.
courseState
].
color
,
border
:
`1px solid ${ENUM.courseStateShow[record.source.courseState].color}`
}
}
>
{
ENUM
.
courseStateShow
[
record
.
source
.
courseState
].
title
}
</
span
>
{
record
.
hideToUser
&&
(
<
Tooltip
title=
{
<
div
>
课程未成功开课,已在学员知识列表中隐藏
</
div
>
}
>
<
i
className=
'icon iconfont'
style=
{
{
marginLeft
:
"5px"
,
cursor
:
"pointer"
,
color
:
"#FF4F4F"
,
fontSize
:
"14px"
}
}
>

</
i
>
</
Tooltip
>
)
}
</
div
>
<
div
className=
'teacher-assistant'
>
{
record
.
source
.
teacherName
.
length
>
4
?
(
<
Tooltip
title=
{
record
.
source
.
teacherName
}
>
<
span
className=
'teacher'
>
讲师:
{
record
.
source
.
teacherName
}
</
span
>
</
Tooltip
>
)
:
(
<
span
className=
'teacher'
>
讲师:
{
record
.
source
.
teacherName
}
</
span
>
)
}
{
record
.
source
.
admins
.
length
>
0
&&
(
<>
<
span
className=
'split'
>
|
</
span
>
{
this
.
handleAdminName
(
record
.
source
.
admins
).
length
>
4
?
(
<
Tooltip
title=
{
this
.
handleAdminName
(
record
.
source
.
admins
)
}
>
<
span
className=
'assistant'
>
助教:
{
record
.
source
.
admins
.
map
((
item
,
index
)
=>
{
return
(
<
span
>
{
item
.
adminName
}
{
index
<
record
.
source
.
admins
.
length
-
1
&&
<
span
>
、
</
span
>
}{
" "
}
</
span
>
)
})
}
</
span
>
</
Tooltip
>
)
:
(
<
span
className=
'assistant'
>
助教:
{
record
.
source
.
admins
.
map
((
item
,
index
)
=>
{
return
(
<
span
key=
{
index
}
>
{
item
.
adminName
}
{
index
<
record
.
source
.
admins
.
length
-
1
&&
<
span
>
、
</
span
>
}{
" "
}
</
span
>
)
})
}
</
span
>
)
}
</>
)
}
</
div
>
</
div
>
</
div
>
)
}
{
type
===
"VOICE"
&&
(
<
div
className=
'record__item'
>
{
/* 上传了封面的话就用上传的封面, 没有的话就取视频的第一帧 */
}
<
img
className=
'course-cover'
src=
{
coverUrl
?
coverUrl
:
courseDivision
!==
"EXTERNAL"
?
`${mediaCourseUrl}?x-oss-process=video/snapshot,t_0,m_fast`
:
"https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png"
}
alt=
''
/>
{
val
.
length
>
25
?
(
<
Tooltip
title=
{
val
}
>
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
</
Tooltip
>
)
:
(
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
)
}
</
div
>
)
}
{
type
===
"PICTURE"
&&
(
<
div
className=
"record__item"
>
<
img
className=
"course-cover"
src=
{
coverUrl
||
"https://image.xiaomaiketang.com/xm/wFnpZtp2yB.png"
}
/>
{
val
.
length
>
25
?
(
<
Tooltip
title=
{
val
}
>
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
</
Tooltip
>
)
:
(
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
)
}
</
div
>
)
}
{
type
===
"FOLDER"
&&
(
<
div
className=
'record__item'
onClick=
{
()
=>
{
this
.
handleScanFile
(
record
.
source
)
}
}
>
<
div
className=
{
`folder-type ${record.source && record.source.folderFormat}`
}
/>
{
val
.
length
>
25
?
(
<
Tooltip
title=
{
val
}
>
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
</
Tooltip
>
)
:
(
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
)
}
</
div
>
<
div
className=
'record__item'
onClick=
{
()
=>
{
this
.
handleScanFile
(
record
.
source
)
}
}
>
<
div
className=
{
`folder-type ${record.source && record.source.folderFormat}`
}
/>
{
val
.
length
>
25
?
(
<
Tooltip
title=
{
val
}
>
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
</
Tooltip
>
)
:
(
<
div
className=
'course-name clamp'
>
{
val
}
</
div
>
)
}
</
div
>
)
}
},
{
title
:
"课程类型"
,
key
:
"type"
,
dataIndex
:
"type"
,
align
:
"center"
,
// width: 100,
render
:
(
val
,
record
)
=>
{
return
<
div
className=
''
>
{
val
?
ENUM
.
CourseTypeEnum
[
val
]
:
"-"
}
</
div
>
}
},
{
title
:
"创建人"
,
key
:
"createName"
,
dataIndex
:
"createName"
,
...
...
@@ -500,7 +348,7 @@ class KnowledgeBaseList extends React.Component {
dataSource=
{
dataSource
}
columns=
{
this
.
parseColumns
()
}
pagination=
{
false
}
scroll=
{
{
x
:
900
}
}
bordered
className=
"knowledge-list-table"
renderEmpty=
{
{
...
...
src/modules/knowledge-base/components/KnowledgeBaseOpt.jsx
View file @
d2864915
...
...
@@ -9,10 +9,8 @@
import
React
,
{
useState
,
useEffect
}
from
"react"
;
import
{
Button
,
Menu
,
Dropdown
,
message
,
Modal
}
from
"antd"
;
import
{
Button
,
Menu
,
Dropdown
,
message
,
Modal
}
from
"antd"
;
import
SelectPrepareFileModal
from
"@/modules/prepare-lesson/modal/SelectPrepareFileModal"
;
import
{
DownOutlined
}
from
"@ant-design/icons"
;
import
AddCourse
from
"../modal/AddCourse"
;
import
User
from
"@/common/js/user"
;
import
Service
from
"@/common/js/service"
;
import
KnowledgeAPI
from
"@/data-source/knowledge/request-api"
;
...
...
@@ -29,18 +27,9 @@ export default function KnowledgeBaseOpt({
})
{
const
[
modal
,
setModal
]
=
useState
(
null
);
const
[
openMoveModal
,
setOpenMoveModal
]
=
useState
(
false
);
const
[
data
,
setData
]
=
useState
([]);
const
menu
=
(
<
Menu
>
<
Menu
.
Item
key=
"1"
style=
{
{
textAlign
:
"center"
}
}
>
<
span
onClick=
{
handAddCourse
}
>
添加课程
</
span
>
</
Menu
.
Item
>
<
Menu
.
Item
key=
"2"
style=
{
{
textAlign
:
"center"
}
}
>
<
span
onClick=
{
handleAddFile
}
>
添加资料
</
span
>
</
Menu
.
Item
>
</
Menu
>
);
const
[
data
,
setData
]
=
useState
([]);
useEffect
(()
=>
{
queryCategoryTree
();
...
...
@@ -76,19 +65,6 @@ export default function KnowledgeBaseOpt({
return
newTreeData
;
};
function
handAddCourse
()
{
let
modal
=
(
<
AddCourse
onClose=
{
()
=>
{
setModal
(
null
);
}
}
onChange=
{
onChange
}
categoryId=
{
categoryId
}
updateCategoryTree=
{
updateCategoryTree
}
></
AddCourse
>
);
setModal
(
modal
);
}
function
handUpload
(
refIds
)
{
const
params
=
{
...
...
@@ -118,7 +94,7 @@ export default function KnowledgeBaseOpt({
isOpen=
{
true
}
accept=
".ppt,.pptx,.doc,.docx,.pdf,.jpg,.jpeg,.png,.xlsx,.xls"
tooltip=
"支持文件类型:ppt、word、excel、pdf、jpg、jpeg、png"
selectTypeList=
{
[
"JPG"
,
"JPEG"
,
"PNG"
,
'DOC'
,
'PDF'
,
'EXCEL'
,
'application/msword'
,
'application/vnd.ms-powerpoint'
]
}
// DOC 包含 .pptx,.docx,.xls.XLSX,WORD:DOC
selectTypeList=
{
[
"JPG"
,
"JPEG"
,
"PNG"
,
'DOC'
,
'PDF'
,
'EXCEL'
,
'application/msword'
,
'application/vnd.ms-powerpoint'
]
}
// DOC 包含 .pptx,.docx,.xls.XLSX,WORD:DOC
onClose=
{
()
=>
{
setModal
(
null
);
}
}
...
...
@@ -205,12 +181,9 @@ export default function KnowledgeBaseOpt({
return
(
<
div
className=
"knowledge-course-opt"
>
{
_
.
isEmpty
(
selectedRowKeys
)
?
(
categoryId
!==
'0'
&&
<
Dropdown
overlay=
{
menu
}
>
<
Button
type=
"primary"
className=
"mr8"
>
添加知识
<
DownOutlined
/>
</
Button
>
</
Dropdown
>)
categoryId
!==
'0'
&&
<
Button
type=
"primary"
onClick=
{
handleAddFile
}
className=
"mr8"
>
添加资料
</
Button
>
:
<
div
className=
"select-container"
>
<
span
className=
"con"
>
<
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