lsc 3 тижнів тому
батько
коміт
e911f02c9c

+ 31 - 27
src/components/components/cocoFlowDia.vue

@@ -16,7 +16,7 @@
            
            
             <div  style="margin-bottom: 20px;" v-for="(item,index) in listData" :key="index">
             <div  style="margin-bottom: 20px;" v-for="(item,index) in listData" :key="index">
                 <div style="margin-bottom: 15px;font-size: 20px;font-weight: 600;color: #000;">第{{ index + 1}}阶段</div>
                 <div style="margin-bottom: 15px;font-size: 20px;font-weight: 600;color: #000;">第{{ index + 1}}阶段</div>
-                <div v-for="po in item.messages" :key="item">
+                <div v-for="(po, index2) in item.messages" :key="index+'-'+index2">
                     <div class="left" v-if="po.role == 'assistant'">
                     <div class="left" v-if="po.role == 'assistant'">
                             <div class="TName">小可AI助手</div>:
                             <div class="TName">小可AI助手</div>:
                             <div class="con" v-html="MarkdownT(po.content)"></div>
                             <div class="con" v-html="MarkdownT(po.content)"></div>
@@ -66,7 +66,11 @@ import MarkdownIt from "markdown-it";
             openAppWork(val){
             openAppWork(val){
                 console.log(val);
                 console.log(val);
                 this.username = val.sName
                 this.username = val.sName
-                this.listData = JSON.parse(val.works)
+                try {
+                    this.listData = JSON.parse(val.works)
+                } catch (error) {
+                    this.listData = []
+                }
                 this.FlowVisible = true;
                 this.FlowVisible = true;
             },
             },
             handleClose(){
             handleClose(){
@@ -78,31 +82,6 @@ import MarkdownIt from "markdown-it";
 </script>
 </script>
 
 
 <style scoped>
 <style scoped>
-    .TName{
-        /* font-size: 14px; */
-        color: #4472C4;
-        margin-bottom: 5px;
-        font-weight: 600;
-        width: 80px;
-        flex-shrink: 0;
-        overflow: hidden;
-        white-space: nowrap;
-        text-overflow: ellipsis;
-    }
-    .con{
-        margin-left: 10px;
-        /* font-size: 14px; */
-        color: #000;
-    }
-    .left{
-        display: flex;
-        font-size: 16px !important;
-        justify-content: flex-start;
-        margin-bottom: 10px;
-        line-height: 25px;
-        flex: 1;
-        border-bottom: 1px  #e7e7e7 solid;
-    }
     .dialog_diy {
     .dialog_diy {
         min-width: 800px;
         min-width: 800px;
     }
     }
@@ -144,4 +123,29 @@ import MarkdownIt from "markdown-it";
         justify-content: space-between;
         justify-content: space-between;
         align-items: center;
         align-items: center;
     }
     }
+    .TName{
+        /* font-size: 14px; */
+        color: #4472C4;
+        margin-bottom: 5px;
+        font-weight: 600;
+        width: 80px;
+        flex-shrink: 0;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+    }
+    .con{
+        margin-left: 10px;
+        /* font-size: 14px; */
+        color: #000;
+    }
+    .left{
+        display: flex;
+        font-size: 16px !important;
+        justify-content: flex-start;
+        margin-bottom: 10px;
+        line-height: 25px;
+        flex: 1;
+        border-bottom: 1px  #e7e7e7 solid;
+    }
 </style>
 </style>

+ 72 - 3
src/components/easy2/commpont/markDialog.vue

@@ -121,6 +121,7 @@
                 (currentUid.type == 1 ||
                 (currentUid.type == 1 ||
                   currentUid.type == 10 ||
                   currentUid.type == 10 ||
                   currentUid.type == 13 ||
                   currentUid.type == 13 ||
+                  currentUid.type == 20 ||
                   isMarkCom == 1) &&
                   isMarkCom == 1) &&
                   !isMarkSco &&
                   !isMarkSco &&
                   tType == 1
                   tType == 1
@@ -154,6 +155,7 @@
                   (currentUid.type == 1 ||
                   (currentUid.type == 1 ||
                     currentUid.type == 10 ||
                     currentUid.type == 10 ||
                     currentUid.type == 13 ||
                     currentUid.type == 13 ||
+                    currentUid.type == 20 ||
                     isMarkCom == 1) &&
                     isMarkCom == 1) &&
                     !isMarkSco
                     !isMarkSco
                 "
                 "
@@ -170,6 +172,7 @@
                   (currentUid.type == 1 ||
                   (currentUid.type == 1 ||
                     currentUid.type == 10 ||
                     currentUid.type == 10 ||
                     currentUid.type == 13 ||
                     currentUid.type == 13 ||
+                    currentUid.type == 20 ||
                     isMarkCom == 1) &&
                     isMarkCom == 1) &&
                     isMarkSco
                     isMarkSco
                 "
                 "
