Browse Source

Merge branch 'beta' into HK

lsc 8 months ago
parent
commit
b06eef01ed

+ 4 - 0
dist/index.html

@@ -27,7 +27,11 @@
     html,
     html,
     body{
     body{
       font-family: '黑体';
       font-family: '黑体';
+<<<<<<< HEAD
     }</style><link href=./static/css/app.8aad9ff5a5a29247b3642dcb691f1549.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.264e3d6e7c524117db80.js></script><script type=text/javascript src=./static/js/app.c85f8b424404082f677c.js></script></body></html><script>function stopSafari() {
     }</style><link href=./static/css/app.8aad9ff5a5a29247b3642dcb691f1549.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.264e3d6e7c524117db80.js></script><script type=text/javascript src=./static/js/app.c85f8b424404082f677c.js></script></body></html><script>function stopSafari() {
+=======
+    }</style><link href=./static/css/app.ac77c92329c3cb0b60389f87d10ac2c0.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.264e3d6e7c524117db80.js></script><script type=text/javascript src=./static/js/app.095c9c1bd413efdf8eda.js></script></body></html><script>function stopSafari() {
+>>>>>>> beta
     //阻止safari浏览器双击放大功能
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 1 - 0
dist/static/css/app.8aad9ff5a5a29247b3642dcb691f1549.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.8aad9ff5a5a29247b3642dcb691f1549.css.map


File diff suppressed because it is too large
+ 1 - 0
dist/static/css/app.ac77c92329c3cb0b60389f87d10ac2c0.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.ac77c92329c3cb0b60389f87d10ac2c0.css.map


File diff suppressed because it is too large
+ 1 - 0
dist/static/js/app.095c9c1bd413efdf8eda.js


File diff suppressed because it is too large
+ 1 - 0
dist/static/js/app.095c9c1bd413efdf8eda.js.map


File diff suppressed because it is too large
+ 1 - 0
dist/static/js/app.c85f8b424404082f677c.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.c85f8b424404082f677c.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


+ 159 - 31
src/components/classRoomHelper/component/countdown.vue

@@ -7,7 +7,7 @@
             <div
             <div
               class="c_t_i_card"
               class="c_t_i_card"
               v-if="!showCountDownInput1"
               v-if="!showCountDownInput1"
-              @click.stop="changeShowInput1(true)"
+              @click="changeShowInput1(true)"
             >
             >
               <div>
               <div>
                 <span class="c_t_i_btnTop" v-if="!isCountdown"
                 <span class="c_t_i_btnTop" v-if="!isCountdown"
@@ -54,7 +54,7 @@
             <div
             <div
               class="c_t_i_card"
               class="c_t_i_card"
               v-if="!showCountDownInput2"
               v-if="!showCountDownInput2"
-              @click.stop="changeShowInput2(true)"
+              @click="changeShowInput2(true)"
             >
             >
               <div>
               <div>
                 <span class="c_t_i_btnTop" v-if="!isCountdown"
                 <span class="c_t_i_btnTop" v-if="!isCountdown"
@@ -125,14 +125,14 @@
             <span>快捷设置</span>
             <span>快捷设置</span>
           </div>
           </div>
           <div class="c_ct_box">
           <div class="c_ct_box">
-            <span @click.stop="setCountdownTime(30)">30秒</span>
-            <span @click.stop="setCountdownTime(60)">1分钟</span>
-            <span @click.stop="setCountdownTime(120)">2分钟</span>
-            <span @click.stop="setCountdownTime(180)">3分钟</span>
-            <span @click.stop="setCountdownTime(300)">5分钟</span>
-            <span @click.stop="setCountdownTime(360)">6分钟</span>
-            <span @click.stop="setCountdownTime(480)">8分钟</span>
-            <span @click.stop="setCountdownTime(600)">10分钟</span>
+            <span @click="setCountdownTime(30)">30秒</span>
+            <span @click="setCountdownTime(60)">1分钟</span>
+            <span @click="setCountdownTime(120)">2分钟</span>
+            <span @click="setCountdownTime(180)">3分钟</span>
+            <span @click="setCountdownTime(300)">5分钟</span>
+            <span @click="setCountdownTime(360)">6分钟</span>
+            <span @click="setCountdownTime(480)">8分钟</span>
+            <span @click="setCountdownTime(600)">10分钟</span>
           </div>
           </div>
         </div>
         </div>
 
 
@@ -141,12 +141,12 @@
             <span>行为标签</span>
             <span>行为标签</span>
             <div class="c_t_btnArea">
             <div class="c_t_btnArea">
               <span
               <span
-                @click.stop="changeBehaviorTagType(0)"
+                @click="changeBehaviorTagType(0)"
                 :class="[behaviorTagType == 0 ? 'c_t_ba_active' : '']"
                 :class="[behaviorTagType == 0 ? 'c_t_ba_active' : '']"
                 >常用</span
                 >常用</span
               >
               >
               <span
               <span
-                @click.stop="changeBehaviorTagType(1)"
+                @click="changeBehaviorTagType(1)"
                 :class="[behaviorTagType == 1 ? 'c_t_ba_active' : '']"
                 :class="[behaviorTagType == 1 ? 'c_t_ba_active' : '']"
                 >更多</span
                 >更多</span
               >
               >
@@ -180,7 +180,7 @@
               v-if="behaviorTagType == 1"
               v-if="behaviorTagType == 1"
               :class="[choiceBehavior.includes(item) ? 'c_bt_b_active' : '']"
               :class="[choiceBehavior.includes(item) ? 'c_bt_b_active' : '']"
               v-for="(item, index) in behaviorTagMore"
               v-for="(item, index) in behaviorTagMore"
-              @click.stop="choiceBehaviorTag(item)"
+              @click="choiceBehaviorTag(item)"
               :key="behaviorTagType + '-' + index"
               :key="behaviorTagType + '-' + index"
               >{{ item }}</span
               >{{ item }}</span
             >
             >
@@ -188,7 +188,7 @@
               v-if="behaviorTagType == 0"
               v-if="behaviorTagType == 0"
               :class="[choiceBehavior.includes(item) ? 'c_bt_b_active' : '']"
               :class="[choiceBehavior.includes(item) ? 'c_bt_b_active' : '']"
               v-for="(item, index) in behaviorTagCommon"
               v-for="(item, index) in behaviorTagCommon"
-              @click.stop="choiceBehaviorTag(item)"
+              @click="choiceBehaviorTag(item)"
               :key="behaviorTagType + '-' + index"
               :key="behaviorTagType + '-' + index"
               >{{ item }}</span
               >{{ item }}</span
             >
             >
@@ -196,7 +196,40 @@
         </div>
         </div>
 
 
         <div class="c_btnArea">
         <div class="c_btnArea">
-          <span @click.stop="music()">
+          <span>
+            <div class="c_b_musicListArea">
+              <el-tooltip
+                effect="light"
+								placement="top"
+                :content="showSourceList ? '隐藏音乐列表' : '显示音乐列表'"
+              >
+                <span @click.stop="()=>showSourceList = !showSourceList">
+                  <svg
+                    :style="
+                      `transform: rotate(${showSourceList ? '0deg' : '180deg'})`
+                    "
+                    t="1728975847364"
+                    class="icon"
+                    viewBox="0 0 1024 1024"
+                    version="1.1"
+                    xmlns="http://www.w3.org/2000/svg"
+                    p-id="4250"
+                    width="200"
+                    height="200"
+                  >
+                    <path
+                      d="M814.795 320.301c9.571 0 12.392 6.018 6.264 13.372l-297.761 357.392c-6.128 7.355-16.154 7.355-22.281 0l-297.761-357.392c-6.128-7.355-3.309-13.372 6.264-13.372l605.275 0z"
+                      p-id="4251"
+                    ></path>
+                  </svg>
+                </span>
+              </el-tooltip>
+              <div v-if="showSourceList" v-click-outside="()=>showSourceList = false">
+								<div :class="[sourceUrl==item.url?'c_b_musicListArea_active':'']" v-for="(item,index) in sourceUrlList" :key="index" @click="changeSourceUrl(item.url)">
+									<span>{{item.name}}</span>
+								</div>
+							</div>
+            </div>
             <el-tooltip
             <el-tooltip
               class="item"
               class="item"
               effect="light"
               effect="light"
@@ -208,6 +241,7 @@
                 height="24"
                 height="24"
                 viewBox="0 0 24 24"
                 viewBox="0 0 24 24"
                 fill="none"
                 fill="none"
+                @click="music()"
                 xmlns="http://www.w3.org/2000/svg"
                 xmlns="http://www.w3.org/2000/svg"
               >
               >
                 <path
                 <path
@@ -242,7 +276,7 @@
               ]"
               ]"
               v-if="type == 0"
               v-if="type == 0"
               style=""
               style=""
