Ver código fonte

增加EF选项

罗永浩 5 meses atrás
pai
commit
8091e65d3e

+ 17 - 15
addons/admin/src/views/exam/component/ExcelImport.vue

@@ -64,9 +64,9 @@
             <el-alert title="Excel格式要求" type="info" :closable="false" show-icon>
                 <template slot="default">
                     <p><strong>Excel格式要求:</strong></p>
-                    <p>• 第一行必须是标题行:题目类型、题目、选项A、选项B、选项C、选项D、正确答案、解析、分数</p>
+                    <p>• 第一行必须是标题行:题目类型、题目、选项A、选项B、选项C、选项D、选项E、选项F、正确答案、解析、分数</p>
                     <p>• 题目类型:单选题、多选题、判断题、填空题、问答题</p>
-                    <p>• 正确答案:单选题填选项字母(A/B/C/D),多选题用逗号分隔(A,B),判断题填对/错,填空题填答案,问答题可留空</p>
+                    <p>• 正确答案:单选题填选项字母(A/B/C/D/E/F),多选题用逗号分隔(A,B),判断题填对/错,填空题填答案,问答题可留空</p>
                     <p>• 分数:每道题的分值,建议单选题2-5分,多选题5-10分,判断题1-2分,填空题3-8分,问答题10-20分</p>
                     <p>• 支持富文本格式</p>
                 </template>
@@ -181,12 +181,12 @@ export default {
         downloadTemplate() {
             // 创建模板数据
             const templateData = [
-                ['题目类型', '题目', '选项A', '选项B', '选项C', '选项D', '正确答案', '解析', '分数'],
-                ['单选题', '这是一道单选题示例?', '选项A内容', '选项B内容', '选项C内容', '选项D内容', 'A', '这是单选题的解析', '5'],
-                ['多选题', '这是一道多选题示例?', '选项A内容', '选项B内容', '选项C内容', '选项D内容', 'A,B', '这是多选题的解析', '10'],
-                ['判断题', '这是一道判断题示例?', '', '', '', '', '对', '这是判断题的解析', '2'],
-                ['填空题', '这是一道填空题示例,答案是___', '', '', '', '', '答案内容', '这是填空题的解析', '8'],
-                ['问答题', '这是一道问答题示例?', '', '', '', '', '', '这是问答题的解析', '15']
+                ['题目类型', '题目', '选项A', '选项B', '选项C', '选项D', '选项E', '选项F', '正确答案', '解析', '分数'],
+                ['单选题', '这是一道单选题示例?', '选项A内容', '选项B内容', '选项C内容', '选项D内容', '', '', 'A', '这是单选题的解析', '5'],
+                ['多选题', '这是一道多选题示例?', '选项A内容', '选项B内容', '选项C内容', '选项D内容', '', '', 'A,B', '这是多选题的解析', '10'],
+                ['判断题', '这是一道判断题示例?', '', '', '', '', '', '', '对', '这是判断题的解析', '2'],
+                ['填空题', '这是一道填空题示例,答案是___', '', '', '', '', '', '', '答案内容', '这是填空题的解析', '8'],
+                ['问答题', '这是一道问答题示例?', '', '', '', '', '', '', '', '这是问答题的解析', '15']
             ];
 
             // 创建工作簿
@@ -201,6 +201,8 @@ export default {
                 { width: 20 }, // 选项B列
                 { width: 20 }, // 选项C列
                 { width: 20 }, // 选项D列
+                { width: 20 }, // 选项E列
+                { width: 20 }, // 选项F列
                 { width: 12 }, // 正确答案列
                 { width: 30 }, // 解析列
                 { width: 8 }   // 分数列
@@ -263,9 +265,9 @@ export default {
                 const nameWithoutExt = fileName.replace(/\.[^/.]+$/, "");
                 this.formData.name = this.formData.name || nameWithoutExt;
 
-                if (allData.length < 3) return this.$message.error("Excel 数据行数不足");
+                if (allData.length < 2) return this.$message.error("Excel 数据行数不足");
 
-                const rows = allData.slice(2).filter(r => r.some(c => c !== ""));
+                const rows = allData.slice(1).filter(r => r.some(c => c !== ""));
                 this.previewData = rows.map((r, index) => ({
                     _id: index,
                     topic_type: r[0] || "",
@@ -274,13 +276,13 @@ export default {
                     answer_B: r[3] || "",
                     answer_C: r[4] || "",
                     answer_D: r[5] || "",
-                    correct_answer: r[6] || "",
-                    topic_analysis: r[7] || "",
-                    score: Number(r[8]) || 0,
+                    answer_E: r[6] || "",
+                    answer_F: r[7] || "",
+                    correct_answer: r[8] || "",
+                    topic_analysis: r[9] || "",
+                    score: Number(r[10]) || 0,
                     show_type: 1, // 导入的数据固定为文本类型
                     answer_type: 2, // 导入的数据固定为不可提交图片答案
-                    answer_E: "", // 默认空值
-                    answer_F: "", // 默认空值
                     topic_image_id: "", // 默认空值
                     sort: index + 1, // 按顺序排序
                     status: 1, // 默认有效状态

+ 8 - 4
addons/admin/src/views/exam/component/TopicManager.vue

@@ -284,7 +284,7 @@ export default {
                     { required: true, message: '请选择或输入正确答案', trigger: 'blur' }
                 ]
             },
-            options: ['', '', '', ''],
+            options: ['', '', '', '', '', ''],
             currentTopic: null,
             // 内容查看弹窗
             contentDialogVisible: false,
@@ -400,6 +400,8 @@ export default {
                 topic.answer_B || '',
                 topic.answer_C || '',
                 topic.answer_D || '',
+                topic.answer_E || '',
+                topic.answer_F || '',
             ];
 
             console.log('编辑后form数据:', this.form);
@@ -471,7 +473,7 @@ export default {
 
                 try {
                     // 保存选项
-                    ['A', 'B', 'C', 'D'].forEach((letter, index) => {
+                    ['A', 'B', 'C', 'D', 'E', 'F'].forEach((letter, index) => {
                         this.form[`answer_${letter}`] = this.options[index] || '';
                     });
 
@@ -524,9 +526,11 @@ export default {
                 answer_A: '',
                 answer_B: '',
                 answer_C: '',
-                answer_D: ''
+                answer_D: '',
+                answer_E: '',
+                answer_F: ''
             };
-            this.options = ['', '', '', ''];
+            this.options = ['', '', '', '', '', ''];
             this.editingIndex = -1;
 
             if (this.$refs.formRef) {