@@ -375,6 +378,22 @@
               style="width: 90%; height: 95%; margin: 0 0 0 30px"
               style="width: 90%; height: 95%; margin: 0 0 0 30px"
             ></video-player>
             ></video-player>
           </div>
           </div>
+          <div v-if="currentUid.type == 20" style="height: 100%;" class="cocoflow_box">
+            <div  style="margin-bottom: 20px;" v-for="(item,index) in JSON.parse(currentUid.content)" :key="index">
+                <div style="margin-bottom: 15px;font-size: 20px;font-weight: 600;color: #000;">第{{ index + 1}}阶段</div>
+                <div v-for="(po, index2) in item.messages" :key="index+'-'+index2">
+                    <div class="cocoflow_left" v-if="po.role == 'assistant'">
+                            <div class="cocoflow_TName">小可AI助手</div>:
+                            <div class="cocoflow_con" v-html="MarkdownT(po.content)"></div>
+                    </div>
+
+                    <div class="cocoflow_left" v-if="po.role == 'user'">
+                            <div class="cocoflow_TName">{{ currentUid.name }}</div>:
+                            <div class="cocoflow_con" v-html="po.content"></div>
+                    </div>
+                </div>
+            </div>
+          </div>
         </div>
         </div>
         <!-- 点赞与评论  -->
         <!-- 点赞与评论  -->
         <div v-if="cutNum == 1">
         <div v-if="cutNum == 1">
@@ -605,7 +624,18 @@ export default {
       if (c == this.scoTitList.length) return c;
       if (c == this.scoTitList.length) return c;
 
 
       return 0;
       return 0;
-    }
+    },
+    MarkdownT() {
+      return function (c) {
+        let md = new MarkdownIt({
+          html: true, // 允许渲染 HTML
+          linkify: true, // 自动将URL链接转化为可点击链接
+          typographer: true, // 启用排版规则(如替换 `"` 为 “)
+        });
+        return c
+          ? md.render(c) : "";
+      };
+    },
   },
   },
   mounted() {
   mounted() {
     if (this.tool.eList && this.tool.eList.length) {
     if (this.tool.eList && this.tool.eList.length) {
@@ -1458,7 +1488,7 @@ export default {
               this.currentUid = e;
               this.currentUid = e;
               // console.log('e',e);
               // console.log('e',e);
 
 
-              // 1截图  3问答 4word文档类型 5视频  10表格 13文档
+              // 1截图  3问答 4word文档类型 5视频  10表格 13文档 20应用中心作业
 
 
               if (
               if (
                 this.currentUid.type == 3 ||
                 this.currentUid.type == 3 ||
@@ -1489,6 +1519,15 @@ export default {
                   this.TxtMd = res.data;
                   this.TxtMd = res.data;
                 });
                 });
               }
               }
+              if (this.currentUid.type == 12) {
+                this.TxtMd = "";
+                getFile(this.currentUid.content).then(res => {
+                  this.TxtMd = res.data;
+                });
+              }
+              if(this.currentUid.type == 20){
+                this.cuScoCon = this.currentUid.content;
+              }
               this.current = index;
               this.current = index;
               this.workId = e.id;
               this.workId = e.id;
               this.appraise(e);
               this.appraise(e);
@@ -1594,7 +1633,11 @@ export default {
                   this.TxtMd = res.data;
                   this.TxtMd = res.data;
                 });
                 });
               }
               }
-
+              if (
+                this.currentUid.type == 20
+              ) {
+                this.cuScoCon = this.currentUid.content;
+              }
               this.workId = e.id;
               this.workId = e.id;
               this.appraise(e);
               this.appraise(e);
             }
             }
@@ -2030,4 +2073,30 @@ export default {
   border-radius: 6px;
   border-radius: 6px;
   box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.3);
   box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.3);
 }
 }
+
+.cocoflow_box .cocoflow_TName{
+    /* font-size: 14px; */
+    color: #4472C4;
+    margin-bottom: 5px;
+    font-weight: 600;
+    width: 80px;
+    flex-shrink: 0;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}
+.cocoflow_box .cocoflow_con{
+    margin-left: 10px;
+    /* font-size: 14px; */
+    color: #000;
+}
+.cocoflow_box .cocoflow_left{
+    display: flex;
+    font-size: 16px !important;
+    justify-content: flex-start;
+    margin-bottom: 10px;
+    line-height: 25px;
+    flex: 1;
+    border-bottom: 1px  #e7e7e7 solid;
+}
 </style>
 </style>

+ 246 - 2
src/components/easy2/studyStudent.vue

@@ -4839,6 +4839,7 @@
                   >
                   >
                     <div
                     <div
                       class="zuoyeYulan"
                       class="zuoyeYulan"
