EmmaBaBa пре 7 месеци
родитељ
комит
763ea218b5
3 измењених фајлова са 126 додато и 80 уклоњено
  1. 1 1
      src/assets/css/common.css
  2. 105 59
      src/components/question-info.vue
  3. 20 20
      src/mock/gpsren.js

+ 1 - 1
src/assets/css/common.css

@@ -2,7 +2,7 @@
   margin: 0;
   padding: 0;
   box-sizing: border-box;
-}
+} 
 
 .el-submenu_icon-arrow {
   color: #fff !important;

+ 105 - 59
src/components/question-info.vue

@@ -22,8 +22,9 @@
       </div>
 
       <el-dialog title="答题卡" :visible.sync="openAnswerFlag" width="30%">
-        <template >
-          <el-button v-for="(question, index) in questionAnswerDataList" :key="++index" size="medium" @click="selectQuestion(index)" circle>{{index}}</el-button>
+        <template>
+          <el-button v-for="(question, index) in questionAnswerDataList" :key="++index" size="medium"
+            @click="selectQuestion(index)" circle>{{index}}</el-button>
         </template>
       </el-dialog>
 
@@ -125,7 +126,7 @@
         </template>
 -->
     <template>
-      <el-dialog :visible.sync="dialogVisible" width="80%" top="0" custom-class="GPSREN" :before-close="handleClose">
+      <el-dialog :visible.sync="dialogVisible" fullscreen top="0" custom-class="GPSREN" :before-close="handleClose">
 
         <div slot="title" class="cust-title">
           GPS-REN学习法
@@ -145,7 +146,7 @@
                 style="border: #eee 1px solid;background-color: aliceblue;padding: 10px;border-radius: 10px;">
                 <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
                   <span>P</span>
-                  <span>描述问题</span>
+                  <span>问题定义</span>
                 </div>
               </div>
             </el-step>
@@ -154,7 +155,7 @@
                 style="border: #eee 1px solid;background-color: aliceblue;padding: 10px;border-radius: 10px;">
                 <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
                   <span>S</span>
-                  <span>拆解问题</span>
+                  <span>系统拆解</span>
                 </div>
               </div>
             </el-step>
@@ -163,7 +164,7 @@
                 style="border: #eee 1px solid;background-color: aliceblue;padding: 10px;border-radius: 10px;">
                 <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
                   <span>R</span>
-                  <span>结果</span>
+                  <span>结果整合</span>
                 </div>
               </div>
             </el-step>
@@ -172,7 +173,7 @@
                 style="border: #eee 1px solid;background-color: aliceblue;padding: 10px;border-radius: 10px;">
                 <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
                   <span>E</span>
-                  <span>评估方案</span>
+                  <span>结果评估</span>
                 </div>
               </div>
             </el-step>
@@ -181,7 +182,7 @@
                 style="border: #eee 1px solid;background-color: aliceblue;padding: 10px;border-radius: 10px;">
                 <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
                   <span>N</span>
-                  <span>补充了什么新知识</span>
+                  <span>总结新知识</span>
                 </div>
               </div>
             </el-step>
@@ -189,7 +190,7 @@
           <!-- <div>
             <el-button icon="el-icon-discover" size="small" type="success">AI助手</el-button>
           </div> -->
-          <br/>
+          <br />
           <el-col :span="24" v-if="active==0">
             <el-form-item class="cust-label">
 
@@ -243,7 +244,7 @@
             @click="()=>{active--}">上一步</el-button>
           <el-button icon="el-icon-arrow-right" size="small" type="primary" plain v-if="active<4"
             @click="onNext">下一步</el-button>
-          <el-button type="primary" @click="onNext" size="small" v-if="active==4" >提交</el-button>
+          <el-button type="primary" @click="onNext" size="small" v-if="active==4">提交</el-button>
           <el-button @click="dialogVisible = false" size="small">取 消</el-button>
         </span>
       </el-dialog>
@@ -251,7 +252,7 @@
 
     <template>
       <el-dialog :visible.sync="dialogResultVisible" width="50%" top="0" custom-class="GPSREN"
-      close-on-click-modal="false">
+        close-on-click-modal="false">
         <div slot="title" class="cust-title">
           AI评价 <i :class="aiTestClass"></i>
         </div>
@@ -262,8 +263,8 @@
               <el-card>
                 <h3>{{ item.title }}</h3>
                 <p style="color:blue;font-weight: bold;">{{item.process}}</p>
-                <br> 
-                <p   v-html="item.content"></p>
+                <br>
+                <p v-html="item.content"></p>
               </el-card>
             </el-timeline-item>
           </el-timeline>
@@ -272,25 +273,26 @@
         <span slot="footer" class="dialog-footer" v-if="aiTestClass=='el-icon-reading'">
           <el-button icon="el-icon-arrow-right" size="small" type="primary" plain v-if="active<4"
             @click="()=>{active++;dialogResultVisible = false;}">下一步</el-button>
-            <!-- <el-button icon="el-icon-arrow-right" size="small" type="primary" plain v-else-if="active==4"
+          <!-- <el-button icon="el-icon-arrow-right" size="small" type="primary" plain v-else-if="active==4"
             @click="()=>{active++;dialogResultVisible = false;}">提交</el-button> -->
-          <el-button type="primary" @click="()=>{dialogResultVisible = false;dialogVisible = false}" size="small" v-else-if="active==4">提交</el-button>
+          <el-button type="primary" @click="()=>{dialogResultVisible = false;dialogVisible = false}" size="small"
+            v-else-if="active==4">提交</el-button>
           <el-button @click="dialogResultVisible = false" size="small">修改</el-button>
           <el-button @click="()=>{dialogResultVisible = false; active=0;}" size="small">重新答题</el-button>
         </span>
       </el-dialog>
     </template>
-  </div> 
+  </div>
 </template>
 
 <script>
 import { getDictValueByType } from '../api/dict'
 
-import { mockAI,steps } from '../mock/gpsren';
+import { mockAI, steps } from '../mock/gpsren';
 let thisPage = null
 
 let stepMapToCnt = {}
- 
+
 export default {
   name: 'question-info',
   props: {
@@ -352,14 +354,33 @@ export default {
       questionAnswerDataList: [], // 试题答案列表
       questionTotal: 0,
       dialogVisible: false,
-      form: {},
+      form: {
+        r:`//根据用户输入的P问题定义,S系统拆解,自动生成代码
+public void startMove() {
+    int n = 3;
+    char start = 'A';
+    char auxiliary = 'B';
+    char target = 'C';
+    hanoi(n, start, auxiliary, target);
+}
+
+public void hanoi(int n, char start, char auxiliary, char target) {
+    if (n == 1) {
+        System.out.printf("Move disk %d from %c to %c%n", n, start, target);
+        return;
+    }
+    hanoi(n - 1, start, target, auxiliary);
+    System.out.printf("Move disk %d from %c to %c%n", n, start, target);
+    hanoi(n - 1, auxiliary, start, target);
+}`
+      },
       config: {
         zIndex: 0
       },
       active: 0,
       dialogResultVisible: false,
       aiTestItem: [],
-      aiTestClass:"el-icon-reading",
+      aiTestClass: "el-icon-reading",
     }
   },
 
@@ -383,36 +404,36 @@ export default {
     onNext() {
       //下一步,即时AI评价
 
-     
-        //弹出AI验证界面
-        this.aiTestItem.length = 0
-        this.dialogResultVisible = true
-        this.aiTestClass = "el-icon-loading"
-        let i = 0
-
-        let step = steps[this.active]
-        stepMapToCnt[step] = stepMapToCnt[step] || 0
-        
-        let run = () => {
-          let st = setTimeout(() => {
-            let ts =  new Date().toLocaleString()
-            let p = Math.floor(50 + Math.random() * 40)
-            let data = mockAI[step][stepMapToCnt[step]]
-            this.aiTestItem.push({
-              title: data.title,
-              process: data.aires.p,
-              content: data.aires.c,
-              time: ts
-            })
-            this.aiTestClass = "el-icon-reading"
-            stepMapToCnt[step]++
-            if(stepMapToCnt[step]>=mockAI[step].length){
-              stepMapToCnt[step] = mockAI[step].length-1
-            }
-          }, 2000)
-        }
 
-        run()
+      //弹出AI验证界面
+      this.aiTestItem.length = 0
+      this.dialogResultVisible = true
+      this.aiTestClass = "el-icon-loading"
+      let i = 0
+
+      let step = steps[this.active]
+      stepMapToCnt[step] = stepMapToCnt[step] || 0
+
+      let run = () => {
+        let st = setTimeout(() => {
+          let ts = new Date().toLocaleString()
+          let p = Math.floor(50 + Math.random() * 40)
+          let data = mockAI[step][stepMapToCnt[step]]
+          this.aiTestItem.push({
+            title: data.title,
+            process: data.aires.p,
+            content: data.aires.c,
+            time: ts
+          })
+          this.aiTestClass = "el-icon-reading"
+          stepMapToCnt[step]++
+          if (stepMapToCnt[step] >= mockAI[step].length) {
+            stepMapToCnt[step] = mockAI[step].length - 1
+          }
+        }, 2000)
+      }
+
+      run()
       // if (this.active == 3) {
       // } else {
       //   this.active++
@@ -578,7 +599,17 @@ export default {
 }
 </script>
 
-<style lang="scss">
+<style lang="scss"> 
+
+.el-dialog__header {
+  background-color: #477efa !important;
+  color: aliceblue !important;
+}
+
+.el-dialog__close{
+  color: aliceblue !important;
+}
+
 .GPSREN {
   margin-bottom: 0px !important;
 
@@ -704,19 +735,34 @@ export default {
 
 
 .typing-effect {
-  overflow: hidden; /* 确保超出部分的内容不显示 */
-  border-right: .15em solid orange; /* 光标效果 */
-  white-space: nowrap; /* 防止文本换行 */
+  overflow: hidden;
+  /* 确保超出部分的内容不显示 */
+  border-right: .15em solid orange;
+  /* 光标效果 */
+  white-space: nowrap;
+  /* 防止文本换行 */
   animation: typing 3s steps(20, end), blink-caret .75s step-end infinite;
 }
- 
+
 @keyframes typing {
-  from { width: 0 }
-  to { width: 100% }
+  from {
+    width: 0
+  }
+
+  to {
+    width: 100%
+  }
 }
- 
+
 @keyframes blink-caret {
-  from, to { border-color: transparent }
-  50% { border-color: orange }
+
+  from,
+  to {
+    border-color: transparent
+  }
+
+  50% {
+    border-color: orange
+  }
 }
 </style>

+ 20 - 20
src/mock/gpsren.js

@@ -3,7 +3,7 @@ const mockAI = {
     "P": [{
 
         //第一次回答
-        "title": "P(描述问题)",
+        "title": "P(问题定义)",
         "prompt": "",
 
         //这个回答不够专业的得分
@@ -18,7 +18,7 @@ const mockAI = {
     }, {
 
         //第二次回答
-        "title": "P(描述问题)",
+        "title": "P(问题定义)",
         "prompt": "",
 
         //这个是回答正确的描述,赋值
@@ -35,7 +35,7 @@ const mockAI = {
     "S": [{
 
         //第一次回答
-        "title": "S(拆解问题)",
+        "title": "S(系统拆解)",
         "prompt": "",
 
         //这个回答不够专业的得分
@@ -50,7 +50,7 @@ const mockAI = {
     }, {
 
       //第二次回答
-      "title": "S(拆解问题)",
+      "title": "S(系统拆解)",
       "prompt": "",
 
       //这个是回答正确的描述,赋值
@@ -66,7 +66,7 @@ const mockAI = {
     "R": [{
 
         //第一次回答
-        "title": "R(结果)",
+        "title": "R(结果整合)",
         "prompt": "",
         //这个回答不够专业的得分
         "aires": {
@@ -94,7 +94,7 @@ const mockAI = {
     }, {
 
         //第二次回答
-        "title": "R(结果)",
+        "title": "R(结果整合)",
         "prompt": "",
 
         //这个是回答正确的描述,赋值
@@ -124,7 +124,7 @@ const mockAI = {
     "E": [{
 
         //第一次回答
-        "title": "E(评估方案)",
+        "title": "E(结果评估)",
         "prompt": "",
 
         //这个回答不够专业的得分
@@ -138,7 +138,7 @@ const mockAI = {
     }, {
 
         //第二次回答
-        "title": "E(评估方案)",
+        "title": "E(结果评估)",
         "prompt": "",
 
         //这个是回答正确的描述,赋值
@@ -153,39 +153,39 @@ const mockAI = {
     "N": [{
 
         //第一次回答
-        "title": "N(补充了什么新知识)",
+        "title": "N(总结新知识)",
         "prompt": "",
 
         //这个回答不够专业的得分
         "aires": {
-            "c": `<p style=\"color:  blue;font-weight: bold;\">AI解析:</p><div><strong>关联性(2/5):</strong><br>1.对于理解汉诺塔思路与后续程序评估要点(功能实现、输出合规性、性能及边界处理)之间的关联阐述不足。理解汉诺塔思路是基础,在此基础上从功能实现角度看,思路决定了程序能否正确实现盘子移动的功能;输出合规性方面,思路指导着如何规范地输出移动步骤;性能上,思路影响着算法的时间和空间复杂度;边界处理则基于思路明确盘子数量等边界情况。但回答中未具体说明这些关联,只是简单罗列,关联性体现不充分。
+            "c": `<p style=\"color:  blue;font-weight: bold;\">AI解析:</p><div><strong>关联性:</strong><br>1.对于理解汉诺塔思路与后续程序评估要点(功能实现、输出合规性、性能及边界处理)之间的关联阐述不足。理解汉诺塔思路是基础,在此基础上从功能实现角度看,思路决定了程序能否正确实现盘子移动的功能;输出合规性方面,思路指导着如何规范地输出移动步骤;性能上,思路影响着算法的时间和空间复杂度;边界处理则基于思路明确盘子数量等边界情况。但回答中未具体说明这些关联,只是简单罗列,关联性体现不充分。
                     <br>2.从整体看,理解汉诺塔思路是对问题本身的认知,程序评估要点是对基于该思路实现的程序的考量,二者存在内在逻辑联系,但回答未深入剖析这种联系,关联性方面存在欠缺。
-                    <div><strong>新增性(2/5):</strong><br>1.对于汉诺塔问题来说,明确提出从功能实现、输出合规性、性能及边界处理这几个角度评估程序是具有新增性的内容。在学习汉诺塔问题时,通常重点在于理解递归解决问题的思路,而将程序评估从这几个维度进行划分,是对解决汉诺塔问题后进一步对程序进行分析的新视角。
+                    <div><strong>新增性:</strong><br>1.对于汉诺塔问题来说,明确提出从功能实现、输出合规性、性能及边界处理这几个角度评估程序是具有新增性的内容。在学习汉诺塔问题时,通常重点在于理解递归解决问题的思路,而将程序评估从这几个维度进行划分,是对解决汉诺塔问题后进一步对程序进行分析的新视角。
                     <br>2.不过,仅提出这些评估角度,没有对每个角度进行更深入的解释或举例说明,新增内容的丰富度不够。比如在功能实现方面,没有说明具体的判断标准;输出合规性上,未提及怎样的输出是合规的;性能方面,未阐述如何分析时间和空间复杂度;边界处理上,没有指出可能存在的边界情况等。
-                    <div><strong>联结性(1/5):</strong><br>1.回答中没有很好地联结已有的知识。对于汉诺塔问题,已有的知识包括递归算法的概念、函数调用等。从功能实现角度,可联结已学的递归函数调用知识来理解程序如何实现盘子移动;输出合规性可联结已有的数据输出格式知识;性能方面可联结时间复杂度和空间复杂度的相关知识;边界处理可联结数据范围等知识。但回答中没有进行这些联结,只是孤立地提出理解思路和评估要点,没有建立起新旧知识之间的桥梁。
+                    <div><strong>联结性:</strong><br>1.回答中没有很好地联结已有的知识。对于汉诺塔问题,已有的知识包括递归算法的概念、函数调用等。从功能实现角度,可联结已学的递归函数调用知识来理解程序如何实现盘子移动;输出合规性可联结已有的数据输出格式知识;性能方面可联结时间复杂度和空间复杂度的相关知识;边界处理可联结数据范围等知识。但回答中没有进行这些联结,只是孤立地提出理解思路和评估要点,没有建立起新旧知识之间的桥梁。
                     <br>2.没有利用已有的编程和算法知识来进一步解释这几个评估要点,使得新知识(评估角度)与旧知识(汉诺塔问题及相关编程算法知识)之间缺乏联系,不利于对新知识的理解和应用。
-                    <div><strong>准确性(2/5):</strong><br>表述上 “理解了汉诺塔思路” 比较笼统,没有具体说明理解到什么程度以及包含哪些关键内容。对于程序评估要点,“功能实现、输出合规性、性能及边界处理” 的表述相对准确,但缺乏进一步的细化和解释,导致整体表述不够准确完整。
+                    <div><strong>准确性:</strong><br>表述上 “理解了汉诺塔思路” 比较笼统,没有具体说明理解到什么程度以及包含哪些关键内容。对于程序评估要点,“功能实现、输出合规性、性能及边界处理” 的表述相对准确,但缺乏进一步的细化和解释,导致整体表述不够准确完整。
                     <br>没有对每个评估要点进行准确的界定和说明,例如功能实现中关于如何判断功能正确实现没有具体内容;性能方面没有准确指出时间复杂度和空间复杂度的分析方向等。
                     <div>总体而言,该回答在关联性、新增性、联结性和准确性方面都存在一定的不足,需要进一步补充和完善,才能更清晰准确地表达关于汉诺塔问题和程序评估的相关内容</div>`,
-            "p": "达成度:(7/20)"
+            "p": "高度疑似AI撰写"
         }
     }, {
 
         //第二次回答
-        "title": "N(补充了什么新知识)",
+        "title": "N(总结新知识)",
         "prompt": "",
 
         //这个是回答正确的描述,赋值
         "aires": {
-          "c": `<p style=\"color:  blue;font-weight: bold;\">AI解析:</p><div><strong>关联性(5/5):</strong>这句话提到的“理解了汉诺塔思路”与汉诺塔问题的解决过程直接相关,是解决该问题的基础。同时,“程序评估需关注功能实现、输出合规性、性能及边界处理”也与汉诺塔问题的程序实现和验证过程密切相关,是确保程序正确性和可靠性的关键环节。
-                <div><strong>新增性(3/5):</strong>“理解了汉诺塔思路”是一个相对宽泛的表述,没有明确指出具体的新知识或技能。对于已经接触过递归算法的学习者来说,可能没有新增性。
+          "c": `<p style=\"color:  blue;font-weight: bold;\">AI解析:</p><div><strong>关联性:</strong>这句话提到的“理解了汉诺塔思路”与汉诺塔问题的解决过程直接相关,是解决该问题的基础。同时,“程序评估需关注功能实现、输出合规性、性能及边界处理”也与汉诺塔问题的程序实现和验证过程密切相关,是确保程序正确性和可靠性的关键环节。
+                <div><strong>新增性:</strong>“理解了汉诺塔思路”是一个相对宽泛的表述,没有明确指出具体的新知识或技能。对于已经接触过递归算法的学习者来说,可能没有新增性。
 “程序评估需关注功能实现、输出合规性、性能及边界处理”是一个新增性的知识点,因为它明确指出了程序评估的多个关键方面,这些内容在之前的讨论中没有详细提及。
-                <div><strong>联结性(5/5):</strong>“理解了汉诺塔思路”可以联结到递归算法和分治思想,这是之前学习的基础知识。通过汉诺塔问题,进一步加深了对这些基础知识的理解。
+                <div><strong>联结性:</strong>“理解了汉诺塔思路”可以联结到递归算法和分治思想,这是之前学习的基础知识。通过汉诺塔问题,进一步加深了对这些基础知识的理解。
 “程序评估需关注功能实现、输出合规性、性能及边界处理”可以联结到软件测试和程序设计的基本原则。这些内容与之前学习的程序设计和测试知识相呼应,进一步扩展了知识体系。
-                <div><strong>准确性(4/5):</strong>“理解了汉诺塔思路”是一个较为模糊的表述,缺乏具体性。它没有明确指出理解的具体内容,例如递归终止条件、递归调用等。
+                <div><strong>准确性:</strong>“理解了汉诺塔思路”是一个较为模糊的表述,缺乏具体性。它没有明确指出理解的具体内容,例如递归终止条件、递归调用等。
 “程序评估需关注功能实现、输出合规性、性能及边界处理”是一个准确且具体的表述。它明确指出了程序评估的四个方面,符合软件开发和测试的实际需求。
                 <div>整体上是合理的,但在“新增性”和“准确性”方面可以进一步优化。</div>`,
-          "p": "达成度:(17/20)"
+          "p": "轻微疑似AI撰写"
         }
     }]
 }