-              @click.stop="countdownTimeFn()"
+              @click="countdownTimeFn()"
             >
             >
               <svg
               <svg
                 v-if="!isCountdown"
                 v-if="!isCountdown"
@@ -280,7 +314,7 @@
             <div
             <div
               :class="[!isKeepTime ? 'c_ba_startType' : 'c_ba_startType2']"
               :class="[!isKeepTime ? 'c_ba_startType' : 'c_ba_startType2']"
               v-if="type == 1"
               v-if="type == 1"
-              @click.stop="keepTimeFn()"
+              @click="keepTimeFn()"
             >
             >
               <svg
               <svg
                 v-if="!isKeepTime"
                 v-if="!isKeepTime"
@@ -313,10 +347,9 @@
                   p-id="4267"
                   p-id="4267"
                 ></path>
                 ></path>
               </svg>
               </svg>
-              <!-- <svg v-else t="1721117616634" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13970" width="64" height="64"><path d="M128 128m53.333333 0l661.333334 0q53.333333 0 53.333333 53.333333l0 661.333334q0 53.333333-53.333333 53.333333l-661.333334 0q-53.333333 0-53.333333-53.333333l0-661.333334q0-53.333333 53.333333-53.333333Z" p-id="13971"></path></svg> -->
             </div>
             </div>
           </div>
           </div>