+                      style="display: flex;justify-content: space-between;align-items: center;"
                       v-if="
                       v-if="
                         worksStudent.length &&
                         worksStudent.length &&
                           worksStudent[toolIndex].length > 0
                           worksStudent[toolIndex].length > 0
@@ -4864,6 +4865,84 @@
                           展开
                           展开
                         </div>
                         </div>
                       </div>
                       </div>
+                      <div
+                        style="display: flex;"
+                        v-if="
+                          (courseDetail.userid == userid ||
+                            (courseDetail.course_teacher &&
+                              courseDetail.course_teacher.indexOf(userid) !=
+                                -1)) &&
+                            ((chapInfoList[courseType].chapterInfo[0].taskJson[
+                              taskCount
+                            ].eList &&
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].eList.length) ||
+                              (tool.eList && tool.eList.length)) &&
+                            courseDetail.state == 5
+                        "
+                      >
+                        <!-- <div style="display: flex;" v-if="courseDetail.userid == userid && ((chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].eList && chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].eList.length) || (tool.eList && tool.eList.length)) && courseDetail.state == 5"> -->
+                        <div
+                          @click="
+                            resetLoopEva(
+                              worksStudent[toolIndex],
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].eList,
+                              courseType,
+                              taskCount,
+                              toolIndex,
+                              tool.toolDetail,
+                              tool
+                            )
+                          "
+                          style="margin-right:10px"
+                          class="ScoreBtn"
+                        >
+                          一键重置
+                        </div>
+                        <div class="ScoreBtn" @click="noIsAi" v-if="isaiNum">
+                          <img
+                            src="../../assets/icon/newIcons/rootImg.png"
+                            alt=""
+                          />
+                          AI评分
+                        </div>
+                        <div
+                          class="ScoreBtn"
+                          v-else-if="!loopLoading[toolIndex].loading"
+                          @click="
+                            loopEva(
+                              worksStudent[toolIndex],
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].eList,
+                              courseType,
+                              taskCount,
+                              toolIndex,
+                              tool.toolDetail,
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].taskDetail,
+                              tool
+                            )
+                          "
+                        >
+                          <img
+                            src="../../assets/icon/newIcons/rootImg.png"
+                            alt=""
+                          />
+                          AI评分
+                        </div>
+                        <div class="ScoreBtn" v-else>
+                          <img
+                            src="../../assets/icon/newIcons/rootImg.png"
+                            alt=""
+                          />
+                          正在评分
+                        </div>
+                      </div>
                     </div>
                     </div>
                     <div
                     <div
                       :id="'tool-' + toolIndex"
                       :id="'tool-' + toolIndex"
@@ -4945,6 +5024,106 @@
                           >
                           >
                             评分
                             评分
                           </div>
                           </div>
+                          <div
+                            v-else-if="
+                              (courseDetail.userid == userid ||
+                                (courseDetail.course_teacher &&
+                                  courseDetail.course_teacher.indexOf(userid) !=
+                                    -1) ||
+                                (w.userid == userid && sIsOpen)) &&
+                                courseDetail.state == 5 &&
+                                ((chapInfoList[courseType].chapterInfo[0]
+                                  .taskJson[taskCount].eList &&
+                                  chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList.length) ||
+                                  (tool.eList && tool.eList.length))
+                            "
+                          >
+                            <!-- <div
+                                class="answerScore"
+                                @click="markScoreDig(w.userid,toolIndex)"
+                                :class="{
+                                  rightW:
+                                    w.userid == userid ||
+                                    tType == 1 ||
+                                    tType == 4 ||
+                                    w.ateacher == userid,
+                                }"
+                              >
+                                {{ AIloading[toolIndex][wIndex].sco ? AIloading[toolIndex][wIndex].sco :'评分'}}
+                            </div> -->
+
+                            <!-- @show="handleShow(toolIndex,wIndex)"
+                            @hide="handleHide(toolIndex,wIndex,worksStudent)" -->
+
+                            <el-popover
+                              placement="top"
+                              width="318"
+                              :disabled="AIloading[toolIndex][wIndex].loading"
+                              trigger="hover"
+                            >
+                              <markScore
+                                :loading="AIloading[toolIndex][wIndex].loading"
+                                :markScoreVisible="markScoreVisible"
+                                :ref="`markSco${toolIndex}${wIndex}`"
+                                @updateLoading="updateLoading"
+                                @updateDocSco="updateDocSco"
+                                @refreshOther="refreshOther"
+                                @markScoreDig="markScoreDig"
+                                :tool="tool"
+                                :wIndex="wIndex"
+                                :scoCon="w"
+                                :toolIndex="toolIndex"
+                                :key="refreshKey"
+                                :stage="courseType"
+                                :task="taskCount"
+                                :scoTit="
+                                  chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList
+                                "
+                              >
+                              </markScore>
+
+                              <div
+                                class="answerScore"
+                                @click="
+                                  markScoreDig2(
+                                    w.sName,
+                                    worksStudent,
+                                    w.userid,
+                                    toolIndex,
+                                    chapInfoList[courseType].chapterInfo[0]
+                                      .taskJson[taskCount].eList,
+                                    AIloading[toolIndex][wIndex].loading,
+                                    tool
+                                  )
+                                "
+                                slot="reference"
+                                :class="{
+                                  rightW:
+                                    w.userid == userid ||
+                                    tType == 1 ||
+                                    tType == 4 ||
+                                    w.ateacher == userid
+                                }"
+                              >
+                                <span v-if="AIloading[toolIndex][wIndex].sco">
+                                  {{
+                                    AIloading[toolIndex][wIndex].loading
+                                      ? "评分中"
+                                      : AIloading[toolIndex][wIndex].sco + "分"
+                                  }}
+                                </span>
+                                <span v-else>
+                                  {{
+                                    AIloading[toolIndex][wIndex].loading
+                                      ? "评分中"
+                                      : "评分"
+                                  }}
+                                </span>
+                              </div>
+                            </el-popover>
+                          </div>
 
 
                           <img
                           <img
                             class="deleteImg"
                             class="deleteImg"
