|
@@ -4714,11 +4714,18 @@
|
|
|
margin: 20px 0;
|
|
|
">
|
|
|
<div class="lineTitle clineTitle">评价设置</div>
|
|
|
- <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
|
|
|
- <div class="r_pub_button_op" style="margin-left:auto;"
|
|
|
- @contextmenu.prevent="openAiDialog(1, 'aiDetail4', itemTask.eList, itemTaskIndex)"
|
|
|
- @click="openAiDialog(2, 'aiDetail4', itemTask.eList, itemTaskIndex)">智能优化</div>
|
|
|
- </el-tooltip>
|
|
|
+ <div style="margin-left:auto;display: flex;">
|
|
|
+ <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
|
|
|
+ <div class="r_pub_button_op"
|
|
|
+ @contextmenu.prevent="openAiDialog(1, 'aiRateRuleA', itemTaskIndex)"
|
|
|
+ @click="openAiDialog(2, 'aiRateRuleA', itemTaskIndex)">一键生成评价细则</div>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
|
|
|
+ <div class="r_pub_button_op" style="margin-left:10px;"
|
|
|
+ @contextmenu.prevent="openAiDialog(1, 'aiDetail4', itemTask.eList, itemTaskIndex)"
|
|
|
+ @click="openAiDialog(2, 'aiDetail4', itemTask.eList, itemTaskIndex)">智能优化</div>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
<!-- <div class="line" style="width: 90%"></div> -->
|
|
|
</div>
|
|
|
</div>
|
|
@@ -4776,6 +4783,26 @@
|
|
|
<el-cascader :options="targetArray" v-model="itemTask.eList[eIndex].target"
|
|
|
:props="{ checkStrictly: true }" :show-all-levels="false" clearable></el-cascader>
|
|
|
</div>
|
|
|
+ <div class="elist_inptu_text" style="align-items: flex-start;" v-loading="ruleLoading[itemTaskIndex] && ruleLoading[itemTaskIndex][eIndex]" element-loading-text="小可正在努力生成中,请稍等...">
|
|
|
+ <span>细则:</span>
|
|
|
+ <div style="width: calc(100%);">
|
|
|
+ <div @click="openRule(itemTaskIndex, eIndex)" class="ruleBtn">{{itemTask.eList[eIndex].isrule ? '收起细则' : '展开细则'}}</div>
|
|
|
+ <div style="width: calc(100%);" class='op_task_box' v-if="itemTask.eList[eIndex].isrule">
|
|
|
+ <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="itemTask.eList[eIndex].rule" placeholder="请输入评价细则"></textarea>
|
|
|
+ <div class="op_box">
|
|
|
+ <div class="op_remark"></div>
|
|
|
+ <div style="display: flex;">
|
|
|
+ <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
|
|
|
+ <div class="r_pub_button_op"
|
|
|
+ @contextmenu.prevent="openAiDialog(1, 'aiRateRule', itemTaskIndex, eIndex)"
|
|
|
+ @click="openAiDialog(2, 'aiRateRule', itemTaskIndex, eIndex)">{{itemTask.eList[eIndex].rule ? '重新生成' : '生成细则'}}</div>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- <div class="addToolFun" @click="addEList(unitIndex, itemTaskIndex)"
|
|
@@ -4987,6 +5014,7 @@
|
|
|
<aiTips ttitle="任务详情" title="任务描述优化" :detail="aiJson.aiDetail2" pan="aiDetail2" @setAiJson="setAiJson" />
|
|
|
<aiTips ttitle="任务详情" title="工具描述优化" :detail="aiJson.aiDetail3" pan="aiDetail3" @setAiJson="setAiJson" />
|
|
|
<aiTips ttitle="任务详情" title="任务评价优化" :detail="aiJson.aiDetail4" pan="aiDetail4" @setAiJson="setAiJson" />
|
|
|
+ <!-- <aiTips ttitle="任务详情" title="生成评价细则" :detail="aiJson.aiRateRule" pan="aiRateRule" @setAiJson="setAiJson" /> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-dialog title="提示" :visible.sync="dialogVisible" :append-to-body="true" width="25%" :before-close="handleClose"
|
|
@@ -6813,6 +6841,7 @@ export default {
|
|
|
// yiKeTemplateArray:['cf5722a4-401b-11ef-b873-005056b86db5','cf5722a4-401b-11ef-b873-005056b86dc4','cf5722a4-401b-11ef-b873-005056b86dc3','cf5722a4-401b-11ef-b873-005056b86dc5','9dd4bb76-1e48-11ef-bee5-005056b86dc4'],
|
|
|
yiKeTemplateArray:[],
|
|
|
taskLoading: [],
|
|
|
+ ruleLoading: [],
|
|
|
};
|
|
|
},
|
|
|
directives: {
|
|
@@ -7381,6 +7410,21 @@ export default {
|
|
|
type: "warning",
|
|
|
})
|
|
|
.then(() => {
|
|
|
+ if (this.taskLoading.length) {
|
|
|
+ let _pan = 1
|
|
|
+ for(var k = 0; k < this.taskLoading.length; k++){
|
|
|
+ if(this.taskLoading[k]){
|
|
|
+ this.$message({
|
|
|
+ message: `请等待任务${k+1}回答完毕后再保存`,
|
|
|
+ type: "warning"
|
|
|
+ });
|
|
|
+ _pan = 2
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(_pan == 2){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
if (this.cid == "" || this.cid == undefined) {
|
|
|
if (this.courseName == "") {
|
|
|
this.$message.error("请补充填写课程名称");
|
|
@@ -7695,6 +7739,21 @@ export default {
|
|
|
return;
|
|
|
}
|
|
|
} else if (this.steps == 3) {
|
|
|
+ if (this.taskLoading.length) {
|
|
|
+ let _pan = 1
|
|
|
+ for(var k = 0; k < this.taskLoading.length; k++){
|
|
|
+ if(this.taskLoading[k]){
|
|
|
+ this.$message({
|
|
|
+ message: `请等待任务${k+1}回答完毕后再上传`,
|
|
|
+ type: "warning"
|
|
|
+ });
|
|
|
+ _pan = 2
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(_pan == 2){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
if (this.cid == "" || this.cid == undefined) {
|
|
|
if (this.courseName == "") {
|
|
|
this.$message.error("请补充填写课程名称");
|
|
@@ -10786,6 +10845,7 @@ export default {
|
|
|
this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
|
|
|
this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
|
|
|
this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
|
|
|
+ this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
|
|
|
if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
|
|
|
this.aiJson.aiOutlineTask = this.aiJson.aiOutlineTask ? this.aiJson.aiOutlineTask : '请根据<课程名字>以及该课程的<课程简要描述>来为该课程生成100字以内的序列课程任务,序列任务要求彼此连结紧密且没有重复。'
|
|
|
this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
|
|
@@ -12771,6 +12831,7 @@ export default {
|
|
|
this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
|
|
|
this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
|
|
|
this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
|
|
|
+ this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
|
|
|
if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
|
|
|
this.aiJson.aiOutlineTask = this.aiJson.aiOutlineTask ? this.aiJson.aiOutlineTask : '请根据<课程名字>以及该课程的<课程简要描述>来为该课程生成100字以内的序列课程任务,序列任务要求彼此连结紧密且没有重复。'
|
|
|
this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
|
|
@@ -12908,6 +12969,7 @@ export default {
|
|
|
this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
|
|
|
this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
|
|
|
this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
|
|
|
+ this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
|
|
|
if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
|
|
|
this.aiJson.aiOutlineTask = this.aiJson.aiOutlineTask ? this.aiJson.aiOutlineTask : '请根据<课程名字>以及该课程的<课程简要描述>来为该课程生成100字以内的序列课程任务,序列任务要求彼此连结紧密且没有重复。'
|
|
|
this.aiJson.aiOutlineDetail = this.aiJson.aiOutlineDetail ? this.aiJson.aiOutlineDetail : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
|
|
@@ -14845,6 +14907,8 @@ export default {
|
|
|
setAiJson(pan,string,string2){
|
|
|
if(pan == 'aiTeacher2'){
|
|
|
this.aiJson['teacherDetail2'] = string
|
|
|
+ }else if(pan == 'aiRateRuleA'){
|
|
|
+ this.aiJson['aiRateRule'] = string
|
|
|
}else if(pan == 'aiOutline2'){
|
|
|
this.aiJson['aiOutlineTask'] = string
|
|
|
this.aiJson['aiOutlineDetail'] = string2
|
|
@@ -14876,6 +14940,14 @@ export default {
|
|
|
}
|
|
|
this.$forceUpdate();
|
|
|
},
|
|
|
+ openRule(i, k){
|
|
|
+ if(this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].isrule){
|
|
|
+ this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].isrule = false
|
|
|
+ }else {
|
|
|
+ this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].isrule = true
|
|
|
+ }
|
|
|
+ this.$forceUpdate();
|
|
|
+ },
|
|
|
editCpote(index){
|
|
|
if(this.cpote[index]){
|
|
|
this.cpote[index] = false
|
|
@@ -15199,8 +15271,27 @@ export default {
|
|
|
|
|
|
this.aitype = type
|
|
|
this.aiText = this.aiJson.aiSearchFile
|
|
|
+ } else if (type == 'aiRateRule'){
|
|
|
+ this.aitype = type
|
|
|
+ this.aiText = this.aiJson.aiRateRule
|
|
|
+ this.aiCallback = [callback, index]
|
|
|
+ } else if (type == 'aiRateRuleA'){
|
|
|
+ this.$confirm("是否确定一键生成所有细则", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.aitype = type
|
|
|
+ this.aiText = this.aiJson.aiRateRule
|
|
|
+ this.aiCallback = callback
|
|
|
+ this.dialogVisibleAiD = true
|
|
|
+ }).catch(() => {})
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type != 'aiRateRuleA'){
|
|
|
+ this.dialogVisibleAiD = true
|
|
|
}
|
|
|
- this.dialogVisibleAiD = true
|
|
|
},
|
|
|
async aiConfirm(msg,msg2) {
|
|
|
let sub = []
|
|
@@ -15496,6 +15587,17 @@ ${msg}。相关信息内容至少要有300tokens,可以是markdown格式
|
|
|
this.aiSearchFile(messages,()=>{
|
|
|
this.fileSLoading = false
|
|
|
})
|
|
|
+ } else if (this.aitype == 'aiRateRule'){
|
|
|
+ this.againEva(msg, this.aiCallback[0], this.aiCallback[1])
|
|
|
+ } else if (this.aitype == 'aiRateRuleA'){
|
|
|
+ for(var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++){
|
|
|
+ let task = this.unitJson[0].chapterInfo[0].taskJson[i]
|
|
|
+ for(var k = 0; k < task.eList.length; k++){
|
|
|
+ if(!task.eList[k].rule){
|
|
|
+ this.againEva(msg, i, k)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
this.setAiJson(this.aitype, msg, msg2)
|
|
|
},
|
|
@@ -16981,7 +17083,6 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
|
|
|
let _task = tArray
|
|
|
_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail = _task.detail
|
|
|
_this.unitJson[0].chapterInfo[0].taskJson[index].eList = _task.elist
|
|
|
- _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose = []
|
|
|
_this.unitJson[0].chapterInfo[0].taskJson[index].chapterData = []
|
|
|
if(!_task.toolChoose || (_task.detail && _task.detail.length < 20) || !_task.detail){
|
|
|
console.log("error_________________JSON不对重新生成");
|
|
@@ -16989,25 +17090,31 @@ ${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内
|
|
|
_this.aiGet32(messages, index)
|
|
|
return;
|
|
|
}
|
|
|
+ _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose = []
|
|
|
if (_task.toolChoose && _task.toolChoose.length) {
|
|
|
for (var j = 0; j < _task.toolChoose.length; j++) {
|
|
|
let _json = {
|
|
|
- tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [16],
|
|
|
- toolDetail: _task.toolChoose[j].detail,
|
|
|
- toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 2,
|
|
|
- askCount: 1,
|
|
|
- askTitle: "",
|
|
|
- askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
|
|
|
- }
|
|
|
+ tool: [],
|
|
|
+ toolDetail: _task.toolChoose[j].detail,
|
|
|
+ toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 2,
|
|
|
+ askCount: 1,
|
|
|
+ askTitle: "",
|
|
|
+ askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
|
|
|
+ }
|
|
|
+ _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.push(_json)
|
|
|
|
|
|
if(converter(_task.toolChoose[j].tool) == converter('问答')){
|
|
|
let answerQ = await _this.aiCreateQuestion(15, index)
|
|
|
- _json.answerQ = answerQ.answerQ
|
|
|
+ // _json.answerQ = answerQ.answerQ
|
|
|
+ _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose[_this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.length - 1].answerQ = answerQ.answerQ
|
|
|
}else if(converter(_task.toolChoose[j].tool) == converter('选择题')){
|
|
|
let testJson = await _this.aiCreateQuestion(45, index)
|
|
|
- _json.testJson = {"testCount":testJson.length,"testTitle":"","testJson":testJson}
|
|
|
+ // _json.testJson = {"testCount":testJson.length,"testTitle":"","testJson":testJson}
|
|
|
+ _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose[_this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.length - 1].testJson = {"testCount":testJson.length,"testTitle":"","testJson":testJson}
|
|
|
}
|
|
|
- _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.push(_json)
|
|
|
+ _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose[_this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.length - 1].tool = toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [16]
|
|
|
+ _this.$forceUpdate();
|
|
|
+ // _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.push(_json)
|
|
|
}
|
|
|
} else {
|
|
|
_this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose.push(
|
|
@@ -19543,6 +19650,101 @@ ${this.targetCourseText && this.aiCallback == 2 ? '注意,优化原有的<参
|
|
|
// this.$forceUpdate();
|
|
|
};
|
|
|
},
|
|
|
+ againEva(msg, i, k) {
|
|
|
+ if(!this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].value || !this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].detail){
|
|
|
+ this.$message.error(`任务${i+1}的第${k+1}个评价完善信息后再生成细则`)
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (this.ruleLoading[i]) {
|
|
|
+ this.ruleLoading[i][k] = true
|
|
|
+ } else {
|
|
|
+ this.ruleLoading[i] = []
|
|
|
+ this.ruleLoading[i][k] = true
|
|
|
+ }
|
|
|
+ let message = `NOTICE
|
|
|
+Role: 你是一个专业的项目式学习导师,你要根据<评价维度>和<维度描述>制定具体的评价细则。
|
|
|
+Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
|
|
|
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
|
|
|
+Instruction: Based on the context, follow "Format example", write content.
|
|
|
+
|
|
|
+#Context
|
|
|
+##要求
|
|
|
+${msg}
|
|
|
+
|
|
|
+##制定标准资料
|
|
|
+评价维度:${this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].value}
|
|
|
+维度描述:${this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].detail}
|
|
|
+
|
|
|
+# Format example
|
|
|
+== 0 星,作业内容与作业要求无关;
|
|
|
+1 星,没有识别问题和需求;
|
|
|
+2 星,问题或需求没有被清晰理解或准确识别;
|
|
|
+3 星,问题或需求的一部分被识别;
|
|
|
+4 星,问题或需求的大部分被识别;
|
|
|
+5 星,问题或需求都被识别。 ==
|
|
|
+
|
|
|
+ `
|
|
|
+ let params = {
|
|
|
+ // "model": "Chat",
|
|
|
+ model: "gpt-4o",
|
|
|
+ temperature: 0,
|
|
|
+ max_tokens: 4096,
|
|
|
+ top_p: 1,
|
|
|
+ frequency_penalty: 0,
|
|
|
+ presence_penalty: 0,
|
|
|
+ messages: [
|
|
|
+ {
|
|
|
+ content: message.replaceAll("\n", " ").replaceAll("*", ""),
|
|
|
+ role: "user"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ stream: false,
|
|
|
+ uid: this.userid,
|
|
|
+ mind_map_question: ""
|
|
|
+ };
|
|
|
+
|
|
|
+ this.ajax
|
|
|
+ .post("https://gpt4.cocorobo.cn/chat", params)
|
|
|
+ .then(response => {
|
|
|
+ let data = response.data.FunctionResponse;
|
|
|
+ console.log("data", data);
|
|
|
+ if (data.choices && data.choices.length && data.choices[0].message) {
|
|
|
+ let content = data.choices[0].message.content;
|
|
|
+
|
|
|
+ var regex = new RegExp('==([^=]+)==');
|
|
|
+ let match = content.match(regex);
|
|
|
+ if (match) {
|
|
|
+ content = match[1].trim().replaceAll(' ', '');
|
|
|
+ // 获取匹配到的内容并去除两端空格
|
|
|
+ console.log('contentInsideDoubleEquals', content);
|
|
|
+ if (content.indexOf('0星') == -1 || content.indexOf('2星') == -1 || content.indexOf('3星') == -1 || content.indexOf('4星') == -1 || content.indexOf('5星') == -1) {
|
|
|
+ console.log("未有星级。");
|
|
|
+ this.againEva(msg, i, k)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // return
|
|
|
+ } else {
|
|
|
+ console.log("未找到匹配的内容。");
|
|
|
+ this.againEva(msg, i, k)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let elist = JSON.parse(JSON.stringify(this.unitJson[0].chapterInfo[0].taskJson[i].eList[k]))
|
|
|
+ // this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].rule=JSON.parse(JSON.stringify(content.replaceAll("#", "")))
|
|
|
+ elist.rule = JSON.parse(JSON.stringify(content.replaceAll("#", "")))
|
|
|
+ this.$set(this.unitJson[0].chapterInfo[0].taskJson[i].eList, k, elist)
|
|
|
+ this.$forceUpdate();
|
|
|
+ this.ruleLoading[i][k] = false
|
|
|
+
|
|
|
+ }else{
|
|
|
+ this.ruleLoading[i][k] = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ console.log(error);
|
|
|
+ this.ruleLoading[i][k] = false
|
|
|
+ });
|
|
|
+ },
|
|
|
async aiSearchFile(messages, callback) {
|
|
|
let _this = this
|
|
|
|
|
@@ -24082,4 +24284,11 @@ ol {
|
|
|
.chapter_upload_check.checked{
|
|
|
background-image: url('../../../assets/icon/checked.png');
|
|
|
}
|
|
|
+
|
|
|
+.ruleBtn {
|
|
|
+ height: 36px;
|
|
|
+ line-height: 36px;
|
|
|
+ cursor: pointer;
|
|
|
+ color: #0061FF;
|
|
|
+}
|
|
|
</style>
|