-          <span @click.stop="reset()">
+          <span @click="reset()">
             <el-tooltip
             <el-tooltip
               class="item"
               class="item"
               effect="light"
               effect="light"
@@ -349,7 +382,7 @@
         </div>
         </div>
 
 
         <div class="ActivityMemo">
         <div class="ActivityMemo">
-          <span @click.stop="changeShowType(1)">
+          <span @click="changeShowType(1)">
             教学活动备忘
             教学活动备忘
             <svg
             <svg
               width="16"
               width="16"
@@ -376,7 +409,7 @@
       </div>
       </div>
 
 
       <div class="c_changeType">
       <div class="c_changeType">
-        <div class="c_ct_btn" @click.stop="changeType(0)">
+        <div class="c_ct_btn" @click="changeType(0)">
           <div>倒计时</div>
           <div>倒计时</div>
           <span v-if="type == 0"></span>
           <span v-if="type == 0"></span>
           <svg
           <svg
@@ -411,7 +444,7 @@
 
 
         <span></span>
         <span></span>
 
 
-        <div class="c_ct_btn" @click.stop="changeType(1)">
+        <div class="c_ct_btn" @click="changeType(1)">
           <div>计时器</div>
           <div>计时器</div>
           <span v-if="type == 1"></span>
           <span v-if="type == 1"></span>
           <svg
           <svg
@@ -465,7 +498,7 @@
 
 
     <div class="c_behavior" v-if="showType == 1">
     <div class="c_behavior" v-if="showType == 1">
       <div class="behaviorBack">
       <div class="behaviorBack">
-        <span @click.stop="changeShowType(0)">
+        <span @click="changeShowType(0)">
           <svg
           <svg
             width="16"
             width="16"
             height="16"
             height="16"
@@ -493,19 +526,19 @@
           <el-button
           <el-button
             :type="showBtnType == 0 ? 'primary' : ''"
             :type="showBtnType == 0 ? 'primary' : ''"
             size="small"
             size="small"
-            @click.stop="showBtnType = 0"
+            @click="showBtnType = 0"
             >所有事件</el-button
             >所有事件</el-button
           >
           >
           <el-button
           <el-button
             :type="showBtnType == 1 ? 'primary' : ''"
             :type="showBtnType == 1 ? 'primary' : ''"
             size="small"
             size="small"
-            @click.stop="showBtnType = 1"
+            @click="showBtnType = 1"
             >计时事件</el-button
             >计时事件</el-button
           >
           >
         </el-button-group>
         </el-button-group>
 
 
         <span
         <span
-          @click.stop="derive(showMemorandumList)"
+          @click="derive(showMemorandumList)"
           v-loading="exportLoading"
           v-loading="exportLoading"
         >
         >
           <el-tooltip class="item" effect="dark" content="导出" placement="top">
           <el-tooltip class="item" effect="dark" content="导出" placement="top">
@@ -621,6 +654,34 @@ export default {
         "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%80%92%E8%AE%A1%E6%97%B6%E9%9F%B3%E4%B9%901721355956636.mp3",
         "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%80%92%E8%AE%A1%E6%97%B6%E9%9F%B3%E4%B9%901721355956636.mp3",
       endSourceUrl:
       endSourceUrl:
         "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%80%92%E6%95%B010%E7%A7%92%E5%8F%A0%E5%8A%A0%E9%9F%B3%E6%95%881721638403882.MP3",
         "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%80%92%E6%95%B010%E7%A7%92%E5%8F%A0%E5%8A%A0%E9%9F%B3%E6%95%881721638403882.MP3",
+      sourceUrlList: [
+        {
+          name: "音乐1",
+          url:
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E5%80%92%E8%AE%A1%E6%97%B6%E9%9F%B3%E4%B9%901721355956636.mp3"
+        },
+        {
+          name: "音乐2",
+          url:
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/default%2F%E9%9F%B3%E4%B9%9021728975233277.mp3"
+        },
+        {
+          name: "音乐3",
+          url:
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/default%2F%E9%9F%B3%E4%B9%9031728975268412.mp3"
+        },
+        {
+          name: "音乐4",
+          url:
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/default%2F%E9%9F%B3%E4%B9%9041728975432067.mp3"
+        },
+        {
+          name: "音乐5",
+          url:
+            "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/default%2F%E9%9F%B3%E4%B9%9051728975447857.mp3"
+        }
+      ],
+      showSourceList: false,
       sourceActive: false,
       sourceActive: false,
       type: 0, //0:倒计时   1:计时器
       type: 0, //0:倒计时   1:计时器
       isCountdown: false,
       isCountdown: false,
@@ -956,13 +1017,13 @@ export default {
         //设置每一列的宽度
         //设置每一列的宽度
         { wch: 25 },
         { wch: 25 },
         { wch: 50 },
         { wch: 50 },
-        { wch: 25 },
+        { wch: 25 }
       ];
       ];
       XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
       XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
       XLSX.writeFile(workbook, "事件.xlsx");
       XLSX.writeFile(workbook, "事件.xlsx");
 
 
       this.exportLoading = false;
       this.exportLoading = false;
