|
|
@@ -522,9 +522,9 @@
|
|
|
v-html="
|
|
|
chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
|
|
|
.taskDetail
|
|
|
- ? chapInfoList[courseType].chapterInfo[0].taskJson[
|
|
|
+ ? renderedFormula(chapInfoList[courseType].chapterInfo[0].taskJson[
|
|
|
taskCount
|
|
|
- ].taskDetail
|
|
|
+ ].taskDetail)
|
|
|
: '暂无描述'
|
|
|
"
|
|
|
></div>
|
|
|
@@ -1020,7 +1020,7 @@
|
|
|
@click="addTools(tooC, toolIndex, taskCount)"
|
|
|
/>
|
|
|
<div style="margin: 5px 0">电子白板</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1032,7 +1032,7 @@
|
|
|
@click="addTools(tooC, toolIndex, taskCount)"
|
|
|
/>
|
|
|
<div style="margin: 5px 0">思维导图</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,3)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,3)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1053,7 +1053,7 @@
|
|
|
/>
|
|
|
<div style="margin: 5px 0">思维网格</div>
|
|
|
<!-- && worksStudent[toolIndex].length>0 -->
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1089,7 +1089,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">问卷调查</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,4)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,4)"
|
|
|
style="position: absolute;right: 153px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1118,7 +1118,7 @@
|
|
|
<div style="margin: 5px 0">选择题</div>
|
|
|
<div
|
|
|
class="upload_toolBtn"
|
|
|
-
|
|
|
+ v-if="tType == 1"
|
|
|
@click="
|
|
|
openChoseWorksDetailDialog(
|
|
|
tooC,
|
|
|
@@ -1155,7 +1155,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">问答</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
|
|
|
style="position: absolute;right: 135px;top: -45px;height: 40px;display: flex;align-items: center;justify-content: center;background: #409EFF;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1175,7 +1175,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">训练服务器</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,18)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,18)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1203,7 +1203,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">AIoT Blockly</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,21)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,21)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1223,7 +1223,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">AI Python</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,23)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,23)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1235,7 +1235,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">AI Blockly</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,24)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,24)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1255,7 +1255,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">数学画板</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,31)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,31)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1267,7 +1267,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">翻译</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,28)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,28)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1295,7 +1295,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">GeoGebra</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,39)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,39)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1307,7 +1307,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">源码编辑</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,32)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,32)"
|
|
|
style="position: absolute;right: 153px;top: -42px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1325,7 +1325,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">个人评价</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1337,7 +1337,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">选择匹配</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1357,7 +1357,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">排序</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1369,7 +1369,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">表格</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1381,7 +1381,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">文档</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1393,7 +1393,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">学生分组</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1405,7 +1405,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">CocoPi</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,57)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,57)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1457,7 +1457,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">海龟编程</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,63)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,63)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1469,7 +1469,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">AI智能体</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,71)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,71)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1494,7 +1494,7 @@
|
|
|
{{tool.appJson && tool.appJson.name ? tool.appJson.name : '应用中心'}}
|
|
|
</div>
|
|
|
</el-tooltip>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,72)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,72)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1514,7 +1514,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">公式编辑</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,66)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,66)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1546,7 +1546,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">英语写作</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,69)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,69)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1558,7 +1558,7 @@
|
|
|
alt
|
|
|
/>
|
|
|
<div style="margin: 5px 0">英语口语</div>
|
|
|
- <div class="upload_toolBtn" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,70)"
|
|
|
+ <div class="upload_toolBtn" v-if="tType == 1" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,70)"
|
|
|
style="position: absolute;right: 33px;top: -30px;">
|
|
|
分析
|
|
|
</div>
|
|
|
@@ -1577,7 +1577,7 @@
|
|
|
<!-- @click.stop="updateToolDetail(toolIndex, 2)" -->
|
|
|
<div
|
|
|
style="height:100%;"
|
|
|
- v-html="contentConvent(tool.toolDetail)"
|
|
|
+ v-html="renderedFormula(tool.toolDetail)"
|
|
|
v-if="toolDetailIndex != toolIndex"
|
|
|
></div>
|
|
|
<div v-else @click.stop="" style="height:100%;">
|
|
|
@@ -1968,7 +1968,7 @@
|
|
|
<img
|
|
|
style="cursor: pointer"
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
alt
|
|
|
/>
|
|
|
<div
|
|
|
@@ -2106,7 +2106,7 @@
|
|
|
<div class="workImg">
|
|
|
<img
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
alt
|
|
|
/>
|
|
|
<div
|
|
|
@@ -2180,7 +2180,7 @@
|
|
|
<div class="workImg">
|
|
|
<img
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
v-if="w.type == 12"
|
|
|
alt
|
|
|
/>
|
|
|
@@ -3447,7 +3447,7 @@
|
|
|
<img
|
|
|
style="cursor: pointer"
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
alt
|
|
|
/>
|
|
|
<!-- @click="openVideo(w.works)" -->
|
|
|
@@ -3991,7 +3991,7 @@
|
|
|
<img
|
|
|
style="cursor: pointer"
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
alt
|
|
|
/>
|
|
|
<!-- @click="openVideo(w.works)" -->
|
|
|
@@ -4431,7 +4431,7 @@
|
|
|
<div class="workImg">
|
|
|
<img
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
alt
|
|
|
/>
|
|
|
<div
|
|
|
@@ -4609,7 +4609,7 @@
|
|
|
<div class="workImg">
|
|
|
<img
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
v-if="w.type == 12"
|
|
|
alt
|
|
|
/>
|
|
|
@@ -6198,7 +6198,7 @@
|
|
|
<div
|
|
|
style="
|
|
|
width: calc(100% - 130px);
|
|
|
- display: block;
|
|
|
+ display: flex;
|
|
|
white-space: nowrap;
|
|
|
overflow: hidden;
|
|
|
text-overflow: ellipsis;
|
|
|
@@ -9278,13 +9278,17 @@
|
|
|
tool.tool.indexOf(47) != -1
|
|
|
"
|
|
|
>
|
|
|
- <AnswerData
|
|
|
+ <!-- <AnswerData
|
|
|
v-if="
|
|
|
checkJson[toolIndex].length &&
|
|
|
(tool.sentenceList || tool.sentenceList.length > 0)
|
|
|
"
|
|
|
:people="checkJson[toolIndex]"
|
|
|
- ></AnswerData>
|
|
|
+ ></AnswerData> -->
|
|
|
+ <sortToolWorkShow v-if="
|
|
|
+ worksStudent[toolIndex].length
|
|
|
+ "
|
|
|
+ :people="worksStudent[toolIndex]"></sortToolWorkShow>
|
|
|
</div>
|
|
|
<div
|
|
|
v-if="
|
|
|
@@ -10664,7 +10668,7 @@
|
|
|
<img
|
|
|
style="cursor: pointer"
|
|
|
:src="word2"
|
|
|
- @click="downloadFile(w.works)"
|
|
|
+ @click="downloadFile(w.works,w.userid)"
|
|
|
alt
|
|
|
/>
|
|
|
<!-- @click="openVideo(w.works)" -->
|
|
|
@@ -13017,7 +13021,7 @@
|
|
|
:key="index1"
|
|
|
>
|
|
|
<div class="a_add_head">
|
|
|
- <div style="display: flex">
|
|
|
+ <div style="display: flex;align-items: center;">
|
|
|
<span class="askIndex">{{ index1 + 1 }}</span>
|
|
|
<div
|
|
|
v-if="testJson.testJson[index1].type == '1'"
|
|
|
@@ -13031,7 +13035,7 @@
|
|
|
>
|
|
|
(多选题)
|
|
|
</div>
|
|
|
- <div>题目:{{ testJson.testJson[index1].teststitle }}</div>
|
|
|
+ <div>题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
|
|
|
</div>
|
|
|
<img
|
|
|
v-if="testJson.testJson[index1].img"
|
|
|
@@ -14333,7 +14337,7 @@
|
|
|
<div
|
|
|
class="worksAnswer codeFileBox"
|
|
|
v-if="commentDetail.works && commentDetail.type == 12"
|
|
|
- @click="downloadFile(commentDetail.works)"
|
|
|
+ @click="downloadFile(commentDetail.works,w.userid)"
|
|
|
>
|
|
|
<img src="../../assets/icon/codeFile.png" />
|
|
|
<div>点击下载文件</div>
|
|
|
@@ -16227,6 +16231,7 @@ import AskStatic from "../components/askStatic";
|
|
|
import AskStatic2 from "../components/askStatic2";
|
|
|
import AnswerData2 from "../components/answerData2";
|
|
|
import AnswerData from "../components/answerData";
|
|
|
+import sortToolWorkShow from "../components/sortToolWorkShow.vue";
|
|
|
import EditorBar from "../tools/wangEnduit.vue";
|
|
|
import Table from "../tools/table.vue";
|
|
|
import Time from "../tools/time.vue";
|
|
|
@@ -16339,6 +16344,7 @@ export default {
|
|
|
SeeBoard,
|
|
|
AnswerData2,
|
|
|
AnswerData,
|
|
|
+ sortToolWorkShow,
|
|
|
Audio,
|
|
|
ImgDraw,
|
|
|
Table,
|
|
|
@@ -16929,7 +16935,7 @@ export default {
|
|
|
toolDetail,
|
|
|
taskDetail,
|
|
|
toolList
|
|
|
- ) {
|
|
|
+ ) {
|
|
|
let jude = false;
|
|
|
this.AIloading.forEach((e, index) => {
|
|
|
if (index == toolIndex) {
|
|
|
@@ -17053,7 +17059,6 @@ export default {
|
|
|
for (let i = 0; i < con.length; i++) {
|
|
|
let _fileid = "";
|
|
|
let wok = con[i].works;
|
|
|
- // console.log('con',con);
|
|
|
|
|
|
// console.log('con[i].type',con[i].type);
|
|
|
|
|
|
@@ -17068,43 +17073,112 @@ export default {
|
|
|
}
|
|
|
// console.log('con[i].type',con[i])
|
|
|
|
|
|
- // console.log('con[i].type',con[i].type)
|
|
|
+ console.log('con[i].type',con[i].type)
|
|
|
|
|
|
if (_fileid == 1 || con[i].type == 3) {
|
|
|
this.AIloading[toolIndex][i].loading = false;
|
|
|
continue;
|
|
|
}
|
|
|
- let msg = `NOTICE
|
|
|
- Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
|
|
|
- Language: ${this.getLang()}
|
|
|
- ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
|
|
|
- Instruction: Based on the context, follow "Format example", write content.
|
|
|
|
|
|
- #目标#
|
|
|
- 你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
|
|
|
- 你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
|
|
|
- 你要结合<评价标准><评价细则>和<你判断的等级>写评语。
|
|
|
- 如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
|
|
|
- ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
|
|
|
+ let msg = ''
|
|
|
+ if(con[i].type == 20){
|
|
|
+ msg = `#NOTICE#
|
|
|
+ Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
|
|
|
+ - 深入理解教育评价标准,准确判断对话内容是否符合要求。
|
|
|
+ - 具备较强的文本分析能力,从对话中有效提取评价相关信息。
|
|
|
+ - 拥有客观公正的态度,确保评分结果公平合理。
|
|
|
+ - 能够清晰准确地表达评语,使学生和教师易于理解。
|
|
|
+ - 熟悉各类学习作业的要求和重点,为评价提供依据。
|
|
|
+ - 掌握一定的教育教学知识,更好地分析对话在教育场景中的意义。
|
|
|
+ Language: ${this.getLang()}
|
|
|
+ ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
|
|
|
+ Instruction: Based on the context, follow "Format example", write content.
|
|
|
+
|
|
|
+ #目标#
|
|
|
+ 你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
|
|
|
+ ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
|
|
|
+ #评分资料#
|
|
|
+ 评价标准:${std}
|
|
|
+ 评价细则:${laws}
|
|
|
+ 等级:${text}
|
|
|
+ 作业内容:${_fileid ? "上传的文件内容" : con[i].works}
|
|
|
+ 具体你步骤如下:
|
|
|
+ 1. 作业内容审查:仔细阅读需要评价的作业内容,标记出可能与评价相关的部分,如知识点的回答准确性、回答的完整性、语言表达的规范性等。
|
|
|
+ 2. 掌握评价标准:阅读理解并掌握评价标准的结构与内容,包括评价维度、不同等级以及对应的评价细则的内容为评价标准。
|
|
|
+ 3. 评分计算:针对提取的作业内容按照确定的评价标准,对标记出的评价相关部分进行量化打分,输出评分结果。
|
|
|
+ 4. 评语生成:根据评分结果和对话中的具体情况,撰写评语,指出优点和不足之处,以帮助学生自查作业并为教师提供评价和指导依据。
|
|
|
+
|
|
|
+ ### 理论框架
|
|
|
+ ### 教育目标分类理论
|
|
|
+ 1. 基本原理:
|
|
|
+ - 将教育目标按照不同的层次分类,如认知领域、情感领域和动作技能领域等。
|
|
|
+ - 有助于明确教学活动期望达成的目标类型。
|
|
|
+ - 为评价教学成果提供了分类框架。
|
|
|
+ 2. 具体应用:
|
|
|
+ - 分析对话中涉及的目标类型,判断是否符合预期的教育目标。
|
|
|
+ - 依据不同目标类型的要求,评估对话对学生相应能力的促进作用。
|
|
|
+ - 对比不同对话内容在目标达成度上的差异进行评分。
|
|
|
+
|
|
|
+ ### 教学评价理论
|
|
|
+ 1. 基本原理:
|
|
|
+ - 关注教学过程和结果的评价,包括对教师教学行为和学生学习成果的评价。
|
|
|
+ - 从多个维度进行评价,如教学内容、教学方法、学习效果等。
|
|
|
+ - 强调评价的客观性、全面性和发展性。
|
|
|
+ 2. 具体应用:
|
|
|
+ - 从对话中提取与教学内容、方法相关的信息进行评价。
|
|
|
+ - 考量对话对学生学习效果的影响来给出评分。
|
|
|
+ - 根据评价结果提出改进和发展的建议。
|
|
|
+
|
|
|
+ ### 对话分析理论
|
|
|
+ 1. 基本原理:
|
|
|
+ - 着重对对话结构、话语功能、交互模式等进行分析。
|
|
|
+ - 揭示对话中的信息流动、话语权分配等情况。
|
|
|
+ - 有助于理解对话参与者之间的关系和互动效果。
|
|
|
+ 2. 具体应用:
|
|
|
+ - 剖析“小可ai助手”与学生对话的结构合理性。
|
|
|
+ - 分析话语功能是否有助于学习和评价目的。
|
|
|
+ - 根据交互模式判断对话是否有利于学生参与和学习,从而给出评分。
|
|
|
+
|
|
|
+ #输出格式#
|
|
|
+
|
|
|
+ [${text}{'comment':'评语(150个汉字左右)'}]
|
|
|
+ 注意检查输出评语不超过50字`
|
|
|
+ }else{
|
|
|
+ msg = `NOTICE
|
|
|
+ Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
|
|
|
+ Language: ${this.getLang()}
|
|
|
+ ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
|
|
|
+ Instruction: Based on the context, follow "Format example", write content.
|
|
|
+
|
|
|
+ #目标#
|
|
|
+ 你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
|
|
|
+ 你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
|
|
|
+ 你要结合<评价标准><评价细则>和<你判断的等级>写评语。
|
|
|
+ 如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
|
|
|
+ ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
|
|
|
|
|
|
|
|
|
- #评分资料#
|
|
|
- 评价标准:${std}
|
|
|
- 评价细则:${laws}
|
|
|
- 作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
|
|
|
- 任务描述:${taskDetail}
|
|
|
- 工具描述:${toolDetail}
|
|
|
+ #评分资料#
|
|
|
+ 评价标准:${std}
|
|
|
+ 评价细则:${laws}
|
|
|
+ 作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
|
|
|
+ 任务描述:${taskDetail}
|
|
|
+ 工具描述:${toolDetail}
|
|
|
|
|
|
|
|
|
- #输出要求#
|
|
|
- 输出每个评价标准角度的“等级”和作业的综合性“评语”。
|
|
|
- “评语”控制在150字左右。
|
|
|
- 评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
|
|
|
+ #输出要求#
|
|
|
+ 输出每个评价标准角度的“等级”和作业的综合性“评语”。
|
|
|
+ “评语”控制在150字左右。
|
|
|
+ 评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
|
|
|
|
|
|
- #输出格式#
|
|
|
+ #输出格式#
|
|
|
|
|
|
- [${text}{'comment':'评语(150个汉字左右)'}]
|
|
|
- `;
|
|
|
+ [${text}{'comment':'评语(150个汉字左右)'}]
|
|
|
+ `;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
let mk = `markSco${toolIndex}${i}`;
|
|
|
let mkAwit = this.$refs[mk][0].aiupdetaSco(
|
|
|
@@ -21964,6 +22038,9 @@ export default {
|
|
|
} else if (_chapterData[this.taskCount][0].type == 6) {
|
|
|
this.showType = 1;
|
|
|
this.text = this.textList[this.taskCount][0];
|
|
|
+ } else if (_chapterData[this.taskCount][0].type == 16) {
|
|
|
+ this.showType = 16;
|
|
|
+ this.pptImgUrl1 = _url;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -22130,6 +22207,9 @@ export default {
|
|
|
} else if (_chapterData[this.taskCount][0].type == 6) {
|
|
|
this.showType = 1;
|
|
|
this.text = this.textList[this.taskCount][0];
|
|
|
+ } else if (_chapterData[this.taskCount][0].type == 16) {
|
|
|
+ this.showType = 16;
|
|
|
+ this.pptImgUrl1 = _url;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -24616,59 +24696,60 @@ export default {
|
|
|
};
|
|
|
x.send();
|
|
|
},
|
|
|
- downloadFile(url) {
|
|
|
- let hz = url.substring(url.lastIndexOf(".") + 1);
|
|
|
+ downloadFile(url,uid) {
|
|
|
+ if (this.tType == 1 || this.userid == uid) {
|
|
|
+ let hz = url.substring(url.lastIndexOf(".") + 1);
|
|
|
|
|
|
- if (hz == "txt" || hz == "md") {
|
|
|
- this.lookTxt(url);
|
|
|
- return;
|
|
|
- }
|
|
|
+ if (hz == "txt" || hz == "md") {
|
|
|
+ this.lookTxt(url);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- var credentials = {
|
|
|
- accessKeyId: "AKIATLPEDU37QV5CHLMH",
|
|
|
- secretAccessKey: "Q2SQw37HfolS7yeaR1Ndpy9Jl4E2YZKUuuy2muZR"
|
|
|
- }; //秘钥形式的登录上传
|
|
|
- window.AWS.config.update(credentials);
|
|
|
- window.AWS.config.region = "cn-northwest-1"; //设置区域
|
|
|
- let url2 = url;
|
|
|
- let _url2 = "";
|
|
|
- if (
|
|
|
- url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
|
|
|
- ) {
|
|
|
- _url2 = url2.split(
|
|
|
- "https://view.officeapps.live.com/op/view.aspx?src="
|
|
|
- )[1];
|
|
|
- } else {
|
|
|
- _url2 = url2;
|
|
|
+ var credentials = {
|
|
|
+ accessKeyId: "AKIATLPEDU37QV5CHLMH",
|
|
|
+ secretAccessKey: "Q2SQw37HfolS7yeaR1Ndpy9Jl4E2YZKUuuy2muZR"
|
|
|
+ }; //秘钥形式的登录上传
|
|
|
+ window.AWS.config.update(credentials);
|
|
|
+ window.AWS.config.region = "cn-northwest-1"; //设置区域
|
|
|
+ let url2 = url;
|
|
|
+ let _url2 = "";
|
|
|
+ if (
|
|
|
+ url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
|
|
|
+ ) {
|
|
|
+ _url2 = url2.split(
|
|
|
+ "https://view.officeapps.live.com/op/view.aspx?src="
|
|
|
+ )[1];
|
|
|
+ } else {
|
|
|
+ _url2 = url2;
|
|
|
+ }
|
|
|
+ const loading2 = this.$loading.service({
|
|
|
+ background: "rgba(255, 255, 255, 0.7)",
|
|
|
+ target: document.body,
|
|
|
+ text: "文件加载中..."
|
|
|
+ });
|
|
|
+ var s3 = new window.AWS.S3({ params: { Bucket: "ccrb" } });
|
|
|
+ let name = decodeURIComponent(
|
|
|
+ _url2.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1]
|
|
|
+ );
|
|
|
+ var params = {
|
|
|
+ Bucket: "ccrb",
|
|
|
+ Key: name
|
|
|
+ };
|
|
|
+ s3.getObject(params, function(err, data) {
|
|
|
+ loading2.close();
|
|
|
+ if (err) console.log(err, err.stack);
|
|
|
+ // an error occurred
|
|
|
+ else {
|
|
|
+ let url = window.URL.createObjectURL(new Blob([data.Body]));
|
|
|
+ let a = document.createElement("a");
|
|
|
+ a.name = name;
|
|
|
+ a.href = url;
|
|
|
+ a.download = name;
|
|
|
+ a.click();
|
|
|
+ console.log(data);
|
|
|
+ } // sxuccessful response
|
|
|
+ });
|
|
|
}
|
|
|
- const loading2 = this.$loading.service({
|
|
|
- background: "rgba(255, 255, 255, 0.7)",
|
|
|
- target: document.body,
|
|
|
- text: "文件加载中..."
|
|
|
- });
|
|
|
- var s3 = new window.AWS.S3({ params: { Bucket: "ccrb" } });
|
|
|
- let name = decodeURIComponent(
|
|
|
- _url2.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1]
|
|
|
- );
|
|
|
- var params = {
|
|
|
- Bucket: "ccrb",
|
|
|
- Key: name
|
|
|
- };
|
|
|
- s3.getObject(params, function(err, data) {
|
|
|
- loading2.close();
|
|
|
- if (err) console.log(err, err.stack);
|
|
|
- // an error occurred
|
|
|
- else {
|
|
|
- let url = window.URL.createObjectURL(new Blob([data.Body]));
|
|
|
- let a = document.createElement("a");
|
|
|
- a.name = name;
|
|
|
- a.href = url;
|
|
|
- a.download = name;
|
|
|
- a.click();
|
|
|
- console.log(data);
|
|
|
- } // sxuccessful response
|
|
|
- });
|
|
|
-
|
|
|
return;
|
|
|
let _this = this;
|
|
|
let _url = "";
|
|
|
@@ -26119,7 +26200,42 @@ export default {
|
|
|
renderedFormula() {
|
|
|
return function(val){
|
|
|
try {
|
|
|
- return katex.renderToString(val,{ throwOnError: false });
|
|
|
+ // 判断是否含有HTML标签,<tag ...>...</tag>
|
|
|
+ const hasTag = /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g.test(val);
|
|
|
+ if (!hasTag) {
|
|
|
+ // 纯文本,整体渲染
|
|
|
+ val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
|
|
|
+
|
|
|
+ try {
|
|
|
+ return katex.renderToString(val.trim(), {
|
|
|
+ throwOnError: false,
|
|
|
+ strict: false,
|
|
|
+ output: "htmlAndMathml"
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ return val; // 渲染失败原样输出
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 有标签,对每个标签内容渲染
|
|
|
+ return val.replace(
|
|
|
+ /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g,
|
|
|
+ (match, tag, attrs, inner) => {
|
|
|
+ let html;
|
|
|
+ val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
|
|
|
+
|
|
|
+ try {
|
|
|
+ html = katex.renderToString(inner.trim(), {
|
|
|
+ throwOnError: false,
|
|
|
+ strict: false,
|
|
|
+ output: "htmlAndMathml"
|
|
|
+ });
|
|
|
+ } catch (e) {
|
|
|
+ html = inner;
|
|
|
+ }
|
|
|
+ return `<${tag}${attrs}>${html}</${tag}>`;
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
} catch (e) {
|
|
|
console.error('KaTeX渲染错误:', e);
|
|
|
return val;
|
|
|
@@ -30842,4 +30958,19 @@ div::-webkit-scrollbar {
|
|
|
overflow: hidden;
|
|
|
text-overflow: ellipsis;
|
|
|
}
|
|
|
+.pb_content >>> .katex {
|
|
|
+ font-size: 16px;
|
|
|
+ display: block;
|
|
|
+ width: 100%;
|
|
|
+ white-space: normal;
|
|
|
+}
|
|
|
+.pb_content >>> .katex .base{
|
|
|
+ display: inline !important;
|
|
|
+ display: contents !important;
|
|
|
+}
|
|
|
+
|
|
|
+.pb_content >>> .katex .base .cjk_fallback{
|
|
|
+ white-space: normal !important;
|
|
|
+ display: inline !important;
|
|
|
+}
|
|
|
</style>
|