Commit 59f967da by zangsuyun

feat:知识库导出

parent 0ee2f02b
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zangsuyun * @Author: zangsuyun
* @Date: 2021-03-19 18:09:35 * @Date: 2021-03-19 18:09:35
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-27 15:42:54 * @LastEditTime: 2021-03-30 09:51:00
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
import Service from "@/common/js/service"; import Service from "@/common/js/service";
...@@ -69,8 +69,22 @@ class KnowledgeAPI { ...@@ -69,8 +69,22 @@ class KnowledgeAPI {
queryPageKnowledgeFolderWatchInfo = (params: object) => { queryPageKnowledgeFolderWatchInfo = (params: object) => {
return Service.Hades("public/hades/queryPageKnowledgeFolderWatchInfo", params); return Service.Hades("public/hades/queryPageKnowledgeFolderWatchInfo", params);
} }
// 资料观看记录导出
exportFolderLearnSync = (params: object) => {
return Service.Hades("public/knowledge/exportFolderLearnSync", params);
}
// 直播观看记录导出
exportLiveLearnSync = (params: object) => {
return Service.Hades("public/knowledge/exportLiveLearnSync", params);
}
//图文课观看记录导出
exportPicLearnSync = (params: object) => {
return Service.Hades("public/knowledge/exportPicLearnSync", params);
}
// 视频课观看记录导出
exportVideoLearnSync = (params: object) => {
return Service.Hades("public/knowledge/exportVideoLearnSync", params);
}
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zangsuyun * @Author: zangsuyun
* @Date: 2021-03-19 18:05:23 * @Date: 2021-03-19 18:05:23
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-29 10:01:15 * @LastEditTime: 2021-03-29 16:33:46
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -11,7 +11,7 @@ import React, { Component } from "react"; ...@@ -11,7 +11,7 @@ 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 KnowledgeAPL from "@/data-source/knowledge/request-api"; import KnowledgeAPI from "@/data-source/knowledge/request-api";
const { Search } = Input; const { Search } = Input;
const { DirectoryTree } = Tree; const { DirectoryTree } = Tree;
...@@ -72,18 +72,10 @@ class Classification extends Component { ...@@ -72,18 +72,10 @@ class Classification extends Component {
// 查询分类树 // 查询分类树
queryCategoryTree = (categoryName) => { queryCategoryTree = (categoryName) => {
let query = { let query = {
// source: 0,
// categoryName,
storeId: User.getStoreId(), storeId: User.getStoreId(),
withCount: true, withCount: true,
}; };
// let query = { KnowledgeAPI.getCategoryTree(query).then((res) => {
// source: 0,
// categoryName,
// userId: User.getStoreUserId(),
// tenantId: User.getStoreId(),
// };
KnowledgeAPL.getCategoryTree(query).then((res) => {
const { categoryList = [], noCategoryCnt = 0 } = res.result; const { categoryList = [], noCategoryCnt = 0 } = res.result;
let str = "未分类"; let str = "未分类";
if (categoryName) { if (categoryName) {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zangsuyun * @Author: zangsuyun
* @Date: 2021-03-15 16:51:40 * @Date: 2021-03-15 16:51:40
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-25 11:17:15 * @LastEditTime: 2021-03-30 10:33:10
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -177,8 +177,8 @@ class CourseData extends React.Component { ...@@ -177,8 +177,8 @@ class CourseData extends React.Component {
handleExportV5 = () => { handleExportV5 = () => {
const { id, storeId } = this.state; const { id, storeId } = this.state;
CourseService.exportStudentCourseData({ KnowledgeAPI.exportLiveLearnSync({
id: id, knowledgeId: id,
exportLiveType: "VISITOR", exportLiveType: "VISITOR",
storeId, storeId,
}).then((res) => { }).then((res) => {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zangsuyun * @Author: zangsuyun
* @Date: 2021-03-12 14:49:40 * @Date: 2021-03-12 14:49:40
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-25 17:54:33 * @LastEditTime: 2021-03-30 10:45:21
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -284,7 +284,6 @@ class KnowledgeBaseList extends React.Component { ...@@ -284,7 +284,6 @@ class KnowledgeBaseList extends React.Component {
title: "创建人", title: "创建人",
key: "createName", key: "createName",
dataIndex: "createName", dataIndex: "createName",
// width: 100,
render: (val) => { render: (val) => {
return ( return (
<div> <div>
...@@ -298,8 +297,7 @@ class KnowledgeBaseList extends React.Component { ...@@ -298,8 +297,7 @@ class KnowledgeBaseList extends React.Component {
}, },
}, },
{ {
title: "观看数据", title: "观看用户数",
// width: 100,
key: "watchUserCount", key: "watchUserCount",
dataIndex: "watchUserCount", dataIndex: "watchUserCount",
render: (val, item) => { render: (val, item) => {
......
...@@ -14,7 +14,7 @@ import SelectPrepareFileModal from "@/modules/prepare-lesson/modal/SelectPrepare ...@@ -14,7 +14,7 @@ import SelectPrepareFileModal from "@/modules/prepare-lesson/modal/SelectPrepare
import { DownOutlined } from "@ant-design/icons"; import { DownOutlined } from "@ant-design/icons";
import AddCourse from "../modal/AddCourse"; import AddCourse from "../modal/AddCourse";
import User from "@/common/js/user"; import User from "@/common/js/user";
import KnowledgeAPL from "@/data-source/knowledge/request-api"; import KnowledgeAPI from "@/data-source/knowledge/request-api";
export default function KnowledgeBaseOpt({ export default function KnowledgeBaseOpt({
categoryId, categoryId,
...@@ -56,7 +56,7 @@ export default function KnowledgeBaseOpt({ ...@@ -56,7 +56,7 @@ export default function KnowledgeBaseOpt({
createId: User.getUserId(), createId: User.getUserId(),
type: "FOLDER", type: "FOLDER",
}; };
KnowledgeAPL.addKnowledge(params).then(({ success }) => { KnowledgeAPI.addKnowledge(params).then(({ success }) => {
if (success) { if (success) {
message.success("新增成功"); message.success("新增成功");
onChange(); onChange();
......
...@@ -4,7 +4,7 @@ import { Table, Button, Modal, message } from 'antd'; ...@@ -4,7 +4,7 @@ import { Table, Button, Modal, message } from 'antd';
import dealTimeDuration from "../../course-manage/utils/dealTimeDuration"; import dealTimeDuration from "../../course-manage/utils/dealTimeDuration";
import { PageControl } from "@/components"; import { PageControl } from "@/components";
// import './DataList.less'; // import './DataList.less';
import KnowledgeAPL from "@/data-source/knowledge/request-api"; import KnowledgeAPI from "@/data-source/knowledge/request-api";
import User from '@/common/js/user'; import User from '@/common/js/user';
const liveTypeMap = { const liveTypeMap = {
...@@ -16,14 +16,14 @@ const liveTypeMap = { ...@@ -16,14 +16,14 @@ const liveTypeMap = {
class PlaybackData extends React.Component { class PlaybackData extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
const courseId = getParameterByName("id"); // 课程ID const id = getParameterByName("id"); // 课程ID
this.state = { this.state = {
playbackData: [], playbackData: [],
current: 1, current: 1,
size: 10, size: 10,
total: 0, total: 0,
id: courseId, id: id,
storeId: User.getStoreId() storeId: User.getStoreId()
} }
} }
...@@ -40,7 +40,7 @@ class PlaybackData extends React.Component { ...@@ -40,7 +40,7 @@ class PlaybackData extends React.Component {
size size
} }
KnowledgeAPL.queryPageKnowledgeReplayRecordPage(params).then((res) => { KnowledgeAPI.queryPageKnowledgeReplayRecordPage(params).then((res) => {
if (res.result) { if (res.result) {
const { records = [], current, size, total } = res.result; const { records = [], current, size, total } = res.result;
this.setState({ this.setState({
...@@ -88,10 +88,10 @@ class PlaybackData extends React.Component { ...@@ -88,10 +88,10 @@ class PlaybackData extends React.Component {
} }
// 导出 // 导出
handleplaybackExport() { handleplaybackExport() {
const { storeId, liveCourseId } = this.state; const { storeId, id } = this.state;
CourseService.exportPlayBackCourseData({ KnowledgeAPI.exportLiveLearnSync({
liveCourseId, knowledgeId: id,
exportLiveType: "PLAY_BACK", exportLiveType: "PLAY_BACK",
storeId storeId
}).then((res) => { }).then((res) => {
......
...@@ -56,7 +56,7 @@ class WatchData extends React.Component { ...@@ -56,7 +56,7 @@ class WatchData extends React.Component {
)} )}
{type !== "LIVE" && ( {type !== "LIVE" && (
<WatchDataModal type="videoCourseList" data={id} type={type}/> <WatchDataModal type="videoCourseList" id={id} type={type}/>
)} )}
</div> </div>
</div> </div>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zangsuyun * @Author: zangsuyun
* @Date: 2021-03-16 10:18:31 * @Date: 2021-03-16 10:18:31
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-27 15:50:18 * @LastEditTime: 2021-03-30 10:17:59
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -37,7 +37,7 @@ class WatchDataModal extends React.Component { ...@@ -37,7 +37,7 @@ class WatchDataModal extends React.Component {
// 获取观看视频数据列表 // 获取观看视频数据列表
handleFetchDataList = () => { handleFetchDataList = () => {
const { query, size, totalCount } = this.state; const { query, size, totalCount } = this.state;
const id = this.props.data; const { id, type } = this.props;
const params = { const params = {
...query, ...query,
...@@ -45,7 +45,6 @@ class WatchDataModal extends React.Component { ...@@ -45,7 +45,6 @@ class WatchDataModal extends React.Component {
id, id,
storeId: User.getStoreId(), storeId: User.getStoreId(),
}; };
const { type } = this.props;
type === "FOLDER" type === "FOLDER"
? KnowledgeAPI.queryPageKnowledgeFolderWatchInfo(params).then((res) => { ? KnowledgeAPI.queryPageKnowledgeFolderWatchInfo(params).then((res) => {
const { result = {} } = res; const { result = {} } = res;
...@@ -149,23 +148,45 @@ class WatchDataModal extends React.Component { ...@@ -149,23 +148,45 @@ class WatchDataModal extends React.Component {
}; };
handleExportV5 = () => { handleExportV5 = () => {
// const { liveCourseId, storeId } = this.state; const { query } = this.state;
const { id, type } = this.props;
// CourseService.exportStudentCourseData({
// liveCourseId: liveCourseId,
// exportLiveType: "VISITOR",
// storeId,
// }).then((res) => {
// const link = res.result;
// this.setState({
// link
// });
// document.getElementById("loadExcel").click();
// if (res.success) { const params = {
message.success("导出成功!"); ...query,
// } knowledgeId: id,
// }); storeId: User.getStoreId(),
};
switch (type) {
case "FOLDER":
KnowledgeAPI.exportFolderLearnSync(params).then((res) => {
if (res.result) {
window.open(res.result);
} else {
message.error("导出失败");
}
});
break;
case "VOICE":
KnowledgeAPI.exportVideoLearnSync(params).then((res) => {
if (res.result) {
window.open(res.result);
} else {
message.error("导出失败");
}
});
break;
case "PICTURE":
KnowledgeAPI.exportPicLearnSync(params).then((res) => {
if (res.result) {
window.open(res.result);
} else {
message.error("导出失败");
}
});
break;
default:
break;
}
}; };
render() { render() {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* @Author: zangsuyun * @Author: zangsuyun
* @Date: 2021-03-13 09:54:26 * @Date: 2021-03-13 09:54:26
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-24 11:53:09 * @LastEditTime: 2021-03-30 10:29:01
* @Copyright: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyright: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -19,6 +19,7 @@ import { ...@@ -19,6 +19,7 @@ import {
Input, Input,
Tabs, Tabs,
Tooltip, Tooltip,
TreeSelect,
} from "antd"; } from "antd";
import { PageControl } from "@/components"; import { PageControl } from "@/components";
import TableSelectedData from "@/components/TableSelectedData"; import TableSelectedData from "@/components/TableSelectedData";
...@@ -91,14 +92,49 @@ class AddCourse extends React.Component { ...@@ -91,14 +92,49 @@ class AddCourse extends React.Component {
}, },
pictureTotalCount: 0, pictureTotalCount: 0,
selectPicture: [], //弹窗内已选择的图文课程 selectPicture: [], //弹窗内已选择的图文课程
categoryList: [],
}; };
} }
componentDidMount() { componentDidMount() {
this.handleFetchLiveList(); this.handleFetchLiveList();
this.handleFetchVideoList(); this.handleFetchVideoList();
this.handleFetchPictureList(); this.handleFetchPictureList();
this.queryCategoryTree();
} }
// 查询分类树
queryCategoryTree = (categoryName) => {
let query = {
storeId: User.getStoreId(),
withCount: false,
};
KnowledgeAPI.getCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result;
this.setState({
categoryList: this.renderTreeNodes(categoryList),
});
});
};
renderTreeNodes = (data) => {
let newTreeData = data.map((item) => {
item.title = (
<span>
<span className="icon iconfont" style={{ color: "#FBD140" }}>
&#xe7f1;&nbsp;
</span>
{ item.categoryName}
</span>
);
item.key = item.id;
if (item.sonCategoryList) {
item.children = this.renderTreeNodes(item.sonCategoryList);
}
return item;
});
return newTreeData;
};
// 获取直播课列表 // 获取直播课列表
handleFetchLiveList = () => { handleFetchLiveList = () => {
const { liveQuery, liveSize } = this.state; const { liveQuery, liveSize } = this.state;
...@@ -592,6 +628,7 @@ class AddCourse extends React.Component { ...@@ -592,6 +628,7 @@ class AddCourse extends React.Component {
pictureQuery, pictureQuery,
pictureTotalCount, pictureTotalCount,
selectPicture, selectPicture,
categoryList,
} = this.state; } = this.state;
const LiveSelection = { const LiveSelection = {
...@@ -688,28 +725,16 @@ class AddCourse extends React.Component { ...@@ -688,28 +725,16 @@ class AddCourse extends React.Component {
</div> </div>
<div style={{ width: "50%" }}> <div style={{ width: "50%" }}>
<span className="shelf-status">课程分类:</span> <span className="shelf-status">课程分类:</span>
<Select <TreeSelect
// value={courseType}
style={{ width: "calc(100% - 75px)" }} style={{ width: "calc(100% - 75px)" }}
dropdownStyle={{ maxHeight: 400, overflow: "auto" }}
treeData={categoryList}
placeholder="请选择课程类型" placeholder="请选择课程类型"
allowClear={true} allowClear
onChange={(value) => { onChange={(value) => {
setCourseType(value); this.handleChangVideoFilter("categoryId", value);
}} }}
suffixIcon={ />
<span
className="icon iconfont"
style={{ fontSize: "12px", color: "#BFBFBF" }}
>
&#xe835;
</span>
}
>
<Option value="LIVE">直播课</Option>
<Option value="VOICE">视频课</Option>
<Option value="PICTURE">图文课</Option>
<Option value="knowledge">学习资料</Option>
</Select>
</div> </div>
</Row> </Row>
</div> </div>
...@@ -786,28 +811,16 @@ class AddCourse extends React.Component { ...@@ -786,28 +811,16 @@ class AddCourse extends React.Component {
</div> </div>
<div style={{ width: "50%" }}> <div style={{ width: "50%" }}>
<span className="shelf-status">课程分类:</span> <span className="shelf-status">课程分类:</span>
<Select <TreeSelect
// value={courseType}
style={{ width: "calc(100% - 75px)" }} style={{ width: "calc(100% - 75px)" }}
dropdownStyle={{ maxHeight: 400, overflow: "auto" }}
treeData={categoryList}
placeholder="请选择课程类型" placeholder="请选择课程类型"
allowClear={true} allowClear
onChange={(value) => { onChange={(value) => {
setCourseType(value); this.handleChangLiveFilter("categoryId", value);
}} }}
suffixIcon={ />
<span
className="icon iconfont"
style={{ fontSize: "12px", color: "#BFBFBF" }}
>
&#xe835;
</span>
}
>
<Option value="LIVE">直播课</Option>
<Option value="VOICE">视频课</Option>
<Option value="PICTURE">图文课</Option>
<Option value="knowledge">学习资料</Option>
</Select>
</div> </div>
</Row> </Row>
</div> </div>
...@@ -864,15 +877,8 @@ class AddCourse extends React.Component { ...@@ -864,15 +877,8 @@ class AddCourse extends React.Component {
<div> <div>
<span style={{ lineHeight: "32px" }}>课程名称:</span> <span style={{ lineHeight: "32px" }}>课程名称:</span>
<Search <Search
// value={courseName}
style={{ width: "calc(100% - 75px)" }} style={{ width: "calc(100% - 75px)" }}
placeholder="搜索课程名称" placeholder="搜索课程名称"
// onChange={(e) => {
// this.handleChangLiveFilter(
// "courseName",
// e.target.value
// );
// }}
onSearch={(value) => { onSearch={(value) => {
this.handleChangPictureFilter("courseName", value); this.handleChangPictureFilter("courseName", value);
}} }}
...@@ -883,28 +889,16 @@ class AddCourse extends React.Component { ...@@ -883,28 +889,16 @@ class AddCourse extends React.Component {
</div> </div>
<div style={{ width: "50%" }}> <div style={{ width: "50%" }}>
<span className="shelf-status">课程分类:</span> <span className="shelf-status">课程分类:</span>
<Select <TreeSelect
// value={courseType}
style={{ width: "calc(100% - 75px)" }} style={{ width: "calc(100% - 75px)" }}
dropdownStyle={{ maxHeight: 400, overflow: "auto" }}
treeData={categoryList}
placeholder="请选择课程类型" placeholder="请选择课程类型"
allowClear={true} allowClear
onChange={(value) => { onChange={(value) => {
setCourseType(value); this.handleChangPictureFilter("categoryId", value);
}} }}
suffixIcon={ />
<span
className="icon iconfont"
style={{ fontSize: "12px", color: "#BFBFBF" }}
>
&#xe835;
</span>
}
>
<Option value="LIVE">直播课</Option>
<Option value="VOICE">视频课</Option>
<Option value="PICTURE">图文课</Option>
<Option value="knowledge">学习资料</Option>
</Select>
</div> </div>
</Row> </Row>
</div> </div>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-02-23 18:28:50 * @Date: 2021-02-23 18:28:50
* @LastEditors: zangsuyun * @LastEditors: zangsuyun
* @LastEditTime: 2021-03-29 10:10:49 * @LastEditTime: 2021-03-29 16:14:02
* @Description: 助学工具-题库-主页面分类管理 * @Description: 助学工具-题库-主页面分类管理
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -585,9 +585,9 @@ class QuestionCategoryManage extends Component { ...@@ -585,9 +585,9 @@ class QuestionCategoryManage extends Component {
{getParameterByName("from") ? ( {getParameterByName("from") ? (
<Breadcrumbs <Breadcrumbs
navList="课程分类" navList="课程分类"
goBack={() => // goBack={() =>
window.history.back(-1) // window.RCHistory.goBack()
} // }
/> />
) : ( ) : (
<div className="content-header">课程分类</div> <div className="content-header">课程分类</div>
......
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