-			this.$message.success("导出成功")
+      this.$message.success("导出成功");
     },
     },
     lookWork(data) {
     lookWork(data) {
       const taskTypes = {
       const taskTypes = {
@@ -1494,7 +1555,7 @@ ${_textData}
         message: [{ type: "text", text: _msg }],
         message: [{ type: "text", text: _msg }],
         session_name: uuidv4(),
         session_name: uuidv4(),
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       this.ajax
       this.ajax
         // .post("https://gpt4.cocorobo.cn/chat", params)
         // .post("https://gpt4.cocorobo.cn/chat", params)
@@ -1634,10 +1695,22 @@ ${_textData}
 
 
       return {
       return {
         h: hours != 0 ? formatTimeUnit(hours) : null,
         h: hours != 0 ? formatTimeUnit(hours) : null,
-        m: minutes != 0 ? formatTimeUnit(minutes) : hours > 0 ? formatTimeUnit(minutes):null,
+        m:
+          minutes != 0
+            ? formatTimeUnit(minutes)
+            : hours > 0
+            ? formatTimeUnit(minutes)
+            : null,
         s: formatTimeUnit(seconds)
         s: formatTimeUnit(seconds)
       };
       };
-    }
+    },
+		changeSourceUrl(url){
+			if(this.isCountdown || this.isKeepTime)return this.$message.error("请先停止计时再设置");
+			if(this.sourceUrl == url)return this.showSourceList = false;
+			this.sourceUrl = url;
+
+			this.showSourceList = false;
+		}
   }
   }
 };
 };
 </script>
 </script>
@@ -1978,6 +2051,61 @@ ${_textData}
   /* border-radius: 20px; */
   /* border-radius: 20px; */
   cursor: pointer;
   cursor: pointer;
   transition: 0.2s;
   transition: 0.2s;
