Commit 6a844944 by yuananting

feat:接口联调

parent 4898b7f5
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-03-03 15:13:12
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 18:14:09
* @LastEditTime: 2021-04-01 15:36:48
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -51,4 +51,24 @@ export function editQuestion(params: object) {
export function batchImport(params: object) {
return Service.Hades("public/hades/batchImport", params);
}
export function createPaper(params: object) {
return Service.Hades("public/hades/createPaper", params);
}
export function queryPaperPageList(params: object) {
return Service.Hades("public/hades/queryPaperPageList", params);
}
export function deletePaper(params: object) {
return Service.Hades("public/hades/deletePaper", params);
}
export function queryPaperDetail(params: object) {
return Service.Hades("public/hades/queryPaperDetail", params);
}
export function viewPaper(params: object) {
return Service.Hades("public/hades/viewPaper", params);
}
\ No newline at end of file
......@@ -2,12 +2,12 @@
* @Author: yuananting
* @Date: 2021-03-11 11:34:37
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 18:14:42
* @Description: 描述一下咯
* @LastEditTime: 2021-04-01 20:09:12
* @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import { queryCategoryTree, addCategory, delCategory, editCategory, editCategoryTree, addQuestion, queryQuestionPageList, deleteQuestion, queryQuestionDetails, editQuestion, batchImport } from '@/data-source/questionBank/request-apis';
export default class QuestionBankService {
import { queryCategoryTree, addCategory, delCategory, editCategory, editCategoryTree, addQuestion, queryQuestionPageList, deleteQuestion, queryQuestionDetails, editQuestion, batchImport, createPaper, queryPaperPageList, deletePaper, queryPaperDetail, viewPaper } from '@/data-source/aidTool/request-apis';
export default class AidToolService {
// 获取题目分类树
static queryCategoryTree(params: any) {
return queryCategoryTree(params);
......@@ -62,4 +62,29 @@ export default class QuestionBankService {
static batchImport(params: any) {
return batchImport(params);
}
// 创建试卷
static createPaper(params: any) {
return createPaper(params);
}
// 查询试卷列表
static queryPaperPageList(params: any) {
return queryPaperPageList(params);
}
// 删除试卷
static deletePaper(params: any) {
return deletePaper(params);
}
// 编辑前查询试卷信息
static queryPaperDetail(params: any) {
return queryPaperDetail(params);
}
// 预览试卷
static viewPaper(params: any) {
return viewPaper(params);
}
}
\ No newline at end of file
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-02-23 18:28:50
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 18:36:34
* @LastEditTime: 2021-04-01 20:10:29
* @Description: 助学工具-课程分类
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -10,7 +10,7 @@ import React, { Component } from "react";
import Breadcrumbs from "@/components/Breadcrumbs";
import "./CourseCategoryManage.less";
import NewEditCourseCategoryModal from "../modal/NewEditCourseCategoryModal";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import User from "@/common/js/user";
import {
Tree,
......@@ -51,7 +51,7 @@ class CourseCategoryManage extends Component {
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
QuestionBankService.queryCategoryTree(query).then((res) => {
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result;
this.setState({ originTreeData: categoryList }, () => {
let map = {};
......@@ -82,7 +82,7 @@ class CourseCategoryManage extends Component {
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
QuestionBankService.queryCategoryTree(query).then((res) => {
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result;
let str = "未分类";
if (categoryName) {
......@@ -332,7 +332,7 @@ class CourseCategoryManage extends Component {
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
QuestionBankService.delCategory(params).then((res) => {
AidToolService.delCategory(params).then((res) => {
if (res.success) {
message.success("删除分类成功");
this.queryCategoryTree("change", this.state.categoryName);
......@@ -551,7 +551,7 @@ class CourseCategoryManage extends Component {
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
QuestionBankService.editCategoryTree(params).then((res) => {
AidToolService.editCategoryTree(params).then((res) => {
this.queryCategoryTree("change");
});
};
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-02-22 10:59:43
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 19:23:40
* @LastEditTime: 2021-04-01 14:15:23
* @Description: 助学工具-课程分类侧边栏
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -10,7 +10,7 @@ import React, { Component } from "react";
import { Input, Button, Tree } from "antd";
import "./CourseCategorySiderTree.less";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
const { Search } = Input;
const { DirectoryTree } = Tree;
......@@ -19,10 +19,9 @@ class CourseCategorySiderTree extends Component {
constructor(props) {
super(props);
this.state = {
selectedKeys:
props.fromModule === "QUESTION_INDEX"
? [getParameterByName("categoryId") || "null"]
: ["null"],
selectedKeys: ["QUESTION_INDEX", "PAPER_INDEX"].includes(props.fromModule)
? [getParameterByName("categoryId") || "null"]
: ["null"],
treeData: props.treeData || [],
autoExpandParent: false,
};
......@@ -31,7 +30,7 @@ class CourseCategorySiderTree extends Component {
componentDidMount() {
this.queryCategoryTree("change");
this.props.getSelectedCategoryId(
this.props.fromModule === "QUESTION_INDEX"
["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule)
? [getParameterByName("categoryId") || "null"]
: ["null"]
);
......@@ -40,7 +39,7 @@ class CourseCategorySiderTree extends Component {
shouldComponentUpdate(nextProps, nextState) {
const { currentTotal, updatedCategoryId } = nextProps;
if (
this.props.fromModule === "QUESTION_INDEX" &&
["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) &&
this.props.currentTotal !== currentTotal &&
this.props.updatedCategoryId === updatedCategoryId
) {
......@@ -52,14 +51,18 @@ class CourseCategorySiderTree extends Component {
// 查询分类树
queryCategoryTree = (type, categoryName) => {
let query = {
bizType: ["QUESTION_INDEX", "QUESTION_MODAL"].includes(this.props.fromModule) ? "QUESTION" : "PAPER",
bizType: ["QUESTION_INDEX", "QUESTION_MODAL"].includes(
this.props.fromModule
)
? "QUESTION"
: "PAPER",
categoryName,
count: true,
source: 0,
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
QuestionBankService.queryCategoryTree(query).then((res) => {
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [], noCategoryCnt = 0 } = res.result;
let str = "未分类";
if (categoryName) {
......@@ -200,7 +203,13 @@ class CourseCategorySiderTree extends Component {
return (
<div className="category-tree-sider">
{["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) && <div className="sider-title">{this.props.fromModule==="QUESTION_INDEX" ? "题目分类" : "试卷分类"}</div>}
{["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) && (
<div className="sider-title">
{this.props.fromModule === "QUESTION_INDEX"
? "题目分类"
: "试卷分类"}
</div>
)}
<Search
className="sider-search"
placeholder="搜索名称分类"
......@@ -209,19 +218,20 @@ class CourseCategorySiderTree extends Component {
}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/>
{["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) && User.getUserRole() !== "CloudLecturer" && (
<div className="sider-btn">
<Button
onClick={() => {
window.RCHistory.push({
pathname: "/course-category-manage?from=aid",
});
}}
>
分类管理
</Button>
</div>
)}
{["QUESTION_INDEX", "PAPER_INDEX"].includes(this.props.fromModule) &&
User.getUserRole() !== "CloudLecturer" && (
<div className="sider-btn">
<Button
onClick={() => {
window.RCHistory.push({
pathname: "/course-category-manage?from=aid",
});
}}
>
分类管理
</Button>
</div>
)}
<div className="sider-tree">
<DirectoryTree
expandedKeys={expandedKeys}
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-03-27 14:55:14
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 19:14:46
* @LastEditTime: 2021-04-01 14:00:47
* @Description: 助学工具-试卷主页面
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-02-25 11:23:47
* @LastEditors: yuananting
* @LastEditTime: 2021-03-30 19:32:28
* @LastEditTime: 2021-04-01 15:06:37
* @Description: 助学工具-题库-题目管理主页面列表数据
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -21,8 +21,9 @@ import {
import { PageControl } from "@/components";
import "./ExaminationPaperContent.less";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import _ from "underscore";
import PaperPreviewModal from "../modal/PaperPreviewModal";
const { Search } = Input;
......@@ -34,44 +35,69 @@ class ExaminationPaperContent extends Component {
current: 1,
size: 10,
categoryId: null, // 当前题库分类Id
examinationPaperName: null, // 试卷名称
paperName: null, // 试卷名称
source: 0,
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
},
dataSource: [],
questionPreviewModal: null, // 题目预览模态框
paperPreviewModal: null, // 试卷预览模态框
};
}
componentDidMount() {}
shouldComponentUpdate(nextProps, nextState) {
let { selectedCategoryId } = nextProps;
const _query = this.state.query;
if (this.props.selectedCategoryId !== selectedCategoryId) {
_query.categoryId = selectedCategoryId === "null" ? null : selectedCategoryId;
_query.examinationPaperName = null;
_query.categoryId =
selectedCategoryId === "null" ? null : selectedCategoryId;
_query.paperName = null;
_query.current = 1;
this.setState({ query: _query }, () => this.queryExaminationPaperList());
this.setState({ query: _query }, () => this.queryPaperPageList());
}
return true;
}
// 查询试卷列表
queryExaminationPaperList = () => {};
queryPaperPageList = () => {
const _query = this.state.query;
AidToolService.queryPaperPageList(_query).then((res) => {
const { records = [], total = 0 } = res.result;
this.setState({ dataSource: records, total }, () =>
this.props.updatedSiderTree(total, this.props.selectedCategoryId)
);
});
};
// 预览试卷
previewExaminationPaper = (record) => {};
previewPaper = (record) => {
const m = (
<PaperPreviewModal
categoryId={this.state.query.categoryId}
paperId={record.paperId}
close={() => {
this.setState({
paperPreviewModal: null,
});
}}
/>
);
this.setState({ paperPreviewModal: m });
};
// 复制试卷
copyExaminationPaper = (record) => {};
copyPaper = (record) => {};
// 编辑试卷
editExaminationPaper = (record) => {};
editPaper = (record) => {
const { categoryId } = this.state.query;
window.RCHistory.push({
pathname: `/new-examination-paper?paperId=${record.paperId}&categoryId=${categoryId}`,
});
};
// 删除试卷
delExaminationPaper(record) {
deletePaper(record) {
return Modal.confirm({
title: "提示",
content: "确定要删除此试卷吗?",
......@@ -82,12 +108,13 @@ class ExaminationPaperContent extends Component {
cancelText: "取消",
onOk: () => {
let params = {
id: record.id,
categoryId: this.state.query.categoryId,
paperId: record.paperId,
source: 0,
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
QuestionBankService.deleteQuestion(params).then((res) => {
AidToolService.deletePaper(params).then((res) => {
if (res.success) {
message.success("删除成功");
const { query, total } = this.state;
......@@ -98,9 +125,7 @@ class ExaminationPaperContent extends Component {
_query.current = 1;
}
}
this.setState({ query: _query }, () =>
this.queryQuestionPageList()
);
this.setState({ query: _query }, () => this.queryPaperPageList());
}
});
},
......@@ -112,8 +137,8 @@ class ExaminationPaperContent extends Component {
const columns = [
{
title: "试卷",
key: "examinationPaperName",
dataIndex: "examinationPaperName",
key: "paperName",
dataIndex: "paperName",
ellipsis: {
showTitle: false,
},
......@@ -151,14 +176,14 @@ class ExaminationPaperContent extends Component {
},
{
title: "题目数量",
key: "count",
dataIndex: "count",
key: "questionCnt",
dataIndex: "questionCnt",
width: "14%",
},
{
title: "关联考试数",
key: "relatedCount",
dataIndex: "relatedCount",
key: "relatedExam",
dataIndex: "relatedExam",
width: "14%",
},
{
......@@ -171,7 +196,7 @@ class ExaminationPaperContent extends Component {
<div className="record-operate">
<div
className="record-operate__item"
onClick={() => this.previewQuestion(record.id)}
onClick={() => this.previewPaper(record)}
>
预览
</div>
......@@ -185,7 +210,7 @@ class ExaminationPaperContent extends Component {
复制
</div>
<span className="record-operate__item split"> | </span>
<Dropdown overlay={this.initDropMenu(val)}>
<Dropdown overlay={this.initDropMenu(record)}>
<div className="record-operate__item">更多</div>
</Dropdown>
</div>
......@@ -201,10 +226,10 @@ class ExaminationPaperContent extends Component {
return (
<Menu>
<Menu.Item key="edit">
<span onClick={() => this.editExaminationPaper(item)}>编辑</span>
<span onClick={() => this.editPaper(item)}>编辑</span>
</Menu.Item>
<Menu.Item key="del">
<span onClick={() => this.delExaminationPaper(item)}>删除</span>
<span onClick={() => this.deletePaper(item)}>删除</span>
</Menu.Item>
</Menu>
);
......@@ -217,29 +242,12 @@ class ExaminationPaperContent extends Component {
}
let _query = this.state.query;
_query.size = size;
this.setState({ query: _query }, () => this.queryQuestionPageList());
};
// 改变搜索条件
handleChangeQuery = (searchType, value) => {
this.setState(
{
query: {
...this.state.query,
[searchType]: value || null,
current: 1,
},
},
() => {
if (searchType === "questionName") return;
this.queryQuestionPageList();
}
);
this.setState({ query: _query }, () => this.queryPaperPageList());
};
render() {
const { dataSource = [], total, query } = this.state;
const { current, size, categoryId, questionName, questionType } = query;
const { dataSource = [], total, query, paperPreviewModal } = this.state;
const { current, size, categoryId, paperName } = query;
return (
<div className="question-manage-content">
<div className="question-manage-filter">
......@@ -249,13 +257,19 @@ class ExaminationPaperContent extends Component {
<span className="search-label">试卷:</span>
<Search
placeholder="搜索试卷名称"
value={questionName}
value={paperName}
style={{ width: "calc(100% - 100px)" }}
onChange={(e) => {
this.handleChangeQuery("questionName", e.target.value);
this.setState({
query: {
...query,
paperName: e.target.value.trim(),
current: 1,
},
});
}}
onSearch={() => {
this.queryQuestionPageList();
this.queryPaperPageList();
}}
enterButton={<span className="icon iconfont">&#xe832;</span>}
/>
......@@ -267,7 +281,7 @@ class ExaminationPaperContent extends Component {
type="primary"
onClick={() => {
window.RCHistory.push({
pathname: `/new-examination-paper?categoryId=${this.state.query.categoryId}`,
pathname: `/new-examination-paper?categoryId=${categoryId}`,
});
}}
>
......@@ -291,7 +305,7 @@ class ExaminationPaperContent extends Component {
toPage={(page) => {
const _query = { ...query, current: page + 1 };
this.setState({ query: _query }, () =>
this.queryQuestionPageList()
this.queryPaperPageList()
);
}}
showSizeChanger={true}
......@@ -299,6 +313,7 @@ class ExaminationPaperContent extends Component {
/>
</div>
)}
{paperPreviewModal}
</div>
</div>
);
......
......@@ -23,7 +23,7 @@ import {
import { PageControl } from "@/components";
import "./SelectQuestionContent.less";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import _ from "underscore";
import ShowTips from "@/components/ShowTips";
......@@ -98,7 +98,7 @@ class QuestionListContent extends Component {
queryQuestionPageList = () => {
const _query = this.state.query;
QuestionBankService.queryQuestionPageList(_query).then((res) => {
AidToolService.queryQuestionPageList(_query).then((res) => {
const { records = [], total = 0 } = res.result;
this.setState({ dataSource: records, total });
});
......
/*
* @Author: yuananting
* @Date: 2021-03-27 11:15:03
* @LastEditors: yuananting
* @LastEditTime: 2021-04-01 20:12:01
* @Description: 助学工具-试卷-预览试卷
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from "react";
import { Modal } from "antd";
import User from "@/common/js/user";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import "./PaperPreviewModal.less";
import ScanFileModal from "@/modules/resource-disk/modal/ScanFileModal";
import _ from "underscore";
import XMAudio from "../../components/XMAudio";
import { NUM_TO_WORD_MAP } from "@/common/constants/punchClock/punchClock";
const questionTypeList = {
SINGLE_CHOICE: "单选题",
MULTI_CHOICE: "多选题",
JUDGE: "判断题",
GAP_FILLING: "填空题",
INDEFINITE_CHOICE: "不定项选择题",
};
class PaperPreviewModal extends Component {
formRef = React.createRef();
constructor(props) {
super(props);
this.state = {
paperInfo: {
paperName: null,
questionList: [],
},
};
}
componentDidMount() {
this.queryPaperDetail();
}
// 题目预览
queryPaperDetail = () => {
let query = {
categoryId: this.props.categoryId,
paperId: this.props.paperId,
source: 0,
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
AidToolService.viewPaper(query).then((res) => {
const { result = [] } = res;
this.setState({ paperInfo: result });
});
};
// 查看图片或视频
handleScanFile = (scanFileType, scanFileAddress) => {
this.setState({
showScanFile: true,
scanFileAddress,
scanFileType,
});
};
renderStem = (questionStemList, questionType, score, questionIndex) => {
const textContent = _.filter(questionStemList, (item) => {
return item.type == "RICH_TEXT";
});
const mediaContent = _.filter(questionStemList, (item) => {
return item.type !== "RICH_TEXT";
});
let content = textContent.length > 0 && textContent[0].content;
if (questionType === "GAP_FILLING") {
content = content.replace(
/_/g,
`<input
class="add-fill-line"
disabled
correctAnswerList=""
id=${window.random_string(16)}
value="填空"
/>`
);
}
let textDom = (
<span
key={0}
className="input-box"
dangerouslySetInnerHTML={{
__html: content,
}}
/>
);
return (
<div className="stem-line__item">
<div className="text">
<span>{questionIndex + 1}.</span>
<span>{questionTypeList[questionType]}</span>
{textDom}
<span>{score}分)</span>
</div>
{this.renderMediaContent(mediaContent)}
</div>
);
};
renderOption = (optionItem, questionType) => {
const { questionOptionContentList, optionSort} = optionItem
const textContent = _.filter(questionOptionContentList, (item) => {
return item.type == "RICH_TEXT";
});
const mediaContent = _.filter(questionOptionContentList, (item) => {
return item.type !== "RICH_TEXT";
});
let content = textContent.length > 0 && textContent[0].content;
if (questionType !== "GAP_FILLING") {
let textDom = (
<span
key={0}
className="input-box"
dangerouslySetInnerHTML={{
__html: content,
}}
/>
);
return (
<div className="option-line__item">
<div className="text">
{NUM_TO_WORD_MAP[optionSort]}. {textDom}
</div>
{mediaContent.length > 0 && this.renderMediaContent(mediaContent)}
</div>
);
}
};
renderMediaContent = (mediaContent) => {
return (
<div className="media">
{_.map(mediaContent, (mediaItem, mediaIndex) => {
let dom = "";
let { type, content, size } = mediaItem;
switch (type) {
case "PICTURE":
dom = (
<div key={mediaIndex + 1} className="picture-box">
<img
src={content}
onClick={() => this.handleScanFile("JPG", content)}
/>
</div>
);
break;
case "VOICE":
dom = (
<div key={mediaIndex + 1} className="voice-box">
<XMAudio
forbidParse
url={content}
getDuration={(durationSize) => {
size = durationSize;
this.setState({});
}}
index={mediaIndex + 1}
size={size || 1000}
/>
</div>
);
break;
case "AUDIO":
dom = (
<div key={mediaIndex} className="voice-box">
<XMAudio
forbidParse
url={content}
getDuration={(durationSize) => {
size = durationSize;
this.setState({});
}}
index={mediaIndex}
size={size || 1000}
/>
</div>
);
break;
}
return dom;
})}
</div>
);
};
render() {
const { paperInfo } = this.state;
const { paperName, questionList } = paperInfo;
return (
<div>
<Modal
className="paper-preview-modal"
visible={true}
title="试卷预览"
width={560}
centered={true}
footer={null}
onCancel={this.props.close}
>
<h2 style={{ textAlign: "center" }}>{paperName}</h2>
<div className="question-list-box">
{questionList.map((questionItem, questionIndex) => {
const {
questionStemList,
optionList,
gapFillingAnswerList,
questionType,
score,
} = questionItem;
return (
<div className="question-info-item">
{this.renderStem(
questionStemList,
questionType,
score,
questionIndex
)}
{_.map(optionList, (optionItem, optionIndex) => {
return this.renderOption(
optionItem,
questionType,
optionIndex
);
})}
{/* {this.renderAnswer(gapFillingAnswerList, questionType)} */}
</div>
);
})}
</div>
</Modal>
</div>
);
}
}
export default PaperPreviewModal;
.paper-preview-modal {
.question-list-box {
.question-info-item {
margin-bottom: 16px;
.stem-line {
margin-bottom: 16px;
border-bottom: 1px solid #e8e8e8;
padding-bottom: 16px;
&__item {
font-size: 14px;
font-weight: 400;
color: #666666;
margin-bottom: 16px;
}
}
}
.text {
margin-bottom: 8px;
.input-box {
margin-bottom: 8px;
* {
display: inline;
}
.add-fill-line {
padding: 0 10px;
border-bottom: 1px solid !important;
margin: 0 4px;
text-align: center;
border: none;
width: 54px;
}
}
}
.media {
.picture-box {
width: 88px;
height: 88px;
border-radius: 4px;
overflow: hidden;
align-items: center;
justify-content: center;
margin-right: 12px;
position: relative;
display: inline-flex;
border: 1px solid #e8e8e8;
img {
max-width: 100%;
max-height: 100%;
border-radius: 4px;
vertical-align: middle;
width: auto;
height: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
.voice-box {
margin-bottom: 12px;
box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
padding: 10px 20px;
width: 320px;
}
}
}
}
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-03-29 10:52:26
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 19:15:49
* @LastEditTime: 2021-04-01 14:01:06
* @Description: 助学工具-新建试卷-选择题目弹窗
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -59,7 +59,7 @@ class SelectQuestionModal extends Component {
>
<div className="sider">
<CourseCategorySiderTree
fromModule="PAPER_MODAL"
fromModule="QUESTION_MODAL"
getSelectedCategoryId={this.getCategoryIdFromSider.bind(this)}
/>
</div>
......
......@@ -2,14 +2,14 @@
* @Author: yuananting
* @Date: 2021-02-22 17:51:28
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 18:33:23
* @LastEditTime: 2021-04-01 11:21:09
* @Description: 助学工具-新建编辑课程分类模态框
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from "react";
import { Modal, Form, Input } from "antd";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
class NewEditCourseCategoryModal extends Component {
formRef = React.createRef();
constructor(props) {
......@@ -34,9 +34,9 @@ class NewEditCourseCategoryModal extends Component {
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
QuestionBankService.queryCategoryTree(query).then((res) => {
const { result = [] } = res;
this.setState({ treeData: result });
AidToolService.queryCategoryTree(query).then((res) => {
const { categoryList = [] } = res.result;
this.setState({ treeData: categoryList });
});
};
......@@ -61,7 +61,7 @@ class NewEditCourseCategoryModal extends Component {
}
try {
await this.formRef.current.validateFields();
QuestionBankService.addCategory(params).then((res) => {
AidToolService.addCategory(params).then((res) => {
if (res.success) {
this.props.close();
}
......@@ -77,7 +77,7 @@ class NewEditCourseCategoryModal extends Component {
params.categoryName = categoryName;
try {
await this.formRef.current.validateFields();
QuestionBankService.editCategory(params).then((res) => {
AidToolService.editCategory(params).then((res) => {
if (res.success) {
this.props.close();
}
......@@ -132,7 +132,6 @@ class NewEditCourseCategoryModal extends Component {
nodes.push(...this.getChildLevelNodes(item.sonCategoryList, id));
}
});
console.log(nodes)
return nodes;
};
......
......@@ -17,7 +17,7 @@ import {
defineOptionInfo,
defineQuestionInfo,
} from "../components/model";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import User from "@/common/js/user";
const { TabPane } = Tabs;
......@@ -67,7 +67,7 @@ class AddNewQuestion extends Component {
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
QuestionBankService.queryQuestionDetails(query).then((res) => {
AidToolService.queryQuestionDetails(query).then((res) => {
const { result = [] } = res;
let stemContent = _.find(
result.questionStemList,
......@@ -238,7 +238,7 @@ class AddNewQuestion extends Component {
userId: User.getStoreUserId(),
};
QuestionBankService.editQuestion(params).then((res) => {
AidToolService.editQuestion(params).then((res) => {
if (res.success) {
message.success("保存成功");
if (next === "add") {
......@@ -259,7 +259,7 @@ class AddNewQuestion extends Component {
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
QuestionBankService.addQuestion(params).then((res) => {
AidToolService.addQuestion(params).then((res) => {
if (res.success) {
message.success("保存成功");
if (next === "add") {
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-02-21 17:51:01
* @LastEditors: yuananting
* @LastEditTime: 2021-03-31 19:15:27
* @LastEditTime: 2021-04-01 14:10:41
* @Description: 助学工具-题库-题库主页面
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......
......@@ -2,7 +2,7 @@
* @Author: yuananting
* @Date: 2021-02-25 11:23:47
* @LastEditors: yuananting
* @LastEditTime: 2021-03-30 19:33:39
* @LastEditTime: 2021-04-01 13:47:54
* @Description: 助学工具-题库-列表数据
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
......@@ -23,7 +23,7 @@ import {
import { PageControl } from "@/components";
import "./QuestionManageContent.less";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import _ from "underscore";
import QuestionPreviewModal from "../modal/QuestionPreviewModal";
import BatchImportQuestionModal from "../modal/BatchImportQuestionModal";
......@@ -129,10 +129,9 @@ class QuestionManageContent extends Component {
// 题库列表查询
queryQuestionPageList = () => {
const _query = this.state.query;
QuestionBankService.queryQuestionPageList(_query).then((res) => {
AidToolService.queryQuestionPageList(_query).then((res) => {
const { records = [], total = 0 } = res.result;
this.setState({ dataSource: records });
this.setState({ total }, () =>
this.setState({ dataSource: records, total }, () =>
this.props.updatedSiderTree(total, this.props.selectedCategoryId)
);
});
......@@ -360,7 +359,7 @@ class QuestionManageContent extends Component {
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
QuestionBankService.deleteQuestion(params).then((res) => {
AidToolService.deleteQuestion(params).then((res) => {
if (res.success) {
message.success("删除成功");
const { query, total } = this.state;
......
......@@ -11,7 +11,7 @@ import { Modal, Button, message, Spin } from "antd";
import "./BatchImportQuestionModal.less";
import SelectPrepareFileModal from "@/modules/prepare-lesson/modal/SelectPrepareFileModal";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import { LoadingOutlined } from "@ant-design/icons";
class BatchImportQuestionModal extends Component {
constructor(props) {
......@@ -66,7 +66,7 @@ class BatchImportQuestionModal extends Component {
tenantId: User.getStoreId(),
userId: User.getStoreUserId(),
};
const res = await QuestionBankService.batchImport(params);
const res = await AidToolService.batchImport(params);
const { result } = res;
const { bizSuccess, bizMessage } = result;
if (res) {
......
......@@ -2,14 +2,14 @@
* @Author: yuananting
* @Date: 2021-03-27 11:15:03
* @LastEditors: yuananting
* @LastEditTime: 2021-03-29 16:19:35
* @LastEditTime: 2021-04-01 19:47:12
* @Description: 助学工具-题库-预览题目
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/
import React, { Component } from "react";
import { Modal } from "antd";
import User from "@/common/js/user";
import QuestionBankService from "@/domains/question-bank-domain/QuestionBankService";
import AidToolService from "@/domains/aid-tool-domain/AidToolService";
import "./QuestionPreviewModal.less";
import ScanFileModal from "@/modules/resource-disk/modal/ScanFileModal";
import _ from "underscore";
......@@ -44,7 +44,7 @@ class QuestionPreviewModal extends Component {
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
QuestionBankService.queryQuestionDetails(query).then((res) => {
AidToolService.queryQuestionDetails(query).then((res) => {
const { result = [] } = res;
this.setState({ questionInfo: result });
});
......
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