@@ -5087,6 +5266,70 @@
                           >
                           >
                             评分
                             评分
                           </div>
                           </div>
+                          <div
+                            class="stuLookScore"
+                            v-if="
+                              w.userid == userid ||
+                                (tType == 1 &&
+                                  courseDetail.state == 5 &&
+                                  ((chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList &&
+                                    chapInfoList[courseType].chapterInfo[0]
+                                      .taskJson[taskCount].eList.length) ||
+                                    (tool.eList && tool.eList.length)))
+                            "
+                          >
+                            <el-popover
+                              placement="top"
+                              width="318"
+                              trigger="hover"
+                            >
+                              <markScore
+                                :loading="AIloading[toolIndex][wIndex].loading"
+                                :markScoreVisible="markScoreVisible"
+                                :ref="`markSco${toolIndex}${wIndex}`"
+                                @updateLoading="updateLoading"
+                                @updateDocSco="updateDocSco"
+                                @refreshOther="refreshOther"
+                                @markScoreDig="markScoreDig"
+                                :tool="tool"
+                                :wIndex="wIndex"
+                                :scoCon="w"
+                                :toolIndex="toolIndex"
+                                :key="refreshKey"
+                                :stage="courseType"
+                                :task="taskCount"
+                                :scoTit="
+                                  chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList
+                                "
+                              >
+                              </markScore>
+
+                              <div
+                                @click="
+                                  markScoreDig2(
+                                    w.sName,
+                                    worksStudent,
+                                    w.userid,
+                                    toolIndex,
+                                    chapInfoList[courseType].chapterInfo[0]
+                                      .taskJson[taskCount].eList,
+                                    AIloading[toolIndex][wIndex].loading,
+                                    tool
+                                  )
+                                "
+                                slot="reference"
+                              >
+                                <span v-if="AIloading[toolIndex][wIndex].sco">
+                                  {{ AIloading[toolIndex][wIndex].sco + "分" }}
+                                </span>
+                                <span v-else>
+                                  评分
+                                </span>
+                              </div>
+                            </el-popover>
+                          </div>
                           <img
                           <img
                             class="deleteImg"
                             class="deleteImg"
                             src="../../assets/deleteworks.png"
                             src="../../assets/deleteworks.png"
@@ -18844,8 +19087,8 @@ export default {
       this.commentDialogVisible = true;
       this.commentDialogVisible = true;
 
 
       // console.log('wwwwww',w)
       // console.log('wwwwww',w)
-      if (JSON.stringify(this.commentDetailCopy) == JSON.stringify(w.works))
-        return;
+      // if (JSON.stringify(this.commentDetailCopy) == JSON.stringify(w.works))
+      //   return;
 
 
       this.commentDetailCopy = w.works;
       this.commentDetailCopy = w.works;
 
 
@@ -18901,6 +19144,7 @@ export default {
           toolIndex
           toolIndex
         ].wordJson;
         ].wordJson;
       }
       }
+      this.$forceUpdate();
     },
     },
     async openScore(w, index) {
     async openScore(w, index) {
       this.wScore = 0;
       this.wScore = 0;

+ 0 - 160
src/components/studyStudent.vue

@@ -7097,166 +7097,6 @@
                       </div>
                       </div>
                     </div>
                     </div>
                   </div>
                   </div>
-                  <div
-                    v-if="
-                      tType &&
-                      ((tType == 2 && sIsOpen == true) ||
-                        tType == 1 ||
-                        tType == 4) &&
-                      tool.tool.indexOf(52) != -1
-                    "
-                    class="worksBox"
-                  >
-                    <div
-                      class="zuoyeYulan"
-                      v-if="
-                        worksStudent.length &&
-                        worksStudent[toolIndex].length > 0
-                      "
-                    >
-                      <div class="worksTop">
-                        <div>作业预览</div>
-                        <div
-                          class="corOpen"
-                          @click="contract(toolIndex)"
-                          v-if="
-                            (isCloseList[toolIndex].isCloseBoolean) &&
-                            isCloseList[toolIndex].isClose == 0
-                          "
-                        >
-                          折叠
-                        </div>
-                        <div
-                          class="corOpen"
-                          @click="contract(toolIndex)"
-                          v-if="isCloseList[toolIndex].isClose == 1"
-                        >
-                          展开
-                        </div>
-                      </div>
-                      <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
-                    </div>
-                    <div
-                      :id="'tool-' + toolIndex"
-                      :style="{
-                          height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
-                          overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
-                        }"
-                      class="worksDetailBox"
-                      v-if="
-                        worksStudent.length &&
-                        worksStudent[toolIndex].length > 0
-                      "
-                    >
-                      <div
-                        class="works"
-                        style="
-                          width: 200px;
-                          height: 140px;
-                          margin: 10px 10px 10px 0;
-                          border-radius: 15px;
-                          box-shadow: 0 0 6px 1px #dfdada;
-                        "
-                        v-for="(w, wIndex) in worksStudent[toolIndex]"
-                        :key="wIndex"
-                        :class="w.type == 1 ? 'isTypeOne' : ''"
-                      >
-                        <div class="workImg">
-                          <img :src="word" @click="openWord(w)" alt />
-                          <!-- @click="openFile(w.works)" -->
-                          <div
-                            class="answerScore"
-                            v-if="w.score"
-                            @click.stop="openScore(w)"
-                            :class="{
-                              rightW:
-                                w.userid == userid ||
-                                tType == 1 ||
-                                tType == 4 ||
-                                w.ateacher == userid,
-                            }"
-                          >
-                            {{ JSON.parse(w.score).wScore }}分
-                          </div>
-                          <div
-                            class="answerScore"
-                            @click.stop="openScore(w)"
-                            v-else-if="courseDetail.userid == userid"
-                            :class="{
-                              rightW:
-                                w.userid == userid ||
-                                tType == 1 ||
-                                tType == 4 ||
-                                w.ateacher == userid,
-                            }"
-                          >
-                            评分
-                          </div>
-                          <img
-                            class="deleteImg"
-                            src="../assets/deleteworks.png"
-                            v-if="
-                              w.userid == userid || tType == 1 || tType == 4
-                            "
-                            @click.stop="deleteWorks(w.wid)"
-                            alt
-                          />
-                        </div>
-
-                        <div class="comment" style="min-width: 200px">
-                          <div class="worksName">
-                            <div>{{ w.sName }}</div>
-                          </div>
-                          <div class="commentList">
-                            <div class="commentList">
-                              <div
-                                class="commentImg"
-                                @click="
-                                  isLikes(w.wid, userid, 1, null, w.isLikes,w.sName)
-                                "
-                              >
-                                <img
-                                  :src="w.isLikes == true ? likes : noLikes"
-                                  alt=""
-                                />
-                              </div>
-                              <div>{{ w.likesCount }}</div>
-                            </div>
-                            <div class="commentList" style="margin-right: 15px">
-                              <div
-                                class="commentImg"
-                                @click="commentOther(w, toolIndex, wIndex)"
-                              >
-                                <img
-                                  src="../assets/icon/comment/comment.png"
-                                  alt=""
-                                />
-                              </div>
-                              <div>{{ w.commentCount }}</div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                    <div style="font-size: 18px" v-if="courseDetail.juri != ''">
-                      未提交
-                    </div>
-                    <div
-                      class="noWorksS"
-                      v-if="noWorksS && noWorksS[toolIndex].length"
-                    >
-                      <div
-                        v-for="(s, sIndex) in noWorksS[toolIndex]"
-                        :key="sIndex"
-                        class="noWorksName"
-                        @click="teacherWorkSubmit(72, toolIndex, taskCount, s)"
-                      >
-                        <el-tooltip effect="dark" :content="s.student" placement="top">
-                            <span>{{ s.student }}</span>
-                        </el-tooltip>
-                      </div>
-                    </div>
-                  </div>
                   <div
                   <div
                     v-if="
                     v-if="
                       tType &&
                       tType &&

+ 68 - 3
src/components/studySutdentClass/commpont/markDialog.vue