+  position: relative;
+}
+
+.c_b_musicListArea {
+  position: absolute;
+  left: -20px;
+  top: 10px;
+  width: 20px;
+  height: 20px;
+}
+
+.c_b_musicListArea > span {
+  width: 20px;
+  height: 20px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+}
+
+.c_b_musicListArea > div {
+  width: 150px;
+  height: 200px;
+  position: absolute;
+  bottom: 40px;
+  left: -20px;
+  cursor: default;
+  border-radius: 5px;
+	box-sizing: border-box;
+	padding: 5px;
+	overflow: auto;
+	background-color: #fff;
+	box-shadow: 0px 0px 5px 2px #1d398314;
+}
+
+.c_b_musicListArea>div>div{
+	width: 100%;
+	height: 30px;
+	border-radius: 5px;
+	display: flex;
+	align-items: center;
+	box-sizing: border-box;
+	padding-left: 10px;
+	cursor: pointer;
+	transition: 0.2s;
+	margin-bottom: 5px;
+}
+
+.c_b_musicListArea>div>div:hover{
+	background-color: #f0f2f5;
+}
+
+.c_b_musicListArea_active{
+	background-color: #409eff !important;
+	color: #fff;
 }
 }
 
 
 .c_btnArea > span > svg {
 .c_btnArea > span > svg {

+ 1 - 1
src/components/classRoomHelper/component/languageAssistant.vue

@@ -321,7 +321,7 @@ export default {
                     session_name: _uuid + "-qgt",
                     session_name: _uuid + "-qgt",
                     uid: _uuid,
                     uid: _uuid,
                     file_ids: [],
                     file_ids: [],
-                    model: "gpt-4o-2024-08-06"
+                    model: "gpt-4o-mini"
                   };
                   };
                   this.ajax
                   this.ajax
                     // .post("https://claude3.cocorobo.cn/chat", params)
                     // .post("https://claude3.cocorobo.cn/chat", params)

+ 22 - 6
src/components/classRoomHelper/component/levitatedSphere.vue

@@ -52,6 +52,13 @@
       ref="iiframe2"
       ref="iiframe2"
       v-show="false"
       v-show="false"
     ></iframe>
     ></iframe>
+
+		<mini-audio
+      v-show="false"
+      ref="audioRef"
+      :loop="false"
+      :audio-source="wozaiAudioUrl"
+    ></mini-audio>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -73,7 +80,9 @@ export default {
       chatLoading: false,
       chatLoading: false,
       talkLoading: false,
       talkLoading: false,
       source: null,
       source: null,
-      talkTextList: []
+      talkTextList: [],
+			wozaiAudioUrl:"https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/default%2F%E4%B8%AD%E6%96%87%E7%89%88%E6%88%91%E5%9C%A81728961654002.wav",
+			wozaiAudioEnglishUrl:"https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/default%2F%E8%8B%B1%E6%96%87%E7%89%88what%27sup1728961667376.wav",
     };
     };
   },
   },
   computed: {
   computed: {
@@ -123,8 +132,10 @@ export default {
         "languageOptions"
         "languageOptions"
       ).selectedIndex = 2; //普通话
       ).selectedIndex = 2; //普通话
       iiframe.contentWindow.testdoContinuousPronunciationAssessment();
       iiframe.contentWindow.testdoContinuousPronunciationAssessment();
-			this.talkTextList.push("我在");
-			this.talkText();
+			//this.talkTextList.push("我在");
+			//this.talkText();
+			// console.log("打开")
+			this.$refs.audioRef.play();
 			// return;
 			// return;
       // this.$message.success("已开启语音助手,请说“可可同学”来唤醒");
       // this.$message.success("已开启语音助手,请说“可可同学”来唤醒");
       this.$parent.changeRecordType(1);
       this.$parent.changeRecordType(1);
@@ -136,7 +147,6 @@ export default {
 			this.chatLoading = false;
 			this.chatLoading = false;
 			this.talkLoading == false;
 			this.talkLoading == false;
       this.show = true;
       this.show = true;
-      console.log("已唤醒");
       iiframe.contentWindow.onRecognizedResult = e => {
       iiframe.contentWindow.onRecognizedResult = e => {
         let _msg = converter(e.privText);
         let _msg = converter(e.privText);
         // let _msg2 = e.privText;
         // let _msg2 = e.privText;
@@ -219,16 +229,22 @@ export default {
                 }, 3000);
                 }, 3000);
                 // }, 2000);
                 // }, 2000);
               } else {
               } else {
+								let msgList = [];
+
+								msgList.push({
+									type:"text",
+									text: `请在150字以内回答以下问题:\n${this.userText}`
+								})
                 this.chatLoading = true;
                 this.chatLoading = true;
                 const _uuid = uuidv4();
                 const _uuid = uuidv4();
                 let params = {
                 let params = {
                   assistant_id: "f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b",
                   assistant_id: "f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b",
                   userId: this.userId,
                   userId: this.userId,
-                  message: this.userText,
+                  message: msgList,
                   session_name: _uuid + "-qgt",
                   session_name: _uuid + "-qgt",
                   uid: _uuid,
                   uid: _uuid,
                   file_ids: [],
                   file_ids: [],
-									model: "gpt-4o-2024-08-06",
+									model: "gpt-4o-mini",
                 };
                 };
                 this.ajax
                 this.ajax
                   // .post("https://claude3.cocorobo.cn/chat", params)
                   // .post("https://claude3.cocorobo.cn/chat", params)

+ 11 - 7
src/components/classRoomHelper/component/searchArea.vue

@@ -2074,7 +2074,7 @@ export default {
         session_name: `${this.courseId}-studyStudent-md`,
         session_name: `${this.courseId}-studyStudent-md`,
         uid: _uuid,
         uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       // let params = {
       // let params = {
       //   model: "gpt-3.5-turbo",
       //   model: "gpt-3.5-turbo",
@@ -2244,7 +2244,7 @@ ${_atList
         session_name: `${this.courseId}-studyStudent-md`,
         session_name: `${this.courseId}-studyStudent-md`,
         uid: _uuid,
         uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       // let params = {
       // let params = {
       //   model: "gpt-3.5-turbo",
       //   model: "gpt-3.5-turbo",
@@ -2694,7 +2694,7 @@ Instruction: Based on the context, follow "Format example", write content
         session_name: _uuid,
         session_name: _uuid,
         // uid: _uuid,
         // uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       // let params = {
       // let params = {
       //   message: {
       //   message: {
@@ -2807,7 +2807,7 @@ Instruction: Based on the context, follow "Format example", write content
         session_name: _uuid,
         session_name: _uuid,
         // uid: _uuid,
         // uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       // let params = {
       // let params = {
       //   message: {
       //   message: {
@@ -3062,7 +3062,7 @@ ${_wordData}
             session_name: `${this.courseId}-studyStudent-md`,
             session_name: `${this.courseId}-studyStudent-md`,
             uid: _uuid,
             uid: _uuid,
             file_ids: this.fileId,
             file_ids: this.fileId,
-            model: "gpt-4o-2024-08-06"
+            model: "gpt-4o-mini"
           };
           };
           // let params = {
           // let params = {
           //   model: "gpt-3.5-turbo",
           //   model: "gpt-3.5-turbo",
@@ -3259,7 +3259,7 @@ ${_wordData}
         session_name: `${this.courseId}-studyStudent-md`,
         session_name: `${this.courseId}-studyStudent-md`,
         uid: _uuid,
         uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       // let params = {
       // let params = {
       //     model: "gpt-3.5-turbo",
       //     model: "gpt-3.5-turbo",
@@ -3733,7 +3733,7 @@ ${_wordData}
   padding: 10px;
   padding: 10px;
   background-color: #f6f8ff;
   background-color: #f6f8ff;
   border-radius: 2px 8px 8px 8px;
   border-radius: 2px 8px 8px 8px;
-  white-space: pre-line;
+  /* white-space: pre-line; */
   word-break: break-all;
   word-break: break-all;
 }
 }
 
 
