Commit c1bb4780 by yuananting

feat:试卷接口联调完成

parent 6e01f9ee
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-03-03 15:13:12 * @Date: 2021-03-03 15:13:12
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-04-02 14:12:49 * @LastEditTime: 2021-04-06 10:44:47
* @Description: 助学工具接口 * @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -76,3 +76,7 @@ export function viewPaper(params: object) { ...@@ -76,3 +76,7 @@ export function viewPaper(params: object) {
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) {
return Service.Hades("public/hades/batchQueryQuestionDetails", params);
}
\ No newline at end of file
...@@ -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: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-04-02 14:14:06 * @LastEditTime: 2021-04-06 10:44:18
* @Description: 助学工具接口 * @Description: 助学工具接口
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -23,7 +23,8 @@ import { ...@@ -23,7 +23,8 @@ import {
deletePaper, deletePaper,
queryPaperDetail, queryPaperDetail,
viewPaper, viewPaper,
editPaper editPaper,
batchQueryQuestionDetails,
} from '@/data-source/aidTool/request-apis'; } from '@/data-source/aidTool/request-apis';
export default class AidToolService { export default class AidToolService {
// 获取题目分类树 // 获取题目分类树
...@@ -110,4 +111,9 @@ export default class AidToolService { ...@@ -110,4 +111,9 @@ export default class AidToolService {
static editPaper(params: any) { static editPaper(params: any) {
return editPaper(params); return editPaper(params);
} }
// 操作试卷-预览查询多题目信息
static batchQueryQuestionDetails(params: any) {
return batchQueryQuestionDetails(params);
}
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-03-27 16:15:13 * @Date: 2021-03-27 16:15:13
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-04-02 17:23:23 * @LastEditTime: 2021-04-06 14:03:49
* @Description: 助学工具-新建/复制/编辑试卷 * @Description: 助学工具-新建/复制/编辑试卷
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -78,36 +78,40 @@ class OperatePaper extends Component { ...@@ -78,36 +78,40 @@ class OperatePaper extends Component {
this.setState({ currentOperate: "new", currentNav: "新建试卷" }); this.setState({ currentOperate: "new", currentNav: "新建试卷" });
break; break;
case "edit": case "edit":
this.setState({ currentOperate: "edit", currentNav: "编辑试卷" }, () => this.queryPaperDetail()); this.setState({ currentOperate: "edit", currentNav: "编辑试卷" }, () =>
this.queryPaperDetail()
);
break; break;
case "copy": case "copy":
this.setState({ currentOperate: "copy", currentNav: "复制试卷" }, () => this.queryPaperDetail()); this.setState({ currentOperate: "copy", currentNav: "复制试卷" }, () =>
this.queryPaperDetail()
);
break; break;
} }
} }
// 获取当前分类下的所有试卷 // 获取当前分类下的所有试卷
queryCurrentCategoryPapers = () => { queryCurrentCategoryPapers = () => {
const categoryId = getParameterByName("categoryId");
let params = { let params = {
current: 1, current: 1,
size: 9999, size: 9999,
categoryId: getParameterByName("categoryId"), // 当前题库分类Id categoryId: categoryId === "null" ? null : categoryId,
paperName: null, // 试卷名称 paperName: null, // 试卷名称
source: 0, source: 0,
tenantId: User.getStoreId(), tenantId: User.getStoreId(),
userId: User.getStoreUserId(), userId: User.getStoreUserId(),
} };
AidToolService.queryPaperPageList(params).then((res) => { AidToolService.queryPaperPageList(params).then((res) => {
const { records = [] } = res.result; const { records = [] } = res.result;
this.setState({ currentCategoryPapers: records }) this.setState({ currentCategoryPapers: records });
}); });
}; };
// 编辑/复制试卷时获取相应试卷详情 // 编辑/复制试卷时获取相应试卷详情
queryPaperDetail = () => { queryPaperDetail = () => {
const { currentOperate, formData } = this.state; const { currentOperate } = this.state;
let query = { let query = {
categoryId: getParameterByName("categoryId"),
paperId: getParameterByName("paperId"), paperId: getParameterByName("paperId"),
source: 0, source: 0,
userId: User.getStoreUserId(), userId: User.getStoreUserId(),
...@@ -118,10 +122,14 @@ class OperatePaper extends Component { ...@@ -118,10 +122,14 @@ class OperatePaper extends Component {
const { paperName, passRate } = result; const { paperName, passRate } = result;
this.setState( this.setState(
{ {
selectQuestionList: result.questionList.sort((a, b) => b.updateTime - a.updateTime), formData: { selectQuestionList: result.questionList.sort(
(a, b) => b.updateTime - a.updateTime
),
formData: {
...result, ...result,
paperName: currentOperate === "copy" ? paperName + "(复制)" : paperName, paperName:
} currentOperate === "copy" ? paperName + "(复制)" : paperName,
},
}, },
() => { () => {
this.formRef.current.setFieldsValue({ this.formRef.current.setFieldsValue({
...@@ -270,13 +278,16 @@ class OperatePaper extends Component { ...@@ -270,13 +278,16 @@ class OperatePaper extends Component {
result = item; result = item;
} }
} else if (currentOperate === "edit") { } else if (currentOperate === "edit") {
if (item.paperName === paperName && item.paperId !== getParameterByName("paperId")) { if (
item.paperName === paperName &&
item.paperId !== getParameterByName("paperId")
) {
result = item; result = item;
} }
} }
}); });
return result; return result;
} };
// 保存试卷 // 保存试卷
savePaper = async () => { savePaper = async () => {
...@@ -305,9 +316,13 @@ class OperatePaper extends Component { ...@@ -305,9 +316,13 @@ class OperatePaper extends Component {
if (["new", "copy"].includes(currentOperate)) { if (["new", "copy"].includes(currentOperate)) {
AidToolService.createPaper(this.state.formData).then((res) => { AidToolService.createPaper(this.state.formData).then((res) => {
if (res.success) { if (res.success) {
message.success(currentOperate === "new" ? "新建成功" : "复制成功"); message.success(
currentOperate === "new" ? "新建成功" : "复制成功"
);
window.RCHistory.push({ window.RCHistory.push({
pathname: `/paper-manage-index?categoryId=${getParameterByName("categoryId")}`, pathname: `/paper-manage-index?categoryId=${getParameterByName(
"categoryId"
)}`,
}); });
} }
}); });
...@@ -319,7 +334,9 @@ class OperatePaper extends Component { ...@@ -319,7 +334,9 @@ class OperatePaper extends Component {
if (res.success) { if (res.success) {
message.success("编辑成功"); message.success("编辑成功");
window.RCHistory.push({ window.RCHistory.push({
pathname: `/paper-manage-index?categoryId=${getParameterByName("categoryId")}`, pathname: `/paper-manage-index?categoryId=${getParameterByName(
"categoryId"
)}`,
}); });
} }
}); });
...@@ -334,14 +351,32 @@ class OperatePaper extends Component { ...@@ -334,14 +351,32 @@ class OperatePaper extends Component {
// 预览试卷 // 预览试卷
previewPaper = () => { previewPaper = () => {
const { selectQuestionList, formData } = this.state; const { selectQuestionList, formData } = this.state;
selectQuestionList.map((item, index) => { const questionIdList = selectQuestionList.map((item) => {
item.sort = index return item.questionId;
return item });
}) let param = {
questionIdList,
source: 0,
userId: User.getStoreUserId(),
tenantId: User.getStoreId(),
};
AidToolService.batchQueryQuestionDetails(param).then((res) => {
const { result = [] } = res;
result.map((item) => {
selectQuestionList.map((selectItem) => {
if (item.id === selectItem.questionId) {
item.questionId = item.id;
item.questionType = item.questionTypeEnum;
item.score = selectItem.score || 2;
item.portionScore = selectItem.portionScore || 0;
}
});
return item;
});
const m = ( const m = (
<PaperPreviewModal <PaperPreviewModal
previewPage="paper-operate" previewPage="paper-operate"
paperInfo={{ ...formData, questionList: selectQuestionList }} paperInfo={{ ...formData, questionList: res.result }}
close={() => { close={() => {
this.setState({ this.setState({
paperPreviewModal: null, paperPreviewModal: null,
...@@ -350,7 +385,8 @@ class OperatePaper extends Component { ...@@ -350,7 +385,8 @@ class OperatePaper extends Component {
/> />
); );
this.setState({ paperPreviewModal: m }); this.setState({ paperPreviewModal: m });
} });
};
// 取消/返回 // 取消/返回
handleGoBack = () => { handleGoBack = () => {
...@@ -364,7 +400,9 @@ class OperatePaper extends Component { ...@@ -364,7 +400,9 @@ class OperatePaper extends Component {
), ),
onOk: () => { onOk: () => {
window.RCHistory.push({ window.RCHistory.push({
pathname: `/paper-manage-index?categoryId=${getParameterByName("categoryId")}`, pathname: `/paper-manage-index?categoryId=${getParameterByName(
"categoryId"
)}`,
}); });
}, },
}); });
...@@ -557,7 +595,13 @@ class OperatePaper extends Component { ...@@ -557,7 +595,13 @@ class OperatePaper extends Component {
labelCol: { span: 2 }, labelCol: { span: 2 },
wrapperCol: { span: 22 }, wrapperCol: { span: 22 },
}; };
const { selectQuestionModal, paperPreviewModal, selectQuestionList, currentNav, formData } = this.state; const {
selectQuestionModal,
paperPreviewModal,
selectQuestionList,
currentNav,
formData,
} = this.state;
const { const {
singleChoiceCnt, singleChoiceCnt,
multiChoiceCnt, multiChoiceCnt,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-02-25 11:23:47 * @Date: 2021-02-25 11:23:47
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-04-01 15:06:37 * @LastEditTime: 2021-04-06 14:36:06
* @Description: 助学工具-题库-试卷列表数据 * @Description: 助学工具-题库-试卷列表数据
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -99,25 +99,28 @@ class PaperList extends Component { ...@@ -99,25 +99,28 @@ class PaperList extends Component {
// 编辑试卷 // 编辑试卷
editPaper = (record) => { editPaper = (record) => {
if (record.relatedExam === 0) {
const { categoryId } = this.state.query; const { categoryId } = this.state.query;
window.RCHistory.push({ window.RCHistory.push({
pathname: `/paper-operate-page/operate?type=edit&paperId=${record.paperId}&categoryId=${categoryId}`, pathname: `/paper-operate-page/operate?type=edit&paperId=${record.paperId}&categoryId=${categoryId}`,
}); });
} else {
return Modal.info({
title: "无法编辑",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe834;</span>
),
content:
"该试卷已被考试采用,无法继续编辑。如需修改,请复制一份进行修改。",
okText: "我知道了",
});
}
}; };
// 删除试卷 // 删除试卷
deletePaper(record) { deletePaper = (record) => {
return Modal.confirm({ if (record.relatedExam === 0) {
title: "提示",
content: "确定要删除此试卷吗?",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe839; </span>
),
okText: "删除",
cancelText: "取消",
onOk: () => {
let params = { let params = {
categoryId: this.state.query.categoryId,
paperId: record.paperId, paperId: record.paperId,
source: 0, source: 0,
tenantId: User.getStoreId(), tenantId: User.getStoreId(),
...@@ -137,9 +140,17 @@ class PaperList extends Component { ...@@ -137,9 +140,17 @@ class PaperList extends Component {
this.setState({ query: _query }, () => this.queryPaperPageList()); this.setState({ query: _query }, () => this.queryPaperPageList());
} }
}); });
}, } else {
return Modal.info({
title: "删除试卷",
content: "该试卷已被考试采用,无法删除。",
icon: (
<span className="icon iconfont default-confirm-icon">&#xe834; </span>
),
okText: "我知道了",
}); });
} }
};
// 自定义表格空状态 // 自定义表格空状态
customizeRenderEmpty = () => { customizeRenderEmpty = () => {
...@@ -200,17 +211,16 @@ class PaperList extends Component { ...@@ -200,17 +211,16 @@ class PaperList extends Component {
title: "题目数量", title: "题目数量",
key: "questionCnt", key: "questionCnt",
dataIndex: "questionCnt", dataIndex: "questionCnt",
}, },
{ {
title: "关联考试数", title: "关联考试数",
key: "relatedExam", key: "relatedExam",
dataIndex: "relatedExam", dataIndex: "relatedExam",
}, },
]; ];
if ((this.props.type !== 'modal-select')) { if (this.props.type !== "modal-select") {
const isPermiss = ["CloudManager", "StoreManager"].includes(User.getUserRole());
columns.push({ columns.push({
title: "操作", title: "操作",
key: "operate", key: "operate",
...@@ -225,21 +235,21 @@ class PaperList extends Component { ...@@ -225,21 +235,21 @@ class PaperList extends Component {
> >
预览 预览
</div> </div>
<span className="record-operate__item split"> | </span> {isPermiss && <span className="record-operate__item split"> | </span> }
<div {isPermiss && <div
className="record-operate__item" className="record-operate__item"
onClick={() => this.copyPaper(record)} onClick={() => this.copyPaper(record)}
> >
复制 复制
</div> </div>}
<span className="record-operate__item split"> | </span> {isPermiss && <span className="record-operate__item split"> | </span>}
<Dropdown overlay={this.initDropMenu(record)}> {isPermiss && <Dropdown overlay={this.initDropMenu(record)}>
<div className="record-operate__item">更多</div> <div className="record-operate__item">更多</div>
</Dropdown> </Dropdown>}
</div> </div>
); );
}, },
}) });
} }
return columns; return columns;
}; };
...@@ -270,20 +280,26 @@ class PaperList extends Component { ...@@ -270,20 +280,26 @@ class PaperList extends Component {
onSelectChange = (selectedRowKeys, selectedRows) => { onSelectChange = (selectedRowKeys, selectedRows) => {
this.setState({ this.setState({
selectedRowKeys selectedRowKeys,
}) });
this.props.onSelect(selectedRows[0] || {}) this.props.onSelect(selectedRows[0] || {});
} };
render() { render() {
const { dataSource = [], total, query, paperPreviewModal, selectedRowKeys } = this.state; const {
dataSource = [],
total,
query,
paperPreviewModal,
selectedRowKeys,
} = this.state;
const { current, size, categoryId, paperName } = query; const { current, size, categoryId, paperName } = query;
const rowSelection = { const rowSelection = {
type: 'radio', type: "radio",
selectedRowKeys, selectedRowKeys,
onChange: this.onSelectChange, onChange: this.onSelectChange,
}; };
const isPermiss = ["CloudManager", "StoreManager"].includes(User.getUserRole())
return ( return (
<div className={"paper-list " + this.props.type}> <div className={"paper-list " + this.props.type}>
...@@ -314,8 +330,9 @@ class PaperList extends Component { ...@@ -314,8 +330,9 @@ class PaperList extends Component {
</div> </div>
</Row> </Row>
</div> </div>
{ {this.props.type !== "modal-select" && isPermiss &&
(this.props.type !== 'modal-select') && <Button categoryId && (
<Button
type="primary" type="primary"
onClick={() => { onClick={() => {
window.RCHistory.push({ window.RCHistory.push({
...@@ -325,23 +342,25 @@ class PaperList extends Component { ...@@ -325,23 +342,25 @@ class PaperList extends Component {
> >
新建试卷 新建试卷
</Button> </Button>
} )}
<div className="paper-list-content"> <div className="paper-list-content">
<ConfigProvider renderEmpty={this.customizeRenderEmpty}> <ConfigProvider renderEmpty={this.customizeRenderEmpty}>
{(this.props.type !== 'modal-select') ? < Table {this.props.type !== "modal-select" ? (
<Table
rowKey={(record) => record.id} rowKey={(record) => record.id}
dataSource={dataSource} dataSource={dataSource}
columns={this.parseColumns()} columns={this.parseColumns()}
pagination={false} pagination={false}
bordered bordered
onChange={this.handleChangeTable} onChange={this.handleChangeTable}
/> : />
) : (
<Table <Table
rowKey={(record) => record.id} rowKey={(record) => record.id}
dataSource={dataSource} dataSource={dataSource}
rowKey={(item) => { rowKey={(item) => {
return item.paperId return item.paperId;
}} }}
rowSelection={rowSelection} rowSelection={rowSelection}
columns={this.parseColumns()} columns={this.parseColumns()}
...@@ -349,7 +368,7 @@ class PaperList extends Component { ...@@ -349,7 +368,7 @@ class PaperList extends Component {
bordered bordered
onChange={this.handleChangeTable} onChange={this.handleChangeTable}
/> />
} )}
</ConfigProvider> </ConfigProvider>
{total > 0 && ( {total > 0 && (
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-02-25 11:23:47 * @Date: 2021-02-25 11:23:47
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-04-01 13:47:54 * @LastEditTime: 2021-04-06 13:43:08
* @Description: 助学工具-题库-题目列表数据 * @Description: 助学工具-题库-题目列表数据
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
*/ */
...@@ -117,7 +117,7 @@ class QuestionList extends Component { ...@@ -117,7 +117,7 @@ class QuestionList extends Component {
const _query = { const _query = {
...this.state.query, ...this.state.query,
current: 1, current: 1,
order: "ACCURACY_DESC", // 排序规则 order: "UPDATED_DESC", // 排序规则
questionName: null, // 题目名称 questionName: null, // 题目名称
questionType: null, // 题目类型 questionType: null, // 题目类型
}; };
......
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