@@ -121,7 +121,8 @@
                 (currentUid.type == 1 ||
                 (currentUid.type == 1 ||
                   currentUid.type == 10 ||
                   currentUid.type == 10 ||
                   currentUid.type == 13 ||
                   currentUid.type == 13 ||
-                  isMarkCom == 1) &&
+                  currentUid.type == 20 ||
+                    isMarkCom == 1) &&
                   !isMarkSco &&
                   !isMarkSco &&
                   tType == 1
                   tType == 1
               "
               "
@@ -154,6 +155,7 @@
                   (currentUid.type == 1 ||
                   (currentUid.type == 1 ||
                     currentUid.type == 10 ||
                     currentUid.type == 10 ||
                     currentUid.type == 13 ||
                     currentUid.type == 13 ||
+                    currentUid.type == 20 ||
                     isMarkCom == 1) &&
                     isMarkCom == 1) &&
                     !isMarkSco
                     !isMarkSco
                 "
                 "
@@ -170,6 +172,7 @@
                   (currentUid.type == 1 ||
                   (currentUid.type == 1 ||
                     currentUid.type == 10 ||
                     currentUid.type == 10 ||
                     currentUid.type == 13 ||
                     currentUid.type == 13 ||
+                    currentUid.type == 20 ||
                     isMarkCom == 1) &&
                     isMarkCom == 1) &&
                     isMarkSco
                     isMarkSco
                 "
                 "
@@ -375,6 +378,22 @@
               style="width: 90%; height: 95%; margin: 0 0 0 30px"
               style="width: 90%; height: 95%; margin: 0 0 0 30px"
             ></video-player>
             ></video-player>
           </div>
           </div>
+          <div v-if="currentUid.type == 20" style="height: 100%;" class="cocoflow_box">
+            <div  style="margin-bottom: 20px;" v-for="(item,index) in JSON.parse(currentUid.content)" :key="index">
+                <div style="margin-bottom: 15px;font-size: 20px;font-weight: 600;color: #000;">第{{ index + 1}}阶段</div>
+                <div v-for="(po, index2) in item.messages" :key="index+'-'+index2">
+                    <div class="cocoflow_left" v-if="po.role == 'assistant'">
+                            <div class="cocoflow_TName">小可AI助手</div>:
+                            <div class="cocoflow_con" v-html="MarkdownT(po.content)"></div>
+                    </div>
+
+                    <div class="cocoflow_left" v-if="po.role == 'user'">
+                            <div class="cocoflow_TName">{{ username }}</div>:
+                            <div class="cocoflow_con" v-html="po.content"></div>
+                    </div>
+                </div>
+            </div>
+          </div>
         </div>
         </div>
         <!-- 点赞与评论  -->
         <!-- 点赞与评论  -->
         <div v-if="cutNum == 1">
         <div v-if="cutNum == 1">
@@ -605,7 +624,18 @@ export default {
       if (c == this.scoTitList.length) return c;
       if (c == this.scoTitList.length) return c;
 
 
       return 0;
       return 0;
-    }
+    },
+    MarkdownT() {
+      return function (c) {
+        let md = new MarkdownIt({
+          html: true, // 允许渲染 HTML
+          linkify: true, // 自动将URL链接转化为可点击链接
+          typographer: true, // 启用排版规则(如替换 `"` 为 “)
+        });
+        return c
+          ? md.render(c) : "";
+      };
+    },
   },
   },
   mounted() {
   mounted() {
     if (this.tool.eList && this.tool.eList.length) {
     if (this.tool.eList && this.tool.eList.length) {
@@ -1488,6 +1518,11 @@ export default {
                   this.TxtMd = res.data;
                   this.TxtMd = res.data;
                 });
                 });
               }
               }
+              if (
+                this.currentUid.type == 20
+              ) {
+                this.cuScoCon = this.currentUid.content;
+              }
               this.current = index;
               this.current = index;
               this.workId = e.id;
               this.workId = e.id;
               this.appraise(e);
               this.appraise(e);
@@ -1593,7 +1628,11 @@ export default {
                   this.TxtMd = res.data;
                   this.TxtMd = res.data;
                 });
                 });
               }
               }
-
+              if (
+                this.currentUid.type == 20
+              ) {
+                this.cuScoCon = this.currentUid.content;
+              }
               this.workId = e.id;
               this.workId = e.id;
               this.appraise(e);
               this.appraise(e);
             }
             }
@@ -2029,4 +2068,30 @@ export default {
   border-radius: 6px;
   border-radius: 6px;
   box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.3);
   box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.3);
 }
 }
+
+.cocoflow_box .cocoflow_TName{
+    /* font-size: 14px; */
+    color: #4472C4;
+    margin-bottom: 5px;
+    font-weight: 600;
+    width: 80px;
+    flex-shrink: 0;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}
+.cocoflow_box .cocoflow_con{
+    margin-left: 10px;
+    /* font-size: 14px; */
+    color: #000;
+}
+.cocoflow_box .cocoflow_left{
+    display: flex;
+    font-size: 16px !important;
+    justify-content: flex-start;
+    margin-bottom: 10px;
+    line-height: 25px;
+    flex: 1;
+    border-bottom: 1px  #e7e7e7 solid;
+}
 </style>
 </style>

