Commit 8f54e0eb by chenshu

feat:初始化

parent 985b02a5
......@@ -12,6 +12,7 @@ import { Input, Button, Tree } from "antd";
import "./Classification.less";
import User from "@/common/js/user";
import KnowledgeAPI from "@/data-source/knowledge/request-api";
import Bus from "@/core/bus";
const { Search } = Input;
const { DirectoryTree } = Tree;
......@@ -31,6 +32,11 @@ class Classification extends Component {
componentDidMount() {
this.queryCategoryTree();
Bus.bind('knowledgeCategoryTree', this.queryCategoryTree)
}
componentWillUnmount() {
Bus.unbind('knowledgeCategoryTree', this.queryCategoryTree)
}
shouldComponentUpdate = (nextProps, nextState) => {
......
......@@ -127,7 +127,6 @@ class KnowledgeBaseList extends React.Component {
// 预览文件
handleScanFile = (folder) => {
console.log(folder);
const { folderFormat, folderSize, ossUrl } = folder;
switch (folderFormat) {
case "PDF":
......@@ -452,7 +451,6 @@ class KnowledgeBaseList extends React.Component {
width: 160,
fixed: "right",
render: (val, record, index) => {
console.log(this.props.categoryId);
return this.props.categoryId === "0" ? (
<div className="operate">
<div
......@@ -521,7 +519,6 @@ class KnowledgeBaseList extends React.Component {
// 前往上课数据页面
handleLinkToClassData = (item) => {
const { match } = this.props;
console.log(item);
localStorage.setItem("WatchData_CourseName", item.name);
window.RCHistory.push({
// pathname: `${match.url}/course-data?type=${item.courseType}&id=${item.liveCourseId}`,
......@@ -553,12 +550,17 @@ class KnowledgeBaseList extends React.Component {
};
render() {
const { dataSource = [], totalCount, query, match } = this.props;
const { dataSource = [], totalCount, query, match, selectedRowKeys, onSelectChange } = this.props;
const { current, size } = query;
const rowSelection = {
selectedRowKeys,
onChange: onSelectChange,
}
return (
<div className="knowledge-base-list">
<Table
rowKey={(record) => record.id}
rowSelection={rowSelection}
size="middle"
dataSource={dataSource}
columns={this.parseColumns()}
......
......@@ -9,19 +9,27 @@
import React, { useState, useEffect } from "react";
import { Button, Menu, Dropdown,message } 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";
import MoveModal from '../../teach-tool/modal/MoveModal';
import Bus from "@/core/bus";
import './KnowledgeBaseOpt.less';
export default function KnowledgeBaseOpt({
categoryId,
selectedRowKeys,
updateCategoryTree,
onChange,
onChangeKeys,
}) {
const [modal, setModal] = useState(null);
const [openMoveModal, setOpenMoveModal] = useState(false);
const [data, setData] = useState([]);
const menu = (
<Menu>
......@@ -34,6 +42,36 @@ export default function KnowledgeBaseOpt({
</Menu>
);
useEffect(() => {
queryCategoryTree();
}, []);
// 查询分类树
function queryCategoryTree() {
let query = {
storeId: User.getStoreId(),
withCount: true,
};
KnowledgeAPI.getCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result;
let list = renderTreeNodes(categoryList);
setData(list);
});
}
function renderTreeNodes(data) {
let newTreeData = data.map((item) => {
item.title = item.categoryName;
item.value = item.id;
item.key = item.id;
if (item.sonCategoryList) {
item.children = renderTreeNodes(item.sonCategoryList);
}
return item;
});
return newTreeData;
};
function handAddCourse() {
let modal = (
<AddCourse
......@@ -86,16 +124,126 @@ export default function KnowledgeBaseOpt({
setModal(modal);
}
return (
<div className="video-course-opt">
<Dropdown overlay={menu}>
<Button type="primary" className="mr12">
添加知识
<DownOutlined />
</Button>
</Dropdown>
function batchMove() {
if (_.isEmpty(selectedRowKeys)) {
message.warning('请先选择要移动的知识');
return null;
}
setOpenMoveModal(true);
}
function batchMoveRemote(categoryId) {
const data = {
categoryId,
ids: selectedRowKeys,
storeId: User.getStoreId(),
};
Service.Hades('public/hades/batchMoveKnowledgeCategory', data).then((res) => {
if (res.success) {
message.success('移动成功');
onChange();
Bus.trigger('knowledgeCategoryTree');
clearSelect();
} else {
message.error('移动失败');
}
}).catch(() => {
message.error('移动失败');
})
}
function batchDelete() {
if (_.isEmpty(selectedRowKeys)) {
message.warning('请先选择要删除的知识');
return null;
}
Modal.confirm({
title: "确定要删除知识吗?",
content: "删除后,不可恢复。",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe839; </span>
),
okText: "删除",
cancelText: "取消",
onOk: () => {
const data = {
ids: selectedRowKeys,
storeId: User.getStoreId(),
};
Service.Hades('public/hades/batchDelKnowledge', data).then((res) => {
if (res.success) {
message.success('删除成功');
onChange();
Bus.trigger('knowledgeCategoryTree');
clearSelect();
} else {
message.error('删除失败');
}
}).catch(() => {
message.error('删除失败');
})
},
})
}
function onSelectPaper(keys) {
if (keys.length > 50) {
message.warning('最多只能选择50个知识');
return null;
}
onChangeKeys(keys);
};
function clearSelect() {
onChangeKeys([]);
}
return (
<div className="knowledge-course-opt">
{_.isEmpty(selectedRowKeys) ?
<Dropdown overlay={menu}>
<Button type="primary" className="mr8">
添加知识
<DownOutlined />
</Button>
</Dropdown>
: <div className="select-container">
<span className="con">
<div>
<span className="icon iconfont tip">&#xe6f2;</span>
<span className="text">已选择{selectedRowKeys.length}</span>
</div>
<div>
<span className="clear" onClick={clearSelect}>清空</span>
</div>
</span>
</div>
}
<Button
className="mr8"
onClick={() => {
batchMove();
}}
>批量移动</Button>
<Button
onClick={() => {
batchDelete();
}}
>批量删除</Button>
{modal}
{openMoveModal &&
<MoveModal
visible={openMoveModal}
title="知识"
data={data}
length={selectedRowKeys.length}
onCancel={() => setOpenMoveModal(false)}
onOk={(categoryId) => {
batchMoveRemote(categoryId);
setOpenMoveModal(false);
}}
/>
}
</div>
);
}
.knowledge-course-opt {
display: flex;
.select-container{
margin-right: 24px;
.con{
background: #FFF4DD;
border-radius: 4px;
padding: 3px 16px;
display: inline-flex;
align-items: center;
justify-content: space-between;
.tip{
font-size:14px;
color:#FF9D14;
margin-right:8px;
}
.text{
font-size:14px;
color:#666;
margin-right:30px;
}
.clear{
color:#5289FA;
font-size:14px;
}
}
}
}
\ No newline at end of file
......@@ -7,7 +7,7 @@
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React from "react";
import { message } from 'antd'
import KnowledgeBaseFilter from "./components/KnowledgeBaseFilter";
import KnowledgeBaseOpt from "./components/KnowledgeBaseOpt";
import KnowledgeBaseList from "./components/KnowledgeBaseList";
......@@ -30,6 +30,7 @@ export default class KnowledgeBase extends React.Component {
totalCount: 0, // 知识库数据总条数
categoryId: '0',
updateCategoryFlag: false,
selectedRowKeys: [],
};
}
......@@ -72,6 +73,15 @@ export default class KnowledgeBase extends React.Component {
});
};
onSelectChange = (selectedRowKeys) => {
if (selectedRowKeys.length > 50) {
message.warning('最多只能选择50个题目');
return null;
}
console.log(selectedRowKeys, 888888)
this.setState({ selectedRowKeys });
};
render() {
const {
dataSource,
......@@ -79,6 +89,7 @@ export default class KnowledgeBase extends React.Component {
query,
categoryId,
updateCategoryFlag,
selectedRowKeys,
} = this.state;
return (
<div className="page">
......@@ -105,11 +116,15 @@ export default class KnowledgeBase extends React.Component {
onChange={this.handleFetchScheduleList}
updateCategoryTree={this.updateCategoryTree}
categoryId={categoryId}
selectedRowKeys={selectedRowKeys}
onChangeKeys={(keys) => this.setState({ selectedRowKeys: keys })}
/>}
{/* 知识库列表模块 */}
<KnowledgeBaseList
query={query}
selectedRowKeys={selectedRowKeys}
onSelectChange={this.onSelectChange}
categoryId={categoryId}
dataSource={dataSource}
totalCount={totalCount}
......
.paper-list {
.select-box {
display: flex;
align-items: center;
.select-container{
margin-right: 24px;
.con{
background: #FFF4DD;
border-radius: 4px;
padding: 3px 16px;
display: inline-flex;
align-items: center;
justify-content: space-between;
.tip{
font-size:14px;
color:#FF9D14;
margin-right:8px;
}
.text{
font-size:14px;
color:#666;
margin-right:30px;
}
.clear{
color:#5289FA;
font-size:14px;
}
}
}
}
.ant-radio-wrapper{
left: -10px;
}
......
......@@ -524,7 +524,9 @@ class QuestionList extends Component {
Service.Hades('public/hades/batchMoveQuestion', data).then((res) => {
if (res.success) {
message.success('移动成功');
Bus.trigger('queryCategoryTree', 'init');
this.queryQuestionPageList();
this.clearSelect();
} else {
message.error('移动失败');
}
......@@ -557,7 +559,9 @@ class QuestionList extends Component {
Service.Hades('public/hades/batchDeleteQuestion', data).then((res) => {
if (res.success) {
message.success('删除成功');
Bus.trigger('queryCategoryTree', 'init');
this.queryQuestionPageList();
this.clearSelect();
} else {
message.error('删除失败');
}
......
......@@ -39,26 +39,26 @@
}
.select-container{
.con{
.con {
background: #FFF4DD;
border-radius: 4px;
padding:6px 16px;
padding: 3px 16px;
display: inline-flex;
align-items: center;
justify-content: space-between;
.tip{
font-size:14px;
color:#FF9D14;
margin-right:8px;
.tip {
font-size: 14px;
color: #FF9D14;
margin-right: 8px;
}
.text{
font-size:14px;
color:#666;
margin-right:30px;
.text {
font-size: 14px;
color: #666;
margin-right: 30px;
}
.clear{
color:#5289FA;
font-size:14px;
.clear {
color: #5289FA;
font-size: 14px;
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment