Browse Source

fix(front): 题目详情

Go 5 years ago
parent
commit
ac09496713

+ 4 - 0
front/project/www/components/AnswerTable/index.less

@@ -6,6 +6,10 @@
   .select-line {
     text-align: right;
     margin-bottom: 10px;
+
+    .select {
+      text-align: right;
+    }
   }
 
   table {

+ 26 - 0
front/project/www/routes/paper/question/index.less

@@ -12,6 +12,26 @@
       display: flex;
       flex-direction: row;
 
+      // &.exercise {
+      //   border-top: 20px solid #7775CA;
+      //   background: #fff;
+      // }
+
+      // &.sentence {
+      //   border-top: 20px solid #435C96;
+      //   background: #fff;
+      // }
+
+      &.examination {
+        border-top: 20px solid #8D909C;
+        background: #fff;
+
+        .layout-header {
+          height: 60px;
+          top: 20px;
+        }
+      }
+
       .layout-header {
         height: 60px;
         line-height: 60px;
@@ -27,6 +47,12 @@
         .left {
           position: absolute;
 
+          .btn {
+            display: inline-block;
+            padding-right: 10px;
+            line-height: 60px;
+          }
+
           .no {
             font-size: 20px;
             display: inline-block;

+ 20 - 26
front/project/www/routes/paper/question/page.js

@@ -12,6 +12,7 @@ import Tabs from '../../../components/Tabs';
 import Icon from '../../../components/Icon';
 import Switch from '../../../components/Switch';
 import Select from '../../../components/Select';
+import { Button } from '../../../components/Button';
 import AnswerSelect from '../../../components/AnswerSelect';
 import AnswerList from '../../../components/AnswerList';
 import AnswerButton from '../../../components/AnswerButton';
@@ -65,6 +66,7 @@ export default class extends Page {
     const { id } = this.params;
     Question.getDetailById(id).then(userQuestion => {
       const { question, questionNos, paper, note, report, setting } = userQuestion;
+      paper.paperModule = 'examination';
       let { questionNo } = userQuestion;
       if (!questionNo) ([questionNo] = questionNos);
       if (!question.answer) question.answer = { questions: [] };
@@ -74,7 +76,7 @@ export default class extends Page {
         const { content } = question;
         // 还原做题顺序
         content.questions.forEach((q, i) => {
-          q.select = sortListWithOrder(question.select, setting.questions[i]);
+          q.select = sortListWithOrder(q.select, setting.questions[i]);
         });
         question.answer.questions.forEach((q, i) => {
           Object.keys(q).forEach((k) => {
@@ -123,9 +125,9 @@ export default class extends Page {
   }
 
   submitFeedbackError() {
-    const { feedback = {}, question = {}, questionNo = {} } = this.state;
+    const { feedback = {}, userQuestion = {}, questionNo = {} } = this.state;
     if (feedback.originContent === '' || feedback.content === '' || feedback.target === '') return;
-    My.addFeedbackErrorQuestion(question.questionModule, questionNo.id, questionNo.title, feedback.target, feedback.originContent, feedback.content).then(() => {
+    My.addFeedbackErrorQuestion(userQuestion.questionModule, questionNo.id, questionNo.title, feedback.target, feedback.originContent, feedback.content).then(() => {
       this.setState({ feedbackModal: false, feedbackOkModal: true });
     }).catch(err => {
       this.setState({ feedbackError: err.message });
@@ -133,8 +135,8 @@ export default class extends Page {
   }
 
   submitNote(close) {
-    const { question = {}, questionNo = {}, note = {} } = this.state;
-    My.updateQuestionNote(question.questionModule, questionNo.id, note).then(() => {
+    const { userQuestion = {}, questionNo = {}, note = {} } = this.state;
+    My.updateQuestionNote(userQuestion.questionModule, questionNo.id, note).then(() => {
       if (close) this.setState({ noteModal: false });
     }).catch(err => {
       this.setState({ noteError: err.message });
@@ -147,14 +149,14 @@ export default class extends Page {
   }
 
   toggleCollect() {
-    const { userQuestion = {}, question = {}, questionNo = {} } = this.state;
+    const { userQuestion = {}, questionNo = {} } = this.state;
     if (!userQuestion.collect) {
-      My.addQuestionCollect(question.questionModule, questionNo.id).then(() => {
+      My.addQuestionCollect(userQuestion.questionModule, questionNo.id).then(() => {
         userQuestion.collect = true;
         this.setState({ userQuestion });
       });
     } else {
-      My.delQuestionCollect(question.questionModule, questionNo.id).then(() => {
+      My.delQuestionCollect(userQuestion.questionModule, questionNo.id).then(() => {
         userQuestion.collect = false;
         this.setState({ userQuestion });
       });
@@ -217,23 +219,15 @@ export default class extends Page {
   }
 
   renderHeader() {
-    const { report = {} } = this.state;
-    switch (report.paperModule) {
-      case 'examination':
-        return this.renderExaminationHeader();
-      default:
-        return this.renderExerciseHeader();
-    }
-  }
-
-  renderExaminationHeader() {
-
-  }
-
-  renderExerciseHeader() {
-    const { userQuestion = {}, questionNo = {}, paper = {}, showIds, questionNos = [], question = {} } = this.state;
-    return <div className="layout-header">
+    const { userQuestion = {}, questionNo = {}, paper = {}, report = {}, showIds, questionNos = [], question = {} } = this.state;
+    return <div className={'layout-header'}>
       <div className="left">
+        {paper.paperModule && paper.paperModule !== 'examination' && <div className="btn"><Button radius onClick={() => {
+          linkTo(`/paper/report/${report.id}`);
+        }}>返回练习报告</Button></div>}
+        {paper.paperModule && paper.paperModule === 'examination' && <div className="btn"><Button radius onClick={() => {
+          linkTo(`/paper/report/${report.id}`);
+        }}>返回成绩单</Button></div>}
         <div className="no">No.{userQuestion.stageNo || userQuestion.no}</div>
         <div className="title"><Assets name='book' />{paper.title}</div>
       </div>
@@ -268,8 +262,8 @@ export default class extends Page {
   }
 
   renderBase() {
-    const { questionStatus, userQuestion = {}, showIds } = this.state;
-    return <div className="layout" onClick={() => {
+    const { questionStatus, userQuestion = {}, paper = {}, showIds } = this.state;
+    return <div className={`layout ${paper.paperModule}`} onClick={() => {
       if (showIds) this.setState({ showIds: false });
     }}>
       {this.renderHeader()}

+ 3 - 3
front/project/www/routes/question/detail/index.js

@@ -1,7 +1,7 @@
 export default {
-  path: '/paper/question/:id',
-  key: 'paper-question',
-  title: '查看结果',
+  path: '/question/detail/:id',
+  key: 'question-detail',
+  title: '题目详情',
   needLogin: true,
   hideHeader: true,
   component() {

+ 0 - 27
front/project/www/routes/question/detail/page.js

@@ -31,33 +31,6 @@ export default class extends Page {
       showAnswer: false,
       noteField: AskTarget[0].key,
       showIds: false,
-
-      // question: {
-      //   content: {
-      //     typeset: 'one',
-      //   },
-      //   // questionType: 'awa',
-      //   answer: {
-      //     subject: [[{ text: 'like', uuid: 'hKyz' }]],
-      //     options: ['parallel'],
-      //   },
-      //   stem: "<p><span uuid='kBJe'>I</span> <span uuid='hKyz'>like</span> <span uuid='fQXh'>book</span></p>",
-      // },
-      // userQuestion: {
-      //   userAnswer: {
-      //     subject: [{ text: 'I', uuid: 'kBJe' }],
-      //     options: ['compare'],
-      //   },
-      //   no: 2,
-      // },
-      // paper: {
-      //   title: '长难句练习',
-      //   questionNumber: 20,
-      // },
-      // report: {
-      //   paperModule: 'sentence',
-      // },
-
     };
   }
 

+ 1 - 1
front/project/www/stores/question.js

@@ -162,7 +162,7 @@ export default class QuestionStore extends BaseStore {
    * @param {*} userReportId
    */
   questionReport(userReportId) {
-    return this.apiGet('/question/report/detail', { userReportId });
+    return this.apiGet('/question/report/question', { userReportId });
   }
 
   /**

+ 10 - 0
server/gateway-api/src/main/java/com/qxgmat/dto/extend/QuestionNoExtendDto.java

@@ -13,6 +13,8 @@ public class QuestionNoExtendDto {
 
     private Integer no;
 
+    private String module;
+
     private Integer totalNumber;
 
     private Integer totalCorrect;
@@ -76,4 +78,12 @@ public class QuestionNoExtendDto {
     public void setTotalTime(Integer totalTime) {
         this.totalTime = totalTime;
     }
+
+    public String getModule() {
+        return module;
+    }
+
+    public void setModule(String module) {
+        this.module = module;
+    }
 }

+ 10 - 0
server/gateway-api/src/main/java/com/qxgmat/dto/response/UserQuestionDetailDto.java

@@ -31,6 +31,8 @@ public class UserQuestionDetailDto {
 
     private JSONObject userAnswer;
 
+    private JSONObject setting;
+
     private JSONObject detail;
 
     private QuestionDetailExtendDto question;
@@ -198,4 +200,12 @@ public class UserQuestionDetailDto {
     public void setQuestionStatus(Integer questionStatus) {
         this.questionStatus = questionStatus;
     }
+
+    public JSONObject getSetting() {
+        return setting;
+    }
+
+    public void setSetting(JSONObject setting) {
+        this.setting = setting;
+    }
 }