+ 248 - 1
src/components/studySutdentClass/studyStudent.vue

@@ -4788,6 +4788,7 @@
                   >
                   >
                     <div
                     <div
                       class="zuoyeYulan"
                       class="zuoyeYulan"
+                      style="display: flex;justify-content: space-between;align-items: center;"
                       v-if="
                       v-if="
                         worksStudent.length &&
                         worksStudent.length &&
                           worksStudent[toolIndex].length > 0
                           worksStudent[toolIndex].length > 0
@@ -4813,6 +4814,84 @@
                           展开
                           展开
                         </div>
                         </div>
                       </div>
                       </div>
+                      <div
+                        style="display: flex;"
+                        v-if="
+                          (courseDetail.userid == userid ||
+                            (courseDetail.course_teacher &&
+                              courseDetail.course_teacher.indexOf(userid) !=
+                                -1)) &&
+                            ((chapInfoList[courseType].chapterInfo[0].taskJson[
+                              taskCount
+                            ].eList &&
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].eList.length) ||
+                              (tool.eList && tool.eList.length)) &&
+                            courseDetail.state == 6
+                        "
+                      >
+                        <!-- <div style="display: flex;" v-if="courseDetail.userid == userid && ((chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].eList && chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].eList.length) || (tool.eList && tool.eList.length)) && courseDetail.state == 6"> -->
+                        <div
+                          @click="
+                            resetLoopEva(
+                              worksStudent[toolIndex],
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].eList,
+                              courseType,
+                              taskCount,
+                              toolIndex,
+                              tool.toolDetail,
+                              tool
+                            )
+                          "
+                          style="margin-right:10px"
+                          class="ScoreBtn"
+                        >
+                          一键重置
+                        </div>
+                        <div class="ScoreBtn" @click="noIsAi" v-if="isaiNum">
+                          <img
+                            src="../../assets/icon/newIcons/rootImg.png"
+                            alt=""
+                          />
+                          AI评分
+                        </div>
+                        <div
+                          class="ScoreBtn"
+                          v-else-if="!loopLoading[toolIndex].loading"
+                          @click="
+                            loopEva(
+                              worksStudent[toolIndex],
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].eList,
+                              courseType,
+                              taskCount,
+                              toolIndex,
+                              tool.toolDetail,
+                              chapInfoList[courseType].chapterInfo[0].taskJson[
+                                taskCount
+                              ].taskDetail,
+                              tool
+                            )
+                          "
+                        >
+                          <img
+                            src="../../assets/icon/newIcons/rootImg.png"
+                            alt=""
+                          />
+                          AI评分
+                        </div>
+                        <div class="ScoreBtn" v-else>
+                          <img
+                            src="../../assets/icon/newIcons/rootImg.png"
+                            alt=""
+                          />
+                          正在评分
+                        </div>
+                      </div>
                     </div>
                     </div>
                     <div
                     <div
                       :id="'tool-' + toolIndex"
                       :id="'tool-' + toolIndex"
@@ -4894,6 +4973,106 @@
                           >
                           >
                             评分
                             评分
                           </div>
                           </div>