@@ -3741,6 +3741,10 @@ ${_wordData}
   margin-left: 20px;
   margin-left: 20px;
 }
 }
 
 
+.s_t_c_a_r_content >>> li{
+	margin: 1.5em 0;
+}
+
 /* .s_t_c_a_r_content>>> ol{
 /* .s_t_c_a_r_content>>> ol{
 	margin-left: 20px;
 	margin-left: 20px;
 } */
 } */

+ 3 - 3
src/components/classRoomHelper/component/taskArea.vue

@@ -1223,7 +1223,7 @@ ${_textData}
         session_name: uuidv4(),
         session_name: uuidv4(),
         // uid: _uuid,
         // uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
 
 
       this.ajax
       this.ajax
@@ -1496,7 +1496,7 @@ ${taskText}
         session_name: uuidv4(),
         session_name: uuidv4(),
         // uid: _uuid,
         // uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
 
 
       this.ajax
       this.ajax
@@ -1834,7 +1834,7 @@ ${_choiceText}
           session_name: uuidv4(),
           session_name: uuidv4(),
           // uid: _uuid,
           // uid: _uuid,
           file_ids: this.fileId,
           file_ids: this.fileId,
-          model: "gpt-4o-2024-08-06"
+          model: "gpt-4o-mini"
         };
         };
 
 
         this.ajax
         this.ajax

+ 3 - 3
src/components/classRoomHelper/index.vue

