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
495240cf
Commit
495240cf
authored
Jun 15, 2021
by
yuananting
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:分类拖拽优化,分类为0隐藏
parent
f93b6906
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
393 additions
and
410 deletions
+393
-410
src/data-source/aidTool/request-apis.ts
+23
-23
src/domains/aid-tool-domain/AidToolService.ts
+26
-26
src/modules/knowledge-base/components/Classification.jsx
+42
-52
src/modules/teach-tool/components/CourseCategoryManage.jsx
+237
-222
src/modules/teach-tool/components/CourseCategorySiderTree.jsx
+65
-87
No files found.
src/data-source/aidTool/request-apis.ts
View file @
495240cf
...
@@ -2,89 +2,89 @@
...
@@ -2,89 +2,89 @@
* @Author: yuananting
* @Author: yuananting
* @Date: 2021-03-03 15:13:12
* @Date: 2021-03-03 15:13:12
* @LastEditors: fusanqiasng
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-0
5-25 10:07:03
* @LastEditTime: 2021-0
6-15 11:53:12
* @Description: 助学工具接口
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
Service
from
'@/common/js/service'
import
Service
from
'@/common/js/service'
;
export
function
queryExternalCategoryTree
(
params
:
object
)
{
export
function
queryExternalCategoryTree
(
params
:
object
)
{
return
Service
.
Hades
(
'public/externalHades/queryCategoryTree'
,
params
)
return
Service
.
Hades
(
'public/externalHades/queryCategoryTree'
,
params
)
;
}
}
export
function
queryCategoryTree
(
params
:
object
)
{
export
function
queryCategoryTree
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/queryCategoryTree'
,
params
)
return
Service
.
Hades
(
'public/hades/queryCategoryTree'
,
params
)
;
}
}
export
function
addCategory
(
params
:
object
)
{
export
function
addCategory
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/addCategory'
,
params
)
return
Service
.
Hades
(
'public/hades/addCategory'
,
params
)
;
}
}
export
function
delCategory
(
params
:
object
)
{
export
function
delCategory
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/delCategory'
,
params
)
return
Service
.
Hades
(
'public/hades/delCategory'
,
params
)
;
}
}
export
function
editCategory
(
params
:
object
)
{
export
function
editCategory
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/editCategory'
,
params
)
return
Service
.
Hades
(
'public/hades/editCategory'
,
params
)
;
}
}
export
function
edit
CategoryTree
(
params
:
object
)
{
export
function
move
CategoryTree
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/
editCategoryTree'
,
params
)
return
Service
.
Hades
(
'public/hades/
moveCategory'
,
params
);
}
}
export
function
queryQuestionPageList
(
params
:
object
)
{
export
function
queryQuestionPageList
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/queryQuestionPageList'
,
params
)
return
Service
.
Hades
(
'public/hades/queryQuestionPageList'
,
params
)
;
}
}
export
function
addQuestion
(
params
:
object
)
{
export
function
addQuestion
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/addQuestion'
,
params
)
return
Service
.
Hades
(
'public/hades/addQuestion'
,
params
)
;
}
}
export
function
deleteQuestion
(
params
:
object
)
{
export
function
deleteQuestion
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/deleteQuestion'
,
params
)
return
Service
.
Hades
(
'public/hades/deleteQuestion'
,
params
)
;
}
}
export
function
queryQuestionDetails
(
params
:
object
)
{
export
function
queryQuestionDetails
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/queryQuestionDetails'
,
params
)
return
Service
.
Hades
(
'public/hades/queryQuestionDetails'
,
params
)
;
}
}
export
function
editQuestion
(
params
:
object
)
{
export
function
editQuestion
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/editQuestion'
,
params
)
return
Service
.
Hades
(
'public/hades/editQuestion'
,
params
)
;
}
}
export
function
batchImport
(
params
:
object
)
{
export
function
batchImport
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/batchImport'
,
params
)
return
Service
.
Hades
(
'public/hades/batchImport'
,
params
)
;
}
}
export
function
createPaper
(
params
:
object
)
{
export
function
createPaper
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/createPaper'
,
params
)
return
Service
.
Hades
(
'public/hades/createPaper'
,
params
)
;
}
}
export
function
queryPaperPageList
(
params
:
object
)
{
export
function
queryPaperPageList
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/queryPaperPageList'
,
params
)
return
Service
.
Hades
(
'public/hades/queryPaperPageList'
,
params
)
;
}
}
export
function
deletePaper
(
params
:
object
)
{
export
function
deletePaper
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/deletePaper'
,
params
)
return
Service
.
Hades
(
'public/hades/deletePaper'
,
params
)
;
}
}
export
function
queryPaperDetail
(
params
:
object
)
{
export
function
queryPaperDetail
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/queryPaperDetail'
,
params
)
return
Service
.
Hades
(
'public/hades/queryPaperDetail'
,
params
)
;
}
}
export
function
viewPaper
(
params
:
object
)
{
export
function
viewPaper
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/viewPaper'
,
params
)
return
Service
.
Hades
(
'public/hades/viewPaper'
,
params
)
;
}
}
export
function
editPaper
(
params
:
object
)
{
export
function
editPaper
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/editPaper'
,
params
)
return
Service
.
Hades
(
'public/hades/editPaper'
,
params
)
;
}
}
export
function
batchQueryQuestionDetails
(
params
:
object
)
{
export
function
batchQueryQuestionDetails
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/batchQueryQuestionDetails'
,
params
)
return
Service
.
Hades
(
'public/hades/batchQueryQuestionDetails'
,
params
)
;
}
}
export
function
queryQuestionPageListWithContent
(
params
:
object
)
{
export
function
queryQuestionPageListWithContent
(
params
:
object
)
{
return
Service
.
Hades
(
'public/hades/queryQuestionPageListWithContent'
,
params
)
return
Service
.
Hades
(
'public/hades/queryQuestionPageListWithContent'
,
params
)
;
}
}
src/domains/aid-tool-domain/AidToolService.ts
View file @
495240cf
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: yuananting
* @Author: yuananting
* @Date: 2021-03-11 11:34:37
* @Date: 2021-03-11 11:34:37
* @LastEditors: fusanqiasng
* @LastEditors: fusanqiasng
* @LastEditTime: 2021-0
5-24 23:44:39
* @LastEditTime: 2021-0
6-15 11:25:18
* @Description: 助学工具接口
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -12,7 +12,7 @@ import {
...
@@ -12,7 +12,7 @@ import {
addCategory
,
addCategory
,
delCategory
,
delCategory
,
editCategory
,
editCategory
,
edit
CategoryTree
,
move
CategoryTree
,
addQuestion
,
addQuestion
,
queryQuestionPageList
,
queryQuestionPageList
,
deleteQuestion
,
deleteQuestion
,
...
@@ -26,8 +26,8 @@ import {
...
@@ -26,8 +26,8 @@ import {
viewPaper
,
viewPaper
,
editPaper
,
editPaper
,
batchQueryQuestionDetails
,
batchQueryQuestionDetails
,
queryQuestionPageListWithContent
queryQuestionPageListWithContent
,
}
from
'@/data-source/aidTool/request-apis'
}
from
'@/data-source/aidTool/request-apis'
;
export
default
class
AidToolService
{
export
default
class
AidToolService
{
/**
/**
* 查询运营端分类书
* 查询运营端分类书
...
@@ -35,101 +35,101 @@ export default class AidToolService {
...
@@ -35,101 +35,101 @@ export default class AidToolService {
* @returns
* @returns
*/
*/
static
queryExternalCategoryTree
(
parmas
:
any
)
{
static
queryExternalCategoryTree
(
parmas
:
any
)
{
return
queryExternalCategoryTree
(
parmas
)
return
queryExternalCategoryTree
(
parmas
)
;
}
}
// 获取题目分类树
// 获取题目分类树
static
queryCategoryTree
(
params
:
any
)
{
static
queryCategoryTree
(
params
:
any
)
{
return
queryCategoryTree
(
params
)
return
queryCategoryTree
(
params
)
;
}
}
// 新增题目分类
// 新增题目分类
static
addCategory
(
params
:
any
)
{
static
addCategory
(
params
:
any
)
{
return
addCategory
(
params
)
return
addCategory
(
params
)
;
}
}
// 删除分类
// 删除分类
static
delCategory
(
params
:
any
)
{
static
delCategory
(
params
:
any
)
{
return
delCategory
(
params
)
return
delCategory
(
params
)
;
}
}
// 编辑分类
// 编辑分类
static
editCategory
(
params
:
any
)
{
static
editCategory
(
params
:
any
)
{
return
editCategory
(
params
)
return
editCategory
(
params
)
;
}
}
//
编辑分类树(拖拽)
//
拖拽移动分类树
static
edit
CategoryTree
(
params
:
any
)
{
static
move
CategoryTree
(
params
:
any
)
{
return
editCategoryTree
(
params
)
return
moveCategoryTree
(
params
);
}
}
// 查询题目列表
// 查询题目列表
static
queryQuestionPageList
(
params
:
any
)
{
static
queryQuestionPageList
(
params
:
any
)
{
return
queryQuestionPageList
(
params
)
return
queryQuestionPageList
(
params
)
;
}
}
// 添加题目
// 添加题目
static
addQuestion
(
params
:
any
)
{
static
addQuestion
(
params
:
any
)
{
return
addQuestion
(
params
)
return
addQuestion
(
params
)
;
}
}
// 删除题目
// 删除题目
static
deleteQuestion
(
params
:
any
)
{
static
deleteQuestion
(
params
:
any
)
{
return
deleteQuestion
(
params
)
return
deleteQuestion
(
params
)
;
}
}
// 预览题目
// 预览题目
static
queryQuestionDetails
(
params
:
any
)
{
static
queryQuestionDetails
(
params
:
any
)
{
return
queryQuestionDetails
(
params
)
return
queryQuestionDetails
(
params
)
;
}
}
// 编辑题目
// 编辑题目
static
editQuestion
(
params
:
any
)
{
static
editQuestion
(
params
:
any
)
{
return
editQuestion
(
params
)
return
editQuestion
(
params
)
;
}
}
// 批量导入
// 批量导入
static
batchImport
(
params
:
any
)
{
static
batchImport
(
params
:
any
)
{
return
batchImport
(
params
)
return
batchImport
(
params
)
;
}
}
// 创建试卷
// 创建试卷
static
createPaper
(
params
:
any
)
{
static
createPaper
(
params
:
any
)
{
return
createPaper
(
params
)
return
createPaper
(
params
)
;
}
}
// 查询试卷列表
// 查询试卷列表
static
queryPaperPageList
(
params
:
any
)
{
static
queryPaperPageList
(
params
:
any
)
{
return
queryPaperPageList
(
params
)
return
queryPaperPageList
(
params
)
;
}
}
// 删除试卷
// 删除试卷
static
deletePaper
(
params
:
any
)
{
static
deletePaper
(
params
:
any
)
{
return
deletePaper
(
params
)
return
deletePaper
(
params
)
;
}
}
// 编辑前查询试卷信息
// 编辑前查询试卷信息
static
queryPaperDetail
(
params
:
any
)
{
static
queryPaperDetail
(
params
:
any
)
{
return
queryPaperDetail
(
params
)
return
queryPaperDetail
(
params
)
;
}
}
// 预览试卷
// 预览试卷
static
viewPaper
(
params
:
any
)
{
static
viewPaper
(
params
:
any
)
{
return
viewPaper
(
params
)
return
viewPaper
(
params
)
;
}
}
// 编辑试卷
// 编辑试卷
static
editPaper
(
params
:
any
)
{
static
editPaper
(
params
:
any
)
{
return
editPaper
(
params
)
return
editPaper
(
params
)
;
}
}
// 操作试卷-预览查询多题目信息
// 操作试卷-预览查询多题目信息
static
batchQueryQuestionDetails
(
params
:
any
)
{
static
batchQueryQuestionDetails
(
params
:
any
)
{
return
batchQueryQuestionDetails
(
params
)
return
batchQueryQuestionDetails
(
params
)
;
}
}
// 操作试卷-选择题目列表带题目详情
// 操作试卷-选择题目列表带题目详情
static
queryQuestionPageListWithContent
(
params
:
any
)
{
static
queryQuestionPageListWithContent
(
params
:
any
)
{
return
queryQuestionPageListWithContent
(
params
)
return
queryQuestionPageListWithContent
(
params
)
;
}
}
}
}
src/modules/knowledge-base/components/Classification.jsx
View file @
495240cf
...
@@ -2,17 +2,17 @@
...
@@ -2,17 +2,17 @@
* @Description:
* @Description:
* @Author: zangsuyun
* @Author: zangsuyun
* @Date: 2021-03-19 18:05:23
* @Date: 2021-03-19 18:05:23
* @LastEditors:
wufan
* @LastEditors:
fusanqiasng
* @LastEditTime: 2021-0
5-30 16:48:46
* @LastEditTime: 2021-0
6-15 11:20:24
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
React
,
{
Component
}
from
"react"
;
import
React
,
{
Component
}
from
'react'
;
import
{
Input
,
Button
,
Tree
}
from
"antd"
;
import
{
Input
,
Button
,
Tree
}
from
'antd'
;
import
"./Classification.less"
;
import
'./Classification.less'
;
import
User
from
"@/common/js/user"
;
import
User
from
'@/common/js/user'
;
import
KnowledgeAPI
from
"@/data-source/knowledge/request-api"
;
import
KnowledgeAPI
from
'@/data-source/knowledge/request-api'
;
import
Bus
from
"@/core/bus"
;
import
Bus
from
'@/core/bus'
;
const
{
Search
}
=
Input
;
const
{
Search
}
=
Input
;
const
{
DirectoryTree
}
=
Tree
;
const
{
DirectoryTree
}
=
Tree
;
...
@@ -21,7 +21,7 @@ class Classification extends Component {
...
@@ -21,7 +21,7 @@ class Classification extends Component {
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
this
.
state
=
{
this
.
state
=
{
selectedKeys
:
props
.
selectedKeys
?
[
props
.
selectedKeys
]
:
[
"0"
],
selectedKeys
:
props
.
selectedKeys
?
[
props
.
selectedKeys
]
:
[
'0'
],
searchValue
:
null
,
searchValue
:
null
,
NewEditQuestionBankCategory
:
null
,
//新增或编辑分类模态框
NewEditQuestionBankCategory
:
null
,
//新增或编辑分类模态框
ImportCourseCategory
:
null
,
// 引用课程分类模态框
ImportCourseCategory
:
null
,
// 引用课程分类模态框
...
@@ -32,11 +32,11 @@ class Classification extends Component {
...
@@ -32,11 +32,11 @@ class Classification extends Component {
componentDidMount
()
{
componentDidMount
()
{
this
.
queryCategoryTree
();
this
.
queryCategoryTree
();
Bus
.
bind
(
'knowledgeCategoryTree'
,
this
.
queryCategoryTree
)
Bus
.
bind
(
'knowledgeCategoryTree'
,
this
.
queryCategoryTree
)
;
}
}
componentWillUnmount
()
{
componentWillUnmount
()
{
Bus
.
unbind
(
'knowledgeCategoryTree'
,
this
.
queryCategoryTree
)
Bus
.
unbind
(
'knowledgeCategoryTree'
,
this
.
queryCategoryTree
)
;
}
}
shouldComponentUpdate
=
(
nextProps
,
nextState
)
=>
{
shouldComponentUpdate
=
(
nextProps
,
nextState
)
=>
{
...
@@ -79,7 +79,7 @@ class Classification extends Component {
...
@@ -79,7 +79,7 @@ class Classification extends Component {
};
};
KnowledgeAPI
.
getCategoryTree
(
query
).
then
((
res
)
=>
{
KnowledgeAPI
.
getCategoryTree
(
query
).
then
((
res
)
=>
{
const
{
categoryList
=
[],
noCategoryCnt
=
0
}
=
res
.
result
;
const
{
categoryList
=
[],
noCategoryCnt
=
0
}
=
res
.
result
;
let
str
=
"未分类"
;
let
str
=
'未分类'
;
if
(
categoryName
)
{
if
(
categoryName
)
{
this
.
setState
({
autoExpandParent
:
true
});
this
.
setState
({
autoExpandParent
:
true
});
if
(
str
.
indexOf
(
categoryName
)
<
0
)
{
if
(
str
.
indexOf
(
categoryName
)
<
0
)
{
...
@@ -93,8 +93,8 @@ class Classification extends Component {
...
@@ -93,8 +93,8 @@ class Classification extends Component {
this
.
setState
({
expandedKeys
:
nodeId
});
this
.
setState
({
expandedKeys
:
nodeId
});
}
else
{
}
else
{
const
defaultNode
=
{
const
defaultNode
=
{
id
:
"0"
,
id
:
'0'
,
categoryName
:
"未分类"
,
categoryName
:
'未分类'
,
categoryCount
:
noCategoryCnt
,
categoryCount
:
noCategoryCnt
,
};
};
categoryList
.
unshift
(
defaultNode
);
categoryList
.
unshift
(
defaultNode
);
...
@@ -110,8 +110,8 @@ class Classification extends Component {
...
@@ -110,8 +110,8 @@ class Classification extends Component {
}
else
{
}
else
{
this
.
setState
({
autoExpandParent
:
false
});
this
.
setState
({
autoExpandParent
:
false
});
const
defaultNode
=
{
const
defaultNode
=
{
id
:
"0"
,
id
:
'0'
,
categoryName
:
"未分类"
,
categoryName
:
'未分类'
,
categoryCount
:
noCategoryCnt
,
categoryCount
:
noCategoryCnt
,
};
};
categoryList
.
unshift
(
defaultNode
);
categoryList
.
unshift
(
defaultNode
);
...
@@ -140,39 +140,35 @@ class Classification extends Component {
...
@@ -140,39 +140,35 @@ class Classification extends Component {
item
.
title
=
item
.
title
=
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
(
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
(
<
span
>
<
span
>
{
item
.
categoryName
}
(
{
item
.
categoryCount
}
)
{
item
.
categoryName
}
{
item
.
categoryCount
>
0
&&
<
span
>
(
{
item
.
categoryCount
}
)
</
span
>
}
</
span
>
</
span
>
)
:
(
)
:
(
<
span
style=
{
{
opacity
:
0.5
}
}
>
<
span
style=
{
{
opacity
:
0.5
}
}
>
{
item
.
categoryName
}
(
{
item
.
categoryCount
}
)
{
item
.
categoryName
}
{
item
.
categoryCount
>
0
&&
<
span
>
(
{
item
.
categoryCount
}
)
</
span
>
}
</
span
>
</
span
>
);
);
item
.
icon
=
item
.
icon
=
item
.
categoryName
===
"未分类"
?
(
item
.
categoryName
===
'未分类'
?
(
<
img
<
img
style=
{
{
style=
{
{
width
:
"24px"
,
width
:
'24px'
,
height
:
"24px"
,
height
:
'24px'
,
opacity
:
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
src=
"https://image.xiaomaiketang.com/xm/defaultCategory.png"
src=
'https://image.xiaomaiketang.com/xm/defaultCategory.png'
alt=
""
alt=
''
/>
/>
)
:
(
)
:
(
<
img
<
img
style=
{
{
style=
{
{
width
:
"24px"
,
width
:
'24px'
,
height
:
"24px"
,
height
:
'24px'
,
opacity
:
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
src=
"https://image.xiaomaiketang.com/xm/hasCategory.png"
src=
'https://image.xiaomaiketang.com/xm/hasCategory.png'
alt=
""
alt=
''
/>
/>
);
);
if
(
item
.
sonCategoryList
)
{
if
(
item
.
sonCategoryList
)
{
...
@@ -186,36 +182,30 @@ class Classification extends Component {
...
@@ -186,36 +182,30 @@ class Classification extends Component {
};
};
render
()
{
render
()
{
const
{
const
{
treeData
,
expandedKeys
,
selectedKeys
,
autoExpandParent
}
=
this
.
state
;
treeData
,
expandedKeys
,
selectedKeys
,
autoExpandParent
,
}
=
this
.
state
;
return
(
return
(
<
div
className=
"question-bank-sider"
>
<
div
className=
'question-bank-sider'
>
<
div
className=
"sider-title"
>
知识分类
</
div
>
<
div
className=
'sider-title'
>
知识分类
</
div
>
<
Search
<
Search
className=
"sider-search"
className=
'sider-search'
placeholder=
"搜索名称分类"
placeholder=
'搜索名称分类'
onSearch=
{
(
value
)
=>
{
onSearch=
{
(
value
)
=>
{
this
.
queryCategoryTree
(
value
);
this
.
queryCategoryTree
(
value
);
}
}
}
}
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
enterButton=
{
<
span
className=
'icon iconfont'
>

</
span
>
}
style=
{
{
width
:
230
}
}
style=
{
{
width
:
230
}
}
/>
/>
<
div
className=
"sider-btn"
>
<
div
className=
'sider-btn'
>
<
Button
<
Button
onClick=
{
()
=>
{
onClick=
{
()
=>
{
window
.
RCHistory
.
push
({
window
.
RCHistory
.
push
({
pathname
:
"/course-category-manage?from=knowledge"
,
pathname
:
'/course-category-manage?from=knowledge'
,
});
});
}
}
}
}
>
>
分类管理
分类管理
</
Button
>
</
Button
>
</
div
>
</
div
>
<
div
className=
"sider-tree"
>
<
div
className=
'sider-tree'
>
<
DirectoryTree
<
DirectoryTree
expandedKeys=
{
expandedKeys
}
expandedKeys=
{
expandedKeys
}
autoExpandParent=
{
autoExpandParent
}
autoExpandParent=
{
autoExpandParent
}
...
...
src/modules/teach-tool/components/CourseCategoryManage.jsx
View file @
495240cf
/*
/*
* @Author: yuananting
* @Author: yuananting
* @Date: 2021-02-23 18:28:50
* @Date: 2021-02-23 18:28:50
* @LastEditors:
yuananti
ng
* @LastEditors:
fusanqias
ng
* @LastEditTime: 2021-06-
02 14:25:06
* @LastEditTime: 2021-06-
15 14:10:53
* @Description: 助学工具-课程分类
* @Description: 助学工具-课程分类
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
React
,
{
Component
}
from
'react'
import
React
,
{
Component
}
from
'react'
;
import
Breadcrumbs
from
'@/components/Breadcrumbs'
import
Breadcrumbs
from
'@/components/Breadcrumbs'
;
import
'./CourseCategoryManage.less'
import
'./CourseCategoryManage.less'
;
import
OpearteCourseCategoryModal
from
'../modal/OpearteCourseCategoryModal'
import
OpearteCourseCategoryModal
from
'../modal/OpearteCourseCategoryModal'
;
import
AidToolService
from
'@/domains/aid-tool-domain/AidToolService'
import
AidToolService
from
'@/domains/aid-tool-domain/AidToolService'
;
import
User
from
'@/common/js/user'
import
User
from
'@/common/js/user'
;
import
{
Tree
,
Input
,
Space
,
Button
,
Menu
,
Dropdown
,
message
,
Modal
}
from
'antd'
import
{
Tree
,
Input
,
Space
,
Button
,
Menu
,
Dropdown
,
message
,
Modal
}
from
'antd'
;
import
ShowTips
from
'@/components/ShowTips'
import
ShowTips
from
'@/components/ShowTips'
;
const
{
DirectoryTree
}
=
Tree
const
{
DirectoryTree
}
=
Tree
;
const
{
Search
}
=
Input
const
{
Search
}
=
Input
;
const
{
confirm
}
=
Modal
const
{
confirm
}
=
Modal
;
class
CourseCategoryManage
extends
Component
{
class
CourseCategoryManage
extends
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
)
super
(
props
)
;
this
.
state
=
{
this
.
state
=
{
operateCourseCategoryModal
:
null
,
//新增或编辑分类模态框
operateCourseCategoryModal
:
null
,
//新增或编辑分类模态框
treeData
:
[],
treeData
:
[],
originTreeData
:
[],
originTreeData
:
[],
treeMap
:
{},
treeMap
:
{},
selectedKeys
:
[
'null'
],
selectedKeys
:
[
'null'
],
autoExpandParent
:
true
autoExpandParent
:
true
,
}
}
;
}
}
componentDidMount
()
{
componentDidMount
()
{
this
.
queryCategoryTree
(
'init'
)
this
.
queryCategoryTree
(
'init'
)
;
}
}
getWholeTree
=
()
=>
{
getWholeTree
=
()
=>
{
...
@@ -40,112 +40,112 @@ class CourseCategoryManage extends Component {
...
@@ -40,112 +40,112 @@ class CourseCategoryManage extends Component {
count
:
false
,
count
:
false
,
source
:
0
,
source
:
0
,
userId
:
User
.
getStoreUserId
(),
userId
:
User
.
getStoreUserId
(),
tenantId
:
User
.
getStoreId
()
tenantId
:
User
.
getStoreId
()
,
}
}
;
AidToolService
.
queryCategoryTree
(
query
).
then
((
res
)
=>
{
AidToolService
.
queryCategoryTree
(
query
).
then
((
res
)
=>
{
const
{
categoryList
=
[]
}
=
res
.
result
const
{
categoryList
=
[]
}
=
res
.
result
;
this
.
setState
({
originTreeData
:
categoryList
},
()
=>
{
this
.
setState
({
originTreeData
:
categoryList
},
()
=>
{
let
map
=
{}
let
map
=
{}
;
let
topItem
=
[]
let
topItem
=
[]
;
categoryList
.
forEach
((
item
)
=>
{
categoryList
.
forEach
((
item
)
=>
{
topItem
.
push
(
item
)
topItem
.
push
(
item
)
;
})
})
;
this
.
setState
({
this
.
setState
({
treeMap
:
Object
.
assign
(
this
.
getTreeMap
(
categoryList
,
map
),
{
treeMap
:
Object
.
assign
(
this
.
getTreeMap
(
categoryList
,
map
),
{
0
:
{
0
:
{
sonCategoryList
:
topItem
sonCategoryList
:
topItem
,
}
}
,
})
})
,
})
})
;
})
})
;
})
})
;
}
}
;
// 查询分类树
// 查询分类树
queryCategoryTree
=
(
operateType
,
categoryName
)
=>
{
queryCategoryTree
=
(
operateType
,
categoryName
)
=>
{
this
.
getWholeTree
()
this
.
getWholeTree
()
;
this
.
setState
({
categoryName
})
this
.
setState
({
categoryName
})
;
let
query
=
{
let
query
=
{
bizType
:
'QUESTION'
,
bizType
:
'QUESTION'
,
count
:
false
,
count
:
false
,
source
:
0
,
source
:
0
,
categoryName
,
categoryName
,
userId
:
User
.
getStoreUserId
(),
userId
:
User
.
getStoreUserId
(),
tenantId
:
User
.
getStoreId
()
tenantId
:
User
.
getStoreId
()
,
}
}
;
AidToolService
.
queryCategoryTree
(
query
).
then
((
res
)
=>
{
AidToolService
.
queryCategoryTree
(
query
).
then
((
res
)
=>
{
const
{
categoryList
=
[]
}
=
res
.
result
const
{
categoryList
=
[]
}
=
res
.
result
;
let
str
=
'未分类'
let
str
=
'未分类'
;
if
(
categoryName
)
{
if
(
categoryName
)
{
this
.
setState
({
autoExpandParent
:
true
})
this
.
setState
({
autoExpandParent
:
true
})
;
if
(
str
.
indexOf
(
categoryName
)
<
0
)
{
if
(
str
.
indexOf
(
categoryName
)
<
0
)
{
this
.
setState
({
this
.
setState
({
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
)
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
)
,
})
})
;
let
nodeId
=
[]
let
nodeId
=
[]
;
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
nodeId
.
push
(
item
)
nodeId
.
push
(
item
)
;
})
})
;
this
.
setState
({
expandedKeys
:
nodeId
})
this
.
setState
({
expandedKeys
:
nodeId
})
;
}
else
{
}
else
{
const
defaultNode
=
{
const
defaultNode
=
{
id
:
'null'
,
id
:
'null'
,
categoryName
:
'未分类'
,
categoryName
:
'未分类'
,
categoryCount
:
0
,
categoryCount
:
0
,
parentId
:
'0'
,
parentId
:
'0'
,
categoryLevel
:
0
categoryLevel
:
0
,
}
}
;
categoryList
.
unshift
(
defaultNode
)
categoryList
.
unshift
(
defaultNode
)
;
this
.
setState
({
this
.
setState
({
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
)
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
)
,
})
})
;
let
nodeId
=
[]
let
nodeId
=
[]
;
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
nodeId
.
push
(
item
)
nodeId
.
push
(
item
)
;
})
})
;
if
(
operateType
===
'init'
)
{
if
(
operateType
===
'init'
)
{
this
.
setState
({
expandedKeys
:
nodeId
})
this
.
setState
({
expandedKeys
:
nodeId
})
;
}
}
}
}
}
else
{
}
else
{
this
.
setState
({
autoExpandParent
:
false
})
this
.
setState
({
autoExpandParent
:
false
})
;
const
defaultNode
=
{
const
defaultNode
=
{
id
:
'null'
,
id
:
'null'
,
categoryName
:
'未分类'
,
categoryName
:
'未分类'
,
categoryCount
:
0
,
categoryCount
:
0
,
parentId
:
'0'
,
parentId
:
'0'
,
categoryLevel
:
0
categoryLevel
:
0
,
}
}
;
categoryList
.
unshift
(
defaultNode
)
categoryList
.
unshift
(
defaultNode
)
;
this
.
setState
({
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
)
})
this
.
setState
({
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
)
})
;
if
(
operateType
===
'init'
)
{
if
(
operateType
===
'init'
)
{
this
.
setState
({
expandedKeys
:
[]
})
this
.
setState
({
expandedKeys
:
[]
})
;
}
}
}
}
})
})
;
}
}
;
// 树节点渲染-内容处理
// 树节点渲染-内容处理
renderTreeNodes
=
(
data
,
value
)
=>
{
renderTreeNodes
=
(
data
,
value
)
=>
{
let
newTreeData
=
data
.
map
((
item
)
=>
{
let
newTreeData
=
data
.
map
((
item
)
=>
{
item
.
title
=
item
.
categoryName
item
.
title
=
item
.
categoryName
;
item
.
key
=
item
.
id
item
.
key
=
item
.
id
;
item
.
title
=
(
item
.
title
=
(
<
div
<
div
style=
{
{
style=
{
{
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
className=
'node-title-div'
className=
'node-title-div'
onMouseOver=
{
(
e
)
=>
{
onMouseOver=
{
(
e
)
=>
{
let
mouseNodeOpts
=
e
.
currentTarget
.
getElementsByTagName
(
'div'
)[
0
]
let
mouseNodeOpts
=
e
.
currentTarget
.
getElementsByTagName
(
'div'
)[
0
]
;
if
(
mouseNodeOpts
)
{
if
(
mouseNodeOpts
)
{
mouseNodeOpts
.
style
.
visibility
=
'visible'
mouseNodeOpts
.
style
.
visibility
=
'visible'
;
}
}
}
}
}
}
onMouseOut=
{
(
e
)
=>
{
onMouseOut=
{
(
e
)
=>
{
let
mouseNodeOpts
=
e
.
currentTarget
.
getElementsByTagName
(
'div'
)[
0
]
let
mouseNodeOpts
=
e
.
currentTarget
.
getElementsByTagName
(
'div'
)[
0
]
;
if
(
mouseNodeOpts
)
{
if
(
mouseNodeOpts
)
{
mouseNodeOpts
.
style
.
visibility
=
'hidden'
mouseNodeOpts
.
style
.
visibility
=
'hidden'
;
}
}
}
}
>
}
}
>
<
span
>
{
item
.
categoryName
}
</
span
>
<
span
>
{
item
.
categoryName
}
</
span
>
...
@@ -158,9 +158,9 @@ class CourseCategoryManage extends Component {
...
@@ -158,9 +158,9 @@ class CourseCategoryManage extends Component {
(
item
.
categoryLevel
===
0
&&
originTreeData
.
length
>=
29
)
||
(
item
.
categoryLevel
===
0
&&
originTreeData
.
length
>=
29
)
||
(
item
.
categoryLevel
>
0
&&
this
.
getRelatedNodes
(
item
.
parentId
).
length
>=
30
)
(
item
.
categoryLevel
>
0
&&
this
.
getRelatedNodes
(
item
.
parentId
).
length
>=
30
)
)
{
)
{
return
message
.
info
(
'最多只能添加30个分类'
)
return
message
.
info
(
'最多只能添加30个分类'
)
;
}
}
this
.
newEditCourseCategory
(
'newEqualLevelCategory'
,
'equal'
,
'new'
,
item
)
this
.
newEditCourseCategory
(
'newEqualLevelCategory'
,
'equal'
,
'new'
,
item
)
;
}
}
>
}
}
>
<
span
className=
'icon iconfont'
style=
{
{
color
:
'#BFBFBF'
}
}
>
<
span
className=
'icon iconfont'
style=
{
{
color
:
'#BFBFBF'
}
}
>

{
' '
}

{
' '
}
...
@@ -171,10 +171,10 @@ class CourseCategoryManage extends Component {
...
@@ -171,10 +171,10 @@ class CourseCategoryManage extends Component {
<
span
<
span
onClick=
{
()
=>
{
onClick=
{
()
=>
{
if
(
this
.
getRelatedNodes
(
item
.
id
)
&&
this
.
getRelatedNodes
(
item
.
id
).
length
>=
30
)
{
if
(
this
.
getRelatedNodes
(
item
.
id
)
&&
this
.
getRelatedNodes
(
item
.
id
).
length
>=
30
)
{
message
.
info
(
'最多只能添加30个子分类'
)
message
.
info
(
'最多只能添加30个子分类'
)
;
return
return
;
}
}
this
.
newEditCourseCategory
(
'newChildLevelCategory'
,
'child'
,
'new'
,
item
)
this
.
newEditCourseCategory
(
'newChildLevelCategory'
,
'child'
,
'new'
,
item
)
;
}
}
>
}
}
>
<
span
className=
'icon iconfont'
style=
{
{
color
:
'#BFBFBF'
}
}
>
<
span
className=
'icon iconfont'
style=
{
{
color
:
'#BFBFBF'
}
}
>

{
' '
}

{
' '
}
...
@@ -193,14 +193,14 @@ class CourseCategoryManage extends Component {
...
@@ -193,14 +193,14 @@ class CourseCategoryManage extends Component {
</
Space
>
</
Space
>
)
}
)
}
</
div
>
</
div
>
)
)
;
item
.
icon
=
item
.
icon
=
item
.
categoryName
===
'未分类'
?
(
item
.
categoryName
===
'未分类'
?
(
<
img
<
img
style=
{
{
style=
{
{
width
:
'24px'
,
width
:
'24px'
,
height
:
'24px'
,
height
:
'24px'
,
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
src=
'https://image.xiaomaiketang.com/xm/defaultCategory.png'
src=
'https://image.xiaomaiketang.com/xm/defaultCategory.png'
alt=
''
alt=
''
...
@@ -210,54 +210,54 @@ class CourseCategoryManage extends Component {
...
@@ -210,54 +210,54 @@ class CourseCategoryManage extends Component {
style=
{
{
style=
{
{
width
:
'24px'
,
width
:
'24px'
,
height
:
'24px'
,
height
:
'24px'
,
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
src=
'https://image.xiaomaiketang.com/xm/hasCategory.png'
src=
'https://image.xiaomaiketang.com/xm/hasCategory.png'
alt=
''
alt=
''
/>
/>
)
)
;
if
(
item
.
sonCategoryList
)
{
if
(
item
.
sonCategoryList
)
{
item
.
children
=
this
.
renderTreeNodes
(
item
.
sonCategoryList
,
value
)
item
.
children
=
this
.
renderTreeNodes
(
item
.
sonCategoryList
,
value
)
;
}
}
return
item
return
item
;
})
})
;
return
newTreeData
return
newTreeData
;
}
}
;
// 树结构平铺
// 树结构平铺
getTreeMap
=
(
data
,
map
)
=>
{
getTreeMap
=
(
data
,
map
)
=>
{
data
.
forEach
((
item
)
=>
{
data
.
forEach
((
item
)
=>
{
map
[
item
.
id
]
=
item
map
[
item
.
id
]
=
item
;
if
(
item
.
sonCategoryList
&&
item
.
sonCategoryList
.
length
>
0
)
{
if
(
item
.
sonCategoryList
&&
item
.
sonCategoryList
.
length
>
0
)
{
this
.
getTreeMap
(
item
.
sonCategoryList
,
map
)
this
.
getTreeMap
(
item
.
sonCategoryList
,
map
)
;
}
}
})
})
;
return
map
return
map
;
}
}
;
// 新增或编辑分类
// 新增或编辑分类
newEditCourseCategory
=
(
categoryType
,
addLevelType
,
type
,
node
)
=>
{
newEditCourseCategory
=
(
categoryType
,
addLevelType
,
type
,
node
)
=>
{
let
title
=
''
let
title
=
''
;
let
label
=
''
let
label
=
''
;
switch
(
categoryType
)
{
switch
(
categoryType
)
{
case
'newEqualLevelCategory'
:
case
'newEqualLevelCategory'
:
title
=
'新增分类'
title
=
'新增分类'
;
label
=
'分类名称'
label
=
'分类名称'
;
break
break
;
case
'newChildLevelCategory'
:
case
'newChildLevelCategory'
:
title
=
'新增子分类'
title
=
'新增子分类'
;
label
=
'子分类名称'
label
=
'子分类名称'
;
break
break
;
case
'editEqualLevelCategory'
:
case
'editEqualLevelCategory'
:
title
=
'编辑分类'
title
=
'编辑分类'
;
label
=
'分类名称'
label
=
'分类名称'
;
break
break
;
case
'editChildLevelCategory'
:
case
'editChildLevelCategory'
:
title
=
'编辑子分类'
title
=
'编辑子分类'
;
label
=
'子分类名称'
label
=
'子分类名称'
;
break
break
;
}
}
const
m
=
(
const
m
=
(
<
OpearteCourseCategoryModal
<
OpearteCourseCategoryModal
...
@@ -267,15 +267,15 @@ class CourseCategoryManage extends Component {
...
@@ -267,15 +267,15 @@ class CourseCategoryManage extends Component {
title=
{
title
}
title=
{
title
}
label=
{
label
}
label=
{
label
}
close=
{
()
=>
{
close=
{
()
=>
{
this
.
queryCategoryTree
(
'remain'
,
this
.
state
.
categoryName
)
this
.
queryCategoryTree
(
'remain'
,
this
.
state
.
categoryName
)
;
this
.
setState
({
this
.
setState
({
operateCourseCategoryModal
:
null
operateCourseCategoryModal
:
null
,
})
})
;
}
}
}
}
/>
/>
)
)
;
this
.
setState
({
operateCourseCategoryModal
:
m
})
this
.
setState
({
operateCourseCategoryModal
:
m
})
;
}
}
;
// 删除分类
// 删除分类
delCategory
=
(
item
)
=>
{
delCategory
=
(
item
)
=>
{
...
@@ -291,17 +291,17 @@ class CourseCategoryManage extends Component {
...
@@ -291,17 +291,17 @@ class CourseCategoryManage extends Component {
categoryId
:
item
.
id
,
categoryId
:
item
.
id
,
source
:
0
,
source
:
0
,
tenantId
:
User
.
getStoreId
(),
tenantId
:
User
.
getStoreId
(),
userId
:
User
.
getStoreUserId
()
userId
:
User
.
getStoreUserId
()
,
}
}
;
AidToolService
.
delCategory
(
params
).
then
((
res
)
=>
{
AidToolService
.
delCategory
(
params
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
if
(
res
.
success
)
{
message
.
success
(
'删除分类成功'
)
message
.
success
(
'删除分类成功'
)
;
this
.
queryCategoryTree
(
'remain'
,
this
.
state
.
categoryName
)
this
.
queryCategoryTree
(
'remain'
,
this
.
state
.
categoryName
)
;
}
}
})
})
;
}
}
,
})
})
;
}
}
;
// 更多操作-【重命名 删除】
// 更多操作-【重命名 删除】
initDropMenu
=
(
item
)
=>
{
initDropMenu
=
(
item
)
=>
{
...
@@ -310,8 +310,8 @@ class CourseCategoryManage extends Component {
...
@@ -310,8 +310,8 @@ class CourseCategoryManage extends Component {
<
Menu
.
Item
key=
'0'
>
<
Menu
.
Item
key=
'0'
>
<
span
<
span
onClick=
{
()
=>
{
onClick=
{
()
=>
{
let
categoryType
=
item
.
categoryLevel
===
0
?
'editEqualLevelCategory'
:
'editChildLevelCategory'
let
categoryType
=
item
.
categoryLevel
===
0
?
'editEqualLevelCategory'
:
'editChildLevelCategory'
;
this
.
newEditCourseCategory
(
categoryType
,
'equal'
,
'edit'
,
item
)
this
.
newEditCourseCategory
(
categoryType
,
'equal'
,
'edit'
,
item
)
;
}
}
>
}
}
>
重命名
重命名
</
span
>
</
span
>
...
@@ -319,49 +319,47 @@ class CourseCategoryManage extends Component {
...
@@ -319,49 +319,47 @@ class CourseCategoryManage extends Component {
<
Menu
.
Item
key=
'1'
>
<
Menu
.
Item
key=
'1'
>
<
span
<
span
onClick=
{
()
=>
{
onClick=
{
()
=>
{
this
.
delCategory
(
item
)
this
.
delCategory
(
item
)
;
}
}
>
}
}
>
删除
删除
</
span
>
</
span
>
</
Menu
.
Item
>
</
Menu
.
Item
>
</
Menu
>
</
Menu
>
)
)
;
}
}
;
// 获取相关节点
// 获取相关节点
getRelatedNodes
=
(
parentId
)
=>
{
getRelatedNodes
=
(
parentId
)
=>
{
return
this
.
state
.
treeMap
[
parentId
]
?
this
.
state
.
treeMap
[
parentId
].
sonCategoryList
:
[]
return
this
.
state
.
treeMap
[
parentId
]
?
this
.
state
.
treeMap
[
parentId
].
sonCategoryList
:
[]
;
}
}
;
// 获取拖拽目标父节点层级
// 获取拖拽目标父节点层级
getParentDragNodesLevel
=
(
dragNode
)
=>
{
getParentDragNodesLevel
=
(
dragNode
)
=>
{
if
(
!
dragNode
)
{
if
(
!
dragNode
)
{
return
[]
return
[]
;
}
}
let
dragNodes
=
[]
let
dragNodes
=
[]
;
dragNodes
.
push
(
dragNode
.
id
)
dragNodes
.
push
(
dragNode
.
id
)
;
if
(
dragNode
.
parentId
!==
"0"
)
{
if
(
dragNode
.
parentId
!==
'0'
)
{
dragNodes
=
dragNodes
.
concat
(
dragNodes
=
dragNodes
.
concat
(
this
.
getParentDragNodesLevel
(
this
.
state
.
treeMap
[
dragNode
.
parentId
]));
this
.
getParentDragNodesLevel
(
this
.
state
.
treeMap
[
dragNode
.
parentId
])
);
}
}
return
dragNodes
return
dragNodes
;
}
}
;
// 获取拖拽节点层级
// 获取拖拽节点层级
getDragNodesLevel
=
(
dragNode
)
=>
{
getDragNodesLevel
=
(
dragNode
)
=>
{
let
dragNodes
=
[]
let
dragNodes
=
[]
;
if
(
dragNode
.
sonCategoryList
&&
dragNode
.
sonCategoryList
.
length
>
0
)
{
if
(
dragNode
.
sonCategoryList
&&
dragNode
.
sonCategoryList
.
length
>
0
)
{
dragNode
.
sonCategoryList
.
forEach
((
item
)
=>
{
dragNode
.
sonCategoryList
.
forEach
((
item
)
=>
{
dragNodes
.
push
(
item
.
categoryLevel
)
dragNodes
.
push
(
item
.
categoryLevel
)
;
if
(
item
.
sonCategoryList
&&
item
.
sonCategoryList
.
length
>
0
)
{
if
(
item
.
sonCategoryList
&&
item
.
sonCategoryList
.
length
>
0
)
{
dragNodes
=
dragNodes
.
concat
(
this
.
getDragNodesLevel
(
item
))
dragNodes
=
dragNodes
.
concat
(
this
.
getDragNodesLevel
(
item
))
;
}
}
})
})
;
}
}
return
[...
new
Set
(
dragNodes
)]
return
[...
new
Set
(
dragNodes
)]
;
}
}
;
// 拖拽
// 拖拽
onDrop
=
(
info
)
=>
{
onDrop
=
(
info
)
=>
{
...
@@ -370,148 +368,165 @@ class CourseCategoryManage extends Component {
...
@@ -370,148 +368,165 @@ class CourseCategoryManage extends Component {
// 不允许其他节点拖拽到未分类之前
// 不允许其他节点拖拽到未分类之前
if
(
if
(
this
.
state
.
categoryName
||
this
.
state
.
categoryName
||
(
info
.
node
.
categoryName
===
"未分类"
&&
info
.
dropPosition
===
0
)
||
(
info
.
node
.
categoryName
===
'未分类'
&&
info
.
dropPosition
===
0
)
||
(
info
.
node
.
categoryName
===
"未分类"
&&
(
info
.
node
.
categoryName
===
'未分类'
&&
info
.
dropToGap
&&
info
.
dropPosition
===
-
1
)
info
.
dropToGap
&&
info
.
dropPosition
===
-
1
)
)
{
)
{
return
;
return
;
}
}
// 未分类不可以拖拽
// 未分类不可以拖拽
if
(
if
(
info
.
dragNode
.
categoryName
===
'未分类'
&&
info
.
dragNode
.
categoryLevel
===
0
)
return
message
.
info
(
'“未分类”为默认分类暂不支持移动'
);
info
.
dragNode
.
categoryName
===
"未分类"
&&
info
.
dragNode
.
categoryLevel
===
0
)
return
message
.
info
(
"“未分类”为默认分类暂不支持移动"
);
let
targetParentId
=
info
.
dropToGap
?
info
.
node
.
parentId
:
info
.
node
.
id
let
targetParentId
=
info
.
dropToGap
?
info
.
node
.
parentId
:
info
.
node
.
id
;
let
relatedNodes
=
this
.
getRelatedNodes
(
targetParentId
)
let
relatedNodes
=
this
.
getRelatedNodes
(
targetParentId
)
;
if
(
!
((
info
.
dropToGap
&&
info
.
node
.
parentId
===
info
.
dragNode
.
parentId
)
||
(
!
info
.
dropToGap
&&
info
.
node
.
id
===
info
.
dragNode
.
parentId
)))
{
if
(
!
((
info
.
dropToGap
&&
info
.
node
.
parentId
===
info
.
dragNode
.
parentId
)
||
(
!
info
.
dropToGap
&&
info
.
node
.
id
===
info
.
dragNode
.
parentId
)))
{
if
(
this
.
state
.
treeMap
[
targetParentId
].
categoryLevel
===
4
)
{
console
.
log
(
'this.state.treeMap[targetParentId].categoryLevel'
,
this
.
state
.
treeMap
[
targetParentId
].
categoryLevel
);
return
message
.
info
(
'最多支持5级分类'
)
if
(
this
.
state
.
treeMap
[
targetParentId
].
categoryLevel
>=
4
)
{
return
message
.
info
(
'最多支持5级分类'
);
}
else
{
}
else
{
let
nodesArr
=
this
.
getDragNodesLevel
(
this
.
state
.
treeMap
[
info
.
dragNode
.
id
])
let
nodesArr
=
this
.
getDragNodesLevel
(
this
.
state
.
treeMap
[
info
.
dragNode
.
id
]);
let
parentArr
=
this
.
getParentDragNodesLevel
(
this
.
state
.
treeMap
[
targetParentId
])
let
parentArr
=
this
.
getParentDragNodesLevel
(
this
.
state
.
treeMap
[
targetParentId
]);
console
.
log
(
nodesArr
.
length
,
parentArr
.
length
);
if
(
nodesArr
.
length
+
parentArr
.
length
>
4
)
{
if
(
nodesArr
.
length
+
parentArr
.
length
>
4
)
{
return
message
.
info
(
"最多支持5级分类"
);
return
message
.
info
(
'最多支持5级分类'
);
}
}
}
}
if
(
relatedNodes
&&
relatedNodes
.
length
>=
30
)
{
if
(
relatedNodes
&&
relatedNodes
.
length
>=
30
)
{
return
message
.
info
(
'最多只能添加30个分类'
)
return
message
.
info
(
'最多只能添加30个分类'
)
;
}
}
}
}
const
dropKey
=
info
.
node
.
key
const
dropKey
=
info
.
node
.
key
;
const
dragKey
=
info
.
dragNode
.
key
const
dragKey
=
info
.
dragNode
.
key
;
const
dropPos
=
info
.
node
.
pos
.
split
(
'-'
)
const
dropPos
=
info
.
node
.
pos
.
split
(
'-'
)
;
const
dropPosition
=
info
.
dropPosition
-
Number
(
dropPos
[
dropPos
.
length
-
1
])
const
dropPosition
=
info
.
dropPosition
-
Number
(
dropPos
[
dropPos
.
length
-
1
])
;
const
loop
=
(
data
,
key
,
callback
)
=>
{
const
loop
=
(
data
,
key
,
callback
)
=>
{
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
].
key
===
key
)
{
if
(
data
[
i
].
key
===
key
)
{
return
callback
(
data
[
i
],
i
,
data
)
return
callback
(
data
[
i
],
i
,
data
)
;
}
}
if
(
data
[
i
].
sonCategoryList
)
{
if
(
data
[
i
].
sonCategoryList
)
{
loop
(
data
[
i
].
sonCategoryList
,
key
,
callback
)
loop
(
data
[
i
].
sonCategoryList
,
key
,
callback
)
;
}
}
}
}
}
}
;
const
data
=
[...
this
.
state
.
treeData
]
const
data
=
[...
this
.
state
.
treeData
]
;
let
getSuf
=
function
(
name
,
originCategoryName
,
sufIndex
)
{
let
getSuf
=
function
(
name
,
originCategoryName
,
sufIndex
)
{
if
(
relatedNodes
&&
relatedNodes
.
length
>
0
)
{
if
(
relatedNodes
&&
relatedNodes
.
length
>
0
)
{
let
sameNameNodes
=
[]
let
sameNameNodes
=
[]
;
relatedNodes
.
forEach
((
item
)
=>
{
relatedNodes
.
forEach
((
item
)
=>
{
if
(
item
.
id
===
info
.
dragNode
.
id
)
return
true
if
(
item
.
id
===
info
.
dragNode
.
id
)
return
true
;
if
(
item
.
categoryName
===
name
)
{
if
(
item
.
categoryName
===
name
)
{
sameNameNodes
.
push
(
item
)
sameNameNodes
.
push
(
item
)
;
}
}
})
})
;
if
(
sameNameNodes
.
length
>
0
)
{
if
(
sameNameNodes
.
length
>
0
)
{
sufIndex
++
sufIndex
++
;
return
getSuf
(
originCategoryName
+
`(
${
sufIndex
}
)`
,
originCategoryName
,
sufIndex
)
return
getSuf
(
originCategoryName
+
`(
${
sufIndex
}
)`
,
originCategoryName
,
sufIndex
)
;
}
}
}
}
return
sufIndex
return
sufIndex
;
}
}
;
let
dragObj
let
dragObj
;
loop
(
data
,
dragKey
,
(
item
,
index
,
arr
)
=>
{
loop
(
data
,
dragKey
,
(
item
,
index
,
arr
)
=>
{
arr
.
splice
(
index
,
1
)
arr
.
splice
(
index
,
1
)
;
item
.
parentId
=
targetParentId
item
.
parentId
=
targetParentId
;
if
(
item
.
originCategoryName
)
{
if
(
item
.
originCategoryName
)
{
item
.
categoryName
=
item
.
originCategoryName
item
.
categoryName
=
item
.
originCategoryName
;
}
else
{
}
else
{
item
.
originCategoryName
=
item
.
categoryName
item
.
originCategoryName
=
item
.
categoryName
;
}
}
info
.
dragNode
.
categoryName
=
item
.
originCategoryName
info
.
dragNode
.
categoryName
=
item
.
originCategoryName
;
let
sufIndex
=
getSuf
(
info
.
dragNode
.
categoryName
,
item
.
originCategoryName
,
0
)
let
sufIndex
=
getSuf
(
info
.
dragNode
.
categoryName
,
item
.
originCategoryName
,
0
)
;
item
.
categoryName
=
item
.
categoryName
+
(
sufIndex
?
`(
${
sufIndex
}
)`
:
''
)
item
.
categoryName
=
item
.
categoryName
+
(
sufIndex
?
`(
${
sufIndex
}
)`
:
''
)
;
item
.
categoryName
=
item
.
originCategoryName
+
(
sufIndex
?
`(
${
sufIndex
}
)`
:
''
)
item
.
categoryName
=
item
.
originCategoryName
+
(
sufIndex
?
`(
${
sufIndex
}
)`
:
''
)
;
dragObj
=
item
dragObj
=
item
;
})
})
;
if
(
!
info
.
dropToGap
)
{
if
(
!
info
.
dropToGap
)
{
loop
(
data
,
dropKey
,
(
item
)
=>
{
loop
(
data
,
dropKey
,
(
item
)
=>
{
item
.
sonCategoryList
=
item
.
sonCategoryList
||
[]
item
.
sonCategoryList
=
item
.
sonCategoryList
||
[]
;
item
.
sonCategoryList
.
unshift
(
dragObj
)
item
.
sonCategoryList
.
unshift
(
dragObj
)
;
})
})
;
}
else
if
((
info
.
node
.
props
.
sonCategoryList
||
[]).
length
>
0
&&
info
.
node
.
props
.
expanded
&&
dropPosition
===
1
)
{
}
else
if
((
info
.
node
.
props
.
sonCategoryList
||
[]).
length
>
0
&&
info
.
node
.
props
.
expanded
&&
dropPosition
===
1
)
{
loop
(
data
,
dropKey
,
(
item
)
=>
{
loop
(
data
,
dropKey
,
(
item
)
=>
{
item
.
sonCategoryList
=
item
.
children
||
[]
item
.
sonCategoryList
=
item
.
children
||
[]
;
item
.
sonCategoryList
.
unshift
(
dragObj
)
item
.
sonCategoryList
.
unshift
(
dragObj
)
;
})
})
;
}
else
{
}
else
{
let
ar
let
ar
;
let
i
let
i
;
loop
(
data
,
dropKey
,
(
item
,
index
,
arr
)
=>
{
loop
(
data
,
dropKey
,
(
item
,
index
,
arr
)
=>
{
ar
=
arr
ar
=
arr
;
i
=
index
i
=
index
;
})
})
;
if
(
dropPosition
===
-
1
)
{
if
(
dropPosition
===
-
1
)
{
ar
.
splice
(
i
,
0
,
dragObj
)
ar
.
splice
(
i
,
0
,
dragObj
)
;
}
else
{
}
else
{
ar
.
splice
(
i
+
1
,
0
,
dragObj
)
ar
.
splice
(
i
+
1
,
0
,
dragObj
)
;
}
}
console
.
log
(
'ar:'
,
ar
);
}
}
data
.
shift
()
data
.
shift
();
let
newTreeData
=
this
.
renderTreeNodes
(
this
.
handleLoop
(
data
,
0
))
let
newTreeData
=
this
.
renderTreeNodes
(
this
.
handleLoop
(
data
,
0
));
this
.
setState
({
treeData
:
newTreeData
})
this
.
setState
({
treeData
:
newTreeData
});
let
firstParentNode
=
{
categoryCount
:
0
,
categoryLevel
:
0
,
categoryName
:
''
,
id
:
0
,
parentId
:
0
,
parentName
:
''
,
rootId
:
0
,
sonCategoryList
:
[...
newTreeData
],
sort
:
0
,
source
:
0
,
tenantId
:
User
.
getStoreId
(),
userId
:
User
.
getStoreUserId
(),
};
let
newTreeMap
=
this
.
getTreeMap
(
newTreeData
,
{});
let
movedCategory
=
_
.
filter
(
newTreeMap
,
(
item
)
=>
item
.
id
===
info
.
dragNode
.
id
)[
0
];
let
parentCategory
=
info
.
dropToGap
?
firstParentNode
:
_
.
filter
(
newTreeMap
,
(
item
)
=>
item
.
id
===
info
.
node
.
id
)[
0
];
let
params
=
{
let
params
=
{
categoryList
:
newTreeData
,
movedCategory
,
parentCategory
,
source
:
0
,
source
:
0
,
tenantId
:
User
.
getStoreId
(),
tenantId
:
User
.
getStoreId
(),
userId
:
User
.
getStoreUserId
()
userId
:
User
.
getStoreUserId
(),
}
};
AidToolService
.
editCategoryTree
(
params
).
then
((
res
)
=>
{
this
.
queryCategoryTree
(
'remain'
)
AidToolService
.
moveCategoryTree
(
params
).
then
((
res
)
=>
{
})
this
.
queryCategoryTree
(
'remain'
);
}
});
};
handleLoop
=
(
data
,
level
)
=>
{
handleLoop
=
(
data
,
level
)
=>
{
data
.
map
((
item
,
index
)
=>
{
data
.
map
((
item
,
index
)
=>
{
item
.
sort
=
index
item
.
sort
=
index
;
item
.
categoryLevel
=
level
item
.
categoryLevel
=
level
;
if
(
item
.
sonCategoryList
)
{
if
(
item
.
sonCategoryList
)
{
item
.
children
=
this
.
handleLoop
(
item
.
sonCategoryList
,
level
+
1
)
item
.
children
=
this
.
handleLoop
(
item
.
sonCategoryList
,
level
+
1
)
;
item
.
sonCategoryList
=
this
.
handleLoop
(
item
.
sonCategoryList
,
level
+
1
)
item
.
sonCategoryList
=
this
.
handleLoop
(
item
.
sonCategoryList
,
level
+
1
)
;
}
}
return
item
return
item
;
})
})
;
return
data
return
data
;
}
}
;
// 树状展开事件
// 树状展开事件
onExpand
=
(
expandedKeys
)
=>
{
onExpand
=
(
expandedKeys
)
=>
{
this
.
setState
({
expandedKeys
})
this
.
setState
({
expandedKeys
})
;
}
}
;
// 树状选中事件
// 树状选中事件
onSelect
=
(
selectedKeys
)
=>
{
onSelect
=
(
selectedKeys
)
=>
{
this
.
setState
({
selectedKeys
})
this
.
setState
({
selectedKeys
})
;
}
}
;
render
()
{
render
()
{
const
{
treeData
,
originTreeData
,
expandedKeys
,
selectedKeys
,
autoExpandParent
,
operateCourseCategoryModal
}
=
this
.
state
const
{
treeData
,
originTreeData
,
expandedKeys
,
selectedKeys
,
autoExpandParent
,
operateCourseCategoryModal
}
=
this
.
state
;
return
(
return
(
<
div
className=
'page course-category-manage'
>
<
div
className=
'page course-category-manage'
>
{
[
'aid'
,
'knowledge'
].
includes
(
getParameterByName
(
'from'
))
?
(
{
[
'aid'
,
'knowledge'
].
includes
(
getParameterByName
(
'from'
))
?
(
...
@@ -534,10 +549,10 @@ class CourseCategoryManage extends Component {
...
@@ -534,10 +549,10 @@ class CourseCategoryManage extends Component {
type=
'primary'
type=
'primary'
onClick=
{
()
=>
{
onClick=
{
()
=>
{
if
(
originTreeData
.
length
>=
29
)
{
if
(
originTreeData
.
length
>=
29
)
{
message
.
info
(
'最多只能添加30个分类'
)
message
.
info
(
'最多只能添加30个分类'
)
;
return
return
;
}
}
this
.
newEditCourseCategory
(
'newEqualLevelCategory'
,
'equal'
,
'new'
)
this
.
newEditCourseCategory
(
'newEqualLevelCategory'
,
'equal'
,
'new'
)
;
}
}
>
}
}
>
新增一级分类
新增一级分类
</
Button
>
</
Button
>
...
@@ -559,8 +574,8 @@ class CourseCategoryManage extends Component {
...
@@ -559,8 +574,8 @@ class CourseCategoryManage extends Component {
</
div
>
</
div
>
{
operateCourseCategoryModal
}
{
operateCourseCategoryModal
}
</
div
>
</
div
>
)
)
;
}
}
}
}
export
default
CourseCategoryManage
export
default
CourseCategoryManage
;
src/modules/teach-tool/components/CourseCategorySiderTree.jsx
View file @
495240cf
/*
/*
* @Author: yuananting
* @Author: yuananting
* @Date: 2021-02-22 10:59:43
* @Date: 2021-02-22 10:59:43
* @LastEditors:
yuananti
ng
* @LastEditors:
fusanqias
ng
* @LastEditTime: 2021-0
4-13 13:55:37
* @LastEditTime: 2021-0
6-15 11:20:48
* @Description: 助学工具-侧边课程分类树
* @Description: 助学工具-侧边课程分类树
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
*/
import
React
,
{
Component
}
from
"react"
;
import
React
,
{
Component
}
from
'react'
;
import
{
Input
,
Button
,
Tree
}
from
"antd"
;
import
{
Input
,
Button
,
Tree
}
from
'antd'
;
import
"./CourseCategorySiderTree.less"
;
import
'./CourseCategorySiderTree.less'
;
import
User
from
"@/common/js/user"
;
import
User
from
'@/common/js/user'
;
import
AidToolService
from
"@/domains/aid-tool-domain/AidToolService"
;
import
AidToolService
from
'@/domains/aid-tool-domain/AidToolService'
;
import
Bus
from
"@/core/bus"
;
import
Bus
from
'@/core/bus'
;
const
{
Search
}
=
Input
;
const
{
Search
}
=
Input
;
const
{
DirectoryTree
}
=
Tree
;
const
{
DirectoryTree
}
=
Tree
;
...
@@ -20,31 +20,25 @@ class CourseCategorySiderTree extends Component {
...
@@ -20,31 +20,25 @@ class CourseCategorySiderTree extends Component {
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
this
.
state
=
{
this
.
state
=
{
selectedKeys
:
[
"QUESTION_INDEX"
,
"PAPER_INDEX"
].
includes
(
props
.
fromModule
)
selectedKeys
:
[
'QUESTION_INDEX'
,
'PAPER_INDEX'
].
includes
(
props
.
fromModule
)
?
[
getParameterByName
(
'categoryId'
)
||
'null'
]
:
[
'null'
],
?
[
getParameterByName
(
"categoryId"
)
||
"null"
]
:
[
"null"
],
treeData
:
props
.
treeData
||
[],
treeData
:
props
.
treeData
||
[],
autoExpandParent
:
false
,
autoExpandParent
:
false
,
};
};
}
}
componentDidMount
()
{
componentDidMount
()
{
this
.
queryCategoryTree
(
"init"
);
this
.
queryCategoryTree
(
'init'
);
Bus
.
bind
(
"queryCategoryTree"
,
this
.
queryCategoryTree
);
Bus
.
bind
(
'queryCategoryTree'
,
this
.
queryCategoryTree
);
}
}
componentWillUnmount
()
{
componentWillUnmount
()
{
Bus
.
unbind
(
"queryCategoryTree"
,
this
.
queryCategoryTree
);
Bus
.
unbind
(
'queryCategoryTree'
,
this
.
queryCategoryTree
);
}
}
// 查询分类树
// 查询分类树
queryCategoryTree
=
(
type
=
"init"
,
categoryName
)
=>
{
queryCategoryTree
=
(
type
=
'init'
,
categoryName
)
=>
{
let
query
=
{
let
query
=
{
bizType
:
[
"QUESTION_INDEX"
,
"QUESTION_MODAL"
].
includes
(
bizType
:
[
'QUESTION_INDEX'
,
'QUESTION_MODAL'
].
includes
(
this
.
props
.
fromModule
)
?
'QUESTION'
:
'PAPER'
,
this
.
props
.
fromModule
)
?
"QUESTION"
:
"PAPER"
,
categoryName
,
categoryName
,
count
:
true
,
count
:
true
,
source
:
0
,
source
:
0
,
...
@@ -53,7 +47,7 @@ class CourseCategorySiderTree extends Component {
...
@@ -53,7 +47,7 @@ class CourseCategorySiderTree extends Component {
};
};
AidToolService
.
queryCategoryTree
(
query
).
then
((
res
)
=>
{
AidToolService
.
queryCategoryTree
(
query
).
then
((
res
)
=>
{
const
{
categoryList
=
[],
noCategoryCnt
=
0
}
=
res
.
result
;
const
{
categoryList
=
[],
noCategoryCnt
=
0
}
=
res
.
result
;
let
str
=
"未分类"
;
let
str
=
'未分类'
;
if
(
categoryName
)
{
if
(
categoryName
)
{
this
.
setState
({
autoExpandParent
:
true
});
this
.
setState
({
autoExpandParent
:
true
});
if
(
str
.
indexOf
(
categoryName
)
<
0
)
{
if
(
str
.
indexOf
(
categoryName
)
<
0
)
{
...
@@ -64,15 +58,15 @@ class CourseCategorySiderTree extends Component {
...
@@ -64,15 +58,15 @@ class CourseCategorySiderTree extends Component {
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
nodeId
.
push
(
item
);
nodeId
.
push
(
item
);
});
});
if
(
type
===
"init"
)
{
if
(
type
===
'init'
)
{
this
.
setState
({
expandedKeys
:
nodeId
});
this
.
setState
({
expandedKeys
:
nodeId
});
}
}
}
else
{
}
else
{
const
defaultNode
=
{
const
defaultNode
=
{
id
:
"null"
,
id
:
'null'
,
categoryName
:
"未分类"
,
categoryName
:
'未分类'
,
categoryCount
:
noCategoryCnt
,
categoryCount
:
noCategoryCnt
,
parentId
:
"0"
,
parentId
:
'0'
,
categoryLevel
:
0
,
categoryLevel
:
0
,
};
};
categoryList
.
unshift
(
defaultNode
);
categoryList
.
unshift
(
defaultNode
);
...
@@ -83,24 +77,24 @@ class CourseCategorySiderTree extends Component {
...
@@ -83,24 +77,24 @@ class CourseCategorySiderTree extends Component {
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
Object
.
keys
(
this
.
state
.
treeMap
).
forEach
((
item
)
=>
{
nodeId
.
push
(
item
);
nodeId
.
push
(
item
);
});
});
if
(
type
===
"init"
)
{
if
(
type
===
'init'
)
{
this
.
setState
({
expandedKeys
:
nodeId
});
this
.
setState
({
expandedKeys
:
nodeId
});
}
}
}
}
}
else
{
}
else
{
this
.
setState
({
autoExpandParent
:
false
});
this
.
setState
({
autoExpandParent
:
false
});
const
defaultNode
=
{
const
defaultNode
=
{
id
:
"null"
,
id
:
'null'
,
categoryName
:
"未分类"
,
categoryName
:
'未分类'
,
categoryCount
:
noCategoryCnt
,
categoryCount
:
noCategoryCnt
,
parentId
:
"0"
,
parentId
:
'0'
,
categoryLevel
:
0
,
categoryLevel
:
0
,
};
};
categoryList
.
unshift
(
defaultNode
);
categoryList
.
unshift
(
defaultNode
);
this
.
setState
({
this
.
setState
({
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
),
treeData
:
this
.
renderTreeNodes
(
categoryList
,
categoryName
),
});
});
if
(
type
===
"init"
)
{
if
(
type
===
'init'
)
{
this
.
setState
({
expandedKeys
:
[]
});
this
.
setState
({
expandedKeys
:
[]
});
}
}
}
}
...
@@ -126,12 +120,12 @@ class CourseCategorySiderTree extends Component {
...
@@ -126,12 +120,12 @@ class CourseCategorySiderTree extends Component {
// 树状选中事件
// 树状选中事件
onSelect
=
(
selectedKeys
)
=>
{
onSelect
=
(
selectedKeys
)
=>
{
this
.
setState
({
selectedKeys
},
()
=>
{
this
.
setState
({
selectedKeys
},
()
=>
{
if
(
this
.
props
.
fromModule
===
"QUESTION_INDEX"
)
{
if
(
this
.
props
.
fromModule
===
'QUESTION_INDEX'
)
{
Bus
.
trigger
(
"queryQuestionPageList"
,
selectedKeys
[
0
]);
Bus
.
trigger
(
'queryQuestionPageList'
,
selectedKeys
[
0
]);
}
else
if
(
this
.
props
.
fromModule
===
"QUESTION_MODAL"
)
{
}
else
if
(
this
.
props
.
fromModule
===
'QUESTION_MODAL'
)
{
Bus
.
trigger
(
"queryQuestionPageListWithContent"
,
selectedKeys
[
0
]);
Bus
.
trigger
(
'queryQuestionPageListWithContent'
,
selectedKeys
[
0
]);
}
else
{
}
else
{
Bus
.
trigger
(
"queryPaperPageList"
,
selectedKeys
[
0
],
0
);
Bus
.
trigger
(
'queryPaperPageList'
,
selectedKeys
[
0
],
0
);
}
}
});
});
};
};
...
@@ -144,39 +138,35 @@ class CourseCategorySiderTree extends Component {
...
@@ -144,39 +138,35 @@ class CourseCategorySiderTree extends Component {
item
.
title
=
item
.
title
=
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
(
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
(
<
span
>
<
span
>
{
item
.
categoryName
}
(
{
item
.
categoryCount
}
)
{
item
.
categoryName
}
{
item
.
categoryCount
>
0
&&
<
span
>
(
{
item
.
categoryCount
}
)
</
span
>
}
</
span
>
</
span
>
)
:
(
)
:
(
<
span
style=
{
{
opacity
:
0.5
}
}
>
<
span
style=
{
{
opacity
:
0.5
}
}
>
{
item
.
categoryName
}
(
{
item
.
categoryCount
}
)
{
item
.
categoryName
}
{
item
.
categoryCount
>
0
&&
<
span
>
(
{
item
.
categoryCount
}
)
</
span
>
}
</
span
>
</
span
>
);
);
item
.
icon
=
item
.
icon
=
item
.
categoryName
===
"未分类"
?
(
item
.
categoryName
===
'未分类'
?
(
<
img
<
img
style=
{
{
style=
{
{
width
:
"24px"
,
width
:
'24px'
,
height
:
"24px"
,
height
:
'24px'
,
opacity
:
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
src=
"https://image.xiaomaiketang.com/xm/defaultCategory.png"
src=
'https://image.xiaomaiketang.com/xm/defaultCategory.png'
alt=
""
alt=
''
/>
/>
)
:
(
)
:
(
<
img
<
img
style=
{
{
style=
{
{
width
:
"24px"
,
width
:
'24px'
,
height
:
"24px"
,
height
:
'24px'
,
opacity
:
opacity
:
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
!
value
||
(
value
&&
item
.
categoryName
.
indexOf
(
value
)
>
-
1
)
?
1
:
0.5
,
}
}
}
}
src=
"https://image.xiaomaiketang.com/xm/hasCategory.png"
src=
'https://image.xiaomaiketang.com/xm/hasCategory.png'
alt=
""
alt=
''
/>
/>
);
);
if
(
item
.
sonCategoryList
)
{
if
(
item
.
sonCategoryList
)
{
...
@@ -190,46 +180,34 @@ class CourseCategorySiderTree extends Component {
...
@@ -190,46 +180,34 @@ class CourseCategorySiderTree extends Component {
};
};
render
()
{
render
()
{
const
{
const
{
treeData
,
expandedKeys
,
selectedKeys
,
autoExpandParent
}
=
this
.
state
;
treeData
,
expandedKeys
,
selectedKeys
,
autoExpandParent
,
}
=
this
.
state
;
return
(
return
(
<
div
className=
"category-tree-sider"
>
<
div
className=
'category-tree-sider'
>
{
[
"QUESTION_INDEX"
,
"PAPER_INDEX"
].
includes
(
this
.
props
.
fromModule
)
&&
(
{
[
'QUESTION_INDEX'
,
'PAPER_INDEX'
].
includes
(
this
.
props
.
fromModule
)
&&
(
<
div
className=
"sider-title"
>
<
div
className=
'sider-title'
>
{
this
.
props
.
fromModule
===
'QUESTION_INDEX'
?
'题目分类'
:
'试卷分类'
}
</
div
>
{
this
.
props
.
fromModule
===
"QUESTION_INDEX"
?
"题目分类"
:
"试卷分类"
}
</
div
>
)
}
)
}
<
Search
<
Search
className=
"sider-search"
className=
'sider-search'
placeholder=
"搜索名称分类"
placeholder=
'搜索名称分类'
onSearch=
{
(
value
)
=>
{
onSearch=
{
(
value
)
=>
{
this
.
queryCategoryTree
(
"init"
,
value
);
this
.
queryCategoryTree
(
'init'
,
value
);
}
}
}
}
enterButton=
{
<
span
className=
"icon iconfont"
>

</
span
>
}
enterButton=
{
<
span
className=
'icon iconfont'
>

</
span
>
}
/>
/>
{
[
"QUESTION_INDEX"
,
"PAPER_INDEX"
].
includes
(
this
.
props
.
fromModule
)
&&
{
[
'QUESTION_INDEX'
,
'PAPER_INDEX'
].
includes
(
this
.
props
.
fromModule
)
&&
User
.
getUserRole
()
!==
'CloudLecturer'
&&
this
.
props
.
type
!==
'modal-select'
&&
(
User
.
getUserRole
()
!==
"CloudLecturer"
&&
<
div
className=
'sider-btn'
>
this
.
props
.
type
!==
"modal-select"
&&
(
<
Button
<
div
className=
"sider-btn"
>
onClick=
{
()
=>
{
<
Button
window
.
RCHistory
.
push
({
onClick=
{
()
=>
{
pathname
:
'/course-category-manage?from=aid'
,
window
.
RCHistory
.
push
({
});
pathname
:
"/course-category-manage?from=aid"
,
}
}
>
});
分类管理
}
}
</
Button
>
>
</
div
>
分类管理
)
}
</
Button
>
<
div
className=
'sider-tree'
>
</
div
>
)
}
<
div
className=
"sider-tree"
>
<
DirectoryTree
<
DirectoryTree
expandedKeys=
{
expandedKeys
}
expandedKeys=
{
expandedKeys
}
autoExpandParent=
{
autoExpandParent
}
autoExpandParent=
{
autoExpandParent
}
...
...
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