zhangjie 2 жил өмнө
parent
commit
8452459110

+ 17 - 1
src/assets/styles/pages.scss

@@ -930,7 +930,7 @@
   }
 
   .build-step-title {
-    padding-bottom: 20px;
+    padding-bottom: 10px;
     border-bottom: 1px solid #f0f2f6;
     display: flex;
     justify-content: space-between;
@@ -952,6 +952,22 @@
         background-color: $--color-primary;
         margin-right: 10px;
       }
+
+      span {
+        display: inline-block;
+        vertical-align: middle;
+      }
     }
   }
 }
+
+.build-paper-simple {
+  .build-step-title {
+    margin-bottom: 10px;
+  }
+
+  .el-input-number .el-input__inner {
+    border: none;
+    width: 180px;
+  }
+}

+ 9 - 2
src/modules/paper/components/BuildPaperAuto.vue

@@ -1,5 +1,10 @@
 <template>
-  <div class="build-paper-auto">BuildPaperAuto</div>
+  <div class="build-paper-auto">
+    <div class="build-step-title">
+      <h3><span>试卷结构设置</span></h3>
+      <el-button type="primary" @click="toSelectStruct">选择试卷结构</el-button>
+    </div>
+  </div>
 </template>
 
 <script>
@@ -8,6 +13,8 @@ export default {
   data() {
     return {};
   },
-  methods: {},
+  methods: {
+    toSelectStruct() {},
+  },
 };
 </script>

+ 103 - 3
src/modules/paper/components/BuildPaperSimple.vue

@@ -1,17 +1,117 @@
 <template>
   <div class="build-paper-simple">
     <div class="build-step-title">
-      <h3></h3>
+      <h3><span>确定构成</span></h3>
     </div>
+    <el-table :data="baseDataList" :span-method="spanMethod">
+      <el-table-column label="题型" align="center">
+        <el-table-column
+          label="题型大类"
+          prop="questionMainTypeName"
+          align="center"
+          min-width="120"
+        ></el-table-column>
+        <el-table-column
+          label="题型小类"
+          prop="questionTypeName"
+          align="center"
+          min-width="120"
+        ></el-table-column>
+      </el-table-column>
+      <el-table-column
+        label="试题数量"
+        prop="questionCount"
+        align="center"
+        min-width="100"
+      ></el-table-column>
+      <el-table-column
+        label="抽取试题数量"
+        prop="questionSelectCount"
+        min-width="200"
+        align="center"
+      >
+        <template slot-scope="scope">
+          <el-input-number
+            v-model="scope.row.questionSelectCount"
+            placeholder="请输入抽取试题数量"
+            :step="1"
+            :min="1"
+            :max="999"
+            :controls="false"
+            :precision="0"
+            step-strictly
+          ></el-input-number>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="试题分值"
+        prop="questionScore"
+        min-width="200"
+        align="center"
+      >
+        <template slot-scope="scope">
+          <el-input-number
+            v-model="scope.row.questionScore"
+            placeholder="请输入抽取试题分值"
+            :step="1"
+            :min="1"
+            :max="999"
+            :controls="false"
+            :precision="0"
+            step-strictly
+          ></el-input-number>
+        </template>
+      </el-table-column>
+    </el-table>
   </div>
 </template>
 
 <script>
+import { questionDistributionStatisticsApi } from "../../question/api";
+
 export default {
   name: "BuildPaperSimple",
   data() {
-    return {};
+    return {
+      baseDataList: [],
+    };
+  },
+  mounted() {
+    this.getBaseData();
+  },
+  methods: {
+    spanMethod({ row, columnIndex }) {
+      if (columnIndex === 0) {
+        return {
+          rowspan: row.rowspan || 0,
+          colspan: 1,
+        };
+      }
+    },
+    async getBaseData() {
+      const res = await questionDistributionStatisticsApi(this.courseId);
+      // console.log(res.data);
+      // parse data
+      let baseDataList = [];
+      res.data.forEach((mainGroup) => {
+        const rowspan = mainGroup.questionTypeStatisticList.length;
+        mainGroup.questionTypeStatisticList.forEach((quesItem, index) => {
+          let nitem = {
+            questionMainTypeName: mainGroup.questionMainTypeName,
+            questionTypeName: quesItem.questionTypeName,
+            questionCount: quesItem.questionCount,
+            questionSelectCount: undefined,
+            questionScore: undefined,
+          };
+          if (index === 0) nitem.rowspan = rowspan;
+          baseDataList.push(nitem);
+        });
+      });
+      this.baseDataList = baseDataList;
+    },
+    getData() {
+      return this.baseDataList;
+    },
   },
-  methods: {},
 };
 </script>

+ 87 - 0
src/modules/paper/components/ModifyDetailStruct.vue

@@ -0,0 +1,87 @@
+<template>
+  <el-dialog
+    title="大题信息"
+    :visible.sync="modalIsShow"
+    width="520px"
+    :modal="false"
+    append-to-body
+    custom-class="side-dialog"
+  >
+    <el-form
+      ref="paperDetailStructForm"
+      :model="paperDetailStructForm"
+      :rules="rules"
+      label-position="right"
+      label-width="90px"
+      inline-message
+      class="form-tight"
+    >
+      <el-form-item label="大题名称" prop="name">
+        <el-input
+          v-model="paperDetailStructForm.name"
+          class="dialog-input-width"
+          placeholder="请输入题型名称"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="大题描述" prop="remark">
+        <v-editor
+          v-model="paperDetailStructForm.remark"
+          placeholder="请输入大题描述"
+          :enable-formula="false"
+        ></v-editor>
+      </el-form-item>
+    </el-form>
+    <div slot="footer">
+      <el-button
+        v-if="dialogType == 'ADD'"
+        type="primary"
+        @click="saveDetail('paperDetailStructForm')"
+        >保存</el-button
+      >
+      <el-button
+        v-else
+        type="primary"
+        @click="saveEditDetail('paperDetailStructForm')"
+        >保存</el-button
+      >
+      <el-button type="danger" plain @click="resetForm('paperDetailStructForm')"
+        >重置</el-button
+      >
+      <el-button
+        type="danger"
+        plain
+        @click="closeDialog('paperDetailStructForm')"
+        >返回</el-button
+      >
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+const initModalForm = {
+  importType: "word",
+  courseId: "",
+  userPaper: false,
+  scoreCheck: false,
+};
+export default {
+  name: "ModifyDetailStruct",
+  data() {
+    return {
+      modalIsShow: false,
+    };
+  },
+  methods: {
+    visibleChange() {
+      this.modalForm = { ...initModalForm };
+      this.fileData = {};
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+  },
+};
+</script>

+ 4 - 2
src/modules/question/api.js

@@ -49,8 +49,10 @@ export function importQuestionApi(data, headData) {
   });
 }
 export function updateQuestionApi(data) {
-  // return $httpWithMsg.post(`${QUESTION_API}/paper/updateQuestion/`, data);
-  return Promise.resolve(data);
+  return $httpWithMsg.post(`${QUESTION_API}/question/save`, data, {
+    params: { courseId: data.courseId },
+  });
+  // return Promise.resolve(data);
 }
 // statistics
 import distributionData from "./datas/distributionData.json";