@@ -455,8 +455,8 @@ let params = {
         // session_name: uuidv4(),
         // session_name: uuidv4(),
         // // uid: _uuid,
         // // uid: _uuid,
         // file_ids: this.fileId,
         // file_ids: this.fileId,
-				// model: "gpt-4o-2024-08-06",
-					model: "gpt-4o-2024-08-06",
+				// model: "gpt-4o-mini",
+					model: "gpt-4o-mini",
 					temperature: 0,
 					temperature: 0,
 					max_tokens: 4096,
 					max_tokens: 4096,
 					top_p: 1,
 					top_p: 1,
@@ -742,7 +742,7 @@ Instruction: Based on the context, follow "Format example", write content
         session_name: _uuid,
         session_name: _uuid,
         // uid: _uuid,
         // uid: _uuid,
         file_ids: this.fileId,
         file_ids: this.fileId,
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       // let params = {
       // let params = {
       //   message: {
       //   message: {

+ 66 - 45
src/components/easy2/commpont/markDialog.vue

@@ -8,7 +8,7 @@
           <div class="scoreTit">
           <div class="scoreTit">
             <div>任务得分</div>
             <div>任务得分</div>
             <div>
             <div>
-              <span style="color: rgba(54, 129, 252, 1);margin-right: 3px;">{{
+              <span style="color: #4380F8;margin-right: 3px;">{{
                 totalScore ? totalScore : 0
                 totalScore ? totalScore : 0
               }}</span
               }}</span
               >分
               >分
@@ -91,7 +91,7 @@
               @blur="submit"
               @blur="submit"
             >
             >
             </el-input>
             </el-input>
-            <!-- <div
+            <div
               v-if="
               v-if="
                 (currentUid.type == 1 ||
                 (currentUid.type == 1 ||
                   currentUid.type == 10 ||
                   currentUid.type == 10 ||
@@ -103,7 +103,7 @@
               @click="anewEva"
               @click="anewEva"
             >
             >
               重新生成
               重新生成
-            </div> -->
+            </div>
           </div>
           </div>
 
 
           <div
           <div
@@ -590,12 +590,11 @@ export default {
     this.selectSWorksData();
     this.selectSWorksData();
   },
   },
   methods: {
   methods: {
+    setZero(index){
+      console.log(index);
+      console.log('scoTitList',this.scoTitList);
+    },
     async anewEva() {
     async anewEva() {
-      // if (!this.textarea) {
-      //   return this.$message.info("请先进行AI评分获取评语~");
-      // }
-      // return console.log('this.scoTitList',this.scoTitList);
-
       this.ScLoading = true;
       this.ScLoading = true;
 
 
       let _fileid = "";
       let _fileid = "";
@@ -607,16 +606,16 @@ export default {
         _fileid = await this.createFileid(this.currentUid.content);
         _fileid = await this.createFileid(this.currentUid.content);
       }
       }
 
 
-      let sco = "";
+      let sco = ""; //分数
       this.scoTitList.forEach(e => {
       this.scoTitList.forEach(e => {
-        sco += `${e.detail}:${e.cog}星`;
+        sco += `${e.detail}:${e.cog}星`;
       });
       });
 
 
       let con = this.cuScoCon;
       let con = this.cuScoCon;
 
 
-      let std = "";
+      let std = ""; //维度
       let tit = [];
       let tit = [];
-      let laws = "";
+      let laws = ""; //细则
       if (this.tool.eList && this.tool.eList.length) {
       if (this.tool.eList && this.tool.eList.length) {
         tit = JSON.parse(JSON.stringify(this.tool.eList));
         tit = JSON.parse(JSON.stringify(this.tool.eList));
       } else {
       } else {
@@ -626,7 +625,7 @@ export default {
       if (this.tool.eList && this.tool.eList.length) {
       if (this.tool.eList && this.tool.eList.length) {
         for (let i = 0; i < this.tool.eList.length; i++) {
         for (let i = 0; i < this.tool.eList.length; i++) {
           if (this.tool.eList[i].isai == 1) {
           if (this.tool.eList[i].isai == 1) {
-            laws += `细则${i}:${this.tool.eList[i].rule}, \n`;
+            laws += `${this.tool.eList[i].rule}。 \n`;
           }
           }
         }
         }
         for (let i = 0; i < this.tool.eList.length; i++) {
         for (let i = 0; i < this.tool.eList.length; i++) {
@@ -639,21 +638,13 @@ export default {
             } else {
             } else {
               result = a;
               result = a;
             }
             }
-            std += `纬度${i}:“${result}”,  \n`;
+            std += `${result}。  \n`;
           }
           }
         }
         }
       } else {
       } else {
         for (let i = 0; i < tit.length; i++) {
         for (let i = 0; i < tit.length; i++) {
           if (tit[i].isai == 1) {
           if (tit[i].isai == 1) {
-            let a = tit[i].detail;
-            let result = "";
-
-            if (isNaN(parseFloat(a)) && a) {
-              result = a.match(/[\u4e00-\u9fa5a-zA-Z]+/g).join("");
-            } else {
-              result = a;
-            }
-            laws += ` 细则${i}:${tit[i].rule}, \n`;
+            laws += ` ${tit[i].rule}。 \n`;
           }
           }
         }
         }
         for (let i = 0; i < tit.length; i++) {
         for (let i = 0; i < tit.length; i++) {
@@ -666,7 +657,7 @@ export default {
             } else {
             } else {
               result = a;
               result = a;
             }
             }
-            std += `纬度${i}:“${result}”,  \n`;
+            std += `${result}。  \n`;
           }
           }
         }
         }
       }
       }
@@ -680,31 +671,33 @@ export default {
 
 
         #目标#
         #目标#
         你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
         你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
-        当作业内容与<评价细则>无关,或者缺乏原创性会被直接评为0星。此时你可以输出评语“==期待看到你自己的想法!必要时,可以请教老师哦~==”
+        当作业内容与评价细则无关,或者缺乏原创性会被直接评为0星。此时你可以输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
+        ${this.currentUid.type == 1 ? "提取图片内容进行评价" : ""}
       
       
           
           
         #评分资料#
         #评分资料#
         评价标准:${std}
         评价标准:${std}
+        评价细则:${laws}
         等级:${sco}
         等级:${sco}
         作业内容:${_fileid ? "上传的文件内容" : con}
         作业内容:${_fileid ? "上传的文件内容" : con}
 
 
 
 
         #输出要求#
         #输出要求#
         “评语”字数控制在150字左右,参考输出范例。
         “评语”字数控制在150字左右,参考输出范例。
-        只输出评价内容,不要输出其他无关内容
+        严格输出按照格式输出json格式。只输出json格式的内容,其他内容不要输出
         
         
           
           
         #输出格式#
         #输出格式#
-        ==
-        学生能够全面且正确地描述光合作用中氧气和葡萄糖的生成过程,涵盖光反应和暗反应的每个阶段和主要反应物及产物。同时,学生也能够全面、准确地解释氧气和葡萄糖在植物生命活动中的重要作用,并展示了对光合作用的深入理解。论文结构良好,内容详实,逻辑清晰,论据充分。
-        ==
+        [{'comment':'评语(150个汉字左右)'}]
+
 
 
         #输出范例#
         #输出范例#
-        学生能够全面且正确地描述光合作用中氧气和葡萄糖的生成过程,涵盖光反应和暗反应的每个阶段和主要反应物及产物。同时,学生也能够全面、准确地解释氧气和葡萄糖在植物生命活动中的重要作用,并展示了对光合作用的深入理解。论文结构良好,内容详实,逻辑清晰,论据充分。
+        [{'comment':'学生能够全面且正确地描述光合作用中氧气和葡萄糖的生成过程,涵盖光反应和暗反应的每个阶段和主要反应物及产物。同时,学生也能够全面、准确地解释氧气和葡萄糖在植物生命活动中的重要作用,并展示了对光合作用的深入理解。论文结构良好,内容详实,逻辑清晰,论据充分。'}]
         `;
         `;
+      // console.log("messages", messages);
 
 
       let params = {
       let params = {
-        assistant_id: "f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b",
+        assistant_id: "6063369f-289a-11ef-8bf4-12e77c4cb76b",
         message: [
         message: [
           {
           {
             type: "text",
             type: "text",
@@ -715,24 +708,54 @@ export default {
         userId: this.cUserid,
         userId: this.cUserid,
         file_ids: _fileid ? [_fileid] : [],
         file_ids: _fileid ? [_fileid] : [],
         isImage: this.currentUid.type == 1 ? true : "",
         isImage: this.currentUid.type == 1 ? true : "",
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       this.ajax
       this.ajax
         .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)
         .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)
         .then(response => {
         .then(response => {
           let data = response.data.FunctionResponse;
           let data = response.data.FunctionResponse;
           console.log("data", data);
           console.log("data", data);
-          // 找到第一个等号的位置
-          const startIndex = data.message.indexOf("==") + 2;
-          // 找到最后一个等号的位置
-          const endIndex = data.message.lastIndexOf("==");
+          if (data.message) {
+            let dArray = {};
+            try {
+              dArray = JSON.parse(
+                data.message.replaceAll("```json", "").replaceAll("```", "")
+              );
+            } catch (error) {
+              console.log("error_________________" + error);
+              try {
+                let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
 
 
-          // 提取中间的文字
-          const extractedText = data.message
-            .substring(startIndex, endIndex)
-            .trim();
+                let match = data.message.match(regex);
+                dArray = JSON.parse(
+                  match[0]
+                    .replace(/\n/g, "")
+                    .replace(/\s{2,}/g, "")
+                    .replace(/\'/g, '"')
+                );
+              } catch (error) {
+                try {
+                  dArray = JSON.parse(
+                    data.message
+                      .replaceAll("```json", "")
+                      .replaceAll("# Solution", "")
+                      .replaceAll("```", "")
+                      .replace(/\n/g, "")
+                      .replace(/\s{2,}/g, "")
+                      .replace(/\'/g, '"')
+                  );
+                } catch (error) {
+                  console.log("error_________________" + error);
 
 
-          this.textarea = extractedText;
+                  this.anewEva();
+                  return;
+                }
+                console.log("error_________________" + error);
+              }
+            }
+            console.log("dArray", dArray);
+            this.textarea = dArray[0].comment;
+          }
           this.submit()
           this.submit()
           this.$message.success("重新生成完成");
           this.$message.success("重新生成完成");
 
 
@@ -740,9 +763,7 @@ export default {
         })
         })
         .catch(error => {
         .catch(error => {
           this.ScLoading = false;
           this.ScLoading = false;
-
           this.$message.error("重新生成失败");
           this.$message.error("重新生成失败");
-
           console.log(error);
           console.log(error);
         });
         });
     },
     },
@@ -1029,7 +1050,7 @@ export default {
         userId: this.cUserid,
         userId: this.cUserid,
         file_ids: _fileid ? [_fileid] : [],
         file_ids: _fileid ? [_fileid] : [],
         isImage: work.type == 1 ? true : "",
         isImage: work.type == 1 ? true : "",
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       this.ajax
       this.ajax
         .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)
         .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params)
@@ -1906,7 +1927,7 @@ export default {
   right: 22px;
   right: 22px;
   color: #12b0ff;
   color: #12b0ff;
   cursor: pointer;
   cursor: pointer;
-  font-size: 16px;
+  font-size: 14px;
   transform: translate(0px, 2px);
   transform: translate(0px, 2px);
 }
 }
 </style>
 </style>

+ 1 - 1
src/components/easy2/commpont/markScore.vue

@@ -283,7 +283,7 @@ export default {
         userId: this.userid,
         userId: this.userid,
         file_ids: _fileid ? [_fileid] : [],
         file_ids: _fileid ? [_fileid] : [],
         isImage: work == 0 ? true : '',
         isImage: work == 0 ? true : '',
-        model: "gpt-4o-2024-08-06"
+        model: "gpt-4o-mini"
       };
       };
       return new Promise((resolve,reject) => {
       return new Promise((resolve,reject) => {
         this.ajax
         this.ajax

+ 1 - 1
src/components/easy2/studyStudent.vue

@@ -13852,7 +13852,7 @@ export default {
         session_name: uuidv4(),
         session_name: uuidv4(),
         userId: this.userid,
         userId: this.userid,
         file_ids: [],
         file_ids: [],
-        model:'gpt-4o-2024-08-06'
+        model:'gpt-4o-mini'
       };
       };
       // console.log('params',params);
       // console.log('params',params);
       
       

+ 2 - 1
src/components/index.vue

@@ -711,9 +711,10 @@ export default {
       let params = {
       let params = {
         org: this.org && this.org != "" ? this.org : "",
         org: this.org && this.org != "" ? this.org : "",
         oid: this.oid && this.oid != "" ? this.oid : "",
         oid: this.oid && this.oid != "" ? this.oid : "",
+        stand: "cn"
       };
       };
       this.ajax
       this.ajax
-        .get(this.$store.state.api + "selectAllType", params)
+        .get(this.$store.state.api + "selectAllTypeStand", params)
         .then((res) => {
         .then((res) => {
           if(this.oid == "69893dca-1d47-11ed-8c78-005056b86db5"){
           if(this.oid == "69893dca-1d47-11ed-8c78-005056b86db5"){
             res.data[0] = [...res.data[0],...res.data[4]]
             res.data[0] = [...res.data[0],...res.data[4]]

Some files were not shown because too many files changed in this diff