+                                                    <div
+                            v-else-if="
+                              (courseDetail.userid == userid ||
+                                (courseDetail.course_teacher &&
+                                  courseDetail.course_teacher.indexOf(userid) !=
+                                    -1) ||
+                                (w.userid == userid && sIsOpen)) &&
+                                courseDetail.state == 6 &&
+                                ((chapInfoList[courseType].chapterInfo[0]
+                                  .taskJson[taskCount].eList &&
+                                  chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList.length) ||
+                                  (tool.eList && tool.eList.length))
+                            "
+                          >
+                            <!-- <div
+                                class="answerScore"
+                                @click="markScoreDig(w.userid,toolIndex)"
+                                :class="{
+                                  rightW:
+                                    w.userid == userid ||
+                                    tType == 1 ||
+                                    tType == 4 ||
+                                    w.ateacher == userid,
+                                }"
+                              >
+                                {{ AIloading[toolIndex][wIndex].sco ? AIloading[toolIndex][wIndex].sco :'评分'}}    
+                            </div> -->
+
+                            <!-- @show="handleShow(toolIndex,wIndex)"
+                            @hide="handleHide(toolIndex,wIndex,worksStudent)" -->
+
+                            <el-popover
+                              placement="top"
+                              width="318"
+                              :disabled="AIloading[toolIndex][wIndex].loading"
+                              trigger="hover"
+                            >
+                              <markScore
+                                :loading="AIloading[toolIndex][wIndex].loading"
+                                :markScoreVisible="markScoreVisible"
+                                :ref="`markSco${toolIndex}${wIndex}`"
+                                @updateLoading="updateLoading"
+                                @updateDocSco="updateDocSco"
+                                @refreshOther="refreshOther"
+                                @markScoreDig="markScoreDig"
+                                :tool="tool"
+                                :wIndex="wIndex"
+                                :scoCon="w"
+                                :toolIndex="toolIndex"
+                                :key="refreshKey"
+                                :stage="courseType"
+                                :task="taskCount"
+                                :scoTit="
+                                  chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList
+                                "
+                              >
+                              </markScore>
+
+                              <div
+                                class="answerScore"
+                                @click="
+                                  markScoreDig2(
+                                    w.sName,
+                                    worksStudent,
+                                    w.userid,
+                                    toolIndex,
+                                    chapInfoList[courseType].chapterInfo[0]
+                                      .taskJson[taskCount].eList,
+                                    AIloading[toolIndex][wIndex].loading,
+                                    tool
+                                  )
+                                "
+                                slot="reference"
+                                :class="{
+                                  rightW:
+                                    w.userid == userid ||
+                                    tType == 1 ||
+                                    tType == 4 ||
+                                    w.ateacher == userid
+                                }"
+                              >
+                                <span v-if="AIloading[toolIndex][wIndex].sco">
+                                  {{
+                                    AIloading[toolIndex][wIndex].loading
+                                      ? "评分中"
+                                      : AIloading[toolIndex][wIndex].sco + "分"
+                                  }}
+                                </span>
+                                <span v-else>
+                                  {{
+                                    AIloading[toolIndex][wIndex].loading
+                                      ? "评分中"
+                                      : "评分"
+                                  }}
+                                </span>
+                              </div>
+                            </el-popover>
+                          </div>
 
 
                           <img
                           <img
                             class="deleteImg"
                             class="deleteImg"
@@ -5036,6 +5215,70 @@
                           >
                           >
                             评分
                             评分
                           </div>
                           </div>
+                          <div
+                            class="stuLookScore"
+                            v-if="
+                              w.userid == userid ||
+                                (tType == 1 &&
+                                  courseDetail.state == 6 &&
+                                  ((chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList &&
+                                    chapInfoList[courseType].chapterInfo[0]
+                                      .taskJson[taskCount].eList.length) ||
+                                    (tool.eList && tool.eList.length)))
+                            "
+                          >
+                            <el-popover
+                              placement="top"
+                              width="318"
+                              trigger="hover"
+                            >
+                              <markScore
+                                :loading="AIloading[toolIndex][wIndex].loading"
+                                :markScoreVisible="markScoreVisible"
+                                :ref="`markSco${toolIndex}${wIndex}`"
+                                @updateLoading="updateLoading"
+                                @updateDocSco="updateDocSco"
+                                @refreshOther="refreshOther"
+                                @markScoreDig="markScoreDig"
+                                :tool="tool"
+                                :wIndex="wIndex"
+                                :scoCon="w"
+                                :toolIndex="toolIndex"
+                                :key="refreshKey"
+                                :stage="courseType"
+                                :task="taskCount"
+                                :scoTit="
+                                  chapInfoList[courseType].chapterInfo[0]
+                                    .taskJson[taskCount].eList
+                                "
+                              >
+                              </markScore>
+
+                              <div
+                                @click="
+                                  markScoreDig2(
+                                    w.sName,
+                                    worksStudent,
+                                    w.userid,
+                                    toolIndex,
+                                    chapInfoList[courseType].chapterInfo[0]
+                                      .taskJson[taskCount].eList,
+                                    AIloading[toolIndex][wIndex].loading,
+                                    tool
+                                  )
+                                "
+                                slot="reference"
+                              >
+                                <span v-if="AIloading[toolIndex][wIndex].sco">
+                                  {{ AIloading[toolIndex][wIndex].sco + "分" }}
+                                </span>
+                                <span v-else>
+                                  评分
+                                </span>
+                              </div>
+                            </el-popover>
+                          </div>
                           <img
                           <img
                             class="deleteImg"
                             class="deleteImg"
                             src="../../assets/deleteworks.png"
                             src="../../assets/deleteworks.png"
@@ -24972,7 +25215,11 @@ export default {
     },
     },
     MarkdownT() {
     MarkdownT() {
       return function (c) {
       return function (c) {
-        let md = new MarkdownIt();
+        let md = new MarkdownIt({
+          html: true, // 允许渲染 HTML
+          linkify: true, // 自动将URL链接转化为可点击链接
+          typographer: true, // 启用排版规则(如替换 `"` 为 “)
+        });
         return c
         return c
           ? md.render(c) : "";
           ? md.render(c) : "";
       };
       };