lsc 1 year ago
parent
commit
4366410863

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


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


File diff suppressed because it is too large
+ 142 - 304
src/components/pages/aiAddCourse/addCourse.vue


+ 0 - 24313
src/components/pages/aiAddCourse/addCourse3.vue

@@ -1,24313 +0,0 @@
-<template>
-  <div class="pb_content" style="background: #f0f2f5" v-loading="loading" element-loading-text="小可正在努力生成中,请稍等...">
-    <div class="pb_content_body" style="position: relative; margin: 0">
-      <div class="right" :style="{width:istemplate == 1 ? 'calc(100% - 300px)' : '100%'}">
-        <div class="courseTop">
-          <div class="stepsNav">
-            <el-breadcrumb separator-class="el-icon-arrow-right">
-              <el-breadcrumb-item :to="{
-                path:
-                  '/course?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&org=' +
-                  org +
-                  '&role=' +
-                  role,
-              }">课程管理</el-breadcrumb-item>
-              <el-breadcrumb-item>
-                <span style="color: rgb(15, 126, 255)">添加课程</span>
-              </el-breadcrumb-item>
-            </el-breadcrumb>
-          </div>
-          <div class="r_pub_button_retrun" @click="retrunCourse">返回</div>
-        </div>
-        <!-- <div style="display: flex; margin-top: 20px; position: relative"> -->
-        <!-- @mouseenter="stepDisplay(true)"
-              @mouseleave="stepDisplay(false)" -->
-        <div ref="stepBox" class="stepBox" :style="{overflow:istemplate == 1 ? 'auto' : 'hidden'}">
-          <div class="stepBg" v-if="false">
-            <div :class="{ stepTop: isStepDisplay, stepTop2: !isStepDisplay }">
-              <div v-if="steps > 0 && isStepDisplay" class="first" @click="navSteps(1)">
-                <div>
-                  <img src="../../../assets/icon/first.png" alt />
-                </div>
-                <div>填写基本信息</div>
-              </div>
-              <div v-else-if="isStepDisplay" class="firstNo" @click="navSteps(1)">
-                <div>
-                  <img src="../../../assets/icon/firstNo.png" alt />
-                </div>
-                <div>填写基本信息</div>
-              </div>
-              <div class="stepBorder" :class="{ 'border-active': steps > 1 }" v-if="cidType === 0 && isStepDisplay">
-              </div>
-              <!-- <div
-                v-if="steps > 1 && cidType === 0 && isStepDisplay"
-                class="second"
-                @click="navSteps(2)"
-              >
-                <div style="margin: 5px 10px 0 0; width: 2rem">
-                  <img src="../../../assets/icon/second.png" alt />
-                </div>
-                <div>选择课程模板</div>
-              </div>
-              <div
-                v-else-if="cidType === 0 && isStepDisplay"
-                class="secondNo"
-                @click="navSteps(2)"
-              >
-                <div>
-                  <img src="../../../assets/icon/secondNo.png" alt />
-                </div>
-                <div>选择课程模板</div>
-              </div> -->
-              <!-- <div
-                v-if="isStepDisplay"
-                class="stepBorder"
-                :class="{ 'border-active': steps > 2 }"
-              ></div> -->
-              <div v-if="steps > 2 && isStepDisplay" class="third" @click="navSteps(3)">
-                <div>
-                  <img src="../../../assets/icon/third.png" alt />
-                </div>
-                <div>上传课程内容</div>
-              </div>
-              <div v-else-if="isStepDisplay" class="thirdNo" @click="navSteps(3)">
-                <div>
-                  <img src="../../../assets/icon/thirdNo.png" alt />
-                </div>
-                <div>上传课程内容</div>
-              </div>
-              <div v-if="isStepDisplay" class="stepBorder" :class="{ 'border-active': steps > 3 }"></div>
-              <div v-if="steps > 3 && isStepDisplay" class="four">
-                <div>
-                  <img src="../../../assets/icon/four.png" alt />
-                </div>
-                <div>上传完成</div>
-              </div>
-              <div v-else-if="isStepDisplay" class="fourNo">
-                <div>
-                  <img src="../../../assets/icon/fourNo.png" alt />
-                </div>
-                <div>上传完成</div>
-              </div>
-            </div>
-          </div>
-          <div class="rightBox" :key="updateKey" ref='scrollContainer' v-if="steps == 1" @mousewheel="scrollChange"
-            style="padding: 0" :style="{
-              height:
-                !isStepDisplay && !isBtnDisplay
-                  ? istemplate == 1 ? 'auto' : 'calc(100% - 20px)'
-                  : istemplate == 1 ? 'auto' : 'calc(100% - 100px)',
-            }">
-            <div class="updateMask" :style="{
-              height: rightBoxHeight ? rightBoxHeight + 'px' : '100%',
-            }" v-if="cid && userid != courseUserid && role != '1'"></div>
-            <div class="whiteBg" style="background: unset; padding: 0">
-              <div>
-                <div class="basic_box" style="padding: 0">
-                  <div class="big_box">
-                    <div class="left_first">
-                      <div :class="{
-                        updateTips:
-                          cid && userid != courseUserid && role != '1',
-                      }">
-                        <div style="width: 100%">
-                          <div class="course_input_box">
-                            <div class="bb_courseIcon">
-                              <img src="../../../assets/icon/new/course.png" />
-                            </div>
-                            <input type="text" placeholder="请输入课程名称" class="binfo_input" v-model="courseName" style="
-                                border: 1.5px solid rgb(202, 209, 220);
-                                margin: 0px 10px 0px 0px;
-                                border-radius: 5px;
-                                font-weight: 600;
-                                padding: 12px 14px 12px 71px;
-                              " @change="setCover" />
-                            <el-switch v-model="isTeacherSee" active-text="是否公开此课程"
-                              style="justify-content: center; min-width: 150px"></el-switch>
-                            <el-switch v-model="isFileSearch" active-text="是否开启智能检索"
-                              style="justify-content: center; min-width: 175px"></el-switch>
-                          </div>
-                        </div>
-                      </div>
-                      <div class="pType_box all_choose" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-                        <span>类型</span>
-                        <!-- 学科+ 主题+  未来+ -->
-                        <el-radio-group @change="CourseType2Change" v-model="pTypeCheckName"
-                          style="display: flex; align-items: center">
-                          <div class="all_choose" style="width: 100px" v-for="(item, index) in CourseType2"
-                            :key="index">
-                            <el-radio :label="item.name">{{
-                              item.name
-                              }}</el-radio>
-                          </div>
-                        </el-radio-group>
-                      </div>
-                      <div class="both">
-                        <div class="choose">
-                          <div class="all_choose" v-for="(item, index) in CourseType[0]" :key="index">
-                            <span v-if="
-                              CourseTypeJson[item.id].length > 0 &&
-                              (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
-                                ? pTypeCheck.indexOf(item.id) != -1
-                                : true)
-                            ">{{ item.name }}:</span>
-                            <el-checkbox-group v-model="courseTypeId" v-if="
-                              CourseTypeJson[item.id].length > 0 &&
-                              (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
-                                ? pTypeCheck.indexOf(item.id) != -1
-                                : true)
-                            ">
-                              <el-checkbox v-for="item1 in CourseTypeJson[item.id]" :key="item1.id" :label="item1.id">{{
-                                item1.name }}</el-checkbox>
-                            </el-checkbox-group>
-                            <!-- <div
-                              v-else
-                              style="font-size: 14px; margin-left: -8px"
-                            >
-                              暂无
-                            </div> -->
-                          </div>
-                        </div>
-                      </div>
-                      <div class="info_box_t" v-if="!yiKeTemplateArray.includes(templateid)">
-                        <div class="info_box_t_box">
-                          <el-switch v-model="isuseT" active-text="是否从已有教案生成"
-                              style="justify-content: center; min-width: 175px"></el-switch>
-                        </div>
-                        <div class="info_box_t_box">
-                          <span>AI生成模式:</span>
-                          <div class="mode_box">
-                            <span :class="{active: mode == 1}" @click="mode = 1">精确</span>
-                            <!-- <span :class="{active: mode == 2}" @click="mode = 2">平衡</span> -->
-                            <span :class="{active: mode == 3}" @click="mode = 3">创意</span>
-                          </div>
-                        </div>
-                      </div>
-                      <!-- <div class="info_box_t" v-if="templatePan.includes(templateid)">
-                        <div class="info_box_t_box">
-                          <span>课程节数:</span>
-                          <input type="text" placeholder="请输入课程节数" class="binfo_input" v-model="courseJie" @change="numberPanJie"/>
-                          <span>节</span>
-                        </div>
-                        <div class="info_box_t_box">
-                          <span>课程时长:</span>
-                          <input type="text" placeholder="请输入课程节数" class="binfo_input" v-model="courseTime"  @change="numberPanTime"/>
-                          <span>min</span>
-                        </div>
-                      </div> -->
-                    </div>
-                    <div class="right_first" v-loading="imageloading2">
-                      <!-- <div class="ai_box">
-                      <div class="ai_content" @click="openAI"><img src="../../../assets/icon/new/ai.png"/><span>AI共创</span></div>
-                    </div> -->
-                      <div class="c_info_title" style="padding: 0 0 15px; margin: 0 auto 0 0">
-                        上传封面
-                      </div>
-                      <div style="width: 100%">
-                        <div class="uploadFm" @click="choosePicVisible = true" :class="{ uploadFm2: cover.length }">
-                          <img src="../../../assets/icon/addPoster.png" alt="" v-if="cover.length == 0" />
-                          <img :src="cover[0].url" alt="" class="cover_p" v-else />
-                          <div v-if="cover.length == 0">点击添加封面</div>
-                          <div class="cover_mask">
-                            <img src="../../../assets/icon/new/cover_update.png" /><span
-                              style="margin-top: 5px">修改封面</span>
-                          </div>
-                        </div>
-                        <!-- <el-upload :class="{ disUoloadSty: noneBtnImg }" class="upCss" action="#" list-type="picture"
-                          v-loading="uploadLoading1" :http-request="beforeUpload1" ref="upload1"
-                          :on-preview="handlePictureCardPreview" :on-remove="handle_remove1" :show-file-list="true"
-                          :file-list="cover" accept="image/*" :limit="1" :on-exceed="onExceed" v-else>
-                          <i class="el-icon-plus"></i>
-                        </el-upload> -->
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 10px 0;padding: 0 0 15px;">
-              <div class="whiteBg" style="border-radius: 0">
-                <div class="c_info_title">
-                  课程权限设置
-                </div>
-                <div class="wb_j_box">
-                  <div class="wb_j_box_content">
-                    <!-- <button class="c_pub_button_add pub_btn_add_img" @click="
-                      (dialogVisibleClass = true),
-                      (classSearch = ''),
-                      (gradeId = ''),
-                      getClass()
-                      ">添加班级</button>
-                    <div v-if="checkboxList2.length" class="wb_j_box_p_box">
-                      <span :class="{ tcMember: getClassC(tc) }" v-for="(tc, tcIndex) in checkboxList2" :key="tcIndex">{{
-                        getClassC(tc) }}</span>
-                    </div> -->
-                    <div class="wb_j_box_btn" @click="
-                      (dialogVisibleClass = true),
-                      (classSearch = ''),
-                      (gradeId = ''),
-                      getClass()
-                      ">
-                      <div class="wb_j_box_title">授课班级</div>
-                      <div class="wb_j_box_btn_c">
-                        <el-tooltip effect="dark" :content="getListClassC(checkboxList2)" placement="top"
-                          v-if="checkboxList2.length" popper-class="text_tooltip2">
-                          <div class="wb_j_box_span">
-                            {{ getListClassC(checkboxList2) }}
-                          </div>
-                        </el-tooltip>
-                        <div v-else class="wb_j_box_span">请选择授课班级</div>
-                        <div class="wb_j_box_arrow"></div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="wb_j_box_content">
-                    <!-- <button class="c_pub_button_add pub_btn_add_img" @click="openMember">添加协同成员</button>
-                    <div v-if="checkboxList3.length" class="wb_j_box_p_box" @click="checkBoolean = !checkBoolean">
-                      <span :class="{ tcMember: getMan2(tc) }" v-for="(tc, tcIndex) in checkboxList3.length > 6 &&
-                        checkBoolean
-                        ? checkboxList3
-                        : checkboxList3.slice(0, 6)" :key="tcIndex">{{ getMan2(tc) }}</span><span class="tcMember"
-                        v-if="checkboxList3.length > 6 && !checkBoolean">更多...</span>
-                    </div> -->
-                    <div class="wb_j_box_btn" @click="openMember">
-                      <div class="wb_j_box_title">协同人员</div>
-                      <div class="wb_j_box_btn_c">
-                        <el-tooltip effect="dark" :content="getListMan2(checkboxList3)" placement="top"
-                          v-if="checkboxList3.length" popper-class="text_tooltip2">
-                          <div class="wb_j_box_span">
-                            {{ getListMan2(checkboxList3) }}
-                          </div>
-                        </el-tooltip>
-                        <div v-else class="wb_j_box_span">请选择协同人员</div>
-                        <div class="wb_j_box_arrow"></div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px; padding-bottom: 20px" v-if="false">
-                <div class="c_info_title">目标管理</div>
-                <div style="margin: 0 auto; padding: 0 20px">
-                  <div style="
-                      width: 95%;
-                      min-height: 200px;
-                      border: 1px solid #cad1dc;
-                      border-radius: 4px;
-                      position: relative;
-                    ">
-                    <div class="e_add_top">
-                      <div class="e_add_title">
-                        <button class="c_pub_button_delete pub_btn_delete_img" @click="deleteEva()" v-if="evalua">
-                          清除
-                        </button>
-                        <button class="c_pub_button_confirm pub_btn_add_img2" @click="dialogVisiblemb = true">
-                          添加
-                        </button>
-                        <!-- <span>当前使用目标管理</span>
-                      <span>{{ eTitle ? eTitle : "请添加目标" }}</span>
-                      <img
-                        src="../../../assets/line.png"
-                        class="cru_line"
-                        style="
-                          width: 125px;
-                          height: 20px;
-                          bottom: -10px;
-                          left: 155px;
-                        "
-                      /> -->
-                      </div>
-                      <div style="
-                          display: flex;
-                          flex-direction: row;
-                          align-items: center;
-                        ">
-                        <!-- <el-button
-                        type="primary"
-                        size="small"
-                        @click="dialogVisiblemb = true"
-                        >添加目标管理</el-button
-                      >
-                      <el-button
-                        type="primary"
-                        size="small"
-                        @click="deleteEva()"
-                        >清除内容</el-button
-                      > -->
-                        <!-- <div class="e_add_delete" @click="deleteEva()">
-                          <img src="../../../assets/icon/delete.png" alt="" />
-                        </div> -->
-                      </div>
-                    </div>
-                    <div v-if="evalua == ''">
-                      <div class="noneBox">
-                        <img src="../../../assets/icon/new/eva_none.png" />
-                        <span>请添加目标管理</span>
-                      </div>
-                    </div>
-                    <div class="e_add_content" v-else>
-                      <div class="e_add_list_pbox">
-                        <div class="e_add_list_pbox_title">
-                          <span class="type_title">切换模式</span>
-                          <div class="type_content">
-                            <span :class="{ active: typeMode == 1 }" @click="OtherMb(1)">目标树</span>
-                            <span :class="{ active: typeMode == 2 }" @click="OtherMb(2)">目标罗盘</span>
-                            <!-- <span :class="{ active: typeMode == 3 }" @click="OtherMb(3)">目标看板</span> -->
-                          </div>
-                        </div>
-                        <div class="e_add_list_pbox_content">
-                          <Mind :showBar="false" :mindData="data" v-if="typeMode == 1"></Mind>
-                          <Sunburst :Josn="eJson" :num="eJSONNum" style="width: 100%" v-if="typeMode == 2"></Sunburst>
-                          <SeeBoard :Josn="eJson" :num="eJSONNum" :ename="eTitle" style="width: 100%"
-                            v-if="typeMode == 3">
-                          </SeeBoard>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="(!yiKeTemplateArray.includes(templateid)) && isuseT">
-              <div style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: true
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                  <div style="margin-bottom: 10px;width:100%;font-weight:bold" class="lineTitle">
-                    已有教案
-                    <div class="add_info_box" style="margin: 0 0 0 auto">
-                      <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                        上传已有教案
-                        <input type="file" accept=".docx,.doc,.ppt,.pptx,.md,.txt,.pdf" style="display: none" v-if="inputShow" @change="
-                          beforeUploadInfo2(
-                            $event,
-                            14
-                          )
-                          " />
-                      </button>
-                      <button class="c_pub_button_add" @click="clickGenTT">
-                        一键智能总结生成
-                      </button>
-                    </div>
-                  </div>
-                </div>
-                <div>
-                  <div class="add_chapters_box add_c_none" v-if="
-                    teacherInfoData &&
-                    teacherInfoData.length == 0
-                  ">
-                    <img src="../../../assets/icon/new/c_none.png" alt /><span>暂时还没有内容,快去添加吧</span>
-                  </div>
-                  <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                    <div @dragstart="
-                      dragStart(item1, index1, 0)
-                      " @dragover.prevent="
-                        dragOver(index1, 0)
-                        " @dragend="dragEnd()" :draggable="isdrag ==
-                          'chapter-' + 0 + '-' + index1
-                          " class="chapter_upload" v-for="(item1, index1) in teacherInfoData" :key="item1.id" @click="
-                            getChapterData(
-                              $event,
-                              index1,
-                              item1.type
-                            )
-                            " :class="{
-                                    dragOverTop2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex > index1 &&
-                                      dragType == 'drag',
-                                    dragOverBottom2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex < index1 &&
-                                      dragType == 'drag',
-                                  }">
-                      <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                        <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                          <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                          <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                          </div>
-                          <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                          <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                          </div>
-                        </div>
-                        <div class="chapter_upload_n">
-                          <input readonly="true" v-if="
-                            item1.type == 2 ||
-                            item1.type == 3 ||
-                            item1.type == 12 ||
-                            item1.type == 13 ||
-                            item1.type == 7
-                          " :placeholder="item1.name" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                        </div>
-                        <div class="chapter_upload_ic">
-                          <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                          <div class="chapter_upload_ic_r" @click.stop="
-                            deleteTeacherInfoData(
-                              $event,
-                              index1
-                            )
-                            ">
-                            <div></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div v-if="
-                  teacherinfoproVisible
-                " class="mask">
-                  <div class="progressBox">
-                    <div class="lbox">
-                      <img src="../../../assets/loading.gif" />上传中,请稍后
-                    </div>
-                    <div style="margin-bottom: 10px">
-                      <span>{{
-                        teacherinfoisFinishSize
-                        }}M</span>
-                      /
-                      <span>{{
-                        teacherinfoisAllSize
-                        }}M</span>
-                    </div>
-                    <el-progress :text-inside="true" :stroke-width="20" :percentage="teacherinfoprogress
-                      ? teacherinfoprogress
-                      : 0
-                      " style="width: 80%"></el-progress>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="teacherTextLoading" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!yiKeTemplateArray.includes(templateid)) && isuseT">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  已有教案摘要
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiteacherTextDetail',1)"
-                      @click="openAiDialog(2, 'aiteacherTextDetail',1)">提取摘要</button>
-                  </el-tooltip>
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%);" class='op_task_box'>
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="teacherCourseText"
-                      placeholder="请输入教案摘要" v-if="teacherCourseTextB"></textarea>
-                    <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="teacherCourseText" v-else-if="teacherTextLoading"></div>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(teacherCourseText)" v-else></div>
-                      <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, 'aiteacherTextDetail', 2)"
-                            @click="openAiDialog(2, 'aiteacherTextDetail', 2)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="teacherCourseTextB = !teacherCourseTextB">{{ teacherCourseTextB ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="targetTextLoading" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!yiKeTemplateArray.includes(templateid)) && isuseT">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  课程目标
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aitargetTextDetail',1)"
-                      @click="openAiDialog(2, 'aitargetTextDetail',1)">提取目标</button>
-                                      </el-tooltip>
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%);" class='op_task_box'>
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="targetCourseText"
-                      placeholder="请输入课程目标" v-if="targetCourseTextB"></textarea>
-                    <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="targetCourseText" v-else-if="targetTextLoading"></div>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(targetCourseText)" v-else></div>
-                      <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, 'aitargetTextDetail', 2)"
-                              @click="openAiDialog(2, 'aitargetTextDetail', 2)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="targetCourseTextB = !targetCourseTextB">{{ targetCourseTextB ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="false">
-              <div style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: true
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                  <div style="margin-bottom: 10px;width:100%;font-weight:bold" class="lineTitle">
-                    系统推荐参考资料
-                    <div class="add_info_box" style="margin: 0 0 0 auto">
-                      <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                        <button class="c_pub_button_confirm" style="margin: 0 0 0 auto;"
-                          @contextmenu.prevent="openAiDialog(1, 'aiSearchFile')"
-                          @click="openAiDialog(2, 'aiSearchFile')">智能检索资料</button>
-                       </el-tooltip>
-                    </div>
-                  </div>
-                </div>
-                <div v-loading="fileSLoading" element-loading-text="小可正在努力生成中,请稍等...">
-                  <div class="add_chapters_box add_c_none" v-if="
-                    cankaoInfoData &&
-                    cankaoInfoData.length == 0
-                  ">
-                    <img src="../../../assets/icon/new/c_none.png" alt /><span>暂时还没有内容,快去添加吧</span>
-                  </div>
-                  <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                    <div @dragstart="
-                      dragStart(item1, index1, 0)
-                      " @dragover.prevent="
-                        dragOver(index1, 0)
-                        " @dragend="dragEnd()" :draggable="isdrag ==
-                          'chapter-' + 0 + '-' + index1
-                          " class="chapter_upload" v-for="(item1, index1) in cankaoInfoData" :key="item1.id" @click="
-                            getChapterData(
-                              $event,
-                              index1,
-                              item1.type
-                            )
-                            " :class="{
-                                    dragOverTop2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex > index1 &&
-                                      dragType == 'drag',
-                                    dragOverBottom2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex < index1 &&
-                                      dragType == 'drag',
-                                  }">
-                      <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                        <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                          <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                          <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                          </div>
-                          <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                          <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                          </div>
-                        </div>
-                        <div class="chapter_upload_n">
-                          <input readonly="true" v-if="
-                            item1.type == 2 ||
-                            item1.type == 3 ||
-                            item1.type == 12 ||
-                            item1.type == 13 ||
-                            item1.type == 7
-                          " :placeholder="item1.name" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                        </div>
-                        <div class="chapter_upload_ic">
-                          <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                          <div class="chapter_upload_ic_r" @click.stop="
-                            deleteCankaoInfoData(
-                              $event,
-                              index1
-                            )
-                            ">
-                            <div></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="(!yiKeTemplateArray.includes(templateid))">
-              <div style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: true
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                  <div style="margin-bottom: 10px;width:100%;font-weight:bold" class="lineTitle">
-                    知识库
-                    <div class="add_info_box" style="margin: 0 0 0 auto">
-                      <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                        上传补充资料
-                        <input type="file" accept=".docx,.doc,.ppt,.pptx,.md,.txt,.pdf" style="display: none" v-if="inputShow" @change="
-                          beforeUploadInfo2(
-                            $event,
-                            15
-                          )
-                          " />
-                      </button>
-                      <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                        <button class="c_pub_button_confirm" style="margin: 0 0 0 auto;"
-                          @contextmenu.prevent="openAiDialog(1, 'aiSearchFile')"
-                          @click="openAiDialog(2, 'aiSearchFile')">智能检索资料</button>
-                       </el-tooltip>
-                    </div>
-                  </div>
-                </div>
-                <div v-loading="fileSLoading" element-loading-text="小可正在努力生成中,请稍等...">
-                  <div class="add_chapters_box add_c_none" v-if="
-                    infoData2 &&
-                    infoData2.length == 0
-                  ">
-                    <img src="../../../assets/icon/new/c_none.png" alt /><span>暂时还没有内容,快去添加吧</span>
-                  </div>
-                  <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                    <div class="chapter_upload" v-for="(item1, index1) in infoData2" :key="item1.id" @click="
-                            getChapterData(
-                              $event,
-                              index1,
-                              item1.type
-                            )
-                            " >
-                      <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                        <div class="chapter_upload_check" :class="{ checked: dataCheckPan(item1.fileid) }" @click="checkInfoData(item1.fileid, item1)"></div>
-                        <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                          <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                          <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                          </div>
-                          <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                          <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                          </div>
-                        </div>
-                        <div class="chapter_upload_n">
-                          <input readonly="true" v-if="
-                            item1.type == 2 ||
-                            item1.type == 3 ||
-                            item1.type == 12 ||
-                            item1.type == 13 ||
-                            item1.type == 7
-                          " :placeholder="item1.name"  @click.stop="
-                            checkChpater2($event, index1 )
-                            " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                          <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(index1)
-                                        " />
-                          <input :placeholder="item1.title ? item1.title : '链接'
-                            " v-if="item1.type == 8" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(index1)" />
-                          <input :placeholder="item1.title ? item1.title : '链接'
-                            " v-if="item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        openUpdateSource(index1)
-                                        " />
-                        </div>
-                        <div class="chapter_upload_ic">
-                          <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                          <div class="chapter_upload_ic_check" v-if="item1.type == 3" @click.stop="
-                            checkChpater2($event, index1 )
-                            ">
-                            <div></div>
-                          </div>
-                          <div class="chapter_upload_ic_r" @click.stop="
-                            deleteInfoData2(
-                              $event,
-                              index1
-                            )
-                            ">
-                            <div></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div v-if="
-                  infoproVisible
-                " class="mask">
-                  <div class="progressBox">
-                    <div class="lbox">
-                      <img src="../../../assets/loading.gif" />上传中,请稍后
-                    </div>
-                    <div style="margin-bottom: 10px">
-                      <span>{{
-                        infoisFinishSize
-                        }}M</span>
-                      /
-                      <span>{{
-                        infoisAllSize
-                        }}M</span>
-                    </div>
-                    <el-progress :text-inside="true" :stroke-width="20" :percentage="infoprogress
-                      ? infoprogress
-                      : 0
-                      " style="width: 80%"></el-progress>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="textLoading" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!isuseT && (!yiKeTemplateArray.includes(templateid))) || (isuseT && (!yiKeTemplateArray.includes(templateid)) && courseTextBool) || (yiKeTemplateArray.includes(templateid))">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title" style="margin: 0 20px 0 20px;">
-                  课程简要描述
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                    <button class="c_pub_button_confirm" style="margin: 0 0 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiDetail',1)"
-                      @click="openAiDialog(2, 'aiDetail',1)">AI优化</button>
-                  </el-tooltip>
-                  <button class="c_pub_button_confirm" @click="clickGenTT2" style="margin: 0 0 0 5px;">生成概况和目标</button>
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%);" class='op_task_box'>
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="courseText"
-                      placeholder="请输入课程简要描述" v-if="courseTextB"></textarea>
-                    <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="courseText" v-else-if="textLoading"></div>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(courseText)" v-else></div>
-                      <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, 'aiDetail', 2)"
-                              @click="openAiDialog(2, 'aiDetail', 2)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="courseTextB = !courseTextB">{{ courseTextB ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="targetTextLoading2" element-loading-text="小可正在努力生成中,请稍等..." v-if="(!isuseT && (!yiKeTemplateArray.includes(templateid))) || (isuseT && (!yiKeTemplateArray.includes(templateid)) && courseTextBool)">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  课程目标
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aitargetTextDetail2',1)"
-                      @click="openAiDialog(2, 'aitargetTextDetail2',1)">生成目标</button>
-                                      </el-tooltip>
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%);" class='op_task_box'>
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="targetCourseText2"
-                      placeholder="请输入课程目标" v-if="targetCourseText2B"></textarea>
-                    <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="targetCourseText2" v-else-if="targetTextLoading2"></div>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(targetCourseText2)" v-else></div> 
-                      <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, 'aitargetTextDetail2', 2)"
-                              @click="openAiDialog(2, 'aitargetTextDetail2', 2)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="targetCourseText2B = !targetCourseText2B">{{ targetCourseText2B ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="yiKeTemplateArray.includes(templateid)">
-              <!-- <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  补充资料
-                  <button class="c_pub_button_add pub_btn_add_img" style="margin: 0 20px 0 auto;">上传补充资料</button>
-                </div>
-                <div class="buchong_box">
-                  <span>暂时还没有内容,快去添加吧~</span>
-                </div>
-              </div> -->
-              <div style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: true
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                  <div style="margin-bottom: 10px;width:100%;font-weight:bold" class="lineTitle">
-                    补充资料
-                    <div class="add_info_box" style="margin: 0 0 0 auto">
-                      <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                        上传补充资料
-                        <input type="file" accept=".docx,.doc,.ppt,.pptx,.md,.txt,.pdf" style="display: none" v-if="inputShow" @change="
-                          beforeUploadInfo2(
-                            $event,
-                            13
-                          )
-                          " />
-                      </button>
-                      <!-- <button class="c_pub_button_add pub_btn_add_img" @click="addAttText(0)">
-                              图文
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="openLine(0)">
-                              链接
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="pasteLine(0)">
-                              代码
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="openSource(0)">
-                              资源
-                            </button> -->
-                    </div>
-                  </div>
-                </div>
-                <div>
-                  <div class="add_chapters_box add_c_none" v-if="
-                    infoData &&
-                    infoData.length == 0
-                  ">
-                    <img src="../../../assets/icon/new/c_none.png" alt /><span>暂时还没有内容,快去添加吧</span>
-                  </div>
-                  <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                    <div @dragstart="
-                      dragStart(item1, index1, 0)
-                      " @dragover.prevent="
-                        dragOver(index1, 0)
-                        " @dragend="dragEnd()" :draggable="isdrag ==
-                          'chapter-' + 0 + '-' + index1
-                          " class="chapter_upload" v-for="(item1, index1) in infoData" :key="item1.id" @click="
-                            getChapterData(
-                              $event,
-                              index1,
-                              item1.type
-                            )
-                            " :class="{
-                                    dragOverTop2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex > index1 &&
-                                      dragType == 'drag',
-                                    dragOverBottom2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex < index1 &&
-                                      dragType == 'drag',
-                                  }">
-                      <!-- <div @mousedown="
-                              isdrag =
-                              'chapter-' + 0 + '-' + index1
-                              " @mouseup="isdrag = ''" @touchstart="
-                                isdrag =
-                                'chapter-' + 0 + '-' + index1
-                                " @touchend="isdrag = ''" class="chapter_upload_drag"></div> -->
-                      <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                        <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                          <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                          <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                          </div>
-                          <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                          <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                          </div>
-                        </div>
-                        <div class="chapter_upload_n">
-                          <input readonly="true" v-if="
-                            item1.type == 2 ||
-                            item1.type == 3 ||
-                            item1.type == 12 ||
-                            item1.type == 13 ||
-                            item1.type == 7
-                          " :placeholder="item1.name" @click="
-                            updataVideoT(
-                              $event,
-                              index1
-                            )
-                            " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                          <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(index1)
-                                        " />
-                          <input :placeholder="item1.title ? item1.title : '链接'
-                            " v-if="item1.type == 8" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(index1)" />
-                          <input :placeholder="item1.title ? item1.title : '链接'
-                            " v-if="item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        openUpdateSource(index1)
-                                        " />
-                        </div>
-                        <div class="chapter_upload_ic">
-                          <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                          <!-- <div class="chapter_upload_ud" style="z-index: 99">
-                                  <div class="chapter_upload_up" @click="
-                                    upCd(
-                                      $event,
-                                      index1
-                                    )
-                                    "></div>
-                                  <div class="chapter_upload_down" @click="
-                                    downCd(
-                                      $event,
-                                      index1
-                                    )
-                                    "></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="
-                                  item1.type == 2 ||
-                                  item1.type == 3 ||
-                                  item1.type == 12 ||
-                                  item1.type == 13 ||
-                                  item1.type == 7
-                                " @click.stop="
-                                  updataVideoT(
-                                    $event,
-                                    index1
-                                  )
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 6" @click="
-                                  selectAttText(index1)
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 8"
-                                  @click="selectLine(index1)">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 14" @click="
-                                  openUpdateSource(index1)
-                                  ">
-                                  <div></div>
-                                </div> -->
-                          <div class="chapter_upload_ic_r" @click.stop="
-                            deleteInfoData(
-                              $event,
-                              index1
-                            )
-                            ">
-                            <div></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div v-if="
-                  infoproVisible
-                " class="mask">
-                  <div class="progressBox">
-                    <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                    <div class="lbox">
-                      <img src="../../../assets/loading.gif" />上传中,请稍后
-                    </div>
-                    <div style="margin-bottom: 10px">
-                      <span>{{
-                        infoisFinishSize
-                        }}M</span>
-                      /
-                      <span>{{
-                        infoisAllSize
-                        }}M</span>
-                    </div>
-                    <el-progress :text-inside="true" :stroke-width="20" :percentage="infoprogress
-                      ? infoprogress
-                      : 0
-                      " style="width: 80%"></el-progress>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="false">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  补充描述
-                  <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%)">
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="courseText2"
-                      placeholder="请输入课程补充描述:例如您期望的课程时长、任务数量、任务难度、任务类型等。"></textarea>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3' && isOutline">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  课程大纲
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="istemplate == 1">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiOutline')"
-                      @click="openAiDialog(2, 'aiOutline')" v-if="templateid != '61c628b9-3d96-11ef-b873-005056b86db5'">生成大纲</button>
-                      <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiOutline2')"
-                      @click="openAiDialog(2, 'aiOutline2')" v-if="templateid == '61c628b9-3d96-11ef-b873-005056b86db5'">生成大纲</button>
-                   </el-tooltip>
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiOutline')" v-if="panOutline() > 0 && templateid != '61c628b9-3d96-11ef-b873-005056b86db5' && istemplate != 1">重新生成大纲</button>
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiOutline2')" v-if="panOutline() > 0 && (templateid == '61c628b9-3d96-11ef-b873-005056b86db5') && istemplate != 1">重新生成大纲</button>
-                  <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
-                </div>
-                <div class="task_outline">
-                  <div class="outline_box" v-for="(item, index) in unitJson[0].chapterInfo[0].taskJson" :key="index">
-                    <div class="outline_task">
-                      <div class="title">任务{{ index + 1 }}</div>
-                      <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
-                        v-model="item.task" />
-                      <div class="outline_btn">
-                        <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                              <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @contextmenu.prevent="openAiDialog(1, 'aiOutlineDetail2', index)" @click="openAiDialog(2, 'aiOutlineDetail2', index)">{{ item.taskDetail2 ? "重新生成任务" : "生成任务"}}</button>
-                        </el-tooltip>
-                        <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @click="addTaskBorder2(1, index)">在上面加入一个任务</button>
-                        <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @click="addTaskBorder2(2, index)">在下面加入一个任务</button>
-                        <button class="c_pub_button_confirm2" style="margin: 0px 0px 0px 5px;" @click="deleteTask2(index)" v-if="unitJson[0].chapterInfo[0].taskJson.length > 1">删除</button>
-                      </div>
-                    </div>
-                    <div class="outline_detail" v-loading="taskDetailLoading.indexOf('task-' + index) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                      <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols
-                        placeholder="请输入任务描述" v-model="item.taskDetail2" v-if="item.isTask2"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="item.taskDetail2" v-else-if="ttaskDetailLoading.indexOf('task-' + index) !== -1"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(item.taskDetail2)" v-else></div>
-                      <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, 'aiDetail1', item, index)"
-                              @click="openAiDialog(2, 'aiDetail1', item, index)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editTask2(index)">{{
-                            item.isTask3 ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="(templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3') && (cpoteType > 0 || istemplate == 1)">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  概念群
-                  <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiCpote1')">{{cpote.cpote1 ? '重新生成概念群' : '生成概念群'}}</button>
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote1" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入概念群"
-                      v-model="cpote.cpote1" v-if="cpote.cpote1s"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="cpote.cpote1" v-else-if="cpotetLoading.cpote1"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote1)" v-else></div>
-                    <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, 'aiCpote1')"
-                            @click="openAiDialog(2, 'aiCpote1')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote1s')">{{
-                            cpote.cpote1s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="(templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3') && (cpoteType > 1 || istemplate == 1)">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  问题链
-                  <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                  @click="openAiDialog2(2, 'aiCpote2')">{{cpote.cpote2 ? '重新生成问题链' : '生成问题链'}}</button>
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote2" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入问题链"
-                      v-model="cpote.cpote2" v-if="cpote.cpote2s"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="cpote.cpote2" v-else-if="cpotetLoading.cpote2"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote2)" v-else></div>
-                    <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, 'aiCpote2')"
-                            @click="openAiDialog(2, 'aiCpote1')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote2s')">{{
-                            cpote.cpote2s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="(templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3') && (cpoteType > 2 || istemplate == 1)">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  目标层
-                  <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                  @click="openAiDialog2(2, 'aiCpote3')">{{cpote.cpote3 ? '重新生成目标层' : '生成目标层'}}</button>
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote3" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入目标层"
-                      v-model="cpote.cpote3" v-if="cpote.cpote3s"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="cpote.cpote3" v-else-if="cpotetLoading.cpote3"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote3)" v-else></div>
-                    <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, 'aiCpote3')"
-                            @click="openAiDialog(2, 'aiCpote3')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote3s')">{{
-                            cpote.cpote3s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="(templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3') && (cpoteType > 3 || istemplate == 1)">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  任务簇
-                  <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                  @click="openAiDialog2(2, 'aiCpote4')">{{cpote.cpote4 ? '重新生成任务簇' : '生成任务簇'}}</button>
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote4" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入任务簇"
-                      v-model="cpote.cpote4" v-if="cpote.cpote4s"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="cpote.cpote4" v-else-if="cpotetLoading.cpote4"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote4)" v-else></div>
-                    <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, 'aiCpote4')"
-                            @click="openAiDialog(2, 'aiCpote4')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote4s')">{{
-                            cpote.cpote4s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="isOutline2">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  教案
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="istemplate == 1 && dArray.length && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiTeacher2')"
-                      @click="openAiDialog(2, 'aiTeacher2')">生成教案</button>
-                   </el-tooltip>
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiTeacher2')" v-if="panTeacher() > 0 && istemplate != 1">重新生成教案</button>
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="panTeacher() == 0 && istemplate == 1 && templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'">
-                      <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiTeacher3')"
-                      @click="openAiDialog(2, 'aiTeacher3')">生成教案</button>
-                   </el-tooltip>
-                   <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
-                </div>
-                <div class="task_outline">
-                  <div class="outline_box" v-for="(item, index) in unitJson[0].chapterInfo[0].taskJson" :key="index">
-                    <div class="outline_task">
-                      <div class="title">任务{{ index + 1 }}</div>
-                      <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
-                        v-model="item.task" />
-                    </div>
-                    <div class="outline_detail" v-loading="taskDetailLoading5.indexOf('task-' + index) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                      <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入教案"
-                        v-model="item.taskDetail3" v-if="item.isTask3"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="item.taskDetail3" v-else-if="ttaskDetailLoading5.indexOf('task-' + index) !== -1"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(item.taskDetail3)" v-else></div>
-                      <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, 'teacherDetail2', item.taskDetail3, index)"
-                              @click="openAiDialog(2, 'teacherDetail2', item.taskDetail3, index)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editTask3(index)">{{
-                            item.isTask3 ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="info_btnBox3" v-if="istemplate != 1">
-              <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
-                goTo(
-                  '/course?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&org=' +
-                  org +
-                  '&role=' +
-                  role
-                )
-                ">
-                返回课程
-              </button>
-              <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5" @click="lastSteps">
-                {{ steps == 4 ? "返回课程" : "上一步" }}
-              </button>
-              <button class="c_pub_button_confirm" v-if="isuseT && !isOutline && !courseTextBool && (!yiKeTemplateArray.includes(templateid))" @click="clickGenTT2">
-                {{isuseT ? "重新生成概况和目标" : "生成概况和目标"}}
-              </button>
-              <!-- ((isuseT || courseTextBool) && (!yiKeTemplateArray.includes(templateid))) &&  -->
-              <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom"  v-if="steps < 4">
-                <button class="c_pub_button_confirm" @click="nextSteps(2)"
-                  @contextmenu.prevent="nextSteps(1)" v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'" :class="{
-                    pub_btn_next_img: steps != 3,
-                    pub_btn_finish_img: steps == 3,
-                  }">
-                  {{ steps == 3 ? "确认上传" : !isOutline ? "生成大纲" : !isOutline2 ? "生成教案" : "下一步" }}
-                </button>
-                <button class="c_pub_button_confirm" v-else @click="nextSteps(2)"
-                  @contextmenu.prevent="nextSteps(1)" :class="{
-                    pub_btn_next_img: steps != 3,
-                    pub_btn_finish_img: steps == 3,
-                  }">
-                  {{ steps == 3 ? "确认上传" : ((templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") && cpoteType < 4) ? 
-                  cpoteType < 3 ? cpoteType < 2 ? cpoteType < 1 ? "生成概念群" : "生成问题链" : "生成目标层"  : "生成任务簇" : !isOutline2 ? "生成教案"  
-                  : "下一步" }}
-                </button>
-              </el-tooltip>
-            </div>
-          </div>
-          <div class="rightBox" v-if="steps == 2" :style="{
-            height:
-              !isStepDisplay && !isBtnDisplay
-                ? istemplate == 1 ? 'auto' : 'calc(100% - 40px)'
-                : istemplate == 1 ? 'auto' : 'calc(100% - 100px)',
-          }">
-            <div class="basic_box" style="
-                padding: 20px 30px 0px !important;
-                box-sizing: border-box;
-                height: calc(100% - 80px);
-                overflow: auto;
-                background: #fff;
-              ">
-              <!-- <div
-                style="
-                  color: #b8b8b8;
-                  background: #fff;
-                  width: 26%;
-                  height: 40px;
-                  border-radius: 15px;
-                  padding-left: 20px;
-                  line-height: 40px;
-                  font-size: 17px;
-                  box-shadow: 0px 1px 2px 2px #e0e0e0;
-                "
-              >-->
-              <div class="right_title" style="border: none; margin: 0; padding: 0">
-                请选择合适的课程模板
-              </div>
-              <div class="wordbox">
-                <div class="wordTeacher" @click="checkTemplate2()">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template_none.png" alt />
-                  </div>
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    空白模板
-                  </div>
-                </div>
-                <div class="wordTeacher" v-for="(aa, indexF) in templateArray" :key="indexF" @click="checkTemplate(aa)">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template.png" alt />
-                  </div>
-
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    {{ aa.title }}
-                  </div>
-                </div>
-                <div class="wordTeacher" @click="checkTemplate3()" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template.png" alt />
-                  </div>
-
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    简易模板
-                  </div>
-                </div>
-                <div class="wordTeacher" @click="pasteStage()" v-if="isPasteStage">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template.png" alt />
-                  </div>
-
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    智能粘贴模式
-                  </div>
-                </div>
-                <!-- <div class="wordTeacher" @click="checkTemplate4()">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/wordMub.png" alt />
-                  </div>
-
-                  <div style="
-                                margin-top: 10px;
-                                line-height: 19px;
-                                overflow: hidden;
-                                text-overflow: ellipsis;
-                                white-space: nowrap;
-                                padding: 0 20px;
-                              ">
-                    未来小学课程设计
-                  </div>
-                </div> -->
-                <!-- <div class="wordTeacher" @click="checkTemplate1()">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/wordMub.png" alt />
-                  </div>
-
-                  <div style="
-                        margin-top: 10px;
-                        line-height: 19px;
-                        overflow: hidden;
-                        text-overflow: ellipsis;
-                        white-space: nowrap;
-                        padding: 0 20px;
-                      ">
-                    我的课程
-                  </div>
-                </div> -->
-              </div>
-            </div>
-            <div class="info_btnBox3" style="position: absolute; bottom: 0">
-              <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
-                goTo(
-                  '/course?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&org=' +
-                  org +
-                  '&role=' +
-                  role
-                )
-                ">
-                返回课程
-              </button>
-              <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5" @click="lastSteps">
-                {{ steps == 4 ? "返回课程" : "上一步" }}
-              </button>
-              <button class="c_pub_button_confirm" v-if="steps < 4" @click="nextSteps" :class="{
-                pub_btn_next_img: steps != 3,
-                pub_btn_finish_img: steps == 3,
-              }">
-                {{ steps == 3 ? "确认上传" : !isOutline ? "生成大纲" : "下一步" }}
-              </button>
-            </div>
-          </div>
-          <div class="rightBox" v-if="steps == 3 || istemplate == 1" ref="rightboxR" :style="{
-            height:
-              !isStepDisplay && !isBtnDisplay
-                ? istemplate == 1 ? 'auto' : 'calc(100% - 40px)'
-                : istemplate == 1 ? 'auto' : 'calc(100% - 100px)',
-          }">
-            <div class="rb_c_box">
-              <div class="rb_c_box_left" v-if="(steps == 3 || istemplate == 1) && unitJson[unitIndex].easy != 1">
-                <div class="rb_c_nav">
-                  <span :class="{ active: stepsNav == 1 }" @click="stepsNav = 1">目录</span>
-                  <span :class="{ active: stepsNav == 2 }" @click="stepsNav = 2">AI助手</span>
-                </div>
-                <div class="stepsBottom" v-if="stepsNav == 1" :style="{
-                  height:istemplate == 1 ? 'calc(100vh - 300px)' : 'calc(100% - 55px)',
-                  position: istemplate == 1 ? 'sticky' : 'unset',
-                  top: istemplate == 1 ? '0' : 'unset'
-                }">
-                  <!-- <div class="navTop">辅助导航</div> -->
-                  <div class="navBottom" v-if="courseState == 4 || courseState == 5">
-                    <!-- <div class="navTask noImage" v-if="unitJson[unitIndex].dyName">
-                      <div class="nt_taskBox" style="width: 100%;">
-                        <div class="nt_taskTitle"
-                          style="font-size: 16px;min-width: fit-content;margin-right: 10px;font-weight: 700;">阶段 {{
-                            unitIndex + 1 }}</div>
-                        <div class="nt_taskName" style="font-size: 16px;font-weight: 700;">
-                          <el-tooltip effect="light" :content="unitJson[unitIndex].dyName" placement="top">
-                            <span>{{ unitJson[unitIndex].dyName }}</span>
-                          </el-tooltip>
-                        </div>
-                      </div>
-                    </div> -->
-                    <div v-for="(t, tIndex) in unitJson[unitIndex].chapterInfo[0]
-                      .taskJson" :key="tIndex" :class="{
-                        dragOverTop:
-                          newIndex === tIndex &&
-                          typeIndex == 'task-' + tIndex &&
-                          oldIndex > tIndex &&
-                          dragType == 'task',
-                        dragOverBottom:
-                          newIndex === tIndex &&
-                          typeIndex == 'task-' + tIndex &&
-                          oldIndex < tIndex &&
-                          dragType == 'task',
-                      }">
-                      <div @dragstart="dragTaskStart(t, tIndex, 0)" @dragover.prevent="dragTaskOver(tIndex, 0)"
-                        @dragend="dragTaskEnd()" :draggable="isdrag == 'task-' + tIndex" @click="goToTask(tIndex)"
-                        class="navTask" :class="{
-                          isNavTask:
-                            isClickColor > 0 && isClickColor == tIndex + 1,
-                          isNavOpen: t.toolOpen,
-                        }">
-                        <div @click.stop="taskOpen(tIndex, 0)" class="chapter_upload_open"></div>
-                        <div @mousedown="isdrag = 'task-' + tIndex" @mouseup="isdrag = ''"
-                          @touchstart="isdrag = 'task-' + tIndex" @touchend="isdrag = ''" style="left: 8px"
-                          class="chapter_upload_drag"></div>
-                        <div class="nt_taskBox">
-                          <div class="nt_taskTitle">任务{{ tIndex + 1 }}:</div>
-                          <div class="nt_taskName">
-                            <el-tooltip effect="light" :content="t.task ? t.task : '未命名任务'" placement="top">
-                              <span>{{ t.task ? t.task : "未命名任务" }}</span>
-                            </el-tooltip>
-                          </div>
-                        </div>
-                        <!-- <div class="moveBtn" v-if="unitJson[unitIndex].chapterInfo[0].taskJson.length >
-                          1
-                          ">
-                          <div class="chapter_upload_up" style="margin: 0 5px 0 0;width: 25px;height: 25px;"
-                            @click.stop="taskMove(1, tIndex)"></div>
-                          <div class="chapter_upload_down" style="width: 25px;height: 25px;"
-                            @click.stop="taskMove(2, tIndex)"></div>
-                        </div> -->
-                      </div>
-                      <div class="gjBox" v-if="t.toolChoose.length && t.toolOpen">
-                        <div v-for="(tool, toolIndex2) in t.toolChoose" :key="toolIndex2"
-                          @click="jumpGj(tIndex, toolIndex2)">
-                          <div class="gjCss" :class="{
-                            isGjCss:
-                              toolIndexType == `gj${tIndex}${toolIndex2}`,
-                          }">
-                            <div>工具{{ toolIndex2 + 1 }}:</div>
-                            <div>
-                              {{
-                              toolsData[tool.tool[0]] &&
-                              toolsData[tool.tool[0]].name
-                              }}
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="navBottom" v-if="courseState == 1">
-                    <div v-for="(stage, stageIndex) in unitJson" :key="stageIndex" class="stageBox" :class="{
-                      dragOverTop:
-                        newIndex === stageIndex &&
-                        typeIndex == 'Unit-' + stageIndex &&
-                        oldIndex > stageIndex &&
-                        dragType == 'Unit',
-                      dragOverBottom:
-                        newIndex === stageIndex &&
-                        typeIndex == 'Unit-' + stageIndex &&
-                        oldIndex < stageIndex &&
-                        dragType == 'Unit',
-                    }">
-                      <div @dragstart="dragUnitStart(stage, stageIndex)" @dragover.prevent="dragUnitOver(stageIndex)"
-                        @dragend="dragUnitEnd()" :draggable="isdrag == 'unit-' + stageIndex"
-                        @click="unitSet2(stageIndex)" class="navStage" :class="{
-                          isNavStage: stageIndex == unitIndex,
-                          isNavStageOpen: stage.toolOpen,
-                        }">
-                        <div @mousedown="isdrag = 'unit-' + stageIndex" @mouseup="isdrag = ''"
-                          @touchstart="isdrag = 'unit-' + stageIndex" @touchend="isdrag = ''" style="left: 8px"
-                          class="chapter_upload_drag"></div>
-                        <div class="nt_taskBox">
-                          <div class="nt_taskTitle">
-                            第{{ stageIndex + 1 }}阶段:
-                          </div>
-                          <div class="nt_taskName">
-                            <el-tooltip effect="light" :content="stage.dyName ? stage.dyName : '未命名阶段'
-                              " placement="top">
-                              <span>{{
-                                stage.dyName ? stage.dyName : "未命名阶段"
-                                }}</span>
-                            </el-tooltip>
-                          </div>
-                        </div>
-                        <div @click.stop="unitOpen(stageIndex)" class="chapter_unit_open"></div>
-                      </div>
-                      <div v-for="(t, tIndex) in unitJson[stageIndex]
-                        .chapterInfo[0].taskJson" :key="`${stageIndex}-${tIndex}`" :class="{
-                          dragOverTop:
-                            newIndex === tIndex &&
-                            typeIndex == 'task-' + tIndex &&
-                            ((oldIndex > tIndex &&
-                              stageIndex == checkUnitIndex) ||
-                              (oldIndex == tIndex &&
-                                stageIndex == checkUnitIndex &&
-                                checkUnitIndex != oldUnitIndex)) &&
-                            dragType == 'task',
-                          dragOverBottom:
-                            newIndex === tIndex &&
-                            typeIndex == 'task-' + tIndex &&
-                            oldIndex < tIndex &&
-                            stageIndex == checkUnitIndex &&
-                            dragType == 'task',
-                        }" :style="{ display: stage.toolOpen ? 'block' : 'none' }">
-                        <div @dragstart="dragTaskStart(t, tIndex, stageIndex)"
-                          @dragover.prevent="dragTaskOver(tIndex, stageIndex)" @dragend="dragTaskEnd()" :draggable="isdrag == 'task-' + stageIndex + '-' + tIndex
-                            " @click="goToTask2(tIndex, stageIndex)" class="navTask" style="padding-left: 12px" :class="{
-                              isNavTask:
-                                isClickColor > 0 &&
-                                isClickColor == tIndex + 1 &&
-                                stageIndex == unitIndex,
-                              isNavOpen: t.toolOpen,
-                            }">
-                          <div @click.stop="taskOpen(tIndex, stageIndex)" class="chapter_upload_open"></div>
-                          <div @mousedown="
-                            isdrag = 'task-' + stageIndex + '-' + tIndex
-                            " @mouseup="isdrag = ''" @touchstart="
-                              isdrag = 'task-' + stageIndex + '-' + tIndex
-                              " @touchend="isdrag = ''" style="left: 20px" class="chapter_upload_drag"></div>
-                          <div class="nt_taskBox" style="width: calc(100% - 52px)">
-                            <div class="nt_taskTitle">
-                              任务{{ tIndex + 1 }}:
-                            </div>
-                            <div class="nt_taskName">
-                              <el-tooltip effect="light" :content="t.task ? t.task : '未命名任务'" placement="top">
-                                <span>{{
-                                  t.task ? t.task : "未命名任务"
-                                  }}</span>
-                              </el-tooltip>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="gjBox" v-if="t.toolChoose.length && t.toolOpen">
-                          <div v-for="(tool, toolIndex2) in t.toolChoose" :key="toolIndex2"
-                            @click="jumpGj2(tIndex, toolIndex2, stageIndex)">
-                            <div class="gjCss" :class="{
-                              isGjCss:
-                                toolIndexType ==
-                                `gj${tIndex}${toolIndex2}${stageIndex}`,
-                            }">
-                              <div>工具{{ toolIndex2 + 1 }}:</div>
-                              <div>
-                                {{
-                                toolsData[tool.tool[0]] &&
-                                toolsData[tool.tool[0]].name
-                                }}
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="rb_c_ai_box" v-if="stepsNav == 2">
-                  <aiBox @setUnitJson="setUnitJson" :courseId="courseId" :unitJson="unitJson"></aiBox>
-                </div>
-              </div>
-              <div class="rb_c_box_right">
-                <!-- <div class="rb_c_box_btn">
-                  <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask" v-if="steps == 3">智能粘贴</button>
-                </div> -->
-                <div class="basic_box" ref="unitBox">
-                  <div v-if="false" style="
-                      display: flex;
-                      flex-direction: row;
-                      align-items: center;
-                      position: sticky;
-                      top: 0;
-                      z-index: 99;
-                      width: 100%;
-                      padding: 0 20px 0 20px;
-                      box-sizing: border-box;
-                      background: #fff;
-                      border-radius: 8px;
-                    ">
-                    <!-- :style="{ maxWidth: (userid == courseUserid || role == '1') ? 'calc(100% - 300px)' : 'calc(100% - 175px)' }" -->
-                    <div class="cru_selectBox" :style="{
-                      maxWidth: isPasteTask
-                        ? 'calc(100% - 335px)'
-                        : 'calc(100% - 190px)',
-                    }" v-if="courseState == 1">
-                      <div v-for="(item, index) in unitJson" :key="index" class="cru_select"
-                        :class="unitIndex == index ? 'cru_selected' : ''" @click="unitSet(index)">
-                        <!-- item.dyName ? item.dyName :  -->
-                        <span v-if="
-                          unitJson[unitJson.length - 1].easy == 4 ||
-                          unitJson[unitJson.length - 1].easy == 6
-                        ">{{
-                          item.dyName
-                          ? item.dyName
-                          : "第" + (index + 1) + "阶段"
-                          }}</span>
-                        <span v-else>{{ "第" + (index + 1) + "阶段" }}</span>
-                      </div>
-                      <div class="cru_line" :style="{
-                        left: offsetLetfPx + 'px',
-                      }"></div>
-                    </div>
-                    <div class="addStageImg" @click="addunit()" v-if="
-                      !(unitJson[unitJson.length - 1].easy == 4) &&
-                      !(unitJson[unitJson.length - 1].easy == 6) &&
-                      courseState == 1
-                    ">
-                      <img src="../../../assets/icon/new/addStage.png" alt />
-                    </div>
-                    <button class="c_pub_button_add pub_btn_add_img" @click="updateCourseState(1)"
-                      v-if="courseState == 2" style="margin: 15px 0">
-                      新建阶段
-                    </button>
-                    <!-- v-if="steps == 3 && (userid == courseUserid || role == '1')" -->
-                    <button class="c_pub_button_add" @click="openStageBox" v-show="false" style="margin: 0 0 0 auto">
-                      阶段顺序
-                    </button>
-                    <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask()"
-                      v-if="(steps == 3 || istemplate == 1)  && isPasteTask" style="margin: 0 0 0 auto">
-                      智能粘贴
-                    </button>
-                    <button class="c_pub_button_confirm pub_btn_template_img" @click="openTemplate" :style="{
-                      margin: isPasteTask ? '0 0 0 20px' : '0 0 0 auto',
-                    }" style="padding: 0 12px">
-                      选择课程模板
-                    </button>
-                  </div>
-
-                  <div style="margin: 0 0 10px 0; padding: 0" v-for="(item, index) in unitJson[unitIndex].chapterInfo"
-                    :key="index">
-                    <div v-if="courseState == 4" style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                      <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: !item.taskJson[0].isFoldchapter
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                        <div style="margin-bottom: 10px;width: 100%;" class="lineTitle">
-                          学习内容
-                          <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                            <button class="c_pub_button_confirm" style="margin: 0 0 0 auto;"
-                              @contextmenu.prevent="openAiDialog2(1, 'aiTask2','all')"
-                              @click="openAiDialog2(2, 'aiTask2','all')">重新生成任务</button>
-                          </el-tooltip>
-                        </div>
-                      </div>
-                      <div>
-                        <div class="add_chapters_box add_c_none" v-if="
-                          item.taskJson[0].chapterData &&
-                          item.taskJson[0].chapterData.length == 0
-                        ">
-                          <img src="../../../assets/icon/new/c_none.png" alt /><span>请添加学习内容</span>
-                        </div>
-                        <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                          <div @dragstart="
-                            dragStart(item1, index1, 0)
-                            " @dragover.prevent="
-                              dragOver(index1, 0)
-                              " @dragend="dragEnd()" :draggable="isdrag ==
-                                'chapter-' + 0 + '-' + index1
-                                " class="chapter_upload" v-for="(item1, index1) in item.taskJson[0].chapterData"
-                            :key="item1.id" @click="
-                              getChapterData(
-                                $event,
-                                unitIndex,
-                                index,
-                                index1,
-                                item1.type
-                              )
-                              " :class="{
-                                dragOverTop2:
-                                  newIndex === index1 &&
-                                  typeIndex ==
-                                  'chapter-' +
-                                  0 +
-                                  '-' +
-                                  index1 &&
-                                  oldIndex > index1 &&
-                                  dragType == 'drag',
-                                dragOverBottom2:
-                                  newIndex === index1 &&
-                                  typeIndex ==
-                                  'chapter-' +
-                                  0 +
-                                  '-' +
-                                  index1 &&
-                                  oldIndex < index1 &&
-                                  dragType == 'drag',
-                              }">
-                            <div @mousedown="
-                              isdrag =
-                              'chapter-' + 0 + '-' + index1
-                              " @mouseup="isdrag = ''" @touchstart="
-                                isdrag =
-                                'chapter-' + 0 + '-' + index1
-                                " @touchend="isdrag = ''" class="chapter_upload_drag"></div>
-                            <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                              <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                                <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                                <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                                </div>
-                                <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                                <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                                </div>
-                              </div>
-                              <div class="chapter_upload_n">
-                                <input readonly="true" v-if="
-                                  item1.type == 2 ||
-                                  item1.type == 3 ||
-                                  item1.type == 12 ||
-                                  item1.type == 13 ||
-                                  item1.type == 7
-                                " :placeholder="item1.name" @click="
-                                  updataVideoT(
-                                    $event,
-                                    unitIndex,
-                                    0,
-                                    index1
-                                  )
-                                  " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                                <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(0, index1)
-                                        " />
-                                <input :placeholder="item1.title ? item1.title : '链接'
-                                  " v-if="item1.type == 8" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(0, index1)" />
-                                <input :placeholder="item1.title ? item1.title : '链接'
-                                  " v-if="item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        openUpdateSource(0, index1)
-                                        " />
-                              </div>
-                              <div class="chapter_upload_ic">
-                                <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                                <div class="chapter_upload_ic_check" v-if="item1.type == 3" @click.stop="
-                                  checkChpater( $event, unitIndex, 0, index1 )
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ud" style="z-index: 99">
-                                  <div class="chapter_upload_up" @click="
-                                    upCd(
-                                      $event,
-                                      unitIndex,
-                                      index,
-                                      0,
-                                      index1
-                                    )
-                                    "></div>
-                                  <div class="chapter_upload_down" @click="
-                                    downCd(
-                                      $event,
-                                      unitIndex,
-                                      index,
-                                      0,
-                                      index1
-                                    )
-                                    "></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="
-                                  item1.type == 2 ||
-                                  item1.type == 3 ||
-                                  item1.type == 12 ||
-                                  item1.type == 13 ||
-                                  item1.type == 7
-                                " @click.stop="
-                                  updataVideoT(
-                                    $event,
-                                    unitIndex,
-                                    0,
-                                    index1
-                                  )
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 6" @click="
-                                  selectAttText(0, index1)
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 8"
-                                  @click="selectLine(0, index1)">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 14" @click="
-                                  openUpdateSource(0, index1)
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_r" @click.stop="
-                                  deleteChapterData(
-                                    $event,
-                                    unitIndex,
-                                    index,
-                                    index1,
-                                    0
-                                  )
-                                  ">
-                                  <div></div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                      <div class="add_info_box" style="margin: 10px 0 0">
-                        <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                          文件
-                          <input type="file" accept="*" style="display: none" v-if="inputShow" @change="
-                            beforeUpload2(
-                              $event,
-                              unitIndex,
-                              13,
-                              0
-                            )
-                            " />
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="addAttText(0)">
-                          图文
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openLine(0)">
-                          链接
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="pasteLine(0)">
-                          代码
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openSource(0)">
-                          资源
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openAiCreate(0)">
-                          AI生成PPT
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="createTeacherAn(0)">
-                          AI生成教案
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openAiCreateVideo(0)">
-                          智能检索视频
-                        </button>
-                      </div>
-                      <div v-if="
-                        unitJson[unitIndex].chapterInfo[0].taskJson[
-                          0
-                        ].proVisible
-                      " class="mask">
-                        <div class="progressBox">
-                          <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                          <div class="lbox">
-                            <img src="../../../assets/loading.gif" />上传中,请稍后
-                          </div>
-                          <div style="margin-bottom: 10px">
-                            <span>{{
-                              unitJson[unitIndex].chapterInfo[0].taskJson[
-                              0
-                              ].isFinishSize
-                              }}M</span>
-                            /
-                            <span>{{
-                              unitJson[unitIndex].chapterInfo[0].taskJson[
-                              0
-                              ].isAllSize
-                              }}M</span>
-                          </div>
-                          <el-progress :text-inside="true" :stroke-width="20" :percentage="unitJson[unitIndex].chapterInfo[0].taskJson[
-                            0
-                          ].progress
-                            ? unitJson[unitIndex].chapterInfo[0]
-                              .taskJson[0].progress
-                            : 0
-                            " style="width: 80%"></el-progress>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="chapter_box" v-if="courseState == 1">
-                      <div class="chapter_contentbox">
-                        <!-- <div>第{{ unitIndex + 1 }}阶段</div> -->
-                        <div class="cc_input">
-                          <input ref="dyInput" type="text" placeholder="请输入阶段标题" class="binfo_input"
-                            v-model="unitJson[unitIndex].dyName" />
-                        </div>
-                        <div class="remove" v-if="
-                          (unitJson.length > 1 || courseState != 2) &&
-                          !(unitJson[unitJson.length - 1].easy == 4) &&
-                          !(unitJson[unitJson.length - 1].easy == 6)
-                        " @click="deleteUnit(unitIndex)"></div>
-                      </div>
-                    </div>
-                    <!-- <div v-if="!unitJson[unitIndex].easy" style="
-                    margin: 50px 0px 10px;
-                    font-size: 1.5em;
-                    font-weight: 700;
-                    color: #0f7eff;
-                  ">
-                  添加任务
-                </div> -->
-                    <div class="taskBorder" :style="{
-                      minHeight: unitJson[unitIndex].easy && 'unset',
-                    }" :class="{ smallTaskBorder: itemTask.isFold === 1 }"
-                      v-for="(itemTask, itemTaskIndex) in item.taskJson" :key="itemTaskIndex" v-loading="taskLoading[itemTaskIndex]" element-loading-text="小可正在努力生成中,请稍等...">
-                      <div style="background: #fff; border-radius: 5px">
-                        <div class="taskTitle">
-                          <div style="display: flex;width: 100%;justify-content: space-between;">
-                            <span>任务{{ itemTaskIndex + 1 }}</span>
-                            <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                              <button class="c_pub_button_confirm" style="margin: 0 0 0 auto;"
-                                @contextmenu.prevent="openAiDialog2(1, 'aiTask2',itemTaskIndex)"
-                                @click="openAiDialog2(2, 'aiTask2',itemTaskIndex)">重新生成任务</button>
-                            </el-tooltip>
-                          </div>
-                        </div>
-                        <!-- padding: 20px; -->
-                        <div v-if="unitJson[unitIndex].easy != 1">
-                          <div :style="{
-                            marginBottom:
-                              unitJson[unitIndex].easy == 3 ||
-                                (unitJson[unitIndex].easy == 5 &&
-                                  itemTask.taskType == 1)
-                                ? '75px'
-                                : '0',
-                          }">
-                            <div style="
-                                display: flex;
-                                margin: 0px 0 20px;
-                                flex-direction: row;
-                                justify-content: flex-start;
-                                align-items: center;
-                              ">
-                              <div class="lineTitle">任务概述</div>
-                            </div>
-                            <div :id="'task' + itemTaskIndex" class="chapter_contentbox" style="
-                                flex-direction: row;
-                                justify-content: flex-start;
-                                align-items: center;
-                                margin: 0;
-                              ">
-                              <!-- <div class="cc_title">
-                                任务{{ itemTaskIndex + 1 }}
-                              </div> -->
-                              <div class="cc_input">
-                                <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
-                                  v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ].task
-                                    " />
-                              </div>
-                              <div class="remove" v-if="
-                                item.taskJson.length > 1 &&
-                                (!unitJson[unitIndex].easy ||
-                                  unitJson[unitIndex].easy == 6)
-                              " @click="deleteTask(itemTaskIndex)"></div>
-                              <!-- <div v-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1 && !itemTask.isFold2"
-                                class="show_taskD show" @click="fold2(itemTaskIndex)"><img
-                                  src="../../../assets/icon/new/icon-slide.png" />收起任务描述</div>
-                              <div v-else-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1" class="show_taskD"
-                                @click="fold2(itemTaskIndex)"><img src="../../../assets/icon/new/icon-slide.png" />展开任务描述
-                              </div> -->
-                            </div>
-                            <!-- <div v-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1 && itemTask.isFold2" style="
-                          display: flex;
-                          margin: 20px 0;
-                          flex-direction: row;
-                          justify-content: flex-start;
-                          align-items: center;
-                        ">
-                              <div class="lineTitle">任务描述</div>
-                            </div> && !itemTask.isFold2-->
-                            <div v-if="
-                              easyArray.indexOf(unitJson[unitIndex].easy) ==
-                              -1
-                            " style="margin-top: 20px" class="op_task_box"
-                              v-loading="taskDetailLoading2.indexOf('task-' + itemTaskIndex) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                              <!-- <editor-bar class="addEditor" style="margin: 0" placeholder="请输入任务描述" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                ].taskDetail
-                                " @change="change"></editor-bar> -->
-                              <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols
-                                placeholder="请输入任务描述" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                ].taskDetail
-                                  "></textarea>
-                              <!-- <textarea rows="6" class="binfo_input" placeholder="请输入任务描述" cols
-                                style="width: 70.5% !important; height: 120px" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ].taskDetail
-                                  "></textarea> -->
-                              <div class="op_box">
-                                <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
-                                <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                                  <div class="r_pub_button_op" @contextmenu.prevent="openAiDialog(1, 'aiDetail2', unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ], itemTaskIndex)" @click="openAiDialog(2, 'aiDetail2', unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ], itemTaskIndex)">智能优化</div>
-                                </el-tooltip>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div
-                          style="position: relative"
-                          v-if="courseState == 5"
-                        >
-                          <div
-                            style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            "
-                            :style="{
-                              margin: !itemTask.isFoldchapter
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }"
-                          >
-                            <div
-                              style="margin-bottom: 10px"
-                              class="lineTitle clineTitle"
-                            >
-                              学习内容
-                            </div>
-                            <!-- <div style="margin-bottom:10px" v-if="!itemTask.isFoldchapter" class="show_taskD show"
-                              @click="foldC(itemTaskIndex)"><img src="../../../assets/icon/new/icon-slide.png" />收起学习内容</div>
-                            <div style="margin-bottom:10px" v-else class="show_taskD" @click="foldC(itemTaskIndex)"><img
-                                src="../../../assets/icon/new/icon-slide.png" />展开学习内容</div> -->
-                            <!-- <div class="line"></div> -->
-                          </div>
-                          <!-- v-if="!itemTask.isFoldchapter" -->
-                          <div>
-                            <div
-                              class="add_chapters_box add_c_none"
-                              v-if="
-                                itemTask.chapterData &&
-                                itemTask.chapterData.length == 0
-                              "
-                            >
-                              <img
-                                src="../../../assets/icon/new/c_none.png"
-                                alt
-                              /><span>请添加学习内容</span>
-                            </div>
-                            <div
-                              v-else
-                              class="add_chapters_box"
-                              style="display: flex; flex-direction: column"
-                            >
-                              <div
-                                @dragstart="
-                                  dragStart(item1, index1, itemTaskIndex)
-                                "
-                                @dragover.prevent="
-                                  dragOver(index1, itemTaskIndex)
-                                "
-                                @dragend="dragEnd()"
-                                :draggable="
-                                  isdrag ==
-                                  'chapter-' + itemTaskIndex + '-' + index1
-                                "
-                                class="chapter_upload"
-                                v-for="(item1, index1) in itemTask.chapterData"
-                                :key="item1.id"
-                                @click="
-                                  getChapterData(
-                                    $event,
-                                    unitIndex,
-                                    index,
-                                    index1,
-                                    item1.type
-                                  )
-                                "
-                                :class="{
-                                  dragOverTop2:
-                                    newIndex === index1 &&
-                                    typeIndex ==
-                                      'chapter-' +
-                                        itemTaskIndex +
-                                        '-' +
-                                        index1 &&
-                                    oldIndex > index1 &&
-                                    dragType == 'drag',
-                                  dragOverBottom2:
-                                    newIndex === index1 &&
-                                    typeIndex ==
-                                      'chapter-' +
-                                        itemTaskIndex +
-                                        '-' +
-                                        index1 &&
-                                    oldIndex < index1 &&
-                                    dragType == 'drag',
-                                }"
-                              >
-                                <div
-                                  @mousedown="
-                                    isdrag =
-                                      'chapter-' + itemTaskIndex + '-' + index1
-                                  "
-                                  @mouseup="isdrag = ''"
-                                  @touchstart="
-                                    isdrag =
-                                      'chapter-' + itemTaskIndex + '-' + index1
-                                  "
-                                  @touchend="isdrag = ''"
-                                  class="chapter_upload_drag"
-                                ></div>
-                                <div
-                                  class="chapter_upload_o"
-                                  style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  "
-                                >
-                                  <div
-                                    class="chapter_upload_l"
-                                    style="padding: 1px 0 0 10px"
-                                  >
-                                    <div
-                                      v-if="item1.type == 2"
-                                      class="chapter_upload_l_i2"
-                                    ></div>
-                                    <div
-                                      v-if="item1.type == 3"
-                                      class="chapter_upload_l_i3"
-                                      style="margin-left: 1px"
-                                    ></div>
-                                    <div
-                                      v-if="item1.type == 6"
-                                      class="chapter_upload_l_i6"
-                                      style="margin-left: 1px"
-                                    ></div>
-                                    <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                                    <div
-                                      v-if="item1.type == 8"
-                                      class="chapter_upload_l_i8"
-                                      style="margin-left: 1px"
-                                    ></div>
-                                    <div
-                                      v-if="item1.type == 14"
-                                      class="chapter_upload_l_i14"
-                                      style="margin-left: 1px"
-                                    ></div>
-                                    <div
-                                      v-if="item1.type == 12"
-                                      class="chapter_upload_l_i12"
-                                      style="margin-left: 1px"
-                                    ></div>
-                                    <div
-                                      v-if="item1.type == 13"
-                                      class="chapter_upload_l_i13"
-                                      style="margin-left: 1px"
-                                    ></div>
-                                  </div>
-                                  <div class="chapter_upload_n">
-                                    <input
-                                      readonly="true"
-                                      v-if="
-                                        item1.type == 2 ||
-                                        item1.type == 3 ||
-                                        item1.type == 12 ||
-                                        item1.type == 13 ||
-                                        item1.type == 7
-                                      "
-                                      :placeholder="item1.name"
-                                      @click="
-                                        updataVideoT(
-                                          $event,
-                                          unitIndex,
-                                          itemTaskIndex,
-                                          index1
-                                        )
-                                      "
-                                      style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      "
-                                    />
-                                    <input
-                                      :placeholder="item1.name"
-                                      v-if="item1.type == 6"
-                                      style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      "
-                                      readonly="true"
-                                      @click="
-                                        selectAttText(itemTaskIndex, index1)
-                                      "
-                                    />
-                                    <input
-                                      :placeholder="
-                                        item1.title ? item1.title : '链接'
-                                      "
-                                      v-if="item1.type == 8"
-                                      style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      "
-                                      readonly="true"
-                                      @click="selectLine(itemTaskIndex, index1)"
-                                    />
-                                    <input
-                                      :placeholder="
-                                        item1.title ? item1.title : '链接'
-                                      "
-                                      v-if="item1.type == 14"
-                                      style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      "
-                                      readonly="true"
-                                      @click="
-                                        openUpdateSource(itemTaskIndex, index1)
-                                      "
-                                    />
-                                  </div>
-                                  <div class="chapter_upload_ic">
-                                    <div
-                                      class="chapter_upload_noSee"
-                                      v-if="item1.type == 12"
-                                    ></div>
-                                    <div class="chapter_upload_ic_check" v-if="item1.type == 3" @click.stop="
-                                    checkChpater( $event, unitIndex, itemTaskIndex, index1 )
-                                    ">
-                                    <div></div>
-                                  </div>
-                                    <div
-                                      class="chapter_upload_ud"
-                                      style="z-index: 99"
-                                    >
-                                      <div
-                                        class="chapter_upload_up"
-                                        @click="
-                                          upCd(
-                                            $event,
-                                            unitIndex,
-                                            index,
-                                            itemTaskIndex,
-                                            index1
-                                          )
-                                        "
-                                      ></div>
-                                      <div
-                                        class="chapter_upload_down"
-                                        @click="
-                                          downCd(
-                                            $event,
-                                            unitIndex,
-                                            index,
-                                            itemTaskIndex,
-                                            index1
-                                          )
-                                        "
-                                      ></div>
-                                    </div>
-                                    <div
-                                      class="chapter_upload_ic_edit"
-                                      v-if="
-                                        item1.type == 2 ||
-                                        item1.type == 3 ||
-                                        item1.type == 12 ||
-                                        item1.type == 13 ||
-                                        item1.type == 7
-                                      "
-                                      @click.stop="
-                                        updataVideoT(
-                                          $event,
-                                          unitIndex,
-                                          itemTaskIndex,
-                                          index1
-                                        )
-                                      "
-                                    >
-                                      <div></div>
-                                    </div>
-                                    <div
-                                      class="chapter_upload_ic_edit"
-                                      v-if="item1.type == 6"
-                                      @click="
-                                        selectAttText(itemTaskIndex, index1)
-                                      "
-                                    >
-                                      <div></div>
-                                    </div>
-                                    <div
-                                      class="chapter_upload_ic_edit"
-                                      v-if="item1.type == 8"
-                                      @click="selectLine(itemTaskIndex, index1)"
-                                    >
-                                      <div></div>
-                                    </div>
-                                    <div
-                                      class="chapter_upload_ic_edit"
-                                      v-if="item1.type == 14"
-                                      @click="
-                                        openUpdateSource(itemTaskIndex, index1)
-                                      "
-                                    >
-                                      <div></div>
-                                    </div>
-                                    <div
-                                      class="chapter_upload_ic_r"
-                                      @click.stop="
-                                        deleteChapterData(
-                                          $event,
-                                          unitIndex,
-                                          index,
-                                          index1,
-                                          itemTaskIndex
-                                        )
-                                      "
-                                    >
-                                      <div></div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                          <!-- v-if="!itemTask.isFoldchapter" -->
-                          <div class="add_info_box" style="margin: 10px 0 0">
-                            <button
-                              class="c_pub_button_add pub_btn_add_img"
-                              @click="addImg($event)"
-                            >
-                              文件
-                              <input
-                                type="file"
-                                accept="*"
-                                style="display: none"
-                                v-if="inputShow"
-                                @change="
-                                  beforeUpload2(
-                                    $event,
-                                    unitIndex,
-                                    13,
-                                    itemTaskIndex
-                                  )
-                                "
-                              />
-                            </button>
-                            <button
-                              class="c_pub_button_add pub_btn_add_img"
-                              @click="addAttText(itemTaskIndex)"
-                            >
-                              图文
-                            </button>
-                            <button
-                              class="c_pub_button_add pub_btn_add_img"
-                              @click="openLine(itemTaskIndex)"
-                            >
-                              链接
-                            </button>
-                            <button
-                              class="c_pub_button_add pub_btn_add_img"
-                              @click="pasteLine(itemTaskIndex)"
-                            >
-                              代码
-                            </button>
-                            <button
-                              class="c_pub_button_add pub_btn_add_img"
-                              @click="openSource(itemTaskIndex)"
-                            >
-                              资源
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="openAiCreate(itemTaskIndex)">
-                              AI生成PPT
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="createTeacherAn(itemTaskIndex)">
-                              AI生成教案
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="openAiCreateVideo(itemTaskIndex)">
-                              智能检索视频
-                            </button>
-                          </div>
-                          <div
-                            v-if="
-                              unitJson[unitIndex].chapterInfo[0].taskJson[
-                                itemTaskIndex
-                              ].proVisible
-                            "
-                            class="mask"
-                          >
-                            <div class="progressBox">
-                              <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                              <div class="lbox">
-                                <img
-                                  src="../../../assets/loading.gif"
-                                />上传中,请稍后
-                              </div>
-                              <div style="margin-bottom: 10px">
-                                <span
-                                  >{{
-                                    unitJson[unitIndex].chapterInfo[0].taskJson[
-                                      itemTaskIndex
-                                    ].isFinishSize
-                                  }}M</span
-                                >
-                                /
-                                <span
-                                  >{{
-                                    unitJson[unitIndex].chapterInfo[0].taskJson[
-                                      itemTaskIndex
-                                    ].isAllSize
-                                  }}M</span
-                                >
-                              </div>
-                              <el-progress
-                                :text-inside="true"
-                                :stroke-width="20"
-                                :percentage="
-                                  unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ].progress
-                                    ? unitJson[unitIndex].chapterInfo[0]
-                                        .taskJson[itemTaskIndex].progress
-                                    : 0
-                                "
-                                style="width: 80%"
-                              ></el-progress>
-                            </div>
-                          </div>
-                        </div>
-                        <div v-if="
-                          unitJson[unitIndex].easy == 1 ||
-                          (unitJson[unitIndex].easy == 5 &&
-                            itemTask.taskType == 2)
-                        ">
-                          <div>
-                            <div class="add_chapters_box add_c_none" v-if="
-                              itemTask.chapterData &&
-                              itemTask.chapterData.length == 0
-                            ">
-                              <img src="../../../assets/icon/new/c_none.png" alt />
-                            </div>
-                            <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                              <div @dragstart="dragStart(item1, index1, index)" @dragover.prevent="
-                                dragOver(index1, itemTaskIndex)
-                                " @dragend="dragEnd()" :draggable="isdrag ==
-                                  'chapter-' + itemTaskIndex + '-' + index1
-                                  " class="chapter_upload" v-for="(item1, index1) in itemTask.chapterData"
-                                :key="item1.id" @click="
-                                  getChapterData(
-                                    $event,
-                                    unitIndex,
-                                    index,
-                                    index1,
-                                    item1.type
-                                  )
-                                  " :class="{
-                                    dragOverTop2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      itemTaskIndex +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex > index1,
-                                    dragOverBottom2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      itemTaskIndex +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex < index1,
-                                  }">
-                                <div @mousedown="
-                                  isdrag =
-                                  'chapter-' + itemTaskIndex + '-' + index1
-                                  " @mouseup="isdrag = ''" @touchstart="
-                                    isdrag =
-                                    'chapter-' + itemTaskIndex + '-' + index1
-                                    " @touchend="isdrag = ''" class="chapter_upload_drag"></div>
-                                <div class="chapter_upload_t" style="width: 100%"></div>
-                                <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                                  <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                                    <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                                    <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                                    </div>
-                                    <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                                    <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                                    </div>
-                                  </div>
-                                  <div class="chapter_upload_n">
-                                    <span style="
-                                        font-size: 14px;
-                                        color: rgb(109, 109, 109);
-                                        height: 14px;
-                                        line-height: 14px;
-                                      " v-if="
-                                        item1.type == 2 ||
-                                        item1.type == 3 ||
-                                        item1.type == 7
-                                      ">{{ item1.text }}-</span>
-                                    <input readonly="true" v-if="
-                                      item1.type == 2 ||
-                                      item1.type == 3 ||
-                                      item1.type == 7
-                                    " :placeholder="item1.name" @click="
-                                      updataVideoT(
-                                        $event,
-                                        unitIndex,
-                                        itemTaskIndex,
-                                        index1
-                                      )
-                                      " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                                    <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(itemTaskIndex, index1)
-                                        " />
-                                    <input :placeholder="item1.title ? item1.title : '链接'
-                                      " v-if="item1.type == 8 || item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(itemTaskIndex, index1)" />
-                                  </div>
-                                  <div class="chapter_upload_ic">
-                                    <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                                    <div class="chapter_upload_ud" style="z-index: 99">
-                                      <div class="chapter_upload_up" @click="
-                                        upCd(
-                                          $event,
-                                          unitIndex,
-                                          index,
-                                          itemTaskIndex,
-                                          index1
-                                        )
-                                        "></div>
-                                      <div class="chapter_upload_down" @click="
-                                        downCd(
-                                          $event,
-                                          unitIndex,
-                                          index,
-                                          itemTaskIndex,
-                                          index1
-                                        )
-                                        "></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="
-                                      item1.type == 2 ||
-                                      item1.type == 3 ||
-                                      item1.type == 12 ||
-                                      item1.type == 13 ||
-                                      item1.type == 7
-                                    " @click.stop="
-                                      updataVideoT(
-                                        $event,
-                                        unitIndex,
-                                        itemTaskIndex,
-                                        index1
-                                      )
-                                      ">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="item1.type == 6" @click="
-                                      selectAttText(itemTaskIndex, index1)
-                                      ">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="item1.type == 8"
-                                      @click="selectLine(itemTaskIndex, index1)">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="item1.type == 14" @click="
-                                      openUpdateSource(itemTaskIndex, index1)
-                                      ">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_r" @click.stop="
-                                      deleteChapterData(
-                                        $event,
-                                        unitIndex,
-                                        index,
-                                        index1,
-                                        itemTaskIndex
-                                      )
-                                      ">
-                                      <div></div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                          <div class="add_info_box" style="margin: 10px 0 0">
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              <span style="color: red">*</span>
-                              教学设计
-                              <input type="file"
-                                accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    3,
-                                    itemTaskIndex,
-                                    '教学设计'
-                                  )
-                                  " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              <span style="color: red">*</span>
-                              教学课件
-                              <input type="file"
-                                accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    3,
-                                    itemTaskIndex,
-                                    '教学课件'
-                                  )
-                                  " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              教学视频
-                              <input type="file" accept="video/mp4, video/quicktime, video/x-msvideo"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    2,
-                                    itemTaskIndex,
-                                    '教学视频'
-                                  )
-                                  " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              教学音频
-                              <input type="file" accept="audio/*" style="display: none" v-if="inputShow" @change="
-                                beforeUpload3(
-                                  $event,
-                                  unitIndex,
-                                  2,
-                                  itemTaskIndex,
-                                  '教学音频'
-                                )
-                                " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              学习单
-                              <input type="file"
-                                accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    3,
-                                    itemTaskIndex,
-                                    '学习单'
-                                  )
-                                  " />
-                            </button>
-                          </div>
-                          <div v-if="
-                            unitJson[unitIndex].chapterInfo[0].taskJson[
-                              itemTaskIndex
-                            ].proVisible
-                          " class="mask">
-                            <div class="progressBox">
-                              <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                              <div class="lbox">
-                                <img src="../../../assets/loading.gif" />上传中,请稍后
-                              </div>
-                              <div style="margin-bottom: 10px">
-                                <span>{{
-                                  unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                  ].isFinishSize
-                                  }}M</span>
-                                /
-                                <span>{{
-                                  unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                  ].isAllSize
-                                  }}M</span>
-                              </div>
-                              <el-progress :text-inside="true" :stroke-width="20" :percentage="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                itemTaskIndex
-                              ].progress
-                                ? unitJson[unitIndex].chapterInfo[0]
-                                  .taskJson[itemTaskIndex].progress
-                                : 0
-                                " style="width: 80%"></el-progress>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                      <!-- padding: 20px; -->
-                      <div style="
-                          background: #fff;
-                          border-radius: 5px;
-                          margin-top: 15px;
-                        ">
-                        <div v-if="
-                          unitJson[unitIndex].easy != 3 &&
-                          !(
-                            unitJson[unitIndex].easy == 5 &&
-                            itemTask.taskType == 1
-                          )
-                        " style="
-                            flex-direction: row;
-                            justify-content: flex-start;
-                            align-items: center;
-                          ">
-                          <div style="
-                              display: flex;
-                              flex-direction: row;
-                              align-items: center;
-                              margin: 5px 0 20px;
-                            ">
-                            <div class="lineTitle clineTitle">
-                              {{
-                              !unitJson[unitIndex].easy ||
-                              unitJson[unitIndex].easy == 6 ||
-                              easyArray.indexOf(unitJson[unitIndex].easy) !=
-                              -1
-                              ? "练习内容"
-                              : "评价内容"
-                              }}
-                            </div>
-                            <!-- <div class="line" style="width: 90%"></div> -->
-                          </div>
-                        </div>
-                        <div v-if="
-                          unitJson[unitIndex].easy == 6 ||
-                          !unitJson[unitIndex].easy
-                        " class="toolChoose">
-                          <div class="tools">
-                            <div class="leftTools" style="width: 100%" v-for="(
-                                itemTool, toolIndex
-                              ) in itemTask.toolChoose" :key="toolIndex">
-                              <div style="
-                                  display: flex;
-                                  flex-direction: row;
-                                  align-items: baseline;
-                                  flex-wrap: nowrap;
-                                  justify-content: flex-start;
-                                  position: relative;
-                                ">
-                                <div style="margin-right: 20px; font-weight: bold"
-                                  :id="'gj' + itemTaskIndex + '' + toolIndex">
-                                  工具 {{ toolIndex + 1 }} :
-                                </div>
-                                <div class="chooseWho">
-                                  <div :class="itemTool.toolType == 0
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 0),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    互动类
-                                  </div>
-                                  <div :class="itemTool.toolType == 1
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 1),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    思维类
-                                  </div>
-                                  <div :class="itemTool.toolType == 6
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 6),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    协作类
-                                  </div>
-                                  <div :class="itemTool.toolType == 2
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 2),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    测评类
-                                  </div>
-                                  <div :class="itemTool.toolType == 7
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 7),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    评价类
-                                  </div>
-                                  <div :class="itemTool.toolType == 3
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 3),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    编程类
-                                  </div>
-                                  <div :class="itemTool.toolType == 5
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 5),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    学科类
-                                  </div>
-                                  <!-- <div :class="itemTool.toolType == 4 ? 'isChooseActive' : ''
-                              " @click="(itemTool.toolType = 4), $forceUpdate()">
-                              其他
-                            </div> -->
-                                </div>
-                                <div class="chapter_upload_ud2" style="z-index: 9; margin: 0 0 0 auto" :style="{
-                                  margin:
-                                    itemTask.toolChoose.length > 1
-                                      ? '0px 35px 0px auto'
-                                      : '0 0 0 auto',
-                                }" v-if="itemTask.toolChoose.length > 1">
-                                  <div class="chapter_upload_up2" @click.stop="
-                                    upTool(
-                                      $event,
-                                      unitIndex,
-                                      itemTaskIndex,
-                                      toolIndex
-                                    )
-                                    ">
-                                    上移
-                                  </div>
-                                  <div class="chapter_upload_down2" @click.stop="
-                                    downTool(
-                                      $event,
-                                      unitIndex,
-                                      itemTaskIndex,
-                                      toolIndex
-                                    )
-                                    ">
-                                    下移
-                                  </div>
-                                </div>
-                                <!-- <div v-if="!itemTool.isFold3" class="show_toolD show"
-                                @click="fold3(itemTaskIndex, toolIndex)"
-                                :style="{ margin: itemTask.toolChoose.length > 1 ? '0px 35px 0px 10px' : '0 0 0 auto' }"><img
-                                  src="../../../assets/icon/new/icon-slide.png" />收起工具栏</div>
-                              <div v-else class="show_toolD" @click="fold3(itemTaskIndex, toolIndex)"
-                                :style="{ margin: itemTask.toolChoose.length > 1 ? '0px 35px 0px 10px' : '0 0 0 auto' }"><img
-                                  src="../../../assets/icon/new/icon-slide.png" />展开工具栏</div> -->
-                                <div class="remove" @click="deleteTool(itemTaskIndex, toolIndex)"
-                                  v-if="itemTask.toolChoose.length > 1" style="
-                                    position: absolute;
-                                    right: 0;
-                                    top: -5px;
-                                  "></div>
-                              </div>
-                              <!-- v-show="!itemTool.isFold3" -->
-                              <div style="min-height: 163px">
-                                <div class="toolSort" v-if="itemTool.toolType == 0">
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(8, itemTaskIndex, toolIndex)"
-                              >
-                                <img src="../../../assets/icon/secondToolList/library.png" alt />
-                                <div style="margin: 5px 0">素材库</div>
-                              </div>
-                              <div class="check" @click="addTools(8, itemTaskIndex, toolIndex)">
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(8) == -1"
-                                />
-                                <div class="checkDiv" v-else><img src="../../../assets/icon/checkedIs.png"
-                                    alt /><span>已选择</span></div>
-                              </div>
-                            </div>-->
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(17, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/secondToolList/library.png"
-                                  alt
-                               />
-                                <div style="margin: 5px 0">学习资料</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(17, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(17) == -1"
-                                />
-                                <img
-                                  src="../../../assets/icon/checkedIs.png"
-                                  alt
-                                  v-else
-                                />
-                              </div>10
-                            </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(10) != -1,
-                                  }" @click="
-                                    addTools(10, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 10, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/time.png" alt />
-                                      <div style="margin: 5px 0">倒计时</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(10) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(10, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(10) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(65) != -1,
-                                  }" @click="
-                                    addTools(65, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(65, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/firstToolList/pickPeople.png" alt />
-                                      <div style="margin: 5px 0">挑人</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(65) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(65, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(65) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="openTools(itemTaskIndex, 49, toolIndex)">
-                                <img src="../../../assets/icon/fourthToolList/group.png" alt />
-                                <div style="margin: 5px 0">学生分组</div>
-                              </div>
-                              <div class="check" @click="addTools(49, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(49) == -1" />
-                                <div class="checkDiv" v-else>
-                                  <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <!-- <div class="tool">
-                                  <div class="whiteBIcon" @click="openTools(itemTaskIndex, 62, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/interVideo.png" alt />
-                                    <div style="margin: 5px 0">交互视频</div>
-                                  </div>
-                                  <div class="check" @click="addTools(62, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(62) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div> -->
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 1">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(7) != -1,
-                                  }" @click="
-                                    addTools(7, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(7, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/mindNetwork.png" alt />
-                                      <div style="margin: 5px 0">思维网格</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(7) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(7, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(7) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(1) != -1,
-                                  }" @click="
-                                    addTools(1, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 1, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/whiteBoard.png" alt />
-                                      <div style="margin: 5px 0">电子白板</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(1) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(1, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(1) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(2, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/secondToolList/note.png"
-                                  alt
-                                />
-                                <div style="margin: 5px 0">便签</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(2, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(2) == -1"
-                                />
-                                <div class="checkDiv" v-else>
-                                  <img
-                                    src="../../../assets/icon/checkedIs.png"
-                                    alt
-                                  /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="addTools(6, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/secondToolList/doc.png" alt />
-                                <div style="margin: 5px 0">协同文档</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(6, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(6) == -1"
-                                />
-                                <div class="checkDiv" v-else>
-                                  <img
-                                    src="../../../assets/icon/checkedIs.png"
-                                    alt
-                                  /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(52) != -1,
-                                  }" @click="
-                                    addTools(52, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 52, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/text.png" alt />
-                                      <div style="margin: 5px 0">文档</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(52) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(52, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(52) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(3) != -1,
-                                  }" @click="
-                                    addTools(3, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 3, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/mindMapping.png" alt />
-                                      <div style="margin: 5px 0">思维导图</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(3) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(3, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(3) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(48) != -1,
-                                  }" @click="
-                                    addTools(48, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 48, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/table.png" alt />
-                                      <div style="margin: 5px 0">表格</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(48) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(48, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(48) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 6">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(49) != -1,
-                                  }" @click="
-                                    addTools(49, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 49, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/group.png" alt />
-                                      <div style="margin: 5px 0">学生分组</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(49) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(49, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(49) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 2">
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(5, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/thirdToolList/score.png"
-                                  alt
-                                />
-                                <div style="margin: 5px 0">量规评分</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(5, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(5) == -1"
-                                />
-                                <img
-                                  src="../../../assets/icon/checkedIs.png"
-                                  alt
-                                  v-else
-                                />
-                              </div>
-                            </div>-->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(4) != -1,
-                                  }" @click="
-                                    addTools(4, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 4, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/ask.png" alt />
-                                      <div style="margin: 5px 0">问卷调查</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(4) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(4, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(4) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(45) != -1,
-                                  }" @click="
-                                    addTools(45, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 45, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/choose.png" alt />
-                                      <div style="margin: 5px 0">选择题</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(45) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(45, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(45) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(15) != -1,
-                                  }" @click="
-                                    addTools(15, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 15, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/answer.png" alt />
-                                      <div style="margin: 5px 0">问答</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(15) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(15, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(15) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(16) != -1,
-                                  }" @click="
-                                    addTools(16, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(16, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/work.png" alt />
-                                      <div style="margin: 5px 0">作业提交</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(16) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(16, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(16) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(50) != -1,
-                                  }" @click="
-                                    addTools(50, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(50, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/plwork.png" alt />
-                                      <div style="margin: 5px 0">批量上传</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(50) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(50, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(50) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="openTools(itemTaskIndex, 40, toolIndex)">
-                                <img src="../../../assets/icon/thirdToolList/eval.png" alt />
-                                <div style="margin: 5px 0">个人评价</div>
-                              </div>
-                              <div class="check" @click="addTools(40, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(40) == -1" />
-                                <div class="checkDiv" v-else>
-                                  <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(41) != -1,
-                                  }" @click="
-                                    addTools(41, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 41, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                      <div style="margin: 5px 0">选择匹配</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(41) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(41, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(41) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(47) != -1,
-                                  }" @click="
-                                    addTools(47, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 47, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                      <div style="margin: 5px 0">排序</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(47) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(47, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(47) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="openTools(itemTaskIndex, 42, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/thirdToolList/mp3.png"
-                                  alt
-                                />
-                                <div style="margin: 5px 0">上传音频</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(42, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(42) == -1"
-                                />
-                                <img
-                                  src="../../../assets/icon/checkedIs.png"
-                                  alt
-                                  v-else
-                                />
-                              </div>
-                            </div> -->
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 3">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(18) != -1,
-                                  }" @click="
-                                    addTools(18, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(18, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/trainPlatform.png" alt />
-                                      <div style="margin: 5px 0">训练平台</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(18) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(18, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(18) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(21) != -1,
-                                  }" @click="
-                                    addTools(21, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(21, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/program.png" alt />
-                                      <div style="margin: 5px 0">
-                                        AIoT Blockly
-                                      </div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(21) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(21, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(21) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(22, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/AIprogram2.png" alt />
-                                    <div style="margin: 5px 0">AI体验</div>
-                                  </div>
-                                  <div class="check" @click="addTools(22, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(22) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(23) != -1,
-                                  }" @click="
-                                    addTools(23, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(23, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/Pythonprogram.png" alt />
-                                      <div style="margin: 5px 0">AI Python</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(23) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(23, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(23) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(24) != -1,
-                                  }" @click="
-                                    addTools(24, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(24, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/AIprogram.png" alt />
-                                      <div style="margin: 5px 0">
-                                        AI Blockly
-                                      </div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(24) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(24, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(24) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(32) != -1,
-                                  }" @click="
-                                    addTools(32, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(32, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/code.png" alt />
-                                      <div style="margin: 5px 0">源码编辑</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(32) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(32, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(32) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(57) != -1,
-                                  }" @click="
-                                    addTools(57, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 57, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/cocopi.png" alt />
-                                      <div style="margin: 5px 0">CocoPi</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(57) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(57, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(57) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(63) != -1,
-                                  }" @click="
-                                    addTools(63, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(63, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/Wood.png" alt />
-                                      <div style="margin: 5px 0">海龟编程</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(63) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(63, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(63) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(71) != -1,
-                                  }" @click="
-                                    addTools(71, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(71, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/chatgpt.png" alt />
-                                      <div style="margin: 5px 0">AI智能体</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(71) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 7">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(40) != -1,
-                                  }" @click.stop="
-                                    addTools(40, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 40, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/eval.png" alt />
-                                      <div style="margin: 5px 0">个人评价</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(40) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(40, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(40) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 5">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(28) != -1,
-                                  }" @click="
-                                    addTools(28, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(28, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/translation.png" alt />
-                                      <div style="margin: 5px 0">翻译</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(28) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(28, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(28) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(31) != -1,
-                                  }" @click="
-                                    addTools(31, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(31, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/networkPanel.png" alt />
-                                      <div style="margin: 5px 0">数字画板</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(31) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(31, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(31) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(39) != -1,
-                                  }" @click="
-                                    addTools(39, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(39, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/GeoGebra.png" alt />
-                                      <div style="margin: 5px 0">GeoGebra</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(39) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(39, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(39) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(66) != -1,
-                                  }" @click="
-                                    addTools(66, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(66, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/formulaEdi.png" alt />
-                                      <div style="margin: 5px 0">公式编辑</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(66) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(66, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(66) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                                    <div class="whiteBIcon" @click="addTools(67, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/secondToolList/molStr.png" alt />
-                                      <div style="margin: 5px 0">分子结构</div>
-                                    </div>
-                                    <div class="check" @click="addTools(67, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(67) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(68) != -1,
-                                  }" @click="
-                                    addTools(68, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(68, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/timeAxis.png" alt />
-                                      <div style="margin: 5px 0">时间轴</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(68) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(68, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(68) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(69) != -1,
-                                  }" @click="
-                                    addTools(69, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 69, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/english.png" alt />
-                                      <div style="margin: 5px 0">英语写作</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(69) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(4, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(4) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(70) != -1,
-                                  }" @click="
-                                    addTools(70, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 70, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/englishVoice.png" alt />
-                                      <div style="margin: 5px 0">英语口语</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(70) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                  </div>
-                                  <!-- <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(28, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/translation.png" alt />
-                                    <div style="margin: 5px 0">翻译</div>
-                                  </div>
-                                  <div class="check" @click="addTools(28, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(28) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(37, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/mohe.png" alt />
-                                    <div style="margin: 5px 0">魔盒识字</div>
-                                  </div>
-                                  <div class="check" @click="addTools(37, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(37) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(38, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/24game.png" alt />
-                                    <div style="margin: 5px 0">24点</div>
-                                  </div>
-                                  <div class="check" @click="addTools(38, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(38) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(31, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/networkPanel.png" alt />
-                                    <div style="margin: 5px 0">数学画板</div>
-                                  </div>
-                                  <div class="check" @click="addTools(31, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(31) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(39, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/GeoGebra.png" alt />
-                                    <div style="margin: 5px 0">GeoGebra</div>
-                                  </div>
-                                  <div class="check" @click="addTools(39, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(39) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(58, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/car.png" alt />
-                                    <div style="margin: 5px 0">模拟驾驶</div>
-                                  </div>
-                                  <div class="check" @click="addTools(58, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(58) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(59, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/lineSearch.png" alt />
-                                    <div style="margin: 5px 0">路径搜索</div>
-                                  </div>
-                                  <div class="check" @click="addTools(59, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(59) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(60, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/deepLearning.png" alt />
-                                    <div style="margin: 5px 0">深度学习</div>
-                                  </div>
-                                  <div class="check" @click="addTools(60, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(60) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(61, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/allHistory.png" alt />
-                                    <div style="margin: 5px 0">全历史</div>
-                                  </div>
-                                  <div class="check" @click="addTools(61, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(61) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                              <div class="toolSort" v-if="itemTool.toolType == 4">
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(26, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/thirdToolList/courseDesign.png" alt />
-                                    <div style="margin: 5px 0">课程设计</div>
-                                  </div>
-                                  <div class="check" @click="addTools(26, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(26) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(25, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/thirdToolList/evalua.png" alt />
-                                    <div style="margin: 5px 0">目标管理</div>
-                                  </div>
-                                  <div class="check" @click="addTools(25, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(25) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div> -->
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="addTools(44, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/thirdToolList/hanClass.png" alt />
-                                <div style="margin: 5px 0">汉字宫</div>
-                              </div>
-                              <div class="check" @click="addTools(44, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(44) == -1" />
-                                <div class="checkDiv" v-else>
-                                  <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                </div>
-                              </div>
-                              <!-- v-show="!itemTool.isFold3" -->
-                              <div class="op_tool_box"
-                                v-loading="taskDetailLoading3.indexOf('task-' + itemTaskIndex + toolIndex) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                                <textarea rows="2" v-autoHeight="70" type="text" placeholder="添加工具描述"
-                                  class="binfo_input" style="
-                                    margin: 0 0 20px 0;
-                                    width: 100% !important;
-                                  " v-model="itemTool.toolDetail"></textarea>
-                                <div class="op_box">
-                                  <div class="op_remark">*可以将需要优化的建议添加在工具描述后,点击“智能优化”,自动进行修改</div>
-                                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                                    <div class="r_pub_button_op"
-                                      @contextmenu.prevent="openAiDialog(1, 'aiDetail3', itemTool, itemTaskIndex, toolIndex)"
-                                      @click="openAiDialog(2, 'aiDetail3', itemTool.toolDetail, itemTaskIndex, toolIndex)">
-                                      智能优化</div>
-                                                                 
-                                  </el-tooltip>
-                                </div>
-                              </div>
-                            </div>
-                            <!-- <div class="addToolFun2" @click="addToolFun(itemTaskIndex)">
-                              <div class="addToolImg">
-                                <img src="../../../assets/icon/add.png" alt />
-                              </div>
-                              <div>添加工具</div>
-                            </div> -->
-                            <button class="c_pub_button_add pub_btn_tool_img" @click="addToolFun(itemTaskIndex)" style="
-                                margin: 0 auto;
-                                padding: 0 30px;
-                                height: 45px;
-                              ">
-                              添加工具
-                            </button>
-                          </div>
-                        </div>
-                        <div v-else-if="
-                          unitJson[unitIndex].easy == 2 ||
-                          unitJson[unitIndex].easy == 4
-                        " class="toolChoose" style="padding: 0 0 40px">
-                          <div class="tools">
-                            <div class="leftTools" style="width: 100%" v-for="(
-                                itemTool, toolIndex
-                              ) in itemTask.toolChoose" :key="toolIndex">
-                              <div>
-                                <textarea rows="3" type="text" placeholder="添加工具描述" class="binfo_input" style="
-                                    margin: 0 0 20px 0;
-                                    width: 100% !important;
-                                  " v-model="itemTool.toolDetail"></textarea>
-                              </div>
-                              <div style="
-                                  display: flex;
-                                  flex-direction: row;
-                                  align-items: baseline;
-                                  flex-wrap: nowrap;
-                                  justify-content: flex-start;
-                                  position: relative;
-                                ">
-                                <div style="margin-right: 20px; font-weight: bold"
-                                  :id="'gj' + itemTaskIndex + '' + toolIndex">
-                                  工具 {{ toolIndex + 1 }} :
-                                </div>
-                                <div class="remove" @click="deleteTool(itemTaskIndex, toolIndex)"
-                                  v-if="itemTask.toolChoose.length > 1" style="right: 0"></div>
-                              </div>
-                              <div style="min-height: 163px">
-                                <div class="toolSort">
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 1, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/whiteBoard.png" alt />
-                                      <div style="margin: 5px 0">电子白板</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(1, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(1) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 52, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/text.png" alt />
-                                      <div style="margin: 5px 0">文档</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(52, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(52) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 3, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/mindMapping.png" alt />
-                                      <div style="margin: 5px 0">思维导图</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(3, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(3) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 4, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/ask.png" alt />
-                                      <div style="margin: 5px 0">问卷调查</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(4, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(4) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 45, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/choose.png" alt />
-                                      <div style="margin: 5px 0">选择题</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(45, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(45) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 15, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/answer.png" alt />
-                                      <div style="margin: 5px 0">问答</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(15, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(15) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      addTools(16, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/work.png" alt />
-                                      <div style="margin: 5px 0">作业提交</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(16, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(16) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 50, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/plwork.png" alt />
-                                      <div style="margin: 5px 0">批量上传</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(50, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(50) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 41, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                      <div style="margin: 5px 0">选择匹配</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(41, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(41) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 47, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                      <div style="margin: 5px 0">排序</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(47, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(47) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 48, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/table.png" alt />
-                                      <div style="margin: 5px 0">表格</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(48, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(48) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                            <!-- <div class="addToolFun" style="margin-bottom: 20px" @click="addToolFun(itemTaskIndex)">
-                              <div class="addToolImg">
-                                <img src="../../../assets/icon/add.png" alt />
-                              </div>
-                              <div>添加工具</div>
-                            </div> -->
-                            <button class="c_pub_button_add pub_btn_tool_img" @click="addToolFun(itemTaskIndex)"
-                              style="margin: 35px auto 20px">
-                              添加工具
-                            </button>
-                          </div>
-                        </div>
-                        <div v-else-if="
-                          unitJson[unitIndex].easy == 1 ||
-                          (unitJson[unitIndex].easy == 5 &&
-                            itemTask.taskType == 2)
-                        " class="toolChoose" style="padding: 0 0 40px">
-                          <div class="tools">
-                            <div class="leftTools" style="width: 100%; padding: 0 0 15px 0" v-for="(
-                                itemTool, toolIndex
-                              ) in itemTask.toolChoose" :key="toolIndex">
-                              <div style="min-height: 163px">
-                                <div class="toolSort">
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 50, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/plwork.png" alt />
-                                      <div style="margin: 5px 0">批量上传</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(50, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(50) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="elist_css" v-if="!(unitJson[unitJson.length - 1].easy == 4)"
-                          v-loading="taskDetailLoading4.indexOf('task-' + itemTaskIndex) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                          <div class="elist_title">
-                            <div style="
-                                display: flex;
-                                flex-direction: row;
-                                align-items: center;
-                                margin: 20px 0;
-                              ">
-                              <div class="lineTitle clineTitle">评价设置</div>
-                              <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>
-                          <div class="mbCss">
-                            <div class="pjCss" :style="{
-                              width: itemTask.isEvaFold
-                                ? 'calc(100% - 55%)'
-                                : 'calc(100% - 120px)',
-                            }">
-                              <div v-if="itemTask.eList && itemTask.eList.length" class="elist_input">
-                                <div v-for="(eItem, eIndex) in itemTask.eList" :key="eIndex" class="elist_input_box">
-                                  <div class="elist_inptu_text">
-                                    <span>目标:</span>
-                                    <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写目标"  style="width: 200px;"/>
-                                    <el-switch
-                                      style="margin-left: auto;"
-                                      v-model="itemTask.eList[eIndex].isai"
-                                      active-text="人工评分"
-                                      inactive-text="AI评分"
-                                      active-value="2"
-                                      inactive-value="1">
-                                    </el-switch>
-                                  </div>
-                                  <div class="elist_inptu_text">
-                                    <span>评价维度:</span>
-                                    <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].value || '填写评价维度'" placement="top" popper-class="text_tooltip2"> -->
-                                    <input type="input" v-model="itemTask.eList[eIndex].value" placeholder="填写评价维度" />
-                                    <!-- </el-tooltip> -->
-                                    <!-- <span>评星等级:</span>
-                                    <el-rate v-model="itemTask.eList[eIndex].score" @change="setEListStar()"
-                                      disabled></el-rate> -->
-                                    <div class="remove" @click="
-                                      deletEList(
-                                        unitIndex,
-                                        itemTaskIndex,
-                                        eIndex
-                                      )
-                                      "></div>
-                                  </div>
-                                  <div class="elist_inptu_text">
-                                    <span>维度描述:</span>
-                                    <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].detail || '填写维度描述'" placement="top" popper-class="text_tooltip2"> -->
-                                    <input type="input" v-model="itemTask.eList[eIndex].detail" placeholder="填写维度描述" />
-                                    <!-- </el-tooltip> -->
-                                  </div>
-                                  <div class="elist_inptu_text" v-if="evalua">
-                                    <span>目标:</span>
-                                    <!-- <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写维度描述" /> -->
-                                    <!-- <el-select v-model="itemTask.eList[eIndex].target" placeholder="请选择目标"
-                                @change="forceUpdate()">
-                                <el-option v-for="(e, eIndex) in targetArray" :key="eIndex" :label="e.name"
-                                  :value="e.name">
-                                </el-option>
-                              </el-select> -->
-                                    <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)"
-                                style="margin: 35px 35px 0 0">
-                                <div class="addToolImg">
-                                  <img src="../../../assets/icon/add.png" alt />
-                                </div>
-                                <div>添加</div>
-                              </div> -->
-                              <div class="eva_btn_box">
-                                <div class="eva_btn_left_box">
-                                  <button class="c_pub_button_add pub_btn_eval_img"
-                                    @click="addEList(unitIndex, itemTaskIndex)">
-                                    添加
-                                  </button>
-                                  <button class="c_pub_button_add pub_btn_eval_source_img"
-                                    @click="openEList(unitIndex, itemTaskIndex)">
-                                    资源
-                                  </button>
-                                </div>
-                                <button class="c_pub_button_add" @click="addCET(unitIndex, itemTaskIndex)"
-                                  v-if="itemTask.eList && itemTask.eList.length">
-                                  添加资源模板
-                                </button>
-                              </div>
-                            </div>
-                            <div v-if="evalua" style="
-                                border: 1px solid #e5e5e5;
-                                box-shadow: 3px 1px 15px 3px #e0e0e0;
-                              " :style="{
-                                width: itemTask.isEvaFold ? '55%' : '116px',
-                              }" class="evaCss">
-                              <!-- <div class="e_add_top">
-                              <div class="e_add_title">
-                                <span>当前使用目标管理</span>
-                                <span>{{ eTitle }}</span>
-                                <img src="../../../assets/line.png" class="cru_line" style="
-                                width: 125px;
-                                height: 20px;
-                                bottom: -10px;
-                                left: 155px;
-                              " />
-                              </div>
-                            </div> -->
-                              <div class="e_add_content" style="width: 100%">
-                                <div class="e_add_list_pbox" style="width: 100%">
-                                  <div class="e_add_list_pbox_title">
-                                    <span class="type_title" v-if="itemTask.isEvaFold">切换模式</span>
-                                    <div class="type_content" v-if="itemTask.isEvaFold">
-                                      <span :class="{ active: typeMode == 1 }"
-                                        @click="OtherMb(1, itemTaskIndex)">目标树</span>
-                                      <span :class="{ active: typeMode == 2 }"
-                                        @click="OtherMb(2, itemTaskIndex)">目标罗盘</span>
-                                      <!-- <span :class="{ active: typeMode == 3 }" @click="OtherMb(3)">目标看板</span> -->
-                                    </div>
-                                    <div v-if="itemTask.isEvaFold" class="show_taskD show" style="margin: 0 0 0 auto"
-                                      @click="foldEva(itemTaskIndex)">
-                                      <img src="../../../assets/icon/new/icon-slide.png" />收起目标
-                                    </div>
-                                    <div v-else style="margin: 0 0 0 auto" class="show_taskD"
-                                      @click="foldEva(itemTaskIndex)">
-                                      <img src="../../../assets/icon/new/icon-slide.png" />展开目标
-                                    </div>
-                                  </div>
-                                  <div class="e_add_list_pbox_content" v-if="itemTask.isEvaFold"
-                                    style="min-height: 200px">
-                                    <Mind :showBar="false" :mindData="data" style="width: 100%" :jsmindId="unitIndex + '-' + itemTaskIndex + 'mind'
-                                      " v-if="typeMode == 1"></Mind>
-                                    <Sunburst :Josn="eJson" :num="eJSONNum" style="width: 100%" v-if="typeMode == 2">
-                                    </Sunburst>
-                                    <SeeBoard :Josn="eJson" :num="eJSONNum" :ename="eTitle" style="width: 100%"
-                                      v-if="typeMode == 3"></SeeBoard>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="funBlock" style="padding: 0">
-                          <div class="fold" @click="fold(itemTaskIndex, $event)">
-                            <div class="arrow" :class="{ arrowZ: !(itemTask.isFold === 1) }"></div>
-                            <div>
-                              {{
-                              itemTask.isFold === 1 ? "展开任务" : "收起任务"
-                              }}
-                            </div>
-                          </div>
-                          <!-- <div class="fold" @click="fold(itemTaskIndex, $event, 0)">
-                          <div>展开</div>
-                          <div class="arrow">
-                            <img src="../../../assets/icon/expand.png" alt />
-                          </div>
-                        </div> -->
-                        </div>
-                      </div>
-                    </div>
-                    <div class="addTaskBorder" v-if="!unitJson[unitIndex].easy">
-                      <!-- <div>
-                        <img src="../../../../assets/icon/new/addStage.png" alt />
-                        <span>添加任务</span>
-                      </div> -->
-                      <button class="c_pub_button_confirm pub_btn_add_task_img" @click="addTaskBorder">
-                        添加任务
-                      </button>
-                    </div>
-                  </div>
-                  <div class="info_btnBox3">
-                    <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
-                      goTo(
-                        '/course?userid=' +
-                        userid +
-                        '&oid=' +
-                        oid +
-                        '&org=' +
-                        org +
-                        '&role=' +
-                        role
-                      )
-                      ">
-                      返回课程
-                    </button>
-                    <button class="c_pub_button_return pub_btn_last_img"
-                      v-if="steps > 1 && steps != 5 && istemplate != 1" @click="lastSteps" style="background: #dbdbdb">
-                      {{ steps == 4 ? "返回课程" : "上一步" }}
-                    </button>
-                    <button class="c_pub_button_confirm" v-if="steps < 4 && istemplate != 1" @click="nextSteps" :class="{
-                      pub_btn_next_img: steps != 3,
-                      pub_btn_finish_img: steps == 3,
-                    }">
-                      {{ steps == 3 ? "确认上传" : "下一步" }}
-                    </button>
-                    <button class="c_pub_button_confirm" v-if="istemplate == 1" @click="openSaveTips">{{ templateid ?
-                      '修改模板' : '保存模板'}}</button>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div style="
-              width: calc(100% - 20px);
-              background: rgb(255, 255, 255);
-              border-radius: 10px;
-            " v-if="steps == 4">
-            <div class="basic_box_success">
-              <div class="right_img">
-                <img src="../../../assets/icon/right.png" alt />
-              </div>
-              <div style="font-weight: bold">成功</div>
-              <!-- <div>您的课程编号</div>
-              <div class="number">{{ number }}</div>-->
-              <!-- <div class="success_button">
-                <div class="look_course" @click="isNoFinsh">
-                  邀请老师协同编辑
-                </div>
-                <div class="attend_others" @click="goCourse">预览课程</div>
-              </div> -->
-            </div>
-          </div>
-          <div :class="{ info_btnBox: isBtnDisplay, info_btnBox2: !isBtnDisplay }" @mouseenter="btnDisplay(true)"
-            @mouseleave="btnDisplay(false)" v-if="false">
-            <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1 && isBtnDisplay" @click="
-              goTo(
-                '/course?userid=' +
-                userid +
-                '&oid=' +
-                oid +
-                '&org=' +
-                org +
-                '&role=' +
-                role
-              )
-              ">
-              返回课程
-            </button>
-            <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5 && isBtnDisplay"
-              @click="lastSteps">
-              {{ steps == 4 ? "返回课程" : "上一步" }}
-            </button>
-            <button class="c_pub_button_confirm" v-if="steps < 4 && isBtnDisplay" @click="nextSteps" :class="{
-              pub_btn_next_img: steps != 3,
-              pub_btn_finish_img: steps == 3,
-            }">
-              {{ steps == 3 ? "确认上传" : "下一步" }}
-            </button>
-          </div>
-        </div>
-      </div>
-      <div class="leftBar" v-if="istemplate == 1">
-        <aiTips ttitle="基础资料" title="提取摘要" :detail="aiJson.aiAbstract" pan="aiAbstract" @setAiJson="setAiJson" v-if="!yiKeTemplateArray.includes(templateid)"/>
-        <aiTips ttitle="基础资料" title="提取目标" :detail="aiJson.aiTarget" pan="aiTarget" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
-        <aiTips ttitle="基础资料" title="智能检索资料" :detail="aiJson.aiSearchFile" pan="aiSearchFile" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
-        <aiTips ttitle="基础资料" title="课程描述优化" :detail="aiJson.aiDetail" pan="aiDetail" @setAiJson="setAiJson" />
-        <aiTips ttitle="基础资料" title="生成目标" :detail="aiJson.aiTarget2" pan="aiTarget2" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
-        <aiTips ttitle="基础资料" title="生成大纲按钮" :detail="aiJson.aiOutline" pan="aiOutline" @setAiJson="setAiJson" v-if="templateid != '61c628b9-3d96-11ef-b873-005056b86db5' && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <aiTips ttitle="课程大纲" title="大纲任务生成" :detail="aiJson.aiOutlineTask" pan="aiOutlineTask" @setAiJson="setAiJson" v-if="templateid == '61c628b9-3d96-11ef-b873-005056b86db5'"/>
-        <aiTips ttitle="课程大纲" title="大纲描述生成(重新生成任务)" :detail="aiJson.aiOutlineDetail2" pan="aiOutlineDetail2" @setAiJson="setAiJson"/>
-        <aiTips ttitle="课程大纲" title="大纲描述优化" :detail="aiJson.aiDetail1" pan="aiDetail1" @setAiJson="setAiJson"  v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <aiTips ttitle="cpote" title="概念群" :detail="aiJson.cpote1" pan="cpote1" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <aiTips ttitle="cpote" title="问题链" :detail="aiJson.cpote2" pan="cpote2" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <aiTips ttitle="cpote" title="目标层" :detail="aiJson.cpote3" pan="cpote3" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <aiTips ttitle="cpote" title="任务簇" :detail="aiJson.cpote4" pan="cpote4" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <aiTips ttitle="cpote" title="生成任务" :detail="aiJson.aiCpoteTask" pan="aiCpoteTask" @setAiJson="setAiJson"  v-if="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
-        <!-- <aiTips ttitle="课程大纲" title="生成教案按钮" :detail="aiJson.aiTeacher" pan="aiTeacher" @setAiJson="setAiJson" /> -->
-        <!-- <aiTips ttitle="生成教案" title="教案描述优化" :detail="aiJson.teacherDetail" pan="teacherDetail"
-          @setAiJson="setAiJson" /> -->
-        <aiTips ttitle="生成教案" title="教案描述优化" :detail="aiJson.teacherDetail2" pan="teacherDetail2"
-          @setAiJson="setAiJson" />
-        <aiTips ttitle="生成教案" title="生成任务按钮" :detail="aiJson.aiTask" pan="aiTask" @setAiJson="setAiJson" />
-        <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"
-      class="dialog_diy2 customWidth">
-      <div>请复制该链接邀请协同编辑</div>
-      <div>http://www.boomyon.com/index-zhang.com</div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary">复制链接分享</el-button>
-        <el-button @click="dialogVisible = false">取消</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog :title="updateBoolean2 ? '查看文档' : '添加文档'" :visible.sync="dialogVisible1" :append-to-body="true"
-      width="25%" :before-close="handleClose" class="dialog_diy2 customWidth">
-      <el-form>
-        <el-form-item label="文档标题">
-          <el-input v-model="tTitle" auto-complete="off" placeholder="请输入文档标题名..."></el-input>
-        </el-form-item>
-        <div>文档简介</div>
-        <editor-bar v-model="tdetail" @change="change"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible1 = false">取 消</el-button>
-        <el-button type="primary" @click="addWord" v-if="!updateBoolean2">添加</el-button>
-        <el-button type="primary" @click="upWord" v-else>修 改</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加文档" :visible.sync="dialogVisible2" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <el-form-item label="文档标题">
-          <el-input v-model="templateC.title" auto-complete="off" placeholder="请输入文档标题名..."></el-input>
-        </el-form-item>
-        <div>文档内容</div>
-        <editor-bar v-model="cTemplate" @change="change"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="clearChoose">取 消</el-button>
-        <el-button type="primary" @click="wordNext()">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加富文本" :visible.sync="dialogVisible6" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <el-form-item label="文本标题">
-          <el-input ref="fuInput" v-model="AttText.title" auto-complete="off" @input="change2"
-            placeholder="请输入文本标题..."></el-input>
-        </el-form-item>
-        <!-- <div>富文本内容</div> -->
-        <editor-bar v-model="AttText.text" @change="change" v-if="dialogVisible6"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="clearAttText">取 消</el-button>
-        <el-button type="primary" @click="isAddOrUpdateAttText">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加链接" :visible.sync="dialogVisible7" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy lineCss">
-      <el-form>
-        <el-form-item label="标题" :label-width="formLabelWidth">
-          <span>
-            <el-input placeholder="请输入链接标题" clearable v-model="lineTitle" class="add_input"></el-input>
-          </span>
-        </el-form-item>
-        <el-form-item label="链接" :label-width="formLabelWidth">
-          <span>
-            <el-input placeholder="请输入链接" clearable v-model="line" class="add_input"></el-input>
-          </span>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="clearLine">取 消</el-button>
-        <el-button type="primary" @click="isAddOrUpdateLine">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog :title="updateSourcePan ? '修改资源' : '添加资源'" :visible.sync="dialogVisibleSource" :append-to-body="true"
-      width="100%" :before-close="handleClose" class="dialog_diy source_diy">
-      <div>
-        <sourceDialog :sourceData.sync="sourceData" :updateSourcePan="updateSourcePan"></sourceDialog>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleSource = false">取 消</el-button>
-        <el-button type="primary" @click="addSource" v-if="!updateSourcePan">确定</el-button>
-        <el-button type="primary" @click="updateSource" v-else>确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加课程成员" :visible.sync="dialogVisible3" :append-to-body="true" width="25%" height="80%"
-      :before-close="handleClose" class="addNewPP customWidth">
-      <div class="people">
-        <div class="people_top">
-          <div class="people_nav">选择成员</div>
-          <div class="people_top_right">
-            <div class="people_search">
-              <el-input style="height: 100%" placeholder="搜索成员名称" v-model="searchPeople"></el-input>
-              <div class="search_img" @click="searchStudent">
-                <img src="../../../assets/icon/search.png" alt />
-              </div>
-            </div>
-          </div>
-        </div>
-        <el-checkbox-group v-model="checkboxList" class="people_name">
-          <el-checkbox v-for="item in studentJuri" :key="item.userid" :label="item.userid">{{ item.name ? item.name :
-            "暂无学生可选" }}</el-checkbox>
-        </el-checkbox-group>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible3 = false">取 消</el-button>
-        <el-button type="primary" @click="isAddPP">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="选择授课班级" :visible.sync="dialogVisibleClass" :append-to-body="true" width="600px" height="80%"
-      :before-close="handleClose" class="addNewPP2">
-      <div class="check_classBox">
-        <div class="check_class_right">
-          <div class="check_class" :class="{ activeX: gradeId == '' }" @click="(gradeId = ''), getClass()">
-            全部
-          </div>
-          <el-tooltip placement="top" :content="item.name" v-for="(item, index) in gradeList" :key="index">
-            <div class="check_class" :class="{ activeX: gradeId == item.id }" @click="(gradeId = item.id), getClass()">
-              {{ item.name }}
-            </div>
-          </el-tooltip>
-        </div>
-        <div class="check_class_left">
-          <div class="check_class_all_box">
-            <div class="check_class_left_title">选择班级</div>
-            <div style="display: flex; align-items: center; margin-left: auto">
-              <el-checkbox v-model="checkAll" @change="handleCheckAllChange" class="all_check">全选</el-checkbox>
-            </div>
-          </div>
-          <!-- <div class="class_item" style="position:absolute; margin:0" v-if="grade2.length">            
-            <el-checkbox v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
-          </div> -->
-          <el-checkbox-group v-model="checkboxList2" class="check_class_item" @change="InviteChange"
-            v-if="grade2.length">
-            <div v-for="item in grade2" :key="item.id" class="class_item">
-              <el-checkbox :label="item.id">
-                {{ item.name }}
-              </el-checkbox>
-            </div>
-          </el-checkbox-group>
-          <div v-if="!grade2.length">暂无数据</div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleClass = false">取 消</el-button>
-        <el-button type="primary" @click="isAddClass">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加协同成员" :visible.sync="dialogVisibleMember" :append-to-body="true" width="25%" height="80%"
-      :before-close="handleClose" class="addNewPP customWidth">
-      <div style="display: flex;justify-content: space-between;">
-        <div style="width: 100px;overflow: auto;overflow-x: hidden; height: 350px;flex-shrink:0;padding-right: 10px;">
-          <div class="CollaborativeCss" :class="{CollaborativeCss2:collid == ''}" @click="getTeacher('')">
-            全部
-          </div>
-          <div class="CollaborativeCss" :class="{CollaborativeCss2:i.id == collid}" @click="getTeacher(i.id)"
-            v-for="(i) in CollaborativeTeaList" :key="i.id">
-            <el-tooltip placement="top" :content="i.name">
-              <span>{{i.name}}</span>
-            </el-tooltip>
-          </div>
-          <div class="CollaborativeCss" :class="{CollaborativeCss2:collid == '1xpz'}" @click="getTeacherCopy()">
-            其他
-          </div>
-        </div>
-        <div style="width: calc(100% - 100px);" v-loading="CollLoading">
-          <div class="people">
-            <div class="people_top">
-              <div class="people_top_right">
-                <div class="people_search">
-                  <el-input placeholder="搜索成员名称" v-model="searchTN" @keyup.enter.native="getTeacher(collid)"></el-input>
-                  <div class="search_img" @click="getTeacher(collid)">
-                    <img src="../../../assets/icon/search.png" alt />
-                  </div>
-                </div>
-              </div>
-              <div class="people_nav" style="display: flex; align-items: center">
-                <div class="check_class_left_title">选择成员</div>
-                <div style="display: flex; align-items: center; margin-left: auto">
-                  <el-checkbox v-model="checkAll2" @change="handleCheckAllChange2" class="all_check">全选</el-checkbox>
-                </div>
-              </div>
-            </div>
-            <el-checkbox-group v-model="checkboxList3" class="people_name" v-if="teacherJuri.length"
-              @change="InviteChange2">
-              <el-checkbox v-for="item in teacherJuri" :key="item.userid" :label="item.userid">
-                <div class="t_j_box">
-                  <el-tooltip placement="top" :content="item.name ? item.name : '暂无姓名'">
-                    <span>{{ item.name ? item.name : "暂无姓名" }}</span>
-                  </el-tooltip>
-                  <el-tooltip placement="top" :content="item.username.split('@')[0]">
-                    <span>{{ item.username.split('@')[0] }}</span>
-                  </el-tooltip>
-                  <el-tooltip placement="top" :content="item.school">
-                    <span>{{ item.school }}</span>
-                  </el-tooltip>
-                </div>
-              </el-checkbox>
-            </el-checkbox-group>
-            <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
-          </div>
-        </div>
-      </div>
-
-
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMember = false">取 消</el-button>
-        <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="创建问卷" :visible.sync="dialogVisible5" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(4);
-    }
-      " class="dialog_diy fullStyle">
-      <div style="height: 100%">
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <!-- <div style="margin-right: 20px; font-size: 20px">标题:</div> -->
-          <el-input v-model="askJson.askTitle" placeholder="请输入标题" style="width: 400px"></el-input>
-        </div>
-        <div class="a_addBox" style="height: calc(100% - 50px)">
-          <!-- <div style="font-size: 16px; color: #c7c7c7">请输入题目内容</div> -->
-          <div class="a_add_box" v-for="(item1, index1) in askJson.askCount" :key="index1">
-            <div class="a_add_checkType">
-              <span :class="{
-                active:
-                  askJson.askJson[index1].type == '1' ||
-                  !askJson.askJson[index1].type,
-              }" @click="checkAskType('1', askJson.askJson[index1])">单选题</span>
-              <span :class="{ active: askJson.askJson[index1].type == '2' }"
-                @click="checkAskType('2', askJson.askJson[index1])">多选题</span>
-            </div>
-            <div class="a_add_head">
-              <div style="
-                  display: flex;
-                  align-items: center;
-                  width: 100%;
-                  margin-right: 20px;
-                ">
-                <span style="min-width: fit-content">{{
-                  index1 + 1 + "、"
-                  }}</span>
-                <textarea class="a_add_head_input textarea_css" v-autoHeight="40"
-                  v-model="askJson.askJson[index1].askstitle" placeholder="请输入题目" @change="() => {
-                    $forceUpdate();
-                  }
-                    "></textarea>
-              </div>
-              <div class="moveBtn moveBtn2" style="margin: 0 20px 0 0px" v-if="askJson.askCount != 1">
-                <div class="chapter_upload_up" @click.stop="askMove(1, index1)"></div>
-                <div class="chapter_upload_down" @click.stop="askMove(2, index1)"></div>
-              </div>
-              <div class="a_add_head_div">
-                <el-button type="primary" size="small" @click="deleteAskList(index1)" v-if="askJson.askCount != 1">删除
-                </el-button>
-                <el-button type="primary" size="small" @click="addAskList(index1)">添加</el-button>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input" style="flex-direction: column">
-                <div v-for="(item2, checkIndex) in askJson.askJson[index1].askItem" :key="checkIndex" style="
-                    margin: 20px 10px 0 0;
-                    display: flex;
-                    align-items: center;
-                    position: relative;
-                  ">
-                  <div style="margin-right: 10px">选项{{ checkIndex + 1 }}</div>
-                  <textarea class="a_add_head_input textarea_css" v-autoHeight="40"
-                    v-model="askJson.askJson[index1].checkList[checkIndex]" placeholder="请输入选项" style="width: 300px"
-                    @change="() => {
-                      $forceUpdate();
-                    }
-                      "></textarea>
-                  <div class="moveBtn moveBtn2" style="margin: 0 0px 0 20px"
-                    v-if="askJson.askJson[index1].askItem != 1">
-                    <div class="chapter_upload_up" @click.stop="checkMove(1, index1, checkIndex)"></div>
-                    <div class="chapter_upload_down" @click.stop="checkMove(2, index1, checkIndex)"></div>
-                  </div>
-                  <div class="a_add_body_div">
-                    <el-button type="primary" size="small"
-                      @click="addcheckList(askJson.askJson[index1], checkIndex)">添加</el-button>
-                    <el-button type="primary" size="small" @click="
-                      deletecheckList(askJson.askJson[index1], checkIndex)
-                      " v-if="askJson.askJson[index1].askItem != 1">删除
-                    </el-button>
-                  </div>
-                </div>
-              </div>
-              <!-- <div class="a_add_body_div">
-                <el-button style="margin: 10px 0px 0 0" type="primary" size="small"
-                  @click="addcheckList(askJson.askJson[index1])">添加</el-button>
-                <el-button type="primary" size="small" style="margin: 10px 0 0 10px"
-                  @click="deletecheckList(askJson.askJson[index1])" v-if="askJson.askJson[index1].askItem != 1">删除
-                </el-button>
-              </div> -->
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(4)">取 消</el-button>
-        <el-button type="primary" @click="addAsk">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="创建选择题" :visible.sync="dialogVisibleChoice" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(45);
-    }
-      " class="dialog_diy fullStyle">
-      <div style="height: 100%" v-loading="choiceLoading"  element-loading-text="小可正在努力生成中,请稍等...">
-        <!-- <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <div style="margin-right: 20px; font-size: 20px">标题:</div>
-          <el-input v-model="testJson.testTitle" placeholder="请输入标题" style="width: 400px"></el-input>
-        </div> -->
-        <div class="a_addBox" style="height: 100%">
-          <div style="
-              font-size: 16px;
-              color: #c7c7c7;
-              display: flex;
-              align-items: center;
-              justify-content: flex-end;
-            ">
-            <!-- 请输入题目内容 -->
-            <button class="c_pub_button_add pub_btn_paste_img" @click="aiChoice(45)" style="margin-left: 10px">
-              智能生成
-            </button>
-            <!-- 请输入题目内容 -->
-            <button class="c_pub_button_add pub_btn_paste_img" @click="pasteOption" style="margin-left: 10px"
-              v-if="isPasteChoice">
-              智能粘贴
-            </button>
-          </div>
-          <div class="a_add_box" v-for="(item1, index1) in testJson.testCount" :key="index1">
-            <div class="a_add_checkType">
-              <span :class="{ active: testJson.testJson[index1].type == '1' }"
-                @click="checkTestType('1', testJson.testJson[index1])">单选题</span>
-              <span :class="{ active: testJson.testJson[index1].type == '2' }"
-                @click="checkTestType('2', testJson.testJson[index1])">多选题</span>
-            </div>
-            <div class="a_add_head">
-              <div class="timuUpImg">
-                <div style="display: flex; align-items: center">
-                  <span style="min-width: fit-content">{{
-                    index1 + 1 + "、"
-                    }}</span>
-                  <!-- <el-input class="a_add_head_input"  v-autoHeight="40" resize="none" v-model="testJson.testJson[index1].teststitle" type="textarea"
-                    placeholder="请输入题目">
-                  </el-input> -->
-                  <textarea class="a_add_head_input textarea_css" v-autoHeight="40"
-                    v-model="testJson.testJson[index1].teststitle" placeholder="请输入题目" @change="() => {
-                      $forceUpdate();
-                    }
-                      "></textarea>
-                </div>
-                <div class="moveBtn moveBtn2" v-if="testJson.testCount != 1">
-                  <div class="chapter_upload_up" @click.stop="testMove(1, index1)"></div>
-                  <div class="chapter_upload_down" @click.stop="testMove(2, index1)"></div>
-                </div>
-                <div class="xzUpImg" @click.stop="addImg($event)" style="margin-right: 10px">
-                  <img src="../../../assets/icon/xzUpImg.png" alt="" />
-                  <input type="file" accept="image/*" style="display: none"
-                    @change="beforeUploadTiMu($event, index1)" />
-                </div>
-              </div>
-              <div class="a_add_head_div">
-                <el-button type="primary" size="small" @click="deleteTestList(index1)" v-if="testJson.testCount != 1">删除
-                </el-button>
-                <el-button type="primary" size="small" @click="addTestList(index1)">添加</el-button>
-              </div>
-            </div>
-            <div class="timuImgBox" v-if="
-              testJson.testJson[index1].timuList &&
-              testJson.testJson[index1].timuList.length
-            ">
-              <div v-for="(timg, tIndex) in testJson.testJson[index1].timuList" :key="tIndex" class="timuImg"
-                @click.stop="previewImg(timg.src)">
-                <img :src="timg.src" alt="" />
-                <div class="deleteWord" @click.stop="deleteM(index1, tIndex)">
-                  <img src="../../../assets/icon/delete.png" alt="" />
-                </div>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input a_add_input_choice">
-                <el-radio-group v-model="testJson.testJson[index1].answer" v-if="testJson.testJson[index1].type == 1"
-                  @change="() => {
-                    $forceUpdate();
-                  }
-                    ">
-                  <div class="radioBox">
-                    <el-radio v-for="(item2, checkIndex) in testJson.testJson[index1]
-                      .testItem" :key="checkIndex" :label="checkIndex">
-                      <div style="margin-right: 10px">
-                        选项{{ checkIndex + 1 }}
-                      </div>
-                      <div style="margin-right: 10px; width: 300px" v-if="
-                        testJson.testJson[index1].checkList[checkIndex] &&
-                        testJson.testJson[index1].checkList[checkIndex]
-                          .imgType &&
-                        testJson.testJson[index1].checkList[checkIndex]
-                          .imgType == 1
-                      ">
-                        <div class="inImg" @click.stop="
-                          previewImg(
-                            testJson.testJson[index1].checkList[checkIndex]
-                              .src
-                          )
-                          ">
-                          <el-image :src="testJson.testJson[index1].checkList[checkIndex]
-                            .src
-                            " lazy />
-                          <!-- <img :src="
-                            testJson.testJson[index1].checkList[checkIndex]
-                              .src
-                          " alt="" /> -->
-                        </div>
-                      </div>
-
-                      <textarea class="a_add_head_input textarea_css" v-autoHeight="40" v-else v-model="testJson.testJson[index1].checkList[checkIndex]
-                        " placeholder="请输入选项" style="width: 300px; margin-right: 10px" @change="() => {
-                          $forceUpdate();
-                        }
-                          "></textarea>
-                      <div class="xzUpImg" @click.stop="addImg($event)">
-                        <img src="../../../assets/icon/xzUpImg.png" alt="" />
-                        <input type="file" accept="image/*" style="display: none"
-                          @change="beforeUploadTi($event, index1, checkIndex)" />
-                      </div>
-                      <div class="moveBtn moveBtn2" v-if="testJson.testJson[index1].testItem != 1">
-                        <div class="chapter_upload_up" @click.stop="tcheckMove(1, index1, checkIndex)"></div>
-                        <div class="chapter_upload_down" @click.stop="tcheckMove(2, index1, checkIndex)"></div>
-                      </div>
-                      <div class="a_add_body_div">
-                        <el-button type="primary" size="small" @click.stop="
-                          addTcheckList(testJson.testJson[index1], checkIndex)
-                          ">添加</el-button>
-                        <el-button type="primary" size="small" @click.stop="
-                          deleteTcheckList(
-                            testJson.testJson[index1],
-                            checkIndex
-                          )
-                          " v-if="testJson.testJson[index1].testItem != 1">删除
-                        </el-button>
-                      </div>
-                    </el-radio>
-                  </div>
-                </el-radio-group>
-                <el-checkbox-group v-model="testJson.testJson[index1].answer"
-                  v-if="testJson.testJson[index1].type == '2'" @change="() => {
-                    $forceUpdate();
-                  }
-                    ">
-                  <div class="radioBox">
-                    <el-checkbox v-for="(item2, checkIndex1) in testJson.testJson[index1]
-                      .testItem" :key="checkIndex1" :label="checkIndex1">
-                      <div style="margin-right: 10px">
-                        选项{{ checkIndex1 + 1 }}
-                      </div>
-                      <div style="margin-right: 10px; width: 300px" v-if="
-                        testJson.testJson[index1].checkList[checkIndex1] &&
-                        testJson.testJson[index1].checkList[checkIndex1]
-                          .imgType &&
-                        testJson.testJson[index1].checkList[checkIndex1]
-                          .imgType == 1
-                      ">
-                        <div class="inImg" @click.stop="
-                          previewImg(
-                            testJson.testJson[index1].checkList[checkIndex1]
-                              .src
-                          )
-                          ">
-                          <el-image :src="testJson.testJson[index1].checkList[checkIndex1]
-                            .src
-                            " lazy />
-                          <!-- <img :src="
-                            testJson.testJson[index1].checkList[checkIndex1]
-                              .src
-                          " alt="" /> -->
-                        </div>
-                      </div>
-
-                      <textarea class="a_add_head_input textarea_css" v-autoHeight="40" v-else v-model="testJson.testJson[index1].checkList[checkIndex1]
-                        " placeholder="请输入选项" style="width: 300px; margin-right: 10px" @change="() => {
-                          $forceUpdate();
-                        }
-                          "></textarea>
-                      <div class="xzUpImg" @click.stop="addImg($event)">
-                        <img src="../../../assets/icon/xzUpImg.png" alt="" />
-                        <input type="file" accept="image/*" style="display: none"
-                          @change="beforeUploadTi($event, index1, checkIndex1)" />
-                      </div>
-                      <div class="moveBtn moveBtn2" v-if="testJson.testJson[index1].testItem != 1">
-                        <div class="chapter_upload_up" @click.stop="tcheckMove(1, index1, checkIndex1)"></div>
-                        <div class="chapter_upload_down" @click.stop="tcheckMove(2, index1, checkIndex1)"></div>
-                      </div>
-                      <div class="a_add_body_div">
-                        <el-button type="primary" size="small" @click.stop="
-                          addTcheckList(
-                            testJson.testJson[index1],
-                            checkIndex1
-                          )
-                          ">添加</el-button>
-                        <el-button type="primary" size="small" @click.stop="
-                          deleteTcheckList(
-                            testJson.testJson[index1],
-                            checkIndex1
-                          )
-                          " v-if="testJson.testJson[index1].testItem != 1">删除
-                        </el-button>
-                      </div>
-                    </el-checkbox>
-                  </div>
-                </el-checkbox-group>
-              </div>
-              <!-- <div class="a_add_body_div">
-                <el-button type="primary" size="small" @click="addTcheckList(testJson.testJson[index1])">添加</el-button>
-                <el-button type="primary" size="small" @click="deleteTcheckList(testJson.testJson[index1])"
-                  v-if="testJson.testJson[index1].testItem != 1">删除
-                </el-button>
-              </div> -->
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(45)">取 消</el-button>
-        <el-button type="primary" @click="addTest">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加工具" :visible.sync="dialogVisible4" :append-to-body="true" width="600px"
-      :before-close="handleClose" class="dialog_diy addToolsDia">
-      <div class="toolChoose">
-        <div class="tools">
-          <div class="leftTools" style="width: 100%; padding: 0 0 15px 0"
-            v-for="(itemTools, itemToolsIndex) in chapTools" :key="itemToolsIndex">
-            <div style="
-                display: flex;
-                flex-direction: row;
-                align-items: baseline;
-                flex-wrap: nowrap;
-                justify-content: flex-start;
-                position: relative;
-              ">
-              <div class="chooseWho">
-                <div :class="chapToolsType == 0 ? 'isChooseActive' : ''" @click="chapToolsType = 0">
-                  互动类
-                </div>
-                <div :class="chapToolsType == 1 ? 'isChooseActive' : ''" @click="chapToolsType = 1">
-                  思维类
-                </div>
-                <div :class="chapToolsType == 2 ? 'isChooseActive' : ''" @click="chapToolsType = 2">
-                  评价类
-                </div>
-                <div :class="chapToolsType == 2 ? 'isChooseActive' : ''" @click="chapToolsType = 2">
-                  其他
-                </div>
-              </div>
-            </div>
-
-            <div style="min-height: 163px">
-              <div class="toolSort" v-if="chapToolsType == 0">
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(8) != -1 }" @click="chapAddTools(8)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(8)">
-                    <img src="../../../assets/icon/secondToolList/library.png" alt />
-                    <div style="margin: 5px 0">素材库</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(8) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(8)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(8) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-              </div>
-              <div class="toolSort" v-if="chapToolsType == 1">
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(7) != -1 }" @click="chapAddTools(7)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(7)">
-                    <img src="../../../assets/icon/secondToolList/mindNetwork.png" alt />
-                    <div style="margin: 5px 0">思维网格</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(7) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(7)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(7) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(1) != -1 }" @click="chapAddTools(1)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(1)">
-                    <img src="../../../assets/icon/secondToolList/whiteBoard.png" alt />
-                    <div style="margin: 5px 0">电子白板</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(1) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(1)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(1) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(2) != -1 }" @click="chapAddTools(2)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(2)">
-                    <img src="../../../assets/icon/secondToolList/note.png" alt />
-                    <div style="margin: 5px 0">便签</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(2) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(2)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(2) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(6) != -1 }" @click="chapAddTools(6)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(6)">
-                    <img src="../../../assets/icon/secondToolList/doc.png" alt />
-                    <div style="margin: 5px 0">协同文档</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(6) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(6)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(6) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(3) != -1 }" @click="chapAddTools(3)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(3)">
-                    <img src="../../../assets/icon/secondToolList/mindMapping.png" alt />
-                    <div style="margin: 5px 0">思维导图</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(3) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(3)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(3) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(31) != -1 }"
-                  @click="chapAddTools(31)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(31)">
-                    <img src="../../../assets/icon/secondToolList/networkPanel.png" alt />
-                    <div style="margin: 5px 0">数学画板</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(31) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(31)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(31) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-              </div>
-              <div class="toolSort" v-if="chapToolsType == 2">
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(5) != -1 }" @click="chapAddTools(5)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(5)">
-                    <img src="../../../assets/icon/thirdToolList/score.png" alt />
-                    <div style="margin: 5px 0">量规评分</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(5) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(5)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(5) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(4) != -1 }" @click="chapAddTools(4)">
-                  <div class="whiteBIcon" @click.stop="openTools(chapCount, 4, null)">
-                    <img src="../../../assets/icon/thirdToolList/ask.png" alt />
-                    <div style="margin: 5px 0">问卷调查</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(4) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(4)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(4) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-              </div>
-            </div>
-            <div>
-              <input type="text" placeholder="添加工具描述" class="binfo_input" style="margin: 20px 0; width: 100% !important"
-                v-model="itemTools.toolDetail" />
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible4 = false">取 消</el-button>
-        <el-button type="primary" @click="addChaptersDataTools">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加问答" :visible.sync="dialogVisible8" :append-to-body="true" width="500px" :before-close="(done) => {
-      closePan(15);
-    }
-      " class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: column;
-            align-items: flex-start;
-            justify-content: center;
-          ">
-          <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
-          <!-- <el-input v-model="answerQ" placeholder="请输入您要问的问题"></el-input> -->
-          <textarea rows="1" v-autoHeight="40" type="text" placeholder="请输入您要问的问题" class="binfo_input"
-            style="width: 100% !important; border: 1px solid #dcdfe6" v-model="answerQ"></textarea>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(15)">取 消</el-button>
-        <el-button type="primary" @click="addAnswer">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加问题" :visible.sync="dialogVisibleMp3" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: column;
-            align-items: flex-start;
-            justify-content: center;
-          ">
-          <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
-          <el-input v-model="answerQ" placeholder="请输入您想要回答的问题"></el-input>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMp3 = false">取 消</el-button>
-        <el-button type="primary" @click="addMp3Answer">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="上传图片" :visible.sync="choosePicVisible" :append-to-body="true" width="600px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="fileCss" style="padding-top: 20px">
-          <div>
-            <button class="info_btn" @click="addImg($event)">
-              选择本地文件
-              <input type="file" accept="image/*" style="display: none" @change="beforeUpload1" />
-            </button>
-            <div class="spanName">选择本地文件</div>
-          </div>
-          <!-- <div>
-            <el-button @click="getAllBanner" v-if="isSysPic == false">选择系统文件</el-button>
-            <div class="isSysPic" v-if="isSysPic == true && cover.length > 0">
-              <img :src="cover[0].url" alt="" />
-              <div class="deletePic" @click="deleteSysPic">
-                <img src="../../../assets/icon/delete.png" alt="" />
-              </div>
-            </div>
-            <div class="spanName">选择系统文件</div>
-          </div> -->
-          <div>
-            <el-button @click="(searchImageValue = courseName), resetImage()"
-              v-if="isSysPic2 == false">选择网络文件</el-button>
-            <div class="isSysPic" v-if="isSysPic2 == true && cover.length > 0">
-              <img :src="cover[0].url" alt="" />
-              <div class="deletePic" @click="deleteSysPic">
-                <img src="../../../assets/icon/delete.png" alt="" />
-              </div>
-            </div>
-            <div class="spanName">选择网络文件</div>
-          </div>
-        </div>
-        <!-- <div class="fileCss">
-        </div> -->
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="choosePicVisible = false">取 消</el-button>
-        <el-button type="primary" @click="choosePicVisible = false">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="选择系统文件" :visible.sync="sysPicVisible" :append-to-body="true" width="710px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="cru_selectBox" style="margin: 0">
-        <div @click="getChoosePic(1)" class="cru_select" :class="chooseType == 1 ? 'cru_selected' : ''">
-          绘画
-        </div>
-        <div @click="getChoosePic(2)" class="cru_select" :class="chooseType == 2 ? 'cru_selected' : ''">
-          科技
-        </div>
-        <div @click="getChoosePic(3)" class="cru_select" :class="chooseType == 3 ? 'cru_selected' : ''">
-          人文
-        </div>
-        <div @click="getChoosePic(4)" class="cru_select" :class="chooseType == 4 ? 'cru_selected' : ''">
-          艺术
-        </div>
-      </div>
-      <div class="sysPicBox">
-        <div v-for="(sys, sysIndex) in sysPic" :key="sysIndex" class="sysPic">
-          <img :src="sys.poster" alt="" @click="chooseSysPic(sys.poster)" />
-        </div>
-      </div>
-    </el-dialog>
-    <el-dialog title="选择网络文件" :visible.sync="sysPicVisible2" :append-to-body="true" width="710px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="people_top_right" style="display: flex; align-items: center">
-          <div style="position: relative; width: 100%">
-            <el-input style="height: 100%" placeholder="搜索图片关键字" v-model="searchImageValue"
-              @keyup.enter.native="resetImage()"></el-input>
-            <div class="search_img" @click="resetImage" style="right: 10px">
-              <img src="../../../assets/icon/search.png" alt />
-            </div>
-          </div>
-          <el-button type="primary" size="default" style="margin-left: 10px" @click="changePicture">换一组</el-button>
-        </div>
-        <div class="sysPicBox" v-loading="imageloading">
-          <div class="picNone" v-if="!imageList.length">
-            请输入关键词搜索图片
-          </div>
-          <div v-for="(sys, sysIndex) in imageList" :key="sysIndex" class="sysPic">
-            <img :src="sys.url" alt="" @click="chooseSysPic2(sys.url)" />
-          </div>
-        </div>
-      </div>
-    </el-dialog>
-    <el-dialog title="选择匹配" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(41);
-    }
-      " class="dialog_diy dialog_diy3 fullStyle">
-      <div v-if="selectJson" style="height: 100%">
-        <div class="select_box1" v-if="selectSteps == 1">
-          <div class="select_box1_img">
-            <div class="select_box1_title">
-              <span>上传题目图片</span><span>提示:请将所有题目上传为一张图片。</span>
-            </div>
-            <div class="select_box1_add_img">
-              <div class="uploadFm" @click="addImg($event)" v-if="!selectJson.url">
-                <input type="file" accept="image/*" style="display: none" @change="beforeUploadSelect" />
-                <img src="../../../assets/icon/addPoster.png" alt="" />
-              </div>
-              <div class="isSysPic" v-else>
-                <img :src="selectJson.url" alt="" @click="previewImg(selectJson.url)" />
-                <div class="deletePic" @click="deleteSelectPic">
-                  <img src="../../../assets/icon/delete.png" alt="" />
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="select_box1_select">
-            <div class="select_box1_title">
-              <span>添加选项</span><span>提示:请输入以上题目的选项内容,此选项为所有题目共享。</span>
-            </div>
-            <div class="select_box1_select_box">
-              <el-input v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex"
-                v-model="selectJson.select[checkIndex]" placeholder="请输入选项"
-                style="width: 150px; margin: 10px 10px 0 0"></el-input>
-              <div class="select_box1_select_box_add">
-                <el-button style="margin: 10px 0px 0 0" type="primary" size="small" @click="addSelectList(selectJson)">
-                  添加</el-button>
-                <el-button type="primary" size="small" style="margin: 10px 0 0 0" @click="deleteSelectList(selectJson)"
-                  v-if="selectJson.select && selectJson.select.length > 0">删除</el-button>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div v-if="selectSteps == 2" style="height: 100%">
-          <div class="select_box2">
-            <div class="select_box2_title">设置每道题目的正确选项</div>
-            <div class="select_box2_box">
-              <div class="select_box2_img">
-                <img :src="selectJson.url" alt="" @click="previewImg(selectJson.url)" />
-              </div>
-              <div class="select_box2_answer">
-                <div class="select_answer_title">根据题目选择对应答案</div>
-                <div class="select_box2_answer_box" v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex">
-                  <span>{{ checkIndex + 1 }}、</span>
-                  <el-select v-model="selectJson.answer[checkIndex]" placeholder="请选择正确答案">
-                    <el-option v-for="(e, eIndex) in selectJson.select" :key="eIndex" :label="e" :value="eIndex">
-                    </el-option>
-                  </el-select>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="nextSelectSteps()" v-if="selectSteps == 1">下一步</el-button>
-        <el-button @click="selectSteps--" v-if="selectSteps == 2">上一步</el-button>
-        <el-button type="primary" @click="addSelectAnswer" v-if="selectSteps == 2">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加评价" :visible.sync="dialogVisibleRate" :append-to-body="true" width="650px"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="background: #fff; padding: 15px; box-sizing: border-box">
-        <div style="font-size: 18px; color: #a9a9a9">请输入个人评价指标:</div>
-        <div class="pjCss" style="width: 100%">
-          <div v-if="rateJson.length" class="elist_input" style="height: 360px; overflow: auto">
-            <div v-for="(eItem, eIndex) in rateJson" :key="eIndex" class="elist_input_box">
-              <span style="min-width: 100px; text-align: right">个人评价指标:</span>
-              <input type="input" v-model="eItem.value" placeholder="填写评价维度" />
-              <div class="remove" @click="deletRateList(eIndex)"></div>
-              <div style="width: 100%; display: flex">
-                <span style="min-width: 100px; text-align: right">评星等级:</span>
-                <el-rate v-model="eItem.score" disabled></el-rate>
-              </div>
-              <div class="elist_inptu_text" style="align-items: flex-start">
-                <span style="min-width: 100px; text-align: right">描述:</span>
-                <textarea class="rate_textarea" :rows="3" v-model="eItem.detail" placeholder="填写维度描述"></textarea>
-              </div>
-            </div>
-          </div>
-          <div class="addToolFun" @click="addRateList()">
-            <div class="addToolImg">
-              <img src="../../../assets/icon/add.png" alt />
-            </div>
-            <div>添加</div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleRate = false">取 消</el-button>
-        <el-button type="primary" @click="addRateAnswer">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="排序设置" :visible.sync="dialogVisibleSentence" :append-to-body="true" width="1000px" :before-close="(done) => {
-      closePan(47);
-    }
-      " class="dialog_diy dialog_diy3 fullStyle">
-      <div style="height: 100%">
-        <div class="sentenBox" style="height: 100%">
-          <div class="addSen" @click="addSt">添加题目</div>
-          <div v-for="(st, stIndex) in sentenceList" :key="stIndex" class="sentenContent">
-            <div class="sentenTopBox">
-              <div class="sentenTop" :index="stIndex + 1">
-                <div>题目设置</div>
-                <div>
-                  <el-input placeholder="请输入卡片内容" v-model="st.sentenceTitle" :maxlength="10"></el-input>
-                </div>
-                <div @click="addSen(stIndex)">添加</div>
-                <div class="remove1" v-if="sentenceList.length > 1" @click="deleteSentence(stIndex)"></div>
-              </div>
-            </div>
-
-            <div class="cardList">
-              <div v-if="st.addSentence.length > 0" class="cardBox">
-                <div class="isCard" v-for="(s, sIndex) in st.addSentence" :key="sIndex"
-                  @click="setRightAnswer(s, stIndex, sIndex)">
-                  <el-tooltip class="item" effect="light" :content="s" placement="top">
-                    <div>{{ s }}</div>
-                  </el-tooltip>
-                  <div class="deleteWord" @click.stop="deleteS(s, stIndex, sIndex)">
-                    <img src="../../../assets/icon/delete.png" alt="" />
-                  </div>
-                </div>
-              </div>
-              <div class="card">
-                <img src="../../../assets/icon/conSentences/noTitle.png" alt="" />
-              </div>
-            </div>
-            <div class="rightCardBox">
-              <div>正确顺序</div>
-              <div class="rightCardList">
-                <div v-if="st.rightAnswer.length > 0" class="cardBox">
-                  <div v-for="(r, rIndex) in st.rightAnswer" :key="rIndex" class="cardCss">
-                    <div class="isCard1" @click="returnCard(r, stIndex, rIndex)">
-                      <el-tooltip class="item" effect="light" :content="r" placement="top">
-                        <div>{{ r }}</div>
-                      </el-tooltip>
-                    </div>
-                    <div>{{ rIndex + 1 }}</div>
-                  </div>
-                </div>
-                <div class="card" v-if="st.rightAnswer.length == 0">
-                  <img src="../../../assets/icon/conSentences/noAnswer.png" alt="" />
-                </div>
-                <div class="card" v-else>
-                  <img src="../../../assets/icon/conSentences/clickNo.png" alt="" />
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(47)">取 消</el-button>
-        <el-button type="primary" @click="addSentenceTool">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加表格" :visible.sync="dialogVisibleTable" :append-to-body="true" width="95%"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <!-- <el-form-item label="文本标题">
-          <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
-        </el-form-item> -->
-        <div>表格内容</div>
-        <Table v-model="tableJson.text" @change="change"></Table>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <!-- <el-button @click="dialogVisibleTable = false">取 消</el-button>
-        <el-button type="primary" @click="addTableJson">确定</el-button> -->
-        <el-button type="primary" @click="addTableJson">上传模板</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加文档" :visible.sync="dialogVisibleWord" :append-to-body="true" width="95%"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <!-- <el-form-item label="文本标题">
-          <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
-        </el-form-item> -->
-        <div>文档内容</div>
-        <editor-bar v-model="wordJson.text" class="text_panel"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <!-- <el-button @click="dialogVisibleWord = false">取 消</el-button> -->
-        <el-button type="primary" @click="addWordJson">上传模板</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加班级" :visible.sync="dialogVisibleMoreUpload" :append-to-body="true" width="30%"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: nowrap;
-          align-items: center;
-          justify-content: center;
-        ">
-        <div>班级:</div>
-        <el-select multiple v-model="uploadJson" placeholder="请选择">
-          <el-option v-for="item in classJuri" :key="item.id" :label="item.name" :value="item.id">
-          </el-option>
-        </el-select>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMoreUpload = false">取 消</el-button>
-        <el-button type="primary" @click="addMoreUpload">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="设置随机码" :visible.sync="dialogVisibleInvite" :append-to-body="true" width="360px"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: nowrap;
-          align-items: center;
-          justify-content: center;
-        ">
-        <div>随机码:</div>
-        <el-input v-model="icode" style="width: 240px" placeholder="请输入随机码"></el-input>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleInvite = false">取 消</el-button>
-        <el-button type="primary" @click="addInvite">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加预设时间" :visible.sync="dialogVisiblePreTime" :append-to-body="true" width="450px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div style="margin-bottom: 20px; color: #999">
-          提示:点击“+”或“-”修改倒计时时长。
-        </div>
-        <Time :preTime="preTime" @updateTimeNum="updateTime" v-if="dialogVisiblePreTime"></Time>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisiblePreTime = false">取 消</el-button>
-        <el-button type="primary" @click="addPreTime">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="导入目标" :visible.sync="dialogVisiblemb" :append-to-body="true" width="70%"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div style="
-            width: 100%;
-            display: flex;
-            flex-direction: row;
-            flex-wrap: nowrap;
-            align-content: center;
-            align-items: center;
-            justify-content: space-between;
-          ">
-          <div style="
-              display: flex;
-              flex-flow: row nowrap;
-              align-items: flex-start;
-              width: 100%;
-              flex-direction: column;
-              flex-wrap: nowrap;
-              position: relative;
-            ">
-            <div class="e_box">
-              <!-- <div class="e_card" v-for="(item, index) in evaJuri" :key="index">
-                <div class="e_card_picture">
-                  <img src="../../../assets/e_picture.png" />
-                </div>
-                <div class="e_card_name">
-                  <span>{{ item.title }}</span>
-                </div>
-                <div class="e_card_btn">
-                  <span @click="checkEva(item.id, 2)">导入</span>
-                </div>
-              </div> -->
-              <!-- <div class="addEva" @click="openT">
-                <img src="../../../assets/icon/addEva.png" alt="" />
-              </div> -->
-              <div style="
-                  display: flex;
-                  justify-content: flex-end;
-                  margin-bottom: 10px;
-                ">
-                <el-button @click="openT" type="primary" size="small">添加目标</el-button>
-              </div>
-              <el-table v-if="evaJuri.length" ref="table" :data="evaJuri" border :fit="true" style="width: 100%"
-                :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }" :row-class-name="tableRowClassName">
-                <el-table-column label="目标名称" min-width="15" align="center" prop="title">
-                </el-table-column>
-                <el-table-column prop="username" label="负责人" min-width="15" align="center">
-                </el-table-column>
-                <el-table-column label="操作" width="250px">
-                  <template slot-scope="scope">
-                    <div class="btnBox">
-                      <el-button type="primary" size="small" @click="checkEva(scope.row.id, 2)">导入</el-button>
-                    </div>
-                  </template>
-                </el-table-column>
-              </el-table>
-              <div v-if="evaJuri.length === 0" style="margin: 0 auto; color: #6e6e6e">
-                暂无数据
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisiblemb = false">取 消</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="分组设置" :visible.sync="dialogVisibleGroup" :append-to-body="true" width="650px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="groupBox">
-        <div v-if="groupJson.group" class="groupContent">
-          <div class="groupTitle">请设置小组数量及名称</div>
-          <div v-for="(item, index) in groupJson.group" :key="index" class="groupName">
-            <span class="groupn">第{{ index + 1 }}组名称:</span>
-            <el-input v-model="item.name" placeholder="请输入名称..." style="width: 250px"></el-input>
-            <div class="groupBtn">
-              <el-button type="primary" size="small" @click="addGroup(index)"
-                v-if="groupJson.group.length - 1 == index">
-                添加</el-button>
-              <el-button type="primary" size="small" @click="deleteGroup(index)"
-                v-if="groupJson.group && groupJson.group.length > 1">删除</el-button>
-            </div>
-          </div>
-        </div>
-        <div class="groupContent">
-          <div class="groupTitle">请设置每组人数</div>
-          <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
-            style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
-          <el-input v-model="groupJson.number" style="width: 150px" placeholder="请输入2-10的数字"
-            @change="numberPan"></el-input>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleGroup = false">取 消</el-button>
-        <el-button type="primary" @click="addGroupJson">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="修改名称" :visible.sync="dialogVisibleupdataVideoT" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: nowrap;
-          align-items: center;
-          justify-content: center;
-        ">
-        <div style="min-width: fit-content">文件名称:</div>
-        <el-input v-model="line" placeholder="请输入要修改的名称"></el-input>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleupdataVideoT = false">取 消</el-button>
-        <el-button type="primary" @click="updataVideoC">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="创建作文题目" :visible.sync="englishDialogVisible" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(69);
-    }
-      " class="dialog_diy fullStyle fullStyle1">
-      <englishRight :englishList="englishList" :oid="oid" ref="engJson" @setJson="addEnglish"></englishRight>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="englishDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="addEnglish">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="选择课程模板" :visible.sync="templateDialog" :append-to-body="true" width="630px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="template_box">
-        <div class="wordTeacher" v-for="(aa, indexF) in templateArray" :key="indexF" @click="checkctJson(aa)"
-          :class="{ wordTeacherA: ctJson.id == aa.id }">
-          <div class="wordPic">
-            <img src="../../../assets/icon/new/course_template.png" alt />
-          </div>
-          <el-tooltip effect="dark" :content="aa.title" placement="top">
-            <div style="
-                margin-top: 10px;
-                line-height: 19px;
-                overflow: hidden;
-                text-overflow: ellipsis;
-                white-space: nowrap;
-                padding: 0 10px;
-                box-sizing: border-box;
-                width: 100%;
-              ">
-              {{ aa.title }}
-            </div>
-          </el-tooltip>
-        </div>
-        <div class="wordTeacher" @click="checkctJson({ id: 1 })" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'"
-          :class="{ wordTeacherA: ctJson.id == 1 }">
-          <div class="wordPic">
-            <img src="../../../assets/icon/new/course_template.png" alt />
-          </div>
-
-          <div style="
-              margin-top: 10px;
-              line-height: 19px;
-              overflow: hidden;
-              text-overflow: ellipsis;
-              white-space: nowrap;
-              padding: 0 20px;
-            ">
-            简易模板
-          </div>
-        </div>
-        <div class="wordTeacher" @click="checkctJson({ id: 2 })" v-if="isPasteStage"
-          :class="{ wordTeacherA: ctJson.id == 2 }">
-          <div class="wordPic">
-            <img src="../../../assets/icon/new/course_template.png" alt />
-          </div>
-
-          <div style="
-              margin-top: 10px;
-              line-height: 19px;
-              overflow: hidden;
-              text-overflow: ellipsis;
-              white-space: nowrap;
-              padding: 0 20px;
-            ">
-            智能粘贴模式
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="templateDialog = false">取 消</el-button>
-        <el-button type="primary" @click="addTemplate(ctJson)">确 定</el-button>
-      </span>
-    </el-dialog>
-    <interVideo :dialogVisibleVideo.sync="dialogVisibleVideo" :videoJson="videoJson" @add="addVideoJson"></interVideo>
-    <el-dialog title="切换阶段顺序" :visible.sync="dialogVisibleStageChange" :append-to-body="true" width="400px"
-      :before-close="handleClose" class="dialog_diy dialog_diyStage">
-      <div class="change_stageBox">
-        <div class="navTask" v-for="(t, tIndex) in unitJson3" :key="tIndex">
-          <div class="nt_taskBox">
-            <div class="nt_taskTitle">第{{ tIndex + 1 }}阶段</div>
-            <div class="nt_taskName">
-              <el-tooltip effect="light" :content="t.dyName" placement="top">
-                <span>{{ t.dyName }}</span>
-              </el-tooltip>
-            </div>
-          </div>
-          <div class="moveBtn" v-if="unitJson3.length > 1">
-            <div class="chapter_upload_up" @click.stop="stageMove(1, tIndex)"></div>
-            <div class="chapter_upload_down" @click.stop="stageMove(2, tIndex)"></div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleStageChange = false">取 消</el-button>
-        <el-button type="primary" @click="updateChange">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加资源模板" :visible.sync="cetBoxDialog" :append-to-body="true" width="400px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="addTypeChoose" style="justify-content: center">
-        <div style="min-width: 100px">模板名称:</div>
-        <el-input v-model="templateName" style="width: 200px"></el-input>
-      </div>
-      <div class="addTypeBox">
-        <div class="addTypeChoose">
-          <div style="min-width: 100px">选择一级分类:</div>
-          <el-select v-model="setTypeJson.one" placeholder="请选择" @change="getTwoType(setTypeJson.one)"
-            style="width: 200px">
-            <el-option v-for="(item, index) in oneJson" :key="index" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="addTypeChoose" v-if="setTypeJson.one != ''">
-          <div style="min-width: 100px">选择二级分类:</div>
-          <el-select v-model="setTypeJson.two" placeholder="请选择" style="width: 200px">
-            <el-option v-for="(item1, index1) in twoJson" :key="index1" :label="item1.name" :value="item1.id">
-            </el-option>
-          </el-select>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="addCETemplate()">确 认</el-button>
-        <el-button @click="close()">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <evaBox :userid="userid" :oid="oid" :org="org" :dialogVisibleEva.sync="evaBoxDialog" @updateEvaJson="updateEvaJson">
-    </evaBox>
-    <EnglishVoice :oid="oid" :org="org" :EnglishVoiceDialog.sync="EnglishVoiceDialog"
-      :englishVoiceJson="englishVoiceJson" @setEnglishVoiceJson="setEnglishVoiceJson"></EnglishVoice>
-    <aiDialog :dialogVisibleAiD.sync="dialogVisibleAiD" :aiText="aiText" :aiText2="aiText2" @aiConfirm="aiConfirm" :clickType="clickType">
-    </aiDialog>
-    <tipsDialog :dialogVisibleTips.sync="dialogVisibleTips" :tipsJson.sync="tipsJson" :aiJson="aiJson" :userid="userid"
-      @retrunCourse="retrunCourse" :templateid.sync="templateid" @addWork="addWork"></tipsDialog>
-    <aiCreateDialog :dialogVisibleAiCreate.sync="dialogVisibleAiCreate" :courseName="courseName" @createAiPpt="createAiPpt" :infoData="infoData" :courseTypeId="courseTypeId" :CourseTypeJson="CourseTypeJson" :courseState="courseState" :lineCount="lineCount" :unitJson="unitJson"></aiCreateDialog>
-    <aiCreateVideoDialog :dialogVisibleAiCreateVideo.sync="dialogVisibleAiCreateVideo" :courseName="courseName" @createAiVideo="createAiVideo" :courseState="courseState" :lineCount="lineCount" :unitJson="unitJson"></aiCreateVideoDialog>
-    <wpdf :dialogVisiblePdf.sync="dialogVisiblePdf" :url="wurl"></wpdf>
-    <wOffice :dialogVisibleOffice.sync="dialogVisibleOffice" :url="wurl" ></wOffice>
-  </div>
-</template>
-
-<script>
-import "../../../common/aws-sdk-2.235.1.min.js";
-import { tools as toolsData } from "../../../common/tools.js";
-// import "../../../common/aws-sdk-2.99.0.min.js";
-import $ from "jquery";
-import EditorBar from "../../../components/tools/wangEnduit";
-import Table from "../../../components/tools/table";
-import Mind from "../../tools/jsmind2";
-import Time from "../../tools/time.vue";
-import Sunburst from "../../tools/sunburst";
-import SeeBoard from "../../tools/seeBoard";
-import weilaiData from "../components/weilai.js";
-import sourceDialog from "../teacherSource/dialog.vue";
-import interVideo from "../interVideo/index.vue";
-import englishRight from "../components/englishRight.vue";
-import evaBox from "../evaBox/index.vue";
-import EnglishVoice from "../EnglishVoice/index.vue";
-import aiBox from './aiBox.vue'
-import aiDialog from './aiDialog'
-import aiTips from './aiTips.vue'
-import tipsDialog from './tipsDialog.vue'
-import { v4 as uuidv4 } from "uuid";
-import MarkdownIt from "markdown-it";
-import aiCreateDialog from './aiCreateDialog.vue'
-import aiCreateVideoDialog from './aiCreateVideoDialog.vue'
-import wpdf from "../test/file/wPdf2.vue";
-import wOffice from "../test/file/wOffice.vue";
-
-var OpenCC = require("opencc-js");
-let converter = OpenCC.Converter({
-		from:'hk',
-		to:'cn'
-})
-
-
-export default {
-  components: {
-    EditorBar,
-    Mind,
-    Time,
-    Sunburst,
-    SeeBoard,
-    Table,
-    sourceDialog,
-    interVideo,
-    englishRight,
-    evaBox,
-    EnglishVoice,
-    aiBox,
-    aiDialog,
-    aiTips,
-    tipsDialog,
-    aiCreateDialog,
-    aiCreateVideoDialog,
-    wpdf,
-    wOffice,
-  },
-  data() {
-    return {
-      checkAll: false,
-      checkAll2: false,
-      chooseType: 1,
-      checkedCities: [],
-      isIndeterminate: true,
-      isIndeterminate2: true,
-      isSysPic: false,
-      isSysPic2: false,
-      steps: 1,
-      stepsNav: 1,
-      nbOrder: 0,
-      courseId: "",
-      chapToolsType: 0,
-      chapTools: [
-        {
-          tools: [],
-          toolDetail: "",
-        },
-      ],
-      line: "",
-      lineTitle: "",
-      sysPic: [],
-      sentenceList: [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }],
-      sentenceList2: [],
-      isPushTitleList: [],
-      lineCount: 0,
-      lineType: 0,
-      chapCount: 0,
-      courseName: "",
-      isTeacherSee: false,
-      courseText: "",
-      textLoading: false,
-      ttextLoading: false,
-      courseText2: "",
-      preTime: 0,
-      formLabelWidth: "100px",
-      choosePicVisible: false,
-      sysPicVisible: false,
-      sysPicVisible2: false,
-      uploadLoading1: false,
-      noneBtnImg: false,
-      updateBoolean2: false,
-      unitIndex: 0,
-      taskCount: 0,
-      dialogVisible: false,
-      dialogVisible1: false,
-      dialogVisible2: false,
-      dialogVisible3: false,
-      dialogVisible4: false,
-      dialogVisible5: false,
-      dialogVisible6: false,
-      dialogVisible7: false,
-      dialogVisible8: false,
-      dialogVisible9: false,
-      dialogVisibleClass: false,
-      dialogVisibleMember: false,
-      dialogVisibleMp3: false,
-      dialogVisibleSelect: false,
-      dialogVisibleSentence: false,
-      dialogVisibleRate: false,
-      dialogVisibleChoice: false,
-      dialogVisiblemb: false,
-      dialogVisibleInvite: false,
-      dialogVisibleSource: false,
-      dialogVisibleVideo: false,
-      dialogVisibleStageChange: false,
-      dialogVisibleupdataVideoT: false,
-      englishDialogVisible: false,
-      templateDialog: false,
-      ctJson: {},
-      isClickColor: 1,
-      toolIndexType: "",
-      publicTool: 0,
-      searchPeople: "",
-      searchTN: "",
-      collid: '',
-      CollLoading: false,
-      userid: this.$route.query.userid,
-      oid: this.$route.query.oid,
-      org: this.$route.query.org,
-      role: this.$route.query.role,
-      aiId: this.$route.query.aiId != undefined ? this.$route.query.aiId : "",
-      cid: this.$route.query.cid != undefined ? this.$route.query.cid : "",
-      dialogVisibleTable: false,
-      dialogVisibleWord: false,
-      tableJson: { text: "" },
-      wordJson: { text: "" },
-      dialogVisibleMoreUpload: false,
-      dialogVisiblePreTime: false,
-      uploadJson: [],
-      classJuri: [],
-      gradeList: [],
-      cover: [], //课程封面
-      myWord: [],
-      evaJuri: [],
-      evalua: "",
-      targetArray: [],
-      eTitle: "",
-      eJson: {},
-      fid: "", //一级
-      sid: "", //二级
-      tid: "", //二级
-      typeMode: 3,
-      eJSONNum: 0,
-      data: {
-        meta: {
-          name: "example",
-          author: "dd@163.com",
-          version: "0.2",
-        },
-        format: "node_array",
-        data: [{ id: "root", isroot: true, topic: "" }],
-      },
-      askJson: {
-        askCount: 1,
-        askTitle: "",
-        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      },
-      askJson2: {},
-      testJson: {},
-      testJson2: {},
-      selectJson: {},
-      selectJson2: {},
-      rateJson: [],
-      unitJson2: [],
-      unitJson3: [],
-      unitJson: [
-        {
-          dyName: "", //单元标题
-          chapterInfo: [
-            {
-              isread: false,
-              chapterid: this.guid(),
-              title: "",
-              courseName: "",
-              taskJson: [
-                {
-                  task: "",
-                  taskDetail: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 1,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                },
-              ],
-              itemCount: 1,
-              fileList1: [],
-              video: [],
-              testData: [],
-              pData: [],
-              templateArray: [],
-            },
-          ],
-        },
-      ],
-      templateArray: [],
-      studentJuri: [],
-      teacherJuri: [],
-      CollaborativeTeaList: [],
-      checkboxList: [],
-      checkboxList2: [],
-      checkboxList3: [],
-      classSearch: "",
-      gradeId: "",
-      number: "",
-      tTitle: "",
-      tdetail: "",
-      templateC: {},
-      AttText: {},
-      AttTextType: 0,
-      AttTextIndex: 0,
-      cTemplate: "",
-      CourseType: [],
-      CourseType1: [],
-      CourseType2: [],
-      CourseTypeJson: {},
-      CourseTypeJson1: {},
-      courseTypeId: [],
-      courseTypeId1: [],
-      courseTypeSon: [],
-      clearArray: [],
-      pTypeCheck: [],
-      pTypeCheckName: [],
-      loading: false,
-      toolType: 0,
-      inputShow: true,
-      inputShow2: true,
-      toolIndex: 0,
-      cidType: 0,
-      answerQ: "",
-      answerQ2: "",
-      grade: [],
-      grade2: [],
-      courseUserid: "",
-      timer: null,
-      timer2: null,
-      pasteTimer: null,
-      checkId: "",
-      isDelete: 1,
-      addindex: 0,
-      selectSteps: 1,
-      groupJson: {},
-      dialogVisibleGroup: false,
-      rightBoxHeight: 0,
-      ManAarray: [],
-      checkBoolean: false,
-      inviteCode: [],
-      inviteId: "",
-      icode: "",
-      easyArray: [2, 4],
-      sourceData: {},
-      updateSourcePan: false,
-      videoJson: {},
-      isBtnDisplay: false,
-      isStepDisplay: false,
-      isPasteStage: false,
-      isPasteTask: false,
-      isPasteChoice: false,
-      imageList: [],
-      imageloading: false,
-      imageloading2: false,
-      searchImageValue: "",
-      ppage: 1,
-      toolsData: JSON.parse(converter(JSON.stringify(toolsData))),
-      oldIndex: 0,
-      dragType: "",
-      oldUnitIndex: 0,
-      oldData: null,
-      newIndex: "",
-      englishList: {},
-      typeIndex: "",
-      courseState: 5,
-      taskJSONa: [
-        {
-          task: "",
-          taskDetail: "",
-          chapterData: [],
-          toolText: "",
-          toolChoose: [
-            {
-              tool: [],
-              toolDetail: "",
-              toolType: 0,
-              askCount: 1,
-              askTitle: "",
-              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-            },
-          ],
-          isShowTools: false,
-          askCount: 1,
-          isFold: 1,
-          askTitle: "",
-          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          checkJson: [{ checkCount: [], checkPerent: [] }],
-          homeworkList: [],
-        },
-      ],
-      checkUnitIndex: 0,
-      isdrag: "",
-      evaIndex: "",
-      evatIndex: "",
-      evaBoxDialog: false,
-      EnglishVoiceDialog: false,
-      englishVoiceJson: {},
-      cetIndex: "",
-      cettIndex: "",
-      cetBoxDialog: false,
-      templateName: "",
-      setTypeJson: {
-        one: "",
-        two: "",
-      },
-      twoJson: [],
-      oneJson: [],
-      updateKey: 1,
-      isOutline: false,
-      isOutline2: false,
-      infoData: [],
-      infoproVisible: false,
-      infoisFinishSize: 0,
-      infoisAllSize: 0,
-      infoprogress: 0,
-      taskDetailLoading: [],
-      ttaskDetailLoading: [],
-      taskDetailLoading2: [],
-      ttaskDetailLoading2: [],
-      taskDetailLoading3: [],
-      ttaskDetailLoading3: [],
-      taskDetailLoading4: [],
-      taskDetailLoading5: [],
-      ttaskDetailLoading5: [],
-      dArray: [],
-      dialogVisibleAiD: false,
-      aitype: "",
-      aiJson: {
-        "aiDetail": "请根据<课程简要描述>设计一个名为<课程名字>的<课程学科>学科的,面向<面向年级>的项目式学习课程。",
-        "aiOutline": "请为这个名为<课程名字>的<课程学科>学科的,面向<面向年级>学生的项目式学习课程设计序列教学活动(需要每个任务都需要至少100个token的详细描述)。你需要参考课程简要描述<课程简要描述>,并产出每个教学任务的设计(可以直接使用文件内容)以及每个教学活动的评价量规(学生能做到...)。",
-        "aiTask": "请根据<教学任务教案>。",
-        "aiDetail1": "请根据<课程描述>,重新设计该教学任务。任务需要至少50个token的详细描述,包含任务设计,评价标准。",
-        "aiDetail2": "请你在考虑到整个课程的情况下,优化该任务描述",//和任务名:<任务名>:<任务描述>
-        "aiDetail3": "请你在考虑到整个课程的情况下,**重点考虑该任务及工具名和工具内容的情况下**,优化工具指引。",
-        "aiDetail4": "请你在考虑到整个课程的情况下,**重点考虑该任务详情**以及工具的情况下,优化评价标准。",
-        "aiTeacher": "请根据<任务大纲>为每个教学任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含实例答案。",
-        "teacherDetail": "请根据<任务大纲>,以及# 其他教学任务教案,为本教学任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动),相关知识点的讲解,练习(练习需要包含实例答案。注意,你绝对不能重复其他教学任务教案中的内容",
-        "teacherDetail2": "请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。"
-      },
-      aiText: "",
-      aiText2: "",
-      aiCallBack: "",
-      aiIndex: "",
-      clickType: 1,
-      promptShow: false,
-      templateid: this.$route.query.templateid != undefined ? this.$route.query.templateid : "",
-      istemplate: this.$route.query.istemplate != undefined && this.$route.query.istemplate ? 1 : 2,
-      dialogVisibleTips: false,
-      tipsJson: {},
-      cpote:{
-        cpote1: '',
-        cpote2: '',
-        cpote3: '',
-        cpote4: '',
-      },
-      cpoteLoading:{
-        cpote1: false,
-        cpote2: false,
-        cpote3: false,
-        cpote4: false,
-      },
-      cpotetLoading:{
-        cpote1: false,
-        cpote2: false,
-        cpote3: false,
-        cpote4: false,
-      },
-      cpoteType: 0,
-      dialogVisibleAiCreate: false,
-      dialogVisibleAiCreateVideo: false,
-      teacherText: [],
-      isFileSearch: true,
-      fileIds: ['file-A81p1q02HHpJhus4nYYwtAmM'],
-      templatePan: ['0e7966d6-1e49-11ef-bee5-005056b86db5','60d153e3-1e49-11ef-bee5-005056b86db5','7f3e28b7-1e66-11ef-bee5-005056b86db5','9dd4bb76-1e48-11ef-bee5-005056b86db5','ab317f23-1e66-11ef-bee5-005056b86db5'],
-      courseJie:1,
-      courseTime:45,
-      allTextArray: [],
-      dialogVisiblePdf: false,
-      dialogVisibleOffice: false,
-      wurl: "",
-      choiceLoading: false,
-      teacherInfoData: [],
-      teacherinfoproVisible: false,
-      teacherinfoisFinishSize: 0,
-      teacherinfoisAllSize: 0,
-      teacherinfoprogress: 0,
-      teacherCourseText: "",
-      teacherTextLoading: false,
-      tteacherTextLoading: false,
-      targetCourseText: "",
-      targetTextLoading: false,
-      ttargetTextLoading: false,
-      cankaoInfoData: [],
-      fileSLoading: false,
-      infoData2: [],
-      isuseT: false,
-      mode: 1,
-      targetCourseText2: "",
-      targetTextLoading2: false,
-      ttargetTextLoading2: false,
-      courseTextBool: false,
-      teacherCourseTextB: true,
-      targetCourseTextB: true,
-      courseTextB: true,
-      targetCourseText2B: true,
-      // 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: {
-    autoHeight: {
-      update(el, binding) {
-        const { value } = binding;
-        if (value && typeof value === "number") {
-          el.style.height = `${value}px`;
-        } else {
-          el.style.height = "auto";
-        }
-      },
-      componentUpdated(el) {
-        el.style.height = `${el.scrollHeight + 25}px`;
-      },
-    },
-  },
-  computed: {
-    // rightBoxHeight: function () {
-    //   return $(".rightBox")[0] ? $(".rightBox")[0].scrollHeight : 1000
-    // },
-    offsetLetfPx: function () {
-      //addnum可以直接在模板语法里面用,相当于data内的值
-      return (
-        $(".cru_select")[this.unitIndex] &&
-        $(".cru_select")[this.unitIndex].offsetLeft + 5
-      );
-    },
-    getMan2() {
-      return function (people) {
-        let _people = people;
-        let _people2 = "";
-        if (this.ManAarray.length) {
-          for (var i = 0; i < this.ManAarray.length; i++) {
-            if (this.ManAarray[i].userid == people) {
-              _people2 = this.ManAarray[i].name;
-              break;
-            }
-          }
-        }
-        if (people == this.courseUserid) {
-          return "";
-        }
-        return this.ManAarray.length ? _people2 : "";
-      };
-    },
-    getListMan2() {
-      return function (list) {
-        let _people2 = [];
-        if (this.ManAarray.length) {
-          for (var j = 0; j < list.length; j++) {
-            let people = list[j];
-            for (var i = 0; i < this.ManAarray.length; i++) {
-              if (
-                this.ManAarray[i].userid == people &&
-                people != this.courseUserid
-              ) {
-                _people2.push(this.ManAarray[i].name);
-                break;
-              }
-            }
-          }
-        }
-
-        return this.ManAarray.length ? _people2.join("、") : "";
-      };
-    },
-    isInvite() {
-      return function (cid) {
-        let array = [];
-        for (var i = 0; i < this.inviteCode.length; i++) {
-          array.push(this.inviteCode[i].cid);
-        }
-        return array.indexOf(cid) != -1;
-      };
-    },
-    getInviteCodeC() {
-      return function (cid) {
-        let array = [];
-        for (var i = 0; i < this.inviteCode.length; i++) {
-          array.push(this.inviteCode[i].cid);
-        }
-        return this.inviteCode[array.indexOf(cid)].ic;
-      };
-    },
-    getClassC() {
-      return function (c) {
-        let _c2 = "";
-        if (this.grade.length) {
-          for (var i = 0; i < this.grade.length; i++) {
-            if (this.grade[i].id == c) {
-              _c2 = this.grade[i].name;
-              break;
-            }
-          }
-        }
-        return this.grade.length ? _c2 : "";
-      };
-    },
-    getListClassC() {
-      return function (list) {
-        let _c2 = [];
-
-        if (this.grade.length) {
-          for (var j = 0; j < list.length; j++) {
-            let c = list[j];
-            for (var i = 0; i < this.grade.length; i++) {
-              if (this.grade[i].id == c) {
-                _c2.push(this.grade[i].name);
-                break;
-              }
-            }
-          }
-        }
-        return this.grade.length ? _c2.join("、") : "";
-      };
-    },
-    MarkdownT() {
-      return function (c) {
-        let md = new MarkdownIt();
-        return c
-          ? md.render(c) : "";
-      };
-    },
-    panOutline(){
-      return function () {
-        let count = 0;
-        for(var i = 0; i < this.unitJson.length; i++){
-          let _task = this.unitJson[i].chapterInfo[0].taskJson
-          for(var j = 0; j < _task.length; j++){
-            if(_task[j].taskDetail2){
-              count++
-            }
-          }
-        }
-        return count;
-      };
-    },
-    panTeacher(){
-      return function () {
-        let count = 0;
-        for(var i = 0; i < this.unitJson.length; i++){
-          let _task = this.unitJson[i].chapterInfo[0].taskJson
-          for(var j = 0; j < _task.length; j++){
-            if(_task[j].taskDetail3){
-              count++
-            }
-          }
-        }
-        return count;
-      };
-    },
-    dataCheckPan(){
-      return function (fileid) {
-        for(let i = 0; i < this.infoData.length; i++){
-          if(this.infoData[i].fileid == fileid){
-            return true
-          }
-        }
-        return false;
-      };
-    }
-  },
-  watch: {
-    unitIndex(newValue, oldValue) {
-      // return;
-      if (this.isDelete == 2) {
-        this.isDelete = 1;
-        return;
-      }
-      if (this.cid != "") {
-        let _unitIndex = oldValue;
-        if (
-          JSON.stringify(this.unitJson2[_unitIndex]) ==
-          JSON.stringify(this.unitJson[_unitIndex])
-        ) {
-          this.$refs.rightboxR.scrollTop = 0;
-          return;
-        }
-        let cPan = 1;
-        for (
-          var j = 0;
-          j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-          j++
-        ) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-            j
-          ].proVisible = false;
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-            j
-          ].proVisible2 = false;
-          if (
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length > 1
-          ) {
-            for (
-              var z = 0;
-              z <
-              this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-                .length;
-              z++
-            ) {
-              if (
-                !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j]
-                  .toolChoose[z].tool.length
-              ) {
-                this.$message.error("请把工具添加完整");
-                cPan = 2;
-                break;
-              }
-            }
-          }
-          if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-              this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-                (ele) => {
-                  return ele.value != "";
-                }
-              );
-          }
-        }
-        if (cPan == 2) {
-          this.unitIndex = oldValue;
-          return;
-        }
-        for (var i = 0; i < this.unitJson.length; i++) {
-          if (this.addindex != i) {
-            delete this.unitJson[i].isUpdate;
-          }
-        }
-        this.$refs.rightboxR.scrollTop = 0;
-        this.addindex = -1;
-        let params = [
-          {
-            cid: this.cid,
-            chapters: JSON.stringify(this.unitJson),
-            uid: this.userid,
-            unitIndex: _unitIndex,
-          },
-        ];
-        this.ajax
-          .post(this.$store.state.api + "updateWorkNew4", params)
-          .then((res) => {
-            // this.$message({
-            //   message: "修改成功",
-            //   type: "success",
-            // });
-            // this.courseId = this.cid;
-            this.addtips()
-          })
-          .catch((err) => {
-            this.$message.error("网络不佳");
-            console.error(err);
-          });
-      }
-    },
-    steps(newValue, old) {
-      if (newValue == 4) {
-        let cPan = 1;
-        for (var i = 0; i < this.unitJson.length; i++) {
-          for (
-            var j = 0;
-            j < this.unitJson[i].chapterInfo[0].taskJson.length;
-            j++
-          ) {
-            this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
-            this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
-            if (
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
-            ) {
-              for (
-                var z = 0;
-                z <
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                z++
-              ) {
-                if (
-                  !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z]
-                    .tool.length
-                ) {
-                  this.$message.error("请把工具添加完整");
-                  cPan = 2;
-                  break;
-                }
-              }
-            }
-            if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
-              this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
-                i
-              ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
-                return ele.value != "";
-              });
-            }
-          }
-        }
-        this.inputShow = true;
-        if (cPan == 2) {
-          this.steps = old;
-          return;
-        }
-        this.goTo(
-          "/course?userid=" +
-          this.userid +
-          "&oid=" +
-          this.oid +
-          "&org=" +
-          this.org +
-          "&role=" +
-          this.role
-        );
-      }
-    },
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    close() {
-      this.cetIndex = "";
-      this.cettIndex = "";
-      this.templateName = "";
-      this.cetBoxDialog = false;
-    },
-    openAI() {
-      top.postMessage({ tools: "64" }, "*");
-    },
-    setMan() {
-      // let teacherJuri = this.teacherJuri2;
-      this.ManAarray = [];
-      let _user = JSON.parse(JSON.stringify(this.checkboxList3));
-      if (_user.indexOf(this.userid) == -1) {
-        _user.push(this.userid);
-      }
-      if (_user.indexOf(this.courseUserid) == -1) {
-        _user.push(this.courseUserid);
-      }
-      let params = {
-        uid: _user.join(","),
-      };
-      this.ajax
-        .get(this.$store.state.api + "getAllUserById", params)
-        .then((res) => {
-          let teacherJuri = res.data[0];
-          this.ManAarray = teacherJuri;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    previewImg(url) {
-      this.$hevueImgPreview(url);
-    },
-    btnDisplay(bool) {
-      this.isBtnDisplay = bool;
-    },
-    stepDisplay(bool) {
-      this.isStepDisplay = bool;
-    },
-    scrollChange() {
-      this.rightBoxHeight = $(".rightBox")[0].scrollHeight - 80;
-    },
-    addHw(e) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-    },
-    change(val) {
-      if (this.dialogVisible1) {
-        this.tdetail = val;
-      } else if (this.dialogVisible6) {
-        this.AttText.text = val;
-      } else if (this.dialogVisible2) {
-        this.cTemplate = val;
-      } else if (this.dialogVisibleTable) {
-        this.tableJson.text = val;
-      }
-      this.$forceUpdate();
-
-      console.log(val);
-    },
-    change2(val) {
-      console.log(val);
-      this.$forceUpdate();
-    },
-    handleClose(done) {
-      done();
-    },
-    closePan(tool) {
-      if (tool == 15) {
-        if (JSON.stringify(this.answerQ) == JSON.stringify(this.answerQ2)) {
-          this.dialogVisible8 = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 4) {
-        if (JSON.stringify(this.askJson) == JSON.stringify(this.askJson2)) {
-          this.dialogVisible5 = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 45) {
-        if (JSON.stringify(this.testJson) == JSON.stringify(this.testJson2)) {
-          this.dialogVisibleChoice = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 41) {
-        if (
-          JSON.stringify(this.selectJson) == JSON.stringify(this.selectJson2)
-        ) {
-          this.dialogVisibleSelect = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 47) {
-        if (
-          JSON.stringify(this.sentenceList) ==
-          JSON.stringify(this.sentenceList2)
-        ) {
-          this.dialogVisibleSentence = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 69) {
-        if (
-          JSON.stringify(this.englishList) == JSON.stringify(this.englishList)
-        ) {
-          this.englishDialogVisible = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      }
-    },
-    closeConfirm(tool) {
-      this.$confirm("是否保存已编辑内容?", "提示", {
-        confirmButtonText: "保存",
-        cancelButtonText: "不保存",
-        type: "warning",
-      })
-        .then(() => {
-          if (tool == 15) {
-            this.addAnswer();
-          } else if (tool == 4) {
-            this.addAsk();
-          } else if (tool == 45) {
-            this.addTest();
-          } else if (tool == 41) {
-            this.addSelectAnswer();
-          } else if (tool == 47) {
-            this.addSentenceTool();
-          } else if (tool == 69) {
-            this.addEnglish();
-          }
-        })
-        .catch(() => {
-          if (tool == 15) {
-            this.dialogVisible8 = false;
-          } else if (tool == 4) {
-            this.dialogVisible5 = false;
-          } else if (tool == 45) {
-            this.dialogVisibleChoice = false;
-          } else if (tool == 41) {
-            this.dialogVisibleSelect = false;
-          } else if (tool == 47) {
-            this.dialogVisibleSentence = false;
-          } else if (tool == 69) {
-            this.englishDialogVisible = false;
-          }
-        });
-    },
-    addEnglish(jsonType) {
-      this.englishList.engTitle = this.$refs["engJson"].engList.engTitle;
-      this.englishList.englishText = this.$refs["engJson"].engList.englishText;
-      this.englishList.textJson = this.$refs["engJson"].engList.textJson;
-      if (
-        this.englishList.engTitle == "" ||
-        this.englishList.englishText == ""
-      ) {
-        this.$message.error("请将内容填写完整!");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].englishList = this.englishList;
-      this.englishList = {};
-      if (jsonType && jsonType == 1) {
-        this.englishDialogVisible = true;
-      } else {
-        this.englishDialogVisible = false;
-      }
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 69
-      ) {
-        this.addTools(69, this.taskCount, this.toolIndex);
-      }
-    },
-    imgChange2(i, j) {
-      var _tmp = this.testJson.testJson[i].checkList[j];
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    imgChange3(i) {
-      var _tmp = this.testJson.testJson[i];
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    imgChange1(file, fileList, type, itemTaskIndex) {
-      if (type == 1) {
-        var _tmp = this.cover;
-      } else if (
-        type == 2 ||
-        type == 3 ||
-        type == 6 ||
-        type == 7 ||
-        type == 8
-      ) {
-        var _tmp =
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .chapterData;
-      } else if (type == 4) {
-        var _tmp = this.unitJson[this.unitIndex].chapterInfo[0].fileList1;
-      } else {
-        var _tmp =
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .homeworkList;
-      }
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    goTo(path) {
-      this.$router.push(path);
-    },
-    guid() {
-      var _num,
-        i,
-        _guid = "";
-      for (i = 0; i < 32; i++) {
-        _guid += Math.floor(Math.random() * 16).toString(16); //随机0  - 16 的数字 转变为16进制的字符串
-        _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
-        if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
-          //会使guid中间加 "-"   形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-          _guid += "-";
-        }
-      }
-      return _guid;
-    },
-    retrunCourse() {
-      if(this.istemplate == 1){
-        this.goTo(
-              "/course?userid=" +
-              this.userid +
-              "&oid=" +
-              this.oid +
-              "&org=" +
-              this.org +
-              "&role=" +
-              this.role
-            );
-        return
-      }
-      this.$confirm("是否保存已编辑内容?", "提示", {
-        confirmButtonText: "保存",
-        cancelButtonText: "不保存",
-        distinguishCancelAndClose: true,
-        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("请补充填写课程名称");
-              return;
-            } else {
-              this.addWork();
-            }
-            this.steps = 4;
-          } else {
-            if (this.courseName == "") {
-              this.$message.error("请补充填写课程名称");
-              return;
-            } else {
-              if (this.userid != this.courseUserid && this.role != "1") {
-                this.updateWork2();
-              } else {
-                this.updateWork();
-              }
-              this.steps = 4;
-            }
-          }
-        })
-        .catch((v) => {
-          console.log(v);
-          if (v == "cancel") {
-            this.goTo(
-              "/course?userid=" +
-              this.userid +
-              "&oid=" +
-              this.oid +
-              "&org=" +
-              this.org +
-              "&role=" +
-              this.role
-            );
-          }
-        });
-    },
-    lastSteps() {
-      if (this.steps == 4) {
-        this.goTo(
-          "/course?userid=" +
-          this.userid +
-          "&oid=" +
-          this.oid +
-          "&org=" +
-          this.org +
-          "&role=" +
-          this.role
-        );
-      } else {
-        // if (this.cidType == 0) {
-        //   this.steps--;
-        //   if (this.steps == 1) {
-        //     setTimeout(() => {
-        //       this.checkEva(this.checkId);
-        //       setTimeout(() => {
-        //         this.checkEva(this.checkId);
-        //       }, 100);
-        //     }, 100);
-        //   }
-        // } else {
-        if (this.steps == 3) {
-          this.steps = 1;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 100);
-        }
-        // }
-      }
-    },
-    navSteps(s) {
-      if (this.courseName == "") {
-        this.$message.error("请补充填写课程名称");
-        return;
-      }
-      if (this.cidType == 0) {
-        if (this.steps == 1) {
-          if (this.cid == "" || this.cid == undefined) {
-            this.addWork();
-          } else {
-            if (this.userid != this.courseUserid && this.role != "1") {
-              this.updateWork2();
-            } else {
-              this.updateWork();
-            }
-          }
-        }
-        if (s == 1) {
-          this.steps = 1;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 100);
-        }
-        if (s == 2) {
-          this.steps = 2;
-        }
-        if (s == 3) {
-          this.cTemplate = this.templateC.content;
-          this.dialogVisible2 = false;
-          this.steps = 3;
-          this.isClickColor = 1;
-          this.unitJson[
-            this.unitIndex
-          ].chapterInfo[0].taskJson[0].toolOpen = true;
-          this.$forceUpdate();
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        }
-      } else {
-        if (this.steps == 1) {
-          if (this.cid == "" || this.cid == undefined) {
-            this.addWork();
-          } else {
-            if (this.userid != this.courseUserid && this.role != "1") {
-              this.updateWork2();
-            } else {
-              this.updateWork();
-            }
-          }
-        }
-        if (s == 1) {
-          this.steps = 1;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 100);
-        }
-        if (s == 3) {
-          this.cTemplate = this.templateC.content;
-          this.dialogVisible2 = false;
-          this.steps = 3;
-          this.isClickColor = 1;
-          this.unitJson[
-            this.unitIndex
-          ].chapterInfo[0].taskJson[0].toolOpen = true;
-          this.$forceUpdate();
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        }
-      }
-      this.$refs.stepBox.scrollTop = 0;
-    },
-    nextSteps(clickType) {
-      // if (this.cidType == 1) {
-      if (this.steps == 1) {
-        if (this.courseName != "") {
-          if ((this.ttaskDetailLoading5.join(",").indexOf('task-') !== -1) || (this.ttaskDetailLoading.join(",").indexOf('task-') !== -1) || this.cpotetLoading.cpote1 || this.cpotetLoading.cpote2 || this.cpotetLoading.cpote3 || this.cpotetLoading.cpote4) {
-            // this.$message({
-            //   message: "请回答完毕后再次发送",
-            //   type: "warning"
-            // });
-            if(this.ttaskDetailLoading5.length){
-              let num = parseInt(this.ttaskDetailLoading5[0].split("task-")[1]) + 1
-              this.$message({
-                message: "教案任务"+num+"描述还未生成完,请前往查看,回答完毕后再次操作。",
-                type: "warning"
-              });
-            }
-            if(this.ttaskDetailLoading.length){
-              let num = parseInt(this.ttaskDetailLoading[0].split("task-")[1]) + 1
-              this.$message({
-                message: "生成大纲任务"+num+"描述还未生成完,请前往查看,回答完毕后再次操作。",
-                type: "warning"
-              });
-            }
-            if(this.cpotetLoading.cpote1){
-              this.$message({
-                message: "概念群还未生成完,请前往查看,回答完毕后再次操作。",
-                type: "warning"
-              });
-            }
-            if(this.cpotetLoading.cpote2){
-              this.$message({
-                message: "问题链还未生成完,请前往查看,回答完毕后再次操作。",
-                type: "warning"
-              });
-            }
-            if(this.cpotetLoading.cpote3){
-              this.$message({
-                message: "目标层还未生成完,请前往查看,回答完毕后再次操作。",
-                type: "warning"
-              });
-            }
-            if(this.cpotetLoading.cpote4){
-              this.$message({
-                message: "任务簇还未生成完,请前往查看,回答完毕后再次操作。",
-                type: "warning"
-              });
-            }
-            
-          
-          
-          
-            return;
-          }
-
-          if (this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" && this.templateid != "cf5722a4-401b-11ef-b873-005056b86dc3" && !this.isOutline) {
-            if(!this.courseText && !this.teacherCourseText){
-              this.$message.error("请生成简要描述后再生成大纲");
-              return;
-            }
-            if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
-              this.openAiDialog(clickType, 'aiOutline2')
-            }else {
-              this.openAiDialog(clickType, 'aiOutline')
-            }
-            return;
-          }
-
-          if((this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") && this.cpoteType != 4){
-            let _type = ''
-            if(this.cpoteType == 0){
-              _type = 'aiCpote1'
-            }else if(this.cpoteType == 1){
-              _type = 'aiCpote2'
-            }else if(this.cpoteType == 2){
-              _type = 'aiCpote3'
-            }else if(this.cpoteType == 3){
-              _type = 'aiCpote4'
-            }
-            this.cpoteType++
-            this.openAiDialog(clickType, _type)
-            return;
-          }
-
-          // if (!this.isOutline2) {
-          //   this.openAiDialog(clickType, 'aiTeacher')
-          //   return;
-          // }
-
-
-          if (!this.isOutline2 && (this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3")) {
-            this.openAiDialog(clickType, 'aiTeacher3')
-            return;
-          }
-
-          if (!this.isOutline2 && this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" && this.templateid != "cf5722a4-401b-11ef-b873-005056b86dc3") {
-            this.openAiDialog(clickType, 'aiTeacher2')
-            return;
-          }
-
-          let _pan2 = 1
-          for (var k = 0; k < this.unitJson[0].chapterInfo[0].taskJson.length; k++) {
-            if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail2){
-              _pan2 = 2
-              this.$message.error(`请完善任务${k+1}的课程大纲`)
-              break;
-            }
-            if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail3){
-              _pan2 = 2
-              this.$message.error(`请完善任务${k+1}的课程教案`)
-              break;
-            }
-          }
-
-          if(_pan2 == 2){
-            return;
-          }
-
-          const functionA = () => {
-            setTimeout(() => {
-              this.loading = false
-              this.steps = 3;
-            }, 0)
-            this.isClickColor = 1;
-            this.unitJson[
-              this.unitIndex
-            ].chapterInfo[0].taskJson[0].toolOpen = true;
-            this.$forceUpdate();
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-              setTimeout(() => {
-                this.checkEva(this.checkId);
-              }, 100);
-            }, 1000);
-            if (this.cid == "" || this.cid == undefined) {
-              this.addWork();
-            } else {
-              if (this.userid != this.courseUserid && this.role != "1") {
-                this.updateWork2();
-              } else {
-                this.updateWork();
-              }
-            }
-          }
-
-          if (this.cid) {
-            this.loading = true
-          } else {
-            this.openAiDialog(clickType, "aiTask2", 'all')
-          }
-          functionA()
-        } else {
-          this.$message.error("请补充填写课程名称");
-          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("请补充填写课程名称");
-            return;
-          } else {
-            this.addWork();
-            this.steps++;
-          }
-        } else {
-          if (this.courseName == "") {
-            this.$message.error("请补充填写课程名称");
-            return;
-          } else {
-            if (this.userid != this.courseUserid && this.role != "1") {
-              this.updateWork2();
-            } else {
-              this.updateWork();
-            }
-            this.steps++;
-          }
-        }
-      }
-      // } else {
-      //   if (this.steps == 1) {
-      //     if (this.courseName != "") {
-      //       if (this.cid == "" || this.cid == undefined) {
-      //         this.addWork();
-      //       } else {
-      //         if (this.userid != this.courseUserid && this.role != "1") {
-      //           // this.updateWork2();
-      //         } else {
-      //           this.updateWork();
-      //         }
-      //       }
-      //       this.steps++;
-      //     } else {
-      //       this.$message.error("请补充填写课程名称");
-      //       return;
-      //     }
-      //   } else if (this.steps == 2) {
-      //     if (this.templateC.id != "" || this.templateC.id != undefined) {
-      //       this.cTemplate = this.templateC.content;
-      //     }
-      //     this.dialogVisible2 = false;
-      //     this.steps++;
-      //     setTimeout(() => {
-      //       this.checkEva(this.checkId);
-      //       setTimeout(() => {
-      //         this.checkEva(this.checkId);
-      //       }, 100);
-      //     }, 1000);
-      //   } else if (this.steps == 3) {
-      //     if (this.cid == "" || this.cid == undefined) {
-      //       if (this.courseName == "") {
-      //         this.$message.error("请补充填写课程名称");
-      //         return;
-      //       } else {
-      //         this.addWork();
-      //         this.steps++;
-      //       }
-      //     } else {
-      //       if (this.courseName == "") {
-      //         this.$message.error("请补充填写课程名称");
-      //         return;
-      //       } else {
-      //         if (this.userid != this.courseUserid && this.role != "1") {
-      //           this.updateWork2();
-      //         } else {
-      //           this.updateWork();
-      //         }
-      //         this.steps++;
-      //       }
-      //     }
-      //   }
-      // }
-      this.$refs.stepBox.scrollTop = 0;
-    },
-    unitSet(i) {
-      if (this.unitIndex == i) {
-        return;
-      }
-      this.unitIndex = i;
-      this.isClickColor = 1;
-
-      // this.$refs.rightboxR.scrollTop = 0;
-      this.$refs.unitBox.scrollTop = 0;
-    },
-    panUnitJson() {
-      let _unitIndex = this.unitIndex;
-      let cPan = 1;
-      for (
-        var j = 0;
-        j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-        j++
-      ) {
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-          j
-        ].proVisible2 = false;
-        if (
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-            .length > 1
-        ) {
-          for (
-            var z = 0;
-            z <
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length;
-            z++
-          ) {
-            if (
-              !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
-                z
-              ].tool.length
-            ) {
-              this.$message.error("请把工具添加完整");
-              cPan = 2;
-              break;
-            }
-          }
-        }
-        if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-              (ele) => {
-                return ele.value != "";
-              }
-            );
-        }
-      }
-      return cPan;
-    },
-    unitOpen(i) {
-      if (this.unitJson[i].toolOpen) {
-        this.unitJson[i].toolOpen = false;
-      } else {
-        this.unitJson[i].toolOpen = true;
-      }
-      this.updateWork();
-      this.$forceUpdate();
-    },
-    unitSet2(i) {
-      if (this.panUnitJson() == 2) {
-        return;
-      }
-      // if(this.unitJson[i].toolOpen){
-      //   this.unitJson[i].toolOpen = false
-      //   this.updateWork()
-      //   this.$forceUpdate()
-      //   return
-      // }else {
-      this.unitJson[i].toolOpen = true;
-      // }
-      this.$forceUpdate();
-      if (this.unitIndex == i) {
-        return;
-      }
-      this.unitIndex = i;
-      this.isClickColor = 1;
-
-      // this.$refs.rightboxR.scrollTop = 0;
-      this.$refs.unitBox.scrollTop = 0;
-    },
-    updateCourseState(i) {
-      let params = [
-        {
-          cid: this.cid,
-          state: i,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateCourseMode", params)
-        .then((res) => {
-          this.courseState = i;
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    addtips(){
-      let params = [
-        {
-          cid: this.cid,
-          tips: JSON.stringify(this.aiJson),
-          tid: this.templateid
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addTips", params)
-        .then((res) => {
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    openSaveTips(){
-      this.dialogVisibleTips = true
-    },
-    time() {
-      if (!this.now) {
-        this.now = new Date().getTime();
-        return true;
-      } else {
-        let time = new Date().getTime();
-        if (time - this.now > 3000) {
-          this.now = time;
-          return true;
-        } else {
-          return false;
-        }
-      }
-    },
-    deleteUnit(i) {
-      var _this = this;
-      if (i == 0 && _this.unitJson.length == 1) {
-        _this
-          .$confirm("确定切换成任务模式吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.unitJson[i].dyName = "";
-            // _this.updateCourseState(2);
-          })
-          .catch(() => {
-            return;
-          });
-      } else {
-        _this
-          .$confirm("确定删除此阶段吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.isDelete = 2;
-            // _this.unitIndex = _this.unitIndex - 1;
-            _this.deleteWork(_this.unitJson[i].chapterInfo[0].chapterid);
-            // _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteWork(chapid) {
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          chapid: chapid,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "deleteWork", params)
-        .then((res) => {
-          this.$message({
-            message: "删除成功",
-            type: "success",
-          });
-          let task = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson
-            )
-          );
-          this.unitJson.splice(this.unitIndex, 1);
-          if (this.unitIndex == 0) {
-            this.unitIndex = 0;
-          } else {
-            this.unitIndex = this.unitIndex - 1;
-          }
-
-          if (JSON.stringify(task) != JSON.stringify(this.taskJSONa)) {
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [
-              ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson,
-              ...task,
-            ];
-          }
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    deleteTool(itemTaskIndex, i) {
-      var _this = this;
-      if (_this.time()) {
-        _this
-          .$confirm("确定删除此工具吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].toolChoose.splice(i, 1);
-            _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteSentence(i) {
-      var _this = this;
-      _this
-        .$confirm("确定删除此题目吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.sentenceList.splice(i, 1);
-          _this.$message.success("删除成功");
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    deleteS(s, i, j) {
-      this.sentenceList[i].addSentence.splice(j, 1);
-      if (this.sentenceList[i].rightAnswer.indexOf(s) != -1) {
-        var a = this.sentenceList[i].rightAnswer.indexOf(s);
-        this.sentenceList[i].rightAnswer.splice(a, 1);
-      }
-    },
-    openT() {
-      top.postMessage({ tools: "25" }, "*");
-    },
-    deleteTask(i) {
-      var _this = this;
-      if (_this.time()) {
-        _this
-          .$confirm(
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.length -
-              1 ==
-              i
-              ? "确定删除此任务吗?"
-              : "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-            "提示",
-            {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning",
-            }
-          )
-          .then(() => {
-            if (i == 0 && _this.courseState == 4) {
-              _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                i + 1
-              ].chapterData = JSON.parse(
-                JSON.stringify(
-                  _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[i]
-                    .chapterData
-                )
-              );
-            }
-            _this.$forceUpdate();
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(
-              i,
-              1
-            );
-            _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteTask2(i) {
-      var _this = this;
-      if (_this.time()) {
-        _this
-          .$confirm(
-            "确定删除此任务吗?",
-            "提示",
-            {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning",
-            }
-          )
-          .then(() => {
-            if (i == 0 && _this.courseState == 4) {
-              _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                i + 1
-              ].chapterData = JSON.parse(
-                JSON.stringify(
-                  _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[i]
-                    .chapterData
-                )
-              );
-            }
-            _this.$forceUpdate();
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(
-              i,
-              1
-            );
-            _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-    },
-    clean(i, c) {
-      this.unitJson[this.unitIndex].chapterInfo[i].fileList1.splice(c, 1);
-    },
-    handle_remove1(file, fileList, type) {
-      var _tmp = this.cover;
-      // for (var i = 0, len = _tmp.length; i < len; i++) {
-      //   if (_tmp[i].uid == file.uid) {
-      //     _tmp.splice(i, 1);
-      //     break;
-      //   }
-      //   this.cover = _tmp;
-      // }
-      this.cover = [];
-      this.noneBtnImg = this.cover.length >= 1;
-      this.isSysPic = false;
-      this.isSysPic2 = false;
-      this.$forceUpdate();
-    },
-    addImg(e) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-      e.target.value = "";
-    },
-    addChaptersTools(i) {
-      this.chapTools = [
-        {
-          tools: [],
-          toolDetail: "",
-        },
-      ];
-      this.chapCount = i;
-      this.dialogVisible4 = true;
-    },
-    isNoFinsh() {
-      this.$message.warning("功能正在开发中");
-    },
-    addAttText(i) {
-      this.AttText = {
-        title: "",
-        text: "",
-      };
-      this.taskCount = i;
-      this.AttTextType = 0;
-      this.$forceUpdate();
-      this.dialogVisible6 = true;
-      setTimeout(() => {
-        this.$refs["fuInput"].focus();
-      }, 100);
-    },
-    openLine(i) {
-      this.line = "";
-      this.lineCount = i;
-      this.lineType = 0;
-      this.$forceUpdate();
-      this.dialogVisible7 = true;
-    },
-    pasteLine(i) {
-      navigator.clipboard
-        .readText()
-        .then((v) => {
-          console.log("获取剪贴板成功:", v);
-          const html = v;
-          const regex = /src="(.*?)"/g;
-          const match = regex.exec(html);
-          if (match && match[1]) {
-            console.log(match[1]);
-            this.$message.success("粘贴成功");
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-              i
-            ].chapterData.unshift({
-              name: "链接",
-              title: "嵌入代码",
-              url: match[1],
-              type: 8,
-            });
-          } else {
-            // console.log("未找到包含 src 属性的 iframe");
-            this.$message.error(
-              "系统没有找到粘贴对象,请首先复制可用于粘贴的链接。"
-            );
-          }
-        })
-        .catch((v) => {
-          console.log("获取剪贴板失败: ", v);
-        });
-    },
-    openSource(i) {
-      this.lineCount = i;
-      this.sourceData = {};
-      this.dialogVisibleSource = true;
-      this.updateSourcePan = false;
-    },
-    openAiCreate(i){
-      this.lineCount = i;
-      this.dialogVisibleAiCreate = true;
-    },
-    createAiPpt(json){
-      this.unitJson[0].chapterInfo[0].taskJson[this.lineCount].chapterData.unshift(json);
-      this.dialogVisibleAiCreate = false;
-    },
-    openAiCreateVideo(i){
-      this.lineCount = i;
-      this.dialogVisibleAiCreateVideo = true;
-    },
-    createAiVideo(json){
-      this.unitJson[0].chapterInfo[0].taskJson[this.lineCount].chapterData.unshift(json);
-      // this.dialogVisibleAiCreateVideo = false;
-    },
-    async createTeacherAn(index){
-      this.lineCount = index;
-      this.loading = true
-      let md = new MarkdownIt();
-      if(this.courseState == 4){
-        if(index == 0 || index){
-          let _task = this.unitJson[0].chapterInfo[0].taskJson[index]
-          let name = _task.task+'-教案'
-          let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
-          await this.generate(name, _html, 0)
-        }else {
-          for(var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-            let _task = this.unitJson[0].chapterInfo[0].taskJson[i]
-            let name = _task.task+'-教案'
-            let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
-            await this.generate(name, _html, 0)
-          }
-        }
-      }else if(this.courseState == 5){
-        if(index == 0 || index){
-          let _task = this.unitJson[0].chapterInfo[0].taskJson[index]
-          let name = _task.task+'-教案'
-          let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
-          await this.generate(name, _html, index)
-        }else {
-          for(var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-            let _task = this.unitJson[0].chapterInfo[0].taskJson[i]
-            let name = _task.task+'-教案'
-            let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
-            await this.generate(name, _html, i)
-          }
-        }
-      }
-
-    },
-    async generate(a, html, index) {
-      // 将html文件中需要用到的数据挂载到store上
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>${a}</title>
-          <style>
-          </style>
-      </head>
-      <body>
-      ${html}
-      </body>
-      </html>`;
-      // debugger
-      let dname = a + ".doc";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      const file = new File([blob], dname, { type: 'application/msword' });
-      await this.beforeUploadHtml(file, index)
-    },
-    beforeUploadHtml(event, index) {
-        var file = event;
-        var credentials = {
-            accessKeyId: "AKIATLPEDU37QV5CHLMH",
-            secretAccessKey: "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",
-        }; //秘钥形式的登录上传
-        window.AWS.config.update(credentials);
-        window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-        var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-        var _this = this;
-
-        if (file) {
-            var params = {
-                Key:
-                    file.name.split(".")[0] +
-                    new Date().getTime() +
-                    "." +
-                    file.name.split(".")[file.name.split(".").length - 1],
-                ContentType: file.type,
-                Body: file,
-                "Access-Control-Allow-Credentials": "*",
-                ACL: "public-read",
-            }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-            var options = {
-                partSize: 2048 * 1024 * 1024,
-                queueSize: 2,
-                leavePartsOnError: true,
-            };
-            bucket
-                .upload(params, options)
-                .on("httpUploadProgress", function (evt) {
-                    //这里可以写进度条
-                    // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-                })
-                .send(function (err, data) {
-                  if(index == (_this.unitJson[0].chapterInfo[0].taskJson.length - 1) && _this.courseState == 4){
-                    _this.loading = false
-                  }
-
-                  if(_this.courseState == 5){
-                    _this.loading = false
-                  }
-                  if (err) {
-                      _this.$message.error("上传失败");
-                  } else {
-                    let _index = 0
-                    if(_this.lineCount == 0 || _this.lineCount){
-                      _index = _this.lineCount
-                    }else {
-                      _index = index
-                    }
-                    _this.unitJson[0].chapterInfo[0].taskJson[_index].chapterData.unshift({
-                        name: file.name,
-                        url: data.Location,
-                        type: 3,
-                      })
-                      console.log(data.Location);
-                  }
-                });
-        }
-    },
-    async generate2(a, html, index, callback) {
-      // 将html文件中需要用到的数据挂载到store上
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>${a}</title>
-          <style>
-          </style>
-      </head>
-      <body>
-      ${html}
-      </body>
-      </html>`;
-      // debugger
-      let dname = a + ".doc";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      const file = new File([blob], dname, { type: 'application/msword' });
-      await this.beforeUploadHtml2(file, index, callback)
-    },
-    beforeUploadHtml2(event, index, callback) {
-        var file = event;
-        var credentials = {
-            accessKeyId: "AKIATLPEDU37QV5CHLMH",
-            secretAccessKey: "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",
-        }; //秘钥形式的登录上传
-        window.AWS.config.update(credentials);
-        window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-        var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-        var _this = this;
-
-        if (file) {
-            var params = {
-                Key:
-                    file.name.split(".")[0] +
-                    new Date().getTime() +
-                    "." +
-                    file.name.split(".")[file.name.split(".").length - 1],
-                ContentType: file.type,
-                Body: file,
-                "Access-Control-Allow-Credentials": "*",
-                ACL: "public-read",
-            }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-            var options = {
-                partSize: 2048 * 1024 * 1024,
-                queueSize: 2,
-                leavePartsOnError: true,
-            };
-            bucket
-                .upload(params, options)
-                .on("httpUploadProgress", function (evt) {
-                    //这里可以写进度条
-                    // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-                })
-                .send(async function (err, data) {
-                  if(_this.courseState == 5){
-                    _this.loading = false
-                  }
-                  if (err) {
-                      callback ? callback() : ''
-                      _this.$message.error("上传失败");
-                  } else {
-                    let fileid = await _this.createFileid(data.Location)
-      //               _this.cankaoInfoData.push({
-      //                   name: file.name,
-      //                   url: data.Location,
-      //                   type: 3,
-      //                   fileid: fileid,
-      //               })
-                    _this.infoData2.push({
-                        name: file.name,
-                        url: data.Location,
-                        type: 3,
-                        fileid: fileid,
-                    })
-                    console.log(data.Location);
-                    callback ? callback() : ''
-                  }
-                });
-        }
-    },
-    addSource() {
-      if (!Object.keys(this.sourceData).length) {
-        this.$message.error("请选择要上传的资源");
-        return;
-      }
-      let keys = Object.keys(this.sourceData);
-      for (var i = 0; i < keys.length; i++) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.lineCount
-        ].chapterData.unshift({
-          name: "链接",
-          title: this.sourceData[keys[i]].name,
-          url: this.sourceData[keys[i]].url,
-          type: 14,
-          id: keys[i],
-        });
-      }
-      this.$forceUpdate();
-      this.dialogVisibleSource = false;
-    },
-    updateSource() {
-      if (!Object.keys(this.sourceData).length) {
-        this.$message.error("请选择要上传的资源");
-        return;
-      }
-      let keys = Object.keys(this.sourceData);
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].url = this.sourceData[keys[0]].url;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].title = this.sourceData[keys[0]].name;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].id = keys[0];
-      this.updateSourcePan = false;
-      this.$forceUpdate();
-      this.dialogVisibleSource = false;
-    },
-    deleteM(i, j) {
-      this.testJson.testJson[i].timuList.splice(j, 1);
-    },
-    beforeUploadTiMu(event, i) {
-      const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            loading.close();
-            if (err) {
-              _this.$message.error("上传失败");
-            } else {
-              if (_this.testJson.testJson[i].timuList) {
-                _this.testJson.testJson[i].timuList.push({
-                  src: data.Location,
-                });
-              } else {
-                _this.testJson.testJson[i].timuList = [];
-                _this.testJson.testJson[i].timuList.push({
-                  src: data.Location,
-                });
-              }
-              _this.imgChange3(i);
-              _this.$forceUpdate();
-            }
-          });
-      }
-    },
-    beforeUploadTi(event, i, j) {
-      const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            loading.close();
-            if (err) {
-              _this.$message.error("上传失败");
-            } else {
-              _this.testJson.testJson[i].checkList[j] = {};
-              _this.testJson.testJson[i].checkList[j].src = data.Location;
-              _this.testJson.testJson[i].checkList[j].imgType = 1;
-              _this.imgChange2(i, j);
-              _this.$forceUpdate();
-            }
-          });
-      }
-    },
-    beforeUpload1(event, type) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            // loading.close();
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              // _this.cover.push({
-              //   name: file.name,
-              //   url: data.Location,
-              //   uid: file.uid,
-              // });
-              _this.cover = [
-                {
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                },
-              ];
-              _this.imgChange1(null, null, 1, null);
-              _this.choosePicVisible = false;
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    beforeUploadSelect(event, type) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            // loading.close();
-            if (err) {
-              _this.$message.error("上传失败");
-            } else {
-              _this.selectJson.url = data.Location;
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    chooseSysPic(p) {
-      this.cover = [];
-      setTimeout(() => {
-        this.cover[0] = {
-          name: "系统图片.png",
-          url: p,
-        };
-        this.imgChange1(null, null, 1, null);
-        this.$forceUpdate();
-      }, 0);
-      this.isSysPic = true;
-      this.isSysPic2 = false;
-      this.sysPicVisible = false;
-      this.$forceUpdate();
-    },
-    chooseSysPic2(p) {
-      this.cover = [];
-      setTimeout(() => {
-        this.cover[0] = {
-          name: "网络图片.png",
-          url: p,
-        };
-        this.imgChange1(null, null, 1, null);
-        this.$forceUpdate();
-      }, 0);
-      this.isSysPic2 = true;
-      this.isSysPic = false;
-      this.sysPicVisible2 = false;
-      this.$forceUpdate();
-    },
-    beforeUpload(data) {
-      this.$refs.upload1.uploadFiles;
-      this.uploadLoading1 = true;
-      var file = data.file;
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            _this.uploadLoading1 = false;
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              //上传成功处理
-              _this.unitJson[_this.unitIndex].chapterInfo[0].fileList1.push({
-                name: file.name,
-                url: data.Location,
-                uid: file.uid,
-              });
-              _this.imgChange();
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    onExceed() {
-      this.$message.error("课程封面仅支持上传一张,请删除后再进行上传");
-    },
-    beforeUpload2(event, unitIndex, type, itemTaskIndex) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-      if (type == 3) {
-        var b = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-        ];
-        if (
-          b.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) != -1
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        } else if (
-          file.name
-            .split(".")
-          [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        }
-      }
-      this.inputShow = false;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].progress = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].proVisible = true;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isFinishSize = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
-      _this.$forceUpdate();
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = parseInt((evt.loaded / evt.total) * 100);
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            _this.$forceUpdate();
-          })
-          .send(function (err, data) {
-            // loading.close();
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = 100;
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize =
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].isAllSize;
-            _this.$forceUpdate();
-            setTimeout(() => {
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].proVisible = false;
-              _this.$forceUpdate();
-            }, 1000);
-            _this.inputShow = true;
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              if (type == 13) {
-                let _type = 2;
-                var imgA = [
-                  "png",
-                  "jpg",
-                  "jpeg",
-                  "bmp",
-                  "gif",
-                  "webp",
-                  "psd",
-                  "svg",
-                  "tiff",
-                ];
-                var fileA = [
-                  "PDF",
-                  "DOC",
-                  "DOCX",
-                  "DOCM",
-                  "DOTM",
-                  "DOTX",
-                  "PPTX",
-                  "PPSX",
-                  "PPT",
-                  "PPS",
-                  "PPTM",
-                  "POTM",
-                  "PPAM",
-                  "POTX",
-                  "PPSM",
-                  "XLSX",
-                  "XLS",
-                ];
-                var videoA = [
-                  "AVI",
-                  "NAVI",
-                  "MPEG",
-                  "ASF",
-                  "MOV",
-                  "WMV",
-                  "3GP",
-                  "RM",
-                  "RMVB",
-                  "FLV",
-                  "F4V",
-                  "H.264",
-                  "H.265",
-                  "REAL VIDEO",
-                  "MKV",
-                  "WebM",
-                  "HDDVD",
-                  "MP4",
-                  "MPG",
-                  "M4V",
-                  "MGV",
-                  "OGV",
-                  "QTM",
-                  "STR",
-                  "AMC",
-                  "DVX",
-                  "EVO",
-                  "DAT",
-                  "OGG",
-                  "OGM",
-                ];
-                if (
-                  fileA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  _type = 3;
-                } else if (
-                  videoA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  _type = 2;
-                } else if (
-                  imgA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleLowerCase()
-                  ) != -1
-                ) {
-                  _type = 13;
-                } else {
-                  _type = 12;
-                }
-                _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData.unshift({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                });
-                _this.imgChange1(null, null, _type, itemTaskIndex);
-              } else if (type == 2 || type == 3 || type == 12) {
-                _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData.unshift({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: type,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 4) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].fileList1.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 5) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].homeworkList.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              }
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    beforeUploadInfo2(event, type) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-      var xianObj = ['DOCX','DOC','PPT','PPTX','MD','TXT','PDF']
-      if (
-        xianObj.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) == -1
-        ) {
-        this.$message.error("请上传.doc,.docx,.ppt,.pptx,.md,.txt,.pdf文件!");
-        this.inputShow = true;
-        // var a = _this.$refs.upload1.uploadFiles;
-        // a.splice(a.length - 1, a.length);
-        // loading.close();
-        return;
-      }
-
-      if (type == 3) {
-        var b = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-        ];
-        if (
-          b.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) != -1
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        } else if (
-          file.name
-            .split(".")
-          [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        }
-      }
-      
-      this.inputShow = false;
-      if(type == 14){
-        _this.teacherinfoprogress = 0;
-        _this.teacherinfoproVisible = true;
-        _this.teacherinfoisFinishSize = 0;
-        _this.teacherinfoisAllSize = (file.size / 1024 / 1024).toFixed(2);
-      }else{
-        _this.infoprogress = 0;
-        _this.infoproVisible = true;
-        _this.infoisFinishSize = 0;
-        _this.infoisAllSize = (file.size / 1024 / 1024).toFixed(2);
-      }
-
-      _this.$forceUpdate();
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-            if(type == 14){
-              _this.teacherinfoprogress = parseInt((evt.loaded / evt.total) * 100);
-              _this.teacherinfoisFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            }else {
-              _this.infoprogress = parseInt((evt.loaded / evt.total) * 100);
-              _this.infoisFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            }
-            _this.$forceUpdate();
-          })
-          .send(async function (err, data) {
-            // loading.close();
-            if(type == 14){
-              _this.teacherinfoprogress = 100;
-              _this.teacherinfoisFinishSize = _this.teacherinfoisAllSize;
-            }else {
-              _this.infoprogress = 100;
-              _this.infoisFinishSize = _this.infoisAllSize;
-            }
-
-            _this.$forceUpdate();
-            _this.inputShow = true;
-            if (err) {
-              setTimeout(() => {
-                if(type == 14){
-                  _this.teacherinfoproVisible = false;
-                }else{
-                  _this.infoproVisible = false;
-                }
-                _this.$forceUpdate();
-              }, 1000);
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              let fileid = await _this.createFileid(data.Location)
-              if(fileid){
-                if(type == 14){
-                  _this.teacherinfoproVisible = false;
-                }else{
-                  _this.infoproVisible = false;
-                }
-                _this.$forceUpdate();
-              }
-              var imgA = [
-                "png",
-                "jpg",
-                "jpeg",
-                "bmp",
-                "gif",
-                "webp",
-                "psd",
-                "svg",
-                "tiff",
-              ];
-              var fileA = [
-                "PDF",
-                "DOC",
-                "DOCX",
-                "DOCM",
-                "DOTM",
-                "DOTX",
-                "PPTX",
-                "PPSX",
-                "PPT",
-                "PPS",
-                "PPTM",
-                "POTM",
-                "PPAM",
-                "POTX",
-                "PPSM",
-                "XLSX",
-                "XLS",
-              ];
-              var videoA = [
-                "AVI",
-                "NAVI",
-                "MPEG",
-                "ASF",
-                "MOV",
-                "WMV",
-                "3GP",
-                "RM",
-                "RMVB",
-                "FLV",
-                "F4V",
-                "H.264",
-                "H.265",
-                "REAL VIDEO",
-                "MKV",
-                "WebM",
-                "HDDVD",
-                "MP4",
-                "MPG",
-                "M4V",
-                "MGV",
-                "OGV",
-                "QTM",
-                "STR",
-                "AMC",
-                "DVX",
-                "EVO",
-                "DAT",
-                "OGG",
-                "OGM",
-              ];
-              let _type = 2;
-              if (
-                fileA.indexOf(
-                  data.Location.split(".")[
-                    data.Location.split(".").length - 1
-                  ].toLocaleUpperCase()
-                ) != -1
-              ) {
-                _type = 3;
-              } else if (
-                videoA.indexOf(
-                  data.Location.split(".")[
-                    data.Location.split(".").length - 1
-                  ].toLocaleUpperCase()
-                ) != -1
-              ) {
-                _type = 2;
-              } else if (
-                imgA.indexOf(
-                  data.Location.split(".")[
-                    data.Location.split(".").length - 1
-                  ].toLocaleLowerCase()
-                ) != -1
-              ) {
-                _type = 13;
-              } else {
-                _type = 12;
-              }
-              if (type == 13) {
-                _this.infoData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                });
-                _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.unshift({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                })
-              }else if (type == 14) {
-                _this.teacherInfoData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                });
-                _this.infoData2.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                });
-              }else if (type == 15) {
-                _this.infoData2.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                });
-                _this.infoData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                });
-                _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.unshift({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                })
-              }
-              console.log(data.Location);
-              console.log(fileid);
-            }
-          });
-      }
-    },
-    beforeUpload3(event, unitIndex, type, itemTaskIndex, string) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-      if (type == 3) {
-        var b = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-        ];
-        if (
-          b.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) != -1
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        } else if (
-          file.name
-            .split(".")
-          [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        }
-      }
-      this.inputShow = false;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].progress = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].proVisible = true;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isFinishSize = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
-      _this.$forceUpdate();
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = parseInt((evt.loaded / evt.total) * 100);
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            _this.$forceUpdate();
-          })
-          .send(function (err, data) {
-            // loading.close();
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = 100;
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize =
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].isAllSize;
-            _this.$forceUpdate();
-            setTimeout(() => {
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].proVisible = false;
-              _this.$forceUpdate();
-            }, 1000);
-            _this.inputShow = true;
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              if (type == 2 || type == 3) {
-                _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData.unshift({
-                  name: file.name,
-                  // name: string+''+(_this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  //   itemTaskIndex
-                  // ].chapterData.length+1),
-                  url: data.Location,
-                  uid: file.uid,
-                  type: type,
-                  text: string,
-                  // text: string + '' + (_this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  //   itemTaskIndex
-                  // ].chapterData.length + 1),
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 4) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].fileList1.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 5) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].homeworkList.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              }
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    addunit() {
-      this.unitJson.push({
-        dyName: "", //单元标题
-        isUpdate: 1,
-        easy: this.unitJson[this.unitJson.length - 1].easy ? 1 : 0,
-        chapterInfo: [
-          {
-            isread: false,
-            chapterid: this.guid(),
-            title: "",
-            courseName: "",
-            taskJson: [
-              {
-                task: "",
-                taskDetail: "",
-                chapterData: [],
-                toolText: "",
-                toolChoose: [
-                  {
-                    tool: [],
-                    toolDetail: "",
-                    toolType: 0,
-                    askCount: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  },
-                ],
-                isShowTools: false,
-                askCount: 1,
-                isFold: 1,
-                askTitle: "",
-                askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                checkJson: [{ checkCount: [], checkPerent: [] }],
-                homeworkList: [],
-              },
-            ],
-            itemCount: 1,
-            fileList1: [],
-            video: [],
-            testData: [],
-            pData: [],
-            templateArray: [],
-          },
-        ],
-      });
-      this.addindex = this.unitJson.length - 1;
-
-      setTimeout(() => {
-        this.unitIndex = this.unitJson.length - 1;
-        setTimeout(() => {
-          console.log(this.$refs.dyInput);
-          this.$refs.dyInput[0].focus();
-        }, 100);
-        this.unitSet(this.unitIndex);
-      }, 0);
-    },
-    addToolFun(itemTaskIndex) {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].toolChoose.push({
-        tool: [],
-        toolDetail: "",
-        toolType: 0,
-        askCount: 1,
-        askTitle: "",
-        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      });
-    },
-    addTaskBorder() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson.push({
-        task: "",
-        taskDetail: "",
-        chapterData: [],
-        toolText: "",
-        toolChoose: [
-          {
-            tool: [],
-            toolDetail: "",
-            toolType: 0,
-            askCount: 1,
-            askTitle: "",
-            askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          },
-        ],
-        isShowTools: false,
-        askCount: 1,
-        isFold: 1, //任务收起状态
-        askTitle: "",
-        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-        checkJson: [{ checkCount: [], checkPerent: [] }],
-        homeworkList: [],
-      });
-
-      setTimeout(() => {
-        this.checkEva(this.checkId);
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-        }, 100);
-      }, 100);
-    },
-    addTaskBorder2(type, index) {
-      if (this.ttaskDetailLoading.join(",").indexOf('task-') !== -1) {
-        this.$message({
-          message: "有大纲在生成请生成完之后才能使用此功能",
-          type: "warning"
-        });
-        return;
-      }
-      if(type == 1){
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson.splice(index,0,{
-          task: "",
-          isTask2: true,
-          isTask3: true,
-          taskDetail: "",
-          chapterData: [],
-          toolText: "",
-          toolChoose: [
-            {
-              tool: [],
-              toolDetail: "",
-              toolType: 0,
-              askCount: 1,
-              askTitle: "",
-              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-            },
-          ],
-          isShowTools: false,
-          askCount: 1,
-          isFold: 0, //任务收起状态
-          askTitle: "",
-          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          checkJson: [{ checkCount: [], checkPerent: [] }],
-          homeworkList: [],
-        })
-      }else if(type == 2){
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson.splice(index+1,0,{
-          task: "",
-          isTask2: true,
-          isTask3: true,
-          taskDetail: "",
-          chapterData: [],
-          toolText: "",
-          toolChoose: [
-            {
-              tool: [],
-              toolDetail: "",
-              toolType: 0,
-              askCount: 1,
-              askTitle: "",
-              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-            },
-          ],
-          isShowTools: false,
-          askCount: 1,
-          isFold: 0, //任务收起状态
-          askTitle: "",
-          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          checkJson: [{ checkCount: [], checkPerent: [] }],
-          homeworkList: [],
-        })
-      }
-
-      setTimeout(() => {
-        this.checkEva(this.checkId);
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-        }, 100);
-      }, 100);
-    },
-    add(e, i) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-    },
-    fold(i, e) {
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold == 0 ||
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold == 2
-      ) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 1;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
-      }
-    },
-    fold2(i) {
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold2) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isFold2 = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold2 = true;
-      }
-      this.$forceUpdate();
-    },
-    foldEva(i) {
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isEvaFold) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isEvaFold = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isEvaFold = true;
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-          }, 500);
-        }, 0);
-      }
-      this.$forceUpdate();
-    },
-    foldC(i) {
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFoldchapter
-      ) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isFoldchapter = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isFoldchapter = true;
-      }
-      this.$forceUpdate();
-    },
-    fold3(i, ti) {
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[ti]
-          .isFold3
-      ) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-          ti
-        ].isFold3 = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-          ti
-        ].isFold3 = true;
-      }
-      this.$forceUpdate();
-    },
-    deleteHomeworkBox(unitIndex, index, i) {
-      this.unitJson[unitIndex].chapterInfo[index].taskJson[
-        this.taskCount
-      ].homeworkList.splice(i, 1);
-    },
-    getStudent() {
-      let params = {
-        oid: this.oid,
-        cu: "",
-        cn: this.searchPeople,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectStudentAdd", params)
-        .then((res) => {
-          this.studentJuri = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-      // 添加协同成员其他选项按钮
-      getTeacherCopy(){
-      this.CollLoading=true
-
-      this.collid = ''
-      this.collid = '1xpz'
-      let params = {
-        oid:
-          this.org && this.org != "undefined" && this.org != "null"
-            ? this.org
-            : this.oid,
-        cu: "",
-        cn: this.searchTN,
-        coll: ''
-      };
-      this.ajax
-        .get(
-          this.$store.state.api +
-            (this.org && this.org != "undefined" && this.org != "null"
-              ? "selectCollaborativeMembersOrg"
-              : "selectCollaborativeMembers"),
-          params
-        )
-        .then((res) => {
-          let teacherJuri = res.data[0];
-          this.CollaborativeTeaList = res.data[1];
-          for (var i = 0; i < teacherJuri.length; i++) {
-            if (teacherJuri[i].userid == this.userid) {
-              teacherJuri.splice(i, 1);
-              break;
-            }
-          }
-
-          this.teacherJuri = teacherJuri.filter((i,index)=>{
-            return (i.cclassid == '' || i.cclassid == null)
-          })
-          console.log(' this.teacherJuri', this.teacherJuri);
-
-
-          let _check = [];
-          let _check2 = [];
-          for (var i = 0; i < this.teacherJuri.length; i++) {
-            var gid = this.teacherJuri[i].userid;
-            _check.push(gid);
-          }
-          for (var i = 0; i < this.checkboxList3.length; i++) {
-            var _id = this.checkboxList3[i];
-            if (_check.indexOf(_id) !== -1) {
-              _check2.push(_id);
-            }
-          }
-          
-          if (_check2.length==0 && _check.length==0) {
-
-          }else{
-            this.checkAll2 = _check2.length === _check.length;
-          }
-          this.CollLoading=false
-
-        })
-        .catch((err) => {
-          console.error(err);
-          this.CollLoading=false
-        });
-    },
-    getTeacher(val) {
-      this.CollLoading=true
-      this.collid = ''
-      this.collid = !val ? '' : val
-
-      let params = {
-        oid:
-          this.org && this.org != "undefined" && this.org != "null"
-            ? this.org
-            : this.oid,
-        cu: "",
-        cn: this.searchTN,
-        coll: this.collid
-      };
-      this.ajax
-        .get(
-          this.$store.state.api +
-          (this.org && this.org != "undefined" && this.org != "null"
-            ? "selectCollaborativeMembersOrg"
-            : "selectCollaborativeMembers"),
-          params
-        )
-        .then((res) => {
-          let teacherJuri = res.data[0];
-          this.CollaborativeTeaList = res.data[1];
-
-          for (var i = 0; i < teacherJuri.length; i++) {
-            if (teacherJuri[i].userid == this.userid) {
-              teacherJuri.splice(i, 1);
-              break;
-            }
-          }
-          this.teacherJuri = teacherJuri;
-
-          let _check = [];
-          let _check2 = [];
-          for (var i = 0; i < this.teacherJuri.length; i++) {
-            var gid = this.teacherJuri[i].userid;
-            _check.push(gid);
-          }
-          for (var i = 0; i < this.checkboxList3.length; i++) {
-            var _id = this.checkboxList3[i];
-            if (_check.indexOf(_id) !== -1) {
-              _check2.push(_id);
-            }
-          }
-          
-          if (_check2.length==0 && _check.length==0) {
-
-          }else{
-            this.checkAll2 = _check2.length === _check.length;
-          }
-          this.CollLoading=false
-        })
-        .catch((err) => {
-          console.error(err);
-          this.CollLoading=false
-        });
-    },
-    searchStudent() {
-      this.getStudent();
-    },
-    selectGrage() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectGrageBySchool", params)
-        .then((res) => {
-          this.gradeList = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    //获取班级列表
-    getClass() {
-      let params = {
-        oid: this.oid,
-        gid: this.gradeId,
-        cn: this.classSearch,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectClassBySchoolSearch2", params)
-        .then((res) => {
-          if (!this.grade.length) {
-            this.grade = res.data[0];
-          }
-          this.grade2 = res.data[0];
-          this.classJuri = res.data[0];
-          let _check = [];
-          let _check2 = [];
-          for (var i = 0; i < this.grade2.length; i++) {
-            var gid = this.grade2[i].id;
-            _check.push(gid);
-          }
-          for (var i = 0; i < this.checkboxList2.length; i++) {
-            var _id = this.checkboxList2[i];
-            if (_check.indexOf(_id) !== -1) {
-              _check2.push(_id);
-            }
-          }
-          this.checkAll = _check2.length === _check.length;
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    CourseType2Change(val) {
-      this.pTypeCheck = [];
-      for (var i = 0; i < this.CourseType2.length; i++) {
-        let typeA = this.CourseType2[i];
-        if (val.indexOf(typeA.name) != -1) {
-          this.pTypeCheck.push(...typeA.id);
-        }
-      }
-    },
-    getChapterData(e, i, j, ic, type) {
-      e.stopPropagation();
-      this.updataC = true;
-      this.icc = ic;
-      if ((type == 2 || type == 3) && e.target.tagName !== "INPUT") {
-        console.log("还不能下载图片喔");
-      }
-    },
-    deleteChapterData(e, i, j, ic, taskI) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitJson[i].chapterInfo[j].taskJson[taskI].chapterData.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkInfoData(fileid, file){
-      let type = 1
-      let index = 0
-      for(let i = 0; i < this.infoData.length; i++){
-        if(this.infoData[i].fileid == fileid){
-          type = 2
-          index = i
-        }
-      }
-      if(type == 2){
-        this.infoData.splice(index, 1)
-      }else {
-        this.infoData.push({...file})
-      }
-    },
-    deleteInfoData(e, ic) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.infoData.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    deleteInfoData2(e, ic) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.infoData2.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    deleteCankaoInfoData(e, ic) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.cankaoInfoData.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    deleteTeacherInfoData(e, ic) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.teacherInfoData.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    updataVideoT(e, i, j, ic) {
-      // e.stopPropagation();
-      // this.unitJson[i].chapterInfo[0].taskJson[j].chapterData[
-      //   ic
-      // ].name = JSON.parse(JSON.stringify(e.target.value));
-      this.line =
-        this.unitJson[i].chapterInfo[0].taskJson[j].chapterData[ic].name;
-      this.taskCount = j;
-      this.lineCount = ic;
-      this.dialogVisibleupdataVideoT = true;
-      this.$forceUpdate();
-    },
-    checkChpater(e, i, j, ic){
-      let type = this.unitJson[i].chapterInfo[0].taskJson[j].chapterData[ic].type
-      if(type == 3){
-        var fileA = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-          "XLSX",
-          "XLS"
-        ];
-        let url = this.unitJson[i].chapterInfo[0].taskJson[j].chapterData[ic].url
-        if (
-          fileA.indexOf(
-            url.split(".")[
-						url.split(".").length - 1
-            ].toLocaleUpperCase()
-          ) != -1
-        ) {
-          this.dialogVisibleOffice = true
-          this.wurl = url
-        } else if (
-          "pdf".indexOf(
-            url.split(".")[
-						url.split(".").length - 1
-            ].toLocaleLowerCase()
-          ) != -1
-        ) {
-          this.dialogVisiblePdf = true
-          this.wurl = url
-        }
-      }
-      
-    },
-    checkChpater2(e, ic){
-      let type = this.infoData2[ic].type
-      if(type == 3){
-        var fileA = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-          "XLSX",
-          "XLS"
-        ];
-        let url = this.infoData2[ic].url
-        if (
-          fileA.indexOf(
-            url.split(".")[
-						url.split(".").length - 1
-            ].toLocaleUpperCase()
-          ) != -1
-        ) {
-          this.dialogVisibleOffice = true
-          this.wurl = url
-        } else if (
-          "pdf".indexOf(
-            url.split(".")[
-						url.split(".").length - 1
-            ].toLocaleLowerCase()
-          ) != -1
-        ) {
-          this.dialogVisiblePdf = true
-          this.wurl = url
-        }
-      }
-      
-    },
-    updataVideoC() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].name = JSON.parse(
-        JSON.stringify(this.line)
-      );
-      this.dialogVisibleupdataVideoT = false;
-      this.$forceUpdate();
-    },
-    upCd(e, i, j, taskCount, ic) {
-      e.stopPropagation();
-      if (ic == 0) {
-        return;
-      }
-      var a = JSON.parse(
-        JSON.stringify(
-          this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[
-          ic - 1
-          ]
-        )
-      );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic - 1] =
-        JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic]
-          )
-        );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
-      this.$forceUpdate();
-    },
-    downCd(e, i, j, taskCount, ic) {
-      e.stopPropagation();
-      if (
-        ic ==
-        this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData.length -
-        1
-      ) {
-        return;
-      }
-      var a = JSON.parse(
-        JSON.stringify(
-          this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[
-          ic + 1
-          ]
-        )
-      );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic + 1] =
-        JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic]
-          )
-        );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
-      this.$forceUpdate();
-    },
-    async upTool(e, i, j, tooli) {
-      e.stopPropagation();
-      if (tooli == 0) {
-        return;
-      }
-      let count1 = await this.getWorksCount(3, i, j, tooli - 1);
-      let count2 = await this.getWorksCount(3, i, j, tooli);
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            var a = JSON.parse(
-              JSON.stringify(
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[
-                tooli - 1
-                ]
-              )
-            );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-              JSON.parse(
-                JSON.stringify(
-                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-                )
-              );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            return;
-          });
-      } else {
-        var a = JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]
-          )
-        );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-          JSON.parse(
-            JSON.stringify(
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-            )
-          );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-        this.$forceUpdate();
-      }
-    },
-    async downTool(e, i, j, tooli) {
-      e.stopPropagation();
-      if (
-        tooli ==
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length - 1
-      ) {
-        return;
-      }
-      let count1 = await this.getWorksCount(3, i, j, tooli + 1);
-      let count2 = await this.getWorksCount(3, i, j, tooli);
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            var a = JSON.parse(
-              JSON.stringify(
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[
-                tooli + 1
-                ]
-              )
-            );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-              JSON.parse(
-                JSON.stringify(
-                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-                )
-              );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            return;
-          });
-      } else {
-        var a = JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]
-          )
-        );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-          JSON.parse(
-            JSON.stringify(
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-            )
-          );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-        this.$forceUpdate();
-      }
-    },
-    addWork(type) {
-      if(type == 2 && this.courseName == "") {
-          this.$message.error("请补充填写课程名称");
-          return;
-      }
-      let cPan = 1;
-      for (var i = 0; i < this.unitJson.length; i++) {
-        for (
-          var j = 0;
-          j < this.unitJson[i].chapterInfo[0].taskJson.length;
-          j++
-        ) {
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
-          if (
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
-          ) {
-            for (
-              var z = 0;
-              z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
-              z++
-            ) {
-              if (
-                !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
-                  .length
-              ) {
-                this.$message.error("请把工具添加完整");
-                cPan = 2;
-                break;
-              }
-            }
-          }
-          if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
-            this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
-              i
-            ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
-              return ele.value != "";
-            });
-          }
-        }
-      }
-      this.inputShow = true;
-
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      for (var i = 0; i < this.unitJson.length; i++) {
-        delete this.unitJson[i].isUpdate;
-      }
-      if(!this.targetCourseText2){
-        this.courseText = this.targetCourseText ? JSON.parse(JSON.stringify(this.targetCourseText)) : this.courseText
-      }
-      let params = [
-        {
-          uid: this.userid,
-          title: this.courseName,
-          brief: this.courseText,
-          cover:
-            this.cover.length > 0
-              ? JSON.stringify(this.cover)
-              : JSON.stringify([
-                {
-                  name: "noBanner.jpg",
-                  url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
-                  uid: 1656409780264,
-                  status: "success",
-                },
-              ]),
-          evaId: this.evalua,
-          astudent:
-            this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
-          see: this.isTeacherSee == true ? 1 : 0,
-          chapters: JSON.stringify(this.unitJson),
-          template: this.cTemplate != "undefined" ? this.cTemplate : "",
-          courseType: JSON.stringify(this.courseTypeId),
-          ateacher:
-            this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
-          inviteCode: JSON.stringify(this.inviteCode),
-          refile: JSON.stringify(this.infoData),
-          reBrief: this.courseText2,
-          cpote: JSON.stringify(this.cpote),
-          setting: JSON.stringify({
-            courseJie: this.courseJie, 
-            courseTime: this.courseTime,
-            teacherInfoData: this.teacherInfoData,
-            teacherCourseText: this.teacherCourseText,
-            targetCourseText: this.targetCourseText,
-            cankaoInfoData: this.cankaoInfoData,
-            infoData2: this.infoData2,
-            isuseT: this.isuseT,
-            mode: this.mode,
-            targetCourseText2: this.targetCourseText2,
-          }),
-          iresearch: this.isFileSearch ? 1 : 2,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addWorkNew2AI3", params)
-        .then((res) => {
-          console.log(this.steps);
-          if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
-            this.$message({
-              message: "新增成功",
-              type: "success",
-            });
-          }
-          this.number = res.data.ordernumber;
-          this.courseId = res.data.courseId;
-          this.cid = res.data.courseId;
-          this.courseUserid = this.userid;
-          this.islogin = true;
-          // this.updateCourseState(4);
-          this.updateCourseState(5);
-          this.addtips()
-          if(type == 2){
-            this.retrunCourse()
-          }
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    goCourse() {
-      top.postMessage({ cid: this.courseId, type: "1" }, "*");
-    },
-    updateWork2() {
-      let _unitIndex = this.unitIndex;
-      let cPan = 1;
-      for (
-        var j = 0;
-        j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-        j++
-      ) {
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-          j
-        ].proVisible2 = false;
-        if (
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-            .length > 1
-        ) {
-          for (
-            var z = 0;
-            z <
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length;
-            z++
-          ) {
-            if (
-              !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
-                z
-              ].tool.length
-            ) {
-              this.$message.error("请把工具添加完整");
-              cPan = 2;
-              break;
-            }
-          }
-        }
-        if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-              (ele) => {
-                return ele.value != "";
-              }
-            );
-        }
-      }
-      this.inputShow = true;
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          unitIndex: _unitIndex,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateWorkNew4", params)
-        .then((res) => {
-          this.$message({
-            message: "修改成功",
-            type: "success",
-          });
-          this.courseId = this.cid;
-          this.addtips();
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    updateWork3(unitIndex) {
-      let _unitIndex = unitIndex;
-      let cPan = 1;
-      for (
-        var j = 0;
-        j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-        j++
-      ) {
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-          j
-        ].proVisible2 = false;
-        if (
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-            .length > 1
-        ) {
-          for (
-            var z = 0;
-            z <
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length;
-            z++
-          ) {
-            if (
-              !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
-                z
-              ].tool.length
-            ) {
-              this.$message.error("请把工具添加完整");
-              cPan = 2;
-              break;
-            }
-          }
-        }
-        if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-              (ele) => {
-                return ele.value != "";
-              }
-            );
-        }
-      }
-      this.inputShow = true;
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          unitIndex: _unitIndex,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateWorkNew4", params)
-        .then((res) => {
-          // this.$message({
-          //   message: "修改成功",
-          //   type: "success",
-          // });
-          this.courseId = this.cid;
-          this.addtips()
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    updateWork() {
-      let cPan = 1;
-      for (var i = 0; i < this.unitJson.length; i++) {
-        for (
-          var j = 0;
-          j < this.unitJson[i].chapterInfo[0].taskJson.length;
-          j++
-        ) {
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
-          if (
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
-          ) {
-            for (
-              var z = 0;
-              z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
-              z++
-            ) {
-              if (
-                !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
-                  .length
-              ) {
-                this.$message.error("请把工具添加完整");
-                cPan = 2;
-                break;
-              }
-            }
-          }
-          if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
-            this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
-              i
-            ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
-              return ele.value != "";
-            });
-          }
-        }
-      }
-      this.inputShow = true;
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      for (var i = 0; i < this.unitJson.length; i++) {
-        delete this.unitJson[i].isUpdate;
-      }
-      if(!this.targetCourseText2){
-        this.courseText = this.targetCourseText ? JSON.parse(JSON.stringify(this.targetCourseText)) : this.courseText
-      }
-      let params = [
-        {
-          cid: this.cid,
-          title: this.courseName,
-          brief: this.courseText,
-          cover:
-            this.cover.length > 0
-              ? JSON.stringify(this.cover)
-              : JSON.stringify([
-                {
-                  name: "noBanner.jpg",
-                  url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
-                  uid: 1656409780264,
-                  status: "success",
-                },
-              ]),
-          evaId: this.evalua,
-          astudent:
-            this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
-          see: this.isTeacherSee == true ? 1 : 0,
-          chapters: JSON.stringify(this.unitJson),
-          template: this.myWord != "undefined" ? this.myWord : [],
-          uid: this.userid,
-          courseType: JSON.stringify(this.courseTypeId),
-          ateacher:
-            this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
-          inviteCode: JSON.stringify(this.inviteCode),
-          refile: JSON.stringify(this.infoData),
-          reBrief: this.courseText2,
-          cpote: JSON.stringify(this.cpote),
-          setting: JSON.stringify({
-            courseJie: this.courseJie, 
-            courseTime: this.courseTime,
-            teacherInfoData: this.teacherInfoData,
-            teacherCourseText: this.teacherCourseText,
-            targetCourseText: this.targetCourseText,
-            cankaoInfoData: this.cankaoInfoData,
-            infoData2: this.infoData2,
-            isuseT: this.isuseT,
-            mode: this.mode,
-            targetCourseText2: this.targetCourseText2,
-          }),
-          iresearch: this.isFileSearch ? 1 : 2,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateWorkNew2AI3", params)
-        .then((res) => {
-          if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
-            if (this.cidType == 1) {
-              this.$message({
-                message: "修改成功",
-                type: "success",
-              });
-            } else {
-              this.$message({
-                message: "新增成功",
-                type: "success",
-              });
-            }
-          }
-          this.number = this.nbOrder;
-          this.courseId = this.cid;
-          this.addtips()
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    insertWord() {
-      this.dialogVisible1 = true;
-      this.updateBoolean2 = false;
-      this.tTitle = "";
-      this.tdetail = "";
-    },
-    addWord() {
-      this.unitJson[this.unitIndex].chapterInfo[0].fileList1.push({
-        name: this.tTitle,
-        content: this.tdetail,
-        uid: this.guid(),
-      });
-      this.dialogVisible1 = false;
-    },
-    upWord() { },
-    selectWord(uid, i, c) {
-      this.dialogVisible1 = true;
-      this.updateBoolean2 = true;
-      if (
-        uid == this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].uid
-      ) {
-        this.tTitle =
-          this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].name;
-        this.tdetail =
-          this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].content;
-      }
-    },
-    isAddPP() {
-      if (this.checkboxList.length > 0) {
-        this.$message({
-          message: "添加成功",
-          type: "success",
-        });
-        this.dialogVisible3 = false;
-      } else {
-        this.$message({
-          message: "请添加课程成员",
-          type: "error",
-        });
-      }
-    },
-    isAddClass() {
-      this.dialogVisibleClass = false;
-    },
-    isAddPPTeacher() {
-      this.dialogVisibleMember = false;
-      this.setMan();
-    },
-    getTipsTemplate(){
-      if(this.templateid){
-        let params = {
-          id: this.templateid
-        }
-        this.ajax
-        .get(this.$store.state.api + "selectTipsTemplateById", params)
-        .then((res) => {
-          if(res.data[0].length){
-            this.tipsJson = res.data[0][0]
-            this.aiJson = JSON.parse(res.data[0][0].tips)
-            this.aiJson.teacherDetail2 = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-            this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
-            this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
-            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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
-            }
-
-
-            // if(this.templateid == '4480d65a-1e48-11ef-bee5-005056b86db5'){
-            //   this.aiJson.aiCpoteTask = this.aiJson.aiCpoteTask ? this.aiJson.aiCpoteTask : '请根据<任务簇>,帮我取出里面对应的任务名'
-            // }
-
-            // if(this.templateid == 'cf5722a4-401b-11ef-b873-005056b86db5'){
-            //   this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
-            //   this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
-            //   this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
-            //   this.aiJson.aiDetail = '请根据#参考资料(上下文中可能蕴含不相关的内容,请你无视不相关内容),为一个<课程标题>的<学科>整合跨学科的,面向<年级>年级学生的项目式学习课程生成课程概况,驱动性问题(有且仅需要生成1个问题)和项目成果&评价标准。请你再生成时更有创意一点,不要与#参考资料中原有的驱动性问题重复。'
-            //   this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
-            //   this.aiJson.aiOutline = '请为这个名为<课程名字>的<课程学科>学科的,面向<面向年级>学生的项目式学习课程设计序列教学活动(需要每个任务都需要至少200个token的详细描述)。你需要参考课程简要描述<课程简要描述>和<课程目标>和#参考资料(上下文中可能蕴含不相关的内容,请你无视不相关内容),并产出每个教学任务的设计以及每个教学活动的评价量规(学生能做到...)。'
-            //   this.aiJson.aiTeacher = '请根据<任务名+单一任务描述>和并参考<课程简要描述>和#参考上下文(上下文中可能蕴含不相关的内容,请你无视不相关内容),为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),评价标准(学生能做到...),相关知识点的讲解,练习(练习需要包含示例答案)。'
-            // }
-            this.$forceUpdate();
-          }
-        })
-        .catch((err) => { });
-      }
-    },
-    getTemplate() {
-      this.ajax
-        .get(this.$store.state.api + "getCourseTemplateT", "")
-        .then((res) => {
-          this.templateArray = res.data[0];
-          this.getTemplateOid();
-          this.$forceUpdate();
-        })
-        .catch((err) => { });
-    },
-    getTemplateOid() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseTemplateTByOid", params)
-        .then((res) => {
-          if (res.data[0].length) {
-            this.templateArray = [...res.data[0], ...this.templateArray];
-          }
-          this.getTemplateOrg();
-          this.$forceUpdate();
-        })
-        .catch((err) => { });
-    },
-    getTemplateOrg() {
-      let params = {
-        oid: this.org,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseTemplateTByOid", params)
-        .then((res) => {
-          if (res.data[0].length) {
-            this.templateArray = [...res.data[0], ...this.templateArray];
-          }
-          this.$forceUpdate();
-        })
-        .catch((err) => { });
-    },
-    clearChoose() {
-      this.clearArray.splice(this.templateC.id, 1);
-      this.dialogVisible2 = false;
-    },
-    clearAttText() {
-      this.AttText = {
-        title: "",
-        text: "",
-      };
-      this.dialogVisible6 = false;
-    },
-    clearLine() {
-      this.line = "";
-      this.dialogVisible7 = false;
-    },
-    openTemplate() {
-      this.ctJson = {};
-      this.templateDialog = true;
-    },
-    checkctJson(json) {
-      if (this.ctJson.id == json.id) {
-        this.ctJson = {};
-      } else {
-        this.ctJson = json;
-      }
-    },
-    addTemplate(res) {
-      let _this = this;
-      let _res = [];
-      if (res.id == 1) {
-        _res = [
-          {
-            dyName: "", //单元标题
-            easy: 1,
-            chapterInfo: [
-              {
-                isread: false,
-                chapterid: this.guid(),
-                title: "",
-                courseName: "",
-                taskJson: [
-                  {
-                    task: "",
-                    taskDetail: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  },
-                ],
-                itemCount: 1,
-                fileList1: [],
-                video: [],
-                testData: [],
-                pData: [],
-                templateArray: [],
-              },
-            ],
-          },
-        ];
-        this.updateCourseState(1);
-      } else if (res.id == 2) {
-        let stageData = [];
-        let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-        let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-        if (!iframe && !iframe2) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        let copyData = iframe ? iframe.contentWindow.copyData : false;
-        let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-        if (
-          (!copyData || !copyData.stageData || !copyData.stageData.length) &&
-          (!copyData2 || !copyData2.stageData || !copyData2.stageData.length)
-        ) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        stageData = copyData
-          ? copyData.stageData
-          : copyData2
-            ? copyData2.stageData
-            : [""];
-        for (var i = 0; i < stageData.length; i++) {
-          _res.push({
-            dyName: stageData[i], //单元标题
-            chapterInfo: [
-              {
-                isread: false,
-                chapterid: this.guid(),
-                title: "",
-                courseName: "",
-                taskJson: [
-                  {
-                    task: "",
-                    taskDetail: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  },
-                ],
-                itemCount: 1,
-                fileList1: [],
-                video: [],
-                testData: [],
-                pData: [],
-                templateArray: [],
-              },
-            ],
-          });
-        }
-        this.updateCourseState(1);
-      } else if (!Object.keys(res).length) {
-        this.$message.error("请选择模板");
-        retrun;
-      } else {
-        _res = JSON.parse(res.chapters);
-        this.updateCourseState(parseInt(res.state));
-      }
-      _this
-        .$confirm(
-          "确定选择课程模板吗?此操作将删除所有已编辑课程内容。",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-        .then(() => {
-          _this.unitJson = _res;
-          _this.updateWork();
-          // _this.steps++;
-          _this.templateDialog = false;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate(res) {
-      let _this = this;
-      _this
-        .$confirm(
-          "确定选择课程模板吗?此操作将删除所有已编辑课程内容。",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-        .then(() => {
-          _this.unitJson = JSON.parse(res.chapters);
-          _this.steps++;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate1(w) {
-      this.steps++;
-    },
-    checkTemplate2() {
-      let _this = this;
-      _this
-        .$confirm("确定选择空模板吗?修改课程时无法重置课程模板。", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitIndex = 0;
-          _this.unitJson = [
-            {
-              dyName: "", //单元标题
-              chapterInfo: [
-                {
-                  isread: false,
-                  chapterid: this.guid(),
-                  title: "",
-                  courseName: "",
-                  taskJson: [
-                    {
-                      task: "",
-                      taskDetail: "",
-                      chapterData: [],
-                      toolText: "",
-                      toolChoose: [
-                        {
-                          tool: [],
-                          toolDetail: "",
-                          toolType: 0,
-                          askCount: 1,
-                          askTitle: "",
-                          askJson: [
-                            { askstitle: "", askItem: 1, checkList: [] },
-                          ],
-                        },
-                      ],
-                      isShowTools: false,
-                      askCount: 1,
-                      isFold: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      checkJson: [{ checkCount: [], checkPerent: [] }],
-                      homeworkList: [],
-                    },
-                  ],
-                  itemCount: 1,
-                  fileList1: [],
-                  video: [],
-                  testData: [],
-                  pData: [],
-                  templateArray: [],
-                },
-              ],
-            },
-          ];
-          this.steps++;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-          this.updateWork();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate3() {
-      let _this = this;
-      _this
-        .$confirm("确定选择简易模板吗?修改课程时无法重置课程模板。", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitIndex = 0;
-          _this.unitJson = [
-            {
-              dyName: "", //单元标题
-              easy: 1,
-              chapterInfo: [
-                {
-                  isread: false,
-                  chapterid: this.guid(),
-                  title: "",
-                  courseName: "",
-                  taskJson: [
-                    {
-                      task: "",
-                      taskDetail: "",
-                      chapterData: [],
-                      toolText: "",
-                      toolChoose: [
-                        {
-                          tool: [],
-                          toolDetail: "",
-                          toolType: 0,
-                          askCount: 1,
-                          askTitle: "",
-                          askJson: [
-                            { askstitle: "", askItem: 1, checkList: [] },
-                          ],
-                        },
-                      ],
-                      isShowTools: false,
-                      askCount: 1,
-                      isFold: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      checkJson: [{ checkCount: [], checkPerent: [] }],
-                      homeworkList: [],
-                    },
-                  ],
-                  itemCount: 1,
-                  fileList1: [],
-                  video: [],
-                  testData: [],
-                  pData: [],
-                  templateArray: [],
-                },
-              ],
-            },
-          ];
-          // this.steps++;
-          this.updateWork();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate4() {
-      let _this = this;
-      _this
-        .$confirm("确定选择未来小学课程设计吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitIndex = 0;
-          _this.unitJson = JSON.parse(JSON.stringify(weilaiData));
-          this.steps++;
-          this.updateWork();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    wordNext() {
-      this.dialogVisible2 = false;
-    },
-    isAddOrUpdateAttText() {
-      if (this.AttTextType == 0) {
-        this.addAttTextMessage();
-      } else {
-        this.updateAttText();
-      }
-    },
-    isAddOrUpdateLine() {
-      if (!this.lineTitle) {
-        this.$message.error("请填写链接标题");
-        return;
-      }
-      if (this.lineType == 0) {
-        this.addLine();
-      } else {
-        this.updateLine();
-      }
-    },
-    addAttTextMessage() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData.unshift({
-        name: this.AttText.title,
-        url: this.AttText.text,
-        type: 6,
-      });
-      this.imgChange1(null, null, 6, this.taskCount);
-      this.dialogVisible6 = false;
-    },
-    selectAttText(itemTaskIndex, i) {
-      this.AttText.title =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].chapterData[i].name;
-      this.AttText.text =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].chapterData[i].url;
-      this.taskCount = itemTaskIndex;
-      this.AttTextIndex = i;
-      this.AttTextType = 1;
-      this.dialogVisible6 = true;
-    },
-    updateAttText() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.AttTextIndex].name = this.AttText.title;
-
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.AttTextIndex].url = this.AttText.text;
-      this.dialogVisible6 = false;
-    },
-    addLine() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.lineCount
-      ].chapterData.unshift({
-        name: "链接",
-        title: this.lineTitle,
-        url: this.line,
-        type: 8,
-      });
-      this.imgChange1(null, null, 8, this.lineCount);
-      this.dialogVisible7 = false;
-    },
-    selectLine(itemTaskIndex, i) {
-      this.line =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].chapterData[i].url;
-      this.lineTitle = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].chapterData[i].title
-        ? this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-          .chapterData[i].title
-        : "";
-      this.taskCount = itemTaskIndex;
-      this.lineCount = i;
-      this.lineType = 1;
-      this.dialogVisible7 = true;
-    },
-    openUpdateSource(itemTaskIndex, i) {
-      this.sourceData = {};
-      let source =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-          .chapterData[i];
-      this.sourceData[source.id] = {};
-      this.sourceData[source.id].name = source.title;
-      this.sourceData[source.id].url = source.url;
-      this.dialogVisibleSource = true;
-      this.updateSourcePan = true;
-      this.taskCount = itemTaskIndex;
-      this.lineCount = i;
-    },
-    updateLine() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].url = this.line;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].title = this.lineTitle;
-      this.dialogVisible7 = false;
-    },
-    addPP() {
-      this.dialogVisible3 = true;
-    },
-    goTo(path) {
-      this.$router.push(path);
-    },
-    openTools(itemTaskIndex, i, toolIndex) {
-      this.toolIndex = toolIndex;
-      this.taskCount = itemTaskIndex;
-      if (i == 4) {
-        if (toolIndex == null) {
-          var a =
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-              .chapterData;
-          for (var i = 0; i < a.length; i++) {
-            if (a[i].url == 4 && a[i].askJson.askTitle != "") {
-              this.askJson =
-                this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData[i].askJson;
-            }
-          }
-        } else {
-          this.askJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex]
-            )
-          );
-        }
-        this.askJson2 = JSON.parse(JSON.stringify(this.askJson));
-        this.dialogVisible5 = true;
-      } else if (i == 45) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson
-        ) {
-          this.testJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].testJson
-            )
-          );
-        } else {
-          var testJson = {
-            testCount: 1,
-            testTitle: "",
-            testJson: [
-              {
-                teststitle: "",
-                testItem: 1,
-                checkList: [],
-                timuList: [],
-                answer: [],
-                type: "1",
-              },
-            ],
-          };
-          this.testJson = testJson;
-        }
-
-        this.testJson2 = JSON.parse(JSON.stringify(this.testJson));
-        this.dialogVisibleChoice = true;
-      } else if (i == 47) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].sentenceList
-        ) {
-          this.sentenceList = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].sentenceList
-            )
-          );
-        } else {
-          var sentenceList = [
-            { sentenceTitle: "", addSentence: [], rightAnswer: [] },
-          ];
-          this.sentenceList = sentenceList;
-        }
-        this.sentenceList2 = JSON.parse(JSON.stringify(this.sentenceList));
-        this.dialogVisibleSentence = true;
-      } else if (i == 48) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].tableJson
-        ) {
-          this.tableJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].tableJson
-            )
-          );
-        } else {
-          var tableJson = { text: "" };
-          this.tableJson = tableJson;
-        }
-        this.dialogVisibleTable = true;
-      } else if (i == 52) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].wordJson
-        ) {
-          this.wordJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].wordJson
-            )
-          );
-        } else {
-          var wordJson = { text: "" };
-          this.wordJson = wordJson;
-        }
-        this.dialogVisibleWord = true;
-        //   else if (i == 50) {
-        //   if (
-        //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-        //       .toolChoose[toolIndex].uploadJson
-        //   ) {
-        //     this.uploadJson = JSON.parse(
-        //       JSON.stringify(
-        //         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        //           itemTaskIndex
-        //         ].toolChoose[toolIndex].uploadJson
-        //       )
-        //     );
-        //   } else {
-        //     var uploadJson = [];
-        //     this.uploadJson = uploadJson;
-        //   }
-        //   this.dialogVisibleMoreUpload = true;
-        // }
-      } else if (i == 10) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].preTime
-        ) {
-          this.preTime = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].preTime
-            )
-          );
-        } else {
-          var preTime = 0;
-          this.preTime = preTime;
-        }
-        this.dialogVisiblePreTime = true;
-      } else if (i == 49) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].groupJson
-        ) {
-          this.groupJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].groupJson
-            )
-          );
-        } else {
-          var groupJson = {
-            group: [{ name: "第1组" }],
-            number: undefined,
-            islock: 1,
-          };
-          this.groupJson = groupJson;
-        }
-        this.dialogVisibleGroup = true;
-      } else if (i == 62) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].videoJson
-        ) {
-          this.videoJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].videoJson
-            )
-          );
-        } else {
-          var videoJson = {
-            video: "",
-            setting: [],
-          };
-          this.videoJson = videoJson;
-        }
-        this.dialogVisibleVideo = true;
-      } else if (i == 15) {
-        this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].answerQ
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].answerQ
-            )
-          )
-          : "";
-        this.answerQ2 = JSON.parse(JSON.stringify(this.answerQ));
-        this.dialogVisible8 = true;
-      } else if (i == 40) {
-        this.rateJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].rateJson
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].rateJson
-            )
-          )
-          : [{ detail: "", score: 5, value: "" }]; //{detail:"",score:5,value:""}
-        this.selectSteps = 1;
-        this.dialogVisibleRate = true;
-      } else if (i == 42) {
-        this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].answerQ
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].answerQ
-            )
-          )
-          : "";
-        this.dialogVisibleMp3 = true;
-      } else if (i == 41) {
-        this.selectJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].selectJson
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].selectJson
-            )
-          )
-          : { url: "", select: [], answer: [] };
-        this.selectSteps = 1;
-        this.selectJson2 = JSON.parse(JSON.stringify(this.selectJson));
-        this.dialogVisibleSelect = true;
-      } else if (i == 3) {
-        top.postMessage(
-          {
-            tools: "3y",
-            cid: this.cid,
-            stage: this.unitIndex,
-            task: itemTaskIndex,
-            tool: toolIndex,
-          },
-          "*"
-        );
-      } else if (i == 1) {
-        top.postMessage(
-          {
-            tools: "1y",
-            cid: this.cid,
-            stage: this.unitIndex,
-            task: itemTaskIndex,
-            tool: toolIndex,
-          },
-          "*"
-        );
-      } else if (i == 57) {
-        top.postMessage(
-          {
-            tools: "57y",
-            cid: this.cid,
-            stage: this.unitIndex,
-            task: itemTaskIndex,
-            tool: toolIndex,
-          },
-          "*"
-        );
-      } else if (i == 69) {
-        this.englishList = {};
-        this.englishList = this.unitJson[this.unitIndex].chapterInfo[0]
-          .taskJson[itemTaskIndex].toolChoose[toolIndex].englishList
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].englishList
-            )
-          )
-          : {};
-        this.$forceUpdate();
-        this.englishDialogVisible = true;
-      } else if (i == 70) {
-        this.englishVoiceJson = {};
-        this.englishVoiceJson = this.unitJson[this.unitIndex].chapterInfo[0]
-          .taskJson[itemTaskIndex].toolChoose[toolIndex].englishVoiceJson
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].englishVoiceJson
-            )
-          )
-          : {
-            title: '',
-            detail: '',
-            array: []
-          };
-        //  {
-        //   time: "",
-        //   class: "",
-        //   difficulty: 0,
-        //   topic: "",
-        //   isShow: false,
-        //   eva: 0,
-        //   aiEva: {
-        //     isAiEva: false,
-        //     aiEvaChoose: [],
-        //   },
-        //   allfType: [],
-        //   englishJson: {},
-        // };
-        this.$forceUpdate();
-        this.EnglishVoiceDialog = true;
-      }
-    },
-    setEnglishVoiceJson(val) {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].englishVoiceJson = JSON.parse(
-        JSON.stringify(val)
-      );
-      this.$forceUpdate();
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 70
-      ) {
-        this.addTools(70, this.taskCount, this.toolIndex);
-      }
-    },
-    chapAddTools(i) {
-      if (this.chapTools[0].tools.length == 0) {
-        this.chapTools[0].tools.push(i);
-      } else {
-        if (this.chapTools[0].tools.indexOf(i) != -1) {
-          this.chapTools[0].tools.splice(this.chapTools[0].tools.indexOf(i), 1);
-        } else {
-          this.chapTools[0].tools.push(i);
-        }
-      }
-      this.$forceUpdate();
-    },
-    addChaptersDataTools() {
-      if (this.chapTools[0].tools.indexOf(4) != -1) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.chapCount
-        ].chapterData.unshift({
-          name: this.chapTools[0].toolDetail,
-          url: this.chapTools[0].tools,
-          type: 7,
-          askJson: this.askJson,
-        });
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.chapCount
-        ].chapterData.unshift({
-          name: this.chapTools[0].toolDetail,
-          url: this.chapTools[0].tools,
-          type: 7,
-        });
-      }
-      this.imgChange1(null, null, 7, this.chapCount);
-      this.dialogVisible4 = false;
-    },
-    addTools(i, itemTaskIndex, toolIndex) {
-      // if (
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //     .toolChoose[toolIndex].tool.length == 0
-      // ) {
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //     itemTaskIndex
-      //   ].toolChoose[toolIndex].tool.push(i);
-      // } else {
-      //   if (
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //       itemTaskIndex
-      //     ].toolChoose[toolIndex].tool.indexOf(i) != -1
-      //   ) {
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //       itemTaskIndex
-      //     ].toolChoose[toolIndex].tool.splice(
-      //       this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //         itemTaskIndex
-      //       ].toolChoose[toolIndex].tool.indexOf(i),
-      //       1
-      //     );
-      //   } else {
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //       itemTaskIndex
-      //     ].toolChoose[toolIndex].tool.push(i);
-      //   }
-      //   console.log(
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //       .toolChoose[toolIndex].tool
-      //   );
-      // }
-      if (i == 4) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].askJson.askTitle == "" ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].askJson[0].askstitle == "" ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].askJson[0].checkList < 2
-        ) {
-          this.openTools(itemTaskIndex, 4, toolIndex);
-          // this.$message({
-          //   message: "请填写完整问卷内容",
-          //   type: "error",
-          // });
-          return;
-        }
-      }
-      if (i == 45) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson.testJson[0].teststitle == "" ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson.testJson[0].checkList < 2
-        ) {
-          this.openTools(itemTaskIndex, 45, toolIndex);
-          // this.$message({
-          //   message: "请填写完整问卷内容",
-          //   type: "error",
-          // });
-          return;
-        }
-      }
-      if (i == 47) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].sentenceList ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].sentenceList[0].rightAnswer == 0
-        ) {
-          this.openTools(itemTaskIndex, 47, toolIndex);
-          return;
-        }
-      }
-
-      if (i == 69) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].englishList
-        ) {
-          this.openTools(itemTaskIndex, 69, toolIndex);
-          return;
-        }
-      }
-      if (i == 70) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].englishVoiceJson
-        ) {
-          this.openTools(itemTaskIndex, 70, toolIndex);
-          return;
-        }
-      }
-      // if (i == 48) {
-      //   if (
-      //     !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //       .toolChoose[toolIndex].tableJson
-      //   ) {
-      //     this.openTools(itemTaskIndex, 48, toolIndex);
-      //     return;
-      //   }
-      // }
-      // if (i == 50) {
-      //   if (
-      //     !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //       .toolChoose[toolIndex].uploadJson
-      //   ) {
-      //     this.openTools(itemTaskIndex, 50, toolIndex);
-      //     return;
-      //   }
-      // }
-
-      if (i == 49) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].groupJson
-        ) {
-          this.openTools(itemTaskIndex, 49, toolIndex);
-          return;
-        }
-      }
-      if (i == 62) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].videoJson
-        ) {
-          this.openTools(itemTaskIndex, 62, toolIndex);
-          return;
-        }
-      }
-      if (i == 15) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ == ""
-        ) {
-          this.openTools(itemTaskIndex, 15, toolIndex);
-          // this.$message({
-          //   message: "请填写问答内容",
-          //   type: "error",
-          // });
-          return;
-        }
-      }
-      if (i == 40) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].rateJson ||
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].rateJson.length
-        ) {
-          this.openTools(itemTaskIndex, 40, toolIndex);
-          return;
-        }
-      }
-      if (i == 41) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson.url == "" ||
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson.select.length ||
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson.answer.length
-        ) {
-          this.openTools(itemTaskIndex, 41, toolIndex);
-          return;
-        }
-      }
-      if (i == 42) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ == ""
-        ) {
-          this.openTools(itemTaskIndex, 42, toolIndex);
-          return;
-        }
-      }
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-          .toolChoose[toolIndex].tool.length > 0
-      ) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool.indexOf(i) != -1
-        ) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool.splice(
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].toolChoose[toolIndex].tool.indexOf(i),
-            1
-          );
-        } else {
-          // this.$message({
-          //   message: "每个工具只能添加一个",
-          //   type: "error",
-          // });
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool = [];
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool.push(i);
-        }
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].tool.push(i);
-      }
-      this.$forceUpdate();
-    },
-    addAskList(index) {
-      this.askJson.askJson.splice(index + 1, 0, {
-        askstitle: "",
-        askItem: 1,
-        checkList: [],
-      });
-      this.askJson.askCount++;
-    },
-    addTestList(index) {
-      this.testJson.testJson.splice(index + 1, 0, {
-        teststitle: "",
-        testItem: 1,
-        checkList: [],
-        timuList: [],
-        answer: [],
-        type: "1",
-      });
-      this.testJson.testCount++;
-    },
-    deleteAskList(index) {
-      if (
-        !this.askJson.askJson[index].askstitle &&
-        this.askJson.askJson[index].askItem == 1 &&
-        !this.askJson.askJson[index].checkList[0]
-      ) {
-        this.askJson.askJson.splice(index, 1);
-        this.askJson.askCount--;
-      } else {
-        let _this = this;
-        _this
-          .$confirm("此操作不可撤销,是否继续?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.askJson.askJson.splice(index, 1);
-            _this.askJson.askCount--;
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteTestList(index) {
-      if (
-        !this.testJson.testJson[index].teststitle &&
-        this.testJson.testJson[index].testItem == 1 &&
-        !this.testJson.testJson[index].checkList[0]
-      ) {
-        this.testJson.testJson.splice(index, 1);
-        this.testJson.testCount--;
-      } else {
-        let _this = this;
-        _this
-          .$confirm("此操作不可撤销,是否继续?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.testJson.testJson.splice(index, 1);
-            _this.testJson.testCount--;
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    askMove(type, index) {
-      if (type == 1) {
-        if (index > 0) {
-          let a = JSON.parse(JSON.stringify(this.askJson.askJson[index - 1]));
-          let b = JSON.parse(JSON.stringify(this.askJson.askJson[index]));
-          this.askJson.askJson[index - 1] = b;
-          this.askJson.askJson[index] = a;
-        }
-      } else {
-        if (index < this.askJson.askJson.length - 1) {
-          let a = JSON.parse(JSON.stringify(this.askJson.askJson[index + 1]));
-          let b = JSON.parse(JSON.stringify(this.askJson.askJson[index]));
-          this.askJson.askJson[index + 1] = b;
-          this.askJson.askJson[index] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    checkMove(type, index, checkIndex) {
-      if (type == 1) {
-        if (checkIndex > 0) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.askJson.askJson[index].checkList[checkIndex - 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.askJson.askJson[index].checkList[checkIndex])
-          );
-          this.askJson.askJson[index].checkList[checkIndex - 1] = b;
-          this.askJson.askJson[index].checkList[checkIndex] = a;
-        }
-      } else {
-        if (checkIndex < this.askJson.askJson[index].checkList.length - 1) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.askJson.askJson[index].checkList[checkIndex + 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.askJson.askJson[index].checkList[checkIndex])
-          );
-          this.askJson.askJson[index].checkList[checkIndex + 1] = b;
-          this.askJson.askJson[index].checkList[checkIndex] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    testMove(type, index) {
-      if (type == 1) {
-        if (index > 0) {
-          let a = JSON.parse(JSON.stringify(this.testJson.testJson[index - 1]));
-          let b = JSON.parse(JSON.stringify(this.testJson.testJson[index]));
-          this.testJson.testJson[index - 1] = b;
-          this.testJson.testJson[index] = a;
-        }
-      } else {
-        if (index < this.testJson.testJson.length - 1) {
-          let a = JSON.parse(JSON.stringify(this.testJson.testJson[index + 1]));
-          let b = JSON.parse(JSON.stringify(this.testJson.testJson[index]));
-          this.testJson.testJson[index + 1] = b;
-          this.testJson.testJson[index] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    tcheckMove(type, index, checkIndex) {
-      if (type == 1) {
-        if (checkIndex > 0) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.testJson.testJson[index].checkList[checkIndex - 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.testJson.testJson[index].checkList[checkIndex])
-          );
-          this.testJson.testJson[index].checkList[checkIndex - 1] = b;
-          this.testJson.testJson[index].checkList[checkIndex] = a;
-        }
-      } else {
-        if (checkIndex < this.testJson.testJson[index].checkList.length - 1) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.testJson.testJson[index].checkList[checkIndex + 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.testJson.testJson[index].checkList[checkIndex])
-          );
-          this.testJson.testJson[index].checkList[checkIndex + 1] = b;
-          this.testJson.testJson[index].checkList[checkIndex] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    addcheckList(json, index) {
-      // json.checkList.length++;
-      json.checkList.splice(index + 1, 0, "");
-      json.askItem++;
-      this.$forceUpdate();
-    },
-    deletecheckList(json, index) {
-      // json.checkList.length--;
-      json.checkList.splice(index, 1);
-      json.askItem--;
-      this.$forceUpdate();
-    },
-    addTcheckList(json, index) {
-      // json.checkList.length++;
-      json.checkList.splice(index + 1, 0, "");
-      json.testItem++;
-      this.$forceUpdate();
-    },
-    deleteTcheckList(json, index) {
-      // json.checkList.length--;
-      json.checkList.splice(index, 1);
-      json.testItem--;
-      this.$forceUpdate();
-    },
-    checkTestType(type, json) {
-      json.type = type;
-      setTimeout(() => {
-        json.answer = [];
-      }, 100);
-    },
-    checkAskType(type, json) {
-      json.type = type;
-      // json.checkList = [];
-      this.$forceUpdate();
-    },
-    addSelectList(json) {
-      json.select.push("");
-      json.answer.push("");
-    },
-    deleteSelectList(json) {
-      // json.select.length--;
-      // json.answer.length--;
-      json.select.splice(json.select.length - 1, 1);
-      json.answer.splice(json.answer.length - 1, 1);
-    },
-    addAsk() {
-      if (this.askJson.askTitle === "") {
-        this.$message.error("标题不能为空!");
-        return;
-      }
-      var aj = this.askJson.askJson;
-      var b = 1;
-      for (var i = 0; i < aj.length; i++) {
-        if (aj[i].askstitle === "") {
-          var a = 1;
-          for (let index = 0; index < aj[i].askItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            if (element != "") {
-              b++;
-              this.$message.error(`请将题目${i + 1}填写完整。`);
-              return;
-            } else {
-              a++;
-            }
-          }
-          if (b == 1) {
-            this.$message.error("至少填写一个问题");
-            return;
-          }
-        } else if (aj[i].askstitle != "") {
-          for (let index = 0; index < aj[i].askItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            var index = 0;
-            for (var z = 0; z < aj[i].checkList.length; z++) {
-              var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
-              if (checkC != "") {
-                index++;
-              } else {
-                this.$message.error(`题目${i + 1}选项不能为空!`);
-                return;
-              }
-              for (var z2 = z + 1; z2 < aj[i].checkList.length; z2++) {
-                let checkC2 = aj[i].checkList[z2] ? aj[i].checkList[z2] : "";
-                if (checkC == checkC2) {
-                  this.$message.error(
-                    `第${i + 1}题的选项${z + 1}和选项${z2 + 1}重复了,请修改!`
-                  );
-                  return;
-                }
-              }
-            }
-            b++;
-            if (index < 2) {
-              this.$message.error("每道题目至少需要设置2个选项。");
-              return;
-            }
-          }
-        }
-      }
-      this.askJson.askJson = this.askJson.askJson.filter((el) => {
-        var elc = el.checkList.filter((element) => {
-          return element != "";
-        });
-        return el.askstitle != "" && elc.length != 0;
-      });
-      if (!this.dialogVisible4) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex] = this.askJson;
-      }
-      this.dialogVisible5 = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 4
-      ) {
-        this.addTools(4, this.taskCount, this.toolIndex);
-      }
-    },
-    addTest() {
-      // if (this.testJson.testTitle === "") {
-      //   this.$message.error("标题不能为空!");
-      //   return;
-      // }
-      var aj = this.testJson.testJson;
-      var b = 1;
-      for (var i = 0; i < aj.length; i++) {
-        if (aj[i].teststitle === "" && aj[i].timuList.length == 0) {
-          var a = 1;
-          for (let index = 0; index < aj[i].testItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            if (element != "") {
-              b++;
-              this.$message.error(`请将题目${i + 1}填写完整。`);
-              return;
-            } else {
-              a++;
-            }
-          }
-          if (b == 1) {
-            this.$message.error("至少填写一个问题");
-            return;
-          }
-        } else if (aj[i].teststitle != "" || aj[i].timuList.length > 0) {
-          for (let index = 0; index < aj[i].testItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            var index = 0;
-            for (var z = 0; z < aj[i].checkList.length; z++) {
-              var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
-              if (checkC != "") {
-                index++;
-              } else {
-                this.$message.error(`题目${i + 1}选项不能为空!`);
-                return;
-              }
-              for (var z2 = z + 1; z2 < aj[i].checkList.length; z2++) {
-                let checkC2 = aj[i].checkList[z2] ? aj[i].checkList[z2] : "";
-                if (checkC == checkC2) {
-                  this.$message.error(
-                    `第${i + 1}题的选项${z + 1}和选项${z2 + 1}重复了,请修改!`
-                  );
-                  return;
-                }
-              }
-            }
-            b++;
-            if (index < 2) {
-              this.$message.error("每道题目至少需要设置2个选项。");
-              return;
-            }
-            if (
-              (aj[i].type == "2" && !aj[i].answer.length) ||
-              (aj[i].type == "1" &&
-                ((typeof aj[i].answer == "object" && !aj[i].answer.length) ||
-                  (aj[i].answer !== 0 && !aj[i].answer)))
-            ) {
-              this.$message.error(`请将题目${i + 1}的正确选项设置完整`);
-              return;
-            }
-          }
-        }
-      }
-      var isTestJson = JSON.parse(JSON.stringify(this.testJson));
-      isTestJson.testJson = this.testJson.testJson.filter((el) => {
-        var elc = el.checkList.filter((element) => {
-          return element != "";
-        });
-        return (
-          (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
-        );
-      });
-      isTestJson.testCount = isTestJson.testJson.length;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].testJson = isTestJson;
-
-      this.dialogVisibleChoice = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 45
-      ) {
-        this.addTools(45, this.taskCount, this.toolIndex);
-      }
-    },
-    addVideoJson(videoJson) {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].videoJson = videoJson;
-
-      this.dialogVisibleVideo = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 62
-      ) {
-        this.addTools(62, this.taskCount, this.toolIndex);
-      }
-    },
-    //自动获取剪贴板
-    pasteOption() {
-      let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-      if (!iframe) {
-        this.$message.error("请使用AI共创生成题目");
-        return;
-      }
-      let copyData = iframe.contentWindow.copyData;
-      if (!copyData || !copyData.selectData.length) {
-        this.$message.error("请使用AI共创生成题目");
-        return;
-      }
-      let selectData = copyData.selectData;
-      for (var i = 0; i < selectData.length; i++) {
-        let answer = 0;
-        switch (selectData[i].answer[0]) {
-          case "A":
-            answer = 0;
-            break;
-          case "B":
-            answer = 1;
-            break;
-          case "C":
-            answer = 2;
-            break;
-          case "D":
-            answer = 3;
-            break;
-          case "E":
-            answer = 4;
-            break;
-          default:
-            break;
-        }
-        this.testJson.testJson.push({
-          teststitle: selectData[i].subject,
-          testItem: selectData[i].options.length,
-          checkList: selectData[i].options,
-          timuList: [],
-          answer: answer,
-          type: "1",
-        });
-        this.testJson.testCount++;
-      }
-      var isTestJson = JSON.parse(JSON.stringify(this.testJson));
-      isTestJson.testJson = this.testJson.testJson.filter((el) => {
-        var elc = el.checkList.filter((element) => {
-          return element != "";
-        });
-        return el.teststitle != "" || el.timuList.length > 0 || elc.length != 0;
-      });
-      isTestJson.testCount = isTestJson.testJson.length;
-      if (!isTestJson.testCount) {
-        return;
-      }
-      this.testJson = isTestJson;
-      this.$forceUpdate();
-    },
-    pasteTask(taskJson) {
-      let stageTasksData = [];
-      if (taskJson) {
-        stageTasksData = taskJson;
-      } else {
-        let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-        let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-        if (!iframe && !iframe2) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        let copyData = iframe ? iframe.contentWindow.copyData : false;
-        let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-        if (
-          (!copyData || !copyData.tasksData || !copyData.tasksData.length) &&
-          (!copyData2 || !copyData2.tasksData || !copyData2.tasksData.length)
-        ) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        stageTasksData = copyData
-          ? copyData.tasksData
-          : copyData2
-            ? copyData2.tasksData
-            : [{ taskName: "", taskDecs: "" }];
-      }
-
-      let taskA = [];
-      let tasks = stageTasksData;
-      for (var j = 0; j < tasks.length; j++) {
-        taskA.push({
-          task: tasks[j].taskName,
-          taskDetail: tasks[j].taskDecs,
-          chapterData: [],
-          toolText: "",
-          toolChoose: [
-            {
-              tool: [],
-              toolDetail: "",
-              toolType: 0,
-              askCount: 1,
-              askTitle: "",
-              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-            },
-          ],
-          isShowTools: false,
-          askCount: 1,
-          isFold: 1,
-          askTitle: "",
-          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          checkJson: [{ checkCount: [], checkPerent: [] }],
-          homeworkList: [],
-        });
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson = taskA;
-      this.$forceUpdate();
-    },
-    pasteStage(stageJson) {
-      let stageData = [];
-      if (stageJson) {
-        stageData = stageJson;
-      } else {
-        let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-        let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-        if (!iframe && !iframe2) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        let copyData = iframe ? iframe.contentWindow.copyData : false;
-        let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-        if (
-          (!copyData || !copyData.stageData || !copyData.stageData.length) &&
-          (!copyData2 || !copyData2.stageData || !copyData2.stageData.length)
-        ) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        stageData = copyData
-          ? copyData.stageData
-          : copyData2
-            ? copyData2.stageData
-            : [""];
-      }
-
-      let stage = [];
-      for (var i = 0; i < stageData.length; i++) {
-        stage.push({
-          dyName: stageData[i], //单元标题
-          chapterInfo: [
-            {
-              isread: false,
-              chapterid: this.guid(),
-              title: "",
-              courseName: "",
-              taskJson: [
-                {
-                  task: "",
-                  taskDetail: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 1,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                },
-              ],
-              itemCount: 1,
-              fileList1: [],
-              video: [],
-              testData: [],
-              pData: [],
-              templateArray: [],
-            },
-          ],
-        });
-      }
-      let _this = this;
-      if (stageJson) {
-        if (!_this.cid) {
-          _this.unitJson = stage;
-        } else {
-          _this.unitIndex = 0;
-          _this.unitJson = stage;
-          _this.updateWork();
-        }
-      } else {
-        _this
-          .$confirm(
-            "确定选择智能粘贴模板吗?修改课程时无法重置课程模板。",
-            "提示",
-            {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning",
-            }
-          )
-          .then(() => {
-            _this.unitIndex = 0;
-            _this.unitJson = stage;
-            // _this.steps++;
-            _this.updateWork();
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    openStageBox() {
-      this.unitJson3 = JSON.parse(JSON.stringify(this.unitJson));
-      this.dialogVisibleStageChange = true;
-    },
-    updateChange() {
-      this.$confirm(
-        "切换阶段顺序将删除所有工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
-          this.unitJson = JSON.parse(JSON.stringify(this.unitJson3));
-          this.updateWork();
-          this.dialogVisibleStageChange = false;
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    addAnswer() {
-      if (this.answerQ == "") {
-        this.$message.error("请输入您想要问的问题");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].answerQ = this.answerQ;
-      this.dialogVisible8 = false;
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 15
-      ) {
-        this.addTools(15, this.taskCount, this.toolIndex);
-      }
-    },
-    addMp3Answer() {
-      if (this.answerQ == "") {
-        this.$message.error("请输入您想要回答的问题");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].answerQ = this.answerQ;
-      this.dialogVisibleMp3 = false;
-    },
-    addRateAnswer() {
-      var a = 1;
-      for (var i = 0; i < this.rateJson.length; i++) {
-        if (this.rateJson[i].value == "") {
-          a = 2;
-          break;
-        }
-      }
-      if (a == 2) {
-        this.$message.error("请把评价信息填写完整");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].rateJson = this.rateJson;
-      this.dialogVisibleRate = false;
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 40
-      ) {
-        this.addTools(40, this.taskCount, this.toolIndex);
-      }
-    },
-    addSelectAnswer() {
-      if (this.selectJson.url == "") {
-        this.$message.error("请上传题目");
-        return;
-      }
-      if (!this.selectJson.select.length) {
-        this.$message.error("请添加选项");
-        return;
-      }
-      if (!this.selectJson.answer.length) {
-        this.$message.error("请设置答案");
-        return;
-      }
-      var a = 1;
-      for (var i = 0; i < this.selectJson.answer.length; i++) {
-        if (!this.selectJson.answer[i] && this.selectJson.answer[i] !== 0) {
-          a = 2;
-        }
-      }
-      if (a == 2) {
-        this.$message.error("请设置答案");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].selectJson = this.selectJson;
-      this.dialogVisibleSelect = false;
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 41
-      ) {
-        this.addTools(41, this.taskCount, this.toolIndex);
-      }
-    },
-    nextSelectSteps() {
-      if (this.selectJson.url == "") {
-        this.$message.error("请上传题目");
-        return;
-      }
-      if (!this.selectJson.select.length) {
-        this.$message.error("请添加选项");
-        return;
-      } else {
-        for (var z = 0; z < this.selectJson.select.length; z++) {
-          let checkC = this.selectJson.select[z];
-          for (var z2 = z + 1; z2 < this.selectJson.select.length; z2++) {
-            let checkC2 = this.selectJson.select[z2];
-            if (checkC == checkC2) {
-              this.$message.error(
-                `选项${z + 1}和选项${z2 + 1}重复了,请修改!`
-              );
-              return;
-            }
-          }
-        }
-      }
-      var a = 1;
-      for (var i = 0; i < this.selectJson.select.length; i++) {
-        if (!this.selectJson.select[i]) {
-          a = 2;
-        }
-      }
-      if (a == 2) {
-        this.$message.error("添加的选项不能为空");
-        return;
-      }
-      this.selectSteps++;
-    },
-    selectCourseDetail() {
-      if (this.cid == "" || this.cid == undefined) {
-        if (this.oid == '4c686762-1d0a-11ed-8c78-005056b86db5') {
-          this.isTeacherSee = true;
-        }
-        console.log("这是新增课程");
-        this.selectAllType();
-      } else {
-        this.isOutline = true
-        this.isOutline2 = true
-        this.cpoteType = 4
-        this.cidType = 1;
-        let params = {
-          cid: this.cid,
-        };
-        this.ajax
-          .get(this.$store.state.api + "select_course_detail", params)
-          .then((res) => {
-            this.unitJson = JSON.parse(res.data[0][0].chapters);
-            this.courseState = res.data[0][0].state;
-            for (var j = 0; j < this.unitJson.length; j++) {
-              for (
-                var k = 0;
-                k < this.unitJson[j].chapterInfo[0].taskJson.length;
-                k++
-              ) {
-                this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose = this
-                  .unitJson[j].chapterInfo[0].taskJson[k].toolChoose
-                  ? this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose
-                  : [];
-                let _chapterData = [];
-                for (
-                  var c = 0;
-                  c <
-                  this.unitJson[j].chapterInfo[0].taskJson[k].chapterData
-                    .length;
-                  c++
-                ) {
-                  if (
-                    this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
-                  ) {
-                    _chapterData.push(
-                      this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
-                    );
-                  }
-                }
-                this.unitJson[j].chapterInfo[0].taskJson[k].chapterData =
-                  _chapterData;
-              }
-            }
-
-            this.$forceUpdate();
-            this.courseName = res.data[0][0].title;
-            this.courseText = res.data[0][0].brief;
-            this.courseText2 = res.data[0][0].reBrief;
-            this.evalua = res.data[0][0].evaId;
-            this.cover = JSON.parse(res.data[0][0].cover);
-            this.noneBtnImg = this.cover.length >= 1;
-            if (res.data[0][0].refile) {
-              this.infoData = JSON.parse(res.data[0][0].refile)
-            }
-            // this.checkboxList =
-            //   res.data[0][0].course_student.length > 0
-            //     ? JSON.parse(res.data[0][0].course_student)
-            //     : [];
-            this.checkboxList2 = res.data[0][0].juri
-              ? res.data[0][0].juri.split(",")
-              : [];
-            this.inviteCode = [];
-            for (var i = 0; i < res.data[2].length; i++) {
-              this.inviteCode.push({
-                cid: res.data[2][i].classid,
-                ic: res.data[2][i].code,
-              });
-            }
-
-            this.checkboxList3 = res.data[0][0].course_teacher
-              ? res.data[0][0].course_teacher.split(",")
-              : [];
-            // this.isTeacherSee =
-            //   res.data[0][0].is_teacher_look == 0 ? true : false;
-            this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
-            this.myWord = res.data[0][0].template;
-            this.templateC.id = "123";
-            this.courseUserid = res.data[0][0].userid;
-            // if(this.courseUserid == this.userid){
-            //   this.InviteChange(this.checkboxList2)
-            // }
-            this.nbOrder = res.data[0][0].ordernumber;
-            this.courseTypeId = [];
-            for (var i = 0; i < res.data[1].length; i++) {
-              this.courseTypeId.push(res.data[1][i].typeid);
-            }
-            console.log(this.courseTypeId);
-            // if (this.timer) clearInterval(this.timer);
-            if (this.timer) clearTimeout(this.timer);
-            this.timer = null;
-            // this.timer = setInterval(() => {
-            if(res.data[3].length){
-              try {
-                this.aiJson = JSON.parse(res.data[3][0].tips);
-                this.aiJson.teacherDetail2 = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-                this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
-                this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
-                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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
-                }
-                this.templateid = res.data[3][0].template;
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(res.data[0][0].cpote){
-              try {
-                this.cpote = JSON.parse(res.data[0][0].cpote);
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(res.data[0][0].setting){
-              try {
-                this.courseJie = JSON.parse(res.data[0][0].setting).courseJie ? JSON.parse(res.data[0][0].setting).courseJie : 1;
-                this.courseTime = JSON.parse(res.data[0][0].setting).courseTime ? JSON.parse(res.data[0][0].setting).courseTime : 45;
-                this.teacherInfoData = JSON.parse(res.data[0][0].setting).teacherInfoData ? JSON.parse(res.data[0][0].setting).teacherInfoData : [];
-                this.teacherCourseText = JSON.parse(res.data[0][0].setting).teacherCourseText ? JSON.parse(res.data[0][0].setting).teacherCourseText : "";
-                this.targetCourseText = JSON.parse(res.data[0][0].setting).targetCourseText ? JSON.parse(res.data[0][0].setting).targetCourseText : "";
-                this.cankaoInfoData = JSON.parse(res.data[0][0].setting).cankaoInfoData ? JSON.parse(res.data[0][0].setting).cankaoInfoData : [];
-                this.infoData2 = JSON.parse(res.data[0][0].setting).infoData2 ? JSON.parse(res.data[0][0].setting).infoData2 : [];
-                this.isuseT = JSON.parse(res.data[0][0].setting).isuseT ? JSON.parse(res.data[0][0].setting).isuseT : JSON.parse(res.data[0][0].setting).isuseT === false ? false : false;
-                this.mode = JSON.parse(res.data[0][0].setting).mode ? JSON.parse(res.data[0][0].setting).mode : 1;
-                this.targetCourseText2 = JSON.parse(res.data[0][0].setting).targetCourseText2 ? JSON.parse(res.data[0][0].setting).targetCourseText2 : '';
-                if(this.targetCourseText2 || (!this.teacherCourseText)){
-                  this.courseTextBool = true
-                }
-                if(!this.teacherCourseText && !this.teacherCourseText){
-                  this.isuseT = false
-                }
-              }catch(error){
-                console.error(error)
-              }
-            }
-
-            if(this.courseText){
-              this.courseTextB = false
-            }
-            if(this.teacherCourseText){
-              this.teacherCourseTextB = false
-            }
-            if(this.targetCourseText){
-              this.targetCourseTextB = false
-            }
-            if(this.targetCourseText2){
-              this.targetCourseText2B = false
-            }
-            
-            this.isFileSearch = res.data[0][0].iresearch == 1
-            this.seleteCourseUpdate();
-            this.setMan();
-            this.selectAllType();
-            this.unitJson[
-              this.unitIndex
-            ].chapterInfo[0].taskJson[0].toolOpen = true;
-            // }, 5000);
-            this.$forceUpdate();
-            setTimeout(() => {
-              this.checkEva(this.evalua);
-              setTimeout(() => {
-                this.checkEva(this.evalua);
-              }, 100);
-            }, 100);
-          })
-          .catch((err) => {
-            console.error(err);
-          });
-      }
-
-      if(this.aiId){
-        let params = {
-          cid: this.aiId,
-        };
-        this.ajax
-          .get(this.$store.state.api + "select_course_detail", params)
-          .then((res) => {
-            let _unitJson = JSON.parse(res.data[0][0].chapters);
-            let fileInfo = []
-            var xianObj = ['DOCX','DOC','PPT','PPTX','MD','TXT','PDF']
-
-            for(var i = 0; i < _unitJson.length; i++){
-              let tasks = _unitJson[i].chapterInfo[0].taskJson
-              for(var j = 0; j < tasks.length; j++){
-                let _infoData = tasks[j].chapterData.filter(el => {
-                  return xianObj.indexOf(el.url.split(".")[el.url.split(".").length - 1].toLocaleUpperCase()) != -1
-                })
-
-                if(_infoData.length){
-                  fileInfo = [...fileInfo, ..._infoData] 
-                }
-              }
-            }
-
-            this.infoData = fileInfo
-
-            this.$forceUpdate();
-            this.courseName = res.data[0][0].title;
-            this.courseText = res.data[0][0].brief;
-            this.courseText2 = res.data[0][0].reBrief;
-            this.cover = JSON.parse(res.data[0][0].cover);
-            this.noneBtnImg = this.cover.length >= 1;
-
-            this.checkboxList2 = res.data[0][0].juri
-              ? res.data[0][0].juri.split(",")
-              : [];
-            this.inviteCode = [];
-            for (var i = 0; i < res.data[2].length; i++) {
-              this.inviteCode.push({
-                cid: res.data[2][i].classid,
-                ic: res.data[2][i].code,
-              });
-            }
-
-            this.checkboxList3 = res.data[0][0].course_teacher
-              ? res.data[0][0].course_teacher.split(",")
-              : [];
-            this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
-            this.myWord = res.data[0][0].template;
-            this.templateC.id = "123";
-            this.courseTypeId = [];
-            for (var i = 0; i < res.data[1].length; i++) {
-              this.courseTypeId.push(res.data[1][i].typeid);
-            }
-            console.log(this.courseTypeId);
-            if(res.data[3].length){
-              try {
-                this.aiJson = JSON.parse(res.data[3][0].tips);
-                this.aiJson.teacherDetail2 = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-                this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
-                this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
-                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 : '参考<课程名字>、<任务名>和<课程简要描述>的内容,为该序列生成任务详情。任务详情中需要包含教学目标,任务设计和评价标准。'
-                }
-                this.templateid = res.data[3][0].template;
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(res.data[0][0].cpote){
-              try {
-                this.cpote = JSON.parse(res.data[0][0].cpote);
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(res.data[0][0].setting){
-              try {
-                this.courseJie = JSON.parse(res.data[0][0].setting).courseJie ? JSON.parse(res.data[0][0].setting).courseJie : 1;
-                this.courseTime = JSON.parse(res.data[0][0].setting).courseTime ? JSON.parse(res.data[0][0].setting).courseTime : 45;
-                this.teacherInfoData = JSON.parse(res.data[0][0].setting).teacherInfoData ? JSON.parse(res.data[0][0].setting).teacherInfoData : [];
-                this.teacherCourseText = JSON.parse(res.data[0][0].setting).teacherCourseText ? JSON.parse(res.data[0][0].setting).teacherCourseText : "";
-                this.targetCourseText = JSON.parse(res.data[0][0].setting).targetCourseText ? JSON.parse(res.data[0][0].setting).targetCourseText : "";
-                this.cankaoInfoData = JSON.parse(res.data[0][0].setting).cankaoInfoData ? JSON.parse(res.data[0][0].setting).cankaoInfoData : [];
-                this.infoData2 = JSON.parse(res.data[0][0].setting).infoData2 ? JSON.parse(res.data[0][0].setting).infoData2 : [];
-                this.isuseT = JSON.parse(res.data[0][0].setting).isuseT ? JSON.parse(res.data[0][0].setting).isuseT : JSON.parse(res.data[0][0].setting).isuseT === false ? false : false;
-                this.mode = JSON.parse(res.data[0][0].setting).mode ? JSON.parse(res.data[0][0].setting).mode : 1;
-                this.targetCourseText2 = JSON.parse(res.data[0][0].setting).targetCourseText2 ? JSON.parse(res.data[0][0].setting).targetCourseText2 : '';
-                if(this.targetCourseText2 || (!this.teacherCourseText)){
-                  this.courseTextBool = true
-                }
-                if(!this.teacherCourseText && !this.teacherCourseText){
-                  this.isuseT = false
-                }
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(this.courseText){
-              this.courseTextB = false
-            }
-            if(this.teacherCourseText){
-              this.teacherCourseTextB = false
-            }
-            if(this.targetCourseText){
-              this.targetCourseTextB = false
-            }
-            if(this.targetCourseText2){
-              this.targetCourseText2B = false
-            }
-            this.setMan();
-            this.unitJson[
-              this.unitIndex
-            ].chapterInfo[0].taskJson[0].toolOpen = true;
-
-            this.$forceUpdate();
-            setTimeout(() => {
-              this.checkEva(this.evalua);
-              setTimeout(() => {
-                this.checkEva(this.evalua);
-              }, 100);
-            }, 100);
-          })
-          .catch((err) => {
-            console.error(err);
-          });
-      }
-      // if(this.cidType != 1 && this.templateid == ''){
-      //   this.promptShow = true
-      // }
-    },
-    seleteCourseUpdate() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "select_course_detail", params)
-        .then((res) => {
-          // console.log(this.unitJson);
-          let unitJson = JSON.parse(res.data[0][0].chapters);
-          this.unitJson2 = JSON.parse(res.data[0][0].chapters);
-          let _unitJson2 = JSON.parse(JSON.stringify(this.unitJson));
-          let _unitJson = [];
-          let _chapAarry = [];
-          let _unitIndex = JSON.parse(JSON.stringify(this.unitIndex));
-          let _unitIndex2 = JSON.parse(JSON.stringify(this.unitIndex));
-          let index = 1;
-          let chapindex;
-          if (_unitJson2.length > unitJson.length) {
-            for (let c = 0; c < _unitJson2.length; c++) {
-              _chapAarry.push(_unitJson2[c].chapterInfo[0].chapterid);
-            }
-            for (let j = 0; j < unitJson.length; j++) {
-              let count = 0;
-              for (let k = 0; k < _unitJson2.length; k++) {
-                if (
-                  unitJson[j].chapterInfo[0].chapterid ==
-                  _unitJson2[k].chapterInfo[0].chapterid
-                ) {
-                  count++;
-                  _chapAarry.splice(
-                    _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
-                    1
-                  );
-                  _unitJson.push(unitJson[j]);
-                  break;
-                }
-              }
-              // if(count === 0){
-              //   this.$message.error("您所修改的阶段已经被其他老师删除了");
-              // }
-            }
-            for (let k = 0; k < _unitJson2.length; k++) {
-              if (_unitJson2[k].isUpdate == 1) {
-                _chapAarry.splice(
-                  _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
-                  1
-                );
-                _unitJson.push(_unitJson2[k]);
-              }
-            }
-            console.log(_chapAarry);
-            for (let d = 0; d < _unitJson2.length; d++) {
-              if (
-                _chapAarry.indexOf(_unitJson2[d].chapterInfo[0].chapterid) != -1
-              ) {
-                if (_unitIndex == d) {
-                  index = 2;
-                }
-                chapindex = d;
-                // this.$message.error("您所修改的阶段已经被其他老师删除了");
-              }
-            }
-          } else {
-            _unitJson = JSON.parse(JSON.stringify(_unitJson2));
-          }
-
-          for (let i = 0; i < unitJson.length; i++) {
-            if (
-              (i < _unitJson.length - 1 || i == _unitJson.length - 1) &&
-              _unitJson[i].chapterInfo[0].chapterid !=
-              unitJson[i].chapterInfo[0].chapterid
-            ) {
-              if (i == _unitJson.length - 1) {
-                // this.unitIndex++
-                _unitIndex2++;
-              }
-              _unitJson.splice(i, 0, unitJson[i]);
-            } else if (i > _unitJson.length - 1) {
-              _unitJson.push(unitJson[i]);
-            } else if (
-              _unitJson[i].chapterInfo[0].chapterid ==
-              unitJson[i].chapterInfo[0].chapterid
-            ) {
-              _unitJson[i] = unitJson[i];
-            }
-            // if (i == _unitIndex) {
-            //   continue;
-            // } else
-          }
-
-          if (_chapAarry.length && index != 2) {
-            if (chapindex < _unitIndex) {
-              this.isDelete = 2;
-              // this.unitIndex--;
-              _unitIndex2--;
-            } else if (
-              _unitJson2[_unitIndex].chapterInfo[0].chapterid !=
-              _unitJson[_unitIndex].chapterInfo[0].chapterid
-            ) {
-              this.isDelete = 2;
-              for (let n = 0; n < _unitJson.length; n++) {
-                if (
-                  _unitJson2[_unitIndex].chapterInfo[0].chapterid ==
-                  _unitJson[n].chapterInfo[0].chapterid
-                ) {
-                  // this.unitIndex = n;
-                  _unitIndex2 = n;
-                  _unitJson[n] = _unitJson2[_unitIndex];
-                  break;
-                }
-              }
-            }
-          } else if (index != 2) {
-            // _unitJson[this.unitIndex] = _unitJson2[_unitIndex];
-            _unitJson2[_unitIndex];
-            for (
-              var ci = 0;
-              ci < _unitJson2[_unitIndex].chapterInfo[0].taskJson.length;
-              ci++
-            ) {
-              _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose =
-                _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose
-                  ? _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
-                    .toolChoose
-                  : [];
-              let _chapterData = [];
-              for (
-                var c = 0;
-                c <
-                _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData
-                  .length;
-                c++
-              ) {
-                if (
-                  _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
-                    .chapterData[c]
-                ) {
-                  _chapterData.push(
-                    _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
-                      .chapterData[c]
-                  );
-                }
-              }
-              _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData =
-                _chapterData;
-            }
-            _unitJson[_unitIndex2] = _unitJson2[_unitIndex];
-          }
-          if (index == 1) {
-            this.unitJson = _unitJson;
-            this.$forceUpdate();
-            setTimeout(() => {
-              if (this.unitIndex != _unitIndex2) {
-                this.isDelete = 2;
-                this.unitIndex = _unitIndex2;
-              }
-            }, 0);
-            this.timer = setTimeout(() => {
-              this.seleteCourseUpdate();
-            }, 1000);
-          } else if (index == 2) {
-            let _this = this;
-            _this
-              .$confirm(
-                "您所修改的阶段已经被其他老师删除了,需要恢复嘛?",
-                "提示",
-                {
-                  confirmButtonText: "需要",
-                  cancelButtonText: "取消",
-                  type: "warning",
-                }
-              )
-              .then(() => {
-                if (_this.time()) {
-                  _this.restoreWork(
-                    _chapAarry[0],
-                    _unitJson,
-                    chapindex,
-                    _unitJson2,
-                    _unitIndex2
-                  );
-                }
-              })
-              .catch(() => {
-                _this.unitJson = _unitJson;
-                _this.$forceUpdate();
-                setTimeout(() => {
-                  if (this.unitIndex != _unitIndex2) {
-                    this.isDelete = 2;
-                    this.unitIndex = _unitIndex2;
-                  }
-                }, 0);
-                _this.timer = setTimeout(() => {
-                  _this.seleteCourseUpdate();
-                }, 1000);
-              });
-          }
-          // 在复制操作之前记录滚动位置
-          const savedScrollPosition = this.$refs.scrollContainer ? this.$refs.scrollContainer.scrollTop : 0;
-          // 执行复制操作
-          // 复制操作完成后恢复滚动位置
-          this.$nextTick(() => {
-            if (this.$refs.scrollContainer) {
-              this.$refs.scrollContainer.scrollTop = savedScrollPosition;
-            }
-          });
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    restoreWork(chapid, unitJson, chapindex, unitJson2, unitIndex2) {
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          chapid: chapid,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "restoreWork", params)
-        .then((res) => {
-          this.$message({
-            message: "恢复成功",
-            type: "success",
-          });
-          unitJson.splice(chapindex, 0, unitJson2[chapindex]);
-          this.unitJson = unitJson;
-          this.$forceUpdate();
-          setTimeout(() => {
-            if (this.unitIndex != unitIndex2) {
-              this.isDelete = 2;
-              this.unitIndex = unitIndex2;
-            }
-          }, 0);
-          this.timer = setTimeout(() => {
-            this.seleteCourseUpdate();
-          }, 1000);
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    getTypeName() {
-      console.log(this.courseTypeId);
-      this.$forceUpdate();
-    },
-    selectAllType() {
-      let params = {
-        org: this.org && this.org != "" ? this.org : "",
-        oid: this.oid && this.oid != "" ? this.oid : "",
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllType", params)
-        .then((res) => {
-          if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
-            res.data[0] = [...res.data[0], ...res.data[4]];
-          }
-          this.CourseType = res.data;
-          this.CourseType2 = [
-            { name: "智见课程", id: [] },
-            { name: "智行课程", id: [] },
-            { name: "智创课程", id: [] },
-          ];
-          for (var cti = 0; cti < res.data[0].length; cti++) {
-            if (
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" ||
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5"
-            ) {
-              this.CourseType2[0].id.push(res.data[0][cti].id);
-            } else if (
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5" ||
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5"
-            ) {
-              this.CourseType2[1].id.push(res.data[0][cti].id);
-            } else if (
-              res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5"
-            ) {
-              this.CourseType2[2].id.push(res.data[0][cti].id);
-            }
-            if (
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" ||
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5"
-            ) {
-              res.data[0][cti].name = "年级";
-            } else if (
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5" ||
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5"
-            ) {
-              res.data[0][cti].name = "学科";
-            } else if (
-              res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5"
-            ) {
-              res.data[0][cti].name = "主题";
-            }
-          }
-
-          let _courseTypeId = [];
-          for (var i = 0; i < res.data[0].length; i++) {
-            if (!this.cid) {
-              this.courseTypeId[res.data[0][i].id] = [];
-            }
-            // if (!this.CourseTypeJson[res.data[0][i].id]) {
-            // }
-            this.CourseTypeJson[res.data[0][i].id] = [];
-
-            if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
-              if (res.data[0][i].name == "栏目") {
-                this.CourseType[0][i].name = "主题";
-              }
-            }
-            if (res.data[2].length == 0 && res.data[3].length == 0) {
-              for (var j = 0; j < res.data[1].length; j++) {
-                if (
-                  this.courseTypeId.indexOf(res.data[1][j].id) != -1 &&
-                  _courseTypeId.indexOf(res.data[1][j].id) == -1
-                ) {
-                  _courseTypeId.push(res.data[1][j].id);
-                }
-                if (res.data[0][i].id == res.data[1][j].pid) {
-                  this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
-                }
-              }
-            } else {
-              if (res.data[2].length > 0) {
-                for (var j = 0; j < res.data[2].length; j++) {
-                  if (
-                    this.courseTypeId.indexOf(res.data[2][j].id) != -1 &&
-                    _courseTypeId.indexOf(res.data[2][j].id) == -1
-                  ) {
-                    _courseTypeId.push(res.data[2][j].id);
-                  }
-                  if (res.data[0][i].id == res.data[2][j].pid) {
-                    this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
-                  }
-                }
-              }
-              if (res.data[3].length > 0) {
-                for (var j = 0; j < res.data[3].length; j++) {
-                  if (
-                    this.courseTypeId.indexOf(res.data[3][j].id) != -1 &&
-                    _courseTypeId.indexOf(res.data[3][j].id) == -1
-                  ) {
-                    _courseTypeId.push(res.data[3][j].id);
-                  }
-                  if (res.data[0][i].id == res.data[3][j].pid) {
-                    this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
-                  }
-                }
-              }
-            }
-          }
-          this.courseTypeId = _courseTypeId;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    selectType() {
-      this.ajax
-        .get(this.$store.state.api + "selectType")
-        .then((res) => {
-          this.CourseType = res.data;
-          for (var i = 0; i < res.data[0].length; i++) {
-            if (!this.cid) {
-              this.courseTypeId[res.data[0][i].id] = "";
-            }
-            if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
-              if (res.data[0][i].name == "栏目") {
-                this.CourseType[0][i].name = "主题";
-              }
-            }
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                if (!this.CourseTypeJson[res.data[0][i].id]) {
-                  this.CourseTypeJson[res.data[0][i].id] = [];
-                }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
-              }
-            }
-          }
-          this.selectTypeByOid();
-          this.selectTypeByOrg();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    selectTypeByOid() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectTypeByOid", params)
-        .then((res) => {
-          for (var i = 0; i < res.data[0].length; i++) {
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                if (!this.CourseTypeJson[res.data[0][i].id]) {
-                  this.CourseTypeJson[res.data[0][i].id] = [];
-                }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
-              }
-            }
-          }
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    selectTypeByOrg() {
-      let params = {
-        oid: this.org,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectTypeByOrg", params)
-        .then((res) => {
-          for (var i = 0; i < res.data[0].length; i++) {
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                if (!this.CourseTypeJson[res.data[0][i].id]) {
-                  this.CourseTypeJson[res.data[0][i].id] = [];
-                }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
-              }
-            }
-          }
-          this.$forceUpdate();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    OtherMb(type, task) {
-      if (task === 0 || task) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          task
-        ].isEvaFold = true;
-      }
-      this.typeMode = type;
-      setTimeout(() => {
-        this.checkEva(this.checkId);
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-        }, 100);
-      }, 100);
-    },
-    openMember() {
-      this.searchTN = "";
-      this.getTeacher();
-      this.dialogVisibleMember = true;
-    },
-    checkEva(id, type) {
-      this.dialogVisiblemb = false;
-      this.selectEva();
-      if (this.evalua != id && type == 2) {
-        this.$message.success("导入成功");
-        setTimeout(() => {
-          this.checkEva(id);
-        }, 100);
-      }
-      this.evalua = id;
-      this.checkId = id;
-      if (this.evalua != "") {
-        for (var i = 0; i < this.evaJuri.length; i++) {
-          if (this.evalua == this.evaJuri[i].id) {
-            this.eTitle = this.evaJuri[i].title;
-            this.eJson = JSON.parse(this.evaJuri[i].content);
-          }
-        }
-        this.data.data = [];
-        this.$forceUpdate();
-        setTimeout(() => {
-          this.setMindData();
-        }, 1000);
-      }
-    },
-    deleteEva() {
-      let _this = this;
-      if (_this.evalua == "") {
-        this.$message.warning("内容已经清空了,请勿重复清空");
-        return;
-      }
-      _this
-        .$confirm("确定删除此目标吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.evalua = "";
-          _this.checkId = "";
-          _this.eTitle = "";
-          let _unitJson = _this.unitJson;
-          for (var i = 0; i < _unitJson.length; i++) {
-            let _task = _unitJson[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < _task.length; j++) {
-              let _eList = _task[j].eList;
-              for (var k = 0; k < _eList.length; k++) {
-                delete _eList[k].target;
-              }
-            }
-          }
-          _this.$forceUpdate();
-          if (_this.cid) {
-            _this.updateWork();
-          }
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    selectEva() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllEvaluation", params)
-        .then((res) => {
-          this.evaJuri = res.data[0];
-          // 在复制操作之前记录滚动位置
-          const savedScrollPosition = this.$refs.scrollContainer ? this.$refs.scrollContainer.scrollTop : 0;
-          // 执行复制操作
-          // 复制操作完成后恢复滚动位置
-          this.$nextTick(() => {
-            if (this.$refs.scrollContainer) {
-              this.$refs.scrollContainer.scrollTop = savedScrollPosition;
-            }
-          });
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    setMindData() {
-      let targetArray = [];
-      this.data.data = [];
-      this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
-      let _eJson = Object.keys(this.eJson);
-      let _e = this.eJson;
-      for (let i = 0; i < _eJson.length; i++) {
-        let element = _e[_eJson[i]];
-        this.data.data.push({
-          id: element.id,
-          parentid: "root",
-          topic: element.name,
-        });
-        // targetArray.push({
-        //   id: element.id,
-        //   parentid: "root",
-        //   name: element.name,
-        // });
-        targetArray.push({
-          value: element.name,
-          label: element.name,
-          children: [],
-        });
-        let _eJsonc = Object.keys(element.child);
-        let _e2 = element.child;
-        for (let j = 0; j < _eJsonc.length; j++) {
-          let _ec = _e2[_eJsonc[j]];
-          this.data.data.push({
-            id: _ec.id,
-            parentid: element.id,
-            topic: _ec.name,
-          });
-          // targetArray.push({
-          //   id: _ec.id,
-          //   parentid: element.id,
-          //   name: _ec.name,
-          // });
-          targetArray[i].children.push({
-            value: _ec.name,
-            label: _ec.name,
-            children: [],
-          });
-          let _eJsonz = Object.keys(_ec.child);
-          let _e3 = _ec.child;
-          for (let z = 0; z < _eJsonz.length; z++) {
-            let _ez = _e3[_eJsonz[z]];
-            this.data.data.push({
-              id: _ez.id,
-              parentid: _ec.id,
-              topic: _ez.name,
-            });
-            // targetArray.push({
-            //   id: _ez.id,
-            //   parentid: _ec.id,
-            //   name: _ez.name,
-            // });
-            targetArray[i].children[j].children.push({
-              value: _ez.name,
-              label: _ez.name,
-            });
-          }
-        }
-      }
-      this.targetArray = targetArray;
-      this.$forceUpdate();
-    },
-    /*添加评价 */
-    addEList(index, tIndex) {
-      this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList
-        ? this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.push({
-          value: "",
-          detail: "",
-          score: 5,
-        })
-        : (this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList = [
-          { value: "", detail: "", score: 5 },
-        ]);
-      this.$forceUpdate();
-    },
-    openEList(index, tIndex) {
-      this.evaIndex = index;
-      this.evatIndex = tIndex;
-      this.evaBoxDialog = true;
-    },
-    addCET(index, tIndex) {
-      this.cetIndex = index;
-      this.cettIndex = tIndex;
-      this.selectAllType1();
-    },
-    addCETemplate() {
-      var array =
-        this.unitJson[this.cetIndex].chapterInfo[0].taskJson[this.cettIndex]
-          .eList;
-      let params = [
-        {
-          uid: this.userid,
-          n: this.templateName,
-          json: JSON.stringify(array),
-          t: 1,
-          oid: this.oid,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addCETShare", params)
-        .then((res) => {
-          this.addTypeByCET(res.data[0][0].id);
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    addTypeByCET(id) {
-      if (this.setTypeJson.two == "") {
-        this.$message.warning("请选择二级分类,如没有二级分类请前往添加!");
-        return;
-      }
-      let params = {
-        cid: id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "deleteCETLabel", params)
-        .then((res) => {
-          for (var i = 0; i < 2; i++) {
-            let tid = "";
-            if (i == 0) {
-              tid = this.setTypeJson.one;
-            } else {
-              tid = this.setTypeJson.two;
-            }
-            let params = [
-              {
-                cid: id,
-                tid: tid,
-                uid: this.userid,
-              },
-            ];
-            this.ajax
-              .post(this.$store.state.api + "addCETLabel", params)
-              .then((res) => {
-                this.$message({
-                  message: "添加成功",
-                  type: "success",
-                });
-                this.close();
-              })
-              .catch((err) => {
-                this.$message.error("网络不佳");
-                console.error(err);
-              });
-          }
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    updateEvaJson(array) {
-      this.unitJson[this.evaIndex].chapterInfo[0].taskJson[
-        this.evatIndex
-      ].eList = array;
-    },
-    forceUpdate() {
-      this.$forceUpdate();
-    },
-    deletEList(index, tIndex, eIndex) {
-      this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.splice(
-        eIndex,
-        1
-      );
-      this.$forceUpdate();
-    },
-    getChoosePic(t) {
-      this.chooseType = t;
-      this.getAllBanner();
-    },
-    getAllBanner() {
-      this.sysPicVisible = true;
-      let params = {
-        t: this.chooseType,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllBanner", params)
-        .then((res) => {
-          this.sysPic = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    // getClass() {
-    //   let params = {
-    //     oid: this.oid,
-    //   };
-    //   this.ajax
-    //     .get(this.$store.state.api + "selectClassBySchool", params)
-    //     .then((res) => {
-    //       this.classJuri = res.data[0];
-    //     })
-    //     .catch((err) => {
-    //       console.error(err);
-    //     });
-    // },
-    deleteSysPic() {
-      this.cover = [];
-      this.isSysPic = false;
-      this.isSysPic2 = false;
-    },
-    deleteSelectPic() {
-      this.selectJson.url = "";
-    },
-    setEListStar() {
-      this.$forceUpdate();
-    },
-    deletRateList(i) {
-      this.rateJson.splice(i, 1);
-    },
-    addRateList() {
-      this.rateJson.push({ detail: "", score: 5, value: "" });
-    },
-    addSt() {
-      this.sentenceList.push({
-        sentenceTitle: "",
-        addSentence: [],
-        rightAnswer: [],
-      });
-    },
-    addSen(i) {
-      if (!this.sentenceList[i].sentenceTitle) {
-        this.$message.error("请填写卡片内容!");
-        return;
-      }
-      if (this.sentenceList[i].sentenceTitle.length > 10) {
-        this.$message.error("卡片内容字数不能超过10位");
-        return;
-      }
-      if (
-        this.sentenceList[i].addSentence.indexOf(
-          this.sentenceList[i].sentenceTitle
-        ) !== -1
-      ) {
-        this.$message.error("不能添加重复的卡片内容!");
-        return;
-      }
-      this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
-      // this.isPushTitleList.push(this.sentenceTitle);
-      this.sentenceList[i].sentenceTitle = "";
-    },
-    setRightAnswer(s, i, j) {
-      if (this.sentenceList[i].rightAnswer.indexOf(s) == -1) {
-        this.sentenceList[i].rightAnswer.push(s);
-      }
-    },
-    returnCard(r, i, j) {
-      this.sentenceList[i].rightAnswer.splice(j, 1);
-    },
-    addSentenceTool() {
-      for (var i = 0; i < this.sentenceList.length; i++) {
-        if (this.sentenceList[i].rightAnswer.length == 0) {
-          this.$message.error(`请将题目${i + 1}设置完整。`);
-          return;
-        }
-        if (
-          this.sentenceList[i].addSentence.length !=
-          this.sentenceList[i].rightAnswer.length
-        ) {
-          this.$message.error(`请将题目${i + 1}设置完整。`);
-          return;
-        }
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].sentenceList = this.sentenceList;
-      this.sentenceList = [
-        { sentenceTitle: "", addSentence: [], rightAnswer: [] },
-      ];
-      this.dialogVisibleSentence = false;
-      // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //   itemTaskIndex
-      // ].toolChoose[toolIndex].tool = [];
-      // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //   itemTaskIndex
-      // ].toolChoose[toolIndex].tool.push(i);
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 47
-      ) {
-        this.addTools(47, this.taskCount, this.toolIndex);
-      }
-    },
-    addTableJson() {
-      // if (this.tableJson.text == "" || this.tableJson.text == "<p></p>") {
-      //   this.$message.error("请将信息填写完整!");
-      //   return;
-      // }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].tableJson = this.tableJson;
-      // this.tableJson = [{ text: "" }];
-      // this.dialogVisibleTable = false;
-      this.$message.success("上传成功");
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 48
-      ) {
-        this.addTools(48, this.taskCount, this.toolIndex);
-      }
-    },
-    addWordJson() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].wordJson = this.wordJson;
-      // this.wordJson = [{ text: "" }];
-      // this.dialogVisibleWord = false;
-      this.$message.success("上传成功");
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 52
-      ) {
-        this.addTools(52, this.taskCount, this.toolIndex);
-      }
-    },
-    addMoreUpload() {
-      if (this.uploadJson.length == 0) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].uploadJson = [];
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].uploadJson = this.uploadJson;
-      }
-
-      this.uploadJson = [];
-      this.dialogVisibleMoreUpload = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 50
-      ) {
-        this.addTools(50, this.taskCount, this.toolIndex);
-      }
-    },
-    addPreTime() {
-      if (this.preTime == 0) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].preTime = 0;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].preTime = this.preTime;
-      }
-      this.preTime = 0;
-      this.dialogVisiblePreTime = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 10
-      ) {
-        this.addTools(10, this.taskCount, this.toolIndex);
-      }
-    },
-    goToTask(i) {
-      this.toolIndexType = "";
-      if (this.isClickColor == i + 1) {
-        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        // } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].toolOpen = true;
-        // }
-        this.$forceUpdate();
-        return;
-      }
-
-      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      // } else {
-      document.querySelectorAll(".basic_box")[0].scrollTop =
-        document.querySelectorAll(".taskBorder")[i].offsetTop - 100;
-      this.isClickColor = i + 1;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true;
-      // }
-      this.$forceUpdate();
-    },
-    taskOpen(i, stageIndex) {
-      if (this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen = false;
-      } else {
-        this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen = true;
-      }
-      this.updateWork3(stageIndex);
-      this.$forceUpdate();
-    },
-    goToTask2(i, stage) {
-      this.toolIndexType = "";
-      if (this.isClickColor == i + 1 && this.unitIndex == stage) {
-        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        // } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].toolOpen = true;
-        // }
-        this.$forceUpdate();
-        return;
-      }
-      if (this.unitIndex != stage) {
-        if (this.panUnitJson() == 2) {
-          return;
-        }
-        this.unitSet(stage);
-      }
-      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      // } else {
-      document.querySelectorAll(".basic_box")[0].scrollTop =
-        document.querySelectorAll(".taskBorder")[i].offsetTop - 100;
-      this.isClickColor = i + 1;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true;
-      // }
-      this.$forceUpdate();
-    },
-    taskMove(type, index) {
-      this.$confirm(
-        "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
-          if (type == 1) {
-            if (index > 0) {
-              let a = JSON.parse(
-                JSON.stringify(
-                  this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                  index - 1
-                  ]
-                )
-              );
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index - 1] =
-                this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
-            }
-          } else {
-            if (
-              index <
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson.length - 1
-            ) {
-              let a = JSON.parse(
-                JSON.stringify(
-                  this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                  index + 1
-                  ]
-                )
-              );
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index + 1] =
-                this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
-            }
-          }
-          this.$forceUpdate();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    stageMove(type, index) {
-      if (type == 1) {
-        if (index > 0) {
-          let a = JSON.parse(JSON.stringify(this.unitJson3[index - 1]));
-          let acid = JSON.parse(
-            JSON.stringify(this.unitJson3[index - 1].chapterInfo[0].chapterid)
-          );
-          let bcid = JSON.parse(
-            JSON.stringify(this.unitJson3[index].chapterInfo[0].chapterid)
-          );
-          this.unitJson3[index - 1] = this.unitJson3[index];
-          this.unitJson3[index] = a;
-          this.unitJson3[index - 1].chapterInfo[0].chapterid = acid;
-          this.unitJson3[index].chapterInfo[0].chapterid = bcid;
-        }
-      } else {
-        if (index < this.unitJson3.length - 1) {
-          let a = JSON.parse(JSON.stringify(this.unitJson3[index + 1]));
-          let acid = JSON.parse(
-            JSON.stringify(this.unitJson3[index + 1].chapterInfo[0].chapterid)
-          );
-          let bcid = JSON.parse(
-            JSON.stringify(this.unitJson3[index].chapterInfo[0].chapterid)
-          );
-          this.unitJson3[index + 1] = this.unitJson3[index];
-          this.unitJson3[index] = a;
-          this.unitJson3[index + 1].chapterInfo[0].chapterid = acid;
-          this.unitJson3[index].chapterInfo[0].chapterid = bcid;
-        }
-      }
-      this.$forceUpdate();
-    },
-    addGroup(i) {
-      // this.groupJson.group.splice(i + 1, 0, { name: "第"+(i+1)+"组" });
-      this.groupJson.group.push({
-        name: "第" + (this.groupJson.group.length + 1) + "组",
-      });
-    },
-    deleteGroup(i) {
-      this.groupJson.group.splice(i, 1);
-    },
-    numberPan() {
-      if (
-        /[^\d]/.test(this.groupJson.number) ||
-        this.groupJson.number < 2 ||
-        this.groupJson.number > 10
-      ) {
-        this.$message.error("请输入2-10的数字");
-        this.groupJson.number = "";
-      }
-    },
-    numberPanJie() {
-        if (/[^\d]/.test(this.courseJie) || this.courseJie < 1) {
-            this.$message.error('请输入大于1的数字')
-            this.courseJie = 1
-        }
-    },
-    numberPanTime() {
-        if (/[^\d]/.test(this.courseTime) || this.courseTime < 1) {
-            this.$message.error('请输入大于1的数字')
-            this.courseTime = 1
-        }
-    },
-    addGroupJson() {
-      for (var i = 0; i < this.groupJson.group.length; i++) {
-        if (!this.groupJson.group[i].name) {
-          this.$message.error("请将信息填写完整!");
-          return;
-        }
-      }
-      if (!this.groupJson.number) {
-        this.$message.error("请将信息填写完整!");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].groupJson = JSON.parse(
-        JSON.stringify(this.groupJson)
-      );
-      this.dialogVisibleGroup = false;
-      this.groupJson = {};
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 49
-      ) {
-        this.addTools(49, this.taskCount, this.toolIndex);
-      }
-    },
-    updateTime(preTime) {
-      this.preTime = preTime;
-    },
-    InviteChange(val) {
-      console.log(val);
-      let _check = [];
-      let _check2 = [];
-      for (var i = 0; i < this.grade2.length; i++) {
-        var gid = this.grade2[i].id;
-        _check.push(gid);
-      }
-      for (var i = 0; i < this.checkboxList2.length; i++) {
-        var _id = this.checkboxList2[i];
-        if (_check.indexOf(_id) !== -1) {
-          _check2.push(_id);
-        }
-      }
-      this.checkAll = _check2.length === _check.length;
-      return;
-      let array = JSON.parse(JSON.stringify(val));
-      this.inviteCode = this.inviteCode.filter((el) => {
-        if (val.indexOf(el.cid) != -1) {
-          array.splice(array.indexOf(el.cid), 1);
-          return el;
-        }
-      });
-      for (var i = 0; i < array.length; i++) {
-        this.getInviteCode(array[i]);
-      }
-    },
-    InviteChange2(val) {
-      console.log(val);
-      let _check = [];
-      let _check2 = [];
-      for (var i = 0; i < this.teacherJuri.length; i++) {
-        var gid = this.teacherJuri[i].userid;
-        _check.push(gid);
-      }
-      for (var i = 0; i < this.checkboxList3.length; i++) {
-        var _id = this.checkboxList3[i];
-        if (_check.indexOf(_id) !== -1) {
-          _check2.push(_id);
-        }
-      }
-      this.checkAll2 = _check2.length === _check.length;
-      this.setMan();
-      return;
-      let array = JSON.parse(JSON.stringify(val));
-      this.inviteCode = this.inviteCode.filter((el) => {
-        if (val.indexOf(el.cid) != -1) {
-          array.splice(array.indexOf(el.cid), 1);
-          return el;
-        }
-      });
-      for (var i = 0; i < array.length; i++) {
-        this.getInviteCode(array[i]);
-      }
-    },
-    handleCheckAllChange(val) {
-      if (val) {
-        for (var i = 0; i < this.grade2.length; i++) {
-          var gid = this.grade2[i].id;
-          if (this.checkboxList2.indexOf(gid) === -1) {
-            this.checkboxList2.push(gid);
-          }
-        }
-      } else {
-        let _check = [];
-        let _check2 = [];
-        for (var i = 0; i < this.grade2.length; i++) {
-          var gid = this.grade2[i].id;
-          _check.push(gid);
-        }
-        for (var i = 0; i < this.checkboxList2.length; i++) {
-          var _id = this.checkboxList2[i];
-          if (_check.indexOf(_id) === -1) {
-            _check2.push(_id);
-          }
-        }
-        this.checkboxList2 = _check2;
-      }
-      this.isIndeterminate = false;
-    },
-    handleCheckAllChange2(val) {
-      if (val) {
-        for (var i = 0; i < this.teacherJuri.length; i++) {
-          var gid = this.teacherJuri[i].userid;
-          if (this.checkboxList3.indexOf(gid) === -1) {
-            this.checkboxList3.push(gid);
-          }
-        }
-      } else {
-        let _check = [];
-        let _check2 = [];
-        for (var i = 0; i < this.teacherJuri.length; i++) {
-          var gid = this.teacherJuri[i].userid;
-          _check.push(gid);
-        }
-        for (var i = 0; i < this.checkboxList3.length; i++) {
-          var _id = this.checkboxList3[i];
-          if (_check.indexOf(_id) === -1) {
-            _check2.push(_id);
-          }
-        }
-        this.checkboxList3 = _check2;
-      }
-      this.isIndeterminate2 = false;
-    },
-    async getInviteCode(cid) {
-      let code = this.randomNumber();
-      let params = {
-        code: code,
-        oid: this.oid,
-      };
-      let type = 1;
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        if (this.inviteCode[i].cid != cid && code == this.inviteCode[i].ic) {
-          type = 2;
-        }
-      }
-      if (type == 2) {
-        this.getInviteCode(cid);
-        return;
-      }
-      const res = await this.ajax.get(
-        this.$store.state.api + "selectInviteCode2",
-        params
-      );
-      if (
-        res.data.length &&
-        res.data[0].length &&
-        res.data[0][0].courseId != this.cid
-      ) {
-        this.getInviteCode(cid);
-        return;
-      }
-
-      let array = [];
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        array.push(this.inviteCode[i].cid);
-      }
-      if (array.indexOf(cid) != -1) {
-        this.inviteCode[array.indexOf(cid)].ic = code;
-      } else {
-        this.inviteCode.push({ cid: cid, ic: code });
-      }
-    },
-    OpenInviteD(cid) {
-      let array = [];
-      this.icode = "";
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        array.push(this.inviteCode[i].cid);
-      }
-      if (array.indexOf(cid) != -1) {
-        this.icode = this.inviteCode[array.indexOf(cid)].ic;
-      }
-      this.inviteId = cid;
-      this.dialogVisibleInvite = true;
-    },
-    addInvite() {
-      let reg = /^[A-Za-z0-9]{4,}$/;
-      if (!reg.test(this.icode)) {
-        this.$message.error("请输入至少四位数字或英文组合的随机码");
-        return;
-      }
-      let type = 1;
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        if (
-          this.inviteCode[i].cid != this.inviteId &&
-          this.icode == this.inviteCode[i].ic
-        ) {
-          type = 2;
-        }
-      }
-      if (type == 2) {
-        this.$message.error("已有此随机码,不能重复");
-        return;
-      }
-
-      let params = {
-        code: this.icode,
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectInviteCode", params)
-        .then((res) => {
-          if (
-            res.data.length &&
-            res.data[0].length &&
-            res.data[0][0].courseId != this.cid
-          ) {
-            this.$message.error("已有此随机码,不能重复");
-            return;
-          }
-
-          let array = [];
-          for (var i = 0; i < this.inviteCode.length; i++) {
-            array.push(this.inviteCode[i].cid);
-          }
-          if (array.indexOf(this.inviteId) != -1) {
-            this.inviteCode[array.indexOf(this.inviteId)].ic = this.icode;
-          } else {
-            this.inviteCode.push({ cid: this.inviteId, ic: this.icode });
-          }
-          this.icode = "";
-          this.dialogVisibleInvite = false;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    randomNumber() {
-      // 随机生成两位数
-      // let num = Math.floor(Math.random() * 900) + 100;
-      // 生成 0 到 99 之间的随机整数
-      const randomNumber = Math.floor(Math.random() * 100);
-
-      // 如果随机数小于 10,补上前导零
-      const num =
-        randomNumber < 10 ? "0" + randomNumber : randomNumber.toString();
-
-      // 随机生成两个大写字母
-      let letters = "";
-      let chars2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-      for (let i = 0; i < 3; i++) {
-        letters += chars2.charAt(Math.floor(Math.random() * chars2.length));
-      }
-
-      // 随机生成两位数字和字母的组合
-      let mix = "";
-      let chars =
-        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-      for (let i = 0; i < 3; i++) {
-        let char = chars.charAt(Math.floor(Math.random() * chars.length));
-        mix += char;
-      }
-
-      // 随机选择一种类型
-      let type = Math.floor(Math.random() * 3);
-
-      return num;
-
-      // 根据类型输出结果
-      switch (type) {
-        case 0:
-          console.log(num); // 输出两位数
-          return num;
-        case 1:
-          console.log(letters); // 输出两个大写字母
-          return letters;
-        case 2:
-          console.log(mix); // 输出两位数字和字母的组合
-          return mix;
-      }
-    },
-    getPaste() {
-      let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-      let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-      if (!iframe && !iframe2) {
-        return;
-      }
-      let copyData = iframe ? iframe.contentWindow.copyData : false;
-      let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-      if (copyData && copyData.stageData && copyData.stageData.length) {
-        this.isPasteStage = true;
-      }
-      if (copyData2 && copyData2.stageData && copyData2.stageData.length) {
-        this.isPasteStage = true;
-      }
-      if (copyData && copyData.selectData.length) {
-        this.isPasteChoice = true;
-      }
-      if (copyData && copyData.tasksData && copyData.tasksData.length) {
-        this.isPasteTask = true;
-      }
-      if (copyData2 && copyData2.tasksData && copyData2.tasksData.length) {
-        this.isPasteTask = true;
-      }
-    },
-    setCover() {
-      var _this = this;
-      if(_this.cover.length){
-        return;
-      }
-      _this.imageloading2 = true
-      _this.ajax
-        .post("https://gpt.cocorobo.cn/search_image", {
-          page: _this.ppage,
-          pagesize: 9,
-          query: _this.courseName,
-        })
-        .then(function (response) {
-          // console.log(response.data.data);
-          var data = response.data.FunctionResponse.result;
-          _this.cover = [];
-          setTimeout(() => {
-              _this.cover[0] = {
-              name: "网络图片.png",
-              url: data[0].thumbnail
-            };
-            _this.imgChange1(null, null, 1, null);
-            _this.$forceUpdate();
-          }, 0);
-          _this.imageloading2 = false
-        })
-        .catch(function (error) {
-          _this.imageloading2 = false
-          console.log(error);
-        });
-    },
-    searchImage() {
-      var _this = this;
-      _this.imageList = [];
-      if (!_this.searchImageValue) {
-        _this.sysPicVisible2 = true;
-        return;
-      }
-      _this.imageloading = true;
-      _this.ajax
-        .post("https://gpt.cocorobo.cn/search_image", {
-          page: _this.ppage,
-          pagesize: 9,
-          query: _this.searchImageValue,
-        })
-        .then(function (response) {
-          // console.log(response.data.data);
-          var data = response.data.FunctionResponse.result;
-          for (var i = 0; i < data.length; i++) {
-            _this.imageList.push({ url: data[i].thumbnail });
-          }
-          _this.imageloading = false;
-        })
-        .catch(function (error) {
-          console.log(error);
-        });
-      _this.sysPicVisible2 = true;
-    },
-    changePicture() {
-      this.ppage++;
-      this.searchImage();
-    },
-    resetImage() {
-      this.ppage = 1;
-      this.searchImage();
-    },
-    jumpGj(i, j) {
-      if (i + 1 != this.isClickColor) {
-        this.isClickColor = i + 1;
-      }
-      var a = document.scrollingElement;
-      this.toolIndexType = `gj${i}${j}`;
-      let target = document.querySelector(`#gj${i}${j}`);
-      if (target) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
-        setTimeout(() => {
-          target.scrollIntoView(true);
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-            j
-          ].isFold3 = false;
-          setTimeout(() => {
-            this.$refs.unitBox.scrollTop = this.$refs.unitBox.scrollTop - 100;
-          }, 0);
-        }, 0);
-      }
-    },
-    jumpGj2(i, j, k) {
-      if (this.unitIndex != k) {
-        if (this.panUnitJson() == 2) {
-          return;
-        }
-        this.unitSet(k);
-      }
-      setTimeout(() => {
-        if (i + 1 != this.isClickColor) {
-          this.isClickColor = i + 1;
-        }
-        var a = document.scrollingElement;
-        this.toolIndexType = `gj${i}${j}${k}`;
-        let target = document.querySelector(`#gj${i}${j}`);
-        if (target) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
-          setTimeout(() => {
-            target.scrollIntoView(true);
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-              j
-            ].isFold3 = false;
-            setTimeout(() => {
-              this.$refs.unitBox.scrollTop = this.$refs.unitBox.scrollTop - 100;
-            }, 0);
-          }, 0);
-        }
-      }, 0);
-    },
-    dragStart(val, i, j) {
-      console.log(this.taskCount);
-      this.dragType = "drag";
-      this.taskCount = j;
-      this.oldIndex = i;
-      this.oldData = val;
-    },
-    dragOver(i, j) {
-      this.typeIndex = "chapter-" + j + "-" + i;
-      this.newIndex = i;
-    },
-    dragEnd() {
-      if (this.dragType != "drag") {
-        this.typeIndex = "";
-        this.newIndex = "";
-        this.dragType = "";
-        this.isdrag = "";
-        return;
-      }
-      console.log(this.taskCount);
-
-      let newItems = [
-        ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .chapterData,
-      ];
-      // 删除老的节点
-      newItems.splice(this.oldIndex, 1);
-      // 在列表中目标位置增加新的节点
-      newItems.splice(this.newIndex, 0, this.oldData);
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData = [...newItems];
-      this.typeIndex = "";
-      this.newIndex = "";
-      this.dragType = "";
-      this.isdrag = "";
-      this.$forceUpdate();
-    },
-    dragTaskStart(val, i, j) {
-      this.dragType = "task";
-      this.oldIndex = i;
-      this.oldData = val;
-      this.oldUnitIndex = j;
-    },
-    dragTaskOver(i, j) {
-      this.typeIndex = "task-" + i;
-      this.newIndex = i;
-      this.checkUnitIndex = j;
-    },
-    async dragTaskEnd() {
-      if (this.dragType != "task") {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.checkUnitIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      if (
-        this.newIndex == this.oldIndex &&
-        this.oldUnitIndex == this.checkUnitIndex
-      ) {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.checkUnitIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      let count1 = await this.getWorksCount(
-        2,
-        this.checkUnitIndex,
-        this.newIndex,
-        0
-      );
-      let count2 = await this.getWorksCount(
-        2,
-        this.oldUnitIndex,
-        this.oldIndex,
-        0
-      );
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            if (this.oldUnitIndex != this.checkUnitIndex) {
-              let newItems = [
-                ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-              ];
-              // 删除老的节点
-              newItems.splice(this.oldIndex, 1);
-              // 在列表中目标位置增加新的节点
-              let newItems2 = [
-                ...this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson,
-              ];
-              newItems2.splice(this.newIndex, 0, this.oldData);
-              this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-                ...newItems,
-              ];
-              this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson = [
-                ...newItems2,
-              ];
-            } else {
-              let newItems = [
-                ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-              ];
-              let chapterData = []
-              if (this.oldIndex == 0) {
-                chapterData = newItems[this.oldIndex].chapterData
-                newItems[this.oldIndex].chapterData = []
-              } else if (this.newIndex == 0) {
-                chapterData = newItems[this.newIndex].chapterData
-                newItems[this.oldIndex].chapterData = []
-              }
-              // 删除老的节点
-              newItems.splice(this.oldIndex, 1);
-              // 在列表中目标位置增加新的节点
-              newItems.splice(this.newIndex, 0, this.oldData);
-              if (this.oldIndex == 0 || this.newIndex == 0) {
-                newItems[0].chapterData = chapterData
-              }
-              this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-                ...newItems,
-              ];
-            }
-            this.typeIndex = "";
-            this.newIndex = "";
-            this.dragType = "";
-            this.checkUnitIndex = "";
-            this.isdrag = "";
-            this.updateWork();
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            this.newIndex = "";
-            this.dragType = "";
-            this.typeIndex = "";
-            this.checkUnitIndex = "";
-            this.isdrag = "";
-            return;
-          });
-      } else {
-        if (this.oldUnitIndex != this.checkUnitIndex) {
-          let newItems = [
-            ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-          ];
-          // 删除老的节点
-          newItems.splice(this.oldIndex, 1);
-          // 在列表中目标位置增加新的节点
-          let newItems2 = [
-            ...this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson,
-          ];
-          newItems2.splice(this.newIndex, 0, this.oldData);
-          this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-            ...newItems,
-          ];
-          this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson = [
-            ...newItems2,
-          ];
-        } else {
-          let newItems = [
-            ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-          ];
-          let chapterData = []
-          if (this.oldIndex == 0) {
-            chapterData = newItems[this.oldIndex].chapterData
-            newItems[this.oldIndex].chapterData = []
-          } else if (this.newIndex == 0) {
-            chapterData = newItems[this.newIndex].chapterData
-            newItems[this.oldIndex].chapterData = []
-          }
-          // 删除老的节点
-          newItems.splice(this.oldIndex, 1);
-          // 在列表中目标位置增加新的节点
-          newItems.splice(this.newIndex, 0, this.oldData);
-          if (this.oldIndex == 0 || this.newIndex == 0) {
-            newItems[0].chapterData = chapterData
-          }
-          this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-            ...newItems,
-          ];
-        }
-        this.typeIndex = "";
-        this.newIndex = "";
-        this.dragType = "";
-        this.checkUnitIndex = "";
-        this.isdrag = "";
-        this.updateWork();
-        this.$forceUpdate();
-      }
-    },
-    dragUnitStart(val, i) {
-      this.dragType = "Unit";
-      this.oldIndex = i;
-      this.oldData = val;
-    },
-    dragUnitOver(i) {
-      this.typeIndex = "Unit-" + i;
-      this.newIndex = i;
-      console.log(i, this.unitJson[i].toolOpen);
-      if (!this.unitJson[i].toolOpen && this.dragType == "task") {
-        this.unitJson[i].toolOpen = true;
-        this.updateWork();
-        this.$forceUpdate();
-      }
-    },
-    async dragUnitEnd() {
-      if (this.dragType != "Unit") {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      if (this.newIndex == this.oldIndex) {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      let count1 = await this.getWorksCount(1, this.newIndex, 0, 0);
-      let count2 = await this.getWorksCount(1, this.oldIndex, 0, 0);
-      console.log(count1, count2);
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换阶段顺序将删除所有工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            let newItems = [...this.unitJson];
-            // 删除老的节点
-            newItems.splice(this.oldIndex, 1);
-            // 在列表中目标位置增加新的节点
-            newItems.splice(this.newIndex, 0, this.oldData);
-            this.unitJson = [...newItems];
-            this.typeIndex = "";
-            this.newIndex = "";
-            this.dragType = "";
-            this.isdrag = "";
-            this.updateWork();
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            this.newIndex = "";
-            this.dragType = "";
-            this.typeIndex = "";
-            this.isdrag = "";
-            return;
-          });
-      } else {
-        let newItems = [...this.unitJson];
-        // 删除老的节点
-        newItems.splice(this.oldIndex, 1);
-        // 在列表中目标位置增加新的节点
-        newItems.splice(this.newIndex, 0, this.oldData);
-        this.unitJson = [...newItems];
-        this.typeIndex = "";
-        this.newIndex = "";
-        this.dragType = "";
-        this.isdrag = "";
-        this.updateWork();
-        this.$forceUpdate();
-      }
-    },
-    getWorksCount(type, stage, task, tool) {
-      return new Promise((resolve, reject) => {
-        let params = [
-          {
-            cid: this.cid,
-            stage: stage,
-            task: task,
-            tool: tool,
-            type: type,
-          },
-        ];
-        this.ajax
-          .post(this.$store.state.api + "getCourseWorkCount", params)
-          .then((res) => {
-            let count = res.data[0][0].count;
-            resolve(count);
-          })
-          .catch((err) => {
-            resolve(0);
-            this.$message.error("网络不佳");
-            console.error(err);
-          });
-      });
-    },
-    getTwoType(id) {
-      this.twoJson = [];
-      var array = this.CourseTypeJson1[
-        "3f8eed32-aba9-11ee-b534-005056b86db5"
-      ].filter((e) => {
-        return e.ppid == id;
-      });
-      this.twoJson = array;
-      this.$forceUpdate();
-    },
-    ctype() {
-      this.oneJson =
-        this.CourseTypeJson1["3c73702a-aba9-11ee-b534-005056b86db5"];
-    },
-    selectAllType1() {
-      this.CourseType1 = [];
-      this.CourseTypeJson1 = {};
-      this.courseTypeId1 = {};
-      this.$forceUpdate();
-      let params = {
-        org: this.org && this.org != "" ? this.org : "",
-        oid: this.oid && this.oid != "" ? this.oid : "",
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllEvaType", params)
-        .then((res) => {
-          this.CourseType1 = res.data;
-          for (var i = 0; i < res.data[0].length; i++) {
-            if (res.data[0][i].id == "3c73702a-aba9-11ee-b534-005056b86db5") {
-              res.data[0][i].name = "一级分类";
-            } else if (
-              res.data[0][i].id == "3f8eed32-aba9-11ee-b534-005056b86db5"
-            ) {
-              res.data[0][i].name = "二级分类";
-            }
-            if (!this.cid) {
-              this.courseTypeId1[res.data[0][i].id] = [];
-            }
-            if (!this.CourseTypeJson1[res.data[0][i].id]) {
-              this.CourseTypeJson1[res.data[0][i].id] = [];
-            }
-
-            // if (res.data[2].length == 0 && res.data[3].length == 0) {
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                this.CourseTypeJson1[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
-              }
-            }
-            // } else {
-            if (res.data[2].length > 0) {
-              for (var j = 0; j < res.data[2].length; j++) {
-                if (res.data[0][i].id == res.data[2][j].pid) {
-                  this.CourseTypeJson1[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
-                }
-              }
-            }
-            if (res.data[3].length > 0) {
-              for (var j = 0; j < res.data[3].length; j++) {
-                if (res.data[0][i].id == res.data[3][j].pid) {
-                  this.CourseTypeJson1[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
-                }
-              }
-            }
-            // }
-          }
-          this.ctype();
-          this.cetBoxDialog = true;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    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
-        this.aiText2 = ''
-      }else if(pan == 'aiTeacher3'){
-        this.aiJson['aiCpoteTask'] = string
-        this.aiJson['teacherDetail2'] = string2
-        this.aiText2 = ''
-      }else if(pan == 'aiTask2'){
-        this.aiJson['aiTask'] = string
-      }else {
-        this.aiJson[pan] = string
-      }
-      this.$forceUpdate();
-    },
-    editTask3(index){
-      if(this.unitJson[0].chapterInfo[0].taskJson[index].isTask3){
-        this.unitJson[0].chapterInfo[0].taskJson[index].isTask3 = false
-      }else {
-        this.unitJson[0].chapterInfo[0].taskJson[index].isTask3 = true
-      }
-      this.$forceUpdate();
-    },
-    editTask2(index){
-      if(this.unitJson[0].chapterInfo[0].taskJson[index].isTask2){
-        this.unitJson[0].chapterInfo[0].taskJson[index].isTask2 = false
-      }else {
-        this.unitJson[0].chapterInfo[0].taskJson[index].isTask2 = true
-      }
-      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
-      }else {
-        this.cpote[index] = true
-      }
-      this.$forceUpdate();
-    },
-    clickGenTT(){
-      if(!this.teacherInfoData.length){
-        this.$message.error("请上传教案");
-        return;
-      }
-      this.openAiDialog(2, 'aiteacherTextDetail',1)
-      setTimeout(() => {
-        this.openAiDialog(2, 'aitargetTextDetail',1)
-      }, 500);
-    },
-    clickGenTT2(){
-      if (this.courseName == "") {
-        this.$message.error("请补充填写课程名称");
-        return;
-      }
-      this.openAiDialog(2, 'aiDetail',1)
-      setTimeout(() => {
-        this.openAiDialog(2, 'aitargetTextDetail2',1)
-      }, 500);
-      this.courseTextBool = true
-    },
-    openAiDialog2(clickType, type, callback, index, tindex){
-      this.$confirm("重新生成会影响已生成内容,确定重新生成吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          // if ((this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") && type == "aiTeacher2") {
-          //   this.openAiDialog(clickType, 'aiTeacher')
-          // }else {
-            this.openAiDialog(clickType, type, callback, index, tindex)
-          // }
-        })
-        .catch(() => {
-        
-        });
-    },
-    openAiDialog(clickType, type, callback, index, tindex) {
-      if(clickType == 1 && this.tipsJson.istips == 1 && this.istemplate != 1 && this.tipsJson.userid != this.userid && this.userid != '5943e08c-b7d4-11ed-8d51-005056b86db5'){
-        this.$message.error("您没有权限修改/查看提示词");
-        return;
-      }
-      if(!this.teacherInfoData.length && (type == 'aiteacherTextDetail' || type == 'aitargetTextDetail')){
-        this.$message.error("请上传教案");
-        return;
-      }
-      if (this.courseName == "") {
-        this.$message.error("请补充填写课程名称");
-        return;
-      }
-      this.aiText2 = ''
-      this.clickType = clickType
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      if (type == "aiDetail") {
-        if (this.ttextLoading) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail"
-        // this.aiText = `请根据${this.courseText}设计一个名为${this.courseName}的${sub.length ? sub.join(",") + "学科的" : ""},面向${this.getListClassC(this.checkboxList2)}的项目式学习课程。`
-        this.aiText = this.aiJson.aiDetail
-        this.aiCallback = callback
-      } else if (type == "aiOutline") {
-        this.aitype = "aiOutline"
-        // this.aiText = `请根据${this.courseText}设计一个名为${this.courseName}的${sub.length ? sub.join(",") + "学科的" : ""},面向${this.getListClassC(this.checkboxList2)}的项目式学习课程设计序列教学活动(需要每个任务都需要至少50个token的详细描述),每个教学活动的活动设计(可以直接使用文件内容)以及每个教学活动的评价量规(学生能做到...)。`
-        this.aiText = this.aiJson.aiOutline
-      } else if (type == "aiOutline2") {
-        this.aitype = "aiOutline2"
-        // this.aiText = `请根据${this.courseText}设计一个名为${this.courseName}的${sub.length ? sub.join(",") + "学科的" : ""},面向${this.getListClassC(this.checkboxList2)}的项目式学习课程设计序列教学活动(需要每个任务都需要至少50个token的详细描述),每个教学活动的活动设计(可以直接使用文件内容)以及每个教学活动的评价量规(学生能做到...)。`
-        this.aiText = this.aiJson.aiOutlineTask
-        this.aiText2 = this.aiJson.aiOutlineDetail
-      } else if (type == "aiOutlineDetail2") {
-        if (this.ttaskDetailLoading.indexOf('task-' + callback) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        if(!this.unitJson[0].chapterInfo[0].taskJson[callback].task){
-          this.$message.error('请输入任务名称')
-          return;
-        }
-
-        this.aitype = type
-        this.aiCallBack = callback
-        this.aiText = this.aiJson.aiOutlineDetail2
-      } else if (type == "aiTask") {
-        this.aitype = "aiTask"
-        var _text = ""
-        for (var i = 0; i < this.teacherText.length; i++) {
-          _text += `任务名称:${this.teacherText[i].task} 教案:${this.teacherText[i].detail.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}`
-        }
-        // this.aiText = `请根据${_text}。`
-        this.aiText = this.aiJson.aiTask
-        this.aiCallBack = callback
-      } else if (type == "aiTask2") {
-        if (this.taskLoading[callback]) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiTask2"
-        this.aiText = this.aiJson.aiTask
-        this.aiCallBack = callback
-      } else if (type == "aiDetail1") {
-        if (this.ttaskDetailLoading.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail1"
-        // this.aiText = `请帮我优化下列文字内容,更具象化更详细,输出文本格式就行不要带有其他格式\n${callback}`
-        // this.aiText = `请根据${callback},重新设计该教学任务。任务需要至少50个token的详细描述,包含任务设计,评价标准 \n`
-        this.aiText = this.aiJson.aiDetail1
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "aiDetail2") {
-        if (this.ttaskDetailLoading2.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail2"
-        // this.aiText = `请你在考虑到整个课程的情况下,优化该任务描述和任务名:${callback.task}:${callback.taskDetail}`
-        this.aiText = this.aiJson.aiDetail2
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "aiDetail3") {
-        if (this.ttaskDetailLoading3.indexOf('task-' + index + tindex) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail3"
-        this.aiText = this.aiJson.aiDetail3
-        this.aiIndex = index + '-' + tindex
-      } else if (type == "aiDetail4") {
-        var _text = ""
-        for (var i = 0; i < callback.length; i++) {
-          _text += `评价维度:${callback[i].value} 维度描述:${callback[i].detail} `
-        }
-        this.aitype = "aiDetail4"
-        this.aiText = this.aiJson.aiDetail4
-        this.aiIndex = index
-      } else if (type == "aiTeacher") {
-        this.aitype = "aiTeacher"
-        var _text = ""
-        for (var i = 0; i < this.dArray.length; i++) {
-          _text += `任务名称:${this.dArray[i].task} 任务描述:${this.dArray[i].detail} \n`
-        }
-        // this.aiText = `请根据${_text}为每个教学任务设计详细的教案,其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
-        this.aiText = this.aiJson.aiTeacher
-        this.aiCallBack = callback
-
-      } else if (type == "aiTeacher2") {
-        this.aitype = "aiTeacher2"
-        this.aiText = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-      } else if (type == "aiTeacher3") {
-        this.aitype = type
-        this.aiText = this.aiJson.aiCpoteTask
-        this.aiText2 = this.aiJson.teacherDetail2
-      } else if (type == "teacherDetail") {
-        if (this.ttaskDetailLoading5.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-
-        this.aitype = "teacherDetail"
-        // this.aiText = `请根据${callback}\n重新设计该教案。其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
-        this.aiText = this.aiJson.teacherDetail
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "teacherDetail2") {
-        if (this.ttaskDetailLoading5.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        if(!this.unitJson[0].chapterInfo[0].taskJson[index].task){
-          this.$message.error('请输入任务名称')
-          return;
-        }
-
-        this.aitype = "teacherDetail2"
-        // this.aiText = `请根据${callback}\n重新设计该教案。其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
-        this.aiText = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "aiCpote1") {
-        if (this.cpotetLoading.cpote1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote1"
-        this.aiText = this.aiJson.cpote1
-        this.aiCallBack = callback
-      } else if (type == "aiCpote2") {
-        if (this.cpotetLoading.cpote2) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote2"
-        this.aiText = this.aiJson.cpote2
-        this.aiCallBack = callback
-      } else if (type == "aiCpote3") {
-        if (this.cpotetLoading.cpote3) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote3"
-        this.aiText = this.aiJson.cpote3
-        this.aiCallBack = callback
-      } else if (type == "aiCpote4") {
-        if (this.cpotetLoading.cpote4) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote4"
-        this.aiText = this.aiJson.cpote4
-        this.aiCallBack = callback
-      } else if (type == 'aiteacherTextDetail'){
-        if (this.tteacherTextLoading) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = type
-        this.aiText = this.aiJson.aiAbstract
-        this.aiCallback = callback
-      } else if (type == 'aitargetTextDetail'){
-        if (this.ttargetTextLoading) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = type
-        this.aiText = this.aiJson.aiTarget
-        this.aiCallback = callback
-      } else if (type == 'aitargetTextDetail2'){
-        if (this.ttargetTextLoading2) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = type
-        this.aiText = this.aiJson.aiTarget2
-        this.aiCallback = callback
-      } else if (type == 'aiSearchFile'){
-        if(this.fileSLoading) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-
-        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: "仅生成该任务",
-          distinguishCancelAndClose: true,
-          type: "warning",
-        })
-          .then(() => {
-            this.aitype = type
-            this.aiText = this.aiJson.aiRateRule
-            this.aiCallback = [1,callback]
-            this.dialogVisibleAiD = true
-        }).catch(() => {
-          console.log(v);
-          if (v == "cancel") {
-            this.aitype = type
-            this.aiText = this.aiJson.aiRateRule
-            this.aiCallback = [2,callback]
-            this.dialogVisibleAiD = true
-          }
-        })
-      }
-
-      if(type != 'aiRateRuleA'){
-        this.dialogVisibleAiD = true
-      }
-    },
-    async aiConfirm(msg,msg2) {
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      if (this.aitype == "aiDetail") {
-        this.detailYou(msg)
-      } else if (this.aitype == "aiOutline") {
-        this.loading = true
-// ${this.getListClassC(this.checkboxList2) ?  '班级:' + this.getListClassC(this.checkboxList2) : "无"}
-// ${this.infoData.length ? '使用文件检索的方式完整的去分析文件内容,并请完全按照要求输出。' : ''}
-let txt = (!this.yiKeTemplateArray.includes(this.templateid)) ? '任务设计、评价标准和教学目标(markdown格式)' : '任务设计和评价标准'
-let courseText = this.courseText ? this.courseText : this.teacherCourseText
-let target = this.targetCourseText2 ? this.targetCourseText2 : this.targetcoursetext
-// ${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-// ${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.courseName}
-${courseText ? '课程简要描述:' + courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-detail输出不要输出成json,文本或者markdown都可以
-
-# Format example
-[{"task": "任务名称","detail": "${txt}"},{"task": "任务名称","detail": "${txt}"},{"task": "任务名称","detail": "${txt}"},{"task": "任务名称","detail": "${txt}"}]`
-
-        this.aiGet2(message, () => {
-          this.loading = false
-          this.isOutline = true
-        })
-      } else if (this.aitype == "aiOutline2") {
-        this.loading = true
-        let target = this.targetCourseText2 ? this.targetCourseText2 : this.targetcoursetext
-//         ${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-// ${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.courseName}
-${this.courseText ? '课程简要描述:' + this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-# Format example
-[{"task": "任务1的名字"}, {"task": "任务2的名字"}, {"task": "任务2的名字"}, {"task": "任务n的名字"}]`
-
-        this.aiGetTask2(message, () => {
-          this.loading = false
-          this.isOutline = true
-        })
-      } else if (this.aitype == "aiOutlineDetail2") {
-        this.aiOutlineDetail2(this.aiJson.aiOutlineDetail2, this.aiCallBack)
-      } else if (this.aitype == "aiTask") {
-        var _text = ""
-        for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-          _text += `任务名称:${this.unitJson[0].chapterInfo[0].taskJson[i].task} 任务描述:${this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-        }
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数组的数据。
-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.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? '#目标层\n'+this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')+'\n\n#任务簇\n'+this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-## 参考资料
-教学任务教案:${_text}
-
-## 格式要求
-任务数量:${this.unitJson[0].chapterInfo[0].taskJson.length}个
-任务描述:用老师的身份以友好,但是又清晰明确的口吻来撰写该描述,该描述教师给与学生的指示(用于指导学生如何进行每个教学活动),对应到学生活动,输出内容至少200tokens
-评价标准:至少3条评价标准,这个评价是教师用来评价学生表现的,需要包含评价维度,以及该维度中教师期待学生的表现,句式为学生应该能....
-工具名:从工具列表中选择0~2个工具用于学生阶段性成果提交:工具列表:电子白板,文档,思维导图,表格,作业提交,问答,选择题,只在这几个工具里选
-工具描述:用同学的方式以友好亲切,明确的口吻告诉学生该如何使用该工具
-出现选择题和问答题的概率提高
-生成${this.unitJson[0].chapterInfo[0].taskJson.length}个任务
-# Format example
-[{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]},{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[]},{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[{"tool":"工具名","detail":"工具描述"}]}]`
-        this.loading = true
-        this.aiGet3(message, this.aiCallBack)
-      } else if (this.aitype == "aiTask2") {
-        if(this.aiCallBack == 'all'){
-          for(var _task = 0; _task < this.unitJson[0].chapterInfo[0].taskJson.length; _task++){
-            var _text = `任务名称:${this.unitJson[0].chapterInfo[0].taskJson[_task].task} 任务描述:${this.unitJson[0].chapterInfo[0].taskJson[_task].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数组的数据。
-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.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? '#目标层\n'+this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')+'\n\n#任务簇\n'+this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-## 参考资料
-教学任务教案:${_text}
-
-## 格式要求
-任务描述:用老师的身份以友好,但是又清晰明确的口吻来撰写该描述,该描述教师给与学生的指示(用于指导学生如何进行每个教学活动),对应到学生活动,输出内容至少200tokens
-评价标准:至少3条评价标准,这个评价是教师用来评价学生表现的,需要包含评价维度,以及该维度中教师期待学生的表现,句式为学生应该能....
-工具名:从工具列表中选择0~2个工具用于学生阶段性成果提交:工具列表:电子白板,文档,思维导图,表格,作业提交,问答,选择题,只在这几个工具里选
-工具描述:用同学的方式以友好亲切,明确的口吻告诉学生该如何使用该工具
-出现选择题和问答题的概率提高,然后根据<教学任务教案>判断是否需要选择题或者问答题
-# Format example
-{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]}`
-        this.taskLoading[_task] = true
-        this.aiGet32(message, _task)
-          }
-        }else{
-          var _text = `任务名称:${this.unitJson[0].chapterInfo[0].taskJson[this.aiCallBack].task} 任务描述:${this.unitJson[0].chapterInfo[0].taskJson[this.aiCallBack].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数组的数据。
-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.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? '#目标层\n'+this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')+'\n\n#任务簇\n'+this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-## 参考资料
-教学任务教案:${_text}
-
-## 格式要求
-任务描述:用老师的身份以友好,但是又清晰明确的口吻来撰写该描述,该描述教师给与学生的指示(用于指导学生如何进行每个教学活动),对应到学生活动,输出内容至少200tokens
-评价标准:至少3条评价标准,这个评价是教师用来评价学生表现的,需要包含评价维度,以及该维度中教师期待学生的表现,句式为学生应该能....
-工具名:从工具列表中选择0~2个工具用于学生阶段性成果提交:工具列表:电子白板,文档,思维导图,表格,作业提交,问答,选择题,只在这几个工具里选
-工具描述:用同学的方式以友好亲切,明确的口吻告诉学生该如何使用该工具
-出现选择题和问答题的概率提高,然后根据<教学任务教案>判断是否需要选择题或者问答题
-# Format example
-{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]}`
-        this.taskLoading[this.aiCallBack] = true
-        this.aiGet32(message, this.aiCallBack)
-        }
-      } else if (this.aitype == "aiDetail1") {
-        this.aiDetail(msg, this.aiIndex)
-      } else if (this.aitype == "aiDetail2") {
-        this.aiDetail2(msg, this.aiIndex)
-      } else if (this.aitype == "aiDetail3") {
-        let _index = this.aiIndex.split('-')
-        this.aiDetail3(msg, _index[0], _index[1])
-      } else if (this.aitype == "aiDetail4") {
-        this.aiDetail4(msg, this.aiIndex)
-      } else if (this.aitype == "teacherDetail") {
-        this.aiDetail5(msg, this.aiIndex)
-      } else if (this.aitype == "teacherDetail2") {
-        this.aiDetail52(msg, this.aiIndex)
-      } else if (this.aitype == "aiCpote1") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiCpote2") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiCpote3") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiCpote4") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiTeacher") {
-        this.loading = true
-        var _text = ""
-        for (var i = 0; i < this.dArray.length; i++) {
-          _text += `任务名称:${this.dArray[i].task} 任务描述:${this.dArray[i].detail} \n`
-        }//${this.infoData.length ? '使用文件检索的方式完整的去分析文件内容,并请完全按照要求输出。' : ''}
-        let target = this.targetCourseText2 ? this.targetCourseText2 : this.targetcoursetext
-        let message = ` NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" && this.templateid != "cf5722a4-401b-11ef-b873-005056b86dc3") ? '##任务大纲' : '##目标层,##任务簇'}
-
-${(this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" && this.templateid != "cf5722a4-401b-11ef-b873-005056b86dc3") ? '## 任务大纲\n'+_text : ''}
-
-${(this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? '## 目标层\n'+this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')+'\n\n## 任务簇\n'+this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-${(this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5") ? '## 参考上下文\n'+'课程目标:'+target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-## Format example
-[{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"},{"task": "任务名称","detail": "教案输出为文本或markdown格式就行"}]`
-        this.aiGet4(message, () => {
-          this.loading = false
-          this.isOutline2 = true
-        })
-      } else if (this.aitype == "aiTeacher2"){
-        this.isOutline2 = true
-        setTimeout(()=>{
-          for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-            this.aiDetail52(msg, i)
-          }
-        }, 0)
-      } else if (this.aitype == "aiTeacher3"){
-        this.loading = true
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.cpote.cpote4}
-
-# Format example
-[{"task": "任务1的名字"}, {"task": "任务2的名字"}, {"task": "任务2的名字"}, {"task": "任务n的名字"}]`
-
-        this.aiGetTask3(message, () => {
-          this.loading = false
-          this.isOutline2 = true
-        })
-      }  else if (this.aitype == "aiteacherTextDetail") {
-        this.aiteacherTextDetail(msg)
-      } else if (this.aitype == "aitargetTextDetail") {
-        this.aitargetTextDetail(msg)
-      } else if (this.aitype == "aitargetTextDetail2") {
-        this.aitargetTextDetail2(msg)
-      } else if (this.aitype == 'aiSearchFile'){
-        let messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.
-
-## 参考资料
-关键词:${this.courseName}
-
-# Context
-## 要求
-${msg}。相关信息内容至少要有300tokens,可以是markdown格式 
-
-# Format example
-[{content:'相关信息内容'},{content:'相关信息内容'},{content:'相关信息内容'}]`
-        this.fileSLoading = true
-        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'){
-        if(this.aiCallBack[0] == 1){
-          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)
-              }
-            }
-          }
-        }else if(this.aiCallBack[0] == 2){
-          let task = this.unitJson[0].chapterInfo[0].taskJson[this.aiCallBack[1]]
-          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)
-    },
-    detailYou(message) {
-      this.textLoading = true
-      this.ttextLoading = true
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-// ${this.getListClassC(this.checkboxList2) ?  '班级:' + this.getListClassC(this.checkboxList2) : "无"}
-// --------
-// ## 补充参考资料
-// 补充资料:${url.join(",")}
-// 补充描述:${this.courseText2} ##补充参考资料和
-      let target = this.targetCourseText2 ? this.targetCourseText2 : this.targetcoursetext
-//       ${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-// ${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-      let msg = `NOTICE
-Role: 你是创建课程的老师,内容以markdown形式出现(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)
-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
-## 参考资料
-课程名字:${this.courseName}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${(this.mode == 1 && (!this.yiKeTemplateArray.includes(this.templateid)) && this.teacherCourseText) ? '提取教案摘要:'+this.teacherCourseText : ''}
-${(this.mode == 1 && (!this.yiKeTemplateArray.includes(this.templateid)) && target) ? '提取教案目标:'+target : ''}
-${this.courseText && this.aiCallback == 2 ? '参考内容:'+this.courseText : ''}
-
-## 要求
-${message} 以及##参考资料 ${(!this.yiKeTemplateArray.includes(this.templateid)) ? "" : '以文本格式输出项目概况,驱动性问题,最终作品'}
-
-${(this.templateid != 'cf5722a4-401b-11ef-b873-005056b86dc4') && '## Format example 课程简要描述:课程内容的简单叙述。 驱动性问题:1个驱动整个项目的问题。 最终作品:对应解决驱动性问题的作品,可个人可团队。'}
-
-${this.courseText && this.aiCallback == 2 ? '注意,优化原有的<参考内容>即可不用重新生成,让内容更具体化,更具体' : ''}
-
-如果在上传的文件中没有找到相关的课程简要描述、驱动性问题和最终作品的信息,请用自身的理解输出`
-      this.aiGet(msg)
-    },
-    setUnitJson() {
-      this.unitJson[0].chapterInfo[0].taskJson[0] = { "task": "观察热在水中的传递", "taskDetail": "同学们,今天我们将通过一个有趣的实验来探究热是如何在水中传递的。你将需要加热水并观察温度是如何分布的。请准备好实验器材,并按照安全指南进行操作。在实验过程中,请注意观察热水和冷水之间的相互作用,以及水温是如何随时间和空间变化的。你将需要记录你的观察结果,并思考热是如何从一个地方传递到另一个地方的。", "chapterData": [], "toolText": "", "toolChoose": [{ "tool": [1], "toolDetail": "使用电子白板工具来绘制你的实验设置和观察到的热传递过程。你可以使用电子白板的绘图功能来创建一个温度分布图,展示热水和冷水相遇时的情况。同时,你可以用它来记录实验步骤和关键观察点,以便于你和同学们进行讨论和分享。", "toolType": 1, "askCount": 1, "askTitle": "", "askJson": [{ "askstitle": "", "askItem": 1, "checkList": [] }], "isFold3": false }], "isShowTools": false, "askCount": 1, "isFold": 0, "askTitle": "", "askJson": [{ "askstitle": "", "askItem": 1, "checkList": [] }], "checkJson": [{ "checkCount": [], "checkPerent": [] }], "homeworkList": [], "toolOpen": true, "eList": [{ "value": "实验观察和记录", "detail": "学生应该能够准确地记录实验过程中的观察结果,包括水温变化和热传递的现象。", "score": 5 }, { "value": "数据分析和解释", "detail": "学生应该能够分析实验数据,解释热在水中的传递方式,并能够用自己的话描述热对流的原理。", "score": 5 }, { "value": "实验报告撰写", "detail": "学生应该能够撰写一份清晰的实验报告,包括实验目的、方法、结果和结论,以及对实验过程的反思。", "score": 5 }] }
-      this.$forceUpdate()
-    },
-    async aiGet(messages) {
-      let _this = this
-      let fileid = []
-      
-      if(!this.yiKeTemplateArray.includes(this.templateid)){
-        for (var i = 0; i < _this.cankaoInfoData.length; i++) {
-            if(_this.cankaoInfoData[i].fileid){
-              fileid.push(_this.cankaoInfoData[i].fileid)
-            }else {
-              let _fileid = await _this.createFileid(_this.cankaoInfoData[i].url)
-              if(_fileid){
-                _this.cankaoInfoData[i].fileid = _fileid
-                _this.$forceUpdate();
-                fileid.push(_fileid)
-              }
-            }
-          }
-        if(this.mode == 1){
-          for (var i = 0; i < _this.infoData.length; i++) {
-            if(_this.infoData[i].fileid){
-              fileid.push(_this.infoData[i].fileid)
-            }else {
-              let _fileid = await _this.createFileid(_this.infoData[i].url)
-              if(_fileid){
-                _this.infoData[i].fileid = _fileid
-                _this.$forceUpdate();
-                fileid.push(_fileid)
-              }
-            }
-          }
-        }
-      } else {
-        fileid = _this.isFileSearch ? [..._this.fileIds] : []
-        if (_this.infoData.length) {
-          for (var i = 0; i < _this.infoData.length; i++) {
-            if(_this.infoData[i].fileid){
-              fileid.push(_this.infoData[i].fileid)
-            }else {
-              let _fileid = await _this.createFileid(_this.infoData[i].url)
-              if(_fileid){
-                _this.infoData[i].fileid = _fileid
-                _this.$forceUpdate();
-                fileid.push(_fileid)
-              }
-            }
-          }
-        }
-      }
-      
-
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   _this.courseText = data.choices[0].message.content
-        // }
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-      }).catch(function (error) {
-        _this.textLoading = false
-        _this.ttextLoading = false
-        console.log(error);
-      });
-      await _this.aiGetgetAiContent(_uuid)
-    },
-    aiGetgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.courseText = _mdText;
-          this.textLoading = false
-          this.ttextLoading = false
-          this.courseTextB = false
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.courseText = _mdText;
-            _iindex = 0
-          }
-          this.textLoading = false
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiGet2(messages, callback) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-      console.log('fileid=========',fileid)
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      //   // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.dArray = dArray
-      //     _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //     for (var i = 0; i < dArray.length; i++) {
-      //       let _task = dArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //         task: _task.task,
-      //         taskDetail: "",
-      //         taskDetail2: _task.detail,
-      //         taskDetail3: "",
-      //         chapterData: [],
-      //         toolText: "",
-      //         toolChoose: [
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         ],
-      //         isShowTools: false,
-      //         askCount: 1,
-      //         isFold: 0,
-      //         askTitle: "",
-      //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //         checkJson: [{ checkCount: [], checkPerent: [] }],
-      //         homeworkList: [],
-      //       })
-      //     }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //           _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.dArray = dArray
-      //   //   _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //   //       task: _task.task,
-      //   //       taskDetail: "",
-      //   //       taskDetail2: _task.detail,
-      //   //       taskDetail3: "",
-      //   //       chapterData: [],
-      //   //       toolText: "",
-      //   //       toolChoose: [
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       ],
-      //   //       isShowTools: false,
-      //   //       askCount: 1,
-      //   //       isFold: 1,
-      //   //       askTitle: "",
-      //   //       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //       checkJson: [{ checkCount: [], checkPerent: [] }],
-      //   //       homeworkList: [],
-      //   //     })
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(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]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // dArray = JSON.parse(jsonString);
-              } catch (error) {
-                try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    // eval("var aaa = " + match[0])
-                    dArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                } catch (error) {
-                  console.log("error_________________" + error);
-                }
-                console.log("error_________________" + error);
-              }
-            }
-            _this.dArray = dArray
-            console.log(dArray)
-            if(_this.panOutline() > 0){
-              for(var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-                _this.unitJson[0].chapterInfo[0].taskJson[i].task = ""
-                _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = ""
-              }
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].task = _task.task
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = _task.detail
-                }else {
-                  _this.unitJson[0].chapterInfo[0].taskJson.push({
-                    task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                    taskDetail: "",
-                    taskDetail2: _task.detail,
-                    taskDetail3: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 0,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  })
-                }
-
-              }
-            }else { 
-              _this.unitJson[0].chapterInfo[0].taskJson = []
-
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                  taskDetail: "",
-                  taskDetail2: _task.detail,
-                  taskDetail3: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 0,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                })
-              }
-            }
-
-
-
-            _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-          }
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiGetTask2(messages, callback) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-      console.log('fileid=========',fileid)
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      //   // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.dArray = dArray
-      //     _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //     for (var i = 0; i < dArray.length; i++) {
-      //       let _task = dArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //         task: _task.task,
-      //         taskDetail: "",
-      //         taskDetail2: _task.detail,
-      //         taskDetail3: "",
-      //         chapterData: [],
-      //         toolText: "",
-      //         toolChoose: [
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         ],
-      //         isShowTools: false,
-      //         askCount: 1,
-      //         isFold: 0,
-      //         askTitle: "",
-      //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //         checkJson: [{ checkCount: [], checkPerent: [] }],
-      //         homeworkList: [],
-      //       })
-      //     }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //           _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.dArray = dArray
-      //   //   _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //   //       task: _task.task,
-      //   //       taskDetail: "",
-      //   //       taskDetail2: _task.detail,
-      //   //       taskDetail3: "",
-      //   //       chapterData: [],
-      //   //       toolText: "",
-      //   //       toolChoose: [
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       ],
-      //   //       isShowTools: false,
-      //   //       askCount: 1,
-      //   //       isFold: 1,
-      //   //       askTitle: "",
-      //   //       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //       checkJson: [{ checkCount: [], checkPerent: [] }],
-      //   //       homeworkList: [],
-      //   //     })
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(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]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // dArray = JSON.parse(jsonString);
-              } catch (error) {
-                try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    // eval("var aaa = " + match[0])
-                    dArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                } catch (error) {
-                  console.log("error_________________" + error);
-                }
-                console.log("error_________________" + error);
-              }
-            }
-            _this.dArray = dArray
-
-            if(_this.panOutline() > 0){
-              for(var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-                _this.unitJson[0].chapterInfo[0].taskJson[i].task = ""
-                _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = ""
-              }
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].task = _task.task
-                  // _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = _task.detail
-                }else {
-                  _this.unitJson[0].chapterInfo[0].taskJson.push({
-                    task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                    taskDetail: "",
-                    taskDetail2: "",
-                    taskDetail3: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 0,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  })
-                }
-
-              }
-            }else { 
-              _this.unitJson[0].chapterInfo[0].taskJson = []
-
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                  taskDetail: "",
-                  taskDetail2: "",
-                  taskDetail3: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 0,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                })
-              }
-            }
-
-
-
-            _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-
-
-            setTimeout(()=>{
-              for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-                this.aiOutlineDetail('', i)
-              }
-            }, 0)
-          }
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiGetTask3(messages, callback) {
-      let _this = this
-
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      //   // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.dArray = dArray
-      //     _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //     for (var i = 0; i < dArray.length; i++) {
-      //       let _task = dArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //         task: _task.task,
-      //         taskDetail: "",
-      //         taskDetail2: _task.detail,
-      //         taskDetail3: "",
-      //         chapterData: [],
-      //         toolText: "",
-      //         toolChoose: [
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         ],
-      //         isShowTools: false,
-      //         askCount: 1,
-      //         isFold: 0,
-      //         askTitle: "",
-      //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //         checkJson: [{ checkCount: [], checkPerent: [] }],
-      //         homeworkList: [],
-      //       })
-      //     }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //           _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.dArray = dArray
-      //   //   _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //   //       task: _task.task,
-      //   //       taskDetail: "",
-      //   //       taskDetail2: _task.detail,
-      //   //       taskDetail3: "",
-      //   //       chapterData: [],
-      //   //       toolText: "",
-      //   //       toolChoose: [
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       ],
-      //   //       isShowTools: false,
-      //   //       askCount: 1,
-      //   //       isFold: 1,
-      //   //       askTitle: "",
-      //   //       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //       checkJson: [{ checkCount: [], checkPerent: [] }],
-      //   //       homeworkList: [],
-      //   //     })
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(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]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // dArray = JSON.parse(jsonString);
-              } catch (error) {
-                try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    // eval("var aaa = " + match[0])
-                    dArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                } catch (error) {
-                  console.log("error_________________" + error);
-                }
-                console.log("error_________________" + error);
-              }
-            }
-            _this.dArray = dArray
-
-            if(_this.panOutline() > 0){
-              for(var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-                _this.unitJson[0].chapterInfo[0].taskJson[i].task = ""
-                _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = ""
-              }
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].task = _task.task
-                  // _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2 = _task.detail
-                }else {
-                  _this.unitJson[0].chapterInfo[0].taskJson.push({
-                    task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                    taskDetail: "",
-                    taskDetail2: "",
-                    taskDetail3: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 0,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  })
-                }
-
-              }
-            }else { 
-              _this.unitJson[0].chapterInfo[0].taskJson = []
-
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                  taskDetail: "",
-                  taskDetail2: "",
-                  taskDetail3: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 0,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                })
-              }
-            }
-
-
-
-            _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-
-
-            setTimeout(()=>{
-              for (var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-                this.aiDetail52(_this.aiJson['teacherDetail2'], i)
-              }
-            }, 0)
-          }
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiGet3(messages, callback) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      // // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let tArray = JSON.parse(data.choices[0].message.content)
-      //     // _this.unitJson[0].chapterInfo[0].task = []
-
-      //     let toolsJson = {
-      //       "电子白板": { tool: 1, type: 1 },
-      //       "文档": { tool: 52, type: 1 },
-      //       "思维导图": { tool: 3, type: 1 },
-      //       "表格": { tool: 48, type: 1 },
-      //       "作业提交": { tool: 16, type: 2 }
-      //     }
-      //     for (var i = 0; i < tArray.length; i++) {
-      //       let _task = tArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-      //       if (_task.toolChoose.length) {
-      //         for (var j = 0; j < _task.toolChoose.length; j++) {
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //             {
-      //               tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [],
-      //               toolDetail: _task.toolChoose[j].detail,
-      //               toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 0,
-      //               askCount: 1,
-      //               askTitle: "",
-      //               askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             },
-      //           )
-      //         }
-      //       } else {
-      //         _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         )
-      //       }
-      //     }
-      //     // if (_this.infoData.length) {
-      //     //   _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-      //     // }
-      //     _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let tArray = JSON.parse(data.result)
-      //   //   // _this.unitJson[0].chapterInfo[0].task = []
-
-      //   //   let toolsJson = {
-      //   //     "电子白板": { tool: 1, type: 1 },
-      //   //     "文档": { tool: 52, type: 1 },
-      //   //     "思维导图": { tool: 3, type: 1 },
-      //   //     "表格": { tool: 48, type: 1 },
-      //   //     "作业提交": { tool: 16, type: 2 }
-      //   //   }
-      //   //   for (var i = 0; i < tArray.length; i++) {
-      //   //     let _task = tArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-      //   //     if (_task.toolChoose.length) {
-      //   //       for (var j = 0; j < _task.toolChoose.length; j++) {
-      //   //         _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //   //           {
-      //   //             tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [],
-      //   //             toolDetail: _task.toolChoose[j].detail,
-      //   //             toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 0,
-      //   //             askCount: 1,
-      //   //             askTitle: "",
-      //   //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //           },
-      //   //         )
-      //   //       }
-      //   //     } else {
-      //   //       _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       )
-      //   //     }
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then(async (response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            let tArray = {}
-            try {
-              tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-            } catch (error) {
-                console.log("error_________________" + error);
-              try {
-                  let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  tArray = JSON.parse(match[0]);
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // tArray = JSON.parse(jsonString);
-              } catch (error) {
-                try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    // eval("var aaa = " + match[0])
-                    tArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                } catch (error) {
-                  console.log("error_________________" + error);
-                }
-                console.log("error_________________" + error);
-              }
-            }
-
-            let toolsJson = {
-              "电子白板": { tool: 1, type: 1 },
-              "文档": { tool: 52, type: 1 },
-              "思维导图": { tool: 3, type: 1 },
-              "表格": { tool: 48, type: 1 },
-              "作业提交": { tool: 16, type: 2 },
-              "问答": { tool: 15, type: 2 },
-              "选择题": { tool: 45, type: 2 },
-            }
-            // answerQ:"sssssssssssssss"
-
-            for (var i = 0; i < tArray.length; i++) {
-              let _task = tArray[i]
-              _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-              _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-              _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-              if (_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: [] }],
-                    }
-                  
-                  if(converter(_task.toolChoose[j].tool) == converter('问答')){
-                    let answerQ = await _this.aiCreateQuestion(15, i)
-                    _json.answerQ = answerQ.answerQ 
-                  }else if(converter(_task.toolChoose[j].tool) == converter('选择题')){
-                    let testJson = await _this.aiCreateQuestion(45, i)
-                    _json.testJson = {"testCount":testJson.length,"testTitle":"","testJson":testJson} 
-                  }
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(_json)
-                }
-              } else {
-                _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-                  {
-                    tool: [],
-                    toolDetail: "",
-                    toolType: 0,
-                    askCount: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  },
-                )
-              }
-            }
-
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-            _this.createTeacherAn();
-          }
-          
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiGet32(messages, index) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      // // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let tArray = JSON.parse(data.choices[0].message.content)
-      //     // _this.unitJson[0].chapterInfo[0].task = []
-
-      //     let toolsJson = {
-      //       "电子白板": { tool: 1, type: 1 },
-      //       "文档": { tool: 52, type: 1 },
-      //       "思维导图": { tool: 3, type: 1 },
-      //       "表格": { tool: 48, type: 1 },
-      //       "作业提交": { tool: 16, type: 2 }
-      //     }
-      //     for (var i = 0; i < tArray.length; i++) {
-      //       let _task = tArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-      //       if (_task.toolChoose.length) {
-      //         for (var j = 0; j < _task.toolChoose.length; j++) {
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //             {
-      //               tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [],
-      //               toolDetail: _task.toolChoose[j].detail,
-      //               toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 0,
-      //               askCount: 1,
-      //               askTitle: "",
-      //               askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             },
-      //           )
-      //         }
-      //       } else {
-      //         _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         )
-      //       }
-      //     }
-      //     // if (_this.infoData.length) {
-      //     //   _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-      //     // }
-      //     _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let tArray = JSON.parse(data.result)
-      //   //   // _this.unitJson[0].chapterInfo[0].task = []
-
-      //   //   let toolsJson = {
-      //   //     "电子白板": { tool: 1, type: 1 },
-      //   //     "文档": { tool: 52, type: 1 },
-      //   //     "思维导图": { tool: 3, type: 1 },
-      //   //     "表格": { tool: 48, type: 1 },
-      //   //     "作业提交": { tool: 16, type: 2 }
-      //   //   }
-      //   //   for (var i = 0; i < tArray.length; i++) {
-      //   //     let _task = tArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-      //   //     if (_task.toolChoose.length) {
-      //   //       for (var j = 0; j < _task.toolChoose.length; j++) {
-      //   //         _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //   //           {
-      //   //             tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [],
-      //   //             toolDetail: _task.toolChoose[j].detail,
-      //   //             toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 0,
-      //   //             askCount: 1,
-      //   //             askTitle: "",
-      //   //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //           },
-      //   //         )
-      //   //       }
-      //   //     } else {
-      //   //       _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       )
-      //   //     }
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then(async (response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            let tArray = {}
-            try {
-              tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-            } catch (error) {
-                console.log("error_________________" + error);
-              try {
-                  let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  tArray = JSON.parse(match[0]);
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // tArray = JSON.parse(jsonString);
-              } catch (error) {
-                try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    // eval("var aaa = " + match[0])
-                    tArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                } catch (error) {
-                  console.log("error_________________" + error);
-                }
-                console.log("error_________________" + error);
-              }
-            }
-
-            let toolsJson = {
-              "电子白板": { tool: 1, type: 1 },
-              "文档": { tool: 52, type: 1 },
-              "思维导图": { tool: 3, type: 1 },
-              "表格": { tool: 48, type: 1 },
-              "作业提交": { tool: 16, type: 2 },
-              "问答": { tool: 15, type: 2 },
-              "选择题": { tool: 45, type: 2 },
-            }
-            // answerQ:"sssssssssssssss"
-
-            // for (var i = 0; i < tArray.length; i++) {
-              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].chapterData = []
-              if(!_task.toolChoose || (_task.detail && _task.detail.length < 20) || !_task.detail){
-                console.log("error_________________JSON不对重新生成");
-                _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
-                _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: [],
-                    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 
-                    _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} 
-                    _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[_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(
-                  {
-                    tool: [],
-                    toolDetail: "",
-                    toolType: 0,
-                    askCount: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  },
-                )
-              }
-            // }
-
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-            _this.createTeacherAn(index);
-          }
-          
-          // callback ? callback() : ''
-          _this.taskLoading[index] = false
-        })
-        .catch((error) => {
-          // _this.loading = false
-          _this.taskLoading[index] = false
-          console.log(error);
-        });
-    },
-    async aiCreateQuestion(type, task) {
-      let _this = this
-      return new Promise((resolve, reject) => {
-        let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-        if (_this.infoData.length) {
-          for (var i = 0; i < _this.infoData.length; i++) {
-            if(_this.infoData[i].fileid){
-              fileid.push(_this.infoData[i].fileid)
-            }
-          }
-        }
-
-        let sub = []
-        let mclass = []
-        if (this.courseTypeId.length) {
-          for (var i = 0; i < this.courseTypeId.length; i++) {
-            let _sid = this.courseTypeId[i]
-            for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-              if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-                mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-              }
-              if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-                sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-              }
-            }
-          }
-        }
-        let messages = ""
-        if(type == 15){
-          messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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
-## 任务
-根据本任务的#教案,在考虑到面向学生年级(<面向年级>)以及相对应的学科(<课程学科>)的基础上生成1道问答题。题目的意义是测试学生对本教学任务知识点的掌握情况,你的题目应当是有意义的。然后根据Format example的要求返回要以json的格式
-
-## 限制
-- 生成题目应该充分考虑学生年级<面向年级>和面向学科<课程学科>,你的题目应有教学意义。
-- 你仅仅需要输出题目,其他什么内容都不需要输出。禁止输出题目以外的任何内容。
-
-## 课程简介
-课程名字:${_this.courseName}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-## 教案
-${_this.unitJson[0].chapterInfo[0].taskJson[task].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}
-
-# Format example
-{answerQ:"问题"}
-`
-        }else if(type == 45){
-          messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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
-## 任务
-根据本任务的#教案,在考虑到面向学生年级(<面向年级>)以及相对应的学科(<课程学科>)的基础上生成5道单选题。题目的意义是测试学生对本教学任务知识点的掌握情况,你的题目应当是有意义的。
-
-## 限制
-- 生成题目禁止重复。
-- 生成题目应该充分考虑学生年级<面向年级>和面向学科<课程学科>,你的题目应有教学意义。
-- 请严格按照以下格式要求输出内容,题目必须是单选题。
-- 你仅仅需要输出题目,其他什么内容都不需要输出。禁止输出题目以外的任何内容。
-
-## 课程简介
-课程名字:${_this.courseName}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-## 教案
-${_this.unitJson[0].chapterInfo[0].taskJson[task].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}
-
-# Format example
-[{"teststitle":"题目内容","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"},{"teststitle":"题目内容","testItem":"选项数量(数字)","checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":"答案(数字)","type":"1"}]
-`
-        }
-
-        let parm = {
-          assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-          message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-          session_name: uuidv4(),
-          userId: this.userid,
-          file_ids: fileid.length ? [...fileid] : '',
-        }
-        this.ajax
-          .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-          .then((response) => {
-            console.log(response);
-            let data = response.data.FunctionResponse
-            if (data.message) {
-              console.log(data.message);
-              try {
-                // let tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-                let tArray = {}
-                try {
-                  tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-                } catch (error) {
-                    console.log("error_________________" + error);
-                  try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    tArray = JSON.parse(match[0]);
-
-                      // var message = data.message;
-                      // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                      // var jsonEnd = message.indexOf("```", jsonStart);
-                      // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                      // tArray = JSON.parse(jsonString);
-                  } catch (error) {
-                    try {
-                        let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                        let match = data.message.match(regex);
-                        // eval("var aaa = " + match[0])
-                        tArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                    } catch (error) {
-                      console.log("error_________________" + error);
-                    }
-                    console.log("error_________________" + error);
-                  }
-                }
-                resolve(tArray)
-              } catch (error) {
-                if(type == 15){
-                  resolve({answerQ: "题目"})
-                }else if(type == 45){
-                  resolve([{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}])
-                }
-              }
-
-            }else if(type == 15){
-              resolve({answerQ: "题目"})
-            }else if(type == 45){
-              resolve([{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}])
-            }
-          })
-          .catch((error) => {
-
-            if(type == 15){
-              resolve({answerQ: "题目"})
-            }else if(type == 45){
-              resolve([{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}])
-            }
-            console.log(error);
-          });
-        });
-    },
-    async aiChoice(type){
-      if(type == 45){
-        this.choiceLoading = true
-      }
-      let _this = this
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }
-        }
-      }
-
-      let sub = []
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let messages = ""
-      if(type == 15){
-        messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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
-## 任务
-根据本任务的#教案,在考虑到面向学生年级(<面向年级>)以及相对应的学科(<课程学科>)的基础上生成1道问答题。题目的意义是测试学生对本教学任务知识点的掌握情况,你的题目应当是有意义的。然后根据Format example的要求返回要以json的格式
-
-## 限制
-- 生成题目应该充分考虑学生年级<面向年级>和面向学科<课程学科>,你的题目应有教学意义。
-- 你仅仅需要输出题目,其他什么内容都不需要输出。禁止输出题目以外的任何内容。
-
-## 课程简介
-课程名字:${_this.courseName}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-## 教案
-${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}
-
-# Format example
-{answerQ:"问题"}
-`
-      }else if(type == 45){
-        messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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
-## 任务
-根据本任务的#教案,在考虑到面向学生年级(<面向年级>)以及相对应的学科(<课程学科>)的基础上生成5道单选题。题目的意义是测试学生对本教学任务知识点的掌握情况,你的题目应当是有意义的。
-
-## 限制
-- 生成题目禁止重复。
-- 生成题目应该充分考虑学生年级<面向年级>和面向学科<课程学科>,你的题目应有教学意义。
-- 请严格按照以下格式要求输出内容,题目必须是单选题。
-- 你仅仅需要输出题目,其他什么内容都不需要输出。禁止输出题目以外的任何内容。
-
-## 课程简介
-课程名字:${_this.courseName}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-## 教案
-${_this.unitJson[0].chapterInfo[0].taskJson[_this.taskCount].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}
-
-# Format example
-[{"teststitle":"题目内容","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"},{"teststitle":"题目内容","testItem":"选项数量(数字)","checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":"答案(数字)","type":"1"}]
-`
-      }
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            try {
-              // let tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-              let tArray = {}
-              try {
-                tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-              } catch (error) {
-                  console.log("error_________________" + error);
-                try {
-                  let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  tArray = JSON.parse(match[0]);
-
-                    // var message = data.message;
-                    // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                    // var jsonEnd = message.indexOf("```", jsonStart);
-                    // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                    // tArray = JSON.parse(jsonString);
-                } catch (error) {
-                  try {
-                      let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                      let match = data.message.match(regex);
-                      // eval("var aaa = " + match[0])
-                      tArray = JSON.parse(match[0].replace(/\n/g, '').replace(/\s{2,}/g, ' '));
-
-                  } catch (error) {
-                    console.log("error_________________" + error);
-                  }
-                  console.log("error_________________" + error);
-                }
-              }
-              if(type == 45){
-                this.testJson = {"testCount":tArray.length,"testTitle":"","testJson":tArray} 
-              }
-            } catch (error) {
-              if(type == 15){
-                {answerQ: "题目"}
-              }else if(type == 45){
-                let _test = [{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}]
-                this.testJson = {"testCount":_test.length,"testTitle":"","testJson":_test} 
-              }
-              _this.choiceLoading = false
-            }
-
-          }else if(type == 15){
-            {answerQ: "题目"}
-          }else if(type == 45){
-            let _test = [{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}]
-            this.testJson = {"testCount":_test.length,"testTitle":"","testJson":_test} 
-          }
-          _this.choiceLoading = false
-        }).catch((error) => {
-          if(type == 15){
-            {answerQ: "题目"}
-          }else if(type == 45){
-            let _test = [{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}]
-            this.testJson = {"testCount":_test.length,"testTitle":"","testJson":_test} 
-          }
-          console.log(error);
-          _this.choiceLoading = false
-        });
-    },
-    async aiGet4(messages, callback, clickType) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-      for (var i = 0; i < _this.cankaoInfoData.length; i++) {
-        if(_this.cankaoInfoData[i].fileid){
-          fileid.push(_this.cankaoInfoData[i].fileid)
-        }else {
-          let _fileid = await _this.createFileid(_this.cankaoInfoData[i].url)
-          if(_fileid){
-            _this.cankaoInfoData[i].fileid = _fileid
-            _this.$forceUpdate();
-            fileid.push(_fileid)
-          }
-        }
-      }
-
-
-
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      // // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.teacherText = JSON.parse(data.choices[0].message.content)
-      //     if (_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5") {
-      //       _this.unitJson[0].chapterInfo[0].taskJson = []
-      //       for (var i = 0; i < dArray.length; i++) {
-      //         let _task = dArray[i]
-      //         _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //           task: _task.task,
-      //           taskDetail: "",
-      //           taskDetail2: "",
-      //           taskDetail3: _task.detail,
-      //           chapterData: [],
-      //           toolText: "",
-      //           toolChoose: [
-      //             {
-      //               tool: [],
-      //               toolDetail: "",
-      //               toolType: 0,
-      //               askCount: 1,
-      //               askTitle: "",
-      //               askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             },
-      //           ],
-      //           isShowTools: false,
-      //           askCount: 1,
-      //           isFold: 0,
-      //           askTitle: "",
-      //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           checkJson: [{ checkCount: [], checkPerent: [] }],
-      //           homeworkList: [],
-      //         })
-      //       }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //       _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //       _this.$forceUpdate();
-      //     } else {
-      //       for (var i = 0; i < dArray.length; i++) {
-      //         let _task = dArray[i]
-      //         if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-      //         }else {
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i] = {
-      //             task: _task.task,
-      //             taskDetail: "",
-      //             taskDetail2: "",
-      //             taskDetail3: _task.detail,
-      //             chapterData: [],
-      //             toolText: "",
-      //             toolChoose: [
-      //               {
-      //                 tool: [],
-      //                 toolDetail: "",
-      //                 toolType: 0,
-      //                 askCount: 1,
-      //                 askTitle: "",
-      //                 askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //               },
-      //             ],
-      //             isShowTools: false,
-      //             askCount: 1,
-      //             isFold: 0,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             checkJson: [{ checkCount: [], checkPerent: [] }],
-      //             homeworkList: [],
-      //           }
-      //         }
-      //       }
-      //       _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //       _this.$forceUpdate();
-      //     }
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.teacherText =  JSON.parse(data.result)
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      //   _this.loading = false
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            // let dArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-            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]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // dArray = JSON.parse(jsonString);
-              } catch (error) {
-                _this.aiGet4(messages, callback)
-                _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
-                console.log("error_________________" + error);
-                return;
-                console.log("error_________________" + error);
-                _this.loading = false
-              }
-            }
-            try {
-              _this.teacherText = JSON.parse(JSON.stringify(dArray))
-              if (_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") {
-                if(_this.panTeacher() > 0){
-                  for(var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-                    _this.unitJson[0].chapterInfo[0].taskJson[i].task = ""
-                    _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = ""
-                  }
-                  for (var i = 0; i < dArray.length; i++) {
-                    let _task = dArray[i]
-                    if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-                      _this.unitJson[0].chapterInfo[0].taskJson[i].task = _task.task
-                      _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-                    }else {
-                      _this.unitJson[0].chapterInfo[0].taskJson.push({
-                        task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                        taskDetail: "",
-                        taskDetail2: "",
-                        taskDetail3: _task.detail,
-                        chapterData: [],
-                        toolText: "",
-                        toolChoose: [
-                          {
-                            tool: [],
-                            toolDetail: "",
-                            toolType: 0,
-                            askCount: 1,
-                            askTitle: "",
-                            askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                          },
-                        ],
-                        isShowTools: false,
-                        askCount: 1,
-                        isFold: 0,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                        checkJson: [{ checkCount: [], checkPerent: [] }],
-                        homeworkList: [],
-                      })
-                    }
-
-                  }
-                }else { 
-                  _this.unitJson[0].chapterInfo[0].taskJson = []
-                  for (var i = 0; i < dArray.length; i++) {
-                    let _task = dArray[i]
-                    _this.unitJson[0].chapterInfo[0].taskJson.push({
-                      task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                      taskDetail: "",
-                      taskDetail2: "",
-                      taskDetail3: _task.detail,
-                      chapterData: [],
-                      toolText: "",
-                      toolChoose: [
-                        {
-                          tool: [],
-                          toolDetail: "",
-                          toolType: 0,
-                          askCount: 1,
-                          askTitle: "",
-                          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                        },
-                      ],
-                      isShowTools: false,
-                      askCount: 1,
-                      isFold: 0,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      checkJson: [{ checkCount: [], checkPerent: [] }],
-                      homeworkList: [],
-                    })
-                  }
-                }
-                _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-                _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-                _this.$forceUpdate();
-              } else {
-                for (var i = 0; i < dArray.length; i++) {
-                  let _task = dArray[i]
-                  if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-                    _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-                  }else {
-                    _this.unitJson[0].chapterInfo[0].taskJson[i] = {
-                      task: _task.task.replaceAll('任务'+(i+1),'').replaceAll(':','').replaceAll(':',''),
-                      taskDetail: "",
-                      taskDetail2: "",
-                      taskDetail3: _task.detail,
-                      chapterData: [],
-                      toolText: "",
-                      toolChoose: [
-                        {
-                          tool: [],
-                          toolDetail: "",
-                          toolType: 0,
-                          askCount: 1,
-                          askTitle: "",
-                          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                        },
-                      ],
-                      isShowTools: false,
-                      askCount: 1,
-                      isFold: 0,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      checkJson: [{ checkCount: [], checkPerent: [] }],
-                      homeworkList: [],
-                    }
-                  }
-                }
-                _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-                _this.$forceUpdate();
-              }
-            } catch (error) {
-              _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
-              _this.aiGet4(messages, callback)
-              console.log("error_________________" + error);
-              return;
-              // _this.loading = false
-            }
-            
-          }
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiDetail(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      let messages = `NOTICE
-Role: 你是创建课程的老师,内容不要以markdown形式出现,只需要口语化的形式(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)。
-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.aiCallBack.task}
-
-## 优化内容
-大纲描述:${_this.aiCallBack.taskDetail2}。 内容不要以markdown形式出现,只需要口语化的形式`
-
-// -------- #补充参考资料和
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${_this.courseText2}
-      _this.taskDetailLoading.push(_tindex)
-      _this.ttaskDetailLoading.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-        // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-      }).catch(function (error) {
-        _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetailgetAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetailgetAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
-          this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
-          this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据.
-          if(_iindex == 10){
-            this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
-            _iindex = 0
-          }
-          this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiOutlineDetail(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      let target = _this.targetCourseText2 ? _this.targetCourseText2 : _this.targetcoursetext
-      let messages = `NOTICE
-Role: 你是创建课程的老师,内容不要以markdown形式出现,只需要口语化的形式。
-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 ? msg : _this.aiJson.aiOutlineDetail}
-
-## 参考信息
-课程名字:${_this.courseName}
-任务名称:${_this.aiCallBack.task ? _this.aiCallBack.task : _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-# Format example
-教学目标:教学目标。
-任务设计:任务设计。
-评价标准:评价标准。 内容不要以markdown形式出现,只需要口语化的形式
-`
-
-// -------- #补充参考资料和
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${_this.courseText2}
-      _this.taskDetailLoading.push(_tindex)
-      _this.ttaskDetailLoading.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-          _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].isTask2 = false
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-        // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-      }).catch(function (error) {
-        _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiOutlineDetailgetAiContent(_uuid, _tindex, _tindex2)
-    },
-    async aiOutlineDetail2(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      let target = _this.targetCourseText2 ? _this.targetCourseText2 : _this.targetcoursetext
-      let taskArray = []
-      for (var k = 0; k < this.unitJson[0].chapterInfo[0].taskJson.length; k++) {
-          // _text += `任务名称:${this.unitJson[0].chapterInfo[0].taskJson[i].task}`
-          if(k != index){
-            taskArray.push(this.unitJson[0].chapterInfo[0].taskJson[k].task)
-          }
-        }
-      let messages = `NOTICE
-Role: 你是创建课程的老师,内容不要以markdown形式出现,只需要口语化的形式。
-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.courseName}
-任务名称:${_this.aiCallBack.task ? _this.aiCallBack.task : _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-${taskArray.length ? '其他任务大纲名字:' + taskArray.join(',') : ''}
-
-# Format example
-教学目标:教学目标。
-任务设计:任务设计。
-评价标准:评价标准。 内容不要以markdown形式出现,只需要口语化的形式
-`
-
-// -------- #补充参考资料和
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${_this.courseText2}
-      _this.taskDetailLoading.push(_tindex)
-      _this.ttaskDetailLoading.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-          _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].isTask2 = false
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-        // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-      }).catch(function (error) {
-        _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiOutlineDetailgetAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiOutlineDetailgetAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
-          if(!this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 && this.isOutline2){
-            this.aiDetail52(this.aiJson['teacherDetail2'], _tindex2)
-          }
-          this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
-          this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据.
-          if(_iindex == 10){
-            this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
-            _iindex = 0
-          }
-          if(this.taskDetailLoading.indexOf(loading) !== -1){
-            this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
-          }
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiDetail2(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-
-      let messages = `NOTICE
-Role: 你是一名老师,可以给与学生的指示,对应到学生活动,你应该用友好,但是又清晰明确的口吻来撰写,内容不要以markdown形式出现,只需要口语化的形式。
-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.aiCallBack.task}
-
-## 优化信息
-${_this.aiCallBack.taskDetail}
-
-# Format example
-任务描述:该描述是教师给与学生的指示(用于指导学生如何进行教学活动),对应到学生活动,你应该用友好,但是又清晰明确的口吻来撰写。`
-      _this.taskDetailLoading2.push(_tindex)
-      _this.ttaskDetailLoading2.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading2.splice(_this.taskDetailLoading2.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading2.splice(_this.ttaskDetailLoading2.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail2getAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetail2getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = _mdText;
-          this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
-          this.ttaskDetailLoading2.splice(this.ttaskDetailLoading2.indexOf(loading), 1)
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = _mdText;
-            _iindex = 0
-          }
-          this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiDetail3(msg, index, tindex) {
-      let _this = this
-      const _tindex = 'task-' + index + tindex
-      const _tindex2 = index
-      const _tindex3 = tindex
-    
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      // **重点考虑该任务及工具名和工具内容的情况下*
-      let messages = `NOTICE
-Role: 你是一名老师,可以给与学生的指示,对应到学生活动,你应该用友好,但是又清晰明确的口吻来撰写,内容不要以markdown形式出现,只需要口语化的形式。
-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
-## 参考内容
-任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-任务描述:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail}
-工具名称:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].tool[0] ? _this.toolsData[_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].tool[0]].name : '无'}
-工具内容:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail}
-
-## 要求
-${msg} 输出格式和内容要求参考#格式与要求
-
-# Format example
-工具指引:以友好,明确的口吻告诉学生该如何使用该工具,不要不要以markdown形式出现,只需要口语化的形式`
-      _this.taskDetailLoading3.push(_tindex)
-      _this.ttaskDetailLoading3.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading3.splice(_this.ttaskDetailLoading3.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail3getAiContent(_uuid, _tindex, _tindex2, _tindex3)
-    },
-    aiDetail3getAiContent(_uid, loading, _tindex2, _tindex3) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = _mdText;
-          this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
-          this.ttaskDetailLoading3.splice(this.ttaskDetailLoading3.indexOf(loading), 1)
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = _mdText;
-            _iindex = 0
-          }
-          this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiDetail4(msg, index) {
-      if (!msg.length) {
-        this.$message.error("请添加评价后才能优化")
-        return
-      }
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      var _text = ""
-      for (var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList.length; i++) {
-        _text += `评价维度:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList[i].value} 维度描述:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList[i].detail} `
-      }
-      // **重点考虑该任务详情**
-      let messages = `
-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".
-
-#Context
-## 参考内容
-任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-任务描述:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail}
-评价设计:${_text}
-
-## 要求
-${msg} 优化评价维度和维度描述,输出格式和内容要求参考# 格式与要求
-
-# 格式与要求
--评价标准:至少3条评价标准,这个评价是教师用来评价学生表现的,需要包含评价维度,以及该维度中教师期待学生的表现,句式为学生应该能....
-
-# Format example
-[{"value":"评价维度1","detail":"维度描述1","score":5},{"value":"评价维度2","detail":"维度描述2","score":5},{"value":"评价维度3","detail":"维度描述3","score":5}]`
-      _this.taskDetailLoading4.push(_tindex)
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: _this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages: [{
-      //           content: messages,
-      //           role: 'user'
-      //         }], // 
-      //     },
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-        console.log(response);
-        let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.choices[0].message.content)
-        //   _this.$forceUpdate()
-        // }
-        if (data.message) {
-          console.log(data.message);
-          try {
-            _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.message.replaceAll("```json", "").replaceAll("```", ""))
-          } catch (e) {
-              console.log("error_________________" + e);
-              // _this.$message.error(data.message)
-              try {
-                let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                let match = data.message.match(regex);
-                _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(match[0]);
-
-                // var message = data.message;
-                // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                // var jsonEnd = message.indexOf("```", jsonStart);
-                // if (jsonStart !== -1 && jsonEnd !== -1) {
-                //     var jsonString = message
-                //         .substring(jsonStart, jsonEnd)
-                //         .trim();
-                //     var _data2 = JSON.parse(jsonString);
-                //     _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = _data2
-                // }
-              } catch (error) {
-              }
-          }
-          _this.$forceUpdate()
-        }
-        // if (data.result) {
-        //   console.log(data.result);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.result)
-        //   _this.$forceUpdate()
-        // }
-        _this.taskDetailLoading4.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-      }).catch(function (error) {
-        _this.taskDetailLoading4.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        console.log(error);
-      });
-    },
-    async aiDetail5(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      var _text = ""
-      var _text2 = ""
-      for (var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-        _text += `任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[i].task} 任务描述:${_this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-        _text2 += `任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[i].task} 教案描述:${_this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-      }
-      let messages = `
-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".
-
---------
-## 要求
-${msg} 
-        
--------
-## 本教案描述
-${_this.aiCallBack}
-
--------
-## 课程大纲
-${_text}
-
--------
-## 其他教学任务教案
-${_text2}`
-
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${this.courseText2}
-      _this.taskDetailLoading5.push(_tindex)
-      _this.ttaskDetailLoading5.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading5.splice(_this.ttaskDetailLoading5.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail5getAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetail5getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-            _iindex = 0
-          }
-          if(this.taskDetailLoading5.indexOf(loading) !== -1){
-            this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          }
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiDetail52(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-
-      let messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)
-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.
-
-#Context
-## 要求
-${msg}
-        
-## 补充描述
-课程简要描述:${_this.courseText}
-任务名:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? 'index:'+(_tindex2+1) : ''}
-${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 ? '任务描述:' + _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? '#目标层:'+_this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-${(_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || _this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3") ? '#任务簇:'+_this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-`
-
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${this.courseText2}
-      _this.taskDetailLoading5.push(_tindex)
-      _this.ttaskDetailLoading5.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-          _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].isTask3 = false
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading5.splice(_this.ttaskDetailLoading5.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail52getAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetail52getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      this.allTextArray[_tindex2] = ""
-      let _iindex = 0
-      _source.onmessage = async (_e) => {
-        // await _this.aiDetail52getAiContentText(_e, loading, _tindex2, _source)
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-            _iindex = 0
-          }
-          if(this.taskDetailLoading5.indexOf(loading) !== -1){
-            this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          }
-          // 处理流数据
-        }
-      };
-    },
-    aiDetail52getAiContentText(_e, loading, _tindex2, _source){
-      let _mdText = "";
-      let _eData = JSON.parse(_e.data).content;
-      if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-        //对话已经完成
-        this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = this.allTextArray[_tindex2].replace("_", "");
-        _source.close();
-        this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-        this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
-        return;
-      } else {
-        //对话还在继续
-        let _text = "";
-        _text = _eData.replaceAll("'", "");
-        if (this.allTextArray[_tindex2] == "") {
-          this.allTextArray[_tindex2] = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-        } else {
-          this.allTextArray[_tindex2] += _text;
-        }
-        _mdText = this.allTextArray[_tindex2] + "_";
-        _mdText = this.allTextArray[_tindex2].replace(/\\n/g, "\n");
-        _mdText = this.allTextArray[_tindex2].replace(/\\/g, "");
-        if (this.allTextArray[_tindex2].split("```").length % 2 == 0) _mdText += "\n```\n";
-        this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText
-        this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-        // 处理流数据
-      }
-    },
-    async aiCpote(msg, callback) {
-      let _this = this
-      let _index = _this.aitype.replace("aiC","c")
-      
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-// ${this.getListClassC(this.checkboxList2) ?  '班级:' + this.getListClassC(this.checkboxList2) : "无"}
-// ${this.cpote[_index] ? '## 优化内容\n'+this.cpote[_index] : ''}
-let courseText = this.courseText ? this.courseText : this.teacherCourseText
-let target = this.targetCourseText2 ? this.targetCourseText2 : this.targetcoursetext
-      let messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)
-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.
-
-${msg} 
-
-## 课程简介
-课程名字:${this.courseName}
-${courseText ? '课程简要描述:' + courseText.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${target ? '课程目标:' + target.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-${this.aitype == 'aiCpote2' || this.aitype == 'aiCpote3' || this.aitype == 'aiCpote4' ? '## 概念群\n'+this.cpote['cpote1'] : ''}
-
-${this.aitype == 'aiCpote4' ? '## 问题链\n'+this.cpote['cpote2'] : ''}
-
-${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
-      _this.cpoteLoading[_index] = true
-      _this.cpotetLoading[_index] = true
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-        // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.cpoteLoading[_index] = false
-        _this.cpotetLoading[_index] = false
-        callback ? callback() : ''
-        console.log(error);
-      });
-      await _this.aiCpotegetAiContent(_uuid, _index, callback)
-    },
-    aiCpotegetAiContent(_uid, loading, callback) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.cpote[loading] = _mdText;
-          this.cpoteLoading[loading] = false
-          this.cpotetLoading[loading] = false
-          callback ? callback() : ''
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.cpote[loading] = _mdText;
-            _iindex = 0
-          }
-          this.cpoteLoading[loading] = false
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aiteacherTextDetail(msg) {
-      let _this = this
-      
-      let fileid = []
-      if (_this.teacherInfoData.length) {
-        for (var i = 0; i < _this.teacherInfoData.length; i++) {
-          if(_this.teacherInfoData[i].fileid){
-            fileid.push(_this.teacherInfoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.teacherInfoData[i].url)
-            if(_fileid){
-              _this.teacherInfoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-      _this.teacherTextLoading = true
-      _this.tteacherTextLoading = true
-      let sub = []
-      if (_this.courseTypeId.length) {
-        for (var i = 0; i < _this.courseTypeId.length; i++) {
-          let _sid = _this.courseTypeId[i]
-          for (var j = 0; j < _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(_this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (_this.courseTypeId.length) {
-        for (var i = 0; i < _this.courseTypeId.length; i++) {
-          let _sid = _this.courseTypeId[i]
-          for (var j = 0; j < _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(_this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      // ${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-      // ${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-      let messages = `NOTICE
-Role: 你是创建课程的老师,内容以markdown形式出现(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)。
-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
-## 参考资料
-课程名字:${this.courseName}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${this.teacherCourseText && this.aiCallback == 2 ? '参考内容:'+this.teacherCourseText : ''}
-
-## 要求
-${msg}
-
-${this.teacherCourseText && this.aiCallback == 2 ? '注意,优化原有的<参考内容>即可不用重新生成,让内容更具体化,更具体' : ''}`
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   _this.courseText = data.choices[0].message.content
-        // }
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-      }).catch(function (error) {
-        _this.teacherTextLoading = false
-        _this.tteacherTextLoading = false
-        console.log(error);
-      });
-      await _this.aiteacherTextDetailgetAiContent(_uuid)
-    },
-    aiteacherTextDetailgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.teacherCourseText = _mdText;
-          this.teacherTextLoading = false
-          this.tteacherTextLoading = false
-          this.teacherCourseTextB = false
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.teacherCourseText = _mdText;
-            _iindex = 0
-          }
-          if(this.teacherTextLoading){
-            this.teacherTextLoading = false
-          }
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aitargetTextDetail(msg) {
-      let _this = this
-      
-      let fileid = []
-      if (_this.teacherInfoData.length) {
-        for (var i = 0; i < _this.teacherInfoData.length; i++) {
-          if(_this.teacherInfoData[i].fileid){
-            fileid.push(_this.teacherInfoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.teacherInfoData[i].url)
-            if(_fileid){
-              _this.teacherInfoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-      _this.targetTextLoading = true
-      _this.ttargetTextLoading = true
-      let sub = []
-      if (_this.courseTypeId.length) {
-        for (var i = 0; i < _this.courseTypeId.length; i++) {
-          let _sid = _this.courseTypeId[i]
-          for (var j = 0; j < _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(_this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (_this.courseTypeId.length) {
-        for (var i = 0; i < _this.courseTypeId.length; i++) {
-          let _sid = _this.courseTypeId[i]
-          for (var j = 0; j < _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(_this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      // ${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-      // ${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-      let messages = `NOTICE
-Role: 你是创建课程的老师,内容以markdown形式出现(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)。
-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
-## 参考资料
-课程名字:${this.courseName}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${this.targetCourseText && this.aiCallback == 2 ? '参考内容:'+this.targetCourseText : ''}
-
-## 要求
-${msg}
-
-${this.targetCourseText && this.aiCallback == 2 ? '注意,优化原有的<参考内容>即可不用重新生成,让内容更具体化,更具体' : ''}`
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   _this.courseText = data.choices[0].message.content
-        // }
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-      }).catch(function (error) {
-        _this.targetTextLoading = false
-        _this.ttargetTextLoading = false
-        console.log(error);
-      });
-      await _this.aitargetTextDetailgetAiContent(_uuid)
-    },
-    aitargetTextDetailgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.targetCourseText = _mdText;
-          this.targetTextLoading = false
-          this.ttargetTextLoading = false
-          this.targetCourseTextB = false
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.targetCourseText = _mdText;
-            _iindex = 0
-          }
-          if(this.targetTextLoading){
-            this.targetTextLoading = false
-          }
-          // 处理流数据
-        }
-        // this.$forceUpdate();
-      };
-    },
-    async aitargetTextDetail2(msg) {
-      let _this = this
-      
-      let fileid = ['file-okF1PSRw4VYjRl81SykkxWSo'] // file-okF1PSRw4VYjRl81SykkxWSo 科学目标fileid
-      _this.targetTextLoading2 = true
-      _this.ttargetTextLoading2 = true
-      let sub = []
-      if (_this.courseTypeId.length) {
-        for (var i = 0; i < _this.courseTypeId.length; i++) {
-          let _sid = _this.courseTypeId[i]
-          for (var j = 0; j < _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(_this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (_this.courseTypeId.length) {
-        for (var i = 0; i < _this.courseTypeId.length; i++) {
-          let _sid = _this.courseTypeId[i]
-          for (var j = 0; j < _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(_this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-
-      let messages = `NOTICE
-Role: 你是创建课程的老师,内容以markdown形式出现(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)。
-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
-## 参考资料
-课程标题:${this.courseName}
-${this.targetCourseText && this.aiCallback == 2 ? '参考内容:'+this.targetCourseText : ''}
-
-## 要求
-${msg}
-
-${this.targetCourseText && this.aiCallback == 2 ? '注意,优化原有的<参考内容>即可不用重新生成,让内容更具体化,更具体' : ''}`
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   _this.courseText = data.choices[0].message.content
-        // }
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          _this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-      }).catch(function (error) {
-        _this.targetTextLoading2 = false
-        _this.ttargetTextLoading2 = false
-        console.log(error);
-      });
-      await _this.aitargetTextDetail2getAiContent(_uuid)
-    },
-    aitargetTextDetail2getAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      let _iindex = 0
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.targetCourseText2 = _mdText;
-          this.targetTextLoading2 = false
-          this.ttargetTextLoading2 = false
-          this.targetCourseText2B = false
-          return;
-        } else {
-          _iindex++
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          if(_iindex == 10){
-            this.targetCourseText2 = _mdText;
-            _iindex = 0
-          }
-          if(this.targetTextLoading2){
-            this.targetTextLoading2 = false
-          }
-          // 处理流数据
-        }
-        // 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
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      
-      console.log('fileid=========',fileid)
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      //   // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.dArray = dArray
-      //     _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //     for (var i = 0; i < dArray.length; i++) {
-      //       let _task = dArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //         task: _task.task,
-      //         taskDetail: "",
-      //         taskDetail2: _task.detail,
-      //         taskDetail3: "",
-      //         chapterData: [],
-      //         toolText: "",
-      //         toolChoose: [
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         ],
-      //         isShowTools: false,
-      //         askCount: 1,
-      //         isFold: 0,
-      //         askTitle: "",
-      //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //         checkJson: [{ checkCount: [], checkPerent: [] }],
-      //         homeworkList: [],
-      //       })
-      //     }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //           _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.dArray = dArray
-      //   //   _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //   //       task: _task.task,
-      //   //       taskDetail: "",
-      //   //       taskDetail2: _task.detail,
-      //   //       taskDetail3: "",
-      //   //       chapterData: [],
-      //   //       toolText: "",
-      //   //       toolChoose: [
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       ],
-      //   //       isShowTools: false,
-      //   //       askCount: 1,
-      //   //       isFold: 1,
-      //   //       askTitle: "",
-      //   //       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //       checkJson: [{ checkCount: [], checkPerent: [] }],
-      //   //       homeworkList: [],
-      //   //     })
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            let dArray = []
-            try {
-              dArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-            } catch (error) {
-                // callback ? callback() : ''
-                console.log("error_________________" + error);
-              try {
-                  let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-              } catch (error) {
-                callback ? callback() : ''
-                _this.$message.error("生成的json格式错误,请重新点击获取")
-                console.log("error_________________" + error);
-              }
-            }
-            for(let i = 0; i < dArray.length; i++){
-              let content = dArray[i].content
-              let name = '参考资料'+(i+1)
-              let md = new MarkdownIt();
-              let _html =  content ? md.render(content) : ''
-              setTimeout(()=>{
-                if(i == (dArray.length - 1)){
-                  _this.generate2(name, _html, i, callback)
-                }else {
-                  _this.generate2(name, _html, i)
-                }
-              }, 500 * i)
-            }
-            _this.$forceUpdate();
-          }
-        })
-        .catch((error) => {
-          callback ? callback() : ''
-          console.log(error);
-        });
-    },
-    createFileid(url) {
-      let _this = this
-      return new Promise((resolve, reject) => {
-        try {
-          _this.ajax
-          .put("https://gpt4.cocorobo.cn/upload_file_knowledge", {
-            url: url,
-          })
-          .then((res) => {
-            let _data = res.data.FunctionResponse;
-            if (_data.result && _data.result.id) {
-              resolve(_data.result.id)
-            }
-          }).catch(function (error) {
-            resolve('')
-          });
-        }catch (e){
-          resolve()
-        }
-        
-      });
-    }
-  },
-  beforeDestroy() {
-    clearTimeout(this.timer);
-    this.timer = null;
-    clearInterval(this.timer2);
-    this.timer2 = null;
-    clearInterval(this.pasteTimer);
-    this.pasteTimer = null;
-  },
-  beforeRouteLeave(to, from, next) {
-    clearTimeout(this.timer);
-    this.timer = null;
-    clearInterval(this.timer2);
-    this.timer2 = null;
-    clearInterval(this.pasteTimer);
-    this.pasteTimer = null;
-    next();
-  },
-  created() {
-    this.getStudent();
-    this.getTeacher();
-    this.getClass();
-    this.selectGrage();
-    this.getTemplate();
-    this.getTipsTemplate();
-    // this.selectType();
-    this.selectEva();
-    if(this.istemplate == 1){
-      this.isOutline = true
-      this.isOutline2 = true
-      this.courseTextBool = true
-    }
-    this.loading = false;
-    this.timer2 = setInterval(() => {
-      this.selectEva();
-    }, 5000);
-    this.pasteTimer = setInterval(() => {
-      this.getPaste();
-    }, 1000);
-    setTimeout(() => {
-      // this.selectAllType();
-
-      this.selectCourseDetail();
-    }, 500);
-    let _this = this;
-    window.pasteStage = function (json) {
-      _this.pasteStage(json);
-    };
-    window.pasteTask = function (json) {
-      _this.pasteTask(json);
-    };
-  },
-};
-</script>
-
-<style scoped>
-@media screen and (max-width: 1280px) {
-  .mbCss {
-    flex-direction: column !important;
-  }
-
-  .pjCss {
-    width: 100% !important;
-  }
-
-  .evaCss {
-    width: 100% !important;
-    margin-top: 10px;
-  }
-}
-
-.el-table>>>.even_row {
-  background-color: #f1f1f1 !important;
-}
-
-.dialog_diy>>>.el-dialog__header {
-  background: #3c3c3c !important;
-  padding: 15px 20px;
-}
-
-.dialog_diy>>>.el-dialog__title {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-  top: 19px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-  background: #fafafa;
-}
-
-.dialog_diy3>>>.el-dialog__body,
-.dialog_diy3>>>.el-dialog__footer {
-  background: #eee !important;
-}
-
-.dialog_diy3>>>.el-dialog__body {
-  padding: 20px 20px;
-}
-
-.dialog_diyStage>>>.el-dialog__body {
-  padding: 10px;
-}
-
-.source_diy>>>.el-dialog {
-  height: 100% !important;
-  margin: 0 auto !important;
-}
-
-.source_diy>>>.el-dialog__body {
-  height: calc(100% - 185px);
-  overflow: auto;
-  background: #e6eaf0;
-}
-
-.source_diy>>>.el-dialog__footer {
-  background: #e6eaf0 !important;
-}
-
-.left {
-  border-right: 1px solid rgb(60, 94, 143);
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  min-height: 600px;
-  width: 385px;
-  height: 80%;
-}
-
-.tips {
-  color: rgb(128, 128, 128);
-  font-size: 12px;
-  width: 270px;
-  margin: 40px;
-}
-
-.pb_content {
-  height: 100% !important;
-  /* margin: 0 20px 0 20px; */
-}
-
-.pb_content_body {
-  width: 100% !important;
-  height: 100%;
-  display: flex;
-}
-
-.info_solid {
-  width: 270px;
-  height: 30px;
-  border-left: 1px solid #bdbdbd;
-  margin: 10px 0px 10px 30px;
-}
-
-.info_steps {
-  width: 270px;
-  font-size: 0.875rem;
-  display: flex;
-  align-items: center;
-}
-
-.info_steps span:nth-child(1) {
-  width: 30px;
-  height: 30px;
-  background: rgba(0, 0, 0, 0.38);
-  display: block;
-  color: #fff;
-  border-radius: 40px;
-  text-align: center;
-  line-height: 30px;
-}
-
-.steps_active {
-  background: #3d67bc !important;
-}
-
-.info_steps span:nth-child(2) {
-  margin-left: 5px;
-}
-
-.right {
-  height: 100%;
-  width: 100%;
-  display: flex;
-  overflow: hidden;
-  flex-direction: column;
-}
-
-.leftBar{
-  width: 290px;
-  height: calc(100% - 50px);
-  overflow: auto;
-  border-radius: 5px;
-  margin: 25px auto;
-  box-sizing: border-box;
-  margin-right: 10px;
-}
-
-.basic_box {
-  margin: 0 auto;
-  position: relative;
-  padding: 0 20px 0 20px;
-}
-
-.basic_box_success {
-  width: 100%;
-  min-height: 455px;
-  padding: 50px 0;
-  position: relative;
-  text-align: center;
-  border-bottom: 1px solid #bfbfbf;
-  box-sizing: border-box;
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  justify-content: center;
-}
-
-.info_title {
-  font-size: 1.5em;
-  margin-right: 25px;
-  /* margin: 20px 30px 20px 30px; */
-}
-
-.bInfo_title {
-  text-align: left;
-  margin: 10px 0;
-}
-
-.small_title {
-  font-size: 14px;
-  line-height: 40px;
-}
-
-.chapter_beizhu {
-  font-size: 12px;
-  font-weight: bold;
-  float: right;
-  color: rgb(128, 128, 128);
-  margin-top: 5px;
-}
-
-.chapter_uploadBox1 {
-  text-align: left;
-  background-color: rgb(242, 242, 242);
-  width: 100%;
-  height: 67px;
-  padding: 0px 15px;
-  border-radius: 8px;
-  overflow: hidden;
-  font-size: 16px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-.chapter_add {
-  width: 100%;
-  height: 32px;
-  margin-top: 15px;
-  cursor: pointer;
-}
-
-.chapter_add_l {
-  margin-left: 5px;
-  width: 30px;
-  height: 30px;
-  float: left;
-  border: 1px solid #aaa;
-  color: #aaa;
-  border-radius: 50%;
-  font-size: 25px;
-  text-align: center;
-}
-
-.chapter_add_r {
-  font-size: 18px;
-  height: 40px;
-  line-height: 30px;
-  text-indent: 10px;
-  color: #aaa;
-}
-
-.chapter_add_r span {
-  font-size: 12px;
-  color: rgb(204, 204, 204);
-}
-
-.chapter_add_input {
-  display: none;
-}
-
-.line {
-  width: 85%;
-  margin: 0 auto;
-  border-top: 1px solid #e5e5e5;
-  margin-top: 20px;
-}
-
-.info_btnBox {
-  width: calc(100%);
-  display: flex;
-  justify-content: center;
-  height: 80px;
-  align-items: center;
-  background: #fff;
-  margin: 0 auto;
-  border-top: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-}
-
-.info_btnBox2 {
-  width: calc(100%);
-  display: flex;
-  justify-content: center;
-  height: 20px;
-  align-items: center;
-  background: #fff;
-  margin: 0 auto;
-  border-top: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-  overflow: hidden;
-  cursor: pointer;
-}
-
-.info_btnBox3 {
-  width: calc(100%);
-  display: flex;
-  justify-content: flex-end;
-  padding: 0 20px;
-  height: 60px;
-  align-items: center;
-  background: unset;
-  margin: 0 auto;
-  /* border-top: 1px solid rgb(228, 232, 237); */
-  box-sizing: border-box;
-  overflow: hidden;
-  cursor: pointer;
-  background: #fff;
-  border-radius: 10px;
-}
-
-.info_btn+.info_btn {
-  margin-left: 15px;
-}
-
-.info_btn,
-.teacherWord {
-  color: #fff;
-  background-color: #0f7eff;
-  padding: 8px 24px;
-  font-size: 0.9375rem;
-  box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%),
-    0px 3px 1px -2px rgb(0 0 0 / 12%);
-  min-width: 64px;
-  font-weight: 500;
-  border-radius: 4px;
-  box-sizing: border-box;
-  border: none;
-  cursor: pointer;
-}
-
-.teacherWord {
-  width: 105px !important;
-  text-align: center !important;
-  line-height: 36px !important;
-  padding: 0 !important;
-  font-size: 14px !important;
-  margin: 10px 0 !important;
-}
-
-.template_box {
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.wordTeacher {
-  display: flex;
-  flex-direction: column;
-  width: 100px;
-  height: 100px;
-  text-align: center;
-  font-size: 13px;
-  margin: 0 20px 20px 0;
-  background: #f0f4fa;
-  position: relative;
-  border-radius: 5px;
-  align-items: center;
-  justify-content: center;
-  border: 1px solid #cad1dc;
-  color: #0e1e33;
-  /* padding: 25px 0px; */
-  cursor: pointer;
-}
-
-.wordTeacher::after {
-  content: "";
-  display: block;
-  position: absolute;
-  width: 15px;
-  height: 15px;
-  right: 10px;
-  top: 10px;
-  background-image: url(../../../assets/icon/new/choose_a.png);
-  background-size: 100% 100%;
-}
-
-.wordTeacherA::after {
-  background-image: url(../../../assets/icon/new/choose_b.png);
-}
-
-.wordTeacher:nth-child(5n) {
-  margin-right: 0px;
-}
-
-.wordPic {
-  margin: 0 auto;
-  width: 30px;
-  height: 30px;
-  cursor: pointer;
-}
-
-.deleteWord {
-  width: 22px;
-  height: 22px;
-  position: absolute;
-  right: 5px;
-  top: -15px;
-  cursor: pointer;
-  display: none;
-  z-index: 999;
-}
-
-.wordPic>img,
-.deleteWord>img,
-.addToolImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.info_btn:hover {
-  background-color: #4f7cd5 !important;
-}
-
-.cru_selectBox {
-  display: flex;
-  margin: 15px 0;
-  flex-wrap: nowrap;
-  white-space: nowrap;
-  overflow: auto;
-  position: relative;
-  height: 40px;
-  max-width: calc(100% - 175px);
-}
-
-.cru_selectBox::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-track {
-  border-radius: 10px;
-  background-color: #eee;
-}
-
-/*定义滑块 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.cru_line {
-  position: absolute;
-  bottom: 0px;
-  transition: all 0.5s;
-  left: 0px;
-  width: 50px;
-  height: 4px;
-  left: 10px;
-  border-radius: 2px;
-  background: #3681fc;
-}
-
-.cru_select {
-  font-size: 18px;
-  margin-right: 20px;
-  margin-left: 5px;
-  cursor: pointer;
-  color: #0e1e33;
-}
-
-.cru_select:hover {
-  color: #3681fc !important;
-}
-
-.cru_selected {
-  color: #3681fc !important;
-  font-weight: bold;
-}
-
-.chapter_box {
-  margin-top: 10px;
-  width: 100%;
-  padding: 10px 20px;
-  background: #fff;
-  border-radius: 8px;
-  box-sizing: border-box;
-}
-
-.chapter_contentbox {
-  display: flex;
-  align-items: center;
-  /* margin-top: 15px; */
-}
-
-.chapter_contentbox .cc_title {
-  margin: 0px;
-  color: black;
-  display: block;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  margin-right: 20px;
-  font-size: 18px;
-  height: 20px;
-  line-height: 22px;
-  min-width: fit-content;
-  display: flex;
-}
-
-.chapter_contentbox .cc_title::before {
-  content: "";
-  height: 100%;
-  width: 3px;
-  background: #3681fc;
-  border-radius: 3px;
-  opacity: 1;
-  display: block;
-  margin-right: 10px;
-}
-
-.chapter_contentbox .cc_input {
-  width: 100%;
-  display: flex;
-}
-
-.show_taskD {
-  min-width: fit-content;
-  margin-left: 10px;
-  display: flex;
-  align-items: center;
-  font-size: 14px;
-  cursor: pointer;
-  color: #717c8d;
-}
-
-.show_taskD>img {
-  width: 15px;
-  margin-right: 5px;
-  transition: 0.2s all;
-  transform: rotate(-90deg);
-}
-
-.show_taskD.show>img {
-  transform: rotate(0deg);
-}
-
-.show_toolD {
-  min-width: fit-content;
-  margin-left: 10px;
-  display: flex;
-  align-items: center;
-  font-size: 14px;
-  cursor: pointer;
-  color: #717c8d;
-  /* position: absolute;
-  right: 45px;
-  top: 5px; */
-}
-
-.show_toolD>img {
-  width: 15px;
-  margin-right: 5px;
-  transition: 0.2s all;
-  transform: rotate(-90deg);
-}
-
-.show_toolD.show>img {
-  transform: rotate(0deg);
-}
-
-.remove {
-  background-image: url("../../../assets/icon/new/delete_u.png");
-  cursor: pointer;
-  opacity: 0.5;
-  width: 30px;
-  min-width: 30px;
-  height: 30px;
-  background-size: 100% 100%;
-  background-repeat: no-repeat;
-  margin-left: 10px;
-}
-
-.remove1 {
-  background-image: url("../../../assets/remove1.png");
-  background-repeat: no-repeat;
-  background-position: 5px 10px;
-  width: 40px;
-  height: 50px;
-  cursor: pointer;
-  margin-left: 10px;
-}
-
-.binfo_input {
-  width: 100%;
-  margin: 0;
-  padding: 12px 14px;
-  display: block;
-  min-width: 0;
-  outline: none;
-  box-sizing: border-box;
-  background: none;
-  border: none;
-  border-radius: 4px;
-  background: #fff;
-  font-size: 16px;
-  resize: none;
-  font-family: "Microsoft YaHei";
-  min-height: 48px;
-  /* border: 1px solid #3682fc00; */
-  border: 1.5px solid #cad1dc;
-}
-
-.binfo_textarea {
-  border: 1.5px solid #cad1dc;
-  font-size: 16px;
-  resize: none;
-  /* background: #f6f6f6; */
-  font-family: "Microsoft YaHei";
-}
-
-.binfo_input:focus-visible {
-  border: 1.5px solid #3681fc !important;
-}
-
-.time {
-  display: flex;
-  margin: 35px 0 80px 0;
-}
-
-.chapter_btnbox {
-  width: 160px;
-  border-radius: 5px;
-  border: 2px dashed gray;
-  display: flex;
-  padding: 8px 50px;
-  align-items: center;
-  justify-content: center;
-  margin: 30px auto 0;
-  cursor: pointer;
-}
-
-.icon_add {
-  position: relative;
-  width: 24px;
-  padding-top: 20px;
-  border-radius: 100%;
-  border-width: 2px;
-  border-style: solid;
-  border-color: gray;
-}
-
-.icon_add i:nth-child(1) {
-  position: absolute;
-  left: 50%;
-  top: 50%;
-  height: 60%;
-  transform: translate(-50%, -50%);
-  border-width: 1px;
-  border-style: solid;
-  border-color: inherit;
-}
-
-.icon_add i:nth-child(2) {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  width: 60%;
-  transform: translate(-50%, -50%);
-  border-width: 1px;
-  border-style: solid;
-  border-color: inherit;
-}
-
-.chapter_btn_w {
-  font-size: 0.9375rem;
-  font-weight: bold;
-  color: gray;
-  margin-left: 20px;
-}
-
-.disUoloadSty>>>.el-icon-plus {
-  display: none !important;
-  /* 上传按钮隐藏 */
-}
-
-.imgLeft {
-  margin: 15px 0;
-}
-
-.add_info_box {
-  margin: 0 0 0 auto;
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.add_info_box button {
-  margin: 0 5px 10px 0;
-}
-
-.add_info_box2 {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-}
-
-.add_info_box2::after {
-  content: "提示:支持上传10M以内的PPT和Word文件、5M以内的Excel文件, PDF文件不限制大小。";
-  color: red;
-  font-size: 14px;
-  margin-bottom: 10px;
-}
-
-.add_chapters_box {
-  text-align: left;
-  background-color: #fff;
-  width: 100%;
-  border-radius: 4px;
-  font-size: 16px;
-  box-sizing: border-box;
-  position: relative;
-  padding: 0 15px;
-  height: auto;
-  overflow-y: auto;
-  overflow-x: hidden;
-  border: 1px solid #cad1dc;
-}
-
-.add_chapters_box.add_c_none {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  padding: 15px;
-}
-
-.add_c_none>img {
-  width: 25px;
-}
-
-.add_chapters_box.add_c_none>span {
-  font-size: 14px;
-  font-weight: 400;
-  margin: 0 0 5px 5px;
-}
-
-.homework_box {
-  display: flex;
-  align-items: flex-start;
-  flex-wrap: wrap;
-  margin: 15px 0 0 0;
-  flex-direction: column;
-  align-content: flex-start;
-}
-
-.course_homework {
-  display: flex;
-  justify-content: center;
-  flex-direction: row;
-  align-items: center;
-  margin: 0 10px 0 0;
-}
-
-.course_homework>>>.el-input__inner {
-  width: 140px;
-  margin-left: 15px;
-}
-
-.chapter_upload_move {
-  position: relative;
-  background-color: #fff;
-  position: absolute;
-  width: 100%;
-  top: 0px;
-  left: 0px;
-  border: 1px solid #eee;
-  border-radius: 5px;
-  transition: width 2s;
-  -moz-transition: width 2s;
-  -webkit-transition: width 2s;
-  -o-transition: width 2s;
-}
-
-.chapter_upload_l_i {
-  background-image: url("../../../assets/icon.png");
-  background-position: 3px -165px;
-  width: 30px;
-  height: 30px;
-  margin: 10px auto 0 auto;
-}
-
-.course_input_box {
-  display: flex;
-  margin-right: 20px;
-  width: 100%;
-  align-items: center;
-  position: relative;
-}
-
-.course_input_box>.binfo_input {
-  width: calc(100% - 0 - 200px - 20px);
-  margin: 0 10px;
-}
-
-.bb_courseIcon {
-  width: 57px;
-  height: 45px;
-  background: #f0f4fa;
-  border-radius: 5px 0px 0px 5px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  border-right: 1.5px solid rgb(202, 209, 220);
-  box-sizing: border-box;
-  position: absolute;
-  left: 1.5px;
-}
-
-.bb_courseIcon>img {
-  width: 25px;
-  height: auto;
-}
-
-.big_box {
-  /* margin-top: 20px; */
-  display: flex;
-  justify-content: space-between;
-  /* border-bottom: 1px solid #E0E2ED; */
-}
-
-.left_first {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  width: calc(100% - 310px);
-  padding: 20px;
-  box-sizing: border-box;
-  background: #fff;
-  border-radius: 5px;
-}
-
-.right_first {
-  width: 300px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  /* border-left: 1px solid #E0E2ED; */
-  box-sizing: border-box;
-  padding: 20px;
-  flex-direction: column;
-  background: #fff;
-  border-radius: 5px;
-}
-
-.ai_box {
-  width: 204px;
-  display: flex;
-  justify-content: flex-end;
-  margin-bottom: 15px;
-}
-
-.ai_content {
-  display: flex;
-  align-items: center;
-  font-size: 14px;
-  padding: 7px 20px;
-  box-sizing: border-box;
-  box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.16);
-  border-radius: 12px;
-  font-weight: 700;
-  cursor: pointer;
-}
-
-.ai_content>img {
-  width: 40px;
-  margin-right: 5px;
-}
-
-.c_info_title {
-  padding: 15px 0 15px 0;
-  font-size: 16px;
-  font-weight: bold;
-  margin: 0 0 0 20px;
-  box-sizing: border-box;
-  display: flex;
-  align-items: center;
-  line-height: 20px;
-}
-
-.c_info_title::before {
-  content: "";
-  display: block;
-  width: 3px;
-  height: 20px;
-  background: #0061ff;
-  border-radius: 3px;
-  margin: 0 5px 0 0;
-}
-
-.right_title {
-  height: 30px;
-  padding: 15px 0 15px 20px;
-  border-bottom: 1px solid #f2f2f2;
-  font-size: 1.5em;
-  font-weight: bold;
-  color: #0f7eff;
-  margin: 0 auto;
-}
-
-.people {
-  border: 1px solid rgb(229 229 229);
-  /* height: 495px; */
-  height: 350px;
-  border-radius: 5px;
-  width: 100%;
-  overflow: auto;
-}
-
-.people_top {
-  display: flex;
-  width: 100%;
-  /* justify-content: space-between; */
-  /* align-items: center; */
-  flex-direction: column;
-  padding: 10px 10px 0;
-  box-sizing: border-box;
-}
-
-.people_nav,
-.people_top_right {
-  /* padding: 20px 0 0 20px; */
-}
-
-.people_top_right {
-  height: 40px;
-  margin-bottom: 10px;
-}
-
-.people_search {
-  display: flex;
-  position: relative;
-}
-
-.people_search>>>.el-input__inner {
-  /* height: 25px; */
-  width: 100%;
-}
-
-.search_img {
-  width: 20px;
-  height: 20px;
-  position: absolute;
-  right: 10px;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.search_img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.people_name {
-  display: flex;
-  justify-content: flex-start;
-  padding: 20px 10px;
-  flex-direction: column;
-  flex-wrap: wrap;
-}
-
-.p_box {
-  position: relative;
-}
-
-.people_name>>>.el-checkbox {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  margin-bottom: 10px;
-}
-
-.people_name>>>.el-checkbox__label {
-  text-overflow: ellipsis;
-  overflow: hidden;
-  width: calc(100%);
-}
-
-.people_name2>>>.el-checkbox__label {
-  width: calc(100% - 130px);
-}
-
-.inviteCode {
-  position: absolute;
-  right: 30px;
-  color: #237ade;
-  top: 0;
-  cursor: pointer;
-  font-size: 13px;
-}
-
-.noneInvite {
-  color: #a8a8a8;
-}
-
-.inviteImg {
-  position: absolute;
-  right: 5px;
-  top: 0;
-  width: 20px;
-}
-
-.right_img {
-  width: 150px;
-  height: 150px;
-  margin: 0 auto;
-}
-
-.right_img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.number {
-  margin-top: 20px;
-  color: #4aa6ff;
-  text-decoration: underline;
-}
-
-.success_button {
-  display: flex;
-  text-align: center;
-  margin: 5% 0 auto;
-  flex-direction: row;
-  justify-content: center;
-}
-
-.look_course {
-  margin-right: 40px;
-  background: #3d67bc;
-  width: 200px;
-  height: 35px;
-  line-height: 35px;
-  color: #fff;
-  text-align: center;
-  font-size: 14px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.attend_others {
-  width: 250px;
-  background: #4fb13c;
-  height: 35px;
-  line-height: 35px;
-  color: #fff;
-  text-align: center;
-  font-size: 14px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.dialog_diy2>>>.el-dialog__body {
-  text-align: center;
-}
-
-.write_togother {
-  position: absolute;
-  right: 45px;
-  display: flex;
-  top: 5%;
-}
-
-.write_people {
-  font-size: 14px;
-  line-height: 50px;
-  padding-right: 10px;
-}
-
-.end_write {
-  background: #3d67bc;
-  color: #fff;
-  width: 100px;
-  height: 35px;
-  line-height: 35px;
-  text-align: center;
-  font-size: 14px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.chapter_upload+.chapter_upload {
-  /* margin-top: 15px; */
-  border-top: 1px solid #e7ebf1;
-}
-
-.chapter_upload {
-  height: 45px;
-  position: relative;
-  display: flex;
-  align-items: center;
-  width: 100%;
-  min-height: 45px;
-  /* box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.16); */
-  /* border-radius: 4px; */
-  /* overflow: hidden; */
-  box-sizing: border-box;
-}
-
-.chapter_upload_drag {
-  position: absolute;
-  cursor: pointer;
-  width: 16px;
-  height: 16px;
-  left: -9px;
-  background-image: url("../../../assets/icon/new/icon_course_drag.png");
-  background-size: 100% 100%;
-  z-index: 10;
-  display: none;
-}
-
-.isNavStage>.chapter_upload_drag {
-  background-image: url("../../../assets/icon/new/icon_course_drag_active2.png");
-}
-
-.chapter_upload_t {
-  background-color: #fff;
-  position: absolute;
-  height: 100%;
-  top: 0px;
-  left: 0px;
-  box-sizing: border-box;
-}
-
-.chapter_upload_o {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  z-index: 1;
-}
-
-.chapter_upload_ic {
-  margin: 0 15px 0px auto;
-  display: flex;
-  align-items: center;
-}
-
-.chapter_upload_ic_l {
-  width: 50px;
-  height: 50px;
-  float: left;
-}
-
-.chapter_upload_ic_l div {
-  width: 30px;
-  height: 35px;
-  background: url("../../../assets/icon/icon.png");
-}
-
-.chapter_upload_ic_edit {
-  height: 100%;
-  display: flex;
-  align-items: center;
-  cursor: pointer;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ic_edit div {
-  width: 18px;
-  height: 18px;
-  background-image: url("../../../assets/icon/new/edit_u.png");
-  background-size: 100% 100%;
-}
-
-.chapter_upload_ic_check {
-  height: 100%;
-  display: flex;
-  align-items: center;
-  cursor: pointer;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ic_check div {
-  width: 18px;
-  height: 18px;
-  background-image: url("../../../assets/icon/course/lookeye.svg");
-  background-size: 100% 100%;
-}
-
-
-.chapter_upload_ic_r {
-  height: 100%;
-  display: flex;
-  align-items: center;
-  cursor: pointer;
-}
-
-.chapter_upload_ic_r div {
-  width: 18px;
-  height: 18px;
-  background-image: url("../../../assets/icon/new/delete_u.png");
-  background-size: 100% 100%;
-}
-
-.chapter_upload_n {
-  display: flex;
-  text-indent: 10px;
-  text-decoration: none;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  overflow: hidden;
-  width: 55%;
-  margin-left: 10px;
-  cursor: pointer;
-  margin-top: 2px;
-  align-items: center;
-}
-
-.chapter_upload_l_i2,
-.chapter_upload_l_i3,
-.chapter_upload_l_i8,
-.chapter_upload_l_i6,
-.chapter_upload_l_i12,
-.chapter_upload_l_i14,
-.chapter_upload_l_i13 {
-  width: 15px;
-  height: 15px;
-  background-size: 100% 100%;
-}
-
-.chapter_upload_l_i2 {
-  background-image: url("../../../assets/icon/new/u_word.png");
-}
-
-.chapter_upload_l_i3 {
-  background-image: url("../../../assets/icon/new/u_video.png");
-}
-
-.chapter_upload_l_i8 {
-  background-image: url("../../../assets/icon/new/u_url.png");
-}
-
-.chapter_upload_l_i14 {
-  background-image: url("../../../assets/icon/new/u_source.png");
-}
-
-.chapter_upload_l_i6 {
-  background-image: url("../../../assets/icon/new/u_picture.png");
-}
-
-.chapter_upload_l_i12 {
-  background-image: url("../../../assets/icon/new/u_word.png");
-}
-
-.chapter_upload_l_i13 {
-  background-image: url("../../../assets/icon/new/u_img.png");
-}
-
-.chapter_upload_noSee {
-  background-image: url("../../../assets/icon/new/u_noUpload.png");
-  width: 18px;
-  height: 18px;
-  background-size: 100% 100%;
-  display: block;
-  margin-right: 10px;
-}
-
-.chapter_upload_ud {
-  display: flex;
-  flex-direction: row;
-  justify-content: center;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ud>.chapter_upload_up {
-  margin-bottom: 0;
-  margin-right: 10px;
-}
-
-.chapter_upload_down,
-.chapter_upload_up {
-  width: 20px;
-  height: 20px;
-  background: #e4eaf2;
-  cursor: pointer;
-  margin: 0 auto;
-  border-radius: 5px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.chapter_upload_up::after,
-.chapter_upload_down::after {
-  content: "";
-  background-image: url("../../../assets/icon/new/downBtn.png");
-  width: 13px;
-  height: 13px;
-  background-size: 100% 100%;
-  display: block;
-}
-
-.chapter_upload_up::after {
-  background-image: url("../../../assets/icon/new/upBtn.png") !important;
-}
-
-.chapter_upload_up {
-  margin-bottom: 5px;
-}
-
-.chapter_upload_ud2 {
-  display: flex;
-  flex-direction: row;
-  justify-content: center;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ud2>.chapter_upload_up2 {
-  margin-bottom: 0;
-  margin-right: 10px;
-}
-
-.chapter_upload_down2,
-.chapter_upload_up2 {
-  cursor: pointer;
-  margin: 0 auto;
-  border-radius: 5px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  color: #717c8d;
-  font-size: 14px;
-}
-
-.chapter_upload_up2 {
-  margin-right: 10px;
-}
-
-.chapter_upload_up2::before,
-.chapter_upload_down2::before {
-  content: "";
-  background-image: url("../../../assets/icon/new/c_down.png");
-  width: 14px;
-  height: 14px;
-  background-size: 100% 100%;
-  display: block;
-  margin-right: 5px;
-}
-
-.chapter_upload_up2::before {
-  background-image: url("../../../assets/icon/new/c_up.png") !important;
-}
-
-.addWordStyle {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  overflow-x: auto;
-  white-space: nowrap;
-  flex-wrap: wrap;
-}
-
-/* table 样式 */
-.cont>>>table {
-  border-top: 1px solid #ccc;
-  border-left: 1px solid #ccc;
-}
-
-.cont>>>table td,
-.cont>>>table th {
-  border-bottom: 1px solid #ccc;
-  border-right: 1px solid #ccc;
-  /* padding: 20px 5px; */
-  padding: 5px 10px;
-  max-width: 0px;
-  height: 30px;
-  vertical-align: baseline;
-}
-
-.cont>>>table th {
-  border-bottom: 2px solid #ccc;
-  text-align: center;
-}
-
-/* blockquote 样式 */
-.cont>>>blockquote {
-  display: block;
-  border-left: 8px solid #d0e5f2;
-  padding: 5px 10px;
-  margin: 10px 0;
-  line-height: 1.4;
-  font-size: 100%;
-  background-color: #f1f1f1;
-}
-
-/* code 样式 */
-.cont>>>code {
-  display: inline-block;
-  /* *display: inline; */
-  zoom: 1;
-  background-color: #f1f1f1;
-  border-radius: 3px;
-  padding: 3px 5px;
-  margin: 0 3px;
-}
-
-.cont>>>pre code {
-  display: block;
-}
-
-/* ul ol 样式 */
-.cont>>>ul,
-ol {
-  margin: 10px 0 10px 20px;
-}
-
-.wordbox {
-  display: flex;
-  flex-wrap: wrap;
-  cursor: pointer;
-  width: 100%;
-}
-
-.checkword {
-  width: 22px;
-  height: 22px;
-  margin: 10px auto 0;
-  cursor: pointer;
-}
-
-.checkword img {
-  width: 100%;
-}
-
-.stepBg {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  background: #fff;
-  width: calc(100%);
-  margin: 0 auto;
-}
-
-.stepBorder {
-  height: 3px !important;
-  background: #cad1dc;
-  width: 100px !important;
-  margin: 0 15px !important;
-  position: relative;
-}
-
-.border-active {
-  background: #3681fc !important;
-}
-
-.border-active::before,
-.border-active::after {
-  border-color: #3681fc !important;
-}
-
-.stepBorder::before,
-.stepBorder::after {
-  content: "";
-  width: 9px;
-  height: 9px;
-  background: #ffffff;
-  opacity: 1;
-  border: 2px solid #acb4bf;
-  display: block;
-  box-sizing: border-box;
-  border-radius: 50%;
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.stepBorder::after {
-  right: -9px;
-}
-
-.stepTop {
-  width: 100%;
-  /* border-radius: 10px; */
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: nowrap;
-  background: #fff;
-  /* top: 18%; */
-  height: 80px;
-  border-bottom: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-}
-
-.stepTop2 {
-  width: 100%;
-  /* border-radius: 10px; */
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: nowrap;
-  background: #fff;
-  /* top: 18%; */
-  height: 20px;
-  border-bottom: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-  overflow: hidden;
-  cursor: pointer;
-}
-
-.stepTop>div img {
-  width: 100%;
-}
-
-.stepTop>div {
-  height: 50px;
-  width: 180px;
-  cursor: pointer;
-  margin: 10px 0;
-  border-radius: 10px;
-}
-
-.first,
-.second,
-.third,
-.four {
-  background: #3681fc;
-  height: 90px;
-  color: #fff;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-}
-
-.first>div:nth-child(1),
-.second>div:nth-child(1),
-.third>div:nth-child(1),
-.four>div:nth-child(1) {
-  margin: 5px 10px 0 0;
-  width: 2rem;
-}
-
-.firstNo,
-.secondNo,
-.thirdNo,
-.fourNo {
-  background: #e7e7e7;
-  color: #adadad;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-}
-
-.firstNo>div:nth-child(1),
-.secondNo>div:nth-child(1),
-.thirdNo>div:nth-child(1),
-.fourNo>div:nth-child(1) {
-  margin: 5px 10px 0 0;
-  width: 2rem;
-}
-
-.uploadWidth>>>.el-upload {
-  width: 60px;
-  height: 60px;
-  position: relative;
-}
-
-.addPeople {
-  background: #fa6060;
-  width: 150px;
-  height: 40px;
-  color: #fff;
-  border-radius: 5px;
-  text-align: center;
-  line-height: 40px;
-  font-size: 14px;
-  cursor: pointer;
-}
-
-.kcImg {
-  width: 60px;
-  margin-left: 10px;
-}
-
-.zyImg {
-  width: 55px;
-  margin: 0 10px;
-}
-
-.deleteZy {
-  width: 20px;
-  position: absolute;
-  top: 5px;
-  right: 5px;
-  cursor: pointer;
-}
-
-.kcImg>img,
-.zyImg>img,
-.deleteZy>img {
-  width: 100%;
-  height: 100%;
-}
-
-.zyBox {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  background: #67d37d;
-  color: #fff;
-  width: 210px;
-  margin: 20px 20px 0 0;
-  border-radius: 10px;
-  height: 70px;
-  position: relative;
-}
-
-.upCss {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-}
-
-.upCss>>>.el-icon-plus {
-  position: none !important;
-  width: 200px;
-  height: 100px;
-  display: flex;
-  flex-wrap: nowrap;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  border: 1px dashed #ccc;
-  min-width: 78px;
-  min-height: 100px;
-  z-index: 999;
-}
-
-.upCss>>>.el-upload-list__item-name {
-  width: 100px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.upCss>>>.el-upload-list__item .el-icon-close {
-  font-size: 20px;
-  z-index: 9999;
-}
-
-.addStageImg {
-  min-width: 20px;
-  min-height: 20px;
-  width: 20px;
-  height: 20px;
-  cursor: pointer;
-}
-
-.addHW {
-  width: 28px;
-  height: 28px;
-  cursor: pointer;
-}
-
-.addStageImg>img,
-.addHW>img {
-  width: 100%;
-  height: 100%;
-}
-
-.addNewPP>>>.el-dialog__body {
-  padding: 5px 20px;
-}
-
-.addNewPP>>>.el-dialog {
-  margin-top: 5vh !important;
-}
-
-.addNewPP2>>>.el-dialog__body {
-  padding: 5px 0;
-}
-
-.addNewPP2>>>.el-dialog {
-  margin-top: 5vh !important;
-}
-
-.isHeight {
-  height: 680px;
-}
-
-.toolChoose {
-  display: flex;
-  /* width: 100%; */
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.tool,
-.isToolChoose {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  width: fit-content;
-  margin: 10px 0 10px 0;
-  align-items: center;
-  border: 2px solid #dbdbdb00;
-  padding: 10px 20px;
-  border-radius: 5px;
-  cursor: pointer;
-  /* box-shadow: 0 0 2px 0px #dedede; */
-  position: relative;
-  box-sizing: border-box;
-}
-
-.tool:hover {
-  border: 2px solid #a5c7ff;
-}
-
-.tool:hover>.noCTool {
-  display: block;
-  opacity: 0.5;
-}
-
-.isToolChoose {
-  border: 2px solid #438aff !important;
-  box-shadow: 0 0 2px 0px #438aff;
-  opacity: 1 !important;
-}
-
-.isCTool,
-.noCTool {
-  width: 30px;
-  height: 30px;
-  position: absolute;
-  top: -4px;
-  right: -4px;
-}
-
-.noCTool {
-  display: none;
-}
-
-.isCTool>img,
-.noCTool>img {
-  width: 100%;
-  height: 100%;
-}
-
-.tool+.tool {
-  margin-right: 10px;
-}
-
-.whiteBIcon {
-  width: 80px;
-  cursor: pointer;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  font-size: 14px;
-}
-
-.whiteBIcon>img,
-.toolIcon>img,
-.arrow>img {
-  width: 100%;
-  height: 100%;
-}
-
-.check img {
-  width: 20px;
-  height: 20px;
-}
-
-.whiteBIcon>img {
-  box-shadow: 0px 4px 8px 0px rgb(44 133 255 / 14%);
-  border-radius: 15px;
-}
-
-.whiteBIcon>div:nth-child(2) {
-  height: 20px;
-  line-height: 20px;
-}
-
-.check {
-  /* width: 20px;
-  height: 20px; */
-  cursor: pointer;
-  margin: 10px 0 0;
-}
-
-.checkDiv {
-  display: flex;
-  align-items: center;
-}
-
-.checkDiv span {
-  margin-left: 5px;
-  color: #858585;
-}
-
-.customWidth>>>.el-dialog {
-  min-width: 600px !important;
-}
-
-.CollaborativeCss {
-  width: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  box-sizing: border-box;
-  padding: 10px 0;
-  cursor: pointer;
-}
-
-.CollaborativeCss >>> .el-tooltip {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-.CollaborativeCss2 {
-  background: #e0eafb;
-  color: #3681fc;
-  font-weight: 700;
-  border-radius: 5px;
-}
-
-
-.a_addBox {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-  /* max-height: 600px; */
-  overflow: auto;
-}
-
-.a_add_box {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 25px;
-}
-
-.a_add_head {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  margin: 10px 0 0 0;
-  font-size: 18px;
-}
-
-.a_add_checkType {
-  margin-top: 10px;
-  display: flex;
-  font-size: 14px;
-  align-items: center;
-}
-
-.a_add_checkType span {
-  box-sizing: border-box;
-  padding: 0 0 5px 0;
-  cursor: pointer;
-}
-
-.a_add_checkType span+span {
-  margin-left: 10px;
-}
-
-.a_add_checkType .active {
-  border-bottom: 2px solid #409eff;
-  color: #409eff;
-}
-
-.a_add_head .a_add_head_input {
-  /* width: 540px; */
-  width: 100%;
-}
-
-.a_add_head .a_add_head_div {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.a_add_body {
-  display: flex;
-  /* align-items: center; */
-  align-items: flex-end;
-}
-
-.a_add_input {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-}
-
-.a_add_input_choice {
-  flex-direction: column;
-  margin-right: 10px;
-}
-
-.a_add_input_choice>>>.el-radio {
-  display: flex;
-  align-items: center;
-  flex-direction: row-reverse;
-  margin: 30px 0 0 0;
-  position: relative;
-}
-
-.a_add_input_choice>>>.el-checkbox {
-  display: flex;
-  align-items: center;
-  flex-direction: row-reverse;
-  margin: 30px 0 0 0;
-  position: relative;
-}
-
-.width100 {
-  width: 100%;
-}
-
-.a_add_input .a_add_persent {
-  width: 100%;
-}
-
-.a_add_persent_div {
-  width: 100%;
-  display: flex;
-  align-items: center;
-}
-
-.a_add_persent_div span {
-  margin: 5px 0;
-}
-
-.a_add_persent_div span:nth-child(1) {
-  width: 30%;
-}
-
-.a_add_persent_div span:nth-child(2) {
-  width: 7%;
-}
-
-.a_add_persent_div span:nth-child(3) {
-  width: 40%;
-}
-
-.a_add_body_div {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  /* flex-direction: column; */
-  position: absolute;
-  right: -20px;
-  transform: translateX(100%);
-}
-
-.a_add_body_div>>>.el-button--primary {
-  background: #466b99;
-  border: none;
-}
-
-.all_choose {
-  display: flex;
-  flex-direction: row;
-  align-items: flex-start;
-  width: 100%;
-}
-
-.all_choose+.all_choose {
-  /* margin-top: 10px */
-}
-
-.all_choose>span {
-  min-width: fit-content;
-  display: block;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  margin-right: 20px;
-  font-weight: bold;
-  font-size: 14px;
-}
-
-.all_choose>>>.el-checkbox-group {
-  display: flex;
-  flex-direction: row;
-  width: 100%;
-  flex-wrap: wrap;
-  align-content: center;
-  justify-content: flex-start;
-  align-items: center;
-  margin-top: 3px;
-}
-
-.all_choose>.el-checkbox-group>>>.el-checkbox {
-  margin-bottom: 10px;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  margin-right: 10px;
-}
-
-.all_choose>.el-checkbox-group>.el-checkbox>>>.el-checkbox__label {
-  min-width: 80px;
-  overflow: hidden;
-  width: 80px;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.all_choose>.el-checkbox-group>.el-checkbox>>>.el-checkbox__label:hover {
-  width: auto;
-}
-
-.choose>div:nth-child(3)>span {
-  /* letter-spacing: 0 !important; */
-}
-
-.choose {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  height: 100%;
-  justify-content: space-evenly;
-  align-items: flex-start;
-}
-
-.both {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  width: 100%;
-  align-items: center;
-  justify-content: flex-start;
-  margin: 15px 0;
-}
-
-.notice>>>.el-dialog {
-  width: 500px !important;
-  text-align: center;
-}
-
-.notice>>>.el-button {
-  margin-top: 20px;
-}
-
-.whiteBg {
-  /* background: #fff; */
-  border-radius: 10px;
-}
-
-.wb_j_box {
-  display: flex;
-  width: 100%;
-  padding: 0 20px 0;
-  box-sizing: border-box;
-}
-
-.wb_j_box_content {
-  width: calc(100% - 55% - 100px);
-  display: flex;
-  align-items: center;
-}
-
-.wb_j_box_p_box {
-  max-width: calc(100% - 200px);
-  word-break: break-all;
-  overflow: hidden;
-  margin: 0 0 0 10px;
-  font-size: 14px;
-  color: #6e6e6e;
-  z-index: 999;
-}
-
-.chooseWho {
-  display: flex;
-  width: 410px;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: space-between;
-  padding-bottom: 10px;
-}
-
-.chooseWho>div {
-  cursor: pointer;
-  padding-bottom: 10px;
-  font-weight: bold;
-}
-
-.isChooseActive {
-  color: #3e88f4;
-  border-bottom: 2px solid #2f80f3;
-}
-
-.toolSort {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  justify-content: flex-start;
-  align-items: flex-start;
-}
-
-.toolSort>div {
-  margin-right: 10px;
-}
-
-.tools {
-  width: 100%;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-}
-
-.leftTools,
-.rightTools {
-  width: 50%;
-}
-
-.leftTools+.leftTools {
-  border-top: 1px solid #dbdbdb;
-  padding-top: 30px;
-}
-
-.rightTools {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: space-around;
-}
-
-.firstToolList {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.iconList {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  justify-content: flex-start;
-  align-items: center;
-  margin: 20px 0 5px 0;
-  width: 240px;
-  min-width: 240px;
-}
-
-.iconTool {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  justify-content: flex-start;
-  margin: 15px 10px;
-}
-
-.toolIcon {
-  width: 50px;
-}
-
-.taskBorder {
-  /* border: 1px solid #CAD1DC; */
-  border-radius: 10px;
-  margin-top: 10px;
-  min-height: 670px;
-  position: relative;
-  background: #fff;
-  padding: 20px;
-  overflow: hidden;
-  box-sizing: border-box;
-}
-
-.smallTaskBorder {
-  height: 405px;
-  min-height: 405px !important;
-  overflow: hidden;
-}
-
-/* .taskBorder>div {
-  padding: 30px 30px 10px;
-} */
-
-.addTaskBorder {
-  /* border: 2px solid #5E9AFC; */
-  border-radius: 8px;
-  margin-top: 10px;
-  cursor: pointer;
-  /* height: 50px;
-  line-height: 50px; */
-  background: #fff;
-  padding: 15px 0;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-/* .addTaskBorder>div {
-  margin: 0 auto;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.addTaskBorder>div>img {
-  width: 20px;
-}
-
-.addTaskBorder>div>span {
-  font-size: 16px;
-  margin-left: 10px;
-  color: #5E9AFC;
-} */
-
-.funBlock {
-  display: flex;
-  padding: 15px 0;
-  flex-direction: row;
-  justify-content: center;
-  align-items: center;
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  background: #fff;
-  width: 100%;
-  height: 60px;
-  z-index: 9;
-}
-
-.fold {
-  display: flex;
-  margin: 0 20px;
-  flex-direction: row;
-  align-items: center;
-  cursor: pointer;
-  color: #2b7bff;
-}
-
-.arrow {
-  margin-right: 8px;
-  width: 16px;
-  height: 16px;
-  min-width: 16px;
-  min-height: 16px;
-  background-size: 100% 100%;
-  display: block;
-  background-image: url(../../../assets/icon/new/u_up.png);
-  /* border-left: 7px solid transparent;
-  border-bottom: 7px solid #717C8D;
-  border-top: 0px solid transparent;
-  border-right: 7px solid transparent; */
-  /* box-sizing: border-box; */
-  transition: all 0.3s;
-}
-
-.arrowZ {
-  transform: rotate(180deg);
-}
-
-.addToolFun {
-  display: flex;
-  width: 150px;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-  border: 2px dashed #cad1dc;
-  border-radius: 5px;
-  height: 50px;
-  margin: 35px auto 0;
-  cursor: pointer;
-}
-
-.addToolFun2 {
-  display: flex;
-  width: 150px;
-  border: 2px dashed #cad1dc;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-  border-radius: 5px;
-  height: 50px;
-  margin: 0 auto 0;
-  cursor: pointer;
-}
-
-.addToolFun2>div,
-.addToolFun>div {
-  display: flex;
-  line-height: 50px;
-}
-
-.addToolImg {
-  width: 20px;
-  height: 20px;
-  margin-right: 10px;
-}
-
-.addToolsDia>>>.el-dialog__body {
-  padding: 20px;
-}
-
-.addToolsDia>>>.el-dialog__body>.toolChoose {
-  padding: 0;
-}
-
-.addToolsDia>>>.el-dialog__body>.toolChoose>.leftTools {
-  padding: 0;
-  border-bottom: none;
-  margin-bottom: 0;
-}
-
-.addToolsDia>>>.el-dialog__body>.toolChoose>.leftTools>.chooseWho {
-  width: 100%;
-}
-
-.lineCss>>>.el-form-item__label {
-  width: auto !important;
-}
-
-.lineCss>>>.el-form-item__content {
-  margin-left: 50px !important;
-}
-
-.newSteps {
-  display: flex;
-  width: 100% !important;
-  /* height: 80px; */
-  cursor: pointer;
-  margin: 10px 0;
-  border-radius: 10px;
-  flex-direction: row;
-  align-content: center;
-  justify-content: center;
-  align-items: center;
-  margin: 0 !important;
-}
-
-/* 评价样式 */
-.elist_css {
-  padding-bottom: 75px !important;
-}
-
-.elist_title {
-  margin-bottom: 10px;
-}
-
-.elist_input {
-  width: 100%;
-}
-
-.elist_input_box {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-}
-
-.elist_input_box+.elist_input_box {
-  margin-top: 30px;
-}
-
-.elist_input .elist_input_box input {
-  font: inherit;
-  color: currentColor;
-  width: 100%;
-  /* max-width: calc(100% - 385px); */
-  max-width: calc(100% - 150px);
-  padding: 8px 14px;
-  display: block;
-  min-width: 0;
-  outline: none;
-  border: 1px solid rgba(0, 0, 0, 0.23);
-  border-radius: 4px;
-  box-sizing: border-box;
-  background: #fff;
-  margin: 0 20px 0 0;
-}
-
-.elist_input .elist_input_box span {
-  height: 36px;
-  line-height: 36px;
-  color: rgb(82, 82, 82);
-  min-width: 80px;
-}
-
-.elist_input .elist_input_box .remove {
-  height: 20px;
-  width: 20px;
-  min-height: 20px;
-  min-width: 20px;
-  background-size: 100% 100%;
-  background-position: unset;
-  margin-left: 5px;
-}
-
-.elist_input_box>>>.el-rate {
-  display: flex;
-  height: 36px;
-  align-items: center;
-}
-
-.elist_input_box .elist_inptu_text {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  margin-top: 10px;
-}
-
-.elist_input_box .elist_inptu_text input {
-  /* width: 500px; */
-  width: 100%;
-  max-width: unset;
-}
-
-.elist_input_box>>>.el-rate__icon {
-  font-size: 24px;
-}
-
-.elist_btn {
-  margin-top: 10px;
-}
-
-.lineTitle {
-  /* margin-top: 15px; */
-  width: 110px;
-  font-size: 16px;
-  display: flex;
-  align-items: center;
-  line-height: 20px;
-}
-
-.lineTitle::before {
-  content: "";
-  display: block;
-  width: 3px;
-  height: 20px;
-  background: #0061ff;
-  border-radius: 3px;
-  margin: 0 5px 0 0;
-}
-
-.clineTitle::before {
-  content: "";
-  display: block;
-  min-width: 10px;
-  width: 10px;
-  height: 10px;
-  background: #0061ff;
-  border-radius: 50%;
-  margin: 0 5px 0 0;
-}
-
-.courseTop {
-  display: flex;
-  flex-direction: row;
-  justify-content: space-between;
-  align-items: center;
-  width: calc(100% - 40px);
-  margin: 0 auto;
-  padding: 10px 0;
-}
-
-.stepsNav {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-
-.stepsWord {
-  font-size: 18px;
-  color: #fff;
-  font-weight: bold;
-  margin-left: auto;
-  background: rgb(15, 126, 255);
-  border-radius: 5px;
-  padding: 3px 25px;
-  box-sizing: border-box;
-}
-
-.stepBox {
-  width: calc(100% - 40px);
-  height: calc(100% - 50px);
-  overflow: hidden;
-  border-radius: 5px;
-  margin: 0 auto;
-}
-
-.rightBox {
-  width: calc(100%);
-  background: #f0f2f5;
-  /* border-radius: 10px; */
-  overflow: auto;
-  height: calc(100% - 150px);
-  margin: 0 auto;
-  position: relative;
-  box-sizing: border-box;
-}
-
-.e_add_top {
-  display: flex;
-  justify-content: space-between;
-  background: #fff;
-  position: absolute;
-  right: 20px;
-  height: 50px;
-  align-items: center;
-}
-
-.e_add_title2 {
-  display: flex;
-  align-items: center;
-}
-
-.e_add_title2 span {
-  width: 40px;
-}
-
-.e_add_title {
-  display: flex;
-  align-items: center;
-  color: #b8b8b8;
-  font-size: 18px;
-  position: relative;
-  height: 40px;
-}
-
-.e_add_title span {
-  margin-right: 10px;
-}
-
-.e_add_title .el_input {
-  width: 300px;
-}
-
-.e_add_title>>>.el-input__inner {
-  width: 400px;
-}
-
-.e_add_btn {}
-
-.e_add_content {
-  display: flex;
-  width: 100%;
-}
-
-.e_add_list {
-  background: #fff;
-  height: 500px;
-  width: 210px;
-  position: relative;
-  margin: 15px 5px 0 0;
-  flex-shrink: 0;
-  display: flex;
-  flex-direction: column;
-}
-
-.e_add_list_title {
-  font-size: 20px;
-  width: 100%;
-  box-sizing: border-box;
-  padding: 15px 40px;
-  text-align: center;
-  border-bottom: 1px solid #eaeaea;
-  position: relative;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  height: 57px;
-  background: #f6f6f6;
-}
-
-.e_add_list_title span {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-
-.e_add_list_title img {
-  position: absolute;
-  right: 15px;
-  width: 25px;
-  cursor: pointer;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.e_add_list_body {
-  height: calc(100% - 187px);
-  overflow: auto;
-}
-
-.e_add_list_child {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  position: relative;
-  box-sizing: border-box;
-  padding: 15px 40px;
-  text-align: center;
-}
-
-.e_add_list_child span {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  cursor: pointer;
-}
-
-.e_add_list_child img {
-  position: absolute;
-  right: 10px;
-  width: 21px;
-  cursor: pointer;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.e_add_list_child+.e_add_list_child {
-  border-top: 1px solid #eaeaea;
-}
-
-.e_add_list_child .active {
-  color: #409eff;
-}
-
-.e_add_list_btn {
-  position: absolute;
-  bottom: 0;
-  height: 50px;
-  background: rgb(120, 120, 254);
-  width: 100%;
-  color: #fff;
-  font-size: 16px;
-  text-align: center;
-  line-height: 50px;
-  cursor: pointer;
-}
-
-.e_add_list_detail {
-  position: absolute;
-  bottom: 0;
-  height: 130px;
-  background: rgb(120, 120, 254);
-  width: 100%;
-  color: #fff;
-  font-size: 16px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.e_add_list_detail textarea {
-  height: 90%;
-  width: 95%;
-  border: none;
-  resize: none;
-  outline: none;
-  padding: 5px;
-  box-sizing: border-box;
-}
-
-.e_add_list_pbox {
-  width: 100%;
-}
-
-.e_add_list_pbox_title {
-  height: 50px;
-  background: #fff;
-  display: flex;
-  align-items: center;
-  width: 100%;
-  box-sizing: border-box;
-  padding: 0 20px;
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.type_title {
-  font-size: 18px;
-  font-weight: 700;
-}
-
-.type_content {
-  font-size: 16px;
-  margin-left: 30px;
-}
-
-.type_content span+span {
-  margin-left: 20px;
-}
-
-.type_content span {
-  cursor: pointer;
-  padding-bottom: 5px;
-  box-sizing: border-box;
-}
-
-.type_content .active {
-  color: #409eff;
-  border-bottom: 2px solid #409eff;
-}
-
-.e_add_list_pbox_content {
-  height: calc(100% - 50px);
-  display: flex;
-  align-items: center;
-  width: 100%;
-  background: #fff;
-}
-
-.mbCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-content: center;
-  align-items: flex-start;
-  justify-content: flex-start;
-}
-
-.pjCss {
-  /* width: 42%; */
-  width: calc(100% - 55%);
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-}
-
-.e_box {
-  /* display: flex; */
-  flex-wrap: wrap;
-  max-height: 500px;
-  align-items: flex-start;
-  overflow: auto;
-  width: 100%;
-}
-
-.e_card {
-  border: 1px solid #ccc;
-  background: #fff;
-  margin-right: 20px;
-  width: 270px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  border-radius: 5px;
-  margin-top: 10px;
-  text-align: center;
-}
-
-.e_card_picture {
-  margin: 10px 0;
-}
-
-.e_card_picture>img {
-  width: 50px;
-}
-
-.e_card_name {
-  width: 100%;
-  padding: 0 10px;
-  box-sizing: border-box;
-  margin-bottom: 10px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.e_card_time {
-  width: 100%;
-  padding: 0 10px;
-  box-sizing: border-box;
-  font-size: 15px;
-  color: #c3c3c3;
-  margin-bottom: 10px;
-}
-
-.e_card_btn {
-  height: 40px;
-  display: flex;
-  align-items: center;
-  width: 100%;
-  background: rgb(244, 244, 244);
-}
-
-.e_card_btn:hover {
-  background: rgb(221 221 221);
-}
-
-.e_card_btn span {
-  flex: 1 1 auto;
-  text-align: center;
-  cursor: pointer;
-}
-
-.addEva {
-  border: 1px solid #ccc;
-  background: #fff;
-  margin-right: 20px;
-  width: 270px;
-  height: 149px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  border-radius: 5px;
-  margin-top: 10px;
-  text-align: center;
-  cursor: pointer;
-  justify-content: center;
-}
-
-.addEva>img {
-  width: 50px;
-  object-fit: cover;
-}
-
-.uploadFm {
-  border: 1px dashed #ccc;
-  width: 100%;
-  height: 140px;
-  position: relative;
-  cursor: pointer;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  font-size: 14px;
-  color: #6e6e6e;
-  position: relative;
-}
-
-.cover_p {
-  width: 100% !important;
-  height: 100%;
-  object-fit: cover;
-}
-
-.uploadFm2:hover .cover_mask {
-  display: flex !important;
-}
-
-.cover_mask {
-  display: none;
-  width: 100%;
-  height: 100%;
-  position: absolute;
-  background: #00000054;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-}
-
-.cover_mask>img {
-  width: 30px;
-}
-
-.cover_mask>span {
-  color: #fff;
-  font-size: 12px;
-}
-
-.uploadFm>img {
-  width: 50px;
-}
-
-.fileCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: space-around;
-  align-items: center;
-  padding-top: 15px;
-}
-
-.fileCss>div {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.fileCss .spanName {
-  margin-top: 10px;
-}
-
-.sysPicBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  align-content: flex-start;
-  height: 435px;
-  overflow: auto;
-  position: relative;
-}
-
-.picNone {
-  position: absolute;
-  left: 50%;
-  top: 45%;
-  transform: translate(-50%, -50%);
-  width: fit-content;
-  color: #9c9c9c;
-}
-
-.sysPic {
-  width: 200px;
-  height: 115px;
-  margin: 0 20px 20px 0;
-  cursor: pointer;
-}
-
-.sysPic>img,
-.isSysPic>img,
-.deletePic>img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.isSysPic {
-  width: 200px;
-  height: 115px;
-  position: relative;
-}
-
-.deletePic {
-  width: 20px;
-  height: 20px;
-  position: absolute;
-  top: 0;
-  right: 0;
-  cursor: pointer;
-}
-
-.select_box1 {
-  height: 100%;
-}
-
-.select_box1_img {
-  background: #fff;
-  border-radius: 5px;
-  padding: 15px;
-  box-sizing: border-box;
-  margin-bottom: 20px;
-}
-
-.select_box1_title {
-  padding: 0 0 15px 0;
-  border-bottom: 1px solid #eee;
-  margin-bottom: 15px;
-}
-
-.select_box1_title span:nth-child(1) {
-  font-size: 16px;
-  margin-right: 20px;
-  color: #000;
-}
-
-.select_box1_title span:nth-child(2) {
-  font-size: 14px;
-  color: rgb(112, 112, 112);
-}
-
-.select_box1_add_img {}
-
-.select_box1_select {
-  background: #fff;
-  border-radius: 5px;
-  padding: 15px;
-  box-sizing: border-box;
-  height: calc(100% - 200px);
-  overflow: auto;
-}
-
-.select_box2 {
-  height: 100%;
-}
-
-.select_box2_title {
-  background: #fff;
-  border-radius: 5px;
-  padding: 5px 10px;
-  box-sizing: border-box;
-  margin-bottom: 10px;
-}
-
-.select_box2_box {
-  display: flex;
-  height: calc(100% - 30px);
-}
-
-.select_box2_img {
-  width: calc(100% - 310px);
-  height: 100%;
-  overflow: auto;
-  background: #fff;
-  border-radius: 5px;
-}
-
-.select_box2_img img {
-  width: 100%;
-}
-
-.select_box2_answer {
-  background: #fff;
-  margin-left: 10px;
-  border-radius: 5px;
-  width: 300px;
-  overflow: auto;
-  height: 100%;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  padding-top: 10px;
-  box-sizing: border-box;
-}
-
-.select_box2_answer_box {
-  margin: 0 0 10px 0;
-  width: 85%;
-}
-
-.rate_textarea {
-  font: inherit;
-  color: currentColor;
-  width: 100%;
-  padding: 8px 14px;
-  display: block;
-  min-width: 0;
-  outline: none;
-  border: 1px solid rgba(0, 0, 0, 0.23);
-  border-radius: 4px;
-  box-sizing: border-box;
-  background: #fff;
-  margin: 0 20px 0 0;
-  resize: none;
-}
-
-.select_answer_title {
-  text-align: left;
-  width: 85%;
-  margin-bottom: 10px;
-  font-size: 18px;
-  color: #8e8e8e;
-}
-
-.mask {
-  background-color: rgb(0 0 0 / 30%);
-  /* position: fixed; */
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  z-index: 90;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.progressBox {
-  width: 300px;
-  height: 150px;
-  background: #fff;
-  border-radius: 10px;
-  box-shadow: 0 0 6px 1px #bfbfbf;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-  position: relative;
-  color: #6c6c6c;
-}
-
-.progressBox>>>.el-progress-bar__outer {
-  background-color: #d1dfff !important;
-}
-
-.progressBox .lbox {
-  height: 50px;
-  font-size: 19px;
-  display: flex;
-  align-items: center;
-  color: #747474;
-}
-
-.progressBox .lbox img {
-  width: 40px;
-  margin-right: 20px;
-}
-
-.closeCss {
-  position: absolute;
-  top: 8px;
-  right: 8px;
-  cursor: pointer;
-  width: 20px;
-  height: 20px;
-}
-
-.closeCss>img {
-  width: 100%;
-  height: 100%;
-}
-
-.updateTips::before {
-  content: "协同编辑课程暂不支持修改基本信息,只支持修改阶段内容。";
-  font-size: 14px;
-  margin-left: 20px;
-  font-weight: 400;
-  color: #ff3a3a;
-  margin-bottom: 10px;
-  display: block;
-}
-
-.updateMask {
-  width: 100%;
-  z-index: 3;
-  top: 0;
-  position: absolute;
-  /* background-color: rgba(0,0,0,.3); */
-}
-
-.t_j_box {
-  display: flex;
-}
-
-.t_j_box span:nth-child(1) {
-  width: 15%;
-  overflow: hidden;
-  margin-right: 10px;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.t_j_box span:nth-child(2) {
-  width: 30%;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  margin-right: 10px;
-}
-
-.t_j_box span:nth-child(3) {
-  max-width: calc(55% - 20px);
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.sentenBox {
-  background: #fff;
-  height: 600px;
-  overflow: auto;
-  background-image: url("../../../assets/icon/conSentences/csBg.png");
-  background-position: 102%;
-  background-repeat: no-repeat;
-  background-size: 60%;
-}
-
-.sentenBox>.sentenContent {
-  padding-bottom: 10px;
-  width: 97%;
-  margin: 0 auto;
-}
-
-.sentenBox>.sentenContent+.sentenContent {
-  border-top: 1px solid #cbcbcb;
-}
-
-.addSen {
-  background: #409efe;
-  width: 90px;
-  color: #fff;
-  height: 35px;
-  text-align: center;
-  line-height: 35px;
-  border-radius: 5px;
-  float: right;
-  margin: 10px 20px 0 0;
-  cursor: pointer;
-}
-
-.sentenTop {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.sentenTop::before {
-  content: attr(index);
-  background: #3681fc;
-  border-radius: 50%;
-  color: #fff;
-  width: 25px;
-  height: 25px;
-  min-width: 25px;
-  min-height: 25px;
-  text-align: center;
-  line-height: 25px;
-  margin-right: 5px;
-}
-
-.sentenTop>div:nth-child(2) {
-  width: 300px;
-  margin: 0 15px;
-}
-
-.sentenTop>div:nth-child(3) {
-  background: #409efe;
-  color: #fff;
-  width: 65px;
-  height: 35px;
-  text-align: center;
-  line-height: 35px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.cardList {
-  padding: 30px 0 20px 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  align-items: center;
-  box-sizing: border-box;
-  border-bottom: 1px solid #f4f4f4;
-  width: 98%;
-  margin: 0 auto;
-}
-
-.rightCardList {
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.cardBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  align-items: center;
-  align-content: center;
-}
-
-.isCard,
-.isCard1 {
-  width: auto;
-  padding: 0 20px;
-  height: 65px;
-  text-align: center;
-  line-height: 65px;
-  font-size: 14px;
-  cursor: pointer;
-  background-image: url("../../../assets/icon/conSentences/titleBorder.png");
-  background-size: 100% 100%;
-  position: relative;
-  z-index: 99;
-}
-
-.isCard1 {
-  background-image: url("../../../assets/icon/conSentences/answerBorder.png");
-}
-
-.isCard:hover .deleteWord {
-  display: block;
-}
-
-.isCard>div:nth-child(1),
-.isCard1>div:nth-child(1) {
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  width: 100%;
-  margin: 0 auto;
-}
-
-.card {
-  width: 140px;
-  height: 65px;
-}
-
-.card>img {
-  width: 100%;
-  height: 100%;
-}
-
-.rightCardBox {
-  width: 98%;
-  margin: 10px auto 0;
-}
-
-.rightCardBox>div:nth-child(1) {
-  margin-bottom: 10px;
-}
-
-.cardCss {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  border-bottom: 3px solid #b4c3d3;
-  padding: 0 0 5px 0;
-  /* margin-right: 10px; */
-}
-
-.cardCss>div:nth-child(2) {
-  background: #5b7b9d;
-  color: #fff;
-  width: 20px;
-  height: 20px;
-  border-radius: 50%;
-  text-align: center;
-  line-height: 20px;
-}
-
-.sentenTopBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  justify-content: space-between;
-  padding: 55px 0 0 20px;
-  box-sizing: border-box;
-  width: 85%;
-}
-
-.rb_c_ai_box,
-.stepsBottom {
-  width: 100%;
-  /* box-shadow: 0 0 10px 10px #f7f7f7; */
-  /* background: #f7f7f7; */
-  border-radius: 10px;
-  overflow: hidden;
-  /* height: 100%; */
-  height: calc(100% - 55px);
-}
-
-.navTop {
-  background: #53749b;
-  color: #fff;
-  height: 40px;
-  line-height: 40px;
-  padding-left: 15px;
-  font-size: 18px;
-}
-
-.navBottom {
-  /* background: #6b91b7; */
-  height: 100%;
-  overflow: auto;
-  padding: 10px 0;
-}
-
-.navStage {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  padding: 10px 10px 10px 0;
-  cursor: pointer;
-  background: #ffffff;
-  width: 95%;
-  margin: 5px auto 5px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  flex-wrap: wrap;
-  position: relative;
-}
-
-.navStage:hover>.chapter_upload_drag {
-  display: block;
-}
-
-.navTask:hover>.chapter_upload_drag {
-  display: block;
-}
-
-.chapter_upload:hover>.chapter_upload_drag {
-  display: block;
-}
-
-.navStage::before {
-  content: "";
-  display: block;
-  width: 16px;
-  height: 16px;
-  background-image: url(../../../assets/icon/new/icon_stage.png);
-  background-size: 100%;
-  margin-left: 25px;
-}
-
-.navStage .chapter_unit_open {
-  content: "";
-  display: block;
-  width: 16px;
-  height: 16px;
-  background-image: url(../../../assets/icon/new/down.png);
-  transform: rotate(-90deg);
-  background-size: 100%;
-  margin-left: 10px;
-  transition: all 0.5s;
-}
-
-.isNavStageOpen .chapter_unit_open {
-  transform: rotate(0deg);
-}
-
-.isNavStage {
-  background: #0061ff;
-}
-
-.isNavStage::before {
-  background-image: url(../../../assets/icon/new/icon_stage_a.png);
-}
-
-.isNavStage .chapter_unit_open {
-  background-image: url(../../../assets/icon/new/downC.png);
-}
-
-.isNavStage .nt_taskName {
-  font-weight: bold !important;
-  color: #ffffff !important;
-}
-
-.isNavStage .nt_taskTitle {
-  font-weight: bold !important;
-  color: #fff !important;
-}
-
-.navStage .nt_taskBox {
-  width: calc(100% - 68px);
-  padding: 0 0 0 5px;
-  box-sizing: border-box;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.navStage .nt_taskTitle {
-  color: #060e17;
-  line-height: 25px;
-  font-size: 16px;
-}
-
-.navStage .nt_taskName {
-  max-width: calc(100% - 82px);
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 16px;
-  color: #060e17;
-}
-
-.navTask {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  padding: 10px 10px 10px 0;
-  cursor: pointer;
-  background: #ffffff;
-  width: 95%;
-  margin: 5px auto 5px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  flex-wrap: wrap;
-  position: relative;
-}
-
-.navTask .chapter_upload_open {
-  content: "";
-  display: block;
-  width: 16px;
-  height: 16px;
-  background-image: url(../../../assets/icon/new/icon_arrow.png);
-  background-size: 100%;
-  margin-left: 23px;
-}
-
-.noImage .chapter_upload_open {
-  display: none;
-  background-image: unset !important;
-}
-
-.isNavOpen .chapter_upload_open {
-  /* background-image: url(../../../assets/icon/new/icon_arrow_a.png) !important; */
-  transform: rotate(90deg);
-}
-
-.isNavTask .chapter_upload_open {
-  background-image: url(../../../assets/icon/new/icon_arrow_a.png) !important;
-  transform: rotate(-90deg);
-}
-
-.isNavTask.isNavOpen .chapter_upload_open {
-  transform: rotate(0deg);
-}
-
-.dragOverTop {
-  border-top: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-  margin-top: 10px;
-}
-
-.dragOverBottom {
-  border-bottom: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-  margin-top: 10px;
-}
-
-.dragOverTop2 {
-  border-top: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-}
-
-.dragOverBottom2 {
-  border-bottom: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-}
-
-.isNavTask {
-  /* background: #3681FC; */
-  background: #eef3fb;
-}
-
-.isNavTask>.chapter_upload_drag {
-  background-image: url(../../../assets/icon/new/icon_course_drag_active.png) !important;
-}
-
-.isNavTask .nt_taskName {
-  /* color: #fff !important; */
-  font-weight: bold !important;
-  color: #0061ff !important;
-}
-
-.isNavTask .nt_taskTitle {
-  /* color: #AECCFE !important; */
-  font-weight: bold !important;
-  color: #0061ff !important;
-}
-
-.navTask .nt_taskBox {
-  width: calc(100% - 40px);
-  padding: 0 0 0 5px;
-  box-sizing: border-box;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.navTask .nt_taskTitle {
-  /* color: #717C8D; */
-  color: #060e17;
-  line-height: 25px;
-  font-size: 16px;
-  /* min-width: 66px; */
-}
-
-.navTask .nt_taskName {
-  /* color: #fff; */
-  /* max-width: 130px; */
-  /* width: 100%; */
-  max-width: calc(100% - 66px);
-  font-size: 16px;
-  color: #060e17;
-  /* color: #0E1E33; */
-}
-
-.navTask .nt_taskName span {
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  display: block;
-}
-
-.gjBox {
-  width: calc(100% - 25px);
-  padding: 0 0 0 0;
-  box-sizing: border-box;
-  border-left: 1px solid #cad1dc;
-  margin-left: 25px;
-}
-
-.gjBox>div {
-  display: flex;
-  align-items: center;
-}
-
-.gjBox>div::before {
-  content: "";
-  height: 1px;
-  width: 10px;
-  background: #cad1dc;
-  display: block;
-  margin-right: 5px;
-}
-
-.gjCss {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  padding: 15px 0;
-  box-sizing: border-box;
-  font-size: 14px;
-  cursor: pointer;
-}
-
-.isGjCss {
-  color: #0061ff;
-}
-
-.groupBox {}
-
-.groupContent+.groupContent {
-  margin-top: 30px;
-}
-
-.groupTitle {
-  font-size: 24px;
-  color: rgb(80, 80, 80);
-  margin-bottom: 20px;
-}
-
-.groupName {
-  display: flex;
-  align-items: center;
-}
-
-.groupn {
-  font-size: 15px;
-  margin-right: 10px;
-}
-
-.groupName+.groupName {
-  margin-top: 15px;
-}
-
-.groupBtn {
-  margin-left: 10px;
-}
-
-.groupContent>>>.el-input-number.is-without-controls .el-input__inner {
-  text-align: left;
-}
-
-.radioBox>div {
-  margin: 10px 0 0 10px;
-}
-
-.radioBox>>>.el-radio__input,
-.radioBox>>>.el-checkbox__inner {
-  margin-left: 10px;
-}
-
-.radioBox>>>.el-radio__label,
-.radioBox>>>.el-checkbox__label {
-  display: flex;
-  align-items: center;
-}
-
-.inImg {
-  width: 50px;
-}
-
-.inImg>img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.upCss>>>.el-upload-list--picture .el-upload-list__item {
-  height: auto;
-  padding: 10px;
-  margin: 0;
-}
-
-.upCss>>>.el-upload-list {
-  width: 100%;
-}
-
-.upCss>>>.el-upload-list--picture .el-upload-list__item-thumbnail {
-  width: 100%;
-  height: 120px;
-  object-fit: contain;
-  background: unset;
-  margin-left: 0;
-}
-
-.upCss>>>.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name {
-  display: none;
-}
-
-.tcMember+.tcMember::before {
-  content: "、";
-}
-
-.xzUpImg {
-  width: 25px;
-  height: 25px;
-  min-width: 25px;
-  min-height: 25px;
-  cursor: pointer;
-  margin: 0 10px;
-}
-
-.xzUpImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.closeCss {
-  position: absolute;
-  top: 8px;
-  right: 8px;
-  cursor: pointer;
-  width: 20px;
-  height: 20px;
-}
-
-.closeCss>img {
-  width: 100%;
-  height: 100%;
-}
-
-.moveBtn {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  width: 55px;
-}
-
-.timuUpImg {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  width: 100%;
-  margin-right: 10px;
-}
-
-.timuUpImg>div:nth-child(1) {
-  margin-right: 10px;
-  display: flex;
-  align-items: center;
-  width: 100%;
-}
-
-.timuImgBox {
-  margin: 10px 0;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: wrap;
-  align-items: flex-start;
-}
-
-.timuImg {
-  width: 100px;
-  margin: 5px 0;
-  cursor: pointer;
-  position: relative;
-}
-
-.timuImg:hover .deleteWord {
-  display: block;
-}
-
-.deleteWord {
-  width: 25px;
-  height: 25px;
-  position: absolute;
-  right: -5px;
-  top: -5px;
-  cursor: pointer;
-  display: none;
-}
-
-.timuImg>img,
-.deleteWord>img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.e_add_delete {
-  cursor: pointer;
-  margin-left: 10px;
-}
-
-.pType_box {
-  margin-top: 30px;
-  align-items: flex-end;
-}
-
-.noneBox {
-  height: 200px;
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-  /* margin-top: 150px; */
-}
-
-.noneBox>img {
-  width: 95px;
-}
-
-.noneBox>span {
-  margin-top: 10px;
-  color: #717c8d;
-}
-
-.rb_c_box {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  /* padding: 20px; */
-  box-sizing: border-box;
-  justify-content: space-between;
-}
-
-.rb_c_box_left {
-  height: 100%;
-  background: #fff;
-  width: 270px;
-  min-width: 270px;
-  border-radius: 8px;
-  margin-right: 10px;
-}
-
-.rb_c_box_right {
-  height: 100%;
-  width: calc(100%);
-  overflow: hidden;
-}
-
-.rb_c_box_btn {
-  display: flex;
-  justify-content: flex-start;
-  height: 50px;
-  align-items: center;
-}
-
-.rb_c_box_right>.basic_box {
-  /* background: #fff; */
-  border-radius: 0;
-  height: calc(100% - 0px);
-  overflow: auto;
-  padding: 0;
-}
-
-.textarea_css {
-  display: block;
-  resize: none;
-  padding: 10px 15px;
-  line-height: 1.5;
-  box-sizing: border-box;
-  width: 100%;
-  font-size: 14px;
-  color: #606266;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #dcdfe6;
-  border-radius: 4px;
-  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
-  outline: none;
-  overflow: hidden;
-  height: 46px;
-  font-family: "Microsoft YaHei";
-}
-
-.textarea_css::-webkit-input-placeholder {
-  color: #c0c4cc;
-}
-
-.textarea_css:focus {
-  border-color: #409eff;
-  outline: 0;
-}
-
-.addEditor>>>.text {
-  height: auto;
-  min-height: 100px;
-}
-
-.addEditor>>>.w-e-text-container {
-  min-height: 100px;
-}
-
-.moveBtn2 {
-  flex-direction: column;
-  width: fit-content;
-  margin: 0 10px 0 10px;
-}
-
-.moveBtn2 .chapter_upload_down,
-.moveBtn2 .chapter_upload_up {
-  width: 16px;
-  height: 16px;
-}
-
-.moveBtn2 .chapter_upload_up::after,
-.moveBtn2 .chapter_upload_down::after {
-  width: 10px;
-  height: 10px;
-}
-
-.fullStyle>>>.el-dialog__body {
-  height: calc(100% - 125px) !important;
-  box-sizing: border-box;
-}
-
-.fullStyle1>>>.el-dialog__body {
-  height: auto !important;
-}
-
-.fullStyle>>>.el-dialog {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 !important;
-}
-
-.fullStyle {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 auto !important;
-}
-
-.wb_j_box_btn {
-  width: calc(100% - 30px);
-  display: flex;
-  height: 40px;
-  border: 1.5px solid #cad1dc;
-  border-radius: 4px;
-  box-sizing: border-box;
-  align-items: center;
-  font-size: 14px;
-  cursor: pointer;
-  overflow: hidden;
-}
-
-.wb_j_box_btn:hover {
-  border: 1.5px solid #0061ff;
-}
-
-.wb_j_box_title {
-  background: #f0f4fa;
-  height: 100%;
-  line-height: 40px;
-  width: 90px;
-  text-align: center;
-  color: #060e17;
-  border-right: 1.5px solid #cad1dc;
-  box-sizing: border-box;
-}
-
-.wb_j_box_btn_c {
-  width: calc(100% - 90px);
-  padding: 0 35px 0 10px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-.wb_j_box_span {
-  width: 100%;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  word-wrap: break-word;
-  color: #717c8d;
-}
-
-.wb_j_box_arrow {
-  content: "";
-  width: 14px;
-  height: 14px;
-  background: url(../../../assets/icon/new/u_arrow.png);
-  background-size: 100% 100%;
-  position: absolute;
-  right: 12px;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.check_classBox {
-  height: 400px;
-  display: flex;
-  border-top: 1.5px solid #e7ebf1;
-  border-bottom: 1.5px solid #e7ebf1;
-}
-
-.check_class_right {
-  width: 130px;
-  border-right: 1px solid #e7ebf1;
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  height: 100%;
-  overflow: auto;
-  padding: 15px 0;
-  box-sizing: border-box;
-}
-
-.check_class {
-  width: 85%;
-  border-radius: 5px;
-  height: 30px;
-  min-height: 30px;
-  line-height: 30px;
-  text-align: center;
-  padding: 0 10px;
-  box-sizing: border-box;
-  cursor: pointer;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.check_class.activeX {
-  background: #e0eafb;
-  color: #3681fc;
-  font-weight: 700;
-}
-
-.check_class+.check_class {
-  margin-top: 15px;
-}
-
-.check_class_left {
-  background: #fafafa;
-  width: calc(100% - 130px);
-  padding: 15px;
-  box-sizing: border-box;
-}
-
-.check_class_all_box {
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.all_check {
-  display: flex;
-  align-items: center;
-  padding: 2px 0 0;
-  margin-left: 10px;
-}
-
-.all_check>>>.el-checkbox__label {
-  line-height: 18px;
-}
-
-.check_class_left_title {
-  font-size: 16px;
-  font-weight: 700;
-}
-
-.check_class_item {
-  display: flex;
-  flex-wrap: wrap;
-  height: calc(100% - 45px);
-  overflow: auto;
-  justify-content: flex-start;
-  align-items: flex-start;
-  align-content: flex-start;
-}
-
-.class_item:first-child {
-  /* margin: 0 15px 15px 67px; */
-}
-
-.class_item {
-  margin: 0 15px 15px 0;
-}
-
-.class_item:hover>>>.el-checkbox__label {
-  color: #409eff;
-}
-
-.class_item>>>.el-checkbox__label {
-  color: #0e1e33;
-}
-
-.class_item:hover>>>.el-checkbox__inner {
-  border-color: #409eff;
-}
-
-.class_item>>>.el-checkbox,
-.class_item>>>.el-checkbox__input {
-  display: flex;
-  align-items: center;
-}
-
-.taskTitle {
-  font-size: 20px;
-  font-weight: bold;
-  margin-bottom: 35px;
-}
-
-.taskTitle:after {
-  content: "";
-  width: 100%;
-  display: block;
-  height: 1px;
-  background: #cad1dc;
-  position: absolute;
-  left: 0;
-  margin: 15px 0 0;
-}
-
-.eva_btn_box {
-  margin: 20px 0px 0 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  justify-content: space-between;
-  width: 100%;
-}
-
-.eva_btn_left_box {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.addTypeChoose {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  margin: 15px 0;
-}
-
-.addTypeBox {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.addTypeChoose {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  margin: 15px 0;
-}
-
-.buchong_box {
-  background: #E0EAFB66;
-  width: calc(100% - 20px);
-  min-height: 50px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin: 0 auto;
-}
-
-.outline {
-  width: calc(100% - 40px);
-  margin: 0 auto;
-}
-
-.task_outline {
-  width: calc(100% - 40px);
-  margin: 0 auto;
-}
-
-.outline_box+.outline_box {
-  margin: 30px 0 0px;
-}
-
-.outline_task {
-  display: flex;
-  align-items: center;
-  margin-bottom: 10px;
-}
-
-.outline_btn{
-  display: flex;
-  align-items: center;
-  min-width: fit-content;
-  margin-left: 10px;
-}
-
-.outline_task .title {
-  font-size: 18px;
-  font-weight: bold;
-  min-width: 80px;
-}
-
-.op_task_box,
-.op_tool_box,
-.outline_detail {
-  position: relative;
-}
-
-.op_task_box:hover .op_box,
-.op_tool_box:hover .op_box,
-.outline_detail:hover .op_box {
-  display: flex
-}
-
-.op_box {
-  position: absolute;
-  bottom: 10px;
-  display: none;
-  align-items: center;
-  justify-content: space-between;
-  width: calc(100% - 20px);
-  left: 50%;
-  transform: translateX(-50%);
-}
-
-.op_box .op_remark {
-  color: #8E8E8E;
-  font-size: 14px;
-}
-
-.rb_c_nav {
-  width: calc(100% - 20px);
-  margin: 15px auto 0;
-  font-size: 18px;
-}
-
-.rb_c_nav span {
-  cursor: pointer;
-}
-
-.rb_c_nav span+span {
-  margin-left: 10px;
-}
-
-.rb_c_nav span.active {
-  color: #0061FF
-}
-
-.text_panel>>>.text {
-  height: 400px;
-}
-
-.markBox{
-  padding: 20px 14px;
-  line-height: 29px;
-  font-size: 16px;
-  background: #f4f4f4;
-  border-radius: 5px;
-}
-
-.info_box_t{
-  display: flex;
-  align-items: center;
-}
-
-.info_box_t + .info_box_t{
-  margin-top: 10px;
-}
-
-.info_box_t_box{
-  display: flex;
-  align-items: center;
-}
-
-.info_box_t_box + .info_box_t_box{
-  margin-left: 10px;
-}
-
-.info_box_t_box > span{
-  width: fit-content
-}
-
-.info_box_t_box > input{
-  width: 150px !important; 
-  margin: 0 5px 0 0;
-}
-
-
-.mode_box{
-  display: flex;
-  align-items: center;
-}
-
-.mode_box > span{
-  padding: 0px 5px;
-  cursor: pointer;
-}
-
-.mode_box > span.active{
-  color: #409eff;
-}
-
-.chapter_upload_check {
-  width: 15px;
-  height: 15px;
-  cursor: pointer;
-  background-image: url('../../../assets/icon/check.png');
-  background-size: 100% 100%;
-}
-
-.chapter_upload_check.checked{
-  background-image: url('../../../assets/icon/checked.png');
-}
-
-.ruleBtn {
-  height: 36px;
-  line-height: 36px;
-  cursor: pointer;
-  color: #0061FF;
-}
-</style>

+ 0 - 19734
src/components/pages/aiAddCourse/addCourseX.vue

@@ -1,19734 +0,0 @@
-<template>
-  <div class="pb_content" style="background: #f0f2f5" v-loading="loading" element-loading-text="小可正在努力生成中,请稍等...">
-    <div class="pb_content_body" style="position: relative; margin: 0">
-      <div class="right" :style="{width:istemplate == 1 ? 'calc(100% - 300px)' : '100%'}">
-        <div class="courseTop">
-          <div class="stepsNav">
-            <el-breadcrumb separator-class="el-icon-arrow-right">
-              <el-breadcrumb-item :to="{
-                path:
-                  '/course?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&org=' +
-                  org +
-                  '&role=' +
-                  role,
-              }">课程管理</el-breadcrumb-item>
-              <el-breadcrumb-item>
-                <span style="color: rgb(15, 126, 255)">添加课程</span>
-              </el-breadcrumb-item>
-            </el-breadcrumb>
-          </div>
-          <div class="r_pub_button_retrun" @click="retrunCourse">返回</div>
-        </div>
-        <!-- <div style="display: flex; margin-top: 20px; position: relative"> -->
-        <!-- @mouseenter="stepDisplay(true)"
-              @mouseleave="stepDisplay(false)" -->
-        <div ref="stepBox" class="stepBox" :style="{overflow:istemplate == 1 ? 'auto' : 'hidden'}">
-          <div class="stepBg" v-if="false">
-            <div :class="{ stepTop: isStepDisplay, stepTop2: !isStepDisplay }">
-              <div v-if="steps > 0 && isStepDisplay" class="first" @click="navSteps(1)">
-                <div>
-                  <img src="../../../assets/icon/first.png" alt />
-                </div>
-                <div>填写基本信息</div>
-              </div>
-              <div v-else-if="isStepDisplay" class="firstNo" @click="navSteps(1)">
-                <div>
-                  <img src="../../../assets/icon/firstNo.png" alt />
-                </div>
-                <div>填写基本信息</div>
-              </div>
-              <div class="stepBorder" :class="{ 'border-active': steps > 1 }" v-if="cidType === 0 && isStepDisplay">
-              </div>
-              <!-- <div
-                v-if="steps > 1 && cidType === 0 && isStepDisplay"
-                class="second"
-                @click="navSteps(2)"
-              >
-                <div style="margin: 5px 10px 0 0; width: 2rem">
-                  <img src="../../../assets/icon/second.png" alt />
-                </div>
-                <div>选择课程模板</div>
-              </div>
-              <div
-                v-else-if="cidType === 0 && isStepDisplay"
-                class="secondNo"
-                @click="navSteps(2)"
-              >
-                <div>
-                  <img src="../../../assets/icon/secondNo.png" alt />
-                </div>
-                <div>选择课程模板</div>
-              </div> -->
-              <!-- <div
-                v-if="isStepDisplay"
-                class="stepBorder"
-                :class="{ 'border-active': steps > 2 }"
-              ></div> -->
-              <div v-if="steps > 2 && isStepDisplay" class="third" @click="navSteps(3)">
-                <div>
-                  <img src="../../../assets/icon/third.png" alt />
-                </div>
-                <div>上传课程内容</div>
-              </div>
-              <div v-else-if="isStepDisplay" class="thirdNo" @click="navSteps(3)">
-                <div>
-                  <img src="../../../assets/icon/thirdNo.png" alt />
-                </div>
-                <div>上传课程内容</div>
-              </div>
-              <div v-if="isStepDisplay" class="stepBorder" :class="{ 'border-active': steps > 3 }"></div>
-              <div v-if="steps > 3 && isStepDisplay" class="four">
-                <div>
-                  <img src="../../../assets/icon/four.png" alt />
-                </div>
-                <div>上传完成</div>
-              </div>
-              <div v-else-if="isStepDisplay" class="fourNo">
-                <div>
-                  <img src="../../../assets/icon/fourNo.png" alt />
-                </div>
-                <div>上传完成</div>
-              </div>
-            </div>
-          </div>
-          <div class="rightBox" :key="updateKey" ref='scrollContainer' v-if="steps == 1" @mousewheel="scrollChange"
-            style="padding: 0" :style="{
-              height:
-                !isStepDisplay && !isBtnDisplay
-                  ? istemplate == 1 ? 'auto' : 'calc(100% - 20px)'
-                  : istemplate == 1 ? 'auto' : 'calc(100% - 100px)',
-            }">
-            <div class="updateMask" :style="{
-              height: rightBoxHeight ? rightBoxHeight + 'px' : '100%',
-            }" v-if="cid && userid != courseUserid && role != '1'"></div>
-            <div class="whiteBg" style="background: unset; padding: 0">
-              <div>
-                <div class="basic_box" style="padding: 0">
-                  <div class="big_box">
-                    <div class="left_first">
-                      <div :class="{
-                        updateTips:
-                          cid && userid != courseUserid && role != '1',
-                      }">
-                        <div style="width: 100%">
-                          <div class="course_input_box">
-                            <div class="bb_courseIcon">
-                              <img src="../../../assets/icon/new/course.png" />
-                            </div>
-                            <input type="text" placeholder="请输入课程名称" class="binfo_input" v-model="courseName" style="
-                                border: 1.5px solid rgb(202, 209, 220);
-                                margin: 0px 10px 0px 0px;
-                                border-radius: 5px;
-                                font-weight: 600;
-                                padding: 12px 14px 12px 71px;
-                              " @change="setCover" />
-                            <el-switch v-model="isTeacherSee" active-text="是否公开此课程"
-                              style="justify-content: center; min-width: 150px"></el-switch>
-                            <el-switch v-model="isFileSearch" active-text="是否开启智能检索"
-                              style="justify-content: center; min-width: 175px"></el-switch>
-                          </div>
-                        </div>
-                      </div>
-                      <div class="pType_box all_choose" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-                        <span>类型</span>
-                        <!-- 学科+ 主题+  未来+ -->
-                        <el-radio-group @change="CourseType2Change" v-model="pTypeCheckName"
-                          style="display: flex; align-items: center">
-                          <div class="all_choose" style="width: 100px" v-for="(item, index) in CourseType2"
-                            :key="index">
-                            <el-radio :label="item.name">{{
-                              item.name
-                              }}</el-radio>
-                          </div>
-                        </el-radio-group>
-                      </div>
-                      <div class="both">
-                        <div class="choose">
-                          <div class="all_choose" v-for="(item, index) in CourseType[0]" :key="index">
-                            <span v-if="
-                              CourseTypeJson[item.id].length > 0 &&
-                              (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
-                                ? pTypeCheck.indexOf(item.id) != -1
-                                : true)
-                            ">{{ item.name }}:</span>
-                            <el-checkbox-group v-model="courseTypeId" v-if="
-                              CourseTypeJson[item.id].length > 0 &&
-                              (oid == '69893dca-1d47-11ed-8c78-005056b86db5'
-                                ? pTypeCheck.indexOf(item.id) != -1
-                                : true)
-                            ">
-                              <el-checkbox v-for="item1 in CourseTypeJson[item.id]" :key="item1.id" :label="item1.id">{{
-                                item1.name }}</el-checkbox>
-                            </el-checkbox-group>
-                            <!-- <div
-                              v-else
-                              style="font-size: 14px; margin-left: -8px"
-                            >
-                              暂无
-                            </div> -->
-                          </div>
-                        </div>
-                      </div>
-                      <div class="info_box_t" v-if="templatePan.includes(templateid)">
-                        <div class="info_box_t_box">
-                          <span>课程节数:</span>
-                          <input type="text" placeholder="请输入课程节数" class="binfo_input" v-model="courseJie" @change="numberPanJie"/>
-                          <span>节</span>
-                        </div>
-                        <div class="info_box_t_box">
-                          <span>课程时长:</span>
-                          <input type="text" placeholder="请输入课程节数" class="binfo_input" v-model="courseTime"  @change="numberPanTime"/>
-                          <span>min</span>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="right_first" v-loading="imageloading2">
-                      <!-- <div class="ai_box">
-                      <div class="ai_content" @click="openAI"><img src="../../../assets/icon/new/ai.png"/><span>AI共创</span></div>
-                    </div> -->
-                      <div class="c_info_title" style="padding: 0 0 15px; margin: 0 auto 0 0">
-                        上传封面
-                      </div>
-                      <div style="width: 100%">
-                        <div class="uploadFm" @click="choosePicVisible = true" :class="{ uploadFm2: cover.length }">
-                          <img src="../../../assets/icon/addPoster.png" alt="" v-if="cover.length == 0" />
-                          <img :src="cover[0].url" alt="" class="cover_p" v-else />
-                          <div v-if="cover.length == 0">点击添加封面</div>
-                          <div class="cover_mask">
-                            <img src="../../../assets/icon/new/cover_update.png" /><span
-                              style="margin-top: 5px">修改封面</span>
-                          </div>
-                        </div>
-                        <!-- <el-upload :class="{ disUoloadSty: noneBtnImg }" class="upCss" action="#" list-type="picture"
-                          v-loading="uploadLoading1" :http-request="beforeUpload1" ref="upload1"
-                          :on-preview="handlePictureCardPreview" :on-remove="handle_remove1" :show-file-list="true"
-                          :file-list="cover" accept="image/*" :limit="1" :on-exceed="onExceed" v-else>
-                          <i class="el-icon-plus"></i>
-                        </el-upload> -->
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 10px 0;padding: 0 0 15px;">
-              <div class="whiteBg" style="border-radius: 0">
-                <div class="c_info_title">
-                  课程权限设置
-                </div>
-                <div class="wb_j_box">
-                  <div class="wb_j_box_content">
-                    <!-- <button class="c_pub_button_add pub_btn_add_img" @click="
-                      (dialogVisibleClass = true),
-                      (classSearch = ''),
-                      (gradeId = ''),
-                      getClass()
-                      ">添加班级</button>
-                    <div v-if="checkboxList2.length" class="wb_j_box_p_box">
-                      <span :class="{ tcMember: getClassC(tc) }" v-for="(tc, tcIndex) in checkboxList2" :key="tcIndex">{{
-                        getClassC(tc) }}</span>
-                    </div> -->
-                    <div class="wb_j_box_btn" @click="
-                      (dialogVisibleClass = true),
-                      (classSearch = ''),
-                      (gradeId = ''),
-                      getClass()
-                      ">
-                      <div class="wb_j_box_title">授课班级</div>
-                      <div class="wb_j_box_btn_c">
-                        <el-tooltip effect="dark" :content="getListClassC(checkboxList2)" placement="top"
-                          v-if="checkboxList2.length" popper-class="text_tooltip2">
-                          <div class="wb_j_box_span">
-                            {{ getListClassC(checkboxList2) }}
-                          </div>
-                        </el-tooltip>
-                        <div v-else class="wb_j_box_span">请选择授课班级</div>
-                        <div class="wb_j_box_arrow"></div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="wb_j_box_content">
-                    <!-- <button class="c_pub_button_add pub_btn_add_img" @click="openMember">添加协同成员</button>
-                    <div v-if="checkboxList3.length" class="wb_j_box_p_box" @click="checkBoolean = !checkBoolean">
-                      <span :class="{ tcMember: getMan2(tc) }" v-for="(tc, tcIndex) in checkboxList3.length > 6 &&
-                        checkBoolean
-                        ? checkboxList3
-                        : checkboxList3.slice(0, 6)" :key="tcIndex">{{ getMan2(tc) }}</span><span class="tcMember"
-                        v-if="checkboxList3.length > 6 && !checkBoolean">更多...</span>
-                    </div> -->
-                    <div class="wb_j_box_btn" @click="openMember">
-                      <div class="wb_j_box_title">协同人员</div>
-                      <div class="wb_j_box_btn_c">
-                        <el-tooltip effect="dark" :content="getListMan2(checkboxList3)" placement="top"
-                          v-if="checkboxList3.length" popper-class="text_tooltip2">
-                          <div class="wb_j_box_span">
-                            {{ getListMan2(checkboxList3) }}
-                          </div>
-                        </el-tooltip>
-                        <div v-else class="wb_j_box_span">请选择协同人员</div>
-                        <div class="wb_j_box_arrow"></div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px; padding-bottom: 20px" v-if="false">
-                <div class="c_info_title">目标管理</div>
-                <div style="margin: 0 auto; padding: 0 20px">
-                  <div style="
-                      width: 95%;
-                      min-height: 200px;
-                      border: 1px solid #cad1dc;
-                      border-radius: 4px;
-                      position: relative;
-                    ">
-                    <div class="e_add_top">
-                      <div class="e_add_title">
-                        <button class="c_pub_button_delete pub_btn_delete_img" @click="deleteEva()" v-if="evalua">
-                          清除
-                        </button>
-                        <button class="c_pub_button_confirm pub_btn_add_img2" @click="dialogVisiblemb = true">
-                          添加
-                        </button>
-                        <!-- <span>当前使用目标管理</span>
-                      <span>{{ eTitle ? eTitle : "请添加目标" }}</span>
-                      <img
-                        src="../../../assets/line.png"
-                        class="cru_line"
-                        style="
-                          width: 125px;
-                          height: 20px;
-                          bottom: -10px;
-                          left: 155px;
-                        "
-                      /> -->
-                      </div>
-                      <div style="
-                          display: flex;
-                          flex-direction: row;
-                          align-items: center;
-                        ">
-                        <!-- <el-button
-                        type="primary"
-                        size="small"
-                        @click="dialogVisiblemb = true"
-                        >添加目标管理</el-button
-                      >
-                      <el-button
-                        type="primary"
-                        size="small"
-                        @click="deleteEva()"
-                        >清除内容</el-button
-                      > -->
-                        <!-- <div class="e_add_delete" @click="deleteEva()">
-                          <img src="../../../assets/icon/delete.png" alt="" />
-                        </div> -->
-                      </div>
-                    </div>
-                    <div v-if="evalua == ''">
-                      <div class="noneBox">
-                        <img src="../../../assets/icon/new/eva_none.png" />
-                        <span>请添加目标管理</span>
-                      </div>
-                    </div>
-                    <div class="e_add_content" v-else>
-                      <div class="e_add_list_pbox">
-                        <div class="e_add_list_pbox_title">
-                          <span class="type_title">切换模式</span>
-                          <div class="type_content">
-                            <span :class="{ active: typeMode == 1 }" @click="OtherMb(1)">目标树</span>
-                            <span :class="{ active: typeMode == 2 }" @click="OtherMb(2)">目标罗盘</span>
-                            <!-- <span :class="{ active: typeMode == 3 }" @click="OtherMb(3)">目标看板</span> -->
-                          </div>
-                        </div>
-                        <div class="e_add_list_pbox_content">
-                          <Mind :showBar="false" :mindData="data" v-if="typeMode == 1"></Mind>
-                          <Sunburst :Josn="eJson" :num="eJSONNum" style="width: 100%" v-if="typeMode == 2"></Sunburst>
-                          <SeeBoard :Josn="eJson" :num="eJSONNum" :ename="eTitle" style="width: 100%"
-                            v-if="typeMode == 3">
-                          </SeeBoard>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-loading="textLoading" element-loading-text="小可正在努力生成中,请稍等...">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  课程简要描述
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiDetail')"
-                      @click="openAiDialog(2, 'aiDetail')">AI优化</button>
-                                      </el-tooltip>
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%)">
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="courseText"
-                      placeholder="请输入课程简要描述"></textarea>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;">
-              <!-- <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  补充资料
-                  <button class="c_pub_button_add pub_btn_add_img" style="margin: 0 20px 0 auto;">上传补充资料</button>
-                </div>
-                <div class="buchong_box">
-                  <span>暂时还没有内容,快去添加吧~</span>
-                </div>
-              </div> -->
-              <div style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: true
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                  <div style="margin-bottom: 10px;width:100%" class="lineTitle">
-                    补充资料
-                    <div class="add_info_box" style="margin: 0 0 0 auto">
-                      <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                        上传补充资料
-                        <input type="file" accept=".docx,.doc,.ppt,.pptx,.md,.txt,.pdf" style="display: none" v-if="inputShow" @change="
-                          beforeUploadInfo2(
-                            $event,
-                            13
-                          )
-                          " />
-                      </button>
-                      <!-- <button class="c_pub_button_add pub_btn_add_img" @click="addAttText(0)">
-                              图文
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="openLine(0)">
-                              链接
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="pasteLine(0)">
-                              代码
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="openSource(0)">
-                              资源
-                            </button> -->
-                    </div>
-                  </div>
-                </div>
-                <div>
-                  <div class="add_chapters_box add_c_none" v-if="
-                    infoData &&
-                    infoData.length == 0
-                  ">
-                    <img src="../../../assets/icon/new/c_none.png" alt /><span>暂时还没有内容,快去添加吧</span>
-                  </div>
-                  <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                    <div @dragstart="
-                      dragStart(item1, index1, 0)
-                      " @dragover.prevent="
-                        dragOver(index1, 0)
-                        " @dragend="dragEnd()" :draggable="isdrag ==
-                          'chapter-' + 0 + '-' + index1
-                          " class="chapter_upload" v-for="(item1, index1) in infoData" :key="item1.id" @click="
-                            getChapterData(
-                              $event,
-                              index1,
-                              item1.type
-                            )
-                            " :class="{
-                                    dragOverTop2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex > index1 &&
-                                      dragType == 'drag',
-                                    dragOverBottom2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      0 +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex < index1 &&
-                                      dragType == 'drag',
-                                  }">
-                      <!-- <div @mousedown="
-                              isdrag =
-                              'chapter-' + 0 + '-' + index1
-                              " @mouseup="isdrag = ''" @touchstart="
-                                isdrag =
-                                'chapter-' + 0 + '-' + index1
-                                " @touchend="isdrag = ''" class="chapter_upload_drag"></div> -->
-                      <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                        <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                          <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                          <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                          </div>
-                          <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                          <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                          </div>
-                          <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                          </div>
-                        </div>
-                        <div class="chapter_upload_n">
-                          <input readonly="true" v-if="
-                            item1.type == 2 ||
-                            item1.type == 3 ||
-                            item1.type == 12 ||
-                            item1.type == 13 ||
-                            item1.type == 7
-                          " :placeholder="item1.name" @click="
-                            updataVideoT(
-                              $event,
-                              index1
-                            )
-                            " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                          <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(index1)
-                                        " />
-                          <input :placeholder="item1.title ? item1.title : '链接'
-                            " v-if="item1.type == 8" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(index1)" />
-                          <input :placeholder="item1.title ? item1.title : '链接'
-                            " v-if="item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        openUpdateSource(index1)
-                                        " />
-                        </div>
-                        <div class="chapter_upload_ic">
-                          <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                          <!-- <div class="chapter_upload_ud" style="z-index: 99">
-                                  <div class="chapter_upload_up" @click="
-                                    upCd(
-                                      $event,
-                                      index1
-                                    )
-                                    "></div>
-                                  <div class="chapter_upload_down" @click="
-                                    downCd(
-                                      $event,
-                                      index1
-                                    )
-                                    "></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="
-                                  item1.type == 2 ||
-                                  item1.type == 3 ||
-                                  item1.type == 12 ||
-                                  item1.type == 13 ||
-                                  item1.type == 7
-                                " @click.stop="
-                                  updataVideoT(
-                                    $event,
-                                    index1
-                                  )
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 6" @click="
-                                  selectAttText(index1)
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 8"
-                                  @click="selectLine(index1)">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 14" @click="
-                                  openUpdateSource(index1)
-                                  ">
-                                  <div></div>
-                                </div> -->
-                          <div class="chapter_upload_ic_r" @click.stop="
-                            deleteInfoData(
-                              $event,
-                              index1
-                            )
-                            ">
-                            <div></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div v-if="
-                  infoproVisible
-                " class="mask">
-                  <div class="progressBox">
-                    <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                    <div class="lbox">
-                      <img src="../../../assets/loading.gif" />上传中,请稍后
-                    </div>
-                    <div style="margin-bottom: 10px">
-                      <span>{{
-                        infoisFinishSize
-                        }}M</span>
-                      /
-                      <span>{{
-                        infoisAllSize
-                        }}M</span>
-                    </div>
-                    <el-progress :text-inside="true" :stroke-width="20" :percentage="infoprogress
-                      ? infoprogress
-                      : 0
-                      " style="width: 80%"></el-progress>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-show="false">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  补充描述
-                  <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
-                </div>
-                <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
-                  <div style="width: calc(100%)">
-                    <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="courseText2"
-                      placeholder="请输入课程补充描述:例如您期望的课程时长、任务数量、任务难度、任务类型等。"></textarea>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && isOutline">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  课程大纲
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="istemplate == 1">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiOutline')"
-                      @click="openAiDialog(2, 'aiOutline')">生成大纲</button>
-                   </el-tooltip>
-                  <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
-                </div>
-                <div class="task_outline">
-                  <div class="outline_box" v-for="(item, index) in unitJson[0].chapterInfo[0].taskJson" :key="index">
-                    <div class="outline_task">
-                      <div class="title">任务{{ index + 1 }}</div>
-                      <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
-                        v-model="item.task" />
-                    </div>
-                    <div class="outline_detail" v-loading="taskDetailLoading.indexOf('task-' + index) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                      <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols
-                        placeholder="请输入任务描述" v-model="item.taskDetail2"></textarea>
-                      <div class="op_box">
-                        <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
-                        <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                          <div class="r_pub_button_op"
-                            @contextmenu.prevent="openAiDialog(1, 'aiDetail1', item, index)"
-                            @click="openAiDialog(2, 'aiDetail1', item, index)">智能优化</div>
-                        </el-tooltip>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-show="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' && cpoteType > 0">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  概念群
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote1" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入概念群"
-                      v-model="cpote.cpote1" v-if="cpote.cpote1s"></textarea>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote1)" v-else></div>
-                    <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, 'aiCpote1')"
-                            @click="openAiDialog(2, 'aiCpote1')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote1s')">{{
-                            cpote.cpote1s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-show="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' && cpoteType > 1">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  问题链
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote2" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入问题链"
-                      v-model="cpote.cpote2" v-if="cpote.cpote2s"></textarea>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote2)" v-else></div>
-                    <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, 'aiCpote2')"
-                            @click="openAiDialog(2, 'aiCpote1')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote2s')">{{
-                            cpote.cpote2s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-show="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' && cpoteType > 2">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  目标层
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote3" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入目标层"
-                      v-model="cpote.cpote3" v-if="cpote.cpote3s"></textarea>
-                    <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote3)" v-else></div>
-                    <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, 'aiCpote3')"
-                            @click="openAiDialog(2, 'aiCpote3')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote3s')">{{
-                            cpote.cpote3s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-show="templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' && cpoteType > 3">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  任务簇
-                </div>
-                <div class="task_outline">
-                  <div class="outline_detail" v-loading="cpoteLoading.cpote4" element-loading-text="小可正在努力生成中,请稍等...">
-                    <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入任务簇"
-                      v-model="cpote.cpote4" v-if="cpote.cpote4s"></textarea>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(cpote.cpote4)" v-else></div>
-                    <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, 'aiCpote4')"
-                            @click="openAiDialog(2, 'aiCpote4')">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editCpote('cpote4s')">{{
-                            cpote.cpote4s ? '确定' : '编辑'}}</div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="whiteBg" style="background: #fff; margin: 0 0 10px;padding: 0 0 15px;" v-if="isOutline2">
-              <div class="whiteBg" style="border-radius: 0; margin-top: 15px">
-                <div class="c_info_title">
-                  教案
-                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="istemplate == 1 && dArray.length">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @contextmenu.prevent="openAiDialog(1, 'aiTeacher2')"
-                      @click="openAiDialog(2, 'aiTeacher2')" v-if="istemplate == 1 && dArray.length">生成教案</button>
-                   </el-tooltip>
-                  <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
-                </div>
-                <div class="task_outline">
-                  <div class="outline_box" v-for="(item, index) in unitJson[0].chapterInfo[0].taskJson" :key="index">
-                    <div class="outline_task">
-                      <div class="title">任务{{ index + 1 }}</div>
-                      <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
-                        v-model="item.task" />
-                    </div>
-                    <div class="outline_detail" v-loading="taskDetailLoading5.indexOf('task-' + index) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                      <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols placeholder="请输入教案"
-                        v-model="item.taskDetail3" v-if="item.isTask3"></textarea>
-                      <div class="markBox vditor-reset" style="white-space:pre-wrap;" v-text="item.taskDetail3" v-else-if="ttaskDetailLoading5.indexOf('task-' + index) !== -1"></div>
-                      <div class="markBox vditor-reset" v-html="MarkdownT(item.taskDetail3)" v-else></div>
-                      <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, 'teacherDetail2', item.taskDetail3, index)"
-                              @click="openAiDialog(2, 'teacherDetail2', item.taskDetail3, index)">智能优化</div>
-                          </el-tooltip>
-                          <div class="r_pub_button_edit" style="margin-left:10px" @click="editTask3(index)">{{
-                            item.isTask3 ? '确定' : '编辑'}}</div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="info_btnBox3" v-if="istemplate != 1">
-              <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
-                goTo(
-                  '/course?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&org=' +
-                  org +
-                  '&role=' +
-                  role
-                )
-                ">
-                返回课程
-              </button>
-              <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5" @click="lastSteps">
-                {{ steps == 4 ? "返回课程" : "上一步" }}
-              </button>
-              <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom"  v-if="steps < 4">
-                <button class="c_pub_button_confirm" @click="nextSteps(2)"
-                  @contextmenu.prevent="nextSteps(1)" v-if="templateid != '4480d65a-1e48-11ef-bee5-005056b86db5'" :class="{
-                    pub_btn_next_img: steps != 3,
-                    pub_btn_finish_img: steps == 3,
-                  }">
-                  {{ steps == 3 ? "确认上传" : !isOutline ? "生成大纲" : !isOutline2 ? "生成教案" : "下一步" }}
-                </button>
-                <button class="c_pub_button_confirm" v-else @click="nextSteps(2)"
-                  @contextmenu.prevent="nextSteps(1)" :class="{
-                    pub_btn_next_img: steps != 3,
-                    pub_btn_finish_img: steps == 3,
-                  }">
-                  {{ steps == 3 ? "确认上传" : (templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" && cpoteType < 4) ? 
-                  cpoteType < 3 ? cpoteType < 2 ? cpoteType < 1 ? "生成概念群" : "生成问题链" : "生成目标层"  : "生成任务簇" : !isOutline2 ? "生成教案"  
-                  : "下一步" }}
-                </button>
-              </el-tooltip>
-            </div>
-          </div>
-          <div class="rightBox" v-if="steps == 2" :style="{
-            height:
-              !isStepDisplay && !isBtnDisplay
-                ? istemplate == 1 ? 'auto' : 'calc(100% - 40px)'
-                : istemplate == 1 ? 'auto' : 'calc(100% - 100px)',
-          }">
-            <div class="basic_box" style="
-                padding: 20px 30px 0px !important;
-                box-sizing: border-box;
-                height: calc(100% - 80px);
-                overflow: auto;
-                background: #fff;
-              ">
-              <!-- <div
-                style="
-                  color: #b8b8b8;
-                  background: #fff;
-                  width: 26%;
-                  height: 40px;
-                  border-radius: 15px;
-                  padding-left: 20px;
-                  line-height: 40px;
-                  font-size: 17px;
-                  box-shadow: 0px 1px 2px 2px #e0e0e0;
-                "
-              >-->
-              <div class="right_title" style="border: none; margin: 0; padding: 0">
-                请选择合适的课程模板
-              </div>
-              <div class="wordbox">
-                <div class="wordTeacher" @click="checkTemplate2()">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template_none.png" alt />
-                  </div>
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    空白模板
-                  </div>
-                </div>
-                <div class="wordTeacher" v-for="(aa, indexF) in templateArray" :key="indexF" @click="checkTemplate(aa)">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template.png" alt />
-                  </div>
-
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    {{ aa.title }}
-                  </div>
-                </div>
-                <div class="wordTeacher" @click="checkTemplate3()" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template.png" alt />
-                  </div>
-
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    简易模板
-                  </div>
-                </div>
-                <div class="wordTeacher" @click="pasteStage()" v-if="isPasteStage">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/new/template.png" alt />
-                  </div>
-
-                  <div style="
-                      margin-top: 10px;
-                      line-height: 19px;
-                      overflow: hidden;
-                      text-overflow: ellipsis;
-                      white-space: nowrap;
-                      padding: 0 20px;
-                    ">
-                    智能粘贴模式
-                  </div>
-                </div>
-                <!-- <div class="wordTeacher" @click="checkTemplate4()">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/wordMub.png" alt />
-                  </div>
-
-                  <div style="
-                                margin-top: 10px;
-                                line-height: 19px;
-                                overflow: hidden;
-                                text-overflow: ellipsis;
-                                white-space: nowrap;
-                                padding: 0 20px;
-                              ">
-                    未来小学课程设计
-                  </div>
-                </div> -->
-                <!-- <div class="wordTeacher" @click="checkTemplate1()">
-                  <div class="wordPic">
-                    <img src="../../../assets/icon/wordMub.png" alt />
-                  </div>
-
-                  <div style="
-                        margin-top: 10px;
-                        line-height: 19px;
-                        overflow: hidden;
-                        text-overflow: ellipsis;
-                        white-space: nowrap;
-                        padding: 0 20px;
-                      ">
-                    我的课程
-                  </div>
-                </div> -->
-              </div>
-            </div>
-            <div class="info_btnBox3" style="position: absolute; bottom: 0">
-              <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
-                goTo(
-                  '/course?userid=' +
-                  userid +
-                  '&oid=' +
-                  oid +
-                  '&org=' +
-                  org +
-                  '&role=' +
-                  role
-                )
-                ">
-                返回课程
-              </button>
-              <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5" @click="lastSteps">
-                {{ steps == 4 ? "返回课程" : "上一步" }}
-              </button>
-              <button class="c_pub_button_confirm" v-if="steps < 4" @click="nextSteps" :class="{
-                pub_btn_next_img: steps != 3,
-                pub_btn_finish_img: steps == 3,
-              }">
-                {{ steps == 3 ? "确认上传" : !isOutline ? "生成大纲" : "下一步" }}
-              </button>
-            </div>
-          </div>
-          <div class="rightBox" v-if="steps == 3 || istemplate == 1" ref="rightboxR" :style="{
-            height:
-              !isStepDisplay && !isBtnDisplay
-                ? istemplate == 1 ? 'auto' : 'calc(100% - 40px)'
-                : istemplate == 1 ? 'auto' : 'calc(100% - 100px)',
-          }">
-            <div class="rb_c_box">
-              <div class="rb_c_box_left" v-if="(steps == 3 || istemplate == 1) && unitJson[unitIndex].easy != 1">
-                <div class="rb_c_nav">
-                  <span :class="{ active: stepsNav == 1 }" @click="stepsNav = 1">目录</span>
-                  <span :class="{ active: stepsNav == 2 }" @click="stepsNav = 2">AI助手</span>
-                </div>
-                <div class="stepsBottom" v-if="stepsNav == 1" :style="{
-                  height:istemplate == 1 ? 'calc(100vh - 300px)' : 'calc(100% - 55px)',
-                  position: istemplate == 1 ? 'sticky' : 'unset',
-                  top: istemplate == 1 ? '0' : 'unset'
-                }">
-                  <!-- <div class="navTop">辅助导航</div> -->
-                  <div class="navBottom" v-if="courseState == 4 || courseState == 5">
-                    <!-- <div class="navTask noImage" v-if="unitJson[unitIndex].dyName">
-                      <div class="nt_taskBox" style="width: 100%;">
-                        <div class="nt_taskTitle"
-                          style="font-size: 16px;min-width: fit-content;margin-right: 10px;font-weight: 700;">阶段 {{
-                            unitIndex + 1 }}</div>
-                        <div class="nt_taskName" style="font-size: 16px;font-weight: 700;">
-                          <el-tooltip effect="light" :content="unitJson[unitIndex].dyName" placement="top">
-                            <span>{{ unitJson[unitIndex].dyName }}</span>
-                          </el-tooltip>
-                        </div>
-                      </div>
-                    </div> -->
-                    <div v-for="(t, tIndex) in unitJson[unitIndex].chapterInfo[0]
-                      .taskJson" :key="tIndex" :class="{
-                        dragOverTop:
-                          newIndex === tIndex &&
-                          typeIndex == 'task-' + tIndex &&
-                          oldIndex > tIndex &&
-                          dragType == 'task',
-                        dragOverBottom:
-                          newIndex === tIndex &&
-                          typeIndex == 'task-' + tIndex &&
-                          oldIndex < tIndex &&
-                          dragType == 'task',
-                      }">
-                      <div @dragstart="dragTaskStart(t, tIndex, 0)" @dragover.prevent="dragTaskOver(tIndex, 0)"
-                        @dragend="dragTaskEnd()" :draggable="isdrag == 'task-' + tIndex" @click="goToTask(tIndex)"
-                        class="navTask" :class="{
-                          isNavTask:
-                            isClickColor > 0 && isClickColor == tIndex + 1,
-                          isNavOpen: t.toolOpen,
-                        }">
-                        <div @click.stop="taskOpen(tIndex, 0)" class="chapter_upload_open"></div>
-                        <div @mousedown="isdrag = 'task-' + tIndex" @mouseup="isdrag = ''"
-                          @touchstart="isdrag = 'task-' + tIndex" @touchend="isdrag = ''" style="left: 8px"
-                          class="chapter_upload_drag"></div>
-                        <div class="nt_taskBox">
-                          <div class="nt_taskTitle">任务{{ tIndex + 1 }}:</div>
-                          <div class="nt_taskName">
-                            <el-tooltip effect="light" :content="t.task ? t.task : '未命名任务'" placement="top">
-                              <span>{{ t.task ? t.task : "未命名任务" }}</span>
-                            </el-tooltip>
-                          </div>
-                        </div>
-                        <!-- <div class="moveBtn" v-if="unitJson[unitIndex].chapterInfo[0].taskJson.length >
-                          1
-                          ">
-                          <div class="chapter_upload_up" style="margin: 0 5px 0 0;width: 25px;height: 25px;"
-                            @click.stop="taskMove(1, tIndex)"></div>
-                          <div class="chapter_upload_down" style="width: 25px;height: 25px;"
-                            @click.stop="taskMove(2, tIndex)"></div>
-                        </div> -->
-                      </div>
-                      <div class="gjBox" v-if="t.toolChoose.length && t.toolOpen">
-                        <div v-for="(tool, toolIndex2) in t.toolChoose" :key="toolIndex2"
-                          @click="jumpGj(tIndex, toolIndex2)">
-                          <div class="gjCss" :class="{
-                            isGjCss:
-                              toolIndexType == `gj${tIndex}${toolIndex2}`,
-                          }">
-                            <div>工具{{ toolIndex2 + 1 }}:</div>
-                            <div>
-                              {{
-                              toolsData[tool.tool[0]] &&
-                              toolsData[tool.tool[0]].name
-                              }}
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="navBottom" v-if="courseState == 1">
-                    <div v-for="(stage, stageIndex) in unitJson" :key="stageIndex" class="stageBox" :class="{
-                      dragOverTop:
-                        newIndex === stageIndex &&
-                        typeIndex == 'Unit-' + stageIndex &&
-                        oldIndex > stageIndex &&
-                        dragType == 'Unit',
-                      dragOverBottom:
-                        newIndex === stageIndex &&
-                        typeIndex == 'Unit-' + stageIndex &&
-                        oldIndex < stageIndex &&
-                        dragType == 'Unit',
-                    }">
-                      <div @dragstart="dragUnitStart(stage, stageIndex)" @dragover.prevent="dragUnitOver(stageIndex)"
-                        @dragend="dragUnitEnd()" :draggable="isdrag == 'unit-' + stageIndex"
-                        @click="unitSet2(stageIndex)" class="navStage" :class="{
-                          isNavStage: stageIndex == unitIndex,
-                          isNavStageOpen: stage.toolOpen,
-                        }">
-                        <div @mousedown="isdrag = 'unit-' + stageIndex" @mouseup="isdrag = ''"
-                          @touchstart="isdrag = 'unit-' + stageIndex" @touchend="isdrag = ''" style="left: 8px"
-                          class="chapter_upload_drag"></div>
-                        <div class="nt_taskBox">
-                          <div class="nt_taskTitle">
-                            第{{ stageIndex + 1 }}阶段:
-                          </div>
-                          <div class="nt_taskName">
-                            <el-tooltip effect="light" :content="stage.dyName ? stage.dyName : '未命名阶段'
-                              " placement="top">
-                              <span>{{
-                                stage.dyName ? stage.dyName : "未命名阶段"
-                                }}</span>
-                            </el-tooltip>
-                          </div>
-                        </div>
-                        <div @click.stop="unitOpen(stageIndex)" class="chapter_unit_open"></div>
-                      </div>
-                      <div v-for="(t, tIndex) in unitJson[stageIndex]
-                        .chapterInfo[0].taskJson" :key="`${stageIndex}-${tIndex}`" :class="{
-                          dragOverTop:
-                            newIndex === tIndex &&
-                            typeIndex == 'task-' + tIndex &&
-                            ((oldIndex > tIndex &&
-                              stageIndex == checkUnitIndex) ||
-                              (oldIndex == tIndex &&
-                                stageIndex == checkUnitIndex &&
-                                checkUnitIndex != oldUnitIndex)) &&
-                            dragType == 'task',
-                          dragOverBottom:
-                            newIndex === tIndex &&
-                            typeIndex == 'task-' + tIndex &&
-                            oldIndex < tIndex &&
-                            stageIndex == checkUnitIndex &&
-                            dragType == 'task',
-                        }" :style="{ display: stage.toolOpen ? 'block' : 'none' }">
-                        <div @dragstart="dragTaskStart(t, tIndex, stageIndex)"
-                          @dragover.prevent="dragTaskOver(tIndex, stageIndex)" @dragend="dragTaskEnd()" :draggable="isdrag == 'task-' + stageIndex + '-' + tIndex
-                            " @click="goToTask2(tIndex, stageIndex)" class="navTask" style="padding-left: 12px" :class="{
-                              isNavTask:
-                                isClickColor > 0 &&
-                                isClickColor == tIndex + 1 &&
-                                stageIndex == unitIndex,
-                              isNavOpen: t.toolOpen,
-                            }">
-                          <div @click.stop="taskOpen(tIndex, stageIndex)" class="chapter_upload_open"></div>
-                          <div @mousedown="
-                            isdrag = 'task-' + stageIndex + '-' + tIndex
-                            " @mouseup="isdrag = ''" @touchstart="
-                              isdrag = 'task-' + stageIndex + '-' + tIndex
-                              " @touchend="isdrag = ''" style="left: 20px" class="chapter_upload_drag"></div>
-                          <div class="nt_taskBox" style="width: calc(100% - 52px)">
-                            <div class="nt_taskTitle">
-                              任务{{ tIndex + 1 }}:
-                            </div>
-                            <div class="nt_taskName">
-                              <el-tooltip effect="light" :content="t.task ? t.task : '未命名任务'" placement="top">
-                                <span>{{
-                                  t.task ? t.task : "未命名任务"
-                                  }}</span>
-                              </el-tooltip>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="gjBox" v-if="t.toolChoose.length && t.toolOpen">
-                          <div v-for="(tool, toolIndex2) in t.toolChoose" :key="toolIndex2"
-                            @click="jumpGj2(tIndex, toolIndex2, stageIndex)">
-                            <div class="gjCss" :class="{
-                              isGjCss:
-                                toolIndexType ==
-                                `gj${tIndex}${toolIndex2}${stageIndex}`,
-                            }">
-                              <div>工具{{ toolIndex2 + 1 }}:</div>
-                              <div>
-                                {{
-                                toolsData[tool.tool[0]] &&
-                                toolsData[tool.tool[0]].name
-                                }}
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="rb_c_ai_box" v-if="stepsNav == 2">
-                  <aiBox @setUnitJson="setUnitJson" :courseId="courseId" :unitJson="unitJson"></aiBox>
-                </div>
-              </div>
-              <div class="rb_c_box_right">
-                <!-- <div class="rb_c_box_btn">
-                  <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask" v-if="steps == 3">智能粘贴</button>
-                </div> -->
-                <div class="basic_box" ref="unitBox">
-                  <div v-if="false" style="
-                      display: flex;
-                      flex-direction: row;
-                      align-items: center;
-                      position: sticky;
-                      top: 0;
-                      z-index: 99;
-                      width: 100%;
-                      padding: 0 20px 0 20px;
-                      box-sizing: border-box;
-                      background: #fff;
-                      border-radius: 8px;
-                    ">
-                    <!-- :style="{ maxWidth: (userid == courseUserid || role == '1') ? 'calc(100% - 300px)' : 'calc(100% - 175px)' }" -->
-                    <div class="cru_selectBox" :style="{
-                      maxWidth: isPasteTask
-                        ? 'calc(100% - 335px)'
-                        : 'calc(100% - 190px)',
-                    }" v-if="courseState == 1">
-                      <div v-for="(item, index) in unitJson" :key="index" class="cru_select"
-                        :class="unitIndex == index ? 'cru_selected' : ''" @click="unitSet(index)">
-                        <!-- item.dyName ? item.dyName :  -->
-                        <span v-if="
-                          unitJson[unitJson.length - 1].easy == 4 ||
-                          unitJson[unitJson.length - 1].easy == 6
-                        ">{{
-                          item.dyName
-                          ? item.dyName
-                          : "第" + (index + 1) + "阶段"
-                          }}</span>
-                        <span v-else>{{ "第" + (index + 1) + "阶段" }}</span>
-                      </div>
-                      <div class="cru_line" :style="{
-                        left: offsetLetfPx + 'px',
-                      }"></div>
-                    </div>
-                    <div class="addStageImg" @click="addunit()" v-if="
-                      !(unitJson[unitJson.length - 1].easy == 4) &&
-                      !(unitJson[unitJson.length - 1].easy == 6) &&
-                      courseState == 1
-                    ">
-                      <img src="../../../assets/icon/new/addStage.png" alt />
-                    </div>
-                    <button class="c_pub_button_add pub_btn_add_img" @click="updateCourseState(1)"
-                      v-if="courseState == 2" style="margin: 15px 0">
-                      新建阶段
-                    </button>
-                    <!-- v-if="steps == 3 && (userid == courseUserid || role == '1')" -->
-                    <button class="c_pub_button_add" @click="openStageBox" v-show="false" style="margin: 0 0 0 auto">
-                      阶段顺序
-                    </button>
-                    <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask()"
-                      v-if="(steps == 3 || istemplate == 1)  && isPasteTask" style="margin: 0 0 0 auto">
-                      智能粘贴
-                    </button>
-                    <button class="c_pub_button_confirm pub_btn_template_img" @click="openTemplate" :style="{
-                      margin: isPasteTask ? '0 0 0 20px' : '0 0 0 auto',
-                    }" style="padding: 0 12px">
-                      选择课程模板
-                    </button>
-                  </div>
-
-                  <div style="margin: 0 0 10px 0; padding: 0" v-for="(item, index) in unitJson[unitIndex].chapterInfo"
-                    :key="index">
-                    <div style="position: relative;
-                            background: #fff;
-                            box-sizing: border-box;
-                            padding: 1px 20px 10px;
-                            width: 100%;
-                            border-radius: 10px;">
-                      <div style="
-                              display: flex;
-                              flex-direction: row;
-                              justify-content: space-between;
-                              align-items: center;
-                            " :style="{
-                              margin: !item.taskJson[0].isFoldchapter
-                                ? '20px 0 10px'
-                                : '20px 0 0',
-                            }">
-                        <div style="margin-bottom: 10px;width: 100%;" class="lineTitle">
-                          学习内容
-                          <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="istemplate == 1">
-                            <button class="c_pub_button_confirm" style="margin: 0 0 0 auto;"
-                              @contextmenu.prevent="openAiDialog(1, 'aiTask',()=>{loading = false})"
-                              @click="openAiDialog(2, 'aiTask',()=>{loading = false})">生成任务</button>
-                          </el-tooltip>
-                        </div>
-                      </div>
-                      <div>
-                        <div class="add_chapters_box add_c_none" v-if="
-                          item.taskJson[0].chapterData &&
-                          item.taskJson[0].chapterData.length == 0
-                        ">
-                          <img src="../../../assets/icon/new/c_none.png" alt /><span>请添加学习内容</span>
-                        </div>
-                        <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                          <div @dragstart="
-                            dragStart(item1, index1, 0)
-                            " @dragover.prevent="
-                              dragOver(index1, 0)
-                              " @dragend="dragEnd()" :draggable="isdrag ==
-                                'chapter-' + 0 + '-' + index1
-                                " class="chapter_upload" v-for="(item1, index1) in item.taskJson[0].chapterData"
-                            :key="item1.id" @click="
-                              getChapterData(
-                                $event,
-                                unitIndex,
-                                index,
-                                index1,
-                                item1.type
-                              )
-                              " :class="{
-                                dragOverTop2:
-                                  newIndex === index1 &&
-                                  typeIndex ==
-                                  'chapter-' +
-                                  0 +
-                                  '-' +
-                                  index1 &&
-                                  oldIndex > index1 &&
-                                  dragType == 'drag',
-                                dragOverBottom2:
-                                  newIndex === index1 &&
-                                  typeIndex ==
-                                  'chapter-' +
-                                  0 +
-                                  '-' +
-                                  index1 &&
-                                  oldIndex < index1 &&
-                                  dragType == 'drag',
-                              }">
-                            <div @mousedown="
-                              isdrag =
-                              'chapter-' + 0 + '-' + index1
-                              " @mouseup="isdrag = ''" @touchstart="
-                                isdrag =
-                                'chapter-' + 0 + '-' + index1
-                                " @touchend="isdrag = ''" class="chapter_upload_drag"></div>
-                            <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                              <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                                <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                                <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                                </div>
-                                <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                                <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                                </div>
-                                <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                                </div>
-                              </div>
-                              <div class="chapter_upload_n">
-                                <input readonly="true" v-if="
-                                  item1.type == 2 ||
-                                  item1.type == 3 ||
-                                  item1.type == 12 ||
-                                  item1.type == 13 ||
-                                  item1.type == 7
-                                " :placeholder="item1.name" @click="
-                                  updataVideoT(
-                                    $event,
-                                    unitIndex,
-                                    0,
-                                    index1
-                                  )
-                                  " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                                <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(0, index1)
-                                        " />
-                                <input :placeholder="item1.title ? item1.title : '链接'
-                                  " v-if="item1.type == 8" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(0, index1)" />
-                                <input :placeholder="item1.title ? item1.title : '链接'
-                                  " v-if="item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        openUpdateSource(0, index1)
-                                        " />
-                              </div>
-                              <div class="chapter_upload_ic">
-                                <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                                <div class="chapter_upload_ud" style="z-index: 99">
-                                  <div class="chapter_upload_up" @click="
-                                    upCd(
-                                      $event,
-                                      unitIndex,
-                                      index,
-                                      0,
-                                      index1
-                                    )
-                                    "></div>
-                                  <div class="chapter_upload_down" @click="
-                                    downCd(
-                                      $event,
-                                      unitIndex,
-                                      index,
-                                      0,
-                                      index1
-                                    )
-                                    "></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="
-                                  item1.type == 2 ||
-                                  item1.type == 3 ||
-                                  item1.type == 12 ||
-                                  item1.type == 13 ||
-                                  item1.type == 7
-                                " @click.stop="
-                                  updataVideoT(
-                                    $event,
-                                    unitIndex,
-                                    0,
-                                    index1
-                                  )
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 6" @click="
-                                  selectAttText(0, index1)
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 8"
-                                  @click="selectLine(0, index1)">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_edit" v-if="item1.type == 14" @click="
-                                  openUpdateSource(0, index1)
-                                  ">
-                                  <div></div>
-                                </div>
-                                <div class="chapter_upload_ic_r" @click.stop="
-                                  deleteChapterData(
-                                    $event,
-                                    unitIndex,
-                                    index,
-                                    index1,
-                                    0
-                                  )
-                                  ">
-                                  <div></div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                      <div class="add_info_box" style="margin: 10px 0 0">
-                        <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                          文件
-                          <input type="file" accept="*" style="display: none" v-if="inputShow" @change="
-                            beforeUpload2(
-                              $event,
-                              unitIndex,
-                              13,
-                              0
-                            )
-                            " />
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="addAttText(0)">
-                          图文
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openLine(0)">
-                          链接
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="pasteLine(0)">
-                          代码
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openSource(0)">
-                          资源
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openAiCreate(0)">
-                          AI生成PPT
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="createTeacherAn(0)">
-                          AI生成教案
-                        </button>
-                        <button class="c_pub_button_add pub_btn_add_img" @click="openAiCreateVideo(0)">
-                          智能检索视频
-                        </button>
-                      </div>
-                      <div v-if="
-                        unitJson[unitIndex].chapterInfo[0].taskJson[
-                          0
-                        ].proVisible
-                      " class="mask">
-                        <div class="progressBox">
-                          <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                          <div class="lbox">
-                            <img src="../../../assets/loading.gif" />上传中,请稍后
-                          </div>
-                          <div style="margin-bottom: 10px">
-                            <span>{{
-                              unitJson[unitIndex].chapterInfo[0].taskJson[
-                              0
-                              ].isFinishSize
-                              }}M</span>
-                            /
-                            <span>{{
-                              unitJson[unitIndex].chapterInfo[0].taskJson[
-                              0
-                              ].isAllSize
-                              }}M</span>
-                          </div>
-                          <el-progress :text-inside="true" :stroke-width="20" :percentage="unitJson[unitIndex].chapterInfo[0].taskJson[
-                            0
-                          ].progress
-                            ? unitJson[unitIndex].chapterInfo[0]
-                              .taskJson[0].progress
-                            : 0
-                            " style="width: 80%"></el-progress>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="chapter_box" v-if="courseState == 1">
-                      <div class="chapter_contentbox">
-                        <!-- <div>第{{ unitIndex + 1 }}阶段</div> -->
-                        <div class="cc_input">
-                          <input ref="dyInput" type="text" placeholder="请输入阶段标题" class="binfo_input"
-                            v-model="unitJson[unitIndex].dyName" />
-                        </div>
-                        <div class="remove" v-if="
-                          (unitJson.length > 1 || courseState != 2) &&
-                          !(unitJson[unitJson.length - 1].easy == 4) &&
-                          !(unitJson[unitJson.length - 1].easy == 6)
-                        " @click="deleteUnit(unitIndex)"></div>
-                      </div>
-                    </div>
-                    <!-- <div v-if="!unitJson[unitIndex].easy" style="
-                    margin: 50px 0px 10px;
-                    font-size: 1.5em;
-                    font-weight: 700;
-                    color: #0f7eff;
-                  ">
-                  添加任务
-                </div> -->
-                    <div class="taskBorder" :style="{
-                      minHeight: unitJson[unitIndex].easy && 'unset',
-                    }" :class="{ smallTaskBorder: itemTask.isFold === 1 }"
-                      v-for="(itemTask, itemTaskIndex) in item.taskJson" :key="itemTaskIndex">
-                      <div style="background: #fff; border-radius: 5px">
-                        <div class="taskTitle">任务{{ itemTaskIndex + 1 }}</div>
-                        <!-- padding: 20px; -->
-                        <div v-if="unitJson[unitIndex].easy != 1">
-                          <div :style="{
-                            marginBottom:
-                              unitJson[unitIndex].easy == 3 ||
-                                (unitJson[unitIndex].easy == 5 &&
-                                  itemTask.taskType == 1)
-                                ? '75px'
-                                : '0',
-                          }">
-                            <div style="
-                                display: flex;
-                                margin: 0px 0 20px;
-                                flex-direction: row;
-                                justify-content: flex-start;
-                                align-items: center;
-                              ">
-                              <div class="lineTitle">任务概述</div>
-                            </div>
-                            <div :id="'task' + itemTaskIndex" class="chapter_contentbox" style="
-                                flex-direction: row;
-                                justify-content: flex-start;
-                                align-items: center;
-                                margin: 0;
-                              ">
-                              <!-- <div class="cc_title">
-                                任务{{ itemTaskIndex + 1 }}
-                              </div> -->
-                              <div class="cc_input">
-                                <input type="text" placeholder="输入任务名称" class="binfo_input" style="border-radius: 4px"
-                                  v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ].task
-                                    " />
-                              </div>
-                              <div class="remove" v-if="
-                                item.taskJson.length > 1 &&
-                                (!unitJson[unitIndex].easy ||
-                                  unitJson[unitIndex].easy == 6)
-                              " @click="deleteTask(itemTaskIndex)"></div>
-                              <!-- <div v-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1 && !itemTask.isFold2"
-                                class="show_taskD show" @click="fold2(itemTaskIndex)"><img
-                                  src="../../../assets/icon/new/icon-slide.png" />收起任务描述</div>
-                              <div v-else-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1" class="show_taskD"
-                                @click="fold2(itemTaskIndex)"><img src="../../../assets/icon/new/icon-slide.png" />展开任务描述
-                              </div> -->
-                            </div>
-                            <!-- <div v-if="easyArray.indexOf(unitJson[unitIndex].easy) == -1 && itemTask.isFold2" style="
-                          display: flex;
-                          margin: 20px 0;
-                          flex-direction: row;
-                          justify-content: flex-start;
-                          align-items: center;
-                        ">
-                              <div class="lineTitle">任务描述</div>
-                            </div> && !itemTask.isFold2-->
-                            <div v-if="
-                              easyArray.indexOf(unitJson[unitIndex].easy) ==
-                              -1
-                            " style="margin-top: 20px" class="op_task_box"
-                              v-loading="taskDetailLoading2.indexOf('task-' + itemTaskIndex) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                              <!-- <editor-bar class="addEditor" style="margin: 0" placeholder="请输入任务描述" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                ].taskDetail
-                                " @change="change"></editor-bar> -->
-                              <textarea v-autoHeight="100" rows="4" class="binfo_input binfo_textarea" cols
-                                placeholder="请输入任务描述" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                ].taskDetail
-                                  "></textarea>
-                              <!-- <textarea rows="6" class="binfo_input" placeholder="请输入任务描述" cols
-                                style="width: 70.5% !important; height: 120px" v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ].taskDetail
-                                  "></textarea> -->
-                              <div class="op_box">
-                                <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
-                                <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                                  <div class="r_pub_button_op" @contextmenu.prevent="openAiDialog(1, 'aiDetail2', unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ], itemTaskIndex)" @click="openAiDialog(2, 'aiDetail2', unitJson[unitIndex].chapterInfo[0].taskJson[
-                                    itemTaskIndex
-                                  ], itemTaskIndex)">智能优化</div>
-                                </el-tooltip>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div v-if="
-                          unitJson[unitIndex].easy == 1 ||
-                          (unitJson[unitIndex].easy == 5 &&
-                            itemTask.taskType == 2)
-                        ">
-                          <div>
-                            <div class="add_chapters_box add_c_none" v-if="
-                              itemTask.chapterData &&
-                              itemTask.chapterData.length == 0
-                            ">
-                              <img src="../../../assets/icon/new/c_none.png" alt />
-                            </div>
-                            <div v-else class="add_chapters_box" style="display: flex; flex-direction: column">
-                              <div @dragstart="dragStart(item1, index1, index)" @dragover.prevent="
-                                dragOver(index1, itemTaskIndex)
-                                " @dragend="dragEnd()" :draggable="isdrag ==
-                                  'chapter-' + itemTaskIndex + '-' + index1
-                                  " class="chapter_upload" v-for="(item1, index1) in itemTask.chapterData"
-                                :key="item1.id" @click="
-                                  getChapterData(
-                                    $event,
-                                    unitIndex,
-                                    index,
-                                    index1,
-                                    item1.type
-                                  )
-                                  " :class="{
-                                    dragOverTop2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      itemTaskIndex +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex > index1,
-                                    dragOverBottom2:
-                                      newIndex === index1 &&
-                                      typeIndex ==
-                                      'chapter-' +
-                                      itemTaskIndex +
-                                      '-' +
-                                      index1 &&
-                                      oldIndex < index1,
-                                  }">
-                                <div @mousedown="
-                                  isdrag =
-                                  'chapter-' + itemTaskIndex + '-' + index1
-                                  " @mouseup="isdrag = ''" @touchstart="
-                                    isdrag =
-                                    'chapter-' + itemTaskIndex + '-' + index1
-                                    " @touchend="isdrag = ''" class="chapter_upload_drag"></div>
-                                <div class="chapter_upload_t" style="width: 100%"></div>
-                                <div class="chapter_upload_o" style="
-                                    position: relative;
-                                    display: flex;
-                                    align-items: center;
-                                  ">
-                                  <div class="chapter_upload_l" style="padding: 1px 0 0 10px">
-                                    <div v-if="item1.type == 2" class="chapter_upload_l_i2"></div>
-                                    <div v-if="item1.type == 3" class="chapter_upload_l_i3" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 6" class="chapter_upload_l_i6" style="margin-left: 1px">
-                                    </div>
-                                    <!-- <div v-if="item1.type == 7" class="chapter_upload_l_i8" style="margin-left: 1px"></div> -->
-                                    <div v-if="item1.type == 8" class="chapter_upload_l_i8" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 14" class="chapter_upload_l_i14" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 12" class="chapter_upload_l_i12" style="margin-left: 1px">
-                                    </div>
-                                    <div v-if="item1.type == 13" class="chapter_upload_l_i13" style="margin-left: 1px">
-                                    </div>
-                                  </div>
-                                  <div class="chapter_upload_n">
-                                    <span style="
-                                        font-size: 14px;
-                                        color: rgb(109, 109, 109);
-                                        height: 14px;
-                                        line-height: 14px;
-                                      " v-if="
-                                        item1.type == 2 ||
-                                        item1.type == 3 ||
-                                        item1.type == 7
-                                      ">{{ item1.text }}-</span>
-                                    <input readonly="true" v-if="
-                                      item1.type == 2 ||
-                                      item1.type == 3 ||
-                                      item1.type == 7
-                                    " :placeholder="item1.name" @click="
-                                      updataVideoT(
-                                        $event,
-                                        unitIndex,
-                                        itemTaskIndex,
-                                        index1
-                                      )
-                                      " style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        minwidth: 215px;
-                                        z-index: 99;
-                                        font-size: 14px;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " />
-                                    <input :placeholder="item1.name" v-if="item1.type == 6" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="
-                                        selectAttText(itemTaskIndex, index1)
-                                        " />
-                                    <input :placeholder="item1.title ? item1.title : '链接'
-                                      " v-if="item1.type == 8 || item1.type == 14" style="
-                                        border: none;
-                                        outline: none;
-                                        width: 80%;
-                                        white-space: nowrap;
-                                        overflow: hidden;
-                                        text-overflow: ellipsis;
-                                      " readonly="true" @click="selectLine(itemTaskIndex, index1)" />
-                                  </div>
-                                  <div class="chapter_upload_ic">
-                                    <div class="chapter_upload_noSee" v-if="item1.type == 12"></div>
-                                    <div class="chapter_upload_ud" style="z-index: 99">
-                                      <div class="chapter_upload_up" @click="
-                                        upCd(
-                                          $event,
-                                          unitIndex,
-                                          index,
-                                          itemTaskIndex,
-                                          index1
-                                        )
-                                        "></div>
-                                      <div class="chapter_upload_down" @click="
-                                        downCd(
-                                          $event,
-                                          unitIndex,
-                                          index,
-                                          itemTaskIndex,
-                                          index1
-                                        )
-                                        "></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="
-                                      item1.type == 2 ||
-                                      item1.type == 3 ||
-                                      item1.type == 12 ||
-                                      item1.type == 13 ||
-                                      item1.type == 7
-                                    " @click.stop="
-                                      updataVideoT(
-                                        $event,
-                                        unitIndex,
-                                        itemTaskIndex,
-                                        index1
-                                      )
-                                      ">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="item1.type == 6" @click="
-                                      selectAttText(itemTaskIndex, index1)
-                                      ">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="item1.type == 8"
-                                      @click="selectLine(itemTaskIndex, index1)">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_edit" v-if="item1.type == 14" @click="
-                                      openUpdateSource(itemTaskIndex, index1)
-                                      ">
-                                      <div></div>
-                                    </div>
-                                    <div class="chapter_upload_ic_r" @click.stop="
-                                      deleteChapterData(
-                                        $event,
-                                        unitIndex,
-                                        index,
-                                        index1,
-                                        itemTaskIndex
-                                      )
-                                      ">
-                                      <div></div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                          <div class="add_info_box" style="margin: 10px 0 0">
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              <span style="color: red">*</span>
-                              教学设计
-                              <input type="file"
-                                accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    3,
-                                    itemTaskIndex,
-                                    '教学设计'
-                                  )
-                                  " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              <span style="color: red">*</span>
-                              教学课件
-                              <input type="file"
-                                accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    3,
-                                    itemTaskIndex,
-                                    '教学课件'
-                                  )
-                                  " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              教学视频
-                              <input type="file" accept="video/mp4, video/quicktime, video/x-msvideo"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    2,
-                                    itemTaskIndex,
-                                    '教学视频'
-                                  )
-                                  " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              教学音频
-                              <input type="file" accept="audio/*" style="display: none" v-if="inputShow" @change="
-                                beforeUpload3(
-                                  $event,
-                                  unitIndex,
-                                  2,
-                                  itemTaskIndex,
-                                  '教学音频'
-                                )
-                                " />
-                            </button>
-                            <button class="c_pub_button_add pub_btn_add_img" @click="addImg($event)">
-                              学习单
-                              <input type="file"
-                                accept="application/pdf, application/.ppt, .ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"
-                                style="display: none" v-if="inputShow" @change="
-                                  beforeUpload3(
-                                    $event,
-                                    unitIndex,
-                                    3,
-                                    itemTaskIndex,
-                                    '学习单'
-                                  )
-                                  " />
-                            </button>
-                          </div>
-                          <div v-if="
-                            unitJson[unitIndex].chapterInfo[0].taskJson[
-                              itemTaskIndex
-                            ].proVisible
-                          " class="mask">
-                            <div class="progressBox">
-                              <!-- <div id="closePro" class="closeCss">
-                                            <img src="../../../../assets/icon/close.png" alt />
-                                        </div> -->
-                              <div class="lbox">
-                                <img src="../../../assets/loading.gif" />上传中,请稍后
-                              </div>
-                              <div style="margin-bottom: 10px">
-                                <span>{{
-                                  unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                  ].isFinishSize
-                                  }}M</span>
-                                /
-                                <span>{{
-                                  unitJson[unitIndex].chapterInfo[0].taskJson[
-                                  itemTaskIndex
-                                  ].isAllSize
-                                  }}M</span>
-                              </div>
-                              <el-progress :text-inside="true" :stroke-width="20" :percentage="unitJson[unitIndex].chapterInfo[0].taskJson[
-                                itemTaskIndex
-                              ].progress
-                                ? unitJson[unitIndex].chapterInfo[0]
-                                  .taskJson[itemTaskIndex].progress
-                                : 0
-                                " style="width: 80%"></el-progress>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                      <!-- padding: 20px; -->
-                      <div style="
-                          background: #fff;
-                          border-radius: 5px;
-                          margin-top: 15px;
-                        ">
-                        <div v-if="
-                          unitJson[unitIndex].easy != 3 &&
-                          !(
-                            unitJson[unitIndex].easy == 5 &&
-                            itemTask.taskType == 1
-                          )
-                        " style="
-                            flex-direction: row;
-                            justify-content: flex-start;
-                            align-items: center;
-                          ">
-                          <div style="
-                              display: flex;
-                              flex-direction: row;
-                              align-items: center;
-                              margin: 5px 0 20px;
-                            ">
-                            <div class="lineTitle clineTitle">
-                              {{
-                              !unitJson[unitIndex].easy ||
-                              unitJson[unitIndex].easy == 6 ||
-                              easyArray.indexOf(unitJson[unitIndex].easy) !=
-                              -1
-                              ? "练习内容"
-                              : "评价内容"
-                              }}
-                            </div>
-                            <!-- <div class="line" style="width: 90%"></div> -->
-                          </div>
-                        </div>
-                        <div v-if="
-                          unitJson[unitIndex].easy == 6 ||
-                          !unitJson[unitIndex].easy
-                        " class="toolChoose">
-                          <div class="tools">
-                            <div class="leftTools" style="width: 100%" v-for="(
-                                itemTool, toolIndex
-                              ) in itemTask.toolChoose" :key="toolIndex">
-                              <div style="
-                                  display: flex;
-                                  flex-direction: row;
-                                  align-items: baseline;
-                                  flex-wrap: nowrap;
-                                  justify-content: flex-start;
-                                  position: relative;
-                                ">
-                                <div style="margin-right: 20px; font-weight: bold"
-                                  :id="'gj' + itemTaskIndex + '' + toolIndex">
-                                  工具 {{ toolIndex + 1 }} :
-                                </div>
-                                <div class="chooseWho">
-                                  <div :class="itemTool.toolType == 0
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 0),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    互动类
-                                  </div>
-                                  <div :class="itemTool.toolType == 1
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 1),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    思维类
-                                  </div>
-                                  <div :class="itemTool.toolType == 6
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 6),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    协作类
-                                  </div>
-                                  <div :class="itemTool.toolType == 2
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 2),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    测评类
-                                  </div>
-                                  <div :class="itemTool.toolType == 7
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 7),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    评价类
-                                  </div>
-                                  <div :class="itemTool.toolType == 3
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 3),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    编程类
-                                  </div>
-                                  <div :class="itemTool.toolType == 5
-                                    ? 'isChooseActive'
-                                    : ''
-                                    " @click="
-                                      (itemTool.toolType = 5),
-                                      (itemTool.isFold3 = false),
-                                      $forceUpdate()
-                                      ">
-                                    学科类
-                                  </div>
-                                  <!-- <div :class="itemTool.toolType == 4 ? 'isChooseActive' : ''
-                              " @click="(itemTool.toolType = 4), $forceUpdate()">
-                              其他
-                            </div> -->
-                                </div>
-                                <div class="chapter_upload_ud2" style="z-index: 9; margin: 0 0 0 auto" :style="{
-                                  margin:
-                                    itemTask.toolChoose.length > 1
-                                      ? '0px 35px 0px auto'
-                                      : '0 0 0 auto',
-                                }" v-if="itemTask.toolChoose.length > 1">
-                                  <div class="chapter_upload_up2" @click.stop="
-                                    upTool(
-                                      $event,
-                                      unitIndex,
-                                      itemTaskIndex,
-                                      toolIndex
-                                    )
-                                    ">
-                                    上移
-                                  </div>
-                                  <div class="chapter_upload_down2" @click.stop="
-                                    downTool(
-                                      $event,
-                                      unitIndex,
-                                      itemTaskIndex,
-                                      toolIndex
-                                    )
-                                    ">
-                                    下移
-                                  </div>
-                                </div>
-                                <!-- <div v-if="!itemTool.isFold3" class="show_toolD show"
-                                @click="fold3(itemTaskIndex, toolIndex)"
-                                :style="{ margin: itemTask.toolChoose.length > 1 ? '0px 35px 0px 10px' : '0 0 0 auto' }"><img
-                                  src="../../../assets/icon/new/icon-slide.png" />收起工具栏</div>
-                              <div v-else class="show_toolD" @click="fold3(itemTaskIndex, toolIndex)"
-                                :style="{ margin: itemTask.toolChoose.length > 1 ? '0px 35px 0px 10px' : '0 0 0 auto' }"><img
-                                  src="../../../assets/icon/new/icon-slide.png" />展开工具栏</div> -->
-                                <div class="remove" @click="deleteTool(itemTaskIndex, toolIndex)"
-                                  v-if="itemTask.toolChoose.length > 1" style="
-                                    position: absolute;
-                                    right: 0;
-                                    top: -5px;
-                                  "></div>
-                              </div>
-                              <!-- v-show="!itemTool.isFold3" -->
-                              <div style="min-height: 163px">
-                                <div class="toolSort" v-if="itemTool.toolType == 0">
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(8, itemTaskIndex, toolIndex)"
-                              >
-                                <img src="../../../assets/icon/secondToolList/library.png" alt />
-                                <div style="margin: 5px 0">素材库</div>
-                              </div>
-                              <div class="check" @click="addTools(8, itemTaskIndex, toolIndex)">
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(8) == -1"
-                                />
-                                <div class="checkDiv" v-else><img src="../../../assets/icon/checkedIs.png"
-                                    alt /><span>已选择</span></div>
-                              </div>
-                            </div>-->
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(17, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/secondToolList/library.png"
-                                  alt
-                               />
-                                <div style="margin: 5px 0">学习资料</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(17, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(17) == -1"
-                                />
-                                <img
-                                  src="../../../assets/icon/checkedIs.png"
-                                  alt
-                                  v-else
-                                />
-                              </div>10
-                            </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(10) != -1,
-                                  }" @click="
-                                    addTools(10, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 10, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/time.png" alt />
-                                      <div style="margin: 5px 0">倒计时</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(10) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(10, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(10) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(65) != -1,
-                                  }" @click="
-                                    addTools(65, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(65, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/firstToolList/pickPeople.png" alt />
-                                      <div style="margin: 5px 0">挑人</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(65) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(65, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(65) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="openTools(itemTaskIndex, 49, toolIndex)">
-                                <img src="../../../assets/icon/fourthToolList/group.png" alt />
-                                <div style="margin: 5px 0">学生分组</div>
-                              </div>
-                              <div class="check" @click="addTools(49, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(49) == -1" />
-                                <div class="checkDiv" v-else>
-                                  <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <!-- <div class="tool">
-                                  <div class="whiteBIcon" @click="openTools(itemTaskIndex, 62, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/interVideo.png" alt />
-                                    <div style="margin: 5px 0">交互视频</div>
-                                  </div>
-                                  <div class="check" @click="addTools(62, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(62) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div> -->
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 1">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(7) != -1,
-                                  }" @click="
-                                    addTools(7, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(7, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/mindNetwork.png" alt />
-                                      <div style="margin: 5px 0">思维网格</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(7) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(7, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(7) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(1) != -1,
-                                  }" @click="
-                                    addTools(1, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 1, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/whiteBoard.png" alt />
-                                      <div style="margin: 5px 0">电子白板</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(1) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(1, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(1) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(2, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/secondToolList/note.png"
-                                  alt
-                                />
-                                <div style="margin: 5px 0">便签</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(2, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(2) == -1"
-                                />
-                                <div class="checkDiv" v-else>
-                                  <img
-                                    src="../../../assets/icon/checkedIs.png"
-                                    alt
-                                  /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="addTools(6, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/secondToolList/doc.png" alt />
-                                <div style="margin: 5px 0">协同文档</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(6, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(6) == -1"
-                                />
-                                <div class="checkDiv" v-else>
-                                  <img
-                                    src="../../../assets/icon/checkedIs.png"
-                                    alt
-                                  /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(52) != -1,
-                                  }" @click="
-                                    addTools(52, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 52, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/text.png" alt />
-                                      <div style="margin: 5px 0">文档</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(52) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(52, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(52) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(3) != -1,
-                                  }" @click="
-                                    addTools(3, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 3, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/mindMapping.png" alt />
-                                      <div style="margin: 5px 0">思维导图</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(3) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(3, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(3) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(48) != -1,
-                                  }" @click="
-                                    addTools(48, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 48, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/table.png" alt />
-                                      <div style="margin: 5px 0">表格</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(48) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(48, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(48) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 6">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(49) != -1,
-                                  }" @click="
-                                    addTools(49, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 49, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/group.png" alt />
-                                      <div style="margin: 5px 0">学生分组</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(49) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(49, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(49) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 2">
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="addTools(5, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/thirdToolList/score.png"
-                                  alt
-                                />
-                                <div style="margin: 5px 0">量规评分</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(5, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(5) == -1"
-                                />
-                                <img
-                                  src="../../../assets/icon/checkedIs.png"
-                                  alt
-                                  v-else
-                                />
-                              </div>
-                            </div>-->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(4) != -1,
-                                  }" @click="
-                                    addTools(4, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 4, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/ask.png" alt />
-                                      <div style="margin: 5px 0">问卷调查</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(4) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(4, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(4) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(45) != -1,
-                                  }" @click="
-                                    addTools(45, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 45, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/choose.png" alt />
-                                      <div style="margin: 5px 0">选择题</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(45) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(45, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(45) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(15) != -1,
-                                  }" @click="
-                                    addTools(15, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 15, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/answer.png" alt />
-                                      <div style="margin: 5px 0">问答</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(15) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(15, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(15) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(16) != -1,
-                                  }" @click="
-                                    addTools(16, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(16, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/work.png" alt />
-                                      <div style="margin: 5px 0">作业提交</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(16) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(16, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(16) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(50) != -1,
-                                  }" @click="
-                                    addTools(50, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(50, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/plwork.png" alt />
-                                      <div style="margin: 5px 0">批量上传</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(50) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(50, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(50) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="openTools(itemTaskIndex, 40, toolIndex)">
-                                <img src="../../../assets/icon/thirdToolList/eval.png" alt />
-                                <div style="margin: 5px 0">个人评价</div>
-                              </div>
-                              <div class="check" @click="addTools(40, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(40) == -1" />
-                                <div class="checkDiv" v-else>
-                                  <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(41) != -1,
-                                  }" @click="
-                                    addTools(41, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 41, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                      <div style="margin: 5px 0">选择匹配</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(41) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(41, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(41) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(47) != -1,
-                                  }" @click="
-                                    addTools(47, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 47, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                      <div style="margin: 5px 0">排序</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(47) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(47, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(47) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                              <div
-                                class="whiteBIcon"
-                                @click="openTools(itemTaskIndex, 42, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/thirdToolList/mp3.png"
-                                  alt
-                                />
-                                <div style="margin: 5px 0">上传音频</div>
-                              </div>
-                              <div
-                                class="check"
-                                @click="addTools(42, itemTaskIndex, toolIndex)"
-                              >
-                                <img
-                                  src="../../../assets/icon/checkNo.png"
-                                  alt
-                                  v-if="itemTool.tool.indexOf(42) == -1"
-                                />
-                                <img
-                                  src="../../../assets/icon/checkedIs.png"
-                                  alt
-                                  v-else
-                                />
-                              </div>
-                            </div> -->
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 3">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(18) != -1,
-                                  }" @click="
-                                    addTools(18, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(18, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/trainPlatform.png" alt />
-                                      <div style="margin: 5px 0">训练平台</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(18) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(18, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(18) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(21) != -1,
-                                  }" @click="
-                                    addTools(21, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(21, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/program.png" alt />
-                                      <div style="margin: 5px 0">
-                                        AIoT Blockly
-                                      </div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(21) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(21, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(21) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(22, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/AIprogram2.png" alt />
-                                    <div style="margin: 5px 0">AI体验</div>
-                                  </div>
-                                  <div class="check" @click="addTools(22, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(22) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(23) != -1,
-                                  }" @click="
-                                    addTools(23, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(23, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/Pythonprogram.png" alt />
-                                      <div style="margin: 5px 0">AI Python</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(23) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(23, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(23) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(24) != -1,
-                                  }" @click="
-                                    addTools(24, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(24, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/AIprogram.png" alt />
-                                      <div style="margin: 5px 0">
-                                        AI Blockly
-                                      </div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(24) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(24, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(24) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(32) != -1,
-                                  }" @click="
-                                    addTools(32, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(32, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/code.png" alt />
-                                      <div style="margin: 5px 0">源码编辑</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(32) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(32, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(32) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(57) != -1,
-                                  }" @click="
-                                    addTools(57, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 57, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/cocopi.png" alt />
-                                      <div style="margin: 5px 0">CocoPi</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(57) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(57, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(57) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(63) != -1,
-                                  }" @click="
-                                    addTools(63, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(63, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/Wood.png" alt />
-                                      <div style="margin: 5px 0">海龟编程</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(63) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(63, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(63) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(71) != -1,
-                                  }" @click="
-                                    addTools(71, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(71, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/chatgpt.png" alt />
-                                      <div style="margin: 5px 0">AI智能体</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(71) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 7">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(40) != -1,
-                                  }" @click.stop="
-                                    addTools(40, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 40, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/eval.png" alt />
-                                      <div style="margin: 5px 0">个人评价</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(40) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(40, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(40) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                </div>
-                                <div class="toolSort" v-if="itemTool.toolType == 5">
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(28) != -1,
-                                  }" @click="
-                                    addTools(28, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(28, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/translation.png" alt />
-                                      <div style="margin: 5px 0">翻译</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(28) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(28, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(28) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(31) != -1,
-                                  }" @click="
-                                    addTools(31, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(31, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/networkPanel.png" alt />
-                                      <div style="margin: 5px 0">数字画板</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(31) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(31, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(31) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(39) != -1,
-                                  }" @click="
-                                    addTools(39, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(39, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/GeoGebra.png" alt />
-                                      <div style="margin: 5px 0">GeoGebra</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(39) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(39, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(39) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(66) != -1,
-                                  }" @click="
-                                    addTools(66, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(66, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/formulaEdi.png" alt />
-                                      <div style="margin: 5px 0">公式编辑</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(66) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(66, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(66) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <!-- <div class="tool">
-                                    <div class="whiteBIcon" @click="addTools(67, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/secondToolList/molStr.png" alt />
-                                      <div style="margin: 5px 0">分子结构</div>
-                                    </div>
-                                    <div class="check" @click="addTools(67, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(67) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div> -->
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(68) != -1,
-                                  }" @click="
-                                    addTools(68, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      addTools(68, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/timeAxis.png" alt />
-                                      <div style="margin: 5px 0">时间轴</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(68) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(68, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(68) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(69) != -1,
-                                  }" @click="
-                                    addTools(69, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 69, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/english.png" alt />
-                                      <div style="margin: 5px 0">英语写作</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(69) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <!-- <div class="check" @click="addTools(4, itemTaskIndex, toolIndex)">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(4) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div> -->
-                                  </div>
-                                  <div class="tool" :class="{
-                                    isToolChoose:
-                                      itemTool.tool.indexOf(70) != -1,
-                                  }" @click="
-                                    addTools(70, itemTaskIndex, toolIndex)
-                                    ">
-                                    <div class="whiteBIcon" @click.stop="
-                                      openTools(itemTaskIndex, 70, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/englishVoice.png" alt />
-                                      <div style="margin: 5px 0">英语口语</div>
-                                    </div>
-                                    <div class="noCTool">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                    <div class="isCTool" v-if="itemTool.tool.indexOf(70) != -1">
-                                      <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                                    </div>
-                                  </div>
-                                  <!-- <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(28, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/translation.png" alt />
-                                    <div style="margin: 5px 0">翻译</div>
-                                  </div>
-                                  <div class="check" @click="addTools(28, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(28) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(37, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/mohe.png" alt />
-                                    <div style="margin: 5px 0">魔盒识字</div>
-                                  </div>
-                                  <div class="check" @click="addTools(37, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(37) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(38, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/24game.png" alt />
-                                    <div style="margin: 5px 0">24点</div>
-                                  </div>
-                                  <div class="check" @click="addTools(38, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(38) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(31, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/networkPanel.png" alt />
-                                    <div style="margin: 5px 0">数学画板</div>
-                                  </div>
-                                  <div class="check" @click="addTools(31, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(31) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(39, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/secondToolList/GeoGebra.png" alt />
-                                    <div style="margin: 5px 0">GeoGebra</div>
-                                  </div>
-                                  <div class="check" @click="addTools(39, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(39) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(58, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/car.png" alt />
-                                    <div style="margin: 5px 0">模拟驾驶</div>
-                                  </div>
-                                  <div class="check" @click="addTools(58, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(58) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(59, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/lineSearch.png" alt />
-                                    <div style="margin: 5px 0">路径搜索</div>
-                                  </div>
-                                  <div class="check" @click="addTools(59, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(59) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(60, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/deepLearning.png" alt />
-                                    <div style="margin: 5px 0">深度学习</div>
-                                  </div>
-                                  <div class="check" @click="addTools(60, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(60) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(61, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/fourthToolList/allHistory.png" alt />
-                                    <div style="margin: 5px 0">全历史</div>
-                                  </div>
-                                  <div class="check" @click="addTools(61, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(61) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                              <div class="toolSort" v-if="itemTool.toolType == 4">
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(26, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/thirdToolList/courseDesign.png" alt />
-                                    <div style="margin: 5px 0">课程设计</div>
-                                  </div>
-                                  <div class="check" @click="addTools(26, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(26) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div>
-                                <div class="tool">
-                                  <div class="whiteBIcon" @click="addTools(25, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/thirdToolList/evalua.png" alt />
-                                    <div style="margin: 5px 0">目标管理</div>
-                                  </div>
-                                  <div class="check" @click="addTools(25, itemTaskIndex, toolIndex)">
-                                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(25) == -1" />
-                                    <div class="checkDiv" v-else>
-                                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                    </div>
-                                  </div>
-                                </div> -->
-                                  <!-- <div class="tool">
-                              <div class="whiteBIcon" @click="addTools(44, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/thirdToolList/hanClass.png" alt />
-                                <div style="margin: 5px 0">汉字宫</div>
-                              </div>
-                              <div class="check" @click="addTools(44, itemTaskIndex, toolIndex)">
-                                <img src="../../../assets/icon/checkNo.png" alt v-if="itemTool.tool.indexOf(44) == -1" />
-                                <div class="checkDiv" v-else>
-                                  <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                </div>
-                              </div>
-                            </div> -->
-                                </div>
-                              </div>
-                              <!-- v-show="!itemTool.isFold3" -->
-                              <div class="op_tool_box"
-                                v-loading="taskDetailLoading3.indexOf('task-' + itemTaskIndex + toolIndex) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                                <textarea rows="2" v-autoHeight="70" type="text" placeholder="添加工具描述"
-                                  class="binfo_input" style="
-                                    margin: 0 0 20px 0;
-                                    width: 100% !important;
-                                  " v-model="itemTool.toolDetail"></textarea>
-                                <div class="op_box">
-                                  <div class="op_remark">*可以将需要优化的建议添加在工具描述后,点击“智能优化”,自动进行修改</div>
-                                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                                    <div class="r_pub_button_op"
-                                      @contextmenu.prevent="openAiDialog(1, 'aiDetail3', itemTool, itemTaskIndex, toolIndex)"
-                                      @click="openAiDialog(2, 'aiDetail3', itemTool.toolDetail, itemTaskIndex, toolIndex)">
-                                      智能优化</div>
-                                                                 
-                                  </el-tooltip>
-                                </div>
-                              </div>
-                            </div>
-                            <!-- <div class="addToolFun2" @click="addToolFun(itemTaskIndex)">
-                              <div class="addToolImg">
-                                <img src="../../../assets/icon/add.png" alt />
-                              </div>
-                              <div>添加工具</div>
-                            </div> -->
-                            <button class="c_pub_button_add pub_btn_tool_img" @click="addToolFun(itemTaskIndex)" style="
-                                margin: 0 auto;
-                                padding: 0 30px;
-                                height: 45px;
-                              ">
-                              添加工具
-                            </button>
-                          </div>
-                        </div>
-                        <div v-else-if="
-                          unitJson[unitIndex].easy == 2 ||
-                          unitJson[unitIndex].easy == 4
-                        " class="toolChoose" style="padding: 0 0 40px">
-                          <div class="tools">
-                            <div class="leftTools" style="width: 100%" v-for="(
-                                itemTool, toolIndex
-                              ) in itemTask.toolChoose" :key="toolIndex">
-                              <div>
-                                <textarea rows="3" type="text" placeholder="添加工具描述" class="binfo_input" style="
-                                    margin: 0 0 20px 0;
-                                    width: 100% !important;
-                                  " v-model="itemTool.toolDetail"></textarea>
-                              </div>
-                              <div style="
-                                  display: flex;
-                                  flex-direction: row;
-                                  align-items: baseline;
-                                  flex-wrap: nowrap;
-                                  justify-content: flex-start;
-                                  position: relative;
-                                ">
-                                <div style="margin-right: 20px; font-weight: bold"
-                                  :id="'gj' + itemTaskIndex + '' + toolIndex">
-                                  工具 {{ toolIndex + 1 }} :
-                                </div>
-                                <div class="remove" @click="deleteTool(itemTaskIndex, toolIndex)"
-                                  v-if="itemTask.toolChoose.length > 1" style="right: 0"></div>
-                              </div>
-                              <div style="min-height: 163px">
-                                <div class="toolSort">
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 1, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/whiteBoard.png" alt />
-                                      <div style="margin: 5px 0">电子白板</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(1, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(1) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 52, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/text.png" alt />
-                                      <div style="margin: 5px 0">文档</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(52, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(52) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 3, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/secondToolList/mindMapping.png" alt />
-                                      <div style="margin: 5px 0">思维导图</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(3, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(3) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 4, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/ask.png" alt />
-                                      <div style="margin: 5px 0">问卷调查</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(4, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(4) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 45, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/choose.png" alt />
-                                      <div style="margin: 5px 0">选择题</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(45, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(45) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 15, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/answer.png" alt />
-                                      <div style="margin: 5px 0">问答</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(15, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(15) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      addTools(16, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/work.png" alt />
-                                      <div style="margin: 5px 0">作业提交</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(16, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(16) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 50, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/plwork.png" alt />
-                                      <div style="margin: 5px 0">批量上传</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(50, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(50) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 41, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/select.png" alt />
-                                      <div style="margin: 5px 0">选择匹配</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(41, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(41) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 47, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/conSentences.png" alt />
-                                      <div style="margin: 5px 0">排序</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(47, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(47) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 48, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/fourthToolList/table.png" alt />
-                                      <div style="margin: 5px 0">表格</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(48, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(48) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                            <!-- <div class="addToolFun" style="margin-bottom: 20px" @click="addToolFun(itemTaskIndex)">
-                              <div class="addToolImg">
-                                <img src="../../../assets/icon/add.png" alt />
-                              </div>
-                              <div>添加工具</div>
-                            </div> -->
-                            <button class="c_pub_button_add pub_btn_tool_img" @click="addToolFun(itemTaskIndex)"
-                              style="margin: 35px auto 20px">
-                              添加工具
-                            </button>
-                          </div>
-                        </div>
-                        <div v-else-if="
-                          unitJson[unitIndex].easy == 1 ||
-                          (unitJson[unitIndex].easy == 5 &&
-                            itemTask.taskType == 2)
-                        " class="toolChoose" style="padding: 0 0 40px">
-                          <div class="tools">
-                            <div class="leftTools" style="width: 100%; padding: 0 0 15px 0" v-for="(
-                                itemTool, toolIndex
-                              ) in itemTask.toolChoose" :key="toolIndex">
-                              <div style="min-height: 163px">
-                                <div class="toolSort">
-                                  <div class="tool">
-                                    <div class="whiteBIcon" @click="
-                                      openTools(itemTaskIndex, 50, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/thirdToolList/plwork.png" alt />
-                                      <div style="margin: 5px 0">批量上传</div>
-                                    </div>
-                                    <div class="check" @click="
-                                      addTools(50, itemTaskIndex, toolIndex)
-                                      ">
-                                      <img src="../../../assets/icon/checkNo.png" alt
-                                        v-if="itemTool.tool.indexOf(50) == -1" />
-                                      <div class="checkDiv" v-else>
-                                        <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                                      </div>
-                                    </div>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="elist_css" v-if="!(unitJson[unitJson.length - 1].easy == 4)"
-                          v-loading="taskDetailLoading4.indexOf('task-' + itemTaskIndex) !== -1" element-loading-text="小可正在努力生成中,请稍等...">
-                          <div class="elist_title">
-                            <div style="
-                                display: flex;
-                                flex-direction: row;
-                                align-items: center;
-                                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 class="line" style="width: 90%"></div> -->
-                            </div>
-                          </div>
-                          <div class="mbCss">
-                            <div class="pjCss" :style="{
-                              width: itemTask.isEvaFold
-                                ? 'calc(100% - 55%)'
-                                : 'calc(100% - 120px)',
-                            }">
-                              <div v-if="itemTask.eList && itemTask.eList.length" class="elist_input">
-                                <div v-for="(eItem, eIndex) in itemTask.eList" :key="eIndex" class="elist_input_box">
-                                  <span>评价维度:</span>
-                                  <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].value || '填写评价维度'" placement="top" popper-class="text_tooltip2"> -->
-                                  <input type="input" v-model="itemTask.eList[eIndex].value" placeholder="填写评价维度" />
-                                  <!-- </el-tooltip> -->
-                                  <!-- <span>评星等级:</span>
-                                  <el-rate v-model="itemTask.eList[eIndex].score" @change="setEListStar()"
-                                    disabled></el-rate> -->
-                                  <div class="remove" @click="
-                                    deletEList(
-                                      unitIndex,
-                                      itemTaskIndex,
-                                      eIndex
-                                    )
-                                    "></div>
-                                  <div class="elist_inptu_text">
-                                    <span>维度描述:</span>
-                                    <!-- <el-tooltip effect="dark" :content="itemTask.eList[eIndex].detail || '填写维度描述'" placement="top" popper-class="text_tooltip2"> -->
-                                    <input type="input" v-model="itemTask.eList[eIndex].detail" placeholder="填写维度描述" />
-                                    <!-- </el-tooltip> -->
-                                  </div>
-                                  <div class="elist_inptu_text" v-if="evalua">
-                                    <span>目标:</span>
-                                    <!-- <input type="input" v-model="itemTask.eList[eIndex].target" placeholder="填写维度描述" /> -->
-                                    <!-- <el-select v-model="itemTask.eList[eIndex].target" placeholder="请选择目标"
-                                @change="forceUpdate()">
-                                <el-option v-for="(e, eIndex) in targetArray" :key="eIndex" :label="e.name"
-                                  :value="e.name">
-                                </el-option>
-                              </el-select> -->
-                                    <el-cascader :options="targetArray" v-model="itemTask.eList[eIndex].target"
-                                      :props="{ checkStrictly: true }" :show-all-levels="false" clearable></el-cascader>
-                                  </div>
-                                </div>
-                              </div>
-                              <!-- <div class="addToolFun" @click="addEList(unitIndex, itemTaskIndex)"
-                                style="margin: 35px 35px 0 0">
-                                <div class="addToolImg">
-                                  <img src="../../../assets/icon/add.png" alt />
-                                </div>
-                                <div>添加</div>
-                              </div> -->
-                              <div class="eva_btn_box">
-                                <div class="eva_btn_left_box">
-                                  <button class="c_pub_button_add pub_btn_eval_img"
-                                    @click="addEList(unitIndex, itemTaskIndex)">
-                                    添加
-                                  </button>
-                                  <button class="c_pub_button_add pub_btn_eval_source_img"
-                                    @click="openEList(unitIndex, itemTaskIndex)">
-                                    资源
-                                  </button>
-                                </div>
-                                <button class="c_pub_button_add" @click="addCET(unitIndex, itemTaskIndex)"
-                                  v-if="itemTask.eList && itemTask.eList.length">
-                                  添加资源模板
-                                </button>
-                              </div>
-                            </div>
-                            <div v-if="evalua" style="
-                                border: 1px solid #e5e5e5;
-                                box-shadow: 3px 1px 15px 3px #e0e0e0;
-                              " :style="{
-                                width: itemTask.isEvaFold ? '55%' : '116px',
-                              }" class="evaCss">
-                              <!-- <div class="e_add_top">
-                              <div class="e_add_title">
-                                <span>当前使用目标管理</span>
-                                <span>{{ eTitle }}</span>
-                                <img src="../../../assets/line.png" class="cru_line" style="
-                                width: 125px;
-                                height: 20px;
-                                bottom: -10px;
-                                left: 155px;
-                              " />
-                              </div>
-                            </div> -->
-                              <div class="e_add_content" style="width: 100%">
-                                <div class="e_add_list_pbox" style="width: 100%">
-                                  <div class="e_add_list_pbox_title">
-                                    <span class="type_title" v-if="itemTask.isEvaFold">切换模式</span>
-                                    <div class="type_content" v-if="itemTask.isEvaFold">
-                                      <span :class="{ active: typeMode == 1 }"
-                                        @click="OtherMb(1, itemTaskIndex)">目标树</span>
-                                      <span :class="{ active: typeMode == 2 }"
-                                        @click="OtherMb(2, itemTaskIndex)">目标罗盘</span>
-                                      <!-- <span :class="{ active: typeMode == 3 }" @click="OtherMb(3)">目标看板</span> -->
-                                    </div>
-                                    <div v-if="itemTask.isEvaFold" class="show_taskD show" style="margin: 0 0 0 auto"
-                                      @click="foldEva(itemTaskIndex)">
-                                      <img src="../../../assets/icon/new/icon-slide.png" />收起目标
-                                    </div>
-                                    <div v-else style="margin: 0 0 0 auto" class="show_taskD"
-                                      @click="foldEva(itemTaskIndex)">
-                                      <img src="../../../assets/icon/new/icon-slide.png" />展开目标
-                                    </div>
-                                  </div>
-                                  <div class="e_add_list_pbox_content" v-if="itemTask.isEvaFold"
-                                    style="min-height: 200px">
-                                    <Mind :showBar="false" :mindData="data" style="width: 100%" :jsmindId="unitIndex + '-' + itemTaskIndex + 'mind'
-                                      " v-if="typeMode == 1"></Mind>
-                                    <Sunburst :Josn="eJson" :num="eJSONNum" style="width: 100%" v-if="typeMode == 2">
-                                    </Sunburst>
-                                    <SeeBoard :Josn="eJson" :num="eJSONNum" :ename="eTitle" style="width: 100%"
-                                      v-if="typeMode == 3"></SeeBoard>
-                                  </div>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="funBlock" style="padding: 0">
-                          <div class="fold" @click="fold(itemTaskIndex, $event)">
-                            <div class="arrow" :class="{ arrowZ: !(itemTask.isFold === 1) }"></div>
-                            <div>
-                              {{
-                              itemTask.isFold === 1 ? "展开任务" : "收起任务"
-                              }}
-                            </div>
-                          </div>
-                          <!-- <div class="fold" @click="fold(itemTaskIndex, $event, 0)">
-                          <div>展开</div>
-                          <div class="arrow">
-                            <img src="../../../assets/icon/expand.png" alt />
-                          </div>
-                        </div> -->
-                        </div>
-                      </div>
-                    </div>
-                    <div class="addTaskBorder" v-if="!unitJson[unitIndex].easy">
-                      <!-- <div>
-                        <img src="../../../../assets/icon/new/addStage.png" alt />
-                        <span>添加任务</span>
-                      </div> -->
-                      <button class="c_pub_button_confirm pub_btn_add_task_img" @click="addTaskBorder">
-                        添加任务
-                      </button>
-                    </div>
-                  </div>
-                  <div class="info_btnBox3">
-                    <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1" @click="
-                      goTo(
-                        '/course?userid=' +
-                        userid +
-                        '&oid=' +
-                        oid +
-                        '&org=' +
-                        org +
-                        '&role=' +
-                        role
-                      )
-                      ">
-                      返回课程
-                    </button>
-                    <button class="c_pub_button_return pub_btn_last_img"
-                      v-if="steps > 1 && steps != 5 && istemplate != 1" @click="lastSteps" style="background: #dbdbdb">
-                      {{ steps == 4 ? "返回课程" : "上一步" }}
-                    </button>
-                    <button class="c_pub_button_confirm" v-if="steps < 4 && istemplate != 1" @click="nextSteps" :class="{
-                      pub_btn_next_img: steps != 3,
-                      pub_btn_finish_img: steps == 3,
-                    }">
-                      {{ steps == 3 ? "确认上传" : "下一步" }}
-                    </button>
-                    <button class="c_pub_button_confirm" v-if="istemplate == 1" @click="openSaveTips">{{ templateid ?
-                      '修改模板' : '保存模板'}}</button>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div style="
-              width: calc(100% - 20px);
-              background: rgb(255, 255, 255);
-              border-radius: 10px;
-            " v-if="steps == 4">
-            <div class="basic_box_success">
-              <div class="right_img">
-                <img src="../../../assets/icon/right.png" alt />
-              </div>
-              <div style="font-weight: bold">成功</div>
-              <!-- <div>您的课程编号</div>
-              <div class="number">{{ number }}</div>-->
-              <!-- <div class="success_button">
-                <div class="look_course" @click="isNoFinsh">
-                  邀请老师协同编辑
-                </div>
-                <div class="attend_others" @click="goCourse">预览课程</div>
-              </div> -->
-            </div>
-          </div>
-          <div :class="{ info_btnBox: isBtnDisplay, info_btnBox2: !isBtnDisplay }" @mouseenter="btnDisplay(true)"
-            @mouseleave="btnDisplay(false)" v-if="false">
-            <button class="c_pub_button_return pub_btn_return_img" v-if="steps == 1 && isBtnDisplay" @click="
-              goTo(
-                '/course?userid=' +
-                userid +
-                '&oid=' +
-                oid +
-                '&org=' +
-                org +
-                '&role=' +
-                role
-              )
-              ">
-              返回课程
-            </button>
-            <button class="c_pub_button_return pub_btn_last_img" v-if="steps > 1 && steps != 5 && isBtnDisplay"
-              @click="lastSteps">
-              {{ steps == 4 ? "返回课程" : "上一步" }}
-            </button>
-            <button class="c_pub_button_confirm" v-if="steps < 4 && isBtnDisplay" @click="nextSteps" :class="{
-              pub_btn_next_img: steps != 3,
-              pub_btn_finish_img: steps == 3,
-            }">
-              {{ steps == 3 ? "确认上传" : "下一步" }}
-            </button>
-          </div>
-        </div>
-      </div>
-      <div class="leftBar" v-if="istemplate == 1">
-        <aiTips ttitle="基础资料" title="课程描述优化" :detail="aiJson.aiDetail" pan="aiDetail" @setAiJson="setAiJson" />
-        <aiTips ttitle="基础资料" title="生成大纲按钮" :detail="aiJson.aiOutline" pan="aiOutline" @setAiJson="setAiJson" />
-        <aiTips ttitle="课程大纲" title="大纲描述优化" :detail="aiJson.aiDetail1" pan="aiDetail1" @setAiJson="setAiJson" />
-        <!-- <aiTips ttitle="课程大纲" title="生成教案按钮" :detail="aiJson.aiTeacher" pan="aiTeacher" @setAiJson="setAiJson" /> -->
-        <!-- <aiTips ttitle="生成教案" title="教案描述优化" :detail="aiJson.teacherDetail" pan="teacherDetail"
-          @setAiJson="setAiJson" /> -->
-        <aiTips ttitle="生成教案" title="教案描述优化" :detail="aiJson.teacherDetail2" pan="teacherDetail2"
-          @setAiJson="setAiJson" />
-        <aiTips ttitle="生成教案" title="生成任务按钮" :detail="aiJson.aiTask" pan="aiTask" @setAiJson="setAiJson" />
-        <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" />
-      </div>
-    </div>
-    <el-dialog title="提示" :visible.sync="dialogVisible" :append-to-body="true" width="25%" :before-close="handleClose"
-      class="dialog_diy2 customWidth">
-      <div>请复制该链接邀请协同编辑</div>
-      <div>http://www.boomyon.com/index-zhang.com</div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary">复制链接分享</el-button>
-        <el-button @click="dialogVisible = false">取消</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog :title="updateBoolean2 ? '查看文档' : '添加文档'" :visible.sync="dialogVisible1" :append-to-body="true"
-      width="25%" :before-close="handleClose" class="dialog_diy2 customWidth">
-      <el-form>
-        <el-form-item label="文档标题">
-          <el-input v-model="tTitle" auto-complete="off" placeholder="请输入文档标题名..."></el-input>
-        </el-form-item>
-        <div>文档简介</div>
-        <editor-bar v-model="tdetail" @change="change"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible1 = false">取 消</el-button>
-        <el-button type="primary" @click="addWord" v-if="!updateBoolean2">添加</el-button>
-        <el-button type="primary" @click="upWord" v-else>修 改</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加文档" :visible.sync="dialogVisible2" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <el-form-item label="文档标题">
-          <el-input v-model="templateC.title" auto-complete="off" placeholder="请输入文档标题名..."></el-input>
-        </el-form-item>
-        <div>文档内容</div>
-        <editor-bar v-model="cTemplate" @change="change"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="clearChoose">取 消</el-button>
-        <el-button type="primary" @click="wordNext()">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加富文本" :visible.sync="dialogVisible6" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <el-form-item label="文本标题">
-          <el-input ref="fuInput" v-model="AttText.title" auto-complete="off" @input="change2"
-            placeholder="请输入文本标题..."></el-input>
-        </el-form-item>
-        <!-- <div>富文本内容</div> -->
-        <editor-bar v-model="AttText.text" @change="change" v-if="dialogVisible6"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="clearAttText">取 消</el-button>
-        <el-button type="primary" @click="isAddOrUpdateAttText">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加链接" :visible.sync="dialogVisible7" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy lineCss">
-      <el-form>
-        <el-form-item label="标题" :label-width="formLabelWidth">
-          <span>
-            <el-input placeholder="请输入链接标题" clearable v-model="lineTitle" class="add_input"></el-input>
-          </span>
-        </el-form-item>
-        <el-form-item label="链接" :label-width="formLabelWidth">
-          <span>
-            <el-input placeholder="请输入链接" clearable v-model="line" class="add_input"></el-input>
-          </span>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="clearLine">取 消</el-button>
-        <el-button type="primary" @click="isAddOrUpdateLine">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog :title="updateSourcePan ? '修改资源' : '添加资源'" :visible.sync="dialogVisibleSource" :append-to-body="true"
-      width="100%" :before-close="handleClose" class="dialog_diy source_diy">
-      <div>
-        <sourceDialog :sourceData.sync="sourceData" :updateSourcePan="updateSourcePan"></sourceDialog>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleSource = false">取 消</el-button>
-        <el-button type="primary" @click="addSource" v-if="!updateSourcePan">确定</el-button>
-        <el-button type="primary" @click="updateSource" v-else>确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加课程成员" :visible.sync="dialogVisible3" :append-to-body="true" width="25%" height="80%"
-      :before-close="handleClose" class="addNewPP customWidth">
-      <div class="people">
-        <div class="people_top">
-          <div class="people_nav">选择成员</div>
-          <div class="people_top_right">
-            <div class="people_search">
-              <el-input style="height: 100%" placeholder="搜索成员名称" v-model="searchPeople"></el-input>
-              <div class="search_img" @click="searchStudent">
-                <img src="../../../assets/icon/search.png" alt />
-              </div>
-            </div>
-          </div>
-        </div>
-        <el-checkbox-group v-model="checkboxList" class="people_name">
-          <el-checkbox v-for="item in studentJuri" :key="item.userid" :label="item.userid">{{ item.name ? item.name :
-            "暂无学生可选" }}</el-checkbox>
-        </el-checkbox-group>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible3 = false">取 消</el-button>
-        <el-button type="primary" @click="isAddPP">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="选择授课班级" :visible.sync="dialogVisibleClass" :append-to-body="true" width="600px" height="80%"
-      :before-close="handleClose" class="addNewPP2">
-      <div class="check_classBox">
-        <div class="check_class_right">
-          <div class="check_class" :class="{ activeX: gradeId == '' }" @click="(gradeId = ''), getClass()">
-            全部
-          </div>
-          <el-tooltip placement="top" :content="item.name" v-for="(item, index) in gradeList" :key="index">
-            <div class="check_class" :class="{ activeX: gradeId == item.id }" @click="(gradeId = item.id), getClass()">
-              {{ item.name }}
-            </div>
-          </el-tooltip>
-        </div>
-        <div class="check_class_left">
-          <div class="check_class_all_box">
-            <div class="check_class_left_title">选择班级</div>
-            <div style="display: flex; align-items: center; margin-left: auto">
-              <el-checkbox v-model="checkAll" @change="handleCheckAllChange" class="all_check">全选</el-checkbox>
-            </div>
-          </div>
-          <!-- <div class="class_item" style="position:absolute; margin:0" v-if="grade2.length">            
-            <el-checkbox v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
-          </div> -->
-          <el-checkbox-group v-model="checkboxList2" class="check_class_item" @change="InviteChange"
-            v-if="grade2.length">
-            <div v-for="item in grade2" :key="item.id" class="class_item">
-              <el-checkbox :label="item.id">
-                {{ item.name }}
-              </el-checkbox>
-            </div>
-          </el-checkbox-group>
-          <div v-if="!grade2.length">暂无数据</div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleClass = false">取 消</el-button>
-        <el-button type="primary" @click="isAddClass">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加协同成员" :visible.sync="dialogVisibleMember" :append-to-body="true" width="25%" height="80%"
-      :before-close="handleClose" class="addNewPP customWidth">
-      <div style="display: flex;justify-content: space-between;">
-        <div style="width: 100px;overflow: auto;overflow-x: hidden; height: 350px;flex-shrink:0;padding-right: 10px;">
-          <div class="CollaborativeCss" :class="{CollaborativeCss2:collid == ''}" @click="getTeacher('')">
-            全部
-          </div>
-          <div class="CollaborativeCss" :class="{CollaborativeCss2:i.id == collid}" @click="getTeacher(i.id)"
-            v-for="(i) in CollaborativeTeaList" :key="i.id">
-            <el-tooltip placement="top" :content="i.name">
-              <span>{{i.name}}</span>
-            </el-tooltip>
-          </div>
-          <div class="CollaborativeCss" :class="{CollaborativeCss2:collid == '1xpz'}" @click="getTeacherCopy()">
-            其他
-          </div>
-        </div>
-        <div style="width: calc(100% - 100px);" v-loading="CollLoading">
-          <div class="people">
-            <div class="people_top">
-              <div class="people_top_right">
-                <div class="people_search">
-                  <el-input placeholder="搜索成员名称" v-model="searchTN" @keyup.enter.native="getTeacher(collid)"></el-input>
-                  <div class="search_img" @click="getTeacher(collid)">
-                    <img src="../../../assets/icon/search.png" alt />
-                  </div>
-                </div>
-              </div>
-              <div class="people_nav" style="display: flex; align-items: center">
-                <div class="check_class_left_title">选择成员</div>
-                <div style="display: flex; align-items: center; margin-left: auto">
-                  <el-checkbox v-model="checkAll2" @change="handleCheckAllChange2" class="all_check">全选</el-checkbox>
-                </div>
-              </div>
-            </div>
-            <el-checkbox-group v-model="checkboxList3" class="people_name" v-if="teacherJuri.length"
-              @change="InviteChange2">
-              <el-checkbox v-for="item in teacherJuri" :key="item.userid" :label="item.userid">
-                <div class="t_j_box">
-                  <el-tooltip placement="top" :content="item.name ? item.name : '暂无姓名'">
-                    <span>{{ item.name ? item.name : "暂无姓名" }}</span>
-                  </el-tooltip>
-                  <el-tooltip placement="top" :content="item.username.split('@')[0]">
-                    <span>{{ item.username.split('@')[0] }}</span>
-                  </el-tooltip>
-                  <el-tooltip placement="top" :content="item.school">
-                    <span>{{ item.school }}</span>
-                  </el-tooltip>
-                </div>
-              </el-checkbox>
-            </el-checkbox-group>
-            <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
-          </div>
-        </div>
-      </div>
-
-
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMember = false">取 消</el-button>
-        <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="创建问卷" :visible.sync="dialogVisible5" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(4);
-    }
-      " class="dialog_diy fullStyle">
-      <div style="height: 100%">
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <!-- <div style="margin-right: 20px; font-size: 20px">标题:</div> -->
-          <el-input v-model="askJson.askTitle" placeholder="请输入标题" style="width: 400px"></el-input>
-        </div>
-        <div class="a_addBox" style="height: calc(100% - 50px)">
-          <!-- <div style="font-size: 16px; color: #c7c7c7">请输入题目内容</div> -->
-          <div class="a_add_box" v-for="(item1, index1) in askJson.askCount" :key="index1">
-            <div class="a_add_checkType">
-              <span :class="{
-                active:
-                  askJson.askJson[index1].type == '1' ||
-                  !askJson.askJson[index1].type,
-              }" @click="checkAskType('1', askJson.askJson[index1])">单选题</span>
-              <span :class="{ active: askJson.askJson[index1].type == '2' }"
-                @click="checkAskType('2', askJson.askJson[index1])">多选题</span>
-            </div>
-            <div class="a_add_head">
-              <div style="
-                  display: flex;
-                  align-items: center;
-                  width: 100%;
-                  margin-right: 20px;
-                ">
-                <span style="min-width: fit-content">{{
-                  index1 + 1 + "、"
-                  }}</span>
-                <textarea class="a_add_head_input textarea_css" v-autoHeight="40"
-                  v-model="askJson.askJson[index1].askstitle" placeholder="请输入题目" @change="() => {
-                    $forceUpdate();
-                  }
-                    "></textarea>
-              </div>
-              <div class="moveBtn moveBtn2" style="margin: 0 20px 0 0px" v-if="askJson.askCount != 1">
-                <div class="chapter_upload_up" @click.stop="askMove(1, index1)"></div>
-                <div class="chapter_upload_down" @click.stop="askMove(2, index1)"></div>
-              </div>
-              <div class="a_add_head_div">
-                <el-button type="primary" size="small" @click="deleteAskList(index1)" v-if="askJson.askCount != 1">删除
-                </el-button>
-                <el-button type="primary" size="small" @click="addAskList(index1)">添加</el-button>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input" style="flex-direction: column">
-                <div v-for="(item2, checkIndex) in askJson.askJson[index1].askItem" :key="checkIndex" style="
-                    margin: 20px 10px 0 0;
-                    display: flex;
-                    align-items: center;
-                    position: relative;
-                  ">
-                  <div style="margin-right: 10px">选项{{ checkIndex + 1 }}</div>
-                  <textarea class="a_add_head_input textarea_css" v-autoHeight="40"
-                    v-model="askJson.askJson[index1].checkList[checkIndex]" placeholder="请输入选项" style="width: 300px"
-                    @change="() => {
-                      $forceUpdate();
-                    }
-                      "></textarea>
-                  <div class="moveBtn moveBtn2" style="margin: 0 0px 0 20px"
-                    v-if="askJson.askJson[index1].askItem != 1">
-                    <div class="chapter_upload_up" @click.stop="checkMove(1, index1, checkIndex)"></div>
-                    <div class="chapter_upload_down" @click.stop="checkMove(2, index1, checkIndex)"></div>
-                  </div>
-                  <div class="a_add_body_div">
-                    <el-button type="primary" size="small"
-                      @click="addcheckList(askJson.askJson[index1], checkIndex)">添加</el-button>
-                    <el-button type="primary" size="small" @click="
-                      deletecheckList(askJson.askJson[index1], checkIndex)
-                      " v-if="askJson.askJson[index1].askItem != 1">删除
-                    </el-button>
-                  </div>
-                </div>
-              </div>
-              <!-- <div class="a_add_body_div">
-                <el-button style="margin: 10px 0px 0 0" type="primary" size="small"
-                  @click="addcheckList(askJson.askJson[index1])">添加</el-button>
-                <el-button type="primary" size="small" style="margin: 10px 0 0 10px"
-                  @click="deletecheckList(askJson.askJson[index1])" v-if="askJson.askJson[index1].askItem != 1">删除
-                </el-button>
-              </div> -->
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(4)">取 消</el-button>
-        <el-button type="primary" @click="addAsk">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="创建选择题" :visible.sync="dialogVisibleChoice" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(45);
-    }
-      " class="dialog_diy fullStyle">
-      <div style="height: 100%">
-        <!-- <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <div style="margin-right: 20px; font-size: 20px">标题:</div>
-          <el-input v-model="testJson.testTitle" placeholder="请输入标题" style="width: 400px"></el-input>
-        </div> -->
-        <div class="a_addBox" style="height: 100%">
-          <div style="
-              font-size: 16px;
-              color: #c7c7c7;
-              display: flex;
-              align-items: center;
-            ">
-            <!-- 请输入题目内容 -->
-            <button class="c_pub_button_add pub_btn_paste_img" @click="pasteOption" style="margin-left: 10px"
-              v-if="isPasteChoice">
-              智能粘贴
-            </button>
-          </div>
-          <div class="a_add_box" v-for="(item1, index1) in testJson.testCount" :key="index1">
-            <div class="a_add_checkType">
-              <span :class="{ active: testJson.testJson[index1].type == '1' }"
-                @click="checkTestType('1', testJson.testJson[index1])">单选题</span>
-              <span :class="{ active: testJson.testJson[index1].type == '2' }"
-                @click="checkTestType('2', testJson.testJson[index1])">多选题</span>
-            </div>
-            <div class="a_add_head">
-              <div class="timuUpImg">
-                <div style="display: flex; align-items: center">
-                  <span style="min-width: fit-content">{{
-                    index1 + 1 + "、"
-                    }}</span>
-                  <!-- <el-input class="a_add_head_input"  v-autoHeight="40" resize="none" v-model="testJson.testJson[index1].teststitle" type="textarea"
-                    placeholder="请输入题目">
-                  </el-input> -->
-                  <textarea class="a_add_head_input textarea_css" v-autoHeight="40"
-                    v-model="testJson.testJson[index1].teststitle" placeholder="请输入题目" @change="() => {
-                      $forceUpdate();
-                    }
-                      "></textarea>
-                </div>
-                <div class="moveBtn moveBtn2" v-if="testJson.testCount != 1">
-                  <div class="chapter_upload_up" @click.stop="testMove(1, index1)"></div>
-                  <div class="chapter_upload_down" @click.stop="testMove(2, index1)"></div>
-                </div>
-                <div class="xzUpImg" @click.stop="addImg($event)" style="margin-right: 10px">
-                  <img src="../../../assets/icon/xzUpImg.png" alt="" />
-                  <input type="file" accept="image/*" style="display: none"
-                    @change="beforeUploadTiMu($event, index1)" />
-                </div>
-              </div>
-              <div class="a_add_head_div">
-                <el-button type="primary" size="small" @click="deleteTestList(index1)" v-if="testJson.testCount != 1">删除
-                </el-button>
-                <el-button type="primary" size="small" @click="addTestList(index1)">添加</el-button>
-              </div>
-            </div>
-            <div class="timuImgBox" v-if="
-              testJson.testJson[index1].timuList &&
-              testJson.testJson[index1].timuList.length
-            ">
-              <div v-for="(timg, tIndex) in testJson.testJson[index1].timuList" :key="tIndex" class="timuImg"
-                @click.stop="previewImg(timg.src)">
-                <img :src="timg.src" alt="" />
-                <div class="deleteWord" @click.stop="deleteM(index1, tIndex)">
-                  <img src="../../../assets/icon/delete.png" alt="" />
-                </div>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input a_add_input_choice">
-                <el-radio-group v-model="testJson.testJson[index1].answer" v-if="testJson.testJson[index1].type == 1"
-                  @change="() => {
-                    $forceUpdate();
-                  }
-                    ">
-                  <div class="radioBox">
-                    <el-radio v-for="(item2, checkIndex) in testJson.testJson[index1]
-                      .testItem" :key="checkIndex" :label="checkIndex">
-                      <div style="margin-right: 10px">
-                        选项{{ checkIndex + 1 }}
-                      </div>
-                      <div style="margin-right: 10px; width: 300px" v-if="
-                        testJson.testJson[index1].checkList[checkIndex] &&
-                        testJson.testJson[index1].checkList[checkIndex]
-                          .imgType &&
-                        testJson.testJson[index1].checkList[checkIndex]
-                          .imgType == 1
-                      ">
-                        <div class="inImg" @click.stop="
-                          previewImg(
-                            testJson.testJson[index1].checkList[checkIndex]
-                              .src
-                          )
-                          ">
-                          <el-image :src="testJson.testJson[index1].checkList[checkIndex]
-                            .src
-                            " lazy />
-                          <!-- <img :src="
-                            testJson.testJson[index1].checkList[checkIndex]
-                              .src
-                          " alt="" /> -->
-                        </div>
-                      </div>
-
-                      <textarea class="a_add_head_input textarea_css" v-autoHeight="40" v-else v-model="testJson.testJson[index1].checkList[checkIndex]
-                        " placeholder="请输入选项" style="width: 300px; margin-right: 10px" @change="() => {
-                          $forceUpdate();
-                        }
-                          "></textarea>
-                      <div class="xzUpImg" @click.stop="addImg($event)">
-                        <img src="../../../assets/icon/xzUpImg.png" alt="" />
-                        <input type="file" accept="image/*" style="display: none"
-                          @change="beforeUploadTi($event, index1, checkIndex)" />
-                      </div>
-                      <div class="moveBtn moveBtn2" v-if="testJson.testJson[index1].testItem != 1">
-                        <div class="chapter_upload_up" @click.stop="tcheckMove(1, index1, checkIndex)"></div>
-                        <div class="chapter_upload_down" @click.stop="tcheckMove(2, index1, checkIndex)"></div>
-                      </div>
-                      <div class="a_add_body_div">
-                        <el-button type="primary" size="small" @click.stop="
-                          addTcheckList(testJson.testJson[index1], checkIndex)
-                          ">添加</el-button>
-                        <el-button type="primary" size="small" @click.stop="
-                          deleteTcheckList(
-                            testJson.testJson[index1],
-                            checkIndex
-                          )
-                          " v-if="testJson.testJson[index1].testItem != 1">删除
-                        </el-button>
-                      </div>
-                    </el-radio>
-                  </div>
-                </el-radio-group>
-                <el-checkbox-group v-model="testJson.testJson[index1].answer"
-                  v-if="testJson.testJson[index1].type == '2'" @change="() => {
-                    $forceUpdate();
-                  }
-                    ">
-                  <div class="radioBox">
-                    <el-checkbox v-for="(item2, checkIndex1) in testJson.testJson[index1]
-                      .testItem" :key="checkIndex1" :label="checkIndex1">
-                      <div style="margin-right: 10px">
-                        选项{{ checkIndex1 + 1 }}
-                      </div>
-                      <div style="margin-right: 10px; width: 300px" v-if="
-                        testJson.testJson[index1].checkList[checkIndex1] &&
-                        testJson.testJson[index1].checkList[checkIndex1]
-                          .imgType &&
-                        testJson.testJson[index1].checkList[checkIndex1]
-                          .imgType == 1
-                      ">
-                        <div class="inImg" @click.stop="
-                          previewImg(
-                            testJson.testJson[index1].checkList[checkIndex1]
-                              .src
-                          )
-                          ">
-                          <el-image :src="testJson.testJson[index1].checkList[checkIndex1]
-                            .src
-                            " lazy />
-                          <!-- <img :src="
-                            testJson.testJson[index1].checkList[checkIndex1]
-                              .src
-                          " alt="" /> -->
-                        </div>
-                      </div>
-
-                      <textarea class="a_add_head_input textarea_css" v-autoHeight="40" v-else v-model="testJson.testJson[index1].checkList[checkIndex1]
-                        " placeholder="请输入选项" style="width: 300px; margin-right: 10px" @change="() => {
-                          $forceUpdate();
-                        }
-                          "></textarea>
-                      <div class="xzUpImg" @click.stop="addImg($event)">
-                        <img src="../../../assets/icon/xzUpImg.png" alt="" />
-                        <input type="file" accept="image/*" style="display: none"
-                          @change="beforeUploadTi($event, index1, checkIndex1)" />
-                      </div>
-                      <div class="moveBtn moveBtn2" v-if="testJson.testJson[index1].testItem != 1">
-                        <div class="chapter_upload_up" @click.stop="tcheckMove(1, index1, checkIndex1)"></div>
-                        <div class="chapter_upload_down" @click.stop="tcheckMove(2, index1, checkIndex1)"></div>
-                      </div>
-                      <div class="a_add_body_div">
-                        <el-button type="primary" size="small" @click.stop="
-                          addTcheckList(
-                            testJson.testJson[index1],
-                            checkIndex1
-                          )
-                          ">添加</el-button>
-                        <el-button type="primary" size="small" @click.stop="
-                          deleteTcheckList(
-                            testJson.testJson[index1],
-                            checkIndex1
-                          )
-                          " v-if="testJson.testJson[index1].testItem != 1">删除
-                        </el-button>
-                      </div>
-                    </el-checkbox>
-                  </div>
-                </el-checkbox-group>
-              </div>
-              <!-- <div class="a_add_body_div">
-                <el-button type="primary" size="small" @click="addTcheckList(testJson.testJson[index1])">添加</el-button>
-                <el-button type="primary" size="small" @click="deleteTcheckList(testJson.testJson[index1])"
-                  v-if="testJson.testJson[index1].testItem != 1">删除
-                </el-button>
-              </div> -->
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(45)">取 消</el-button>
-        <el-button type="primary" @click="addTest">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加工具" :visible.sync="dialogVisible4" :append-to-body="true" width="600px"
-      :before-close="handleClose" class="dialog_diy addToolsDia">
-      <div class="toolChoose">
-        <div class="tools">
-          <div class="leftTools" style="width: 100%; padding: 0 0 15px 0"
-            v-for="(itemTools, itemToolsIndex) in chapTools" :key="itemToolsIndex">
-            <div style="
-                display: flex;
-                flex-direction: row;
-                align-items: baseline;
-                flex-wrap: nowrap;
-                justify-content: flex-start;
-                position: relative;
-              ">
-              <div class="chooseWho">
-                <div :class="chapToolsType == 0 ? 'isChooseActive' : ''" @click="chapToolsType = 0">
-                  互动类
-                </div>
-                <div :class="chapToolsType == 1 ? 'isChooseActive' : ''" @click="chapToolsType = 1">
-                  思维类
-                </div>
-                <div :class="chapToolsType == 2 ? 'isChooseActive' : ''" @click="chapToolsType = 2">
-                  评价类
-                </div>
-                <div :class="chapToolsType == 2 ? 'isChooseActive' : ''" @click="chapToolsType = 2">
-                  其他
-                </div>
-              </div>
-            </div>
-
-            <div style="min-height: 163px">
-              <div class="toolSort" v-if="chapToolsType == 0">
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(8) != -1 }" @click="chapAddTools(8)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(8)">
-                    <img src="../../../assets/icon/secondToolList/library.png" alt />
-                    <div style="margin: 5px 0">素材库</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(8) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(8)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(8) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-              </div>
-              <div class="toolSort" v-if="chapToolsType == 1">
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(7) != -1 }" @click="chapAddTools(7)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(7)">
-                    <img src="../../../assets/icon/secondToolList/mindNetwork.png" alt />
-                    <div style="margin: 5px 0">思维网格</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(7) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(7)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(7) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(1) != -1 }" @click="chapAddTools(1)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(1)">
-                    <img src="../../../assets/icon/secondToolList/whiteBoard.png" alt />
-                    <div style="margin: 5px 0">电子白板</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(1) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(1)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(1) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(2) != -1 }" @click="chapAddTools(2)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(2)">
-                    <img src="../../../assets/icon/secondToolList/note.png" alt />
-                    <div style="margin: 5px 0">便签</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(2) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(2)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(2) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(6) != -1 }" @click="chapAddTools(6)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(6)">
-                    <img src="../../../assets/icon/secondToolList/doc.png" alt />
-                    <div style="margin: 5px 0">协同文档</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(6) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(6)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(6) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(3) != -1 }" @click="chapAddTools(3)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(3)">
-                    <img src="../../../assets/icon/secondToolList/mindMapping.png" alt />
-                    <div style="margin: 5px 0">思维导图</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(3) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(3)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(3) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(31) != -1 }"
-                  @click="chapAddTools(31)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(31)">
-                    <img src="../../../assets/icon/secondToolList/networkPanel.png" alt />
-                    <div style="margin: 5px 0">数学画板</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(31) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(31)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(31) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-              </div>
-              <div class="toolSort" v-if="chapToolsType == 2">
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(5) != -1 }" @click="chapAddTools(5)">
-                  <div class="whiteBIcon" @click.stop="chapAddTools(5)">
-                    <img src="../../../assets/icon/thirdToolList/score.png" alt />
-                    <div style="margin: 5px 0">量规评分</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(5) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(5)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(5) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-                <div class="tool" :class="{ isToolChoose: itemTools.tools.indexOf(4) != -1 }" @click="chapAddTools(4)">
-                  <div class="whiteBIcon" @click.stop="openTools(chapCount, 4, null)">
-                    <img src="../../../assets/icon/thirdToolList/ask.png" alt />
-                    <div style="margin: 5px 0">问卷调查</div>
-                  </div>
-                  <div class="noCTool">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <div class="isCTool" v-if="itemTools.tools.indexOf(4) != -1">
-                    <img src="../../../assets/icon/new/isToolC.png" alt="" />
-                  </div>
-                  <!-- <div class="check" @click="chapAddTools(4)">
-                    <img src="../../../assets/icon/checkNo.png" alt v-if="itemTools.tools.indexOf(4) == -1" />
-                    <div class="checkDiv" v-else>
-                      <img src="../../../assets/icon/checkedIs.png" alt /><span>已选择</span>
-                    </div>
-                  </div> -->
-                </div>
-              </div>
-            </div>
-            <div>
-              <input type="text" placeholder="添加工具描述" class="binfo_input" style="margin: 20px 0; width: 100% !important"
-                v-model="itemTools.toolDetail" />
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible4 = false">取 消</el-button>
-        <el-button type="primary" @click="addChaptersDataTools">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加问答" :visible.sync="dialogVisible8" :append-to-body="true" width="500px" :before-close="(done) => {
-      closePan(15);
-    }
-      " class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: column;
-            align-items: flex-start;
-            justify-content: center;
-          ">
-          <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
-          <!-- <el-input v-model="answerQ" placeholder="请输入您要问的问题"></el-input> -->
-          <textarea rows="1" v-autoHeight="40" type="text" placeholder="请输入您要问的问题" class="binfo_input"
-            style="width: 100% !important; border: 1px solid #dcdfe6" v-model="answerQ"></textarea>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(15)">取 消</el-button>
-        <el-button type="primary" @click="addAnswer">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加问题" :visible.sync="dialogVisibleMp3" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: column;
-            align-items: flex-start;
-            justify-content: center;
-          ">
-          <div style="margin-bottom: 20px; font-size: 20px">问题:</div>
-          <el-input v-model="answerQ" placeholder="请输入您想要回答的问题"></el-input>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMp3 = false">取 消</el-button>
-        <el-button type="primary" @click="addMp3Answer">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="上传图片" :visible.sync="choosePicVisible" :append-to-body="true" width="600px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="fileCss" style="padding-top: 20px">
-          <div>
-            <button class="info_btn" @click="addImg($event)">
-              选择本地文件
-              <input type="file" accept="image/*" style="display: none" @change="beforeUpload1" />
-            </button>
-            <div class="spanName">选择本地文件</div>
-          </div>
-          <!-- <div>
-            <el-button @click="getAllBanner" v-if="isSysPic == false">选择系统文件</el-button>
-            <div class="isSysPic" v-if="isSysPic == true && cover.length > 0">
-              <img :src="cover[0].url" alt="" />
-              <div class="deletePic" @click="deleteSysPic">
-                <img src="../../../assets/icon/delete.png" alt="" />
-              </div>
-            </div>
-            <div class="spanName">选择系统文件</div>
-          </div> -->
-          <div>
-            <el-button @click="(searchImageValue = courseName), resetImage()"
-              v-if="isSysPic2 == false">选择网络文件</el-button>
-            <div class="isSysPic" v-if="isSysPic2 == true && cover.length > 0">
-              <img :src="cover[0].url" alt="" />
-              <div class="deletePic" @click="deleteSysPic">
-                <img src="../../../assets/icon/delete.png" alt="" />
-              </div>
-            </div>
-            <div class="spanName">选择网络文件</div>
-          </div>
-        </div>
-        <!-- <div class="fileCss">
-        </div> -->
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="choosePicVisible = false">取 消</el-button>
-        <el-button type="primary" @click="choosePicVisible = false">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="选择系统文件" :visible.sync="sysPicVisible" :append-to-body="true" width="710px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="cru_selectBox" style="margin: 0">
-        <div @click="getChoosePic(1)" class="cru_select" :class="chooseType == 1 ? 'cru_selected' : ''">
-          绘画
-        </div>
-        <div @click="getChoosePic(2)" class="cru_select" :class="chooseType == 2 ? 'cru_selected' : ''">
-          科技
-        </div>
-        <div @click="getChoosePic(3)" class="cru_select" :class="chooseType == 3 ? 'cru_selected' : ''">
-          人文
-        </div>
-        <div @click="getChoosePic(4)" class="cru_select" :class="chooseType == 4 ? 'cru_selected' : ''">
-          艺术
-        </div>
-      </div>
-      <div class="sysPicBox">
-        <div v-for="(sys, sysIndex) in sysPic" :key="sysIndex" class="sysPic">
-          <img :src="sys.poster" alt="" @click="chooseSysPic(sys.poster)" />
-        </div>
-      </div>
-    </el-dialog>
-    <el-dialog title="选择网络文件" :visible.sync="sysPicVisible2" :append-to-body="true" width="710px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="people_top_right" style="display: flex; align-items: center">
-          <div style="position: relative; width: 100%">
-            <el-input style="height: 100%" placeholder="搜索图片关键字" v-model="searchImageValue"
-              @keyup.enter.native="resetImage()"></el-input>
-            <div class="search_img" @click="resetImage" style="right: 10px">
-              <img src="../../../assets/icon/search.png" alt />
-            </div>
-          </div>
-          <el-button type="primary" size="default" style="margin-left: 10px" @click="changePicture">换一组</el-button>
-        </div>
-        <div class="sysPicBox" v-loading="imageloading">
-          <div class="picNone" v-if="!imageList.length">
-            请输入关键词搜索图片
-          </div>
-          <div v-for="(sys, sysIndex) in imageList" :key="sysIndex" class="sysPic">
-            <img :src="sys.url" alt="" @click="chooseSysPic2(sys.url)" />
-          </div>
-        </div>
-      </div>
-    </el-dialog>
-    <el-dialog title="选择匹配" :visible.sync="dialogVisibleSelect" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(41);
-    }
-      " class="dialog_diy dialog_diy3 fullStyle">
-      <div v-if="selectJson" style="height: 100%">
-        <div class="select_box1" v-if="selectSteps == 1">
-          <div class="select_box1_img">
-            <div class="select_box1_title">
-              <span>上传题目图片</span><span>提示:请将所有题目上传为一张图片。</span>
-            </div>
-            <div class="select_box1_add_img">
-              <div class="uploadFm" @click="addImg($event)" v-if="!selectJson.url">
-                <input type="file" accept="image/*" style="display: none" @change="beforeUploadSelect" />
-                <img src="../../../assets/icon/addPoster.png" alt="" />
-              </div>
-              <div class="isSysPic" v-else>
-                <img :src="selectJson.url" alt="" @click="previewImg(selectJson.url)" />
-                <div class="deletePic" @click="deleteSelectPic">
-                  <img src="../../../assets/icon/delete.png" alt="" />
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="select_box1_select">
-            <div class="select_box1_title">
-              <span>添加选项</span><span>提示:请输入以上题目的选项内容,此选项为所有题目共享。</span>
-            </div>
-            <div class="select_box1_select_box">
-              <el-input v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex"
-                v-model="selectJson.select[checkIndex]" placeholder="请输入选项"
-                style="width: 150px; margin: 10px 10px 0 0"></el-input>
-              <div class="select_box1_select_box_add">
-                <el-button style="margin: 10px 0px 0 0" type="primary" size="small" @click="addSelectList(selectJson)">
-                  添加</el-button>
-                <el-button type="primary" size="small" style="margin: 10px 0 0 0" @click="deleteSelectList(selectJson)"
-                  v-if="selectJson.select && selectJson.select.length > 0">删除</el-button>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div v-if="selectSteps == 2" style="height: 100%">
-          <div class="select_box2">
-            <div class="select_box2_title">设置每道题目的正确选项</div>
-            <div class="select_box2_box">
-              <div class="select_box2_img">
-                <img :src="selectJson.url" alt="" @click="previewImg(selectJson.url)" />
-              </div>
-              <div class="select_box2_answer">
-                <div class="select_answer_title">根据题目选择对应答案</div>
-                <div class="select_box2_answer_box" v-for="(item2, checkIndex) in selectJson.select" :key="checkIndex">
-                  <span>{{ checkIndex + 1 }}、</span>
-                  <el-select v-model="selectJson.answer[checkIndex]" placeholder="请选择正确答案">
-                    <el-option v-for="(e, eIndex) in selectJson.select" :key="eIndex" :label="e" :value="eIndex">
-                    </el-option>
-                  </el-select>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="nextSelectSteps()" v-if="selectSteps == 1">下一步</el-button>
-        <el-button @click="selectSteps--" v-if="selectSteps == 2">上一步</el-button>
-        <el-button type="primary" @click="addSelectAnswer" v-if="selectSteps == 2">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加评价" :visible.sync="dialogVisibleRate" :append-to-body="true" width="650px"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="background: #fff; padding: 15px; box-sizing: border-box">
-        <div style="font-size: 18px; color: #a9a9a9">请输入个人评价指标:</div>
-        <div class="pjCss" style="width: 100%">
-          <div v-if="rateJson.length" class="elist_input" style="height: 360px; overflow: auto">
-            <div v-for="(eItem, eIndex) in rateJson" :key="eIndex" class="elist_input_box">
-              <span style="min-width: 100px; text-align: right">个人评价指标:</span>
-              <input type="input" v-model="eItem.value" placeholder="填写评价维度" />
-              <div class="remove" @click="deletRateList(eIndex)"></div>
-              <div style="width: 100%; display: flex">
-                <span style="min-width: 100px; text-align: right">评星等级:</span>
-                <el-rate v-model="eItem.score" disabled></el-rate>
-              </div>
-              <div class="elist_inptu_text" style="align-items: flex-start">
-                <span style="min-width: 100px; text-align: right">描述:</span>
-                <textarea class="rate_textarea" :rows="3" v-model="eItem.detail" placeholder="填写维度描述"></textarea>
-              </div>
-            </div>
-          </div>
-          <div class="addToolFun" @click="addRateList()">
-            <div class="addToolImg">
-              <img src="../../../assets/icon/add.png" alt />
-            </div>
-            <div>添加</div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleRate = false">取 消</el-button>
-        <el-button type="primary" @click="addRateAnswer">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="排序设置" :visible.sync="dialogVisibleSentence" :append-to-body="true" width="1000px" :before-close="(done) => {
-      closePan(47);
-    }
-      " class="dialog_diy dialog_diy3 fullStyle">
-      <div style="height: 100%">
-        <div class="sentenBox" style="height: 100%">
-          <div class="addSen" @click="addSt">添加题目</div>
-          <div v-for="(st, stIndex) in sentenceList" :key="stIndex" class="sentenContent">
-            <div class="sentenTopBox">
-              <div class="sentenTop" :index="stIndex + 1">
-                <div>题目设置</div>
-                <div>
-                  <el-input placeholder="请输入卡片内容" v-model="st.sentenceTitle" :maxlength="10"></el-input>
-                </div>
-                <div @click="addSen(stIndex)">添加</div>
-                <div class="remove1" v-if="sentenceList.length > 1" @click="deleteSentence(stIndex)"></div>
-              </div>
-            </div>
-
-            <div class="cardList">
-              <div v-if="st.addSentence.length > 0" class="cardBox">
-                <div class="isCard" v-for="(s, sIndex) in st.addSentence" :key="sIndex"
-                  @click="setRightAnswer(s, stIndex, sIndex)">
-                  <el-tooltip class="item" effect="light" :content="s" placement="top">
-                    <div>{{ s }}</div>
-                  </el-tooltip>
-                  <div class="deleteWord" @click.stop="deleteS(s, stIndex, sIndex)">
-                    <img src="../../../assets/icon/delete.png" alt="" />
-                  </div>
-                </div>
-              </div>
-              <div class="card">
-                <img src="../../../assets/icon/conSentences/noTitle.png" alt="" />
-              </div>
-            </div>
-            <div class="rightCardBox">
-              <div>正确顺序</div>
-              <div class="rightCardList">
-                <div v-if="st.rightAnswer.length > 0" class="cardBox">
-                  <div v-for="(r, rIndex) in st.rightAnswer" :key="rIndex" class="cardCss">
-                    <div class="isCard1" @click="returnCard(r, stIndex, rIndex)">
-                      <el-tooltip class="item" effect="light" :content="r" placement="top">
-                        <div>{{ r }}</div>
-                      </el-tooltip>
-                    </div>
-                    <div>{{ rIndex + 1 }}</div>
-                  </div>
-                </div>
-                <div class="card" v-if="st.rightAnswer.length == 0">
-                  <img src="../../../assets/icon/conSentences/noAnswer.png" alt="" />
-                </div>
-                <div class="card" v-else>
-                  <img src="../../../assets/icon/conSentences/clickNo.png" alt="" />
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="closePan(47)">取 消</el-button>
-        <el-button type="primary" @click="addSentenceTool">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加表格" :visible.sync="dialogVisibleTable" :append-to-body="true" width="95%"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <!-- <el-form-item label="文本标题">
-          <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
-        </el-form-item> -->
-        <div>表格内容</div>
-        <Table v-model="tableJson.text" @change="change"></Table>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <!-- <el-button @click="dialogVisibleTable = false">取 消</el-button>
-        <el-button type="primary" @click="addTableJson">确定</el-button> -->
-        <el-button type="primary" @click="addTableJson">上传模板</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加文档" :visible.sync="dialogVisibleWord" :append-to-body="true" width="95%"
-      :before-close="handleClose" class="dialog_diy">
-      <el-form>
-        <!-- <el-form-item label="文本标题">
-          <el-input v-model="AttText.title" auto-complete="off" @input="change2" placeholder="请输入文本标题..."></el-input>
-        </el-form-item> -->
-        <div>文档内容</div>
-        <editor-bar v-model="wordJson.text" class="text_panel"></editor-bar>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <!-- <el-button @click="dialogVisibleWord = false">取 消</el-button> -->
-        <el-button type="primary" @click="addWordJson">上传模板</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加班级" :visible.sync="dialogVisibleMoreUpload" :append-to-body="true" width="30%"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: nowrap;
-          align-items: center;
-          justify-content: center;
-        ">
-        <div>班级:</div>
-        <el-select multiple v-model="uploadJson" placeholder="请选择">
-          <el-option v-for="item in classJuri" :key="item.id" :label="item.name" :value="item.id">
-          </el-option>
-        </el-select>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMoreUpload = false">取 消</el-button>
-        <el-button type="primary" @click="addMoreUpload">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="设置随机码" :visible.sync="dialogVisibleInvite" :append-to-body="true" width="360px"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: nowrap;
-          align-items: center;
-          justify-content: center;
-        ">
-        <div>随机码:</div>
-        <el-input v-model="icode" style="width: 240px" placeholder="请输入随机码"></el-input>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleInvite = false">取 消</el-button>
-        <el-button type="primary" @click="addInvite">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加预设时间" :visible.sync="dialogVisiblePreTime" :append-to-body="true" width="450px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div style="margin-bottom: 20px; color: #999">
-          提示:点击“+”或“-”修改倒计时时长。
-        </div>
-        <Time :preTime="preTime" @updateTimeNum="updateTime" v-if="dialogVisiblePreTime"></Time>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisiblePreTime = false">取 消</el-button>
-        <el-button type="primary" @click="addPreTime">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="导入目标" :visible.sync="dialogVisiblemb" :append-to-body="true" width="70%"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div style="
-            width: 100%;
-            display: flex;
-            flex-direction: row;
-            flex-wrap: nowrap;
-            align-content: center;
-            align-items: center;
-            justify-content: space-between;
-          ">
-          <div style="
-              display: flex;
-              flex-flow: row nowrap;
-              align-items: flex-start;
-              width: 100%;
-              flex-direction: column;
-              flex-wrap: nowrap;
-              position: relative;
-            ">
-            <div class="e_box">
-              <!-- <div class="e_card" v-for="(item, index) in evaJuri" :key="index">
-                <div class="e_card_picture">
-                  <img src="../../../assets/e_picture.png" />
-                </div>
-                <div class="e_card_name">
-                  <span>{{ item.title }}</span>
-                </div>
-                <div class="e_card_btn">
-                  <span @click="checkEva(item.id, 2)">导入</span>
-                </div>
-              </div> -->
-              <!-- <div class="addEva" @click="openT">
-                <img src="../../../assets/icon/addEva.png" alt="" />
-              </div> -->
-              <div style="
-                  display: flex;
-                  justify-content: flex-end;
-                  margin-bottom: 10px;
-                ">
-                <el-button @click="openT" type="primary" size="small">添加目标</el-button>
-              </div>
-              <el-table v-if="evaJuri.length" ref="table" :data="evaJuri" border :fit="true" style="width: 100%"
-                :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }" :row-class-name="tableRowClassName">
-                <el-table-column label="目标名称" min-width="15" align="center" prop="title">
-                </el-table-column>
-                <el-table-column prop="username" label="负责人" min-width="15" align="center">
-                </el-table-column>
-                <el-table-column label="操作" width="250px">
-                  <template slot-scope="scope">
-                    <div class="btnBox">
-                      <el-button type="primary" size="small" @click="checkEva(scope.row.id, 2)">导入</el-button>
-                    </div>
-                  </template>
-                </el-table-column>
-              </el-table>
-              <div v-if="evaJuri.length === 0" style="margin: 0 auto; color: #6e6e6e">
-                暂无数据
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisiblemb = false">取 消</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="分组设置" :visible.sync="dialogVisibleGroup" :append-to-body="true" width="650px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="groupBox">
-        <div v-if="groupJson.group" class="groupContent">
-          <div class="groupTitle">请设置小组数量及名称</div>
-          <div v-for="(item, index) in groupJson.group" :key="index" class="groupName">
-            <span class="groupn">第{{ index + 1 }}组名称:</span>
-            <el-input v-model="item.name" placeholder="请输入名称..." style="width: 250px"></el-input>
-            <div class="groupBtn">
-              <el-button type="primary" size="small" @click="addGroup(index)"
-                v-if="groupJson.group.length - 1 == index">
-                添加</el-button>
-              <el-button type="primary" size="small" @click="deleteGroup(index)"
-                v-if="groupJson.group && groupJson.group.length > 1">删除</el-button>
-            </div>
-          </div>
-        </div>
-        <div class="groupContent">
-          <div class="groupTitle">请设置每组人数</div>
-          <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
-            style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
-          <el-input v-model="groupJson.number" style="width: 150px" placeholder="请输入2-10的数字"
-            @change="numberPan"></el-input>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleGroup = false">取 消</el-button>
-        <el-button type="primary" @click="addGroupJson">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="修改名称" :visible.sync="dialogVisibleupdataVideoT" :append-to-body="true" width="500px"
-      :before-close="handleClose" class="dialog_diy">
-      <div style="
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: nowrap;
-          align-items: center;
-          justify-content: center;
-        ">
-        <div style="min-width: fit-content">文件名称:</div>
-        <el-input v-model="line" placeholder="请输入要修改的名称"></el-input>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleupdataVideoT = false">取 消</el-button>
-        <el-button type="primary" @click="updataVideoC">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="创建作文题目" :visible.sync="englishDialogVisible" :append-to-body="true" width="800px" :before-close="(done) => {
-      closePan(69);
-    }
-      " class="dialog_diy fullStyle fullStyle1">
-      <englishRight :englishList="englishList" :oid="oid" ref="engJson" @setJson="addEnglish"></englishRight>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="englishDialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="addEnglish">确 定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="选择课程模板" :visible.sync="templateDialog" :append-to-body="true" width="630px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="template_box">
-        <div class="wordTeacher" v-for="(aa, indexF) in templateArray" :key="indexF" @click="checkctJson(aa)"
-          :class="{ wordTeacherA: ctJson.id == aa.id }">
-          <div class="wordPic">
-            <img src="../../../assets/icon/new/course_template.png" alt />
-          </div>
-          <el-tooltip effect="dark" :content="aa.title" placement="top">
-            <div style="
-                margin-top: 10px;
-                line-height: 19px;
-                overflow: hidden;
-                text-overflow: ellipsis;
-                white-space: nowrap;
-                padding: 0 10px;
-                box-sizing: border-box;
-                width: 100%;
-              ">
-              {{ aa.title }}
-            </div>
-          </el-tooltip>
-        </div>
-        <div class="wordTeacher" @click="checkctJson({ id: 1 })" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'"
-          :class="{ wordTeacherA: ctJson.id == 1 }">
-          <div class="wordPic">
-            <img src="../../../assets/icon/new/course_template.png" alt />
-          </div>
-
-          <div style="
-              margin-top: 10px;
-              line-height: 19px;
-              overflow: hidden;
-              text-overflow: ellipsis;
-              white-space: nowrap;
-              padding: 0 20px;
-            ">
-            简易模板
-          </div>
-        </div>
-        <div class="wordTeacher" @click="checkctJson({ id: 2 })" v-if="isPasteStage"
-          :class="{ wordTeacherA: ctJson.id == 2 }">
-          <div class="wordPic">
-            <img src="../../../assets/icon/new/course_template.png" alt />
-          </div>
-
-          <div style="
-              margin-top: 10px;
-              line-height: 19px;
-              overflow: hidden;
-              text-overflow: ellipsis;
-              white-space: nowrap;
-              padding: 0 20px;
-            ">
-            智能粘贴模式
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="templateDialog = false">取 消</el-button>
-        <el-button type="primary" @click="addTemplate(ctJson)">确 定</el-button>
-      </span>
-    </el-dialog>
-    <interVideo :dialogVisibleVideo.sync="dialogVisibleVideo" :videoJson="videoJson" @add="addVideoJson"></interVideo>
-    <el-dialog title="切换阶段顺序" :visible.sync="dialogVisibleStageChange" :append-to-body="true" width="400px"
-      :before-close="handleClose" class="dialog_diy dialog_diyStage">
-      <div class="change_stageBox">
-        <div class="navTask" v-for="(t, tIndex) in unitJson3" :key="tIndex">
-          <div class="nt_taskBox">
-            <div class="nt_taskTitle">第{{ tIndex + 1 }}阶段</div>
-            <div class="nt_taskName">
-              <el-tooltip effect="light" :content="t.dyName" placement="top">
-                <span>{{ t.dyName }}</span>
-              </el-tooltip>
-            </div>
-          </div>
-          <div class="moveBtn" v-if="unitJson3.length > 1">
-            <div class="chapter_upload_up" @click.stop="stageMove(1, tIndex)"></div>
-            <div class="chapter_upload_down" @click.stop="stageMove(2, tIndex)"></div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleStageChange = false">取 消</el-button>
-        <el-button type="primary" @click="updateChange">确定</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="添加资源模板" :visible.sync="cetBoxDialog" :append-to-body="true" width="400px"
-      :before-close="handleClose" class="dialog_diy">
-      <div class="addTypeChoose" style="justify-content: center">
-        <div style="min-width: 100px">模板名称:</div>
-        <el-input v-model="templateName" style="width: 200px"></el-input>
-      </div>
-      <div class="addTypeBox">
-        <div class="addTypeChoose">
-          <div style="min-width: 100px">选择一级分类:</div>
-          <el-select v-model="setTypeJson.one" placeholder="请选择" @change="getTwoType(setTypeJson.one)"
-            style="width: 200px">
-            <el-option v-for="(item, index) in oneJson" :key="index" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="addTypeChoose" v-if="setTypeJson.one != ''">
-          <div style="min-width: 100px">选择二级分类:</div>
-          <el-select v-model="setTypeJson.two" placeholder="请选择" style="width: 200px">
-            <el-option v-for="(item1, index1) in twoJson" :key="index1" :label="item1.name" :value="item1.id">
-            </el-option>
-          </el-select>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="addCETemplate()">确 认</el-button>
-        <el-button @click="close()">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <evaBox :userid="userid" :oid="oid" :org="org" :dialogVisibleEva.sync="evaBoxDialog" @updateEvaJson="updateEvaJson">
-    </evaBox>
-    <EnglishVoice :oid="oid" :org="org" :EnglishVoiceDialog.sync="EnglishVoiceDialog"
-      :englishVoiceJson="englishVoiceJson" @setEnglishVoiceJson="setEnglishVoiceJson"></EnglishVoice>
-    <aiDialog :dialogVisibleAiD.sync="dialogVisibleAiD" :aiText="aiText" @aiConfirm="aiConfirm" :clickType="clickType">
-    </aiDialog>
-    <tipsDialog :dialogVisibleTips.sync="dialogVisibleTips" :tipsJson.sync="tipsJson" :aiJson="aiJson" :userid="userid"
-      @retrunCourse="retrunCourse" :templateid="templateid"></tipsDialog>
-    <aiCreateDialog :dialogVisibleAiCreate.sync="dialogVisibleAiCreate" :courseName="courseName" @createAiPpt="createAiPpt" :infoData="infoData" :courseTypeId="courseTypeId" :CourseTypeJson="CourseTypeJson" :courseState="courseState" :lineCount="lineCount" :unitJson="unitJson"></aiCreateDialog>
-    <aiCreateVideoDialog :dialogVisibleAiCreateVideo.sync="dialogVisibleAiCreateVideo" :courseName="courseName" @createAiVideo="createAiVideo" :courseState="courseState" :lineCount="lineCount" :unitJson="unitJson"></aiCreateVideoDialog>
-  </div>
-</template>
-
-<script>
-import "../../../common/aws-sdk-2.235.1.min.js";
-import { tools as toolsData } from "../../../common/tools.js";
-// import "../../../common/aws-sdk-2.99.0.min.js";
-import $ from "jquery";
-import EditorBar from "../../../components/tools/wangEnduit";
-import Table from "../../../components/tools/table";
-import Mind from "../../tools/jsmind2";
-import Time from "../../tools/time.vue";
-import Sunburst from "../../tools/sunburst";
-import SeeBoard from "../../tools/seeBoard";
-import weilaiData from "../components/weilai.js";
-import sourceDialog from "../teacherSource/dialog.vue";
-import interVideo from "../interVideo/index.vue";
-import englishRight from "../components/englishRight.vue";
-import evaBox from "../evaBox/index.vue";
-import EnglishVoice from "../EnglishVoice/index.vue";
-import aiBox from './aiBox.vue'
-import aiDialog from './aiDialog'
-import aiTips from './aiTips.vue'
-import tipsDialog from './tipsDialog.vue'
-import { v4 as uuidv4 } from "uuid";
-import MarkdownIt from "markdown-it";
-import aiCreateDialog from './aiCreateDialog.vue'
-import aiCreateVideoDialog from './aiCreateVideoDialog.vue'
-var OpenCC = require("opencc-js");
-let converter = OpenCC.Converter({
-		from:'hk',
-		to:'cn'
-})
-
-
-export default {
-  components: {
-    EditorBar,
-    Mind,
-    Time,
-    Sunburst,
-    SeeBoard,
-    Table,
-    sourceDialog,
-    interVideo,
-    englishRight,
-    evaBox,
-    EnglishVoice,
-    aiBox,
-    aiDialog,
-    aiTips,
-    tipsDialog,
-    aiCreateDialog,
-    aiCreateVideoDialog
-  },
-  data() {
-    return {
-      checkAll: false,
-      checkAll2: false,
-      chooseType: 1,
-      checkedCities: [],
-      isIndeterminate: true,
-      isIndeterminate2: true,
-      isSysPic: false,
-      isSysPic2: false,
-      steps: 1,
-      stepsNav: 1,
-      nbOrder: 0,
-      courseId: "",
-      chapToolsType: 0,
-      chapTools: [
-        {
-          tools: [],
-          toolDetail: "",
-        },
-      ],
-      line: "",
-      lineTitle: "",
-      sysPic: [],
-      sentenceList: [{ sentenceTitle: "", addSentence: [], rightAnswer: [] }],
-      sentenceList2: [],
-      isPushTitleList: [],
-      lineCount: 0,
-      lineType: 0,
-      chapCount: 0,
-      courseName: "",
-      isTeacherSee: false,
-      courseText: "",
-      textLoading: false,
-      ttextLoading: false,
-      courseText2: "",
-      preTime: 0,
-      formLabelWidth: "100px",
-      choosePicVisible: false,
-      sysPicVisible: false,
-      sysPicVisible2: false,
-      uploadLoading1: false,
-      noneBtnImg: false,
-      updateBoolean2: false,
-      unitIndex: 0,
-      taskCount: 0,
-      dialogVisible: false,
-      dialogVisible1: false,
-      dialogVisible2: false,
-      dialogVisible3: false,
-      dialogVisible4: false,
-      dialogVisible5: false,
-      dialogVisible6: false,
-      dialogVisible7: false,
-      dialogVisible8: false,
-      dialogVisible9: false,
-      dialogVisibleClass: false,
-      dialogVisibleMember: false,
-      dialogVisibleMp3: false,
-      dialogVisibleSelect: false,
-      dialogVisibleSentence: false,
-      dialogVisibleRate: false,
-      dialogVisibleChoice: false,
-      dialogVisiblemb: false,
-      dialogVisibleInvite: false,
-      dialogVisibleSource: false,
-      dialogVisibleVideo: false,
-      dialogVisibleStageChange: false,
-      dialogVisibleupdataVideoT: false,
-      englishDialogVisible: false,
-      templateDialog: false,
-      ctJson: {},
-      isClickColor: 1,
-      toolIndexType: "",
-      publicTool: 0,
-      searchPeople: "",
-      searchTN: "",
-      collid: '',
-      CollLoading: false,
-      userid: this.$route.query.userid,
-      oid: this.$route.query.oid,
-      org: this.$route.query.org,
-      role: this.$route.query.role,
-      aiId: this.$route.query.aiId != undefined ? this.$route.query.aiId : "",
-      cid: this.$route.query.cid != undefined ? this.$route.query.cid : "",
-      dialogVisibleTable: false,
-      dialogVisibleWord: false,
-      tableJson: { text: "" },
-      wordJson: { text: "" },
-      dialogVisibleMoreUpload: false,
-      dialogVisiblePreTime: false,
-      uploadJson: [],
-      classJuri: [],
-      gradeList: [],
-      cover: [], //课程封面
-      myWord: [],
-      evaJuri: [],
-      evalua: "",
-      targetArray: [],
-      eTitle: "",
-      eJson: {},
-      fid: "", //一级
-      sid: "", //二级
-      tid: "", //二级
-      typeMode: 1,
-      eJSONNum: 0,
-      data: {
-        meta: {
-          name: "example",
-          author: "dd@163.com",
-          version: "0.2",
-        },
-        format: "node_array",
-        data: [{ id: "root", isroot: true, topic: "" }],
-      },
-      askJson: {
-        askCount: 1,
-        askTitle: "",
-        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      },
-      askJson2: {},
-      testJson: {},
-      testJson2: {},
-      selectJson: {},
-      selectJson2: {},
-      rateJson: [],
-      unitJson2: [],
-      unitJson3: [],
-      unitJson: [
-        {
-          dyName: "", //单元标题
-          chapterInfo: [
-            {
-              isread: false,
-              chapterid: this.guid(),
-              title: "",
-              courseName: "",
-              taskJson: [
-                {
-                  task: "",
-                  taskDetail: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 1,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                },
-              ],
-              itemCount: 1,
-              fileList1: [],
-              video: [],
-              testData: [],
-              pData: [],
-              templateArray: [],
-            },
-          ],
-        },
-      ],
-      templateArray: [],
-      studentJuri: [],
-      teacherJuri: [],
-      CollaborativeTeaList: [],
-      checkboxList: [],
-      checkboxList2: [],
-      checkboxList3: [],
-      classSearch: "",
-      gradeId: "",
-      number: "",
-      tTitle: "",
-      tdetail: "",
-      templateC: {},
-      AttText: {},
-      AttTextType: 0,
-      AttTextIndex: 0,
-      cTemplate: "",
-      CourseType: [],
-      CourseType1: [],
-      CourseType2: [],
-      CourseTypeJson: {},
-      CourseTypeJson1: {},
-      courseTypeId: [],
-      courseTypeId1: [],
-      courseTypeSon: [],
-      clearArray: [],
-      pTypeCheck: [],
-      pTypeCheckName: [],
-      loading: false,
-      toolType: 0,
-      inputShow: true,
-      inputShow2: true,
-      toolIndex: 0,
-      cidType: 0,
-      answerQ: "",
-      answerQ2: "",
-      grade: [],
-      grade2: [],
-      courseUserid: "",
-      timer: null,
-      timer2: null,
-      pasteTimer: null,
-      checkId: "",
-      isDelete: 1,
-      addindex: 0,
-      selectSteps: 1,
-      groupJson: {},
-      dialogVisibleGroup: false,
-      rightBoxHeight: 0,
-      ManAarray: [],
-      checkBoolean: false,
-      inviteCode: [],
-      inviteId: "",
-      icode: "",
-      easyArray: [2, 4],
-      sourceData: {},
-      updateSourcePan: false,
-      videoJson: {},
-      isBtnDisplay: false,
-      isStepDisplay: false,
-      isPasteStage: false,
-      isPasteTask: false,
-      isPasteChoice: false,
-      imageList: [],
-      imageloading: false,
-      imageloading2: false,
-      searchImageValue: "",
-      ppage: 1,
-      toolsData: JSON.parse(converter(JSON.stringify(toolsData))),
-      oldIndex: 0,
-      dragType: "",
-      oldUnitIndex: 0,
-      oldData: null,
-      newIndex: "",
-      englishList: {},
-      typeIndex: "",
-      courseState: 4,
-      taskJSONa: [
-        {
-          task: "",
-          taskDetail: "",
-          chapterData: [],
-          toolText: "",
-          toolChoose: [
-            {
-              tool: [],
-              toolDetail: "",
-              toolType: 0,
-              askCount: 1,
-              askTitle: "",
-              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-            },
-          ],
-          isShowTools: false,
-          askCount: 1,
-          isFold: 1,
-          askTitle: "",
-          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          checkJson: [{ checkCount: [], checkPerent: [] }],
-          homeworkList: [],
-        },
-      ],
-      checkUnitIndex: 0,
-      isdrag: "",
-      evaIndex: "",
-      evatIndex: "",
-      evaBoxDialog: false,
-      EnglishVoiceDialog: false,
-      englishVoiceJson: {},
-      cetIndex: "",
-      cettIndex: "",
-      cetBoxDialog: false,
-      templateName: "",
-      setTypeJson: {
-        one: "",
-        two: "",
-      },
-      twoJson: [],
-      oneJson: [],
-      updateKey: 1,
-      isOutline: false,
-      isOutline2: false,
-      infoData: [],
-      infoproVisible: false,
-      infoisFinishSize: 0,
-      infoisAllSize: 0,
-      infoprogress: 0,
-      taskDetailLoading: [],
-      ttaskDetailLoading: [],
-      taskDetailLoading2: [],
-      ttaskDetailLoading2: [],
-      taskDetailLoading3: [],
-      ttaskDetailLoading3: [],
-      taskDetailLoading4: [],
-      taskDetailLoading5: [],
-      ttaskDetailLoading5: [],
-      dArray: [],
-      dialogVisibleAiD: false,
-      aitype: "",
-      aiJson: {
-        "aiDetail": "请根据<课程简要描述>设计一个名为<课程名字>的<课程学科>学科的,面向<面向年级>的项目式学习课程。",
-        "aiOutline": "请为这个名为<课程名字>的<课程学科>学科的,面向<面向年级>学生的项目式学习课程设计序列教学活动(需要每个任务都需要至少100个token的详细描述)。你需要参考课程简要描述<课程简要描述>,并产出每个教学任务的设计(可以直接使用文件内容)以及每个教学活动的评价量规(学生能做到...)。",
-        "aiTask": "请根据<教学任务教案>。",
-        "aiDetail1": "请根据<课程描述>,重新设计该教学任务。任务需要至少50个token的详细描述,包含任务设计,评价标准。",
-        "aiDetail2": "请你在考虑到整个课程的情况下,优化该任务描述和任务名:<任务名>:<任务描述>",
-        "aiDetail3": "请你在考虑到整个课程的情况下,**重点考虑该任务及工具名和工具内容的情况下**,优化工具指引。",
-        "aiDetail4": "请你在考虑到整个课程的情况下,**重点考虑该任务详情**以及工具的情况下,优化评价标准。",
-        "aiTeacher": "请根据<任务大纲>为每个教学任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含实例答案。",
-        "teacherDetail": "请根据<任务大纲>,以及# 其他教学任务教案,为本教学任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动),相关知识点的讲解,练习(练习需要包含实例答案。注意,你绝对不能重复其他教学任务教案中的内容",
-        "teacherDetail2": "请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。"
-      },
-      aiText: "",
-      aiCallBack: "",
-      aiIndex: "",
-      clickType: 1,
-      promptShow: false,
-      templateid: this.$route.query.templateid != undefined ? this.$route.query.templateid : "",
-      istemplate: this.$route.query.istemplate != undefined && this.$route.query.istemplate ? 1 : 2,
-      dialogVisibleTips: false,
-      tipsJson: {},
-      cpote:{
-        cpote1: '',
-        cpote2: '',
-        cpote3: '',
-        cpote4: '',
-      },
-      cpoteLoading:{
-        cpote1: false,
-        cpote2: false,
-        cpote3: false,
-        cpote4: false,
-      },
-      cpotetLoading:{
-        cpote1: false,
-        cpote2: false,
-        cpote3: false,
-        cpote4: false,
-      },
-      cpoteType: 0,
-      dialogVisibleAiCreate: false,
-      dialogVisibleAiCreateVideo: false,
-      teacherText: [],
-      isFileSearch: true,
-      fileIds: ['file-A81p1q02HHpJhus4nYYwtAmM'],
-      templatePan: ['0e7966d6-1e49-11ef-bee5-005056b86db5','60d153e3-1e49-11ef-bee5-005056b86db5','7f3e28b7-1e66-11ef-bee5-005056b86db5','9dd4bb76-1e48-11ef-bee5-005056b86db5','ab317f23-1e66-11ef-bee5-005056b86db5'],
-      courseJie:1,
-      courseTime:45,
-    };
-  },
-  directives: {
-    autoHeight: {
-      update(el, binding) {
-        const { value } = binding;
-        if (value && typeof value === "number") {
-          el.style.height = `${value}px`;
-        } else {
-          el.style.height = "auto";
-        }
-      },
-      componentUpdated(el) {
-        el.style.height = `${el.scrollHeight + 25}px`;
-      },
-    },
-  },
-  computed: {
-    // rightBoxHeight: function () {
-    //   return $(".rightBox")[0] ? $(".rightBox")[0].scrollHeight : 1000
-    // },
-    offsetLetfPx: function () {
-      //addnum可以直接在模板语法里面用,相当于data内的值
-      return (
-        $(".cru_select")[this.unitIndex] &&
-        $(".cru_select")[this.unitIndex].offsetLeft + 5
-      );
-    },
-    getMan2() {
-      return function (people) {
-        let _people = people;
-        let _people2 = "";
-        if (this.ManAarray.length) {
-          for (var i = 0; i < this.ManAarray.length; i++) {
-            if (this.ManAarray[i].userid == people) {
-              _people2 = this.ManAarray[i].name;
-              break;
-            }
-          }
-        }
-        if (people == this.courseUserid) {
-          return "";
-        }
-        return this.ManAarray.length ? _people2 : "";
-      };
-    },
-    getListMan2() {
-      return function (list) {
-        let _people2 = [];
-        if (this.ManAarray.length) {
-          for (var j = 0; j < list.length; j++) {
-            let people = list[j];
-            for (var i = 0; i < this.ManAarray.length; i++) {
-              if (
-                this.ManAarray[i].userid == people &&
-                people != this.courseUserid
-              ) {
-                _people2.push(this.ManAarray[i].name);
-                break;
-              }
-            }
-          }
-        }
-
-        return this.ManAarray.length ? _people2.join("、") : "";
-      };
-    },
-    isInvite() {
-      return function (cid) {
-        let array = [];
-        for (var i = 0; i < this.inviteCode.length; i++) {
-          array.push(this.inviteCode[i].cid);
-        }
-        return array.indexOf(cid) != -1;
-      };
-    },
-    getInviteCodeC() {
-      return function (cid) {
-        let array = [];
-        for (var i = 0; i < this.inviteCode.length; i++) {
-          array.push(this.inviteCode[i].cid);
-        }
-        return this.inviteCode[array.indexOf(cid)].ic;
-      };
-    },
-    getClassC() {
-      return function (c) {
-        let _c2 = "";
-        if (this.grade.length) {
-          for (var i = 0; i < this.grade.length; i++) {
-            if (this.grade[i].id == c) {
-              _c2 = this.grade[i].name;
-              break;
-            }
-          }
-        }
-        return this.grade.length ? _c2 : "";
-      };
-    },
-    getListClassC() {
-      return function (list) {
-        let _c2 = [];
-
-        if (this.grade.length) {
-          for (var j = 0; j < list.length; j++) {
-            let c = list[j];
-            for (var i = 0; i < this.grade.length; i++) {
-              if (this.grade[i].id == c) {
-                _c2.push(this.grade[i].name);
-                break;
-              }
-            }
-          }
-        }
-        return this.grade.length ? _c2.join("、") : "";
-      };
-    },
-    MarkdownT() {
-      return function (c) {
-        let md = new MarkdownIt();
-        return c
-          ? md.render(c) : "";
-      };
-    },
-  },
-  watch: {
-    unitIndex(newValue, oldValue) {
-      // return;
-      if (this.isDelete == 2) {
-        this.isDelete = 1;
-        return;
-      }
-      if (this.cid != "") {
-        let _unitIndex = oldValue;
-        if (
-          JSON.stringify(this.unitJson2[_unitIndex]) ==
-          JSON.stringify(this.unitJson[_unitIndex])
-        ) {
-          this.$refs.rightboxR.scrollTop = 0;
-          return;
-        }
-        let cPan = 1;
-        for (
-          var j = 0;
-          j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-          j++
-        ) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-            j
-          ].proVisible = false;
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-            j
-          ].proVisible2 = false;
-          if (
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length > 1
-          ) {
-            for (
-              var z = 0;
-              z <
-              this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-                .length;
-              z++
-            ) {
-              if (
-                !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j]
-                  .toolChoose[z].tool.length
-              ) {
-                this.$message.error("请把工具添加完整");
-                cPan = 2;
-                break;
-              }
-            }
-          }
-          if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-              this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-                (ele) => {
-                  return ele.value != "";
-                }
-              );
-          }
-        }
-        if (cPan == 2) {
-          this.unitIndex = oldValue;
-          return;
-        }
-        for (var i = 0; i < this.unitJson.length; i++) {
-          if (this.addindex != i) {
-            delete this.unitJson[i].isUpdate;
-          }
-        }
-        this.$refs.rightboxR.scrollTop = 0;
-        this.addindex = -1;
-        let params = [
-          {
-            cid: this.cid,
-            chapters: JSON.stringify(this.unitJson),
-            uid: this.userid,
-            unitIndex: _unitIndex,
-          },
-        ];
-        this.ajax
-          .post(this.$store.state.api + "updateWorkNew4", params)
-          .then((res) => {
-            // this.$message({
-            //   message: "修改成功",
-            //   type: "success",
-            // });
-            // this.courseId = this.cid;
-            this.addtips()
-          })
-          .catch((err) => {
-            this.$message.error("网络不佳");
-            console.error(err);
-          });
-      }
-    },
-    steps(newValue, old) {
-      if (newValue == 4) {
-        let cPan = 1;
-        for (var i = 0; i < this.unitJson.length; i++) {
-          for (
-            var j = 0;
-            j < this.unitJson[i].chapterInfo[0].taskJson.length;
-            j++
-          ) {
-            this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
-            this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
-            if (
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
-            ) {
-              for (
-                var z = 0;
-                z <
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                z++
-              ) {
-                if (
-                  !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z]
-                    .tool.length
-                ) {
-                  this.$message.error("请把工具添加完整");
-                  cPan = 2;
-                  break;
-                }
-              }
-            }
-            if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
-              this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
-                i
-              ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
-                return ele.value != "";
-              });
-            }
-          }
-        }
-        this.inputShow = true;
-        if (cPan == 2) {
-          this.steps = old;
-          return;
-        }
-        this.goTo(
-          "/course?userid=" +
-          this.userid +
-          "&oid=" +
-          this.oid +
-          "&org=" +
-          this.org +
-          "&role=" +
-          this.role
-        );
-      }
-    },
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    close() {
-      this.cetIndex = "";
-      this.cettIndex = "";
-      this.templateName = "";
-      this.cetBoxDialog = false;
-    },
-    openAI() {
-      top.postMessage({ tools: "64" }, "*");
-    },
-    setMan() {
-      // let teacherJuri = this.teacherJuri2;
-      this.ManAarray = [];
-      let _user = JSON.parse(JSON.stringify(this.checkboxList3));
-      if (_user.indexOf(this.userid) == -1) {
-        _user.push(this.userid);
-      }
-      if (_user.indexOf(this.courseUserid) == -1) {
-        _user.push(this.courseUserid);
-      }
-      let params = {
-        uid: _user.join(","),
-      };
-      this.ajax
-        .get(this.$store.state.api + "getAllUserById", params)
-        .then((res) => {
-          let teacherJuri = res.data[0];
-          this.ManAarray = teacherJuri;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    previewImg(url) {
-      this.$hevueImgPreview(url);
-    },
-    btnDisplay(bool) {
-      this.isBtnDisplay = bool;
-    },
-    stepDisplay(bool) {
-      this.isStepDisplay = bool;
-    },
-    scrollChange() {
-      this.rightBoxHeight = $(".rightBox")[0].scrollHeight - 80;
-    },
-    addHw(e) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-    },
-    change(val) {
-      if (this.dialogVisible1) {
-        this.tdetail = val;
-      } else if (this.dialogVisible6) {
-        this.AttText.text = val;
-      } else if (this.dialogVisible2) {
-        this.cTemplate = val;
-      } else if (this.dialogVisibleTable) {
-        this.tableJson.text = val;
-      }
-      this.$forceUpdate();
-
-      console.log(val);
-    },
-    change2(val) {
-      console.log(val);
-      this.$forceUpdate();
-    },
-    handleClose(done) {
-      done();
-    },
-    closePan(tool) {
-      if (tool == 15) {
-        if (JSON.stringify(this.answerQ) == JSON.stringify(this.answerQ2)) {
-          this.dialogVisible8 = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 4) {
-        if (JSON.stringify(this.askJson) == JSON.stringify(this.askJson2)) {
-          this.dialogVisible5 = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 45) {
-        if (JSON.stringify(this.testJson) == JSON.stringify(this.testJson2)) {
-          this.dialogVisibleChoice = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 41) {
-        if (
-          JSON.stringify(this.selectJson) == JSON.stringify(this.selectJson2)
-        ) {
-          this.dialogVisibleSelect = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 47) {
-        if (
-          JSON.stringify(this.sentenceList) ==
-          JSON.stringify(this.sentenceList2)
-        ) {
-          this.dialogVisibleSentence = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      } else if (tool == 69) {
-        if (
-          JSON.stringify(this.englishList) == JSON.stringify(this.englishList)
-        ) {
-          this.englishDialogVisible = false;
-        } else {
-          this.closeConfirm(tool);
-        }
-      }
-    },
-    closeConfirm(tool) {
-      this.$confirm("是否保存已编辑内容?", "提示", {
-        confirmButtonText: "保存",
-        cancelButtonText: "不保存",
-        type: "warning",
-      })
-        .then(() => {
-          if (tool == 15) {
-            this.addAnswer();
-          } else if (tool == 4) {
-            this.addAsk();
-          } else if (tool == 45) {
-            this.addTest();
-          } else if (tool == 41) {
-            this.addSelectAnswer();
-          } else if (tool == 47) {
-            this.addSentenceTool();
-          } else if (tool == 69) {
-            this.addEnglish();
-          }
-        })
-        .catch(() => {
-          if (tool == 15) {
-            this.dialogVisible8 = false;
-          } else if (tool == 4) {
-            this.dialogVisible5 = false;
-          } else if (tool == 45) {
-            this.dialogVisibleChoice = false;
-          } else if (tool == 41) {
-            this.dialogVisibleSelect = false;
-          } else if (tool == 47) {
-            this.dialogVisibleSentence = false;
-          } else if (tool == 69) {
-            this.englishDialogVisible = false;
-          }
-        });
-    },
-    addEnglish(jsonType) {
-      this.englishList.engTitle = this.$refs["engJson"].engList.engTitle;
-      this.englishList.englishText = this.$refs["engJson"].engList.englishText;
-      this.englishList.textJson = this.$refs["engJson"].engList.textJson;
-      if (
-        this.englishList.engTitle == "" ||
-        this.englishList.englishText == ""
-      ) {
-        this.$message.error("请将内容填写完整!");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].englishList = this.englishList;
-      this.englishList = {};
-      if (jsonType && jsonType == 1) {
-        this.englishDialogVisible = true;
-      } else {
-        this.englishDialogVisible = false;
-      }
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 69
-      ) {
-        this.addTools(69, this.taskCount, this.toolIndex);
-      }
-    },
-    imgChange2(i, j) {
-      var _tmp = this.testJson.testJson[i].checkList[j];
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    imgChange3(i) {
-      var _tmp = this.testJson.testJson[i];
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    imgChange1(file, fileList, type, itemTaskIndex) {
-      if (type == 1) {
-        var _tmp = this.cover;
-      } else if (
-        type == 2 ||
-        type == 3 ||
-        type == 6 ||
-        type == 7 ||
-        type == 8
-      ) {
-        var _tmp =
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .chapterData;
-      } else if (type == 4) {
-        var _tmp = this.unitJson[this.unitIndex].chapterInfo[0].fileList1;
-      } else {
-        var _tmp =
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .homeworkList;
-      }
-      this.noneBtnImg = _tmp.length >= 1;
-    },
-    goTo(path) {
-      this.$router.push(path);
-    },
-    guid() {
-      var _num,
-        i,
-        _guid = "";
-      for (i = 0; i < 32; i++) {
-        _guid += Math.floor(Math.random() * 16).toString(16); //随机0  - 16 的数字 转变为16进制的字符串
-        _num = Math.floor((i - 7) / 4); //计算 (i-7)除4
-        if (_num > -1 && _num < 4 && i == 7 + 4 * _num) {
-          //会使guid中间加 "-"   形式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
-          _guid += "-";
-        }
-      }
-      return _guid;
-    },
-    retrunCourse() {
-      if(this.istemplate == 1){
-        this.goTo(
-              "/course?userid=" +
-              this.userid +
-              "&oid=" +
-              this.oid +
-              "&org=" +
-              this.org +
-              "&role=" +
-              this.role
-            );
-        return
-      }
-      this.$confirm("是否保存已编辑内容?", "提示", {
-        confirmButtonText: "保存",
-        cancelButtonText: "不保存",
-        distinguishCancelAndClose: true,
-        type: "warning",
-      })
-        .then(() => {
-          if (this.cid == "" || this.cid == undefined) {
-            if (this.courseName == "") {
-              this.$message.error("请补充填写课程名称");
-              return;
-            } else {
-              this.addWork();
-            }
-            this.steps = 4;
-          } else {
-            if (this.courseName == "") {
-              this.$message.error("请补充填写课程名称");
-              return;
-            } else {
-              if (this.userid != this.courseUserid && this.role != "1") {
-                this.updateWork2();
-              } else {
-                this.updateWork();
-              }
-              this.steps = 4;
-            }
-          }
-        })
-        .catch((v) => {
-          console.log(v);
-          if (v == "cancel") {
-            this.goTo(
-              "/course?userid=" +
-              this.userid +
-              "&oid=" +
-              this.oid +
-              "&org=" +
-              this.org +
-              "&role=" +
-              this.role
-            );
-          }
-        });
-    },
-    lastSteps() {
-      if (this.steps == 4) {
-        this.goTo(
-          "/course?userid=" +
-          this.userid +
-          "&oid=" +
-          this.oid +
-          "&org=" +
-          this.org +
-          "&role=" +
-          this.role
-        );
-      } else {
-        // if (this.cidType == 0) {
-        //   this.steps--;
-        //   if (this.steps == 1) {
-        //     setTimeout(() => {
-        //       this.checkEva(this.checkId);
-        //       setTimeout(() => {
-        //         this.checkEva(this.checkId);
-        //       }, 100);
-        //     }, 100);
-        //   }
-        // } else {
-        if (this.steps == 3) {
-          this.steps = 1;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 100);
-        }
-        // }
-      }
-    },
-    navSteps(s) {
-      if (this.courseName == "") {
-        this.$message.error("请补充填写课程名称");
-        return;
-      }
-      if (this.cidType == 0) {
-        if (this.steps == 1) {
-          if (this.cid == "" || this.cid == undefined) {
-            this.addWork();
-          } else {
-            if (this.userid != this.courseUserid && this.role != "1") {
-              this.updateWork2();
-            } else {
-              this.updateWork();
-            }
-          }
-        }
-        if (s == 1) {
-          this.steps = 1;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 100);
-        }
-        if (s == 2) {
-          this.steps = 2;
-        }
-        if (s == 3) {
-          this.cTemplate = this.templateC.content;
-          this.dialogVisible2 = false;
-          this.steps = 3;
-          this.isClickColor = 1;
-          this.unitJson[
-            this.unitIndex
-          ].chapterInfo[0].taskJson[0].toolOpen = true;
-          this.$forceUpdate();
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        }
-      } else {
-        if (this.steps == 1) {
-          if (this.cid == "" || this.cid == undefined) {
-            this.addWork();
-          } else {
-            if (this.userid != this.courseUserid && this.role != "1") {
-              this.updateWork2();
-            } else {
-              this.updateWork();
-            }
-          }
-        }
-        if (s == 1) {
-          this.steps = 1;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 100);
-        }
-        if (s == 3) {
-          this.cTemplate = this.templateC.content;
-          this.dialogVisible2 = false;
-          this.steps = 3;
-          this.isClickColor = 1;
-          this.unitJson[
-            this.unitIndex
-          ].chapterInfo[0].taskJson[0].toolOpen = true;
-          this.$forceUpdate();
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        }
-      }
-      this.$refs.stepBox.scrollTop = 0;
-    },
-    nextSteps(clickType) {
-      // if (this.cidType == 1) {
-      if (this.steps == 1) {
-        if (this.courseName != "") {
-          if (this.ttaskDetailLoading5.indexOf('task-') !== -1 || this.cpotetLoading.cpote1 || this.cpotetLoading.cpote2 || this.cpotetLoading.cpote3 || this.cpotetLoading.cpote4) {
-            this.$message({
-              message: "请回答完毕后再次发送",
-              type: "warning"
-            });
-            return;
-          }
-
-          if (this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" && !this.isOutline) {
-            this.openAiDialog(clickType, 'aiOutline')
-            return;
-          }
-
-          if(this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" && this.cpoteType != 4){
-            let _type = ''
-            if(this.cpoteType == 0){
-              _type = 'aiCpote1'
-            }else if(this.cpoteType == 1){
-              _type = 'aiCpote2'
-            }else if(this.cpoteType == 2){
-              _type = 'aiCpote3'
-            }else if(this.cpoteType == 3){
-              _type = 'aiCpote4'
-            }
-            this.cpoteType++
-            this.openAiDialog(clickType, _type)
-            return;
-          }
-
-          if (!this.isOutline2 && this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5") {
-            this.openAiDialog(clickType, 'aiTeacher')
-            return;
-          }
-
-          if (!this.isOutline2 && this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5") {
-            this.openAiDialog(clickType, 'aiTeacher2')
-            return;
-          }
-
-          const functionA = () => {
-            setTimeout(() => {
-              this.loading = false
-              this.steps = 3;
-            }, 0)
-            this.isClickColor = 1;
-            this.unitJson[
-              this.unitIndex
-            ].chapterInfo[0].taskJson[0].toolOpen = true;
-            this.$forceUpdate();
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-              setTimeout(() => {
-                this.checkEva(this.checkId);
-              }, 100);
-            }, 1000);
-            if (this.cid == "" || this.cid == undefined) {
-              this.addWork();
-            } else {
-              if (this.userid != this.courseUserid && this.role != "1") {
-                this.updateWork2();
-              } else {
-                this.updateWork();
-              }
-            }
-          }
-
-          if (this.cid) {
-            this.loading = true
-            functionA()
-          } else {
-            this.openAiDialog(clickType, "aiTask", functionA)
-          }
-
-        } else {
-          this.$message.error("请补充填写课程名称");
-          return;
-        }
-      } else if (this.steps == 3) {
-        if (this.cid == "" || this.cid == undefined) {
-          if (this.courseName == "") {
-            this.$message.error("请补充填写课程名称");
-            return;
-          } else {
-            this.addWork();
-            this.steps++;
-          }
-        } else {
-          if (this.courseName == "") {
-            this.$message.error("请补充填写课程名称");
-            return;
-          } else {
-            if (this.userid != this.courseUserid && this.role != "1") {
-              this.updateWork2();
-            } else {
-              this.updateWork();
-            }
-            this.steps++;
-          }
-        }
-      }
-      // } else {
-      //   if (this.steps == 1) {
-      //     if (this.courseName != "") {
-      //       if (this.cid == "" || this.cid == undefined) {
-      //         this.addWork();
-      //       } else {
-      //         if (this.userid != this.courseUserid && this.role != "1") {
-      //           // this.updateWork2();
-      //         } else {
-      //           this.updateWork();
-      //         }
-      //       }
-      //       this.steps++;
-      //     } else {
-      //       this.$message.error("请补充填写课程名称");
-      //       return;
-      //     }
-      //   } else if (this.steps == 2) {
-      //     if (this.templateC.id != "" || this.templateC.id != undefined) {
-      //       this.cTemplate = this.templateC.content;
-      //     }
-      //     this.dialogVisible2 = false;
-      //     this.steps++;
-      //     setTimeout(() => {
-      //       this.checkEva(this.checkId);
-      //       setTimeout(() => {
-      //         this.checkEva(this.checkId);
-      //       }, 100);
-      //     }, 1000);
-      //   } else if (this.steps == 3) {
-      //     if (this.cid == "" || this.cid == undefined) {
-      //       if (this.courseName == "") {
-      //         this.$message.error("请补充填写课程名称");
-      //         return;
-      //       } else {
-      //         this.addWork();
-      //         this.steps++;
-      //       }
-      //     } else {
-      //       if (this.courseName == "") {
-      //         this.$message.error("请补充填写课程名称");
-      //         return;
-      //       } else {
-      //         if (this.userid != this.courseUserid && this.role != "1") {
-      //           this.updateWork2();
-      //         } else {
-      //           this.updateWork();
-      //         }
-      //         this.steps++;
-      //       }
-      //     }
-      //   }
-      // }
-      this.$refs.stepBox.scrollTop = 0;
-    },
-    unitSet(i) {
-      if (this.unitIndex == i) {
-        return;
-      }
-      this.unitIndex = i;
-      this.isClickColor = 1;
-
-      // this.$refs.rightboxR.scrollTop = 0;
-      this.$refs.unitBox.scrollTop = 0;
-    },
-    panUnitJson() {
-      let _unitIndex = this.unitIndex;
-      let cPan = 1;
-      for (
-        var j = 0;
-        j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-        j++
-      ) {
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-          j
-        ].proVisible2 = false;
-        if (
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-            .length > 1
-        ) {
-          for (
-            var z = 0;
-            z <
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length;
-            z++
-          ) {
-            if (
-              !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
-                z
-              ].tool.length
-            ) {
-              this.$message.error("请把工具添加完整");
-              cPan = 2;
-              break;
-            }
-          }
-        }
-        if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-              (ele) => {
-                return ele.value != "";
-              }
-            );
-        }
-      }
-      return cPan;
-    },
-    unitOpen(i) {
-      if (this.unitJson[i].toolOpen) {
-        this.unitJson[i].toolOpen = false;
-      } else {
-        this.unitJson[i].toolOpen = true;
-      }
-      this.updateWork();
-      this.$forceUpdate();
-    },
-    unitSet2(i) {
-      if (this.panUnitJson() == 2) {
-        return;
-      }
-      // if(this.unitJson[i].toolOpen){
-      //   this.unitJson[i].toolOpen = false
-      //   this.updateWork()
-      //   this.$forceUpdate()
-      //   return
-      // }else {
-      this.unitJson[i].toolOpen = true;
-      // }
-      this.$forceUpdate();
-      if (this.unitIndex == i) {
-        return;
-      }
-      this.unitIndex = i;
-      this.isClickColor = 1;
-
-      // this.$refs.rightboxR.scrollTop = 0;
-      this.$refs.unitBox.scrollTop = 0;
-    },
-    updateCourseState(i) {
-      let params = [
-        {
-          cid: this.cid,
-          state: i,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateCourseMode", params)
-        .then((res) => {
-          this.courseState = i;
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    addtips(){
-      let params = [
-        {
-          cid: this.cid,
-          tips: JSON.stringify(this.aiJson),
-          tid: this.templateid
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addTips", params)
-        .then((res) => {
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    openSaveTips(){
-      this.dialogVisibleTips = true
-    },
-    time() {
-      if (!this.now) {
-        this.now = new Date().getTime();
-        return true;
-      } else {
-        let time = new Date().getTime();
-        if (time - this.now > 3000) {
-          this.now = time;
-          return true;
-        } else {
-          return false;
-        }
-      }
-    },
-    deleteUnit(i) {
-      var _this = this;
-      if (i == 0 && _this.unitJson.length == 1) {
-        _this
-          .$confirm("确定切换成任务模式吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.unitJson[i].dyName = "";
-            // _this.updateCourseState(2);
-          })
-          .catch(() => {
-            return;
-          });
-      } else {
-        _this
-          .$confirm("确定删除此阶段吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.isDelete = 2;
-            // _this.unitIndex = _this.unitIndex - 1;
-            _this.deleteWork(_this.unitJson[i].chapterInfo[0].chapterid);
-            // _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteWork(chapid) {
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          chapid: chapid,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "deleteWork", params)
-        .then((res) => {
-          this.$message({
-            message: "删除成功",
-            type: "success",
-          });
-          let task = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson
-            )
-          );
-          this.unitJson.splice(this.unitIndex, 1);
-          if (this.unitIndex == 0) {
-            this.unitIndex = 0;
-          } else {
-            this.unitIndex = this.unitIndex - 1;
-          }
-
-          if (JSON.stringify(task) != JSON.stringify(this.taskJSONa)) {
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson = [
-              ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson,
-              ...task,
-            ];
-          }
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    deleteTool(itemTaskIndex, i) {
-      var _this = this;
-      if (_this.time()) {
-        _this
-          .$confirm("确定删除此工具吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].toolChoose.splice(i, 1);
-            _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteSentence(i) {
-      var _this = this;
-      _this
-        .$confirm("确定删除此题目吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.sentenceList.splice(i, 1);
-          _this.$message.success("删除成功");
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    deleteS(s, i, j) {
-      this.sentenceList[i].addSentence.splice(j, 1);
-      if (this.sentenceList[i].rightAnswer.indexOf(s) != -1) {
-        var a = this.sentenceList[i].rightAnswer.indexOf(s);
-        this.sentenceList[i].rightAnswer.splice(a, 1);
-      }
-    },
-    openT() {
-      top.postMessage({ tools: "25" }, "*");
-    },
-    deleteTask(i) {
-      var _this = this;
-      if (_this.time()) {
-        _this
-          .$confirm(
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.length -
-              1 ==
-              i
-              ? "确定删除此任务吗?"
-              : "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-            "提示",
-            {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning",
-            }
-          )
-          .then(() => {
-            if (i == 0) {
-              _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                i + 1
-              ].chapterData = JSON.parse(
-                JSON.stringify(
-                  _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[i]
-                    .chapterData
-                )
-              );
-            }
-            _this.$forceUpdate();
-            _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(
-              i,
-              1
-            );
-            _this.$message.success("删除成功");
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-    },
-    clean(i, c) {
-      this.unitJson[this.unitIndex].chapterInfo[i].fileList1.splice(c, 1);
-    },
-    handle_remove1(file, fileList, type) {
-      var _tmp = this.cover;
-      // for (var i = 0, len = _tmp.length; i < len; i++) {
-      //   if (_tmp[i].uid == file.uid) {
-      //     _tmp.splice(i, 1);
-      //     break;
-      //   }
-      //   this.cover = _tmp;
-      // }
-      this.cover = [];
-      this.noneBtnImg = this.cover.length >= 1;
-      this.isSysPic = false;
-      this.isSysPic2 = false;
-      this.$forceUpdate();
-    },
-    addImg(e) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-      e.target.value = "";
-    },
-    addChaptersTools(i) {
-      this.chapTools = [
-        {
-          tools: [],
-          toolDetail: "",
-        },
-      ];
-      this.chapCount = i;
-      this.dialogVisible4 = true;
-    },
-    isNoFinsh() {
-      this.$message.warning("功能正在开发中");
-    },
-    addAttText(i) {
-      this.AttText = {
-        title: "",
-        text: "",
-      };
-      this.taskCount = i;
-      this.AttTextType = 0;
-      this.$forceUpdate();
-      this.dialogVisible6 = true;
-      setTimeout(() => {
-        this.$refs["fuInput"].focus();
-      }, 100);
-    },
-    openLine(i) {
-      this.line = "";
-      this.lineCount = i;
-      this.lineType = 0;
-      this.$forceUpdate();
-      this.dialogVisible7 = true;
-    },
-    pasteLine(i) {
-      navigator.clipboard
-        .readText()
-        .then((v) => {
-          console.log("获取剪贴板成功:", v);
-          const html = v;
-          const regex = /src="(.*?)"/g;
-          const match = regex.exec(html);
-          if (match && match[1]) {
-            console.log(match[1]);
-            this.$message.success("粘贴成功");
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-              i
-            ].chapterData.push({
-              name: "链接",
-              title: "嵌入代码",
-              url: match[1],
-              type: 8,
-            });
-          } else {
-            // console.log("未找到包含 src 属性的 iframe");
-            this.$message.error(
-              "系统没有找到粘贴对象,请首先复制可用于粘贴的链接。"
-            );
-          }
-        })
-        .catch((v) => {
-          console.log("获取剪贴板失败: ", v);
-        });
-    },
-    openSource(i) {
-      this.lineCount = i;
-      this.sourceData = {};
-      this.dialogVisibleSource = true;
-      this.updateSourcePan = false;
-    },
-    openAiCreate(){
-      this.dialogVisibleAiCreate = true;
-    },
-    createAiPpt(json){
-      this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.push(json);
-      this.dialogVisibleAiCreate = false;
-    },
-    openAiCreateVideo(){
-      this.dialogVisibleAiCreateVideo = true;
-    },
-    createAiVideo(json){
-      this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.push(json);
-      // this.dialogVisibleAiCreateVideo = false;
-    },
-    async createTeacherAn(){
-      this.loading = true
-      let md = new MarkdownIt();
-      for(var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++){
-        let _task = this.unitJson[0].chapterInfo[0].taskJson[i]
-        let name = _task.task+'-教案'
-        let _html =  _task.taskDetail3 ? md.render(_task.taskDetail3) : ''
-        await this.generate(name, _html, i)
-      }
-    },
-    async generate(a, html, index) {
-      // 将html文件中需要用到的数据挂载到store上
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>${a}</title>
-          <style>
-          </style>
-      </head>
-      <body>
-      ${html}
-      </body>
-      </html>`;
-      // debugger
-      let dname = a + ".doc";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      const file = new File([blob], dname, { type: 'application/msword' });
-      await this.beforeUploadHtml(file, index)
-    },
-    beforeUploadHtml(event, index) {
-        var file = event;
-        var credentials = {
-            accessKeyId: "AKIATLPEDU37QV5CHLMH",
-            secretAccessKey: "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",
-        }; //秘钥形式的登录上传
-        window.AWS.config.update(credentials);
-        window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-        var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-        var _this = this;
-
-        if (file) {
-            var params = {
-                Key:
-                    file.name.split(".")[0] +
-                    new Date().getTime() +
-                    "." +
-                    file.name.split(".")[file.name.split(".").length - 1],
-                ContentType: file.type,
-                Body: file,
-                "Access-Control-Allow-Credentials": "*",
-                ACL: "public-read",
-            }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-            var options = {
-                partSize: 2048 * 1024 * 1024,
-                queueSize: 2,
-                leavePartsOnError: true,
-            };
-            bucket
-                .upload(params, options)
-                .on("httpUploadProgress", function (evt) {
-                    //这里可以写进度条
-                    // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-                })
-                .send(function (err, data) {
-                  if(index == (_this.unitJson[0].chapterInfo[0].taskJson.length - 1)){
-                    _this.loading = false
-                  }
-                    if (err) {
-                        _this.$message.error("上传失败");
-                    } else {
-                      _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.push({
-                          name: file.name,
-                          url: data.Location,
-                          type: 3,
-                        })
-                        console.log(data.Location);
-                    }
-                });
-        }
-    },
-    addSource() {
-      if (!Object.keys(this.sourceData).length) {
-        this.$message.error("请选择要上传的资源");
-        return;
-      }
-      let keys = Object.keys(this.sourceData);
-      for (var i = 0; i < keys.length; i++) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.lineCount
-        ].chapterData.push({
-          name: "链接",
-          title: this.sourceData[keys[i]].name,
-          url: this.sourceData[keys[i]].url,
-          type: 14,
-          id: keys[i],
-        });
-      }
-      this.$forceUpdate();
-      this.dialogVisibleSource = false;
-    },
-    updateSource() {
-      if (!Object.keys(this.sourceData).length) {
-        this.$message.error("请选择要上传的资源");
-        return;
-      }
-      let keys = Object.keys(this.sourceData);
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].url = this.sourceData[keys[0]].url;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].title = this.sourceData[keys[0]].name;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].id = keys[0];
-      this.updateSourcePan = false;
-      this.$forceUpdate();
-      this.dialogVisibleSource = false;
-    },
-    deleteM(i, j) {
-      this.testJson.testJson[i].timuList.splice(j, 1);
-    },
-    beforeUploadTiMu(event, i) {
-      const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            loading.close();
-            if (err) {
-              _this.$message.error("上传失败");
-            } else {
-              if (_this.testJson.testJson[i].timuList) {
-                _this.testJson.testJson[i].timuList.push({
-                  src: data.Location,
-                });
-              } else {
-                _this.testJson.testJson[i].timuList = [];
-                _this.testJson.testJson[i].timuList.push({
-                  src: data.Location,
-                });
-              }
-              _this.imgChange3(i);
-              _this.$forceUpdate();
-            }
-          });
-      }
-    },
-    beforeUploadTi(event, i, j) {
-      const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            loading.close();
-            if (err) {
-              _this.$message.error("上传失败");
-            } else {
-              _this.testJson.testJson[i].checkList[j] = {};
-              _this.testJson.testJson[i].checkList[j].src = data.Location;
-              _this.testJson.testJson[i].checkList[j].imgType = 1;
-              _this.imgChange2(i, j);
-              _this.$forceUpdate();
-            }
-          });
-      }
-    },
-    beforeUpload1(event, type) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            // loading.close();
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              // _this.cover.push({
-              //   name: file.name,
-              //   url: data.Location,
-              //   uid: file.uid,
-              // });
-              _this.cover = [
-                {
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                },
-              ];
-              _this.imgChange1(null, null, 1, null);
-              _this.choosePicVisible = false;
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    beforeUploadSelect(event, type) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            // loading.close();
-            if (err) {
-              _this.$message.error("上传失败");
-            } else {
-              _this.selectJson.url = data.Location;
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    chooseSysPic(p) {
-      this.cover = [];
-      setTimeout(() => {
-        this.cover[0] = {
-          name: "系统图片.png",
-          url: p,
-        };
-        this.imgChange1(null, null, 1, null);
-        this.$forceUpdate();
-      }, 0);
-      this.isSysPic = true;
-      this.isSysPic2 = false;
-      this.sysPicVisible = false;
-      this.$forceUpdate();
-    },
-    chooseSysPic2(p) {
-      this.cover = [];
-      setTimeout(() => {
-        this.cover[0] = {
-          name: "网络图片.png",
-          url: p,
-        };
-        this.imgChange1(null, null, 1, null);
-        this.$forceUpdate();
-      }, 0);
-      this.isSysPic2 = true;
-      this.isSysPic = false;
-      this.sysPicVisible2 = false;
-      this.$forceUpdate();
-    },
-    beforeUpload(data) {
-      this.$refs.upload1.uploadFiles;
-      this.uploadLoading1 = true;
-      var file = data.file;
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-          })
-          .send(function (err, data) {
-            _this.uploadLoading1 = false;
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              //上传成功处理
-              _this.unitJson[_this.unitIndex].chapterInfo[0].fileList1.push({
-                name: file.name,
-                url: data.Location,
-                uid: file.uid,
-              });
-              _this.imgChange();
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    onExceed() {
-      this.$message.error("课程封面仅支持上传一张,请删除后再进行上传");
-    },
-    beforeUpload2(event, unitIndex, type, itemTaskIndex) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-      if (type == 3) {
-        var b = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-        ];
-        if (
-          b.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) != -1
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        } else if (
-          file.name
-            .split(".")
-          [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        }
-      }
-      this.inputShow = false;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].progress = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].proVisible = true;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isFinishSize = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
-      _this.$forceUpdate();
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = parseInt((evt.loaded / evt.total) * 100);
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            _this.$forceUpdate();
-          })
-          .send(function (err, data) {
-            // loading.close();
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = 100;
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize =
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].isAllSize;
-            _this.$forceUpdate();
-            setTimeout(() => {
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].proVisible = false;
-              _this.$forceUpdate();
-            }, 1000);
-            _this.inputShow = true;
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              if (type == 13) {
-                let _type = 2;
-                var imgA = [
-                  "png",
-                  "jpg",
-                  "jpeg",
-                  "bmp",
-                  "gif",
-                  "webp",
-                  "psd",
-                  "svg",
-                  "tiff",
-                ];
-                var fileA = [
-                  "PDF",
-                  "DOC",
-                  "DOCX",
-                  "DOCM",
-                  "DOTM",
-                  "DOTX",
-                  "PPTX",
-                  "PPSX",
-                  "PPT",
-                  "PPS",
-                  "PPTM",
-                  "POTM",
-                  "PPAM",
-                  "POTX",
-                  "PPSM",
-                  "XLSX",
-                  "XLS",
-                ];
-                var videoA = [
-                  "AVI",
-                  "NAVI",
-                  "MPEG",
-                  "ASF",
-                  "MOV",
-                  "WMV",
-                  "3GP",
-                  "RM",
-                  "RMVB",
-                  "FLV",
-                  "F4V",
-                  "H.264",
-                  "H.265",
-                  "REAL VIDEO",
-                  "MKV",
-                  "WebM",
-                  "HDDVD",
-                  "MP4",
-                  "MPG",
-                  "M4V",
-                  "MGV",
-                  "OGV",
-                  "QTM",
-                  "STR",
-                  "AMC",
-                  "DVX",
-                  "EVO",
-                  "DAT",
-                  "OGG",
-                  "OGM",
-                ];
-                if (
-                  fileA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  _type = 3;
-                } else if (
-                  videoA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  _type = 2;
-                } else if (
-                  imgA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleLowerCase()
-                  ) != -1
-                ) {
-                  _type = 13;
-                } else {
-                  _type = 12;
-                }
-                _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                });
-                _this.imgChange1(null, null, _type, itemTaskIndex);
-              } else if (type == 2 || type == 3 || type == 12) {
-                _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: type,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 4) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].fileList1.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 5) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].homeworkList.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              }
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    beforeUploadInfo2(event, type) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-      var xianObj = ['DOCX','DOC','PPT','PPTX','MD','TXT','PDF']
-      if (
-        xianObj.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) == -1
-        ) {
-        this.$message.error("请上传.doc,.docx,.ppt,.pptx,.md,.txt,.pdf文件!");
-        this.inputShow = true;
-        // var a = _this.$refs.upload1.uploadFiles;
-        // a.splice(a.length - 1, a.length);
-        // loading.close();
-        return;
-      }
-
-      if (type == 3) {
-        var b = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-        ];
-        if (
-          b.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) != -1
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        } else if (
-          file.name
-            .split(".")
-          [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        }
-      }
-      
-      this.inputShow = false;
-      _this.infoprogress = 0;
-      _this.infoproVisible = true;
-      _this.infoisFinishSize = 0;
-      _this.infoisAllSize = (file.size / 1024 / 1024).toFixed(2);
-      _this.$forceUpdate();
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-            _this.infoprogress = parseInt((evt.loaded / evt.total) * 100);
-            _this.infoisFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            _this.$forceUpdate();
-          })
-          .send(async function (err, data) {
-            // loading.close();
-            _this.infoprogress = 100;
-            _this.infoisFinishSize = _this.infoisAllSize;
-            _this.$forceUpdate();
-            _this.inputShow = true;
-            if (err) {
-              setTimeout(() => {
-                _this.infoproVisible = false;
-                _this.$forceUpdate();
-              }, 1000);
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              let fileid = await _this.createFileid(data.Location)
-              if(fileid){
-                _this.infoproVisible = false;
-                _this.$forceUpdate();
-              }
-              if (type == 13) {
-                let _type = 2;
-                var imgA = [
-                  "png",
-                  "jpg",
-                  "jpeg",
-                  "bmp",
-                  "gif",
-                  "webp",
-                  "psd",
-                  "svg",
-                  "tiff",
-                ];
-                var fileA = [
-                  "PDF",
-                  "DOC",
-                  "DOCX",
-                  "DOCM",
-                  "DOTM",
-                  "DOTX",
-                  "PPTX",
-                  "PPSX",
-                  "PPT",
-                  "PPS",
-                  "PPTM",
-                  "POTM",
-                  "PPAM",
-                  "POTX",
-                  "PPSM",
-                  "XLSX",
-                  "XLS",
-                ];
-                var videoA = [
-                  "AVI",
-                  "NAVI",
-                  "MPEG",
-                  "ASF",
-                  "MOV",
-                  "WMV",
-                  "3GP",
-                  "RM",
-                  "RMVB",
-                  "FLV",
-                  "F4V",
-                  "H.264",
-                  "H.265",
-                  "REAL VIDEO",
-                  "MKV",
-                  "WebM",
-                  "HDDVD",
-                  "MP4",
-                  "MPG",
-                  "M4V",
-                  "MGV",
-                  "OGV",
-                  "QTM",
-                  "STR",
-                  "AMC",
-                  "DVX",
-                  "EVO",
-                  "DAT",
-                  "OGG",
-                  "OGM",
-                ];
-                if (
-                  fileA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  _type = 3;
-                } else if (
-                  videoA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  _type = 2;
-                } else if (
-                  imgA.indexOf(
-                    data.Location.split(".")[
-                      data.Location.split(".").length - 1
-                    ].toLocaleLowerCase()
-                  ) != -1
-                ) {
-                  _type = 13;
-                } else {
-                  _type = 12;
-                }
-                _this.infoData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                });
-                _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: _type,
-                  fileid: fileid,
-                })
-              } else if (type == 2 || type == 3 || type == 12) {
-                _this.infoData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: type,
-                  fileid: fileid,
-                });
-                _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                  type: type,
-                  fileid: fileid,
-                })
-              }
-              console.log(data.Location);
-              console.log(fileid);
-            }
-          });
-      }
-    },
-    beforeUpload3(event, unitIndex, type, itemTaskIndex, string) {
-      // const loading = this.openLoading();
-      var file = event.target.files[0];
-      var credentials = {
-        accessKeyId: "AKIATLPEDU37QV5CHLMH",
-        secretAccessKey: "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",
-      }; //秘钥形式的登录上传
-      window.AWS.config.update(credentials);
-      window.AWS.config.region = "cn-northwest-1"; //设置区域
-
-      var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
-      var _this = this;
-      if (type == 3) {
-        var b = [
-          "DOC",
-          "DOCX",
-          "DOCM",
-          "DOTM",
-          "DOTX",
-          "PPTX",
-          "PPSX",
-          "PPT",
-          "PPS",
-          "PPTM",
-          "POTM",
-          "PPAM",
-          "POTX",
-          "PPSM",
-        ];
-        if (
-          b.indexOf(
-            file.name
-              .split(".")
-            [file.name.split(".").length - 1].toLocaleUpperCase()
-          ) != -1
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        } else if (
-          file.name
-            .split(".")
-          [file.name.split(".").length - 1].toLocaleUpperCase() != "PDF"
-        ) {
-          if (file.size / 1024 / 1024 > 80) {
-            this.$message.error("添加成上传文件大于80兆,请重新选择文件!");
-            this.inputShow = true;
-            // var a = _this.$refs.upload1.uploadFiles;
-            // a.splice(a.length - 1, a.length);
-            // loading.close();
-            return;
-          }
-        }
-      }
-      this.inputShow = false;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].progress = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].proVisible = true;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isFinishSize = 0;
-      _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].isAllSize = (file.size / 1024 / 1024).toFixed(2);
-      _this.$forceUpdate();
-      if (file) {
-        var params = {
-          Key:
-            file.name.split(".")[0] +
-            new Date().getTime() +
-            "." +
-            file.name.split(".")[file.name.split(".").length - 1],
-          ContentType: file.type,
-          Body: file,
-          "Access-Control-Allow-Credentials": "*",
-          ACL: "public-read",
-        }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
-        var options = {
-          partSize: 2048 * 1024 * 1024,
-          queueSize: 2,
-          leavePartsOnError: true,
-        };
-        bucket
-          .upload(params, options)
-          .on("httpUploadProgress", function (evt) {
-            //这里可以写进度条
-            // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = parseInt((evt.loaded / evt.total) * 100);
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize = (evt.loaded / 1024 / 1024).toFixed(2);
-            _this.$forceUpdate();
-          })
-          .send(function (err, data) {
-            // loading.close();
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].progress = 100;
-            _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].isFinishSize =
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].isAllSize;
-            _this.$forceUpdate();
-            setTimeout(() => {
-              _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].proVisible = false;
-              _this.$forceUpdate();
-            }, 1000);
-            _this.inputShow = true;
-            if (err) {
-              // var a = _this.$refs.upload1.uploadFiles;
-              // a.splice(a.length - 1, a.length);
-              _this.$message.error("上传失败");
-            } else {
-              if (type == 2 || type == 3) {
-                _this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData.push({
-                  name: file.name,
-                  // name: string+''+(_this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  //   itemTaskIndex
-                  // ].chapterData.length+1),
-                  url: data.Location,
-                  uid: file.uid,
-                  type: type,
-                  text: string,
-                  // text: string + '' + (_this.unitJson[unitIndex].chapterInfo[0].taskJson[
-                  //   itemTaskIndex
-                  // ].chapterData.length + 1),
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 4) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].fileList1.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              } else if (type == 5) {
-                _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].homeworkList.push({
-                  name: file.name,
-                  url: data.Location,
-                  uid: file.uid,
-                });
-                _this.imgChange1(null, null, type, itemTaskIndex);
-              }
-              console.log(data.Location);
-            }
-          });
-      }
-    },
-    addunit() {
-      this.unitJson.push({
-        dyName: "", //单元标题
-        isUpdate: 1,
-        easy: this.unitJson[this.unitJson.length - 1].easy ? 1 : 0,
-        chapterInfo: [
-          {
-            isread: false,
-            chapterid: this.guid(),
-            title: "",
-            courseName: "",
-            taskJson: [
-              {
-                task: "",
-                taskDetail: "",
-                chapterData: [],
-                toolText: "",
-                toolChoose: [
-                  {
-                    tool: [],
-                    toolDetail: "",
-                    toolType: 0,
-                    askCount: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  },
-                ],
-                isShowTools: false,
-                askCount: 1,
-                isFold: 1,
-                askTitle: "",
-                askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                checkJson: [{ checkCount: [], checkPerent: [] }],
-                homeworkList: [],
-              },
-            ],
-            itemCount: 1,
-            fileList1: [],
-            video: [],
-            testData: [],
-            pData: [],
-            templateArray: [],
-          },
-        ],
-      });
-      this.addindex = this.unitJson.length - 1;
-
-      setTimeout(() => {
-        this.unitIndex = this.unitJson.length - 1;
-        setTimeout(() => {
-          console.log(this.$refs.dyInput);
-          this.$refs.dyInput[0].focus();
-        }, 100);
-        this.unitSet(this.unitIndex);
-      }, 0);
-    },
-    addToolFun(itemTaskIndex) {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].toolChoose.push({
-        tool: [],
-        toolDetail: "",
-        toolType: 0,
-        askCount: 1,
-        askTitle: "",
-        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      });
-    },
-    addTaskBorder() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson.push({
-        task: "",
-        taskDetail: "",
-        chapterData: [],
-        toolText: "",
-        toolChoose: [
-          {
-            tool: [],
-            toolDetail: "",
-            toolType: 0,
-            askCount: 1,
-            askTitle: "",
-            askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          },
-        ],
-        isShowTools: false,
-        askCount: 1,
-        isFold: 1, //任务收起状态
-        askTitle: "",
-        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-        checkJson: [{ checkCount: [], checkPerent: [] }],
-        homeworkList: [],
-      });
-
-      setTimeout(() => {
-        this.checkEva(this.checkId);
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-        }, 100);
-      }, 100);
-    },
-    add(e, i) {
-      var el = e.currentTarget;
-      el.getElementsByTagName("input")[0].click();
-    },
-    fold(i, e) {
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold == 0
-      ) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 1;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
-      }
-    },
-    fold2(i) {
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold2) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isFold2 = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold2 = true;
-      }
-      this.$forceUpdate();
-    },
-    foldEva(i) {
-      if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isEvaFold) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isEvaFold = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isEvaFold = true;
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-          }, 500);
-        }, 0);
-      }
-      this.$forceUpdate();
-    },
-    foldC(i) {
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFoldchapter
-      ) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isFoldchapter = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].isFoldchapter = true;
-      }
-      this.$forceUpdate();
-    },
-    fold3(i, ti) {
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[ti]
-          .isFold3
-      ) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-          ti
-        ].isFold3 = false;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-          ti
-        ].isFold3 = true;
-      }
-      this.$forceUpdate();
-    },
-    deleteHomeworkBox(unitIndex, index, i) {
-      this.unitJson[unitIndex].chapterInfo[index].taskJson[
-        this.taskCount
-      ].homeworkList.splice(i, 1);
-    },
-    getStudent() {
-      let params = {
-        oid: this.oid,
-        cu: "",
-        cn: this.searchPeople,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectStudentAdd", params)
-        .then((res) => {
-          this.studentJuri = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-      // 添加协同成员其他选项按钮
-      getTeacherCopy(){
-      this.CollLoading=true
-
-      this.collid = ''
-      this.collid = '1xpz'
-      let params = {
-        oid:
-          this.org && this.org != "undefined" && this.org != "null"
-            ? this.org
-            : this.oid,
-        cu: "",
-        cn: this.searchTN,
-        coll: ''
-      };
-      this.ajax
-        .get(
-          this.$store.state.api +
-            (this.org && this.org != "undefined" && this.org != "null"
-              ? "selectCollaborativeMembersOrg"
-              : "selectCollaborativeMembers"),
-          params
-        )
-        .then((res) => {
-          let teacherJuri = res.data[0];
-          this.CollaborativeTeaList = res.data[1];
-          for (var i = 0; i < teacherJuri.length; i++) {
-            if (teacherJuri[i].userid == this.userid) {
-              teacherJuri.splice(i, 1);
-              break;
-            }
-          }
-
-          this.teacherJuri = teacherJuri.filter((i,index)=>{
-            return (i.cclassid == '' || i.cclassid == null)
-          })
-          console.log(' this.teacherJuri', this.teacherJuri);
-
-
-          let _check = [];
-          let _check2 = [];
-          for (var i = 0; i < this.teacherJuri.length; i++) {
-            var gid = this.teacherJuri[i].userid;
-            _check.push(gid);
-          }
-          for (var i = 0; i < this.checkboxList3.length; i++) {
-            var _id = this.checkboxList3[i];
-            if (_check.indexOf(_id) !== -1) {
-              _check2.push(_id);
-            }
-          }
-          
-          if (_check2.length==0 && _check.length==0) {
-
-          }else{
-            this.checkAll2 = _check2.length === _check.length;
-          }
-          this.CollLoading=false
-
-        })
-        .catch((err) => {
-          console.error(err);
-          this.CollLoading=false
-        });
-    },
-    getTeacher(val) {
-      this.CollLoading=true
-      this.collid = ''
-      this.collid = !val ? '' : val
-
-      let params = {
-        oid:
-          this.org && this.org != "undefined" && this.org != "null"
-            ? this.org
-            : this.oid,
-        cu: "",
-        cn: this.searchTN,
-        coll: this.collid
-      };
-      this.ajax
-        .get(
-          this.$store.state.api +
-          (this.org && this.org != "undefined" && this.org != "null"
-            ? "selectCollaborativeMembersOrg"
-            : "selectCollaborativeMembers"),
-          params
-        )
-        .then((res) => {
-          let teacherJuri = res.data[0];
-          this.CollaborativeTeaList = res.data[1];
-
-          for (var i = 0; i < teacherJuri.length; i++) {
-            if (teacherJuri[i].userid == this.userid) {
-              teacherJuri.splice(i, 1);
-              break;
-            }
-          }
-          this.teacherJuri = teacherJuri;
-
-          let _check = [];
-          let _check2 = [];
-          for (var i = 0; i < this.teacherJuri.length; i++) {
-            var gid = this.teacherJuri[i].userid;
-            _check.push(gid);
-          }
-          for (var i = 0; i < this.checkboxList3.length; i++) {
-            var _id = this.checkboxList3[i];
-            if (_check.indexOf(_id) !== -1) {
-              _check2.push(_id);
-            }
-          }
-          
-          if (_check2.length==0 && _check.length==0) {
-
-          }else{
-            this.checkAll2 = _check2.length === _check.length;
-          }
-          this.CollLoading=false
-        })
-        .catch((err) => {
-          console.error(err);
-          this.CollLoading=false
-        });
-    },
-    searchStudent() {
-      this.getStudent();
-    },
-    selectGrage() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectGrageBySchool", params)
-        .then((res) => {
-          this.gradeList = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    //获取班级列表
-    getClass() {
-      let params = {
-        oid: this.oid,
-        gid: this.gradeId,
-        cn: this.classSearch,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectClassBySchoolSearch2", params)
-        .then((res) => {
-          if (!this.grade.length) {
-            this.grade = res.data[0];
-          }
-          this.grade2 = res.data[0];
-          this.classJuri = res.data[0];
-          let _check = [];
-          let _check2 = [];
-          for (var i = 0; i < this.grade2.length; i++) {
-            var gid = this.grade2[i].id;
-            _check.push(gid);
-          }
-          for (var i = 0; i < this.checkboxList2.length; i++) {
-            var _id = this.checkboxList2[i];
-            if (_check.indexOf(_id) !== -1) {
-              _check2.push(_id);
-            }
-          }
-          this.checkAll = _check2.length === _check.length;
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    CourseType2Change(val) {
-      this.pTypeCheck = [];
-      for (var i = 0; i < this.CourseType2.length; i++) {
-        let typeA = this.CourseType2[i];
-        if (val.indexOf(typeA.name) != -1) {
-          this.pTypeCheck.push(...typeA.id);
-        }
-      }
-    },
-    getChapterData(e, i, j, ic, type) {
-      e.stopPropagation();
-      this.updataC = true;
-      this.icc = ic;
-      if ((type == 2 || type == 3) && e.target.tagName !== "INPUT") {
-        console.log("还不能下载图片喔");
-      }
-    },
-    deleteChapterData(e, i, j, ic, taskI) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitJson[i].chapterInfo[j].taskJson[taskI].chapterData.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    deleteInfoData(e, ic) {
-      e.stopPropagation();
-      let _this = this;
-      _this
-        .$confirm("确定删除此项?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.infoData.splice(
-            ic,
-            1
-          );
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    updataVideoT(e, i, j, ic) {
-      // e.stopPropagation();
-      // this.unitJson[i].chapterInfo[0].taskJson[j].chapterData[
-      //   ic
-      // ].name = JSON.parse(JSON.stringify(e.target.value));
-      this.line =
-        this.unitJson[i].chapterInfo[0].taskJson[0].chapterData[ic].name;
-      this.taskCount = j;
-      this.lineCount = ic;
-      this.dialogVisibleupdataVideoT = true;
-      this.$forceUpdate();
-    },
-    updataVideoC() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].name = JSON.parse(
-        JSON.stringify(this.line)
-      );
-      this.dialogVisibleupdataVideoT = false;
-      this.$forceUpdate();
-    },
-    upCd(e, i, j, taskCount, ic) {
-      e.stopPropagation();
-      if (ic == 0) {
-        return;
-      }
-      var a = JSON.parse(
-        JSON.stringify(
-          this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[
-          ic - 1
-          ]
-        )
-      );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic - 1] =
-        JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic]
-          )
-        );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
-      this.$forceUpdate();
-    },
-    downCd(e, i, j, taskCount, ic) {
-      e.stopPropagation();
-      if (
-        ic ==
-        this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData.length -
-        1
-      ) {
-        return;
-      }
-      var a = JSON.parse(
-        JSON.stringify(
-          this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[
-          ic + 1
-          ]
-        )
-      );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic + 1] =
-        JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic]
-          )
-        );
-      this.unitJson[i].chapterInfo[0].taskJson[taskCount].chapterData[ic] = a;
-      this.$forceUpdate();
-    },
-    async upTool(e, i, j, tooli) {
-      e.stopPropagation();
-      if (tooli == 0) {
-        return;
-      }
-      let count1 = await this.getWorksCount(3, i, j, tooli - 1);
-      let count2 = await this.getWorksCount(3, i, j, tooli);
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            var a = JSON.parse(
-              JSON.stringify(
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[
-                tooli - 1
-                ]
-              )
-            );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-              JSON.parse(
-                JSON.stringify(
-                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-                )
-              );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            return;
-          });
-      } else {
-        var a = JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1]
-          )
-        );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli - 1] =
-          JSON.parse(
-            JSON.stringify(
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-            )
-          );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-        this.$forceUpdate();
-      }
-    },
-    async downTool(e, i, j, tooli) {
-      e.stopPropagation();
-      if (
-        tooli ==
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length - 1
-      ) {
-        return;
-      }
-      let count1 = await this.getWorksCount(3, i, j, tooli + 1);
-      let count2 = await this.getWorksCount(3, i, j, tooli);
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            var a = JSON.parse(
-              JSON.stringify(
-                this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[
-                tooli + 1
-                ]
-              )
-            );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-              JSON.parse(
-                JSON.stringify(
-                  this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-                )
-              );
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            return;
-          });
-      } else {
-        var a = JSON.parse(
-          JSON.stringify(
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1]
-          )
-        );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli + 1] =
-          JSON.parse(
-            JSON.stringify(
-              this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli]
-            )
-          );
-        this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[tooli] = a;
-        this.$forceUpdate();
-      }
-    },
-    addWork() {
-      let cPan = 1;
-      for (var i = 0; i < this.unitJson.length; i++) {
-        for (
-          var j = 0;
-          j < this.unitJson[i].chapterInfo[0].taskJson.length;
-          j++
-        ) {
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
-          if (
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
-          ) {
-            for (
-              var z = 0;
-              z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
-              z++
-            ) {
-              if (
-                !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
-                  .length
-              ) {
-                this.$message.error("请把工具添加完整");
-                cPan = 2;
-                break;
-              }
-            }
-          }
-          if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
-            this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
-              i
-            ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
-              return ele.value != "";
-            });
-          }
-        }
-      }
-      this.inputShow = true;
-
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      for (var i = 0; i < this.unitJson.length; i++) {
-        delete this.unitJson[i].isUpdate;
-      }
-      let params = [
-        {
-          uid: this.userid,
-          title: this.courseName,
-          brief: this.courseText,
-          cover:
-            this.cover.length > 0
-              ? JSON.stringify(this.cover)
-              : JSON.stringify([
-                {
-                  name: "noBanner.jpg",
-                  url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
-                  uid: 1656409780264,
-                  status: "success",
-                },
-              ]),
-          evaId: this.evalua,
-          astudent:
-            this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
-          see: this.isTeacherSee == true ? 1 : 0,
-          chapters: JSON.stringify(this.unitJson),
-          template: this.cTemplate != "undefined" ? this.cTemplate : "",
-          courseType: JSON.stringify(this.courseTypeId),
-          ateacher:
-            this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
-          inviteCode: JSON.stringify(this.inviteCode),
-          refile: JSON.stringify(this.infoData),
-          reBrief: this.courseText2,
-          cpote: JSON.stringify(this.cpote),
-          setting: JSON.stringify({courseJie: this.courseJie, courseTime: this.courseTime}),
-          iresearch: this.isFileSearch ? 1 : 2,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addWorkNew2AI3", params)
-        .then((res) => {
-          console.log(this.steps);
-          if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
-            this.$message({
-              message: "新增成功",
-              type: "success",
-            });
-          }
-          this.number = res.data.ordernumber;
-          this.courseId = res.data.courseId;
-          this.cid = res.data.courseId;
-          this.courseUserid = this.userid;
-          this.islogin = true;
-          this.updateCourseState(4);
-          this.addtips()
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    goCourse() {
-      top.postMessage({ cid: this.courseId, type: "1" }, "*");
-    },
-    updateWork2() {
-      let _unitIndex = this.unitIndex;
-      let cPan = 1;
-      for (
-        var j = 0;
-        j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-        j++
-      ) {
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-          j
-        ].proVisible2 = false;
-        if (
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-            .length > 1
-        ) {
-          for (
-            var z = 0;
-            z <
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length;
-            z++
-          ) {
-            if (
-              !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
-                z
-              ].tool.length
-            ) {
-              this.$message.error("请把工具添加完整");
-              cPan = 2;
-              break;
-            }
-          }
-        }
-        if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-              (ele) => {
-                return ele.value != "";
-              }
-            );
-        }
-      }
-      this.inputShow = true;
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          unitIndex: _unitIndex,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateWorkNew4", params)
-        .then((res) => {
-          this.$message({
-            message: "修改成功",
-            type: "success",
-          });
-          this.courseId = this.cid;
-          this.addtips();
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    updateWork3(unitIndex) {
-      let _unitIndex = unitIndex;
-      let cPan = 1;
-      for (
-        var j = 0;
-        j < this.unitJson[_unitIndex].chapterInfo[0].taskJson.length;
-        j++
-      ) {
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].proVisible = false;
-        this.unitJson[_unitIndex].chapterInfo[0].taskJson[
-          j
-        ].proVisible2 = false;
-        if (
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-            .length > 1
-        ) {
-          for (
-            var z = 0;
-            z <
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose
-              .length;
-            z++
-          ) {
-            if (
-              !this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].toolChoose[
-                z
-              ].tool.length
-            ) {
-              this.$message.error("请把工具添加完整");
-              cPan = 2;
-              break;
-            }
-          }
-        }
-        if (this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList) {
-          this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList =
-            this.unitJson[_unitIndex].chapterInfo[0].taskJson[j].eList.filter(
-              (ele) => {
-                return ele.value != "";
-              }
-            );
-        }
-      }
-      this.inputShow = true;
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          unitIndex: _unitIndex,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateWorkNew4", params)
-        .then((res) => {
-          // this.$message({
-          //   message: "修改成功",
-          //   type: "success",
-          // });
-          this.courseId = this.cid;
-          this.addtips()
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    updateWork() {
-      let cPan = 1;
-      for (var i = 0; i < this.unitJson.length; i++) {
-        for (
-          var j = 0;
-          j < this.unitJson[i].chapterInfo[0].taskJson.length;
-          j++
-        ) {
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible = false;
-          this.unitJson[i].chapterInfo[0].taskJson[j].proVisible2 = false;
-          if (
-            this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length > 1
-          ) {
-            for (
-              var z = 0;
-              z < this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose.length;
-              z++
-            ) {
-              if (
-                !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
-                  .length
-              ) {
-                this.$message.error("请把工具添加完整");
-                cPan = 2;
-                break;
-              }
-            }
-          }
-          if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
-            this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
-              i
-            ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
-              return ele.value != "";
-            });
-          }
-        }
-      }
-      this.inputShow = true;
-      if (cPan == 2) {
-        this.steps--;
-        return;
-      }
-      for (var i = 0; i < this.unitJson.length; i++) {
-        delete this.unitJson[i].isUpdate;
-      }
-      let params = [
-        {
-          cid: this.cid,
-          title: this.courseName,
-          brief: this.courseText,
-          cover:
-            this.cover.length > 0
-              ? JSON.stringify(this.cover)
-              : JSON.stringify([
-                {
-                  name: "noBanner.jpg",
-                  url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/wu1676621845022.png",
-                  uid: 1656409780264,
-                  status: "success",
-                },
-              ]),
-          evaId: this.evalua,
-          astudent:
-            this.checkboxList2.length > 0 ? this.checkboxList2.join(",") : "",
-          see: this.isTeacherSee == true ? 1 : 0,
-          chapters: JSON.stringify(this.unitJson),
-          template: this.myWord != "undefined" ? this.myWord : [],
-          uid: this.userid,
-          courseType: JSON.stringify(this.courseTypeId),
-          ateacher:
-            this.checkboxList3.length > 0 ? this.checkboxList3.join(",") : "",
-          inviteCode: JSON.stringify(this.inviteCode),
-          refile: JSON.stringify(this.infoData),
-          reBrief: this.courseText2,
-          cpote: JSON.stringify(this.cpote),
-          setting: JSON.stringify({courseJie: this.courseJie, courseTime: this.courseTime}),
-          iresearch: this.isFileSearch ? 1 : 2,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "updateWorkNew2AI3", params)
-        .then((res) => {
-          if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
-            if (this.cidType == 1) {
-              this.$message({
-                message: "修改成功",
-                type: "success",
-              });
-            } else {
-              this.$message({
-                message: "新增成功",
-                type: "success",
-              });
-            }
-          }
-          this.number = this.nbOrder;
-          this.courseId = this.cid;
-          this.addtips()
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    insertWord() {
-      this.dialogVisible1 = true;
-      this.updateBoolean2 = false;
-      this.tTitle = "";
-      this.tdetail = "";
-    },
-    addWord() {
-      this.unitJson[this.unitIndex].chapterInfo[0].fileList1.push({
-        name: this.tTitle,
-        content: this.tdetail,
-        uid: this.guid(),
-      });
-      this.dialogVisible1 = false;
-    },
-    upWord() { },
-    selectWord(uid, i, c) {
-      this.dialogVisible1 = true;
-      this.updateBoolean2 = true;
-      if (
-        uid == this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].uid
-      ) {
-        this.tTitle =
-          this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].name;
-        this.tdetail =
-          this.unitJson[this.unitIndex].chapterInfo[i].fileList1[c].content;
-      }
-    },
-    isAddPP() {
-      if (this.checkboxList.length > 0) {
-        this.$message({
-          message: "添加成功",
-          type: "success",
-        });
-        this.dialogVisible3 = false;
-      } else {
-        this.$message({
-          message: "请添加课程成员",
-          type: "error",
-        });
-      }
-    },
-    isAddClass() {
-      this.dialogVisibleClass = false;
-    },
-    isAddPPTeacher() {
-      this.dialogVisibleMember = false;
-      this.setMan();
-    },
-    getTipsTemplate(){
-      if(this.templateid){
-        let params = {
-          id: this.templateid
-        }
-        this.ajax
-        .get(this.$store.state.api + "selectTipsTemplateById", params)
-        .then((res) => {
-          if(res.data[0].length){
-            this.tipsJson = res.data[0][0]
-            this.aiJson = JSON.parse(res.data[0][0].tips)
-            this.aiJson.teacherDetail2 = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-            this.$forceUpdate();
-          }
-        })
-        .catch((err) => { });
-      }
-    },
-    getTemplate() {
-      this.ajax
-        .get(this.$store.state.api + "getCourseTemplateT", "")
-        .then((res) => {
-          this.templateArray = res.data[0];
-          this.getTemplateOid();
-          this.$forceUpdate();
-        })
-        .catch((err) => { });
-    },
-    getTemplateOid() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseTemplateTByOid", params)
-        .then((res) => {
-          if (res.data[0].length) {
-            this.templateArray = [...res.data[0], ...this.templateArray];
-          }
-          this.getTemplateOrg();
-          this.$forceUpdate();
-        })
-        .catch((err) => { });
-    },
-    getTemplateOrg() {
-      let params = {
-        oid: this.org,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseTemplateTByOid", params)
-        .then((res) => {
-          if (res.data[0].length) {
-            this.templateArray = [...res.data[0], ...this.templateArray];
-          }
-          this.$forceUpdate();
-        })
-        .catch((err) => { });
-    },
-    clearChoose() {
-      this.clearArray.splice(this.templateC.id, 1);
-      this.dialogVisible2 = false;
-    },
-    clearAttText() {
-      this.AttText = {
-        title: "",
-        text: "",
-      };
-      this.dialogVisible6 = false;
-    },
-    clearLine() {
-      this.line = "";
-      this.dialogVisible7 = false;
-    },
-    openTemplate() {
-      this.ctJson = {};
-      this.templateDialog = true;
-    },
-    checkctJson(json) {
-      if (this.ctJson.id == json.id) {
-        this.ctJson = {};
-      } else {
-        this.ctJson = json;
-      }
-    },
-    addTemplate(res) {
-      let _this = this;
-      let _res = [];
-      if (res.id == 1) {
-        _res = [
-          {
-            dyName: "", //单元标题
-            easy: 1,
-            chapterInfo: [
-              {
-                isread: false,
-                chapterid: this.guid(),
-                title: "",
-                courseName: "",
-                taskJson: [
-                  {
-                    task: "",
-                    taskDetail: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  },
-                ],
-                itemCount: 1,
-                fileList1: [],
-                video: [],
-                testData: [],
-                pData: [],
-                templateArray: [],
-              },
-            ],
-          },
-        ];
-        this.updateCourseState(1);
-      } else if (res.id == 2) {
-        let stageData = [];
-        let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-        let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-        if (!iframe && !iframe2) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        let copyData = iframe ? iframe.contentWindow.copyData : false;
-        let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-        if (
-          (!copyData || !copyData.stageData || !copyData.stageData.length) &&
-          (!copyData2 || !copyData2.stageData || !copyData2.stageData.length)
-        ) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        stageData = copyData
-          ? copyData.stageData
-          : copyData2
-            ? copyData2.stageData
-            : [""];
-        for (var i = 0; i < stageData.length; i++) {
-          _res.push({
-            dyName: stageData[i], //单元标题
-            chapterInfo: [
-              {
-                isread: false,
-                chapterid: this.guid(),
-                title: "",
-                courseName: "",
-                taskJson: [
-                  {
-                    task: "",
-                    taskDetail: "",
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  },
-                ],
-                itemCount: 1,
-                fileList1: [],
-                video: [],
-                testData: [],
-                pData: [],
-                templateArray: [],
-              },
-            ],
-          });
-        }
-        this.updateCourseState(1);
-      } else if (!Object.keys(res).length) {
-        this.$message.error("请选择模板");
-        retrun;
-      } else {
-        _res = JSON.parse(res.chapters);
-        this.updateCourseState(parseInt(res.state));
-      }
-      _this
-        .$confirm(
-          "确定选择课程模板吗?此操作将删除所有已编辑课程内容。",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-        .then(() => {
-          _this.unitJson = _res;
-          _this.updateWork();
-          // _this.steps++;
-          _this.templateDialog = false;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate(res) {
-      let _this = this;
-      _this
-        .$confirm(
-          "确定选择课程模板吗?此操作将删除所有已编辑课程内容。",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-        .then(() => {
-          _this.unitJson = JSON.parse(res.chapters);
-          _this.steps++;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate1(w) {
-      this.steps++;
-    },
-    checkTemplate2() {
-      let _this = this;
-      _this
-        .$confirm("确定选择空模板吗?修改课程时无法重置课程模板。", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitIndex = 0;
-          _this.unitJson = [
-            {
-              dyName: "", //单元标题
-              chapterInfo: [
-                {
-                  isread: false,
-                  chapterid: this.guid(),
-                  title: "",
-                  courseName: "",
-                  taskJson: [
-                    {
-                      task: "",
-                      taskDetail: "",
-                      chapterData: [],
-                      toolText: "",
-                      toolChoose: [
-                        {
-                          tool: [],
-                          toolDetail: "",
-                          toolType: 0,
-                          askCount: 1,
-                          askTitle: "",
-                          askJson: [
-                            { askstitle: "", askItem: 1, checkList: [] },
-                          ],
-                        },
-                      ],
-                      isShowTools: false,
-                      askCount: 1,
-                      isFold: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      checkJson: [{ checkCount: [], checkPerent: [] }],
-                      homeworkList: [],
-                    },
-                  ],
-                  itemCount: 1,
-                  fileList1: [],
-                  video: [],
-                  testData: [],
-                  pData: [],
-                  templateArray: [],
-                },
-              ],
-            },
-          ];
-          this.steps++;
-          setTimeout(() => {
-            this.checkEva(this.checkId);
-            setTimeout(() => {
-              this.checkEva(this.checkId);
-            }, 100);
-          }, 1000);
-          this.updateWork();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate3() {
-      let _this = this;
-      _this
-        .$confirm("确定选择简易模板吗?修改课程时无法重置课程模板。", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitIndex = 0;
-          _this.unitJson = [
-            {
-              dyName: "", //单元标题
-              easy: 1,
-              chapterInfo: [
-                {
-                  isread: false,
-                  chapterid: this.guid(),
-                  title: "",
-                  courseName: "",
-                  taskJson: [
-                    {
-                      task: "",
-                      taskDetail: "",
-                      chapterData: [],
-                      toolText: "",
-                      toolChoose: [
-                        {
-                          tool: [],
-                          toolDetail: "",
-                          toolType: 0,
-                          askCount: 1,
-                          askTitle: "",
-                          askJson: [
-                            { askstitle: "", askItem: 1, checkList: [] },
-                          ],
-                        },
-                      ],
-                      isShowTools: false,
-                      askCount: 1,
-                      isFold: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      checkJson: [{ checkCount: [], checkPerent: [] }],
-                      homeworkList: [],
-                    },
-                  ],
-                  itemCount: 1,
-                  fileList1: [],
-                  video: [],
-                  testData: [],
-                  pData: [],
-                  templateArray: [],
-                },
-              ],
-            },
-          ];
-          // this.steps++;
-          this.updateWork();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    checkTemplate4() {
-      let _this = this;
-      _this
-        .$confirm("确定选择未来小学课程设计吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.unitIndex = 0;
-          _this.unitJson = JSON.parse(JSON.stringify(weilaiData));
-          this.steps++;
-          this.updateWork();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    wordNext() {
-      this.dialogVisible2 = false;
-    },
-    isAddOrUpdateAttText() {
-      if (this.AttTextType == 0) {
-        this.addAttTextMessage();
-      } else {
-        this.updateAttText();
-      }
-    },
-    isAddOrUpdateLine() {
-      if (!this.lineTitle) {
-        this.$message.error("请填写链接标题");
-        return;
-      }
-      if (this.lineType == 0) {
-        this.addLine();
-      } else {
-        this.updateLine();
-      }
-    },
-    addAttTextMessage() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData.push({
-        name: this.AttText.title,
-        url: this.AttText.text,
-        type: 6,
-      });
-      this.imgChange1(null, null, 6, this.taskCount);
-      this.dialogVisible6 = false;
-    },
-    selectAttText(itemTaskIndex, i) {
-      this.AttText.title =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].chapterData[i].name;
-      this.AttText.text =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].chapterData[i].url;
-      this.taskCount = itemTaskIndex;
-      this.AttTextIndex = i;
-      this.AttTextType = 1;
-      this.dialogVisible6 = true;
-    },
-    updateAttText() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.AttTextIndex].name = this.AttText.title;
-
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.AttTextIndex].url = this.AttText.text;
-      this.dialogVisible6 = false;
-    },
-    addLine() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.lineCount
-      ].chapterData.push({
-        name: "链接",
-        title: this.lineTitle,
-        url: this.line,
-        type: 8,
-      });
-      this.imgChange1(null, null, 8, this.lineCount);
-      this.dialogVisible7 = false;
-    },
-    selectLine(itemTaskIndex, i) {
-      this.line =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].chapterData[i].url;
-      this.lineTitle = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        itemTaskIndex
-      ].chapterData[i].title
-        ? this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-          .chapterData[i].title
-        : "";
-      this.taskCount = itemTaskIndex;
-      this.lineCount = i;
-      this.lineType = 1;
-      this.dialogVisible7 = true;
-    },
-    openUpdateSource(itemTaskIndex, i) {
-      this.sourceData = {};
-      let source =
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-          .chapterData[i];
-      this.sourceData[source.id] = {};
-      this.sourceData[source.id].name = source.title;
-      this.sourceData[source.id].url = source.url;
-      this.dialogVisibleSource = true;
-      this.updateSourcePan = true;
-      this.taskCount = itemTaskIndex;
-      this.lineCount = i;
-    },
-    updateLine() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].url = this.line;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData[this.lineCount].title = this.lineTitle;
-      this.dialogVisible7 = false;
-    },
-    addPP() {
-      this.dialogVisible3 = true;
-    },
-    goTo(path) {
-      this.$router.push(path);
-    },
-    openTools(itemTaskIndex, i, toolIndex) {
-      this.toolIndex = toolIndex;
-      this.taskCount = itemTaskIndex;
-      if (i == 4) {
-        if (toolIndex == null) {
-          var a =
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-              .chapterData;
-          for (var i = 0; i < a.length; i++) {
-            if (a[i].url == 4 && a[i].askJson.askTitle != "") {
-              this.askJson =
-                this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                  itemTaskIndex
-                ].chapterData[i].askJson;
-            }
-          }
-        } else {
-          this.askJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex]
-            )
-          );
-        }
-        this.askJson2 = JSON.parse(JSON.stringify(this.askJson));
-        this.dialogVisible5 = true;
-      } else if (i == 45) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson
-        ) {
-          this.testJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].testJson
-            )
-          );
-        } else {
-          var testJson = {
-            testCount: 1,
-            testTitle: "",
-            testJson: [
-              {
-                teststitle: "",
-                testItem: 1,
-                checkList: [],
-                timuList: [],
-                answer: [],
-                type: "1",
-              },
-            ],
-          };
-          this.testJson = testJson;
-        }
-
-        this.testJson2 = JSON.parse(JSON.stringify(this.testJson));
-        this.dialogVisibleChoice = true;
-      } else if (i == 47) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].sentenceList
-        ) {
-          this.sentenceList = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].sentenceList
-            )
-          );
-        } else {
-          var sentenceList = [
-            { sentenceTitle: "", addSentence: [], rightAnswer: [] },
-          ];
-          this.sentenceList = sentenceList;
-        }
-        this.sentenceList2 = JSON.parse(JSON.stringify(this.sentenceList));
-        this.dialogVisibleSentence = true;
-      } else if (i == 48) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].tableJson
-        ) {
-          this.tableJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].tableJson
-            )
-          );
-        } else {
-          var tableJson = { text: "" };
-          this.tableJson = tableJson;
-        }
-        this.dialogVisibleTable = true;
-      } else if (i == 52) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].wordJson
-        ) {
-          this.wordJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].wordJson
-            )
-          );
-        } else {
-          var wordJson = { text: "" };
-          this.wordJson = wordJson;
-        }
-        this.dialogVisibleWord = true;
-        //   else if (i == 50) {
-        //   if (
-        //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-        //       .toolChoose[toolIndex].uploadJson
-        //   ) {
-        //     this.uploadJson = JSON.parse(
-        //       JSON.stringify(
-        //         this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        //           itemTaskIndex
-        //         ].toolChoose[toolIndex].uploadJson
-        //       )
-        //     );
-        //   } else {
-        //     var uploadJson = [];
-        //     this.uploadJson = uploadJson;
-        //   }
-        //   this.dialogVisibleMoreUpload = true;
-        // }
-      } else if (i == 10) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].preTime
-        ) {
-          this.preTime = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].preTime
-            )
-          );
-        } else {
-          var preTime = 0;
-          this.preTime = preTime;
-        }
-        this.dialogVisiblePreTime = true;
-      } else if (i == 49) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].groupJson
-        ) {
-          this.groupJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].groupJson
-            )
-          );
-        } else {
-          var groupJson = {
-            group: [{ name: "第1组" }],
-            number: undefined,
-            islock: 1,
-          };
-          this.groupJson = groupJson;
-        }
-        this.dialogVisibleGroup = true;
-      } else if (i == 62) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].videoJson
-        ) {
-          this.videoJson = JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].videoJson
-            )
-          );
-        } else {
-          var videoJson = {
-            video: "",
-            setting: [],
-          };
-          this.videoJson = videoJson;
-        }
-        this.dialogVisibleVideo = true;
-      } else if (i == 15) {
-        this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].answerQ
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].answerQ
-            )
-          )
-          : "";
-        this.answerQ2 = JSON.parse(JSON.stringify(this.answerQ));
-        this.dialogVisible8 = true;
-      } else if (i == 40) {
-        this.rateJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].rateJson
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].rateJson
-            )
-          )
-          : [{ detail: "", score: 5, value: "" }]; //{detail:"",score:5,value:""}
-        this.selectSteps = 1;
-        this.dialogVisibleRate = true;
-      } else if (i == 42) {
-        this.answerQ = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].answerQ
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].answerQ
-            )
-          )
-          : "";
-        this.dialogVisibleMp3 = true;
-      } else if (i == 41) {
-        this.selectJson = this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].selectJson
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].selectJson
-            )
-          )
-          : { url: "", select: [], answer: [] };
-        this.selectSteps = 1;
-        this.selectJson2 = JSON.parse(JSON.stringify(this.selectJson));
-        this.dialogVisibleSelect = true;
-      } else if (i == 3) {
-        top.postMessage(
-          {
-            tools: "3y",
-            cid: this.cid,
-            stage: this.unitIndex,
-            task: itemTaskIndex,
-            tool: toolIndex,
-          },
-          "*"
-        );
-      } else if (i == 1) {
-        top.postMessage(
-          {
-            tools: "1y",
-            cid: this.cid,
-            stage: this.unitIndex,
-            task: itemTaskIndex,
-            tool: toolIndex,
-          },
-          "*"
-        );
-      } else if (i == 57) {
-        top.postMessage(
-          {
-            tools: "57y",
-            cid: this.cid,
-            stage: this.unitIndex,
-            task: itemTaskIndex,
-            tool: toolIndex,
-          },
-          "*"
-        );
-      } else if (i == 69) {
-        this.englishList = {};
-        this.englishList = this.unitJson[this.unitIndex].chapterInfo[0]
-          .taskJson[itemTaskIndex].toolChoose[toolIndex].englishList
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].englishList
-            )
-          )
-          : {};
-        this.$forceUpdate();
-        this.englishDialogVisible = true;
-      } else if (i == 70) {
-        this.englishVoiceJson = {};
-        this.englishVoiceJson = this.unitJson[this.unitIndex].chapterInfo[0]
-          .taskJson[itemTaskIndex].toolChoose[toolIndex].englishVoiceJson
-          ? JSON.parse(
-            JSON.stringify(
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                itemTaskIndex
-              ].toolChoose[toolIndex].englishVoiceJson
-            )
-          )
-          : {
-            title: '',
-            detail: '',
-            array: []
-          };
-        //  {
-        //   time: "",
-        //   class: "",
-        //   difficulty: 0,
-        //   topic: "",
-        //   isShow: false,
-        //   eva: 0,
-        //   aiEva: {
-        //     isAiEva: false,
-        //     aiEvaChoose: [],
-        //   },
-        //   allfType: [],
-        //   englishJson: {},
-        // };
-        this.$forceUpdate();
-        this.EnglishVoiceDialog = true;
-      }
-    },
-    setEnglishVoiceJson(val) {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].englishVoiceJson = JSON.parse(
-        JSON.stringify(val)
-      );
-      this.$forceUpdate();
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 70
-      ) {
-        this.addTools(70, this.taskCount, this.toolIndex);
-      }
-    },
-    chapAddTools(i) {
-      if (this.chapTools[0].tools.length == 0) {
-        this.chapTools[0].tools.push(i);
-      } else {
-        if (this.chapTools[0].tools.indexOf(i) != -1) {
-          this.chapTools[0].tools.splice(this.chapTools[0].tools.indexOf(i), 1);
-        } else {
-          this.chapTools[0].tools.push(i);
-        }
-      }
-      this.$forceUpdate();
-    },
-    addChaptersDataTools() {
-      if (this.chapTools[0].tools.indexOf(4) != -1) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.chapCount
-        ].chapterData.push({
-          name: this.chapTools[0].toolDetail,
-          url: this.chapTools[0].tools,
-          type: 7,
-          askJson: this.askJson,
-        });
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.chapCount
-        ].chapterData.push({
-          name: this.chapTools[0].toolDetail,
-          url: this.chapTools[0].tools,
-          type: 7,
-        });
-      }
-      this.imgChange1(null, null, 7, this.chapCount);
-      this.dialogVisible4 = false;
-    },
-    addTools(i, itemTaskIndex, toolIndex) {
-      // if (
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //     .toolChoose[toolIndex].tool.length == 0
-      // ) {
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //     itemTaskIndex
-      //   ].toolChoose[toolIndex].tool.push(i);
-      // } else {
-      //   if (
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //       itemTaskIndex
-      //     ].toolChoose[toolIndex].tool.indexOf(i) != -1
-      //   ) {
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //       itemTaskIndex
-      //     ].toolChoose[toolIndex].tool.splice(
-      //       this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //         itemTaskIndex
-      //       ].toolChoose[toolIndex].tool.indexOf(i),
-      //       1
-      //     );
-      //   } else {
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //       itemTaskIndex
-      //     ].toolChoose[toolIndex].tool.push(i);
-      //   }
-      //   console.log(
-      //     this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //       .toolChoose[toolIndex].tool
-      //   );
-      // }
-      if (i == 4) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].askJson.askTitle == "" ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].askJson[0].askstitle == "" ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].askJson[0].checkList < 2
-        ) {
-          this.openTools(itemTaskIndex, 4, toolIndex);
-          // this.$message({
-          //   message: "请填写完整问卷内容",
-          //   type: "error",
-          // });
-          return;
-        }
-      }
-      if (i == 45) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson.testJson[0].teststitle == "" ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].testJson.testJson[0].checkList < 2
-        ) {
-          this.openTools(itemTaskIndex, 45, toolIndex);
-          // this.$message({
-          //   message: "请填写完整问卷内容",
-          //   type: "error",
-          // });
-          return;
-        }
-      }
-      if (i == 47) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].sentenceList ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].sentenceList[0].rightAnswer == 0
-        ) {
-          this.openTools(itemTaskIndex, 47, toolIndex);
-          return;
-        }
-      }
-
-      if (i == 69) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].englishList
-        ) {
-          this.openTools(itemTaskIndex, 69, toolIndex);
-          return;
-        }
-      }
-      if (i == 70) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].englishVoiceJson
-        ) {
-          this.openTools(itemTaskIndex, 70, toolIndex);
-          return;
-        }
-      }
-      // if (i == 48) {
-      //   if (
-      //     !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //       .toolChoose[toolIndex].tableJson
-      //   ) {
-      //     this.openTools(itemTaskIndex, 48, toolIndex);
-      //     return;
-      //   }
-      // }
-      // if (i == 50) {
-      //   if (
-      //     !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-      //       .toolChoose[toolIndex].uploadJson
-      //   ) {
-      //     this.openTools(itemTaskIndex, 50, toolIndex);
-      //     return;
-      //   }
-      // }
-
-      if (i == 49) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].groupJson
-        ) {
-          this.openTools(itemTaskIndex, 49, toolIndex);
-          return;
-        }
-      }
-      if (i == 62) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].videoJson
-        ) {
-          this.openTools(itemTaskIndex, 62, toolIndex);
-          return;
-        }
-      }
-      if (i == 15) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ == ""
-        ) {
-          this.openTools(itemTaskIndex, 15, toolIndex);
-          // this.$message({
-          //   message: "请填写问答内容",
-          //   type: "error",
-          // });
-          return;
-        }
-      }
-      if (i == 40) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].rateJson ||
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].rateJson.length
-        ) {
-          this.openTools(itemTaskIndex, 40, toolIndex);
-          return;
-        }
-      }
-      if (i == 41) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson.url == "" ||
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson.select.length ||
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].selectJson.answer.length
-        ) {
-          this.openTools(itemTaskIndex, 41, toolIndex);
-          return;
-        }
-      }
-      if (i == 42) {
-        if (
-          !this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ ||
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-            .toolChoose[toolIndex].answerQ == ""
-        ) {
-          this.openTools(itemTaskIndex, 42, toolIndex);
-          return;
-        }
-      }
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[itemTaskIndex]
-          .toolChoose[toolIndex].tool.length > 0
-      ) {
-        if (
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool.indexOf(i) != -1
-        ) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool.splice(
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-              itemTaskIndex
-            ].toolChoose[toolIndex].tool.indexOf(i),
-            1
-          );
-        } else {
-          // this.$message({
-          //   message: "每个工具只能添加一个",
-          //   type: "error",
-          // });
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool = [];
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-            itemTaskIndex
-          ].toolChoose[toolIndex].tool.push(i);
-        }
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          itemTaskIndex
-        ].toolChoose[toolIndex].tool.push(i);
-      }
-      this.$forceUpdate();
-    },
-    addAskList(index) {
-      this.askJson.askJson.splice(index + 1, 0, {
-        askstitle: "",
-        askItem: 1,
-        checkList: [],
-      });
-      this.askJson.askCount++;
-    },
-    addTestList(index) {
-      this.testJson.testJson.splice(index + 1, 0, {
-        teststitle: "",
-        testItem: 1,
-        checkList: [],
-        timuList: [],
-        answer: [],
-        type: "1",
-      });
-      this.testJson.testCount++;
-    },
-    deleteAskList(index) {
-      if (
-        !this.askJson.askJson[index].askstitle &&
-        this.askJson.askJson[index].askItem == 1 &&
-        !this.askJson.askJson[index].checkList[0]
-      ) {
-        this.askJson.askJson.splice(index, 1);
-        this.askJson.askCount--;
-      } else {
-        let _this = this;
-        _this
-          .$confirm("此操作不可撤销,是否继续?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.askJson.askJson.splice(index, 1);
-            _this.askJson.askCount--;
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    deleteTestList(index) {
-      if (
-        !this.testJson.testJson[index].teststitle &&
-        this.testJson.testJson[index].testItem == 1 &&
-        !this.testJson.testJson[index].checkList[0]
-      ) {
-        this.testJson.testJson.splice(index, 1);
-        this.testJson.testCount--;
-      } else {
-        let _this = this;
-        _this
-          .$confirm("此操作不可撤销,是否继续?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          })
-          .then(() => {
-            _this.testJson.testJson.splice(index, 1);
-            _this.testJson.testCount--;
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    askMove(type, index) {
-      if (type == 1) {
-        if (index > 0) {
-          let a = JSON.parse(JSON.stringify(this.askJson.askJson[index - 1]));
-          let b = JSON.parse(JSON.stringify(this.askJson.askJson[index]));
-          this.askJson.askJson[index - 1] = b;
-          this.askJson.askJson[index] = a;
-        }
-      } else {
-        if (index < this.askJson.askJson.length - 1) {
-          let a = JSON.parse(JSON.stringify(this.askJson.askJson[index + 1]));
-          let b = JSON.parse(JSON.stringify(this.askJson.askJson[index]));
-          this.askJson.askJson[index + 1] = b;
-          this.askJson.askJson[index] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    checkMove(type, index, checkIndex) {
-      if (type == 1) {
-        if (checkIndex > 0) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.askJson.askJson[index].checkList[checkIndex - 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.askJson.askJson[index].checkList[checkIndex])
-          );
-          this.askJson.askJson[index].checkList[checkIndex - 1] = b;
-          this.askJson.askJson[index].checkList[checkIndex] = a;
-        }
-      } else {
-        if (checkIndex < this.askJson.askJson[index].checkList.length - 1) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.askJson.askJson[index].checkList[checkIndex + 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.askJson.askJson[index].checkList[checkIndex])
-          );
-          this.askJson.askJson[index].checkList[checkIndex + 1] = b;
-          this.askJson.askJson[index].checkList[checkIndex] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    testMove(type, index) {
-      if (type == 1) {
-        if (index > 0) {
-          let a = JSON.parse(JSON.stringify(this.testJson.testJson[index - 1]));
-          let b = JSON.parse(JSON.stringify(this.testJson.testJson[index]));
-          this.testJson.testJson[index - 1] = b;
-          this.testJson.testJson[index] = a;
-        }
-      } else {
-        if (index < this.testJson.testJson.length - 1) {
-          let a = JSON.parse(JSON.stringify(this.testJson.testJson[index + 1]));
-          let b = JSON.parse(JSON.stringify(this.testJson.testJson[index]));
-          this.testJson.testJson[index + 1] = b;
-          this.testJson.testJson[index] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    tcheckMove(type, index, checkIndex) {
-      if (type == 1) {
-        if (checkIndex > 0) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.testJson.testJson[index].checkList[checkIndex - 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.testJson.testJson[index].checkList[checkIndex])
-          );
-          this.testJson.testJson[index].checkList[checkIndex - 1] = b;
-          this.testJson.testJson[index].checkList[checkIndex] = a;
-        }
-      } else {
-        if (checkIndex < this.testJson.testJson[index].checkList.length - 1) {
-          let a = JSON.parse(
-            JSON.stringify(
-              this.testJson.testJson[index].checkList[checkIndex + 1]
-            )
-          );
-          let b = JSON.parse(
-            JSON.stringify(this.testJson.testJson[index].checkList[checkIndex])
-          );
-          this.testJson.testJson[index].checkList[checkIndex + 1] = b;
-          this.testJson.testJson[index].checkList[checkIndex] = a;
-        }
-      }
-      this.$forceUpdate();
-    },
-    addcheckList(json, index) {
-      // json.checkList.length++;
-      json.checkList.splice(index + 1, 0, "");
-      json.askItem++;
-      this.$forceUpdate();
-    },
-    deletecheckList(json, index) {
-      // json.checkList.length--;
-      json.checkList.splice(index, 1);
-      json.askItem--;
-      this.$forceUpdate();
-    },
-    addTcheckList(json, index) {
-      // json.checkList.length++;
-      json.checkList.splice(index + 1, 0, "");
-      json.testItem++;
-      this.$forceUpdate();
-    },
-    deleteTcheckList(json, index) {
-      // json.checkList.length--;
-      json.checkList.splice(index, 1);
-      json.testItem--;
-      this.$forceUpdate();
-    },
-    checkTestType(type, json) {
-      json.type = type;
-      setTimeout(() => {
-        json.answer = [];
-      }, 100);
-    },
-    checkAskType(type, json) {
-      json.type = type;
-      // json.checkList = [];
-      this.$forceUpdate();
-    },
-    addSelectList(json) {
-      json.select.push("");
-      json.answer.push("");
-    },
-    deleteSelectList(json) {
-      // json.select.length--;
-      // json.answer.length--;
-      json.select.splice(json.select.length - 1, 1);
-      json.answer.splice(json.answer.length - 1, 1);
-    },
-    addAsk() {
-      if (this.askJson.askTitle === "") {
-        this.$message.error("标题不能为空!");
-        return;
-      }
-      var aj = this.askJson.askJson;
-      var b = 1;
-      for (var i = 0; i < aj.length; i++) {
-        if (aj[i].askstitle === "") {
-          var a = 1;
-          for (let index = 0; index < aj[i].askItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            if (element != "") {
-              b++;
-              this.$message.error(`请将题目${i + 1}填写完整。`);
-              return;
-            } else {
-              a++;
-            }
-          }
-          if (b == 1) {
-            this.$message.error("至少填写一个问题");
-            return;
-          }
-        } else if (aj[i].askstitle != "") {
-          for (let index = 0; index < aj[i].askItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            var index = 0;
-            for (var z = 0; z < aj[i].checkList.length; z++) {
-              var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
-              if (checkC != "") {
-                index++;
-              } else {
-                this.$message.error(`题目${i + 1}选项不能为空!`);
-                return;
-              }
-              for (var z2 = z + 1; z2 < aj[i].checkList.length; z2++) {
-                let checkC2 = aj[i].checkList[z2] ? aj[i].checkList[z2] : "";
-                if (checkC == checkC2) {
-                  this.$message.error(
-                    `第${i + 1}题的选项${z + 1}和选项${z2 + 1}重复了,请修改!`
-                  );
-                  return;
-                }
-              }
-            }
-            b++;
-            if (index < 2) {
-              this.$message.error("每道题目至少需要设置2个选项。");
-              return;
-            }
-          }
-        }
-      }
-      this.askJson.askJson = this.askJson.askJson.filter((el) => {
-        var elc = el.checkList.filter((element) => {
-          return element != "";
-        });
-        return el.askstitle != "" && elc.length != 0;
-      });
-      if (!this.dialogVisible4) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex] = this.askJson;
-      }
-      this.dialogVisible5 = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 4
-      ) {
-        this.addTools(4, this.taskCount, this.toolIndex);
-      }
-    },
-    addTest() {
-      // if (this.testJson.testTitle === "") {
-      //   this.$message.error("标题不能为空!");
-      //   return;
-      // }
-      var aj = this.testJson.testJson;
-      var b = 1;
-      for (var i = 0; i < aj.length; i++) {
-        if (aj[i].teststitle === "" && aj[i].timuList.length == 0) {
-          var a = 1;
-          for (let index = 0; index < aj[i].testItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            if (element != "") {
-              b++;
-              this.$message.error(`请将题目${i + 1}填写完整。`);
-              return;
-            } else {
-              a++;
-            }
-          }
-          if (b == 1) {
-            this.$message.error("至少填写一个问题");
-            return;
-          }
-        } else if (aj[i].teststitle != "" || aj[i].timuList.length > 0) {
-          for (let index = 0; index < aj[i].testItem; index++) {
-            const element = aj[i].checkList[index]
-              ? aj[i].checkList[index]
-              : "";
-            var index = 0;
-            for (var z = 0; z < aj[i].checkList.length; z++) {
-              var checkC = aj[i].checkList[z] ? aj[i].checkList[z] : "";
-              if (checkC != "") {
-                index++;
-              } else {
-                this.$message.error(`题目${i + 1}选项不能为空!`);
-                return;
-              }
-              for (var z2 = z + 1; z2 < aj[i].checkList.length; z2++) {
-                let checkC2 = aj[i].checkList[z2] ? aj[i].checkList[z2] : "";
-                if (checkC == checkC2) {
-                  this.$message.error(
-                    `第${i + 1}题的选项${z + 1}和选项${z2 + 1}重复了,请修改!`
-                  );
-                  return;
-                }
-              }
-            }
-            b++;
-            if (index < 2) {
-              this.$message.error("每道题目至少需要设置2个选项。");
-              return;
-            }
-            if (
-              (aj[i].type == "2" && !aj[i].answer.length) ||
-              (aj[i].type == "1" &&
-                ((typeof aj[i].answer == "object" && !aj[i].answer.length) ||
-                  (aj[i].answer !== 0 && !aj[i].answer)))
-            ) {
-              this.$message.error(`请将题目${i + 1}的正确选项设置完整`);
-              return;
-            }
-          }
-        }
-      }
-      var isTestJson = JSON.parse(JSON.stringify(this.testJson));
-      isTestJson.testJson = this.testJson.testJson.filter((el) => {
-        var elc = el.checkList.filter((element) => {
-          return element != "";
-        });
-        return (
-          (el.teststitle != "" || el.timuList.length > 0) && elc.length != 0
-        );
-      });
-      isTestJson.testCount = isTestJson.testJson.length;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].testJson = isTestJson;
-
-      this.dialogVisibleChoice = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 45
-      ) {
-        this.addTools(45, this.taskCount, this.toolIndex);
-      }
-    },
-    addVideoJson(videoJson) {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].videoJson = videoJson;
-
-      this.dialogVisibleVideo = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 62
-      ) {
-        this.addTools(62, this.taskCount, this.toolIndex);
-      }
-    },
-    //自动获取剪贴板
-    pasteOption() {
-      let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-      if (!iframe) {
-        this.$message.error("请使用AI共创生成题目");
-        return;
-      }
-      let copyData = iframe.contentWindow.copyData;
-      if (!copyData || !copyData.selectData.length) {
-        this.$message.error("请使用AI共创生成题目");
-        return;
-      }
-      let selectData = copyData.selectData;
-      for (var i = 0; i < selectData.length; i++) {
-        let answer = 0;
-        switch (selectData[i].answer[0]) {
-          case "A":
-            answer = 0;
-            break;
-          case "B":
-            answer = 1;
-            break;
-          case "C":
-            answer = 2;
-            break;
-          case "D":
-            answer = 3;
-            break;
-          case "E":
-            answer = 4;
-            break;
-          default:
-            break;
-        }
-        this.testJson.testJson.push({
-          teststitle: selectData[i].subject,
-          testItem: selectData[i].options.length,
-          checkList: selectData[i].options,
-          timuList: [],
-          answer: answer,
-          type: "1",
-        });
-        this.testJson.testCount++;
-      }
-      var isTestJson = JSON.parse(JSON.stringify(this.testJson));
-      isTestJson.testJson = this.testJson.testJson.filter((el) => {
-        var elc = el.checkList.filter((element) => {
-          return element != "";
-        });
-        return el.teststitle != "" || el.timuList.length > 0 || elc.length != 0;
-      });
-      isTestJson.testCount = isTestJson.testJson.length;
-      if (!isTestJson.testCount) {
-        return;
-      }
-      this.testJson = isTestJson;
-      this.$forceUpdate();
-    },
-    pasteTask(taskJson) {
-      let stageTasksData = [];
-      if (taskJson) {
-        stageTasksData = taskJson;
-      } else {
-        let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-        let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-        if (!iframe && !iframe2) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        let copyData = iframe ? iframe.contentWindow.copyData : false;
-        let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-        if (
-          (!copyData || !copyData.tasksData || !copyData.tasksData.length) &&
-          (!copyData2 || !copyData2.tasksData || !copyData2.tasksData.length)
-        ) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        stageTasksData = copyData
-          ? copyData.tasksData
-          : copyData2
-            ? copyData2.tasksData
-            : [{ taskName: "", taskDecs: "" }];
-      }
-
-      let taskA = [];
-      let tasks = stageTasksData;
-      for (var j = 0; j < tasks.length; j++) {
-        taskA.push({
-          task: tasks[j].taskName,
-          taskDetail: tasks[j].taskDecs,
-          chapterData: [],
-          toolText: "",
-          toolChoose: [
-            {
-              tool: [],
-              toolDetail: "",
-              toolType: 0,
-              askCount: 1,
-              askTitle: "",
-              askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-            },
-          ],
-          isShowTools: false,
-          askCount: 1,
-          isFold: 1,
-          askTitle: "",
-          askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-          checkJson: [{ checkCount: [], checkPerent: [] }],
-          homeworkList: [],
-        });
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson = taskA;
-      this.$forceUpdate();
-    },
-    pasteStage(stageJson) {
-      let stageData = [];
-      if (stageJson) {
-        stageData = stageJson;
-      } else {
-        let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-        let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-        if (!iframe && !iframe2) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        let copyData = iframe ? iframe.contentWindow.copyData : false;
-        let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-        if (
-          (!copyData || !copyData.stageData || !copyData.stageData.length) &&
-          (!copyData2 || !copyData2.stageData || !copyData2.stageData.length)
-        ) {
-          this.$message.error("请使用AI共创生成");
-          return;
-        }
-        stageData = copyData
-          ? copyData.stageData
-          : copyData2
-            ? copyData2.stageData
-            : [""];
-      }
-
-      let stage = [];
-      for (var i = 0; i < stageData.length; i++) {
-        stage.push({
-          dyName: stageData[i], //单元标题
-          chapterInfo: [
-            {
-              isread: false,
-              chapterid: this.guid(),
-              title: "",
-              courseName: "",
-              taskJson: [
-                {
-                  task: "",
-                  taskDetail: "",
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 1,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                },
-              ],
-              itemCount: 1,
-              fileList1: [],
-              video: [],
-              testData: [],
-              pData: [],
-              templateArray: [],
-            },
-          ],
-        });
-      }
-      let _this = this;
-      if (stageJson) {
-        if (!_this.cid) {
-          _this.unitJson = stage;
-        } else {
-          _this.unitIndex = 0;
-          _this.unitJson = stage;
-          _this.updateWork();
-        }
-      } else {
-        _this
-          .$confirm(
-            "确定选择智能粘贴模板吗?修改课程时无法重置课程模板。",
-            "提示",
-            {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning",
-            }
-          )
-          .then(() => {
-            _this.unitIndex = 0;
-            _this.unitJson = stage;
-            // _this.steps++;
-            _this.updateWork();
-          })
-          .catch(() => {
-            return;
-          });
-      }
-    },
-    openStageBox() {
-      this.unitJson3 = JSON.parse(JSON.stringify(this.unitJson));
-      this.dialogVisibleStageChange = true;
-    },
-    updateChange() {
-      this.$confirm(
-        "切换阶段顺序将删除所有工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
-          this.unitJson = JSON.parse(JSON.stringify(this.unitJson3));
-          this.updateWork();
-          this.dialogVisibleStageChange = false;
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    addAnswer() {
-      if (this.answerQ == "") {
-        this.$message.error("请输入您想要问的问题");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].answerQ = this.answerQ;
-      this.dialogVisible8 = false;
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 15
-      ) {
-        this.addTools(15, this.taskCount, this.toolIndex);
-      }
-    },
-    addMp3Answer() {
-      if (this.answerQ == "") {
-        this.$message.error("请输入您想要回答的问题");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].answerQ = this.answerQ;
-      this.dialogVisibleMp3 = false;
-    },
-    addRateAnswer() {
-      var a = 1;
-      for (var i = 0; i < this.rateJson.length; i++) {
-        if (this.rateJson[i].value == "") {
-          a = 2;
-          break;
-        }
-      }
-      if (a == 2) {
-        this.$message.error("请把评价信息填写完整");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].rateJson = this.rateJson;
-      this.dialogVisibleRate = false;
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 40
-      ) {
-        this.addTools(40, this.taskCount, this.toolIndex);
-      }
-    },
-    addSelectAnswer() {
-      if (this.selectJson.url == "") {
-        this.$message.error("请上传题目");
-        return;
-      }
-      if (!this.selectJson.select.length) {
-        this.$message.error("请添加选项");
-        return;
-      }
-      if (!this.selectJson.answer.length) {
-        this.$message.error("请设置答案");
-        return;
-      }
-      var a = 1;
-      for (var i = 0; i < this.selectJson.answer.length; i++) {
-        if (!this.selectJson.answer[i] && this.selectJson.answer[i] !== 0) {
-          a = 2;
-        }
-      }
-      if (a == 2) {
-        this.$message.error("请设置答案");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].selectJson = this.selectJson;
-      this.dialogVisibleSelect = false;
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 41
-      ) {
-        this.addTools(41, this.taskCount, this.toolIndex);
-      }
-    },
-    nextSelectSteps() {
-      if (this.selectJson.url == "") {
-        this.$message.error("请上传题目");
-        return;
-      }
-      if (!this.selectJson.select.length) {
-        this.$message.error("请添加选项");
-        return;
-      } else {
-        for (var z = 0; z < this.selectJson.select.length; z++) {
-          let checkC = this.selectJson.select[z];
-          for (var z2 = z + 1; z2 < this.selectJson.select.length; z2++) {
-            let checkC2 = this.selectJson.select[z2];
-            if (checkC == checkC2) {
-              this.$message.error(
-                `选项${z + 1}和选项${z2 + 1}重复了,请修改!`
-              );
-              return;
-            }
-          }
-        }
-      }
-      var a = 1;
-      for (var i = 0; i < this.selectJson.select.length; i++) {
-        if (!this.selectJson.select[i]) {
-          a = 2;
-        }
-      }
-      if (a == 2) {
-        this.$message.error("添加的选项不能为空");
-        return;
-      }
-      this.selectSteps++;
-    },
-    selectCourseDetail() {
-      if (this.cid == "" || this.cid == undefined) {
-        if (this.oid == '4c686762-1d0a-11ed-8c78-005056b86db5') {
-          this.isTeacherSee = true;
-        }
-        console.log("这是新增课程");
-        this.selectAllType();
-      } else {
-        this.isOutline = true
-        this.isOutline2 = true
-        this.cpoteType = 4
-        this.cidType = 1;
-        let params = {
-          cid: this.cid,
-        };
-        this.ajax
-          .get(this.$store.state.api + "select_course_detail", params)
-          .then((res) => {
-            this.unitJson = JSON.parse(res.data[0][0].chapters);
-            this.courseState = res.data[0][0].state;
-            for (var j = 0; j < this.unitJson.length; j++) {
-              for (
-                var k = 0;
-                k < this.unitJson[j].chapterInfo[0].taskJson.length;
-                k++
-              ) {
-                this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose = this
-                  .unitJson[j].chapterInfo[0].taskJson[k].toolChoose
-                  ? this.unitJson[j].chapterInfo[0].taskJson[k].toolChoose
-                  : [];
-                let _chapterData = [];
-                for (
-                  var c = 0;
-                  c <
-                  this.unitJson[j].chapterInfo[0].taskJson[k].chapterData
-                    .length;
-                  c++
-                ) {
-                  if (
-                    this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
-                  ) {
-                    _chapterData.push(
-                      this.unitJson[j].chapterInfo[0].taskJson[k].chapterData[c]
-                    );
-                  }
-                }
-                this.unitJson[j].chapterInfo[0].taskJson[k].chapterData =
-                  _chapterData;
-              }
-            }
-
-            this.$forceUpdate();
-            this.courseName = res.data[0][0].title;
-            this.courseText = res.data[0][0].brief;
-            this.courseText2 = res.data[0][0].reBrief;
-            this.evalua = res.data[0][0].evaId;
-            this.cover = JSON.parse(res.data[0][0].cover);
-            this.noneBtnImg = this.cover.length >= 1;
-            if (res.data[0][0].refile) {
-              this.infoData = JSON.parse(res.data[0][0].refile)
-            }
-            // this.checkboxList =
-            //   res.data[0][0].course_student.length > 0
-            //     ? JSON.parse(res.data[0][0].course_student)
-            //     : [];
-            this.checkboxList2 = res.data[0][0].juri
-              ? res.data[0][0].juri.split(",")
-              : [];
-            this.inviteCode = [];
-            for (var i = 0; i < res.data[2].length; i++) {
-              this.inviteCode.push({
-                cid: res.data[2][i].classid,
-                ic: res.data[2][i].code,
-              });
-            }
-
-            this.checkboxList3 = res.data[0][0].course_teacher
-              ? res.data[0][0].course_teacher.split(",")
-              : [];
-            // this.isTeacherSee =
-            //   res.data[0][0].is_teacher_look == 0 ? true : false;
-            this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
-            this.myWord = res.data[0][0].template;
-            this.templateC.id = "123";
-            this.courseUserid = res.data[0][0].userid;
-            // if(this.courseUserid == this.userid){
-            //   this.InviteChange(this.checkboxList2)
-            // }
-            this.nbOrder = res.data[0][0].ordernumber;
-            this.courseTypeId = [];
-            for (var i = 0; i < res.data[1].length; i++) {
-              this.courseTypeId.push(res.data[1][i].typeid);
-            }
-            console.log(this.courseTypeId);
-            // if (this.timer) clearInterval(this.timer);
-            if (this.timer) clearTimeout(this.timer);
-            this.timer = null;
-            // this.timer = setInterval(() => {
-            if(res.data[3].length){
-              try {
-                this.aiJson = JSON.parse(res.data[3][0].tips);
-                this.templateid = res.data[3][0].template;
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(res.data[0][0].cpote){
-              try {
-                this.cpote = JSON.parse(res.data[0][0].cpote);
-              }catch(error){
-                console.error(error)
-              }
-            }
-            if(res.data[0][0].setting){
-              try {
-                this.courseJie = JSON.parse(res.data[0][0].setting).courseJie;
-                this.courseTime = JSON.parse(res.data[0][0].setting).courseTime;
-              }catch(error){
-                console.error(error)
-              }
-            }
-            this.isFileSearch = res.data[0][0].iresearch == 1
-            this.seleteCourseUpdate();
-            this.setMan();
-            this.selectAllType();
-            this.unitJson[
-              this.unitIndex
-            ].chapterInfo[0].taskJson[0].toolOpen = true;
-            // }, 5000);
-            this.$forceUpdate();
-            setTimeout(() => {
-              this.checkEva(this.evalua);
-              setTimeout(() => {
-                this.checkEva(this.evalua);
-              }, 100);
-            }, 100);
-          })
-          .catch((err) => {
-            console.error(err);
-          });
-      }
-
-      if(this.aiId){
-        let params = {
-          cid: this.aiId,
-        };
-        this.ajax
-          .get(this.$store.state.api + "select_course_detail", params)
-          .then((res) => {
-            let _unitJson = JSON.parse(res.data[0][0].chapters);
-            let fileInfo = []
-            var xianObj = ['DOCX','DOC','PPT','PPTX','MD','TXT','PDF']
-
-            for(var i = 0; i < _unitJson.length; i++){
-              let tasks = _unitJson[i].chapterInfo[0].taskJson
-              for(var j = 0; j < tasks.length; j++){
-                let _infoData = tasks[j].chapterData.filter(el => {
-                  return xianObj.indexOf(el.url.split(".")[el.url.split(".").length - 1].toLocaleUpperCase()) != -1
-                })
-
-                if(_infoData.length){
-                  fileInfo = [...fileInfo, ..._infoData] 
-                }
-              }
-            }
-
-            this.infoData = fileInfo
-
-            this.$forceUpdate();
-            this.courseName = res.data[0][0].title;
-            this.courseText = res.data[0][0].brief;
-            this.courseText2 = res.data[0][0].reBrief;
-            this.cover = JSON.parse(res.data[0][0].cover);
-            this.noneBtnImg = this.cover.length >= 1;
-
-            this.checkboxList2 = res.data[0][0].juri
-              ? res.data[0][0].juri.split(",")
-              : [];
-            this.inviteCode = [];
-            for (var i = 0; i < res.data[2].length; i++) {
-              this.inviteCode.push({
-                cid: res.data[2][i].classid,
-                ic: res.data[2][i].code,
-              });
-            }
-
-            this.checkboxList3 = res.data[0][0].course_teacher
-              ? res.data[0][0].course_teacher.split(",")
-              : [];
-            this.isTeacherSee = res.data[0][0].open == 1 ? true : false;
-            this.myWord = res.data[0][0].template;
-            this.templateC.id = "123";
-            this.courseTypeId = [];
-            for (var i = 0; i < res.data[1].length; i++) {
-              this.courseTypeId.push(res.data[1][i].typeid);
-            }
-            console.log(this.courseTypeId);
-
-           
-            this.setMan();
-            this.unitJson[
-              this.unitIndex
-            ].chapterInfo[0].taskJson[0].toolOpen = true;
-
-            this.$forceUpdate();
-            setTimeout(() => {
-              this.checkEva(this.evalua);
-              setTimeout(() => {
-                this.checkEva(this.evalua);
-              }, 100);
-            }, 100);
-          })
-          .catch((err) => {
-            console.error(err);
-          });
-      }
-      // if(this.cidType != 1 && this.templateid == ''){
-      //   this.promptShow = true
-      // }
-    },
-    seleteCourseUpdate() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "select_course_detail", params)
-        .then((res) => {
-          // console.log(this.unitJson);
-          let unitJson = JSON.parse(res.data[0][0].chapters);
-          this.unitJson2 = JSON.parse(res.data[0][0].chapters);
-          let _unitJson2 = JSON.parse(JSON.stringify(this.unitJson));
-          let _unitJson = [];
-          let _chapAarry = [];
-          let _unitIndex = JSON.parse(JSON.stringify(this.unitIndex));
-          let _unitIndex2 = JSON.parse(JSON.stringify(this.unitIndex));
-          let index = 1;
-          let chapindex;
-          if (_unitJson2.length > unitJson.length) {
-            for (let c = 0; c < _unitJson2.length; c++) {
-              _chapAarry.push(_unitJson2[c].chapterInfo[0].chapterid);
-            }
-            for (let j = 0; j < unitJson.length; j++) {
-              let count = 0;
-              for (let k = 0; k < _unitJson2.length; k++) {
-                if (
-                  unitJson[j].chapterInfo[0].chapterid ==
-                  _unitJson2[k].chapterInfo[0].chapterid
-                ) {
-                  count++;
-                  _chapAarry.splice(
-                    _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
-                    1
-                  );
-                  _unitJson.push(unitJson[j]);
-                  break;
-                }
-              }
-              // if(count === 0){
-              //   this.$message.error("您所修改的阶段已经被其他老师删除了");
-              // }
-            }
-            for (let k = 0; k < _unitJson2.length; k++) {
-              if (_unitJson2[k].isUpdate == 1) {
-                _chapAarry.splice(
-                  _chapAarry.indexOf(_unitJson2[k].chapterInfo[0].chapterid),
-                  1
-                );
-                _unitJson.push(_unitJson2[k]);
-              }
-            }
-            console.log(_chapAarry);
-            for (let d = 0; d < _unitJson2.length; d++) {
-              if (
-                _chapAarry.indexOf(_unitJson2[d].chapterInfo[0].chapterid) != -1
-              ) {
-                if (_unitIndex == d) {
-                  index = 2;
-                }
-                chapindex = d;
-                // this.$message.error("您所修改的阶段已经被其他老师删除了");
-              }
-            }
-          } else {
-            _unitJson = JSON.parse(JSON.stringify(_unitJson2));
-          }
-
-          for (let i = 0; i < unitJson.length; i++) {
-            if (
-              (i < _unitJson.length - 1 || i == _unitJson.length - 1) &&
-              _unitJson[i].chapterInfo[0].chapterid !=
-              unitJson[i].chapterInfo[0].chapterid
-            ) {
-              if (i == _unitJson.length - 1) {
-                // this.unitIndex++
-                _unitIndex2++;
-              }
-              _unitJson.splice(i, 0, unitJson[i]);
-            } else if (i > _unitJson.length - 1) {
-              _unitJson.push(unitJson[i]);
-            } else if (
-              _unitJson[i].chapterInfo[0].chapterid ==
-              unitJson[i].chapterInfo[0].chapterid
-            ) {
-              _unitJson[i] = unitJson[i];
-            }
-            // if (i == _unitIndex) {
-            //   continue;
-            // } else
-          }
-
-          if (_chapAarry.length && index != 2) {
-            if (chapindex < _unitIndex) {
-              this.isDelete = 2;
-              // this.unitIndex--;
-              _unitIndex2--;
-            } else if (
-              _unitJson2[_unitIndex].chapterInfo[0].chapterid !=
-              _unitJson[_unitIndex].chapterInfo[0].chapterid
-            ) {
-              this.isDelete = 2;
-              for (let n = 0; n < _unitJson.length; n++) {
-                if (
-                  _unitJson2[_unitIndex].chapterInfo[0].chapterid ==
-                  _unitJson[n].chapterInfo[0].chapterid
-                ) {
-                  // this.unitIndex = n;
-                  _unitIndex2 = n;
-                  _unitJson[n] = _unitJson2[_unitIndex];
-                  break;
-                }
-              }
-            }
-          } else if (index != 2) {
-            // _unitJson[this.unitIndex] = _unitJson2[_unitIndex];
-            _unitJson2[_unitIndex];
-            for (
-              var ci = 0;
-              ci < _unitJson2[_unitIndex].chapterInfo[0].taskJson.length;
-              ci++
-            ) {
-              _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose =
-                _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].toolChoose
-                  ? _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
-                    .toolChoose
-                  : [];
-              let _chapterData = [];
-              for (
-                var c = 0;
-                c <
-                _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData
-                  .length;
-                c++
-              ) {
-                if (
-                  _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
-                    .chapterData[c]
-                ) {
-                  _chapterData.push(
-                    _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci]
-                      .chapterData[c]
-                  );
-                }
-              }
-              _unitJson2[_unitIndex].chapterInfo[0].taskJson[ci].chapterData =
-                _chapterData;
-            }
-            _unitJson[_unitIndex2] = _unitJson2[_unitIndex];
-          }
-          if (index == 1) {
-            this.unitJson = _unitJson;
-            this.$forceUpdate();
-            setTimeout(() => {
-              if (this.unitIndex != _unitIndex2) {
-                this.isDelete = 2;
-                this.unitIndex = _unitIndex2;
-              }
-            }, 0);
-            this.timer = setTimeout(() => {
-              this.seleteCourseUpdate();
-            }, 1000);
-          } else if (index == 2) {
-            let _this = this;
-            _this
-              .$confirm(
-                "您所修改的阶段已经被其他老师删除了,需要恢复嘛?",
-                "提示",
-                {
-                  confirmButtonText: "需要",
-                  cancelButtonText: "取消",
-                  type: "warning",
-                }
-              )
-              .then(() => {
-                if (_this.time()) {
-                  _this.restoreWork(
-                    _chapAarry[0],
-                    _unitJson,
-                    chapindex,
-                    _unitJson2,
-                    _unitIndex2
-                  );
-                }
-              })
-              .catch(() => {
-                _this.unitJson = _unitJson;
-                _this.$forceUpdate();
-                setTimeout(() => {
-                  if (this.unitIndex != _unitIndex2) {
-                    this.isDelete = 2;
-                    this.unitIndex = _unitIndex2;
-                  }
-                }, 0);
-                _this.timer = setTimeout(() => {
-                  _this.seleteCourseUpdate();
-                }, 1000);
-              });
-          }
-          // 在复制操作之前记录滚动位置
-          const savedScrollPosition = this.$refs.scrollContainer ? this.$refs.scrollContainer.scrollTop : 0;
-          // 执行复制操作
-          // 复制操作完成后恢复滚动位置
-          this.$nextTick(() => {
-            if (this.$refs.scrollContainer) {
-              this.$refs.scrollContainer.scrollTop = savedScrollPosition;
-            }
-          });
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    restoreWork(chapid, unitJson, chapindex, unitJson2, unitIndex2) {
-      let params = [
-        {
-          cid: this.cid,
-          chapters: JSON.stringify(this.unitJson),
-          uid: this.userid,
-          chapid: chapid,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "restoreWork", params)
-        .then((res) => {
-          this.$message({
-            message: "恢复成功",
-            type: "success",
-          });
-          unitJson.splice(chapindex, 0, unitJson2[chapindex]);
-          this.unitJson = unitJson;
-          this.$forceUpdate();
-          setTimeout(() => {
-            if (this.unitIndex != unitIndex2) {
-              this.isDelete = 2;
-              this.unitIndex = unitIndex2;
-            }
-          }, 0);
-          this.timer = setTimeout(() => {
-            this.seleteCourseUpdate();
-          }, 1000);
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    getTypeName() {
-      console.log(this.courseTypeId);
-      this.$forceUpdate();
-    },
-    selectAllType() {
-      let params = {
-        org: this.org && this.org != "" ? this.org : "",
-        oid: this.oid && this.oid != "" ? this.oid : "",
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllType", params)
-        .then((res) => {
-          if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
-            res.data[0] = [...res.data[0], ...res.data[4]];
-          }
-          this.CourseType = res.data;
-          this.CourseType2 = [
-            { name: "智见课程", id: [] },
-            { name: "智行课程", id: [] },
-            { name: "智创课程", id: [] },
-          ];
-          for (var cti = 0; cti < res.data[0].length; cti++) {
-            if (
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" ||
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5"
-            ) {
-              this.CourseType2[0].id.push(res.data[0][cti].id);
-            } else if (
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5" ||
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5"
-            ) {
-              this.CourseType2[1].id.push(res.data[0][cti].id);
-            } else if (
-              res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5"
-            ) {
-              this.CourseType2[2].id.push(res.data[0][cti].id);
-            }
-            if (
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" ||
-              res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5"
-            ) {
-              res.data[0][cti].name = "年级";
-            } else if (
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5" ||
-              res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5"
-            ) {
-              res.data[0][cti].name = "学科";
-            } else if (
-              res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5"
-            ) {
-              res.data[0][cti].name = "主题";
-            }
-          }
-
-          let _courseTypeId = [];
-          for (var i = 0; i < res.data[0].length; i++) {
-            if (!this.cid) {
-              this.courseTypeId[res.data[0][i].id] = [];
-            }
-            // if (!this.CourseTypeJson[res.data[0][i].id]) {
-            // }
-            this.CourseTypeJson[res.data[0][i].id] = [];
-
-            if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
-              if (res.data[0][i].name == "栏目") {
-                this.CourseType[0][i].name = "主题";
-              }
-            }
-            if (res.data[2].length == 0 && res.data[3].length == 0) {
-              for (var j = 0; j < res.data[1].length; j++) {
-                if (
-                  this.courseTypeId.indexOf(res.data[1][j].id) != -1 &&
-                  _courseTypeId.indexOf(res.data[1][j].id) == -1
-                ) {
-                  _courseTypeId.push(res.data[1][j].id);
-                }
-                if (res.data[0][i].id == res.data[1][j].pid) {
-                  this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
-                }
-              }
-            } else {
-              if (res.data[2].length > 0) {
-                for (var j = 0; j < res.data[2].length; j++) {
-                  if (
-                    this.courseTypeId.indexOf(res.data[2][j].id) != -1 &&
-                    _courseTypeId.indexOf(res.data[2][j].id) == -1
-                  ) {
-                    _courseTypeId.push(res.data[2][j].id);
-                  }
-                  if (res.data[0][i].id == res.data[2][j].pid) {
-                    this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
-                  }
-                }
-              }
-              if (res.data[3].length > 0) {
-                for (var j = 0; j < res.data[3].length; j++) {
-                  if (
-                    this.courseTypeId.indexOf(res.data[3][j].id) != -1 &&
-                    _courseTypeId.indexOf(res.data[3][j].id) == -1
-                  ) {
-                    _courseTypeId.push(res.data[3][j].id);
-                  }
-                  if (res.data[0][i].id == res.data[3][j].pid) {
-                    this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
-                  }
-                }
-              }
-            }
-          }
-          this.courseTypeId = _courseTypeId;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    selectType() {
-      this.ajax
-        .get(this.$store.state.api + "selectType")
-        .then((res) => {
-          this.CourseType = res.data;
-          for (var i = 0; i < res.data[0].length; i++) {
-            if (!this.cid) {
-              this.courseTypeId[res.data[0][i].id] = "";
-            }
-            if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
-              if (res.data[0][i].name == "栏目") {
-                this.CourseType[0][i].name = "主题";
-              }
-            }
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                if (!this.CourseTypeJson[res.data[0][i].id]) {
-                  this.CourseTypeJson[res.data[0][i].id] = [];
-                }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
-              }
-            }
-          }
-          this.selectTypeByOid();
-          this.selectTypeByOrg();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    selectTypeByOid() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectTypeByOid", params)
-        .then((res) => {
-          for (var i = 0; i < res.data[0].length; i++) {
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                if (!this.CourseTypeJson[res.data[0][i].id]) {
-                  this.CourseTypeJson[res.data[0][i].id] = [];
-                }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
-              }
-            }
-          }
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    selectTypeByOrg() {
-      let params = {
-        oid: this.org,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectTypeByOrg", params)
-        .then((res) => {
-          for (var i = 0; i < res.data[0].length; i++) {
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                if (!this.CourseTypeJson[res.data[0][i].id]) {
-                  this.CourseTypeJson[res.data[0][i].id] = [];
-                }
-                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
-              }
-            }
-          }
-          this.$forceUpdate();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    OtherMb(type, task) {
-      if (task === 0 || task) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          task
-        ].isEvaFold = true;
-      }
-      this.typeMode = type;
-      setTimeout(() => {
-        this.checkEva(this.checkId);
-        setTimeout(() => {
-          this.checkEva(this.checkId);
-        }, 100);
-      }, 100);
-    },
-    openMember() {
-      this.searchTN = "";
-      this.getTeacher();
-      this.dialogVisibleMember = true;
-    },
-    checkEva(id, type) {
-      this.dialogVisiblemb = false;
-      this.selectEva();
-      if (this.evalua != id && type == 2) {
-        this.$message.success("导入成功");
-        setTimeout(() => {
-          this.checkEva(id);
-        }, 100);
-      }
-      this.evalua = id;
-      this.checkId = id;
-      if (this.evalua != "") {
-        for (var i = 0; i < this.evaJuri.length; i++) {
-          if (this.evalua == this.evaJuri[i].id) {
-            this.eTitle = this.evaJuri[i].title;
-            this.eJson = JSON.parse(this.evaJuri[i].content);
-          }
-        }
-        this.data.data = [];
-        this.$forceUpdate();
-        setTimeout(() => {
-          this.setMindData();
-        }, 1000);
-      }
-    },
-    deleteEva() {
-      let _this = this;
-      if (_this.evalua == "") {
-        this.$message.warning("内容已经清空了,请勿重复清空");
-        return;
-      }
-      _this
-        .$confirm("确定删除此目标吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
-        .then(() => {
-          _this.evalua = "";
-          _this.checkId = "";
-          _this.eTitle = "";
-          let _unitJson = _this.unitJson;
-          for (var i = 0; i < _unitJson.length; i++) {
-            let _task = _unitJson[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < _task.length; j++) {
-              let _eList = _task[j].eList;
-              for (var k = 0; k < _eList.length; k++) {
-                delete _eList[k].target;
-              }
-            }
-          }
-          _this.$forceUpdate();
-          if (_this.cid) {
-            _this.updateWork();
-          }
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    selectEva() {
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllEvaluation", params)
-        .then((res) => {
-          this.evaJuri = res.data[0];
-          // 在复制操作之前记录滚动位置
-          const savedScrollPosition = this.$refs.scrollContainer ? this.$refs.scrollContainer.scrollTop : 0;
-          // 执行复制操作
-          // 复制操作完成后恢复滚动位置
-          this.$nextTick(() => {
-            if (this.$refs.scrollContainer) {
-              this.$refs.scrollContainer.scrollTop = savedScrollPosition;
-            }
-          });
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    setMindData() {
-      let targetArray = [];
-      this.data.data = [];
-      this.data.data.push({ id: "root", isroot: true, topic: this.eTitle });
-      let _eJson = Object.keys(this.eJson);
-      let _e = this.eJson;
-      for (let i = 0; i < _eJson.length; i++) {
-        let element = _e[_eJson[i]];
-        this.data.data.push({
-          id: element.id,
-          parentid: "root",
-          topic: element.name,
-        });
-        // targetArray.push({
-        //   id: element.id,
-        //   parentid: "root",
-        //   name: element.name,
-        // });
-        targetArray.push({
-          value: element.name,
-          label: element.name,
-          children: [],
-        });
-        let _eJsonc = Object.keys(element.child);
-        let _e2 = element.child;
-        for (let j = 0; j < _eJsonc.length; j++) {
-          let _ec = _e2[_eJsonc[j]];
-          this.data.data.push({
-            id: _ec.id,
-            parentid: element.id,
-            topic: _ec.name,
-          });
-          // targetArray.push({
-          //   id: _ec.id,
-          //   parentid: element.id,
-          //   name: _ec.name,
-          // });
-          targetArray[i].children.push({
-            value: _ec.name,
-            label: _ec.name,
-            children: [],
-          });
-          let _eJsonz = Object.keys(_ec.child);
-          let _e3 = _ec.child;
-          for (let z = 0; z < _eJsonz.length; z++) {
-            let _ez = _e3[_eJsonz[z]];
-            this.data.data.push({
-              id: _ez.id,
-              parentid: _ec.id,
-              topic: _ez.name,
-            });
-            // targetArray.push({
-            //   id: _ez.id,
-            //   parentid: _ec.id,
-            //   name: _ez.name,
-            // });
-            targetArray[i].children[j].children.push({
-              value: _ez.name,
-              label: _ez.name,
-            });
-          }
-        }
-      }
-      this.targetArray = targetArray;
-      this.$forceUpdate();
-    },
-    /*添加评价 */
-    addEList(index, tIndex) {
-      this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList
-        ? this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.push({
-          value: "",
-          detail: "",
-          score: 5,
-        })
-        : (this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList = [
-          { value: "", detail: "", score: 5 },
-        ]);
-      this.$forceUpdate();
-    },
-    openEList(index, tIndex) {
-      this.evaIndex = index;
-      this.evatIndex = tIndex;
-      this.evaBoxDialog = true;
-    },
-    addCET(index, tIndex) {
-      this.cetIndex = index;
-      this.cettIndex = tIndex;
-      this.selectAllType1();
-    },
-    addCETemplate() {
-      var array =
-        this.unitJson[this.cetIndex].chapterInfo[0].taskJson[this.cettIndex]
-          .eList;
-      let params = [
-        {
-          uid: this.userid,
-          n: this.templateName,
-          json: JSON.stringify(array),
-          t: 1,
-          oid: this.oid,
-        },
-      ];
-      this.ajax
-        .post(this.$store.state.api + "addCETShare", params)
-        .then((res) => {
-          this.addTypeByCET(res.data[0][0].id);
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    addTypeByCET(id) {
-      if (this.setTypeJson.two == "") {
-        this.$message.warning("请选择二级分类,如没有二级分类请前往添加!");
-        return;
-      }
-      let params = {
-        cid: id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "deleteCETLabel", params)
-        .then((res) => {
-          for (var i = 0; i < 2; i++) {
-            let tid = "";
-            if (i == 0) {
-              tid = this.setTypeJson.one;
-            } else {
-              tid = this.setTypeJson.two;
-            }
-            let params = [
-              {
-                cid: id,
-                tid: tid,
-                uid: this.userid,
-              },
-            ];
-            this.ajax
-              .post(this.$store.state.api + "addCETLabel", params)
-              .then((res) => {
-                this.$message({
-                  message: "添加成功",
-                  type: "success",
-                });
-                this.close();
-              })
-              .catch((err) => {
-                this.$message.error("网络不佳");
-                console.error(err);
-              });
-          }
-        })
-        .catch((err) => {
-          this.$message.error("网络不佳");
-          console.error(err);
-        });
-    },
-    updateEvaJson(array) {
-      this.unitJson[this.evaIndex].chapterInfo[0].taskJson[
-        this.evatIndex
-      ].eList = array;
-    },
-    forceUpdate() {
-      this.$forceUpdate();
-    },
-    deletEList(index, tIndex, eIndex) {
-      this.unitJson[index].chapterInfo[0].taskJson[tIndex].eList.splice(
-        eIndex,
-        1
-      );
-      this.$forceUpdate();
-    },
-    getChoosePic(t) {
-      this.chooseType = t;
-      this.getAllBanner();
-    },
-    getAllBanner() {
-      this.sysPicVisible = true;
-      let params = {
-        t: this.chooseType,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllBanner", params)
-        .then((res) => {
-          this.sysPic = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    // getClass() {
-    //   let params = {
-    //     oid: this.oid,
-    //   };
-    //   this.ajax
-    //     .get(this.$store.state.api + "selectClassBySchool", params)
-    //     .then((res) => {
-    //       this.classJuri = res.data[0];
-    //     })
-    //     .catch((err) => {
-    //       console.error(err);
-    //     });
-    // },
-    deleteSysPic() {
-      this.cover = [];
-      this.isSysPic = false;
-      this.isSysPic2 = false;
-    },
-    deleteSelectPic() {
-      this.selectJson.url = "";
-    },
-    setEListStar() {
-      this.$forceUpdate();
-    },
-    deletRateList(i) {
-      this.rateJson.splice(i, 1);
-    },
-    addRateList() {
-      this.rateJson.push({ detail: "", score: 5, value: "" });
-    },
-    addSt() {
-      this.sentenceList.push({
-        sentenceTitle: "",
-        addSentence: [],
-        rightAnswer: [],
-      });
-    },
-    addSen(i) {
-      if (!this.sentenceList[i].sentenceTitle) {
-        this.$message.error("请填写卡片内容!");
-        return;
-      }
-      if (this.sentenceList[i].sentenceTitle.length > 10) {
-        this.$message.error("卡片内容字数不能超过10位");
-        return;
-      }
-      if (
-        this.sentenceList[i].addSentence.indexOf(
-          this.sentenceList[i].sentenceTitle
-        ) !== -1
-      ) {
-        this.$message.error("不能添加重复的卡片内容!");
-        return;
-      }
-      this.sentenceList[i].addSentence.push(this.sentenceList[i].sentenceTitle);
-      // this.isPushTitleList.push(this.sentenceTitle);
-      this.sentenceList[i].sentenceTitle = "";
-    },
-    setRightAnswer(s, i, j) {
-      if (this.sentenceList[i].rightAnswer.indexOf(s) == -1) {
-        this.sentenceList[i].rightAnswer.push(s);
-      }
-    },
-    returnCard(r, i, j) {
-      this.sentenceList[i].rightAnswer.splice(j, 1);
-    },
-    addSentenceTool() {
-      for (var i = 0; i < this.sentenceList.length; i++) {
-        if (this.sentenceList[i].rightAnswer.length == 0) {
-          this.$message.error(`请将题目${i + 1}设置完整。`);
-          return;
-        }
-        if (
-          this.sentenceList[i].addSentence.length !=
-          this.sentenceList[i].rightAnswer.length
-        ) {
-          this.$message.error(`请将题目${i + 1}设置完整。`);
-          return;
-        }
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].sentenceList = this.sentenceList;
-      this.sentenceList = [
-        { sentenceTitle: "", addSentence: [], rightAnswer: [] },
-      ];
-      this.dialogVisibleSentence = false;
-      // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //   itemTaskIndex
-      // ].toolChoose[toolIndex].tool = [];
-      // this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-      //   itemTaskIndex
-      // ].toolChoose[toolIndex].tool.push(i);
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 47
-      ) {
-        this.addTools(47, this.taskCount, this.toolIndex);
-      }
-    },
-    addTableJson() {
-      // if (this.tableJson.text == "" || this.tableJson.text == "<p></p>") {
-      //   this.$message.error("请将信息填写完整!");
-      //   return;
-      // }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].tableJson = this.tableJson;
-      // this.tableJson = [{ text: "" }];
-      // this.dialogVisibleTable = false;
-      this.$message.success("上传成功");
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 48
-      ) {
-        this.addTools(48, this.taskCount, this.toolIndex);
-      }
-    },
-    addWordJson() {
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].wordJson = this.wordJson;
-      // this.wordJson = [{ text: "" }];
-      // this.dialogVisibleWord = false;
-      this.$message.success("上传成功");
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 52
-      ) {
-        this.addTools(52, this.taskCount, this.toolIndex);
-      }
-    },
-    addMoreUpload() {
-      if (this.uploadJson.length == 0) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].uploadJson = [];
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].uploadJson = this.uploadJson;
-      }
-
-      this.uploadJson = [];
-      this.dialogVisibleMoreUpload = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 50
-      ) {
-        this.addTools(50, this.taskCount, this.toolIndex);
-      }
-    },
-    addPreTime() {
-      if (this.preTime == 0) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].preTime = 0;
-      } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          this.taskCount
-        ].toolChoose[this.toolIndex].preTime = this.preTime;
-      }
-      this.preTime = 0;
-      this.dialogVisiblePreTime = false;
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 10
-      ) {
-        this.addTools(10, this.taskCount, this.toolIndex);
-      }
-    },
-    goToTask(i) {
-      this.toolIndexType = "";
-      if (this.isClickColor == i + 1) {
-        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        // } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].toolOpen = true;
-        // }
-        this.$forceUpdate();
-        return;
-      }
-
-      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      // } else {
-      document.querySelectorAll(".basic_box")[0].scrollTop =
-        document.querySelectorAll(".taskBorder")[i].offsetTop - 100;
-      this.isClickColor = i + 1;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true;
-      // }
-      this.$forceUpdate();
-    },
-    taskOpen(i, stageIndex) {
-      if (this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen = false;
-      } else {
-        this.unitJson[stageIndex].chapterInfo[0].taskJson[i].toolOpen = true;
-      }
-      this.updateWork3(stageIndex);
-      this.$forceUpdate();
-    },
-    goToTask2(i, stage) {
-      this.toolIndexType = "";
-      if (this.isClickColor == i + 1 && this.unitIndex == stage) {
-        // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-        //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-        // } else {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-          i
-        ].toolOpen = true;
-        // }
-        this.$forceUpdate();
-        return;
-      }
-      if (this.unitIndex != stage) {
-        if (this.panUnitJson() == 2) {
-          return;
-        }
-        this.unitSet(stage);
-      }
-      // if (this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen) {
-      //   this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = false
-      // } else {
-      document.querySelectorAll(".basic_box")[0].scrollTop =
-        document.querySelectorAll(".taskBorder")[i].offsetTop - 100;
-      this.isClickColor = i + 1;
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolOpen = true;
-      // }
-      this.$forceUpdate();
-    },
-    taskMove(type, index) {
-      this.$confirm(
-        "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-        "提示",
-        {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }
-      )
-        .then(() => {
-          if (type == 1) {
-            if (index > 0) {
-              let a = JSON.parse(
-                JSON.stringify(
-                  this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                  index - 1
-                  ]
-                )
-              );
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index - 1] =
-                this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
-            }
-          } else {
-            if (
-              index <
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson.length - 1
-            ) {
-              let a = JSON.parse(
-                JSON.stringify(
-                  this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-                  index + 1
-                  ]
-                )
-              );
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index + 1] =
-                this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index];
-              this.unitJson[this.unitIndex].chapterInfo[0].taskJson[index] = a;
-            }
-          }
-          this.$forceUpdate();
-        })
-        .catch(() => {
-          return;
-        });
-    },
-    stageMove(type, index) {
-      if (type == 1) {
-        if (index > 0) {
-          let a = JSON.parse(JSON.stringify(this.unitJson3[index - 1]));
-          let acid = JSON.parse(
-            JSON.stringify(this.unitJson3[index - 1].chapterInfo[0].chapterid)
-          );
-          let bcid = JSON.parse(
-            JSON.stringify(this.unitJson3[index].chapterInfo[0].chapterid)
-          );
-          this.unitJson3[index - 1] = this.unitJson3[index];
-          this.unitJson3[index] = a;
-          this.unitJson3[index - 1].chapterInfo[0].chapterid = acid;
-          this.unitJson3[index].chapterInfo[0].chapterid = bcid;
-        }
-      } else {
-        if (index < this.unitJson3.length - 1) {
-          let a = JSON.parse(JSON.stringify(this.unitJson3[index + 1]));
-          let acid = JSON.parse(
-            JSON.stringify(this.unitJson3[index + 1].chapterInfo[0].chapterid)
-          );
-          let bcid = JSON.parse(
-            JSON.stringify(this.unitJson3[index].chapterInfo[0].chapterid)
-          );
-          this.unitJson3[index + 1] = this.unitJson3[index];
-          this.unitJson3[index] = a;
-          this.unitJson3[index + 1].chapterInfo[0].chapterid = acid;
-          this.unitJson3[index].chapterInfo[0].chapterid = bcid;
-        }
-      }
-      this.$forceUpdate();
-    },
-    addGroup(i) {
-      // this.groupJson.group.splice(i + 1, 0, { name: "第"+(i+1)+"组" });
-      this.groupJson.group.push({
-        name: "第" + (this.groupJson.group.length + 1) + "组",
-      });
-    },
-    deleteGroup(i) {
-      this.groupJson.group.splice(i, 1);
-    },
-    numberPan() {
-      if (
-        /[^\d]/.test(this.groupJson.number) ||
-        this.groupJson.number < 2 ||
-        this.groupJson.number > 10
-      ) {
-        this.$message.error("请输入2-10的数字");
-        this.groupJson.number = "";
-      }
-    },
-    numberPanJie() {
-        if (/[^\d]/.test(this.courseJie) || this.courseJie < 1) {
-            this.$message.error('请输入大于1的数字')
-            this.courseJie = 1
-        }
-    },
-    numberPanTime() {
-        if (/[^\d]/.test(this.courseTime) || this.courseTime < 1) {
-            this.$message.error('请输入大于1的数字')
-            this.courseTime = 1
-        }
-    },
-    addGroupJson() {
-      for (var i = 0; i < this.groupJson.group.length; i++) {
-        if (!this.groupJson.group[i].name) {
-          this.$message.error("请将信息填写完整!");
-          return;
-        }
-      }
-      if (!this.groupJson.number) {
-        this.$message.error("请将信息填写完整!");
-        return;
-      }
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].toolChoose[this.toolIndex].groupJson = JSON.parse(
-        JSON.stringify(this.groupJson)
-      );
-      this.dialogVisibleGroup = false;
-      this.groupJson = {};
-
-      if (
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .toolChoose[this.toolIndex].tool != 49
-      ) {
-        this.addTools(49, this.taskCount, this.toolIndex);
-      }
-    },
-    updateTime(preTime) {
-      this.preTime = preTime;
-    },
-    InviteChange(val) {
-      console.log(val);
-      let _check = [];
-      let _check2 = [];
-      for (var i = 0; i < this.grade2.length; i++) {
-        var gid = this.grade2[i].id;
-        _check.push(gid);
-      }
-      for (var i = 0; i < this.checkboxList2.length; i++) {
-        var _id = this.checkboxList2[i];
-        if (_check.indexOf(_id) !== -1) {
-          _check2.push(_id);
-        }
-      }
-      this.checkAll = _check2.length === _check.length;
-      return;
-      let array = JSON.parse(JSON.stringify(val));
-      this.inviteCode = this.inviteCode.filter((el) => {
-        if (val.indexOf(el.cid) != -1) {
-          array.splice(array.indexOf(el.cid), 1);
-          return el;
-        }
-      });
-      for (var i = 0; i < array.length; i++) {
-        this.getInviteCode(array[i]);
-      }
-    },
-    InviteChange2(val) {
-      console.log(val);
-      let _check = [];
-      let _check2 = [];
-      for (var i = 0; i < this.teacherJuri.length; i++) {
-        var gid = this.teacherJuri[i].userid;
-        _check.push(gid);
-      }
-      for (var i = 0; i < this.checkboxList3.length; i++) {
-        var _id = this.checkboxList3[i];
-        if (_check.indexOf(_id) !== -1) {
-          _check2.push(_id);
-        }
-      }
-      this.checkAll2 = _check2.length === _check.length;
-      this.setMan();
-      return;
-      let array = JSON.parse(JSON.stringify(val));
-      this.inviteCode = this.inviteCode.filter((el) => {
-        if (val.indexOf(el.cid) != -1) {
-          array.splice(array.indexOf(el.cid), 1);
-          return el;
-        }
-      });
-      for (var i = 0; i < array.length; i++) {
-        this.getInviteCode(array[i]);
-      }
-    },
-    handleCheckAllChange(val) {
-      if (val) {
-        for (var i = 0; i < this.grade2.length; i++) {
-          var gid = this.grade2[i].id;
-          if (this.checkboxList2.indexOf(gid) === -1) {
-            this.checkboxList2.push(gid);
-          }
-        }
-      } else {
-        let _check = [];
-        let _check2 = [];
-        for (var i = 0; i < this.grade2.length; i++) {
-          var gid = this.grade2[i].id;
-          _check.push(gid);
-        }
-        for (var i = 0; i < this.checkboxList2.length; i++) {
-          var _id = this.checkboxList2[i];
-          if (_check.indexOf(_id) === -1) {
-            _check2.push(_id);
-          }
-        }
-        this.checkboxList2 = _check2;
-      }
-      this.isIndeterminate = false;
-    },
-    handleCheckAllChange2(val) {
-      if (val) {
-        for (var i = 0; i < this.teacherJuri.length; i++) {
-          var gid = this.teacherJuri[i].userid;
-          if (this.checkboxList3.indexOf(gid) === -1) {
-            this.checkboxList3.push(gid);
-          }
-        }
-      } else {
-        let _check = [];
-        let _check2 = [];
-        for (var i = 0; i < this.teacherJuri.length; i++) {
-          var gid = this.teacherJuri[i].userid;
-          _check.push(gid);
-        }
-        for (var i = 0; i < this.checkboxList3.length; i++) {
-          var _id = this.checkboxList3[i];
-          if (_check.indexOf(_id) === -1) {
-            _check2.push(_id);
-          }
-        }
-        this.checkboxList3 = _check2;
-      }
-      this.isIndeterminate2 = false;
-    },
-    async getInviteCode(cid) {
-      let code = this.randomNumber();
-      let params = {
-        code: code,
-        oid: this.oid,
-      };
-      let type = 1;
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        if (this.inviteCode[i].cid != cid && code == this.inviteCode[i].ic) {
-          type = 2;
-        }
-      }
-      if (type == 2) {
-        this.getInviteCode(cid);
-        return;
-      }
-      const res = await this.ajax.get(
-        this.$store.state.api + "selectInviteCode2",
-        params
-      );
-      if (
-        res.data.length &&
-        res.data[0].length &&
-        res.data[0][0].courseId != this.cid
-      ) {
-        this.getInviteCode(cid);
-        return;
-      }
-
-      let array = [];
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        array.push(this.inviteCode[i].cid);
-      }
-      if (array.indexOf(cid) != -1) {
-        this.inviteCode[array.indexOf(cid)].ic = code;
-      } else {
-        this.inviteCode.push({ cid: cid, ic: code });
-      }
-    },
-    OpenInviteD(cid) {
-      let array = [];
-      this.icode = "";
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        array.push(this.inviteCode[i].cid);
-      }
-      if (array.indexOf(cid) != -1) {
-        this.icode = this.inviteCode[array.indexOf(cid)].ic;
-      }
-      this.inviteId = cid;
-      this.dialogVisibleInvite = true;
-    },
-    addInvite() {
-      let reg = /^[A-Za-z0-9]{4,}$/;
-      if (!reg.test(this.icode)) {
-        this.$message.error("请输入至少四位数字或英文组合的随机码");
-        return;
-      }
-      let type = 1;
-      for (var i = 0; i < this.inviteCode.length; i++) {
-        if (
-          this.inviteCode[i].cid != this.inviteId &&
-          this.icode == this.inviteCode[i].ic
-        ) {
-          type = 2;
-        }
-      }
-      if (type == 2) {
-        this.$message.error("已有此随机码,不能重复");
-        return;
-      }
-
-      let params = {
-        code: this.icode,
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectInviteCode", params)
-        .then((res) => {
-          if (
-            res.data.length &&
-            res.data[0].length &&
-            res.data[0][0].courseId != this.cid
-          ) {
-            this.$message.error("已有此随机码,不能重复");
-            return;
-          }
-
-          let array = [];
-          for (var i = 0; i < this.inviteCode.length; i++) {
-            array.push(this.inviteCode[i].cid);
-          }
-          if (array.indexOf(this.inviteId) != -1) {
-            this.inviteCode[array.indexOf(this.inviteId)].ic = this.icode;
-          } else {
-            this.inviteCode.push({ cid: this.inviteId, ic: this.icode });
-          }
-          this.icode = "";
-          this.dialogVisibleInvite = false;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    randomNumber() {
-      // 随机生成两位数
-      // let num = Math.floor(Math.random() * 900) + 100;
-      // 生成 0 到 99 之间的随机整数
-      const randomNumber = Math.floor(Math.random() * 100);
-
-      // 如果随机数小于 10,补上前导零
-      const num =
-        randomNumber < 10 ? "0" + randomNumber : randomNumber.toString();
-
-      // 随机生成两个大写字母
-      let letters = "";
-      let chars2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-      for (let i = 0; i < 3; i++) {
-        letters += chars2.charAt(Math.floor(Math.random() * chars2.length));
-      }
-
-      // 随机生成两位数字和字母的组合
-      let mix = "";
-      let chars =
-        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-      for (let i = 0; i < 3; i++) {
-        let char = chars.charAt(Math.floor(Math.random() * chars.length));
-        mix += char;
-      }
-
-      // 随机选择一种类型
-      let type = Math.floor(Math.random() * 3);
-
-      return num;
-
-      // 根据类型输出结果
-      switch (type) {
-        case 0:
-          console.log(num); // 输出两位数
-          return num;
-        case 1:
-          console.log(letters); // 输出两个大写字母
-          return letters;
-        case 2:
-          console.log(mix); // 输出两位数字和字母的组合
-          return mix;
-      }
-    },
-    getPaste() {
-      let iframe = top.document.querySelectorAll("#AIChat iframe")[0];
-      let iframe2 = top.document.querySelectorAll("#AIChat aigpt")[0];
-      if (!iframe && !iframe2) {
-        return;
-      }
-      let copyData = iframe ? iframe.contentWindow.copyData : false;
-      let copyData2 = iframe2 ? iframe2.contentWindow.copyData : false;
-      if (copyData && copyData.stageData && copyData.stageData.length) {
-        this.isPasteStage = true;
-      }
-      if (copyData2 && copyData2.stageData && copyData2.stageData.length) {
-        this.isPasteStage = true;
-      }
-      if (copyData && copyData.selectData.length) {
-        this.isPasteChoice = true;
-      }
-      if (copyData && copyData.tasksData && copyData.tasksData.length) {
-        this.isPasteTask = true;
-      }
-      if (copyData2 && copyData2.tasksData && copyData2.tasksData.length) {
-        this.isPasteTask = true;
-      }
-    },
-    setCover() {
-      var _this = this;
-      if(_this.cover.length){
-        return;
-      }
-      _this.imageloading2 = true
-      _this.ajax
-        .post("https://gpt.cocorobo.cn/search_image", {
-          page: _this.ppage,
-          pagesize: 9,
-          query: _this.courseName,
-        })
-        .then(function (response) {
-          // console.log(response.data.data);
-          var data = response.data.FunctionResponse.result;
-          _this.cover = [];
-          setTimeout(() => {
-              _this.cover[0] = {
-              name: "网络图片.png",
-              url: data[0].thumbnail
-            };
-            _this.imgChange1(null, null, 1, null);
-            _this.$forceUpdate();
-          }, 0);
-          _this.imageloading2 = false
-        })
-        .catch(function (error) {
-          _this.imageloading2 = false
-          console.log(error);
-        });
-    },
-    searchImage() {
-      var _this = this;
-      _this.imageList = [];
-      if (!_this.searchImageValue) {
-        _this.sysPicVisible2 = true;
-        return;
-      }
-      _this.imageloading = true;
-      _this.ajax
-        .post("https://gpt.cocorobo.cn/search_image", {
-          page: _this.ppage,
-          pagesize: 9,
-          query: _this.searchImageValue,
-        })
-        .then(function (response) {
-          // console.log(response.data.data);
-          var data = response.data.FunctionResponse.result;
-          for (var i = 0; i < data.length; i++) {
-            _this.imageList.push({ url: data[i].thumbnail });
-          }
-          _this.imageloading = false;
-        })
-        .catch(function (error) {
-          console.log(error);
-        });
-      _this.sysPicVisible2 = true;
-    },
-    changePicture() {
-      this.ppage++;
-      this.searchImage();
-    },
-    resetImage() {
-      this.ppage = 1;
-      this.searchImage();
-    },
-    jumpGj(i, j) {
-      if (i + 1 != this.isClickColor) {
-        this.isClickColor = i + 1;
-      }
-      var a = document.scrollingElement;
-      this.toolIndexType = `gj${i}${j}`;
-      let target = document.querySelector(`#gj${i}${j}`);
-      if (target) {
-        this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
-        setTimeout(() => {
-          target.scrollIntoView(true);
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-            j
-          ].isFold3 = false;
-          setTimeout(() => {
-            this.$refs.unitBox.scrollTop = this.$refs.unitBox.scrollTop - 100;
-          }, 0);
-        }, 0);
-      }
-    },
-    jumpGj2(i, j, k) {
-      if (this.unitIndex != k) {
-        if (this.panUnitJson() == 2) {
-          return;
-        }
-        this.unitSet(k);
-      }
-      setTimeout(() => {
-        if (i + 1 != this.isClickColor) {
-          this.isClickColor = i + 1;
-        }
-        var a = document.scrollingElement;
-        this.toolIndexType = `gj${i}${j}${k}`;
-        let target = document.querySelector(`#gj${i}${j}`);
-        if (target) {
-          this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].isFold = 0;
-          setTimeout(() => {
-            target.scrollIntoView(true);
-            this.unitJson[this.unitIndex].chapterInfo[0].taskJson[i].toolChoose[
-              j
-            ].isFold3 = false;
-            setTimeout(() => {
-              this.$refs.unitBox.scrollTop = this.$refs.unitBox.scrollTop - 100;
-            }, 0);
-          }, 0);
-        }
-      }, 0);
-    },
-    dragStart(val, i, j) {
-      console.log(this.taskCount);
-      this.dragType = "drag";
-      this.taskCount = j;
-      this.oldIndex = i;
-      this.oldData = val;
-    },
-    dragOver(i, j) {
-      this.typeIndex = "chapter-" + j + "-" + i;
-      this.newIndex = i;
-    },
-    dragEnd() {
-      if (this.dragType != "drag") {
-        this.typeIndex = "";
-        this.newIndex = "";
-        this.dragType = "";
-        this.isdrag = "";
-        return;
-      }
-      console.log(this.taskCount);
-
-      let newItems = [
-        ...this.unitJson[this.unitIndex].chapterInfo[0].taskJson[this.taskCount]
-          .chapterData,
-      ];
-      // 删除老的节点
-      newItems.splice(this.oldIndex, 1);
-      // 在列表中目标位置增加新的节点
-      newItems.splice(this.newIndex, 0, this.oldData);
-      this.unitJson[this.unitIndex].chapterInfo[0].taskJson[
-        this.taskCount
-      ].chapterData = [...newItems];
-      this.typeIndex = "";
-      this.newIndex = "";
-      this.dragType = "";
-      this.isdrag = "";
-      this.$forceUpdate();
-    },
-    dragTaskStart(val, i, j) {
-      this.dragType = "task";
-      this.oldIndex = i;
-      this.oldData = val;
-      this.oldUnitIndex = j;
-    },
-    dragTaskOver(i, j) {
-      this.typeIndex = "task-" + i;
-      this.newIndex = i;
-      this.checkUnitIndex = j;
-    },
-    async dragTaskEnd() {
-      if (this.dragType != "task") {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.checkUnitIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      if (
-        this.newIndex == this.oldIndex &&
-        this.oldUnitIndex == this.checkUnitIndex
-      ) {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.checkUnitIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      let count1 = await this.getWorksCount(
-        2,
-        this.checkUnitIndex,
-        this.newIndex,
-        0
-      );
-      let count2 = await this.getWorksCount(
-        2,
-        this.oldUnitIndex,
-        this.oldIndex,
-        0
-      );
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            if (this.oldUnitIndex != this.checkUnitIndex) {
-              let newItems = [
-                ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-              ];
-              // 删除老的节点
-              newItems.splice(this.oldIndex, 1);
-              // 在列表中目标位置增加新的节点
-              let newItems2 = [
-                ...this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson,
-              ];
-              newItems2.splice(this.newIndex, 0, this.oldData);
-              this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-                ...newItems,
-              ];
-              this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson = [
-                ...newItems2,
-              ];
-            } else {
-              let newItems = [
-                ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-              ];
-              let chapterData = []
-              if (this.oldIndex == 0) {
-                chapterData = newItems[this.oldIndex].chapterData
-                newItems[this.oldIndex].chapterData = []
-              } else if (this.newIndex == 0) {
-                chapterData = newItems[this.newIndex].chapterData
-                newItems[this.oldIndex].chapterData = []
-              }
-              // 删除老的节点
-              newItems.splice(this.oldIndex, 1);
-              // 在列表中目标位置增加新的节点
-              newItems.splice(this.newIndex, 0, this.oldData);
-              if (this.oldIndex == 0 || this.newIndex == 0) {
-                newItems[0].chapterData = chapterData
-              }
-              this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-                ...newItems,
-              ];
-            }
-            this.typeIndex = "";
-            this.newIndex = "";
-            this.dragType = "";
-            this.checkUnitIndex = "";
-            this.isdrag = "";
-            this.updateWork();
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            this.newIndex = "";
-            this.dragType = "";
-            this.typeIndex = "";
-            this.checkUnitIndex = "";
-            this.isdrag = "";
-            return;
-          });
-      } else {
-        if (this.oldUnitIndex != this.checkUnitIndex) {
-          let newItems = [
-            ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-          ];
-          // 删除老的节点
-          newItems.splice(this.oldIndex, 1);
-          // 在列表中目标位置增加新的节点
-          let newItems2 = [
-            ...this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson,
-          ];
-          newItems2.splice(this.newIndex, 0, this.oldData);
-          this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-            ...newItems,
-          ];
-          this.unitJson[this.checkUnitIndex].chapterInfo[0].taskJson = [
-            ...newItems2,
-          ];
-        } else {
-          let newItems = [
-            ...this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson,
-          ];
-          let chapterData = []
-          if (this.oldIndex == 0) {
-            chapterData = newItems[this.oldIndex].chapterData
-            newItems[this.oldIndex].chapterData = []
-          } else if (this.newIndex == 0) {
-            chapterData = newItems[this.newIndex].chapterData
-            newItems[this.oldIndex].chapterData = []
-          }
-          // 删除老的节点
-          newItems.splice(this.oldIndex, 1);
-          // 在列表中目标位置增加新的节点
-          newItems.splice(this.newIndex, 0, this.oldData);
-          if (this.oldIndex == 0 || this.newIndex == 0) {
-            newItems[0].chapterData = chapterData
-          }
-          this.unitJson[this.oldUnitIndex].chapterInfo[0].taskJson = [
-            ...newItems,
-          ];
-        }
-        this.typeIndex = "";
-        this.newIndex = "";
-        this.dragType = "";
-        this.checkUnitIndex = "";
-        this.isdrag = "";
-        this.updateWork();
-        this.$forceUpdate();
-      }
-    },
-    dragUnitStart(val, i) {
-      this.dragType = "Unit";
-      this.oldIndex = i;
-      this.oldData = val;
-    },
-    dragUnitOver(i) {
-      this.typeIndex = "Unit-" + i;
-      this.newIndex = i;
-      console.log(i, this.unitJson[i].toolOpen);
-      if (!this.unitJson[i].toolOpen && this.dragType == "task") {
-        this.unitJson[i].toolOpen = true;
-        this.updateWork();
-        this.$forceUpdate();
-      }
-    },
-    async dragUnitEnd() {
-      if (this.dragType != "Unit") {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      if (this.newIndex == this.oldIndex) {
-        this.newIndex = "";
-        this.dragType = "";
-        this.typeIndex = "";
-        this.isdrag = "";
-        return;
-      }
-      let count1 = await this.getWorksCount(1, this.newIndex, 0, 0);
-      let count2 = await this.getWorksCount(1, this.oldIndex, 0, 0);
-      console.log(count1, count2);
-      if (count1 > 0 || count2 > 0) {
-        this.$confirm(
-          "切换阶段顺序将删除所有工具的提交成果,是否继续此操作?",
-          "提示",
-          {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
-            type: "warning",
-          }
-        )
-          .then(() => {
-            let newItems = [...this.unitJson];
-            // 删除老的节点
-            newItems.splice(this.oldIndex, 1);
-            // 在列表中目标位置增加新的节点
-            newItems.splice(this.newIndex, 0, this.oldData);
-            this.unitJson = [...newItems];
-            this.typeIndex = "";
-            this.newIndex = "";
-            this.dragType = "";
-            this.isdrag = "";
-            this.updateWork();
-            this.$forceUpdate();
-          })
-          .catch(() => {
-            this.newIndex = "";
-            this.dragType = "";
-            this.typeIndex = "";
-            this.isdrag = "";
-            return;
-          });
-      } else {
-        let newItems = [...this.unitJson];
-        // 删除老的节点
-        newItems.splice(this.oldIndex, 1);
-        // 在列表中目标位置增加新的节点
-        newItems.splice(this.newIndex, 0, this.oldData);
-        this.unitJson = [...newItems];
-        this.typeIndex = "";
-        this.newIndex = "";
-        this.dragType = "";
-        this.isdrag = "";
-        this.updateWork();
-        this.$forceUpdate();
-      }
-    },
-    getWorksCount(type, stage, task, tool) {
-      return new Promise((resolve, reject) => {
-        let params = [
-          {
-            cid: this.cid,
-            stage: stage,
-            task: task,
-            tool: tool,
-            type: type,
-          },
-        ];
-        this.ajax
-          .post(this.$store.state.api + "getCourseWorkCount", params)
-          .then((res) => {
-            let count = res.data[0][0].count;
-            resolve(count);
-          })
-          .catch((err) => {
-            resolve(0);
-            this.$message.error("网络不佳");
-            console.error(err);
-          });
-      });
-    },
-    getTwoType(id) {
-      this.twoJson = [];
-      var array = this.CourseTypeJson1[
-        "3f8eed32-aba9-11ee-b534-005056b86db5"
-      ].filter((e) => {
-        return e.ppid == id;
-      });
-      this.twoJson = array;
-      this.$forceUpdate();
-    },
-    ctype() {
-      this.oneJson =
-        this.CourseTypeJson1["3c73702a-aba9-11ee-b534-005056b86db5"];
-    },
-    selectAllType1() {
-      this.CourseType1 = [];
-      this.CourseTypeJson1 = {};
-      this.courseTypeId1 = {};
-      this.$forceUpdate();
-      let params = {
-        org: this.org && this.org != "" ? this.org : "",
-        oid: this.oid && this.oid != "" ? this.oid : "",
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectAllEvaType", params)
-        .then((res) => {
-          this.CourseType1 = res.data;
-          for (var i = 0; i < res.data[0].length; i++) {
-            if (res.data[0][i].id == "3c73702a-aba9-11ee-b534-005056b86db5") {
-              res.data[0][i].name = "一级分类";
-            } else if (
-              res.data[0][i].id == "3f8eed32-aba9-11ee-b534-005056b86db5"
-            ) {
-              res.data[0][i].name = "二级分类";
-            }
-            if (!this.cid) {
-              this.courseTypeId1[res.data[0][i].id] = [];
-            }
-            if (!this.CourseTypeJson1[res.data[0][i].id]) {
-              this.CourseTypeJson1[res.data[0][i].id] = [];
-            }
-
-            // if (res.data[2].length == 0 && res.data[3].length == 0) {
-            for (var j = 0; j < res.data[1].length; j++) {
-              if (res.data[0][i].id == res.data[1][j].pid) {
-                this.CourseTypeJson1[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
-              }
-            }
-            // } else {
-            if (res.data[2].length > 0) {
-              for (var j = 0; j < res.data[2].length; j++) {
-                if (res.data[0][i].id == res.data[2][j].pid) {
-                  this.CourseTypeJson1[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
-                }
-              }
-            }
-            if (res.data[3].length > 0) {
-              for (var j = 0; j < res.data[3].length; j++) {
-                if (res.data[0][i].id == res.data[3][j].pid) {
-                  this.CourseTypeJson1[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
-                }
-              }
-            }
-            // }
-          }
-          this.ctype();
-          this.cetBoxDialog = true;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    setAiJson(pan,string){
-      if(pan == 'aiTeacher2'){
-        this.aiJson['teacherDetail2'] = string
-      }else {
-        this.aiJson[pan] = string
-      }
-      this.$forceUpdate();
-    },
-    editTask3(index){
-      if(this.unitJson[0].chapterInfo[0].taskJson[index].isTask3){
-        this.unitJson[0].chapterInfo[0].taskJson[index].isTask3 = false
-      }else {
-        this.unitJson[0].chapterInfo[0].taskJson[index].isTask3 = true
-      }
-      this.$forceUpdate();
-    },
-    editCpote(index){
-      if(this.cpote[index]){
-        this.cpote[index] = false
-      }else {
-        this.cpote[index] = true
-      }
-      this.$forceUpdate();
-    },
-    openAiDialog(clickType, type, callback, index, tindex) {
-      // if(clickType == 1){
-      //   return;
-      // }
-      if (this.courseName == "") {
-        this.$message.error("请补充填写课程名称");
-        return;
-      }
-      this.clickType = clickType
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      if (type == "aiDetail") {
-        if (this.ttextLoading) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail"
-        // this.aiText = `请根据${this.courseText}设计一个名为${this.courseName}的${sub.length ? sub.join(",") + "学科的" : ""},面向${this.getListClassC(this.checkboxList2)}的项目式学习课程。`
-        this.aiText = this.aiJson.aiDetail
-      } else if (type == "aiOutline") {
-        this.aitype = "aiOutline"
-        // this.aiText = `请根据${this.courseText}设计一个名为${this.courseName}的${sub.length ? sub.join(",") + "学科的" : ""},面向${this.getListClassC(this.checkboxList2)}的项目式学习课程设计序列教学活动(需要每个任务都需要至少50个token的详细描述),每个教学活动的活动设计(可以直接使用文件内容)以及每个教学活动的评价量规(学生能做到...)。`
-        this.aiText = this.aiJson.aiOutline
-      } else if (type == "aiTask") {
-        this.aitype = "aiTask"
-        var _text = ""
-        for (var i = 0; i < this.teacherText.length; i++) {
-          _text += `任务名称:${this.teacherText[i].task} 教案:${this.teacherText[i].detail.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}`
-        }
-        // this.aiText = `请根据${_text}。`
-        this.aiText = this.aiJson.aiTask
-        this.aiCallBack = callback
-      } else if (type == "aiDetail1") {
-        if (this.ttaskDetailLoading.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail1"
-        // this.aiText = `请帮我优化下列文字内容,更具象化更详细,输出文本格式就行不要带有其他格式\n${callback}`
-        // this.aiText = `请根据${callback},重新设计该教学任务。任务需要至少50个token的详细描述,包含任务设计,评价标准 \n`
-        this.aiText = this.aiJson.aiDetail1
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "aiDetail2") {
-        if (this.ttaskDetailLoading2.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail2"
-        // this.aiText = `请你在考虑到整个课程的情况下,优化该任务描述和任务名:${callback.task}:${callback.taskDetail}`
-        this.aiText = this.aiJson.aiDetail2
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "aiDetail3") {
-        if (this.ttaskDetailLoading3.indexOf('task-' + index + tindex) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiDetail3"
-        this.aiText = this.aiJson.aiDetail3
-        this.aiIndex = index + '-' + tindex
-      } else if (type == "aiDetail4") {
-        var _text = ""
-        for (var i = 0; i < callback.length; i++) {
-          _text += `评价维度:${callback[i].value} 维度描述:${callback[i].detail} `
-        }
-        this.aitype = "aiDetail4"
-        this.aiText = this.aiJson.aiDetail4
-        this.aiIndex = index
-      } else if (type == "aiTeacher") {
-        this.aitype = "aiTeacher"
-        var _text = ""
-        for (var i = 0; i < this.dArray.length; i++) {
-          _text += `任务名称:${this.dArray[i].task} 任务描述:${this.dArray[i].detail} \n`
-        }
-        // this.aiText = `请根据${_text}为每个教学任务设计详细的教案,其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
-        this.aiText = this.aiJson.aiTeacher
-        this.aiCallBack = callback
-
-      } else if (type == "aiTeacher2") {
-        this.aitype = "aiTeacher2"
-        this.aiText = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-      } else if (type == "teacherDetail") {
-        if (this.ttaskDetailLoading5.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "teacherDetail"
-        // this.aiText = `请根据${callback}\n重新设计该教案。其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
-        this.aiText = this.aiJson.teacherDetail
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "teacherDetail2") {
-        if (this.ttaskDetailLoading5.indexOf('task-' + index) !== -1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "teacherDetail2"
-        // this.aiText = `请根据${callback}\n重新设计该教案。其中包括但不仅限于该任务的教学目标,教学过程,师生研讨,拓展,学生任务单,相关知识点的练习或Qui以及答案等。`
-        this.aiText = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
-        this.aiCallBack = callback
-        this.aiIndex = index
-      } else if (type == "aiCpote1") {
-        if (this.cpotetLoading.cpote1) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote1"
-        this.aiText = this.aiJson.cpote1
-        this.aiCallBack = callback
-      } else if (type == "aiCpote2") {
-        if (this.cpotetLoading.cpote2) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote2"
-        this.aiText = this.aiJson.cpote2
-        this.aiCallBack = callback
-      }
-      else if (type == "aiCpote3") {
-        if (this.cpotetLoading.cpote3) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote3"
-        this.aiText = this.aiJson.cpote3
-        this.aiCallBack = callback
-      } else if (type == "aiCpote4") {
-        if (this.cpotetLoading.cpote4) {
-          this.$message({
-            message: "请回答完毕后再次发送",
-            type: "warning"
-          });
-          return;
-        }
-        this.aitype = "aiCpote4"
-        this.aiText = this.aiJson.cpote4
-        this.aiCallBack = callback
-      }
-      this.dialogVisibleAiD = true
-    },
-    async aiConfirm(msg) {
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      if (this.aitype == "aiDetail") {
-        this.detailYou(msg)
-      } else if (this.aitype == "aiOutline") {
-        this.loading = true
-// ${this.getListClassC(this.checkboxList2) ?  '班级:' + this.getListClassC(this.checkboxList2) : "无"}
-// ${this.infoData.length ? '使用文件检索的方式完整的去分析文件内容,并请完全按照要求输出。' : ''}
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.courseName}
-${this.courseText ? '课程简要描述:' + this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-
-# Format example
-[{"task": "任务名称1","detail": "任务设计和评价标准"},{"task": "任务名称2","detail": "任务设计和评价标准"}]`
-
-        this.aiGet2(message, () => {
-          this.loading = false
-          this.isOutline = true
-        })
-      } else if (this.aitype == "aiTask") {
-        var _text = ""
-        for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-          _text += `任务名称:${this.unitJson[0].chapterInfo[0].taskJson[i].task} 任务描述:${this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-        }
-        let message = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" ? '#目标层\n'+this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')+'\n\n#任务簇\n'+this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-## 格式要求
-任务数量:${this.teacherText.length}个
-任务描述:用老师的身份以友好,但是又清晰明确的口吻来撰写该描述,该描述教师给与学生的指示(用于指导学生如何进行每个教学活动),对应到学生活动
-评价标准:至少3条评价标准,这个评价是教师用来评价学生表现的,需要包含评价维度,以及该维度中教师期待学生的表现,句式为学生应该能....
-工具名:从工具列表中选择0~2个工具用于学生阶段性成果提交:工具列表:电子白板,文档,思维导图,表格,作业提交,问答,选择题,只在这几个工具里选
-工具描述:用同学的方式以友好亲切,明确的口吻告诉学生该如何使用该工具
-
-## 参考资料
-教学任务教案:${_text}
-# Format example
-[{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[{"tool":"工具名","detail":"工具描述"},{"tool":"工具名","detail":"工具描述"}]},{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[]},{"detail":"面向学生的任务描述","elist":[{"value":"评价名字1","detail":"评价维度1","score":5},{"value":"评价名字2","detail":"评价维度2","score":5},{"value":"评价名字3","detail":"评价维度3","score":5}],"toolChoose":[{"tool":"工具名","detail":"工具描述"}]}]`
-        this.loading = true
-        this.aiGet3(message, this.aiCallBack)
-      } else if (this.aitype == "aiDetail1") {
-        this.aiDetail(msg, this.aiIndex)
-      } else if (this.aitype == "aiDetail2") {
-        this.aiDetail2(msg, this.aiIndex)
-      } else if (this.aitype == "aiDetail3") {
-        let _index = this.aiIndex.split('-')
-        this.aiDetail3(msg, _index[0], _index[1])
-      } else if (this.aitype == "aiDetail4") {
-        this.aiDetail4(msg, this.aiIndex)
-      } else if (this.aitype == "teacherDetail") {
-        this.aiDetail5(msg, this.aiIndex)
-      } else if (this.aitype == "teacherDetail2") {
-        this.aiDetail52(msg, this.aiIndex)
-      } else if (this.aitype == "aiCpote1") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiCpote2") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiCpote3") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiCpote4") {
-        this.aiCpote(msg, this.aiCallBack)
-      } else if (this.aitype == "aiTeacher") {
-        this.loading = true
-        var _text = ""
-        for (var i = 0; i < this.dArray.length; i++) {
-          _text += `任务名称:${this.dArray[i].task} 任务描述:${this.dArray[i].detail} \n`
-        }//${this.infoData.length ? '使用文件检索的方式完整的去分析文件内容,并请完全按照要求输出。' : ''}
-        let message = ` NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" ? '##任务大纲' : '##目标层,##任务簇'}
-
-${this.templateid != "4480d65a-1e48-11ef-bee5-005056b86db5" ? '## 任务大纲\n'+_text : ''}
-
-${this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" ? '## 目标层\n'+this.cpote.cpote3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')+'\n\n## 任务簇\n'+this.cpote.cpote4.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}
-
-
-## Format example
-[{"task": "任务名称1","detail": "教案输出为文本格式就行"},{"task": "任务名称2","detail": "教案输出为文本格式就行"}]`
-        this.aiGet4(message, () => {
-          this.loading = false
-          this.isOutline2 = true
-        })
-      } else if (this.aitype == "aiTeacher2"){
-        this.isOutline2 = true
-        setTimeout(()=>{
-          for (var i = 0; i < this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-            this.aiDetail52(msg, i)
-          }
-        }, 0)
-      }
-      this.setAiJson(this.aitype, msg)
-    },
-    detailYou(message) {
-      this.textLoading = true
-      this.ttextLoading = true
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-// ${this.getListClassC(this.checkboxList2) ?  '班级:' + this.getListClassC(this.checkboxList2) : "无"}
-// --------
-// ## 补充参考资料
-// 补充资料:${url.join(",")}
-// 补充描述:${this.courseText2} ##补充参考资料和
-
-      let msg = `
-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".
-
---------
-## 参考资料
-课程名字:${this.courseName}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-${this.templatePan.includes(this.templateid) ? '课程节数:'+this.courseJie+'节' : ''}
-${this.templatePan.includes(this.templateid) ? '课程时长:'+this.courseTime+'min' : ''}
-
---------
-## 要求
-${message} 以及##参考资料 以文本格式输出项目概况,驱动性问题,最终作品,格式参考## Format example
-
---------
-## Format example
--课程简要描述:
--驱动性问题:**1个**驱动整个项目的问题
--最终作品:对应解决驱动性问题的作品,可个人可团队`
-      this.aiGet(msg)
-    },
-    setUnitJson() {
-      this.unitJson[0].chapterInfo[0].taskJson[0] = { "task": "观察热在水中的传递", "taskDetail": "同学们,今天我们将通过一个有趣的实验来探究热是如何在水中传递的。你将需要加热水并观察温度是如何分布的。请准备好实验器材,并按照安全指南进行操作。在实验过程中,请注意观察热水和冷水之间的相互作用,以及水温是如何随时间和空间变化的。你将需要记录你的观察结果,并思考热是如何从一个地方传递到另一个地方的。", "chapterData": [], "toolText": "", "toolChoose": [{ "tool": [1], "toolDetail": "使用电子白板工具来绘制你的实验设置和观察到的热传递过程。你可以使用电子白板的绘图功能来创建一个温度分布图,展示热水和冷水相遇时的情况。同时,你可以用它来记录实验步骤和关键观察点,以便于你和同学们进行讨论和分享。", "toolType": 1, "askCount": 1, "askTitle": "", "askJson": [{ "askstitle": "", "askItem": 1, "checkList": [] }], "isFold3": false }], "isShowTools": false, "askCount": 1, "isFold": 0, "askTitle": "", "askJson": [{ "askstitle": "", "askItem": 1, "checkList": [] }], "checkJson": [{ "checkCount": [], "checkPerent": [] }], "homeworkList": [], "toolOpen": true, "eList": [{ "value": "实验观察和记录", "detail": "学生应该能够准确地记录实验过程中的观察结果,包括水温变化和热传递的现象。", "score": 5 }, { "value": "数据分析和解释", "detail": "学生应该能够分析实验数据,解释热在水中的传递方式,并能够用自己的话描述热对流的原理。", "score": 5 }, { "value": "实验报告撰写", "detail": "学生应该能够撰写一份清晰的实验报告,包括实验目的、方法、结果和结论,以及对实验过程的反思。", "score": 5 }] }
-      this.$forceUpdate()
-    },
-    async aiGet(messages) {
-      let _this = this
-      
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   _this.courseText = data.choices[0].message.content
-        // }
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-      }).catch(function (error) {
-        _this.textLoading = false
-        _this.ttextLoading = false
-        console.log(error);
-      });
-      await _this.aiGetgetAiContent(_uuid)
-    },
-    aiGetgetAiContent(_uid) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.courseText = _mdText;
-          this.textLoading = false
-          this.ttextLoading = false
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.courseText = _mdText;
-          this.textLoading = false
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    async aiGet2(messages, callback) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-      console.log('fileid=========',fileid)
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      //   // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.dArray = dArray
-      //     _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //     for (var i = 0; i < dArray.length; i++) {
-      //       let _task = dArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //         task: _task.task,
-      //         taskDetail: "",
-      //         taskDetail2: _task.detail,
-      //         taskDetail3: "",
-      //         chapterData: [],
-      //         toolText: "",
-      //         toolChoose: [
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         ],
-      //         isShowTools: false,
-      //         askCount: 1,
-      //         isFold: 2,
-      //         askTitle: "",
-      //         askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //         checkJson: [{ checkCount: [], checkPerent: [] }],
-      //         homeworkList: [],
-      //       })
-      //     }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //           _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.dArray = dArray
-      //   //   _this.unitJson[0].chapterInfo[0].taskJson = []
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //   //       task: _task.task,
-      //   //       taskDetail: "",
-      //   //       taskDetail2: _task.detail,
-      //   //       taskDetail3: "",
-      //   //       chapterData: [],
-      //   //       toolText: "",
-      //   //       toolChoose: [
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       ],
-      //   //       isShowTools: false,
-      //   //       askCount: 1,
-      //   //       isFold: 1,
-      //   //       askTitle: "",
-      //   //       askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //       checkJson: [{ checkCount: [], checkPerent: [] }],
-      //   //       homeworkList: [],
-      //   //     })
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(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]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // dArray = JSON.parse(jsonString);
-              } catch (error) {
-                console.log("error_________________" + error);
-              }
-            }
-            _this.dArray = dArray
-            _this.unitJson[0].chapterInfo[0].taskJson = []
-
-            for (var i = 0; i < dArray.length; i++) {
-              let _task = dArray[i]
-              _this.unitJson[0].chapterInfo[0].taskJson.push({
-                task: _task.task,
-                taskDetail: "",
-                taskDetail2: _task.detail,
-                taskDetail3: "",
-                chapterData: [],
-                toolText: "",
-                toolChoose: [
-                  {
-                    tool: [],
-                    toolDetail: "",
-                    toolType: 0,
-                    askCount: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  },
-                ],
-                isShowTools: false,
-                askCount: 1,
-                isFold: 2,
-                askTitle: "",
-                askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                checkJson: [{ checkCount: [], checkPerent: [] }],
-                homeworkList: [],
-              })
-            }
-            _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-          }
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiGet3(messages, callback) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      // // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let tArray = JSON.parse(data.choices[0].message.content)
-      //     // _this.unitJson[0].chapterInfo[0].task = []
-
-      //     let toolsJson = {
-      //       "电子白板": { tool: 1, type: 1 },
-      //       "文档": { tool: 52, type: 1 },
-      //       "思维导图": { tool: 3, type: 1 },
-      //       "表格": { tool: 48, type: 1 },
-      //       "作业提交": { tool: 16, type: 2 }
-      //     }
-      //     for (var i = 0; i < tArray.length; i++) {
-      //       let _task = tArray[i]
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-      //       _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-      //       if (_task.toolChoose.length) {
-      //         for (var j = 0; j < _task.toolChoose.length; j++) {
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //             {
-      //               tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [],
-      //               toolDetail: _task.toolChoose[j].detail,
-      //               toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 0,
-      //               askCount: 1,
-      //               askTitle: "",
-      //               askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             },
-      //           )
-      //         }
-      //       } else {
-      //         _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //           {
-      //             tool: [],
-      //             toolDetail: "",
-      //             toolType: 0,
-      //             askCount: 1,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           },
-      //         )
-      //       }
-      //     }
-      //     // if (_this.infoData.length) {
-      //     //   _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-      //     // }
-      //     _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //     _this.$forceUpdate();
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let tArray = JSON.parse(data.result)
-      //   //   // _this.unitJson[0].chapterInfo[0].task = []
-
-      //   //   let toolsJson = {
-      //   //     "电子白板": { tool: 1, type: 1 },
-      //   //     "文档": { tool: 52, type: 1 },
-      //   //     "思维导图": { tool: 3, type: 1 },
-      //   //     "表格": { tool: 48, type: 1 },
-      //   //     "作业提交": { tool: 16, type: 2 }
-      //   //   }
-      //   //   for (var i = 0; i < tArray.length; i++) {
-      //   //     let _task = tArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-      //   //     if (_task.toolChoose.length) {
-      //   //       for (var j = 0; j < _task.toolChoose.length; j++) {
-      //   //         _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //   //           {
-      //   //             tool: toolsJson[_task.toolChoose[j].tool] ? [toolsJson[_task.toolChoose[j].tool].tool] : [],
-      //   //             toolDetail: _task.toolChoose[j].detail,
-      //   //             toolType: toolsJson[_task.toolChoose[j].tool] ? toolsJson[_task.toolChoose[j].tool].type : 0,
-      //   //             askCount: 1,
-      //   //             askTitle: "",
-      //   //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //           },
-      //   //         )
-      //   //       }
-      //   //     } else {
-      //   //       _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-      //   //         {
-      //   //           tool: [],
-      //   //           toolDetail: "",
-      //   //           toolType: 0,
-      //   //           askCount: 1,
-      //   //           askTitle: "",
-      //   //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //   //         },
-      //   //       )
-      //   //     }
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then(async (response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            let tArray = {}
-            try {
-              tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-            } catch (error) {
-                console.log("error_________________" + error);
-              try {
-                  let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  tArray = JSON.parse(match[0]);
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // tArray = JSON.parse(jsonString);
-              } catch (error) {
-                console.log("error_________________" + error);
-              }
-            }
-
-            let toolsJson = {
-              "电子白板": { tool: 1, type: 1 },
-              "文档": { tool: 52, type: 1 },
-              "思维导图": { tool: 3, type: 1 },
-              "表格": { tool: 48, type: 1 },
-              "作业提交": { tool: 16, type: 2 },
-              "问答": { tool: 15, type: 2 },
-              "选择题": { tool: 45, type: 2 },
-            }
-            // answerQ:"sssssssssssssss"
-
-            for (var i = 0; i < tArray.length; i++) {
-              let _task = tArray[i]
-              _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail = _task.detail
-              _this.unitJson[0].chapterInfo[0].taskJson[i].eList = _task.elist
-              _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose = []
-              if (_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: [] }],
-                    }
-                  
-                  if(converter(_task.toolChoose[j].tool) == converter('问答')){
-                    let answerQ = await _this.aiCreateQuestion(15, i)
-                    _json.answerQ = answerQ.answerQ 
-                  }else if(converter(_task.toolChoose[j].tool) == converter('选择题')){
-                    let testJson = await _this.aiCreateQuestion(45, i)
-                    _json.testJson = {"testCount":testJson.length,"testTitle":"","testJson":testJson} 
-                  }
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(_json)
-                }
-              } else {
-                _this.unitJson[0].chapterInfo[0].taskJson[i].toolChoose.push(
-                  {
-                    tool: [],
-                    toolDetail: "",
-                    toolType: 0,
-                    askCount: 1,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  },
-                )
-              }
-            }
-
-            _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-            _this.$forceUpdate();
-            _this.createTeacherAn();
-          }
-          
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiCreateQuestion(type, task) {
-      let _this = this
-      return new Promise((resolve, reject) => {
-        let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-        if (_this.infoData.length) {
-          for (var i = 0; i < _this.infoData.length; i++) {
-            if(_this.infoData[i].fileid){
-              fileid.push(_this.infoData[i].fileid)
-            }
-          }
-        }
-
-        let sub = []
-        let mclass = []
-        if (this.courseTypeId.length) {
-          for (var i = 0; i < this.courseTypeId.length; i++) {
-            let _sid = this.courseTypeId[i]
-            for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-              if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-                mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-              }
-              if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-                sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-              }
-            }
-          }
-        }
-        let messages = ""
-        if(type == 15){
-          messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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
-## 任务
-根据本任务的#教案,在考虑到面向学生年级(<面向年级>)以及相对应的学科(<课程学科>)的基础上生成1道问答题。题目的意义是测试学生对本教学任务知识点的掌握情况,你的题目应当是有意义的。然后根据Format example的要求返回要以json的格式
-
-## 限制
-- 生成题目应该充分考虑学生年级<面向年级>和面向学科<课程学科>,你的题目应有教学意义。
-- 你仅仅需要输出题目,其他什么内容都不需要输出。禁止输出题目以外的任何内容。
-
-## 课程简介
-课程名字:${_this.courseName}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-## 教案
-${_this.unitJson[0].chapterInfo[0].taskJson[task].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}
-
-# Format example
-{answerQ:"问题"}
-`
-        }else if(type == 45){
-          messages = `NOTICE
-Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
-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
-## 任务
-根据本任务的#教案,在考虑到面向学生年级(<面向年级>)以及相对应的学科(<课程学科>)的基础上生成5道单选题。题目的意义是测试学生对本教学任务知识点的掌握情况,你的题目应当是有意义的。
-
-## 限制
-- 生成题目禁止重复。
-- 生成题目应该充分考虑学生年级<面向年级>和面向学科<课程学科>,你的题目应有教学意义。
-- 请严格按照以下格式要求输出内容,题目必须是单选题。
-- 你仅仅需要输出题目,其他什么内容都不需要输出。禁止输出题目以外的任何内容。
-
-## 课程简介
-课程名字:${_this.courseName}
-${_this.courseText ? '课程简要描述:' + _this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-## 教案
-${_this.unitJson[0].chapterInfo[0].taskJson[task].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')}
-
-# Format example
-[{"teststitle":"题目内容","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"},{"teststitle":"题目内容","testItem":"选项数量(数字)","checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":"答案(数字)","type":"1"}]
-`
-        }
-
-        let parm = {
-          assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-          message: [{"type":"text", "text":messages}],
-          session_name: uuidv4(),
-          userId: this.userid,
-          file_ids: fileid.length ? [...fileid] : '',
-        }
-        this.ajax
-          .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-          .then((response) => {
-            console.log(response);
-            let data = response.data.FunctionResponse
-            if (data.message) {
-              console.log(data.message);
-              try {
-                // let tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-                let tArray = {}
-                try {
-                  tArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-                } catch (error) {
-                    console.log("error_________________" + error);
-                  try {
-                    let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                    let match = data.message.match(regex);
-                    tArray = JSON.parse(match[0]);
-
-                      // var message = data.message;
-                      // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                      // var jsonEnd = message.indexOf("```", jsonStart);
-                      // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                      // tArray = JSON.parse(jsonString);
-                  } catch (error) {
-                    console.log("error_________________" + error);
-                  }
-                }
-                resolve(tArray)
-              } catch (error) {
-                if(type == 15){
-                  resolve({answerQ: "题目"})
-                }else if(type == 45){
-                  resolve([{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}])
-                }
-              }
-
-            }else if(type == 15){
-              resolve({answerQ: "题目"})
-            }else if(type == 45){
-              resolve([{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}])
-            }
-          })
-          .catch((error) => {
-
-            if(type == 15){
-              resolve({answerQ: "题目"})
-            }else if(type == 45){
-              resolve([{"teststitle":"题目1","testItem":4,"checkList":["选项1","选项2","选项3","选项4"],"timuList":[],"answer":0,"type":"1"}])
-            }
-            console.log(error);
-          });
-        });
-    },
-    async aiGet4(messages, callback, clickType) {
-      let _this = this
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-
-
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      // // let params = JSON.stringify({
-      // //     message: {
-      // //         anthropic_version: "bedrock-2023-05-31",
-      // //         max_tokens: 4096,
-      // //         temperature: 0,
-      // //         top_p: 1,
-      // //         messages: [{
-      // //           content: messages,
-      // //           role: 'user'
-      // //         }], // 
-      // //     },
-      // //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      // // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-      //   console.log(response);
-      //   let data = response.data.FunctionResponse
-      //   if (data.choices && data.choices.length && data.choices[0].message) {
-      //     console.log(data.choices[0].message.content);
-      //     let dArray = JSON.parse(data.choices[0].message.content)
-      //     _this.teacherText = JSON.parse(data.choices[0].message.content)
-      //     if (_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5") {
-      //       _this.unitJson[0].chapterInfo[0].taskJson = []
-      //       for (var i = 0; i < dArray.length; i++) {
-      //         let _task = dArray[i]
-      //         _this.unitJson[0].chapterInfo[0].taskJson.push({
-      //           task: _task.task,
-      //           taskDetail: "",
-      //           taskDetail2: "",
-      //           taskDetail3: _task.detail,
-      //           chapterData: [],
-      //           toolText: "",
-      //           toolChoose: [
-      //             {
-      //               tool: [],
-      //               toolDetail: "",
-      //               toolType: 0,
-      //               askCount: 1,
-      //               askTitle: "",
-      //               askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             },
-      //           ],
-      //           isShowTools: false,
-      //           askCount: 1,
-      //           isFold: 2,
-      //           askTitle: "",
-      //           askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //           checkJson: [{ checkCount: [], checkPerent: [] }],
-      //           homeworkList: [],
-      //         })
-      //       }
-      //       _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = _this.infoData
-      //       _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //       _this.$forceUpdate();
-      //     } else {
-      //       for (var i = 0; i < dArray.length; i++) {
-      //         let _task = dArray[i]
-      //         if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-      //         }else {
-      //           _this.unitJson[0].chapterInfo[0].taskJson[i] = {
-      //             task: _task.task,
-      //             taskDetail: "",
-      //             taskDetail2: "",
-      //             taskDetail3: _task.detail,
-      //             chapterData: [],
-      //             toolText: "",
-      //             toolChoose: [
-      //               {
-      //                 tool: [],
-      //                 toolDetail: "",
-      //                 toolType: 0,
-      //                 askCount: 1,
-      //                 askTitle: "",
-      //                 askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //               },
-      //             ],
-      //             isShowTools: false,
-      //             askCount: 1,
-      //             isFold: 2,
-      //             askTitle: "",
-      //             askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-      //             checkJson: [{ checkCount: [], checkPerent: [] }],
-      //             homeworkList: [],
-      //           }
-      //         }
-      //       }
-      //       _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //       _this.$forceUpdate();
-      //     }
-      //   }
-      //   // if (data.result) {
-      //   //   console.log(data.result);
-      //   //   let dArray = JSON.parse(data.result)
-      //   //   _this.teacherText =  JSON.parse(data.result)
-
-      //   //   for (var i = 0; i < dArray.length; i++) {
-      //   //     let _task = dArray[i]
-      //   //     _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-      //   //   }
-      //   //   _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-      //   //   _this.$forceUpdate();
-      //   // }
-      //   callback ? callback() : ''
-      //   _this.loading = false
-      // }).catch(function (error) {
-      //   _this.loading = false
-      //   console.log(error);
-      // });
-
-
-
-      let parm = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: uuidv4(),
-        userId: this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      this.ajax
-        .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-        .then((response) => {
-          console.log(response);
-          let data = response.data.FunctionResponse
-          if (data.message) {
-            console.log(data.message);
-            // let dArray = JSON.parse(data.message.replaceAll('```json','').replaceAll('```',''))
-            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]*?)(?=```)");
-                  let match = data.message.match(regex);
-                  dArray = JSON.parse(match[0]);
-
-                  // var message = data.message;
-                  // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                  // var jsonEnd = message.indexOf("```", jsonStart);
-                  // var jsonString = message.substring(jsonStart, jsonEnd).trim();
-                  // dArray = JSON.parse(jsonString);
-              } catch (error) {
-                console.log("error_________________" + error);
-              }
-            }
-
-            _this.teacherText = JSON.parse(JSON.stringify(dArray))
-            if (_this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5") {
-              _this.unitJson[0].chapterInfo[0].taskJson = []
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                _this.unitJson[0].chapterInfo[0].taskJson.push({
-                  task: _task.task,
-                  taskDetail: "",
-                  taskDetail2: "",
-                  taskDetail3: _task.detail,
-                  chapterData: [],
-                  toolText: "",
-                  toolChoose: [
-                    {
-                      tool: [],
-                      toolDetail: "",
-                      toolType: 0,
-                      askCount: 1,
-                      askTitle: "",
-                      askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    },
-                  ],
-                  isShowTools: false,
-                  askCount: 1,
-                  isFold: 2,
-                  askTitle: "",
-                  askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                  checkJson: [{ checkCount: [], checkPerent: [] }],
-                  homeworkList: [],
-                })
-              }
-              _this.unitJson[0].chapterInfo[0].taskJson[0].chapterData = JSON.parse(JSON.stringify(_this.infoData))
-              _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-              _this.$forceUpdate();
-            } else {
-              for (var i = 0; i < dArray.length; i++) {
-                let _task = dArray[i]
-                if(_this.unitJson[0].chapterInfo[0].taskJson[i]){
-                  _this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3 = _task.detail
-                }else {
-                  _this.unitJson[0].chapterInfo[0].taskJson[i] = {
-                    task: _task.task,
-                    taskDetail: "",
-                    taskDetail2: "",
-                    taskDetail3: _task.detail,
-                    chapterData: [],
-                    toolText: "",
-                    toolChoose: [
-                      {
-                        tool: [],
-                        toolDetail: "",
-                        toolType: 0,
-                        askCount: 1,
-                        askTitle: "",
-                        askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                      },
-                    ],
-                    isShowTools: false,
-                    askCount: 1,
-                    isFold: 2,
-                    askTitle: "",
-                    askJson: [{ askstitle: "", askItem: 1, checkList: [] }],
-                    checkJson: [{ checkCount: [], checkPerent: [] }],
-                    homeworkList: [],
-                  }
-                }
-              }
-              _this.unitJson2 = JSON.parse(JSON.stringify(_this.unitJson))
-              _this.$forceUpdate();
-            }
-          }
-          callback ? callback() : ''
-        })
-        .catch((error) => {
-          _this.loading = false
-          console.log(error);
-        });
-    },
-    async aiDetail(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      let messages = `
-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".
-
---------
-## 要求
-${msg} 及#教学任务描述 以文本格式输出任务设计和评价标准
-
---------
-## 教学任务描述
-任务名称:${_this.aiCallBack.task}
-大纲描述:${_this.aiCallBack.taskDetail2}`
-
-// -------- #补充参考资料和
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${_this.courseText2}
-      _this.taskDetailLoading.push(_tindex)
-      _this.ttaskDetailLoading.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-
-        // _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-      }).catch(function (error) {
-        _this.taskDetailLoading.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading.splice(_this.ttaskDetailLoading.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetailgetAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetailgetAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
-          this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
-          this.ttaskDetailLoading.splice(this.ttaskDetailLoading.indexOf(loading), 1)
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 = _mdText;
-          this.taskDetailLoading.splice(this.taskDetailLoading.indexOf(loading), 1)
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    async aiDetail2(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-
-      let messages = `
-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".
-
---------
-## 要求
-${msg} 
-
---------
-## 优化信息
-任务名字: ${_this.aiCallBack.task}
-任务描述: ${_this.aiCallBack.taskDetail}
-
-# 格式与要求
-- 任务名:
-- 任务描述:该描述是教师给与学生的指示(用于指导学生如何进行教学活动),对应到学生活动,你应该用友好,但是又清晰明确的口吻来撰写。`
-      _this.taskDetailLoading2.push(_tindex)
-      _this.ttaskDetailLoading2.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading2.splice(_this.taskDetailLoading2.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading2.splice(_this.ttaskDetailLoading2.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail2getAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetail2getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = _mdText;
-          this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
-          this.ttaskDetailLoading2.splice(this.ttaskDetailLoading2.indexOf(loading), 1)
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = _mdText;
-          this.taskDetailLoading2.splice(this.taskDetailLoading2.indexOf(loading), 1)
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    async aiDetail3(msg, index, tindex) {
-      let _this = this
-      const _tindex = 'task-' + index + tindex
-      const _tindex2 = index
-      const _tindex3 = tindex
-    
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      // **重点考虑该任务及工具名和工具内容的情况下*
-      let messages = `
-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".
-
---------
-## 参考内容
-任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-任务描述:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail}
-工具名称:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].tool[0] ? _this.toolsData[_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].tool[0]] : '无'}
-工具内容:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail}
-
---------
-## 要求
-${msg} 输出格式和内容要求参考#格式与要求
-
-# 格式与要求
--工具指引:以友好,明确的口吻告诉学生该如何使用该工具`
-      _this.taskDetailLoading3.push(_tindex)
-      _this.ttaskDetailLoading3.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading3.splice(_this.taskDetailLoading3.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading3.splice(_this.ttaskDetailLoading3.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail3getAiContent(_uuid, _tindex, _tindex2, _tindex3)
-    },
-    aiDetail3getAiContent(_uid, loading, _tindex2, _tindex3) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = _mdText;
-          this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
-          this.ttaskDetailLoading3.splice(this.ttaskDetailLoading3.indexOf(loading), 1)
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].toolChoose[_tindex3].toolDetail = _mdText;
-          this.taskDetailLoading3.splice(this.taskDetailLoading3.indexOf(loading), 1)
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    async aiDetail4(msg, index) {
-      if (!msg.length) {
-        this.$message.error("请添加评价后才能优化")
-        return
-      }
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      var _text = ""
-      for (var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList.length; i++) {
-        _text += `评价维度:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList[i].value} 维度描述:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList[i].detail} `
-      }
-      // **重点考虑该任务详情**
-      let messages = `
-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".
-
-#Context
-## 参考内容
-任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-任务描述:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail}
-评价设计:${_text}
-
-## 要求
-${msg} 优化评价维度和维度描述,输出格式和内容要求参考# 格式与要求
-
-# 格式与要求
--评价标准:至少3条评价标准,这个评价是教师用来评价学生表现的,需要包含评价维度,以及该维度中教师期待学生的表现,句式为学生应该能....
-
-# Format example
-[{"value":"评价维度1","detail":"维度描述1","score":5},{"value":"评价维度2","detail":"维度描述2","score":5},{"value":"评价维度3","detail":"维度描述3","score":5}]`
-      _this.taskDetailLoading4.push(_tindex)
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   stream: false,
-      //   uid: this.userid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: uuidv4(),
-        userId: _this.userid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages: [{
-      //           content: messages,
-      //           role: 'user'
-      //         }], // 
-      //     },
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/claude3Chat', params).then(function (response) {
-        console.log(response);
-        let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.choices[0].message.content)
-        //   _this.$forceUpdate()
-        // }
-        if (data.message) {
-          console.log(data.message);
-          try {
-            _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.message.replaceAll("```json", "").replaceAll("```", ""))
-          } catch (e) {
-              console.log("error_________________" + e);
-              // _this.$message.error(data.message)
-              try {
-                let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                let match = data.message.match(regex);
-                _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(match[0]);
-
-                // var message = data.message;
-                // var jsonStart = message.indexOf("```json") + 7; // `+ 7` 是为了跳过 ```json
-                // var jsonEnd = message.indexOf("```", jsonStart);
-                // if (jsonStart !== -1 && jsonEnd !== -1) {
-                //     var jsonString = message
-                //         .substring(jsonStart, jsonEnd)
-                //         .trim();
-                //     var _data2 = JSON.parse(jsonString);
-                //     _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = _data2
-                // }
-              } catch (error) {
-              }
-          }
-          _this.$forceUpdate()
-        }
-        // if (data.result) {
-        //   console.log(data.result);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.result)
-        //   _this.$forceUpdate()
-        // }
-        _this.taskDetailLoading4.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-      }).catch(function (error) {
-        _this.taskDetailLoading4.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        console.log(error);
-      });
-    },
-    async aiDetail5(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-      var _text = ""
-      var _text2 = ""
-      for (var i = 0; i < _this.unitJson[0].chapterInfo[0].taskJson.length; i++) {
-        _text += `任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[i].task} 任务描述:${_this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail2.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-        _text2 += `任务名称:${_this.unitJson[0].chapterInfo[0].taskJson[i].task} 教案描述:${_this.unitJson[0].chapterInfo[0].taskJson[i].taskDetail3.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','')} \n`
-      }
-      let messages = `
-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".
-
---------
-## 要求
-${msg} 
-        
--------
-## 本教案描述
-${_this.aiCallBack}
-
--------
-## 课程大纲
-${_text}
-
--------
-## 其他教学任务教案
-${_text2}`
-
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${this.courseText2}
-      _this.taskDetailLoading5.push(_tindex)
-      _this.ttaskDetailLoading5.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading5.splice(_this.ttaskDetailLoading5.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail5getAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetail5getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    async aiDetail52(msg, index) {
-      let _this = this
-      const _tindex = 'task-' + index
-      const _tindex2 = index
-
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let url = []
-      if (this.infoData.length) {
-        for (var i = 0; i < this.infoData.length; i++) {
-          url.push(this.infoData[i].url)
-        }
-      }
-
-      let messages = `
-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".
-
---------
-## 要求
-${msg} 
-        
--------
-## 补充描述
-课程简要描述:${_this.courseText}
-任务名:${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].task}
-${_this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2 ? '任务描述:' + _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail2.replaceAll('#','').replaceAll('*','').replaceAll('-','').replaceAll('\n','') : ''}`
-
-// ## 补充参考资料
-// - 补充资料:${url.join(",")}
-// - 补充描述:${this.courseText2}
-      _this.taskDetailLoading5.push(_tindex)
-      _this.ttaskDetailLoading5.push(_tindex)
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.taskDetailLoading5.splice(_this.taskDetailLoading5.indexOf(_tindex), 1)
-        _this.ttaskDetailLoading5.splice(_this.ttaskDetailLoading5.indexOf(_tindex), 1)
-        console.log(error);
-      });
-      await _this.aiDetail52getAiContent(_uuid, _tindex, _tindex2)
-    },
-    aiDetail52getAiContent(_uid, loading, _tindex2) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          this.ttaskDetailLoading5.splice(this.ttaskDetailLoading5.indexOf(loading), 1)
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail3 = _mdText;
-          this.taskDetailLoading5.splice(this.taskDetailLoading5.indexOf(loading), 1)
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    async aiCpote(msg, callback) {
-      let _this = this
-      let _index = _this.aitype.replace("aiC","c")
-      
-      let fileid = _this.isFileSearch ? [..._this.fileIds] : []
-      if (_this.infoData.length) {
-        for (var i = 0; i < _this.infoData.length; i++) {
-          if(_this.infoData[i].fileid){
-            fileid.push(_this.infoData[i].fileid)
-          }else {
-            let _fileid = await _this.createFileid(_this.infoData[i].url)
-            if(_fileid){
-              _this.infoData[i].fileid = _fileid
-              _this.$forceUpdate();
-              fileid.push(_fileid)
-            }
-          }
-        }
-      }
-
-      let sub = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
-              sub.push(this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-      let mclass = []
-      if (this.courseTypeId.length) {
-        for (var i = 0; i < this.courseTypeId.length; i++) {
-          let _sid = this.courseTypeId[i]
-          for (var j = 0; j < this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
-            if (_sid == this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
-              mclass.push(this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
-            }
-          }
-        }
-      }
-// ${this.getListClassC(this.checkboxList2) ?  '班级:' + this.getListClassC(this.checkboxList2) : "无"}
-// ${this.cpote[_index] ? '## 优化内容\n'+this.cpote[_index] : ''}
-
-      let messages = `
-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".
-
-${msg} 
-
-## 课程简介
-课程名字:${this.courseName}
-${this.courseText ? '课程简要描述:' + this.courseText : ''}
-${sub.length ? '学科:' + sub.join(",") : ''}
-${mclass.length ? '面向年级:' + mclass.join(",") : ''}
-
-${this.aitype == 'aiCpote2' || this.aitype == 'aiCpote3' || this.aitype == 'aiCpote4' ? '## 概念群\n'+this.cpote['cpote1'] : ''}
-
-${this.aitype == 'aiCpote4' ? '## 问题链\n'+this.cpote['cpote2'] : ''}
-
-${this.aitype == 'aiCpote4' ? '## 目标层\n'+this.cpote['cpote3'] : ''}`
-      _this.cpoteLoading[_index] = true
-      _this.cpotetLoading[_index] = true
-      let _uuid = uuidv4();
-      // let params = JSON.stringify({
-      //   // "model": "Chat",
-      //   model: 'gpt-3.5-turbo',
-      //   temperature: 0,
-      //   max_tokens: 4096,
-      //   top_p: 1,
-      //   frequency_penalty: 0,
-      //   presence_penalty: 0,
-      //   messages: [{
-      //     content: messages,
-      //     role: 'user'
-      //   }],
-      //   uid: _uuid,
-      //   mind_map_question: "",
-      // })
-      let params = {
-        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-        message: [{"type":"text", "text":messages}],
-        session_name: _uuid,
-        userId: _this.userid,
-        uid: _uuid,
-        file_ids: fileid.length ? [...fileid] : '',
-      }
-      // let params = JSON.stringify({
-      //     message: {
-      //         anthropic_version: "bedrock-2023-05-31",
-      //         max_tokens: 4096,
-      //         temperature: 0,
-      //         top_p: 1,
-      //         messages:  [{
-      //             "role": "user",
-      //             "content": messages
-      //         }] , 
-      //     },
-      //     uid: _uuid,
-      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
-      // });
-      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
-      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
-        // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
-        console.log(response);
-        // let data = response.data.FunctionResponse
-        // if (data.choices && data.choices.length && data.choices[0].message) {
-        //   console.log(data.choices[0].message.content);
-        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].taskDetail = data.choices[0].message.content
-        //   _this.$forceUpdate()
-        // }
-        // _this.taskDetailLoading2.splice(_this.taskDetailLoading.indexOf(_tindex), 1)
-        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
-        } else {
-          this.$message.warning(response.data.FunctionResponse.result);
-        }
-      }).catch(function (error) {
-        _this.cpoteLoading[_index] = false
-        _this.cpotetLoading[_index] = false
-        callback ? callback() : ''
-        console.log(error);
-      });
-      await _this.aiCpotegetAiContent(_uuid, _index, callback)
-    },
-    aiCpotegetAiContent(_uid, loading, callback) {
-      // let _source = new EventSource(`https://gpt4.cocorobo.cn/stream/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _source = new EventSource(`https://gpt4.cocorobo.cn/question/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      // let _source = new EventSource(`https://claude3.cocorobo.cn/streamChat/${_uid}`); //http://gpt4.cocorobo.cn:8011/stream/     https://gpt4.cocorobo.cn/stream/
-      let _allText = "";
-      let _mdText = "";
-      _source.onmessage = _e => {
-        let _eData = JSON.parse(_e.data).content;
-        if (_eData.replace("'", "").replace("'", "") == "[DONE]") {
-          //对话已经完成
-          _mdText = _mdText.replace("_", "");
-          _source.close();
-          this.cpote[loading] = _mdText;
-          this.cpoteLoading[loading] = false
-          this.cpotetLoading[loading] = false
-          callback ? callback() : ''
-          return;
-        } else {
-          //对话还在继续
-          let _text = "";
-          _text = _eData.replaceAll("'", "");
-          if (_allText == "") {
-            _allText = _text.replace(/^\n+/, ""); //去掉回复消息中偶尔开头就存在的连续换行符
-          } else {
-            _allText += _text;
-          }
-          _mdText = _allText + "_";
-          _mdText = _mdText.replace(/\\n/g, "\n");
-          _mdText = _mdText.replace(/\\/g, "");
-          if (_allText.split("```").length % 2 == 0) _mdText += "\n```\n";
-          //转化返回的回复流数据
-          this.cpote[loading] = _mdText;
-          this.cpoteLoading[loading] = false
-          // 处理流数据
-        }
-        this.$forceUpdate();
-      };
-    },
-    createFileid(url) {
-      let _this = this
-      return new Promise((resolve, reject) => {
-        try {
-          _this.ajax
-          .put("https://gpt4.cocorobo.cn/upload_file_knowledge", {
-            url: url,
-          })
-          .then((res) => {
-            let _data = res.data.FunctionResponse;
-            if (_data.result && _data.result.id) {
-              resolve(_data.result.id)
-            }
-          }).catch(function (error) {
-            resolve('')
-          });
-        }catch (e){
-          resolve()
-        }
-        
-      });
-    }
-  },
-  beforeDestroy() {
-    clearTimeout(this.timer);
-    this.timer = null;
-    clearInterval(this.timer2);
-    this.timer2 = null;
-    clearInterval(this.pasteTimer);
-    this.pasteTimer = null;
-  },
-  beforeRouteLeave(to, from, next) {
-    clearTimeout(this.timer);
-    this.timer = null;
-    clearInterval(this.timer2);
-    this.timer2 = null;
-    clearInterval(this.pasteTimer);
-    this.pasteTimer = null;
-    next();
-  },
-  created() {
-    this.getStudent();
-    this.getTeacher();
-    this.getClass();
-    this.selectGrage();
-    this.getTemplate();
-    this.getTipsTemplate();
-    // this.selectType();
-    this.selectEva();
-    if(this.istemplate == 1){
-      this.isOutline = true
-      this.isOutline2 = true
-    }
-    this.loading = false;
-    this.timer2 = setInterval(() => {
-      this.selectEva();
-    }, 5000);
-    this.pasteTimer = setInterval(() => {
-      this.getPaste();
-    }, 1000);
-    setTimeout(() => {
-      // this.selectAllType();
-
-      this.selectCourseDetail();
-    }, 500);
-    let _this = this;
-    window.pasteStage = function (json) {
-      _this.pasteStage(json);
-    };
-    window.pasteTask = function (json) {
-      _this.pasteTask(json);
-    };
-  },
-};
-</script>
-
-<style scoped>
-@media screen and (max-width: 1280px) {
-  .mbCss {
-    flex-direction: column !important;
-  }
-
-  .pjCss {
-    width: 100% !important;
-  }
-
-  .evaCss {
-    width: 100% !important;
-    margin-top: 10px;
-  }
-}
-
-.el-table>>>.even_row {
-  background-color: #f1f1f1 !important;
-}
-
-.dialog_diy>>>.el-dialog__header {
-  background: #3c3c3c !important;
-  padding: 15px 20px;
-}
-
-.dialog_diy>>>.el-dialog__title {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-  top: 19px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-  background: #fafafa;
-}
-
-.dialog_diy3>>>.el-dialog__body,
-.dialog_diy3>>>.el-dialog__footer {
-  background: #eee !important;
-}
-
-.dialog_diy3>>>.el-dialog__body {
-  padding: 20px 20px;
-}
-
-.dialog_diyStage>>>.el-dialog__body {
-  padding: 10px;
-}
-
-.source_diy>>>.el-dialog {
-  height: 100% !important;
-  margin: 0 auto !important;
-}
-
-.source_diy>>>.el-dialog__body {
-  height: calc(100% - 185px);
-  overflow: auto;
-  background: #e6eaf0;
-}
-
-.source_diy>>>.el-dialog__footer {
-  background: #e6eaf0 !important;
-}
-
-.left {
-  border-right: 1px solid rgb(60, 94, 143);
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  min-height: 600px;
-  width: 385px;
-  height: 80%;
-}
-
-.tips {
-  color: rgb(128, 128, 128);
-  font-size: 12px;
-  width: 270px;
-  margin: 40px;
-}
-
-.pb_content {
-  height: 100% !important;
-  /* margin: 0 20px 0 20px; */
-}
-
-.pb_content_body {
-  width: 100% !important;
-  height: 100%;
-  display: flex;
-}
-
-.info_solid {
-  width: 270px;
-  height: 30px;
-  border-left: 1px solid #bdbdbd;
-  margin: 10px 0px 10px 30px;
-}
-
-.info_steps {
-  width: 270px;
-  font-size: 0.875rem;
-  display: flex;
-  align-items: center;
-}
-
-.info_steps span:nth-child(1) {
-  width: 30px;
-  height: 30px;
-  background: rgba(0, 0, 0, 0.38);
-  display: block;
-  color: #fff;
-  border-radius: 40px;
-  text-align: center;
-  line-height: 30px;
-}
-
-.steps_active {
-  background: #3d67bc !important;
-}
-
-.info_steps span:nth-child(2) {
-  margin-left: 5px;
-}
-
-.right {
-  height: 100%;
-  width: 100%;
-  display: flex;
-  overflow: hidden;
-  flex-direction: column;
-}
-
-.leftBar{
-  width: 290px;
-  height: calc(100% - 50px);
-  overflow: auto;
-  border-radius: 5px;
-  margin: 25px auto;
-  box-sizing: border-box;
-  margin-right: 10px;
-}
-
-.basic_box {
-  margin: 0 auto;
-  position: relative;
-  padding: 0 20px 0 20px;
-}
-
-.basic_box_success {
-  width: 100%;
-  min-height: 455px;
-  padding: 50px 0;
-  position: relative;
-  text-align: center;
-  border-bottom: 1px solid #bfbfbf;
-  box-sizing: border-box;
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  justify-content: center;
-}
-
-.info_title {
-  font-size: 1.5em;
-  margin-right: 25px;
-  /* margin: 20px 30px 20px 30px; */
-}
-
-.bInfo_title {
-  text-align: left;
-  margin: 10px 0;
-}
-
-.small_title {
-  font-size: 14px;
-  line-height: 40px;
-}
-
-.chapter_beizhu {
-  font-size: 12px;
-  font-weight: bold;
-  float: right;
-  color: rgb(128, 128, 128);
-  margin-top: 5px;
-}
-
-.chapter_uploadBox1 {
-  text-align: left;
-  background-color: rgb(242, 242, 242);
-  width: 100%;
-  height: 67px;
-  padding: 0px 15px;
-  border-radius: 8px;
-  overflow: hidden;
-  font-size: 16px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-.chapter_add {
-  width: 100%;
-  height: 32px;
-  margin-top: 15px;
-  cursor: pointer;
-}
-
-.chapter_add_l {
-  margin-left: 5px;
-  width: 30px;
-  height: 30px;
-  float: left;
-  border: 1px solid #aaa;
-  color: #aaa;
-  border-radius: 50%;
-  font-size: 25px;
-  text-align: center;
-}
-
-.chapter_add_r {
-  font-size: 18px;
-  height: 40px;
-  line-height: 30px;
-  text-indent: 10px;
-  color: #aaa;
-}
-
-.chapter_add_r span {
-  font-size: 12px;
-  color: rgb(204, 204, 204);
-}
-
-.chapter_add_input {
-  display: none;
-}
-
-.line {
-  width: 85%;
-  margin: 0 auto;
-  border-top: 1px solid #e5e5e5;
-  margin-top: 20px;
-}
-
-.info_btnBox {
-  width: calc(100%);
-  display: flex;
-  justify-content: center;
-  height: 80px;
-  align-items: center;
-  background: #fff;
-  margin: 0 auto;
-  border-top: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-}
-
-.info_btnBox2 {
-  width: calc(100%);
-  display: flex;
-  justify-content: center;
-  height: 20px;
-  align-items: center;
-  background: #fff;
-  margin: 0 auto;
-  border-top: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-  overflow: hidden;
-  cursor: pointer;
-}
-
-.info_btnBox3 {
-  width: calc(100%);
-  display: flex;
-  justify-content: flex-end;
-  padding: 0 20px;
-  height: 60px;
-  align-items: center;
-  background: unset;
-  margin: 0 auto;
-  /* border-top: 1px solid rgb(228, 232, 237); */
-  box-sizing: border-box;
-  overflow: hidden;
-  cursor: pointer;
-  background: #fff;
-  border-radius: 10px;
-}
-
-.info_btn+.info_btn {
-  margin-left: 15px;
-}
-
-.info_btn,
-.teacherWord {
-  color: #fff;
-  background-color: #0f7eff;
-  padding: 8px 24px;
-  font-size: 0.9375rem;
-  box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%),
-    0px 3px 1px -2px rgb(0 0 0 / 12%);
-  min-width: 64px;
-  font-weight: 500;
-  border-radius: 4px;
-  box-sizing: border-box;
-  border: none;
-  cursor: pointer;
-}
-
-.teacherWord {
-  width: 105px !important;
-  text-align: center !important;
-  line-height: 36px !important;
-  padding: 0 !important;
-  font-size: 14px !important;
-  margin: 10px 0 !important;
-}
-
-.template_box {
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.wordTeacher {
-  display: flex;
-  flex-direction: column;
-  width: 100px;
-  height: 100px;
-  text-align: center;
-  font-size: 13px;
-  margin: 0 20px 20px 0;
-  background: #f0f4fa;
-  position: relative;
-  border-radius: 5px;
-  align-items: center;
-  justify-content: center;
-  border: 1px solid #cad1dc;
-  color: #0e1e33;
-  /* padding: 25px 0px; */
-  cursor: pointer;
-}
-
-.wordTeacher::after {
-  content: "";
-  display: block;
-  position: absolute;
-  width: 15px;
-  height: 15px;
-  right: 10px;
-  top: 10px;
-  background-image: url(../../../assets/icon/new/choose_a.png);
-  background-size: 100% 100%;
-}
-
-.wordTeacherA::after {
-  background-image: url(../../../assets/icon/new/choose_b.png);
-}
-
-.wordTeacher:nth-child(5n) {
-  margin-right: 0px;
-}
-
-.wordPic {
-  margin: 0 auto;
-  width: 30px;
-  height: 30px;
-  cursor: pointer;
-}
-
-.deleteWord {
-  width: 22px;
-  height: 22px;
-  position: absolute;
-  right: 5px;
-  top: -15px;
-  cursor: pointer;
-  display: none;
-  z-index: 999;
-}
-
-.wordPic>img,
-.deleteWord>img,
-.addToolImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.info_btn:hover {
-  background-color: #4f7cd5 !important;
-}
-
-.cru_selectBox {
-  display: flex;
-  margin: 15px 0;
-  flex-wrap: nowrap;
-  white-space: nowrap;
-  overflow: auto;
-  position: relative;
-  height: 40px;
-  max-width: calc(100% - 175px);
-}
-
-.cru_selectBox::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-track {
-  border-radius: 10px;
-  background-color: #eee;
-}
-
-/*定义滑块 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.cru_line {
-  position: absolute;
-  bottom: 0px;
-  transition: all 0.5s;
-  left: 0px;
-  width: 50px;
-  height: 4px;
-  left: 10px;
-  border-radius: 2px;
-  background: #3681fc;
-}
-
-.cru_select {
-  font-size: 18px;
-  margin-right: 20px;
-  margin-left: 5px;
-  cursor: pointer;
-  color: #0e1e33;
-}
-
-.cru_select:hover {
-  color: #3681fc !important;
-}
-
-.cru_selected {
-  color: #3681fc !important;
-  font-weight: bold;
-}
-
-.chapter_box {
-  margin-top: 10px;
-  width: 100%;
-  padding: 10px 20px;
-  background: #fff;
-  border-radius: 8px;
-  box-sizing: border-box;
-}
-
-.chapter_contentbox {
-  display: flex;
-  align-items: center;
-  /* margin-top: 15px; */
-}
-
-.chapter_contentbox .cc_title {
-  margin: 0px;
-  color: black;
-  display: block;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  margin-right: 20px;
-  font-size: 18px;
-  height: 20px;
-  line-height: 22px;
-  min-width: fit-content;
-  display: flex;
-}
-
-.chapter_contentbox .cc_title::before {
-  content: "";
-  height: 100%;
-  width: 3px;
-  background: #3681fc;
-  border-radius: 3px;
-  opacity: 1;
-  display: block;
-  margin-right: 10px;
-}
-
-.chapter_contentbox .cc_input {
-  width: 100%;
-  display: flex;
-}
-
-.show_taskD {
-  min-width: fit-content;
-  margin-left: 10px;
-  display: flex;
-  align-items: center;
-  font-size: 14px;
-  cursor: pointer;
-  color: #717c8d;
-}
-
-.show_taskD>img {
-  width: 15px;
-  margin-right: 5px;
-  transition: 0.2s all;
-  transform: rotate(-90deg);
-}
-
-.show_taskD.show>img {
-  transform: rotate(0deg);
-}
-
-.show_toolD {
-  min-width: fit-content;
-  margin-left: 10px;
-  display: flex;
-  align-items: center;
-  font-size: 14px;
-  cursor: pointer;
-  color: #717c8d;
-  /* position: absolute;
-  right: 45px;
-  top: 5px; */
-}
-
-.show_toolD>img {
-  width: 15px;
-  margin-right: 5px;
-  transition: 0.2s all;
-  transform: rotate(-90deg);
-}
-
-.show_toolD.show>img {
-  transform: rotate(0deg);
-}
-
-.remove {
-  background-image: url("../../../assets/icon/new/delete_u.png");
-  cursor: pointer;
-  opacity: 0.5;
-  width: 30px;
-  min-width: 30px;
-  height: 30px;
-  background-size: 100% 100%;
-  background-repeat: no-repeat;
-  margin-left: 10px;
-}
-
-.remove1 {
-  background-image: url("../../../assets/remove1.png");
-  background-repeat: no-repeat;
-  background-position: 5px 10px;
-  width: 40px;
-  height: 50px;
-  cursor: pointer;
-  margin-left: 10px;
-}
-
-.binfo_input {
-  width: 100%;
-  margin: 0;
-  padding: 12px 14px;
-  display: block;
-  min-width: 0;
-  outline: none;
-  box-sizing: border-box;
-  background: none;
-  border: none;
-  border-radius: 4px;
-  background: #fff;
-  font-size: 16px;
-  resize: none;
-  font-family: "Microsoft YaHei";
-  min-height: 48px;
-  /* border: 1px solid #3682fc00; */
-  border: 1.5px solid #cad1dc;
-}
-
-.binfo_textarea {
-  border: 1.5px solid #cad1dc;
-  font-size: 16px;
-  resize: none;
-  /* background: #f6f6f6; */
-  font-family: "Microsoft YaHei";
-}
-
-.binfo_input:focus-visible {
-  border: 1.5px solid #3681fc !important;
-}
-
-.time {
-  display: flex;
-  margin: 35px 0 80px 0;
-}
-
-.chapter_btnbox {
-  width: 160px;
-  border-radius: 5px;
-  border: 2px dashed gray;
-  display: flex;
-  padding: 8px 50px;
-  align-items: center;
-  justify-content: center;
-  margin: 30px auto 0;
-  cursor: pointer;
-}
-
-.icon_add {
-  position: relative;
-  width: 24px;
-  padding-top: 20px;
-  border-radius: 100%;
-  border-width: 2px;
-  border-style: solid;
-  border-color: gray;
-}
-
-.icon_add i:nth-child(1) {
-  position: absolute;
-  left: 50%;
-  top: 50%;
-  height: 60%;
-  transform: translate(-50%, -50%);
-  border-width: 1px;
-  border-style: solid;
-  border-color: inherit;
-}
-
-.icon_add i:nth-child(2) {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  width: 60%;
-  transform: translate(-50%, -50%);
-  border-width: 1px;
-  border-style: solid;
-  border-color: inherit;
-}
-
-.chapter_btn_w {
-  font-size: 0.9375rem;
-  font-weight: bold;
-  color: gray;
-  margin-left: 20px;
-}
-
-.disUoloadSty>>>.el-icon-plus {
-  display: none !important;
-  /* 上传按钮隐藏 */
-}
-
-.imgLeft {
-  margin: 15px 0;
-}
-
-.add_info_box {
-  margin: 0 0 0 auto;
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.add_info_box button {
-  margin: 0 5px 10px 0;
-}
-
-.add_info_box2 {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-}
-
-.add_info_box2::after {
-  content: "提示:支持上传10M以内的PPT和Word文件、5M以内的Excel文件, PDF文件不限制大小。";
-  color: red;
-  font-size: 14px;
-  margin-bottom: 10px;
-}
-
-.add_chapters_box {
-  text-align: left;
-  background-color: #fff;
-  width: 100%;
-  border-radius: 4px;
-  font-size: 16px;
-  box-sizing: border-box;
-  position: relative;
-  padding: 0 15px;
-  height: auto;
-  overflow-y: auto;
-  overflow-x: hidden;
-  border: 1px solid #cad1dc;
-}
-
-.add_chapters_box.add_c_none {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  padding: 15px;
-}
-
-.add_c_none>img {
-  width: 25px;
-}
-
-.add_chapters_box.add_c_none>span {
-  font-size: 14px;
-  font-weight: 400;
-  margin: 0 0 5px 5px;
-}
-
-.homework_box {
-  display: flex;
-  align-items: flex-start;
-  flex-wrap: wrap;
-  margin: 15px 0 0 0;
-  flex-direction: column;
-  align-content: flex-start;
-}
-
-.course_homework {
-  display: flex;
-  justify-content: center;
-  flex-direction: row;
-  align-items: center;
-  margin: 0 10px 0 0;
-}
-
-.course_homework>>>.el-input__inner {
-  width: 140px;
-  margin-left: 15px;
-}
-
-.chapter_upload_move {
-  position: relative;
-  background-color: #fff;
-  position: absolute;
-  width: 100%;
-  top: 0px;
-  left: 0px;
-  border: 1px solid #eee;
-  border-radius: 5px;
-  transition: width 2s;
-  -moz-transition: width 2s;
-  -webkit-transition: width 2s;
-  -o-transition: width 2s;
-}
-
-.chapter_upload_l_i {
-  background-image: url("../../../assets/icon.png");
-  background-position: 3px -165px;
-  width: 30px;
-  height: 30px;
-  margin: 10px auto 0 auto;
-}
-
-.course_input_box {
-  display: flex;
-  margin-right: 20px;
-  width: 100%;
-  align-items: center;
-  position: relative;
-}
-
-.course_input_box>.binfo_input {
-  width: calc(100% - 0 - 200px - 20px);
-  margin: 0 10px;
-}
-
-.bb_courseIcon {
-  width: 57px;
-  height: 45px;
-  background: #f0f4fa;
-  border-radius: 5px 0px 0px 5px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  border-right: 1.5px solid rgb(202, 209, 220);
-  box-sizing: border-box;
-  position: absolute;
-  left: 1.5px;
-}
-
-.bb_courseIcon>img {
-  width: 25px;
-  height: auto;
-}
-
-.big_box {
-  /* margin-top: 20px; */
-  display: flex;
-  justify-content: space-between;
-  /* border-bottom: 1px solid #E0E2ED; */
-}
-
-.left_first {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  width: calc(100% - 310px);
-  padding: 20px;
-  box-sizing: border-box;
-  background: #fff;
-  border-radius: 5px;
-}
-
-.right_first {
-  width: 300px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  /* border-left: 1px solid #E0E2ED; */
-  box-sizing: border-box;
-  padding: 20px;
-  flex-direction: column;
-  background: #fff;
-  border-radius: 5px;
-}
-
-.ai_box {
-  width: 204px;
-  display: flex;
-  justify-content: flex-end;
-  margin-bottom: 15px;
-}
-
-.ai_content {
-  display: flex;
-  align-items: center;
-  font-size: 14px;
-  padding: 7px 20px;
-  box-sizing: border-box;
-  box-shadow: 0px 0px 12px 1px rgba(0, 0, 0, 0.16);
-  border-radius: 12px;
-  font-weight: 700;
-  cursor: pointer;
-}
-
-.ai_content>img {
-  width: 40px;
-  margin-right: 5px;
-}
-
-.c_info_title {
-  padding: 15px 0 15px 0;
-  font-size: 16px;
-  font-weight: bold;
-  margin: 0 0 0 20px;
-  box-sizing: border-box;
-  display: flex;
-  align-items: center;
-  line-height: 20px;
-}
-
-.c_info_title::before {
-  content: "";
-  display: block;
-  width: 3px;
-  height: 20px;
-  background: #0061ff;
-  border-radius: 3px;
-  margin: 0 5px 0 0;
-}
-
-.right_title {
-  height: 30px;
-  padding: 15px 0 15px 20px;
-  border-bottom: 1px solid #f2f2f2;
-  font-size: 1.5em;
-  font-weight: bold;
-  color: #0f7eff;
-  margin: 0 auto;
-}
-
-.people {
-  border: 1px solid rgb(229 229 229);
-  /* height: 495px; */
-  height: 350px;
-  border-radius: 5px;
-  width: 100%;
-  overflow: auto;
-}
-
-.people_top {
-  display: flex;
-  width: 100%;
-  /* justify-content: space-between; */
-  /* align-items: center; */
-  flex-direction: column;
-  padding: 10px 10px 0;
-  box-sizing: border-box;
-}
-
-.people_nav,
-.people_top_right {
-  /* padding: 20px 0 0 20px; */
-}
-
-.people_top_right {
-  height: 40px;
-  margin-bottom: 10px;
-}
-
-.people_search {
-  display: flex;
-  position: relative;
-}
-
-.people_search>>>.el-input__inner {
-  /* height: 25px; */
-  width: 100%;
-}
-
-.search_img {
-  width: 20px;
-  height: 20px;
-  position: absolute;
-  right: 10px;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.search_img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.people_name {
-  display: flex;
-  justify-content: flex-start;
-  padding: 20px 10px;
-  flex-direction: column;
-  flex-wrap: wrap;
-}
-
-.p_box {
-  position: relative;
-}
-
-.people_name>>>.el-checkbox {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  margin-bottom: 10px;
-}
-
-.people_name>>>.el-checkbox__label {
-  text-overflow: ellipsis;
-  overflow: hidden;
-  width: calc(100%);
-}
-
-.people_name2>>>.el-checkbox__label {
-  width: calc(100% - 130px);
-}
-
-.inviteCode {
-  position: absolute;
-  right: 30px;
-  color: #237ade;
-  top: 0;
-  cursor: pointer;
-  font-size: 13px;
-}
-
-.noneInvite {
-  color: #a8a8a8;
-}
-
-.inviteImg {
-  position: absolute;
-  right: 5px;
-  top: 0;
-  width: 20px;
-}
-
-.right_img {
-  width: 150px;
-  height: 150px;
-  margin: 0 auto;
-}
-
-.right_img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.number {
-  margin-top: 20px;
-  color: #4aa6ff;
-  text-decoration: underline;
-}
-
-.success_button {
-  display: flex;
-  text-align: center;
-  margin: 5% 0 auto;
-  flex-direction: row;
-  justify-content: center;
-}
-
-.look_course {
-  margin-right: 40px;
-  background: #3d67bc;
-  width: 200px;
-  height: 35px;
-  line-height: 35px;
-  color: #fff;
-  text-align: center;
-  font-size: 14px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.attend_others {
-  width: 250px;
-  background: #4fb13c;
-  height: 35px;
-  line-height: 35px;
-  color: #fff;
-  text-align: center;
-  font-size: 14px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.dialog_diy2>>>.el-dialog__body {
-  text-align: center;
-}
-
-.write_togother {
-  position: absolute;
-  right: 45px;
-  display: flex;
-  top: 5%;
-}
-
-.write_people {
-  font-size: 14px;
-  line-height: 50px;
-  padding-right: 10px;
-}
-
-.end_write {
-  background: #3d67bc;
-  color: #fff;
-  width: 100px;
-  height: 35px;
-  line-height: 35px;
-  text-align: center;
-  font-size: 14px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.chapter_upload+.chapter_upload {
-  /* margin-top: 15px; */
-  border-top: 1px solid #e7ebf1;
-}
-
-.chapter_upload {
-  height: 45px;
-  position: relative;
-  display: flex;
-  align-items: center;
-  width: 100%;
-  min-height: 45px;
-  /* box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.16); */
-  /* border-radius: 4px; */
-  /* overflow: hidden; */
-  box-sizing: border-box;
-}
-
-.chapter_upload_drag {
-  position: absolute;
-  cursor: pointer;
-  width: 16px;
-  height: 16px;
-  left: -9px;
-  background-image: url("../../../assets/icon/new/icon_course_drag.png");
-  background-size: 100% 100%;
-  z-index: 10;
-  display: none;
-}
-
-.isNavStage>.chapter_upload_drag {
-  background-image: url("../../../assets/icon/new/icon_course_drag_active2.png");
-}
-
-.chapter_upload_t {
-  background-color: #fff;
-  position: absolute;
-  height: 100%;
-  top: 0px;
-  left: 0px;
-  box-sizing: border-box;
-}
-
-.chapter_upload_o {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  z-index: 1;
-}
-
-.chapter_upload_ic {
-  margin: 0 15px 0px auto;
-  display: flex;
-  align-items: center;
-}
-
-.chapter_upload_ic_l {
-  width: 50px;
-  height: 50px;
-  float: left;
-}
-
-.chapter_upload_ic_l div {
-  width: 30px;
-  height: 35px;
-  background: url("../../../assets/icon/icon.png");
-}
-
-.chapter_upload_ic_edit {
-  height: 100%;
-  display: flex;
-  align-items: center;
-  cursor: pointer;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ic_edit div {
-  width: 18px;
-  height: 18px;
-  background-image: url("../../../assets/icon/new/edit_u.png");
-  background-size: 100% 100%;
-}
-
-.chapter_upload_ic_r {
-  height: 100%;
-  display: flex;
-  align-items: center;
-  cursor: pointer;
-}
-
-.chapter_upload_ic_r div {
-  width: 18px;
-  height: 18px;
-  background-image: url("../../../assets/icon/new/delete_u.png");
-  background-size: 100% 100%;
-}
-
-.chapter_upload_n {
-  display: flex;
-  text-indent: 10px;
-  text-decoration: none;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  overflow: hidden;
-  width: 55%;
-  margin-left: 10px;
-  cursor: pointer;
-  margin-top: 2px;
-  align-items: center;
-}
-
-.chapter_upload_l_i2,
-.chapter_upload_l_i3,
-.chapter_upload_l_i8,
-.chapter_upload_l_i6,
-.chapter_upload_l_i12,
-.chapter_upload_l_i14,
-.chapter_upload_l_i13 {
-  width: 15px;
-  height: 15px;
-  background-size: 100% 100%;
-}
-
-.chapter_upload_l_i2 {
-  background-image: url("../../../assets/icon/new/u_word.png");
-}
-
-.chapter_upload_l_i3 {
-  background-image: url("../../../assets/icon/new/u_video.png");
-}
-
-.chapter_upload_l_i8 {
-  background-image: url("../../../assets/icon/new/u_url.png");
-}
-
-.chapter_upload_l_i14 {
-  background-image: url("../../../assets/icon/new/u_source.png");
-}
-
-.chapter_upload_l_i6 {
-  background-image: url("../../../assets/icon/new/u_picture.png");
-}
-
-.chapter_upload_l_i12 {
-  background-image: url("../../../assets/icon/new/u_word.png");
-}
-
-.chapter_upload_l_i13 {
-  background-image: url("../../../assets/icon/new/u_img.png");
-}
-
-.chapter_upload_noSee {
-  background-image: url("../../../assets/icon/new/u_noUpload.png");
-  width: 18px;
-  height: 18px;
-  background-size: 100% 100%;
-  display: block;
-  margin-right: 10px;
-}
-
-.chapter_upload_ud {
-  display: flex;
-  flex-direction: row;
-  justify-content: center;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ud>.chapter_upload_up {
-  margin-bottom: 0;
-  margin-right: 10px;
-}
-
-.chapter_upload_down,
-.chapter_upload_up {
-  width: 20px;
-  height: 20px;
-  background: #e4eaf2;
-  cursor: pointer;
-  margin: 0 auto;
-  border-radius: 5px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-
-.chapter_upload_up::after,
-.chapter_upload_down::after {
-  content: "";
-  background-image: url("../../../assets/icon/new/downBtn.png");
-  width: 13px;
-  height: 13px;
-  background-size: 100% 100%;
-  display: block;
-}
-
-.chapter_upload_up::after {
-  background-image: url("../../../assets/icon/new/upBtn.png") !important;
-}
-
-.chapter_upload_up {
-  margin-bottom: 5px;
-}
-
-.chapter_upload_ud2 {
-  display: flex;
-  flex-direction: row;
-  justify-content: center;
-  margin: 0 10px 0 0;
-}
-
-.chapter_upload_ud2>.chapter_upload_up2 {
-  margin-bottom: 0;
-  margin-right: 10px;
-}
-
-.chapter_upload_down2,
-.chapter_upload_up2 {
-  cursor: pointer;
-  margin: 0 auto;
-  border-radius: 5px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  color: #717c8d;
-  font-size: 14px;
-}
-
-.chapter_upload_up2 {
-  margin-right: 10px;
-}
-
-.chapter_upload_up2::before,
-.chapter_upload_down2::before {
-  content: "";
-  background-image: url("../../../assets/icon/new/c_down.png");
-  width: 14px;
-  height: 14px;
-  background-size: 100% 100%;
-  display: block;
-  margin-right: 5px;
-}
-
-.chapter_upload_up2::before {
-  background-image: url("../../../assets/icon/new/c_up.png") !important;
-}
-
-.addWordStyle {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  overflow-x: auto;
-  white-space: nowrap;
-  flex-wrap: wrap;
-}
-
-/* table 样式 */
-.cont>>>table {
-  border-top: 1px solid #ccc;
-  border-left: 1px solid #ccc;
-}
-
-.cont>>>table td,
-.cont>>>table th {
-  border-bottom: 1px solid #ccc;
-  border-right: 1px solid #ccc;
-  /* padding: 20px 5px; */
-  padding: 5px 10px;
-  max-width: 0px;
-  height: 30px;
-  vertical-align: baseline;
-}
-
-.cont>>>table th {
-  border-bottom: 2px solid #ccc;
-  text-align: center;
-}
-
-/* blockquote 样式 */
-.cont>>>blockquote {
-  display: block;
-  border-left: 8px solid #d0e5f2;
-  padding: 5px 10px;
-  margin: 10px 0;
-  line-height: 1.4;
-  font-size: 100%;
-  background-color: #f1f1f1;
-}
-
-/* code 样式 */
-.cont>>>code {
-  display: inline-block;
-  /* *display: inline; */
-  zoom: 1;
-  background-color: #f1f1f1;
-  border-radius: 3px;
-  padding: 3px 5px;
-  margin: 0 3px;
-}
-
-.cont>>>pre code {
-  display: block;
-}
-
-/* ul ol 样式 */
-.cont>>>ul,
-ol {
-  margin: 10px 0 10px 20px;
-}
-
-.wordbox {
-  display: flex;
-  flex-wrap: wrap;
-  cursor: pointer;
-  width: 100%;
-}
-
-.checkword {
-  width: 22px;
-  height: 22px;
-  margin: 10px auto 0;
-  cursor: pointer;
-}
-
-.checkword img {
-  width: 100%;
-}
-
-.stepBg {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  background: #fff;
-  width: calc(100%);
-  margin: 0 auto;
-}
-
-.stepBorder {
-  height: 3px !important;
-  background: #cad1dc;
-  width: 100px !important;
-  margin: 0 15px !important;
-  position: relative;
-}
-
-.border-active {
-  background: #3681fc !important;
-}
-
-.border-active::before,
-.border-active::after {
-  border-color: #3681fc !important;
-}
-
-.stepBorder::before,
-.stepBorder::after {
-  content: "";
-  width: 9px;
-  height: 9px;
-  background: #ffffff;
-  opacity: 1;
-  border: 2px solid #acb4bf;
-  display: block;
-  box-sizing: border-box;
-  border-radius: 50%;
-  position: absolute;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.stepBorder::after {
-  right: -9px;
-}
-
-.stepTop {
-  width: 100%;
-  /* border-radius: 10px; */
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: nowrap;
-  background: #fff;
-  /* top: 18%; */
-  height: 80px;
-  border-bottom: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-}
-
-.stepTop2 {
-  width: 100%;
-  /* border-radius: 10px; */
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: nowrap;
-  background: #fff;
-  /* top: 18%; */
-  height: 20px;
-  border-bottom: 2px solid rgb(228, 232, 237);
-  box-sizing: border-box;
-  overflow: hidden;
-  cursor: pointer;
-}
-
-.stepTop>div img {
-  width: 100%;
-}
-
-.stepTop>div {
-  height: 50px;
-  width: 180px;
-  cursor: pointer;
-  margin: 10px 0;
-  border-radius: 10px;
-}
-
-.first,
-.second,
-.third,
-.four {
-  background: #3681fc;
-  height: 90px;
-  color: #fff;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-}
-
-.first>div:nth-child(1),
-.second>div:nth-child(1),
-.third>div:nth-child(1),
-.four>div:nth-child(1) {
-  margin: 5px 10px 0 0;
-  width: 2rem;
-}
-
-.firstNo,
-.secondNo,
-.thirdNo,
-.fourNo {
-  background: #e7e7e7;
-  color: #adadad;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-}
-
-.firstNo>div:nth-child(1),
-.secondNo>div:nth-child(1),
-.thirdNo>div:nth-child(1),
-.fourNo>div:nth-child(1) {
-  margin: 5px 10px 0 0;
-  width: 2rem;
-}
-
-.uploadWidth>>>.el-upload {
-  width: 60px;
-  height: 60px;
-  position: relative;
-}
-
-.addPeople {
-  background: #fa6060;
-  width: 150px;
-  height: 40px;
-  color: #fff;
-  border-radius: 5px;
-  text-align: center;
-  line-height: 40px;
-  font-size: 14px;
-  cursor: pointer;
-}
-
-.kcImg {
-  width: 60px;
-  margin-left: 10px;
-}
-
-.zyImg {
-  width: 55px;
-  margin: 0 10px;
-}
-
-.deleteZy {
-  width: 20px;
-  position: absolute;
-  top: 5px;
-  right: 5px;
-  cursor: pointer;
-}
-
-.kcImg>img,
-.zyImg>img,
-.deleteZy>img {
-  width: 100%;
-  height: 100%;
-}
-
-.zyBox {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  background: #67d37d;
-  color: #fff;
-  width: 210px;
-  margin: 20px 20px 0 0;
-  border-radius: 10px;
-  height: 70px;
-  position: relative;
-}
-
-.upCss {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-}
-
-.upCss>>>.el-icon-plus {
-  position: none !important;
-  width: 200px;
-  height: 100px;
-  display: flex;
-  flex-wrap: nowrap;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  border: 1px dashed #ccc;
-  min-width: 78px;
-  min-height: 100px;
-  z-index: 999;
-}
-
-.upCss>>>.el-upload-list__item-name {
-  width: 100px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.upCss>>>.el-upload-list__item .el-icon-close {
-  font-size: 20px;
-  z-index: 9999;
-}
-
-.addStageImg {
-  min-width: 20px;
-  min-height: 20px;
-  width: 20px;
-  height: 20px;
-  cursor: pointer;
-}
-
-.addHW {
-  width: 28px;
-  height: 28px;
-  cursor: pointer;
-}
-
-.addStageImg>img,
-.addHW>img {
-  width: 100%;
-  height: 100%;
-}
-
-.addNewPP>>>.el-dialog__body {
-  padding: 5px 20px;
-}
-
-.addNewPP>>>.el-dialog {
-  margin-top: 5vh !important;
-}
-
-.addNewPP2>>>.el-dialog__body {
-  padding: 5px 0;
-}
-
-.addNewPP2>>>.el-dialog {
-  margin-top: 5vh !important;
-}
-
-.isHeight {
-  height: 680px;
-}
-
-.toolChoose {
-  display: flex;
-  /* width: 100%; */
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.tool,
-.isToolChoose {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  width: fit-content;
-  margin: 10px 0 10px 0;
-  align-items: center;
-  border: 2px solid #dbdbdb00;
-  padding: 10px 20px;
-  border-radius: 5px;
-  cursor: pointer;
-  /* box-shadow: 0 0 2px 0px #dedede; */
-  position: relative;
-  box-sizing: border-box;
-}
-
-.tool:hover {
-  border: 2px solid #a5c7ff;
-}
-
-.tool:hover>.noCTool {
-  display: block;
-  opacity: 0.5;
-}
-
-.isToolChoose {
-  border: 2px solid #438aff !important;
-  box-shadow: 0 0 2px 0px #438aff;
-  opacity: 1 !important;
-}
-
-.isCTool,
-.noCTool {
-  width: 30px;
-  height: 30px;
-  position: absolute;
-  top: -4px;
-  right: -4px;
-}
-
-.noCTool {
-  display: none;
-}
-
-.isCTool>img,
-.noCTool>img {
-  width: 100%;
-  height: 100%;
-}
-
-.tool+.tool {
-  margin-right: 10px;
-}
-
-.whiteBIcon {
-  width: 80px;
-  cursor: pointer;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  font-size: 14px;
-}
-
-.whiteBIcon>img,
-.toolIcon>img,
-.arrow>img {
-  width: 100%;
-  height: 100%;
-}
-
-.check img {
-  width: 20px;
-  height: 20px;
-}
-
-.whiteBIcon>img {
-  box-shadow: 0px 4px 8px 0px rgb(44 133 255 / 14%);
-  border-radius: 15px;
-}
-
-.whiteBIcon>div:nth-child(2) {
-  height: 20px;
-  line-height: 20px;
-}
-
-.check {
-  /* width: 20px;
-  height: 20px; */
-  cursor: pointer;
-  margin: 10px 0 0;
-}
-
-.checkDiv {
-  display: flex;
-  align-items: center;
-}
-
-.checkDiv span {
-  margin-left: 5px;
-  color: #858585;
-}
-
-.customWidth>>>.el-dialog {
-  min-width: 600px !important;
-}
-
-.CollaborativeCss {
-  width: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  box-sizing: border-box;
-  padding: 10px 0;
-  cursor: pointer;
-}
-
-.CollaborativeCss >>> .el-tooltip {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-.CollaborativeCss2 {
-  background: #e0eafb;
-  color: #3681fc;
-  font-weight: 700;
-  border-radius: 5px;
-}
-
-
-.a_addBox {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-  /* max-height: 600px; */
-  overflow: auto;
-}
-
-.a_add_box {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 25px;
-}
-
-.a_add_head {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  margin: 10px 0 0 0;
-  font-size: 18px;
-}
-
-.a_add_checkType {
-  margin-top: 10px;
-  display: flex;
-  font-size: 14px;
-  align-items: center;
-}
-
-.a_add_checkType span {
-  box-sizing: border-box;
-  padding: 0 0 5px 0;
-  cursor: pointer;
-}
-
-.a_add_checkType span+span {
-  margin-left: 10px;
-}
-
-.a_add_checkType .active {
-  border-bottom: 2px solid #409eff;
-  color: #409eff;
-}
-
-.a_add_head .a_add_head_input {
-  /* width: 540px; */
-  width: 100%;
-}
-
-.a_add_head .a_add_head_div {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.a_add_body {
-  display: flex;
-  /* align-items: center; */
-  align-items: flex-end;
-}
-
-.a_add_input {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-}
-
-.a_add_input_choice {
-  flex-direction: column;
-  margin-right: 10px;
-}
-
-.a_add_input_choice>>>.el-radio {
-  display: flex;
-  align-items: center;
-  flex-direction: row-reverse;
-  margin: 30px 0 0 0;
-  position: relative;
-}
-
-.a_add_input_choice>>>.el-checkbox {
-  display: flex;
-  align-items: center;
-  flex-direction: row-reverse;
-  margin: 30px 0 0 0;
-  position: relative;
-}
-
-.width100 {
-  width: 100%;
-}
-
-.a_add_input .a_add_persent {
-  width: 100%;
-}
-
-.a_add_persent_div {
-  width: 100%;
-  display: flex;
-  align-items: center;
-}
-
-.a_add_persent_div span {
-  margin: 5px 0;
-}
-
-.a_add_persent_div span:nth-child(1) {
-  width: 30%;
-}
-
-.a_add_persent_div span:nth-child(2) {
-  width: 7%;
-}
-
-.a_add_persent_div span:nth-child(3) {
-  width: 40%;
-}
-
-.a_add_body_div {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  /* flex-direction: column; */
-  position: absolute;
-  right: -20px;
-  transform: translateX(100%);
-}
-
-.a_add_body_div>>>.el-button--primary {
-  background: #466b99;
-  border: none;
-}
-
-.all_choose {
-  display: flex;
-  flex-direction: row;
-  align-items: flex-start;
-  width: 100%;
-}
-
-.all_choose+.all_choose {
-  /* margin-top: 10px */
-}
-
-.all_choose>span {
-  min-width: fit-content;
-  display: block;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  margin-right: 20px;
-  font-weight: bold;
-  font-size: 14px;
-}
-
-.all_choose>>>.el-checkbox-group {
-  display: flex;
-  flex-direction: row;
-  width: 100%;
-  flex-wrap: wrap;
-  align-content: center;
-  justify-content: flex-start;
-  align-items: center;
-  margin-top: 3px;
-}
-
-.all_choose>.el-checkbox-group>>>.el-checkbox {
-  margin-bottom: 10px;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  margin-right: 10px;
-}
-
-.all_choose>.el-checkbox-group>.el-checkbox>>>.el-checkbox__label {
-  min-width: 80px;
-  overflow: hidden;
-  width: 80px;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.all_choose>.el-checkbox-group>.el-checkbox>>>.el-checkbox__label:hover {
-  width: auto;
-}
-
-.choose>div:nth-child(3)>span {
-  /* letter-spacing: 0 !important; */
-}
-
-.choose {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  height: 100%;
-  justify-content: space-evenly;
-  align-items: flex-start;
-}
-
-.both {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  width: 100%;
-  align-items: center;
-  justify-content: flex-start;
-  margin: 15px 0;
-}
-
-.notice>>>.el-dialog {
-  width: 500px !important;
-  text-align: center;
-}
-
-.notice>>>.el-button {
-  margin-top: 20px;
-}
-
-.whiteBg {
-  /* background: #fff; */
-  border-radius: 10px;
-}
-
-.wb_j_box {
-  display: flex;
-  width: 100%;
-  padding: 0 20px 0;
-  box-sizing: border-box;
-}
-
-.wb_j_box_content {
-  width: calc(100% - 55% - 100px);
-  display: flex;
-  align-items: center;
-}
-
-.wb_j_box_p_box {
-  max-width: calc(100% - 200px);
-  word-break: break-all;
-  overflow: hidden;
-  margin: 0 0 0 10px;
-  font-size: 14px;
-  color: #6e6e6e;
-  z-index: 999;
-}
-
-.chooseWho {
-  display: flex;
-  width: 410px;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: space-between;
-  padding-bottom: 10px;
-}
-
-.chooseWho>div {
-  cursor: pointer;
-  padding-bottom: 10px;
-  font-weight: bold;
-}
-
-.isChooseActive {
-  color: #3e88f4;
-  border-bottom: 2px solid #2f80f3;
-}
-
-.toolSort {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  justify-content: flex-start;
-  align-items: flex-start;
-}
-
-.toolSort>div {
-  margin-right: 10px;
-}
-
-.tools {
-  width: 100%;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-}
-
-.leftTools,
-.rightTools {
-  width: 50%;
-}
-
-.leftTools+.leftTools {
-  border-top: 1px solid #dbdbdb;
-  padding-top: 30px;
-}
-
-.rightTools {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: space-around;
-}
-
-.firstToolList {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.iconList {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  justify-content: flex-start;
-  align-items: center;
-  margin: 20px 0 5px 0;
-  width: 240px;
-  min-width: 240px;
-}
-
-.iconTool {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  justify-content: flex-start;
-  margin: 15px 10px;
-}
-
-.toolIcon {
-  width: 50px;
-}
-
-.taskBorder {
-  /* border: 1px solid #CAD1DC; */
-  border-radius: 10px;
-  margin-top: 10px;
-  min-height: 670px;
-  position: relative;
-  background: #fff;
-  padding: 20px;
-  overflow: hidden;
-  box-sizing: border-box;
-}
-
-.smallTaskBorder {
-  height: 405px;
-  min-height: 405px !important;
-  overflow: hidden;
-}
-
-/* .taskBorder>div {
-  padding: 30px 30px 10px;
-} */
-
-.addTaskBorder {
-  /* border: 2px solid #5E9AFC; */
-  border-radius: 8px;
-  margin-top: 10px;
-  cursor: pointer;
-  /* height: 50px;
-  line-height: 50px; */
-  background: #fff;
-  padding: 15px 0;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-/* .addTaskBorder>div {
-  margin: 0 auto;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.addTaskBorder>div>img {
-  width: 20px;
-}
-
-.addTaskBorder>div>span {
-  font-size: 16px;
-  margin-left: 10px;
-  color: #5E9AFC;
-} */
-
-.funBlock {
-  display: flex;
-  padding: 15px 0;
-  flex-direction: row;
-  justify-content: center;
-  align-items: center;
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  background: #fff;
-  width: 100%;
-  height: 60px;
-  z-index: 9;
-}
-
-.fold {
-  display: flex;
-  margin: 0 20px;
-  flex-direction: row;
-  align-items: center;
-  cursor: pointer;
-  color: #2b7bff;
-}
-
-.arrow {
-  margin-right: 8px;
-  width: 16px;
-  height: 16px;
-  min-width: 16px;
-  min-height: 16px;
-  background-size: 100% 100%;
-  display: block;
-  background-image: url(../../../assets/icon/new/u_up.png);
-  /* border-left: 7px solid transparent;
-  border-bottom: 7px solid #717C8D;
-  border-top: 0px solid transparent;
-  border-right: 7px solid transparent; */
-  /* box-sizing: border-box; */
-  transition: all 0.3s;
-}
-
-.arrowZ {
-  transform: rotate(180deg);
-}
-
-.addToolFun {
-  display: flex;
-  width: 150px;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-  border: 2px dashed #cad1dc;
-  border-radius: 5px;
-  height: 50px;
-  margin: 35px auto 0;
-  cursor: pointer;
-}
-
-.addToolFun2 {
-  display: flex;
-  width: 150px;
-  border: 2px dashed #cad1dc;
-  flex-direction: row;
-  align-items: center;
-  justify-content: center;
-  border-radius: 5px;
-  height: 50px;
-  margin: 0 auto 0;
-  cursor: pointer;
-}
-
-.addToolFun2>div,
-.addToolFun>div {
-  display: flex;
-  line-height: 50px;
-}
-
-.addToolImg {
-  width: 20px;
-  height: 20px;
-  margin-right: 10px;
-}
-
-.addToolsDia>>>.el-dialog__body {
-  padding: 20px;
-}
-
-.addToolsDia>>>.el-dialog__body>.toolChoose {
-  padding: 0;
-}
-
-.addToolsDia>>>.el-dialog__body>.toolChoose>.leftTools {
-  padding: 0;
-  border-bottom: none;
-  margin-bottom: 0;
-}
-
-.addToolsDia>>>.el-dialog__body>.toolChoose>.leftTools>.chooseWho {
-  width: 100%;
-}
-
-.lineCss>>>.el-form-item__label {
-  width: auto !important;
-}
-
-.lineCss>>>.el-form-item__content {
-  margin-left: 50px !important;
-}
-
-.newSteps {
-  display: flex;
-  width: 100% !important;
-  /* height: 80px; */
-  cursor: pointer;
-  margin: 10px 0;
-  border-radius: 10px;
-  flex-direction: row;
-  align-content: center;
-  justify-content: center;
-  align-items: center;
-  margin: 0 !important;
-}
-
-/* 评价样式 */
-.elist_css {
-  padding-bottom: 75px !important;
-}
-
-.elist_title {
-  margin-bottom: 10px;
-}
-
-.elist_input {
-  width: 100%;
-}
-
-.elist_input_box {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-}
-
-.elist_input_box+.elist_input_box {
-  margin-top: 30px;
-}
-
-.elist_input .elist_input_box input {
-  font: inherit;
-  color: currentColor;
-  width: 100%;
-  /* max-width: calc(100% - 385px); */
-  max-width: calc(100% - 150px);
-  padding: 8px 14px;
-  display: block;
-  min-width: 0;
-  outline: none;
-  border: 1px solid rgba(0, 0, 0, 0.23);
-  border-radius: 4px;
-  box-sizing: border-box;
-  background: #fff;
-  margin: 0 20px 0 0;
-}
-
-.elist_input .elist_input_box span {
-  height: 36px;
-  line-height: 36px;
-  color: rgb(82, 82, 82);
-  min-width: 80px;
-}
-
-.elist_input .elist_input_box .remove {
-  height: 20px;
-  width: 20px;
-  min-height: 20px;
-  min-width: 20px;
-  background-size: 100% 100%;
-  background-position: unset;
-  margin-left: 5px;
-}
-
-.elist_input_box>>>.el-rate {
-  display: flex;
-  height: 36px;
-  align-items: center;
-}
-
-.elist_input_box .elist_inptu_text {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  margin-top: 10px;
-}
-
-.elist_input_box .elist_inptu_text input {
-  /* width: 500px; */
-  width: 100%;
-  max-width: unset;
-}
-
-.elist_input_box>>>.el-rate__icon {
-  font-size: 24px;
-}
-
-.elist_btn {
-  margin-top: 10px;
-}
-
-.lineTitle {
-  /* margin-top: 15px; */
-  width: 110px;
-  font-size: 16px;
-  display: flex;
-  align-items: center;
-  line-height: 20px;
-}
-
-.lineTitle::before {
-  content: "";
-  display: block;
-  width: 3px;
-  height: 20px;
-  background: #0061ff;
-  border-radius: 3px;
-  margin: 0 5px 0 0;
-}
-
-.clineTitle::before {
-  content: "";
-  display: block;
-  min-width: 10px;
-  width: 10px;
-  height: 10px;
-  background: #0061ff;
-  border-radius: 50%;
-  margin: 0 5px 0 0;
-}
-
-.courseTop {
-  display: flex;
-  flex-direction: row;
-  justify-content: space-between;
-  align-items: center;
-  width: calc(100% - 40px);
-  margin: 0 auto;
-  padding: 10px 0;
-}
-
-.stepsNav {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-
-.stepsWord {
-  font-size: 18px;
-  color: #fff;
-  font-weight: bold;
-  margin-left: auto;
-  background: rgb(15, 126, 255);
-  border-radius: 5px;
-  padding: 3px 25px;
-  box-sizing: border-box;
-}
-
-.stepBox {
-  width: calc(100% - 40px);
-  height: calc(100% - 50px);
-  overflow: hidden;
-  border-radius: 5px;
-  margin: 0 auto;
-}
-
-.rightBox {
-  width: calc(100%);
-  background: #f0f2f5;
-  /* border-radius: 10px; */
-  overflow: auto;
-  height: calc(100% - 150px);
-  margin: 0 auto;
-  position: relative;
-  box-sizing: border-box;
-}
-
-.e_add_top {
-  display: flex;
-  justify-content: space-between;
-  background: #fff;
-  position: absolute;
-  right: 20px;
-  height: 50px;
-  align-items: center;
-}
-
-.e_add_title2 {
-  display: flex;
-  align-items: center;
-}
-
-.e_add_title2 span {
-  width: 40px;
-}
-
-.e_add_title {
-  display: flex;
-  align-items: center;
-  color: #b8b8b8;
-  font-size: 18px;
-  position: relative;
-  height: 40px;
-}
-
-.e_add_title span {
-  margin-right: 10px;
-}
-
-.e_add_title .el_input {
-  width: 300px;
-}
-
-.e_add_title>>>.el-input__inner {
-  width: 400px;
-}
-
-.e_add_btn {}
-
-.e_add_content {
-  display: flex;
-  width: 100%;
-}
-
-.e_add_list {
-  background: #fff;
-  height: 500px;
-  width: 210px;
-  position: relative;
-  margin: 15px 5px 0 0;
-  flex-shrink: 0;
-  display: flex;
-  flex-direction: column;
-}
-
-.e_add_list_title {
-  font-size: 20px;
-  width: 100%;
-  box-sizing: border-box;
-  padding: 15px 40px;
-  text-align: center;
-  border-bottom: 1px solid #eaeaea;
-  position: relative;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  height: 57px;
-  background: #f6f6f6;
-}
-
-.e_add_list_title span {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-
-.e_add_list_title img {
-  position: absolute;
-  right: 15px;
-  width: 25px;
-  cursor: pointer;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.e_add_list_body {
-  height: calc(100% - 187px);
-  overflow: auto;
-}
-
-.e_add_list_child {
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  position: relative;
-  box-sizing: border-box;
-  padding: 15px 40px;
-  text-align: center;
-}
-
-.e_add_list_child span {
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  cursor: pointer;
-}
-
-.e_add_list_child img {
-  position: absolute;
-  right: 10px;
-  width: 21px;
-  cursor: pointer;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.e_add_list_child+.e_add_list_child {
-  border-top: 1px solid #eaeaea;
-}
-
-.e_add_list_child .active {
-  color: #409eff;
-}
-
-.e_add_list_btn {
-  position: absolute;
-  bottom: 0;
-  height: 50px;
-  background: rgb(120, 120, 254);
-  width: 100%;
-  color: #fff;
-  font-size: 16px;
-  text-align: center;
-  line-height: 50px;
-  cursor: pointer;
-}
-
-.e_add_list_detail {
-  position: absolute;
-  bottom: 0;
-  height: 130px;
-  background: rgb(120, 120, 254);
-  width: 100%;
-  color: #fff;
-  font-size: 16px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.e_add_list_detail textarea {
-  height: 90%;
-  width: 95%;
-  border: none;
-  resize: none;
-  outline: none;
-  padding: 5px;
-  box-sizing: border-box;
-}
-
-.e_add_list_pbox {
-  width: 100%;
-}
-
-.e_add_list_pbox_title {
-  height: 50px;
-  background: #fff;
-  display: flex;
-  align-items: center;
-  width: 100%;
-  box-sizing: border-box;
-  padding: 0 20px;
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.type_title {
-  font-size: 18px;
-  font-weight: 700;
-}
-
-.type_content {
-  font-size: 16px;
-  margin-left: 30px;
-}
-
-.type_content span+span {
-  margin-left: 20px;
-}
-
-.type_content span {
-  cursor: pointer;
-  padding-bottom: 5px;
-  box-sizing: border-box;
-}
-
-.type_content .active {
-  color: #409eff;
-  border-bottom: 2px solid #409eff;
-}
-
-.e_add_list_pbox_content {
-  height: calc(100% - 50px);
-  display: flex;
-  align-items: center;
-  width: 100%;
-  background: #fff;
-}
-
-.mbCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-content: center;
-  align-items: flex-start;
-  justify-content: flex-start;
-}
-
-.pjCss {
-  /* width: 42%; */
-  width: calc(100% - 55%);
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-}
-
-.e_box {
-  /* display: flex; */
-  flex-wrap: wrap;
-  max-height: 500px;
-  align-items: flex-start;
-  overflow: auto;
-  width: 100%;
-}
-
-.e_card {
-  border: 1px solid #ccc;
-  background: #fff;
-  margin-right: 20px;
-  width: 270px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  border-radius: 5px;
-  margin-top: 10px;
-  text-align: center;
-}
-
-.e_card_picture {
-  margin: 10px 0;
-}
-
-.e_card_picture>img {
-  width: 50px;
-}
-
-.e_card_name {
-  width: 100%;
-  padding: 0 10px;
-  box-sizing: border-box;
-  margin-bottom: 10px;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.e_card_time {
-  width: 100%;
-  padding: 0 10px;
-  box-sizing: border-box;
-  font-size: 15px;
-  color: #c3c3c3;
-  margin-bottom: 10px;
-}
-
-.e_card_btn {
-  height: 40px;
-  display: flex;
-  align-items: center;
-  width: 100%;
-  background: rgb(244, 244, 244);
-}
-
-.e_card_btn:hover {
-  background: rgb(221 221 221);
-}
-
-.e_card_btn span {
-  flex: 1 1 auto;
-  text-align: center;
-  cursor: pointer;
-}
-
-.addEva {
-  border: 1px solid #ccc;
-  background: #fff;
-  margin-right: 20px;
-  width: 270px;
-  height: 149px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  border-radius: 5px;
-  margin-top: 10px;
-  text-align: center;
-  cursor: pointer;
-  justify-content: center;
-}
-
-.addEva>img {
-  width: 50px;
-  object-fit: cover;
-}
-
-.uploadFm {
-  border: 1px dashed #ccc;
-  width: 100%;
-  height: 140px;
-  position: relative;
-  cursor: pointer;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  font-size: 14px;
-  color: #6e6e6e;
-  position: relative;
-}
-
-.cover_p {
-  width: 100% !important;
-  height: 100%;
-  object-fit: cover;
-}
-
-.uploadFm2:hover .cover_mask {
-  display: flex !important;
-}
-
-.cover_mask {
-  display: none;
-  width: 100%;
-  height: 100%;
-  position: absolute;
-  background: #00000054;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-}
-
-.cover_mask>img {
-  width: 30px;
-}
-
-.cover_mask>span {
-  color: #fff;
-  font-size: 12px;
-}
-
-.uploadFm>img {
-  width: 50px;
-}
-
-.fileCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: space-around;
-  align-items: center;
-  padding-top: 15px;
-}
-
-.fileCss>div {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.fileCss .spanName {
-  margin-top: 10px;
-}
-
-.sysPicBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  align-content: flex-start;
-  height: 435px;
-  overflow: auto;
-  position: relative;
-}
-
-.picNone {
-  position: absolute;
-  left: 50%;
-  top: 45%;
-  transform: translate(-50%, -50%);
-  width: fit-content;
-  color: #9c9c9c;
-}
-
-.sysPic {
-  width: 200px;
-  height: 115px;
-  margin: 0 20px 20px 0;
-  cursor: pointer;
-}
-
-.sysPic>img,
-.isSysPic>img,
-.deletePic>img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.isSysPic {
-  width: 200px;
-  height: 115px;
-  position: relative;
-}
-
-.deletePic {
-  width: 20px;
-  height: 20px;
-  position: absolute;
-  top: 0;
-  right: 0;
-  cursor: pointer;
-}
-
-.select_box1 {
-  height: 100%;
-}
-
-.select_box1_img {
-  background: #fff;
-  border-radius: 5px;
-  padding: 15px;
-  box-sizing: border-box;
-  margin-bottom: 20px;
-}
-
-.select_box1_title {
-  padding: 0 0 15px 0;
-  border-bottom: 1px solid #eee;
-  margin-bottom: 15px;
-}
-
-.select_box1_title span:nth-child(1) {
-  font-size: 16px;
-  margin-right: 20px;
-  color: #000;
-}
-
-.select_box1_title span:nth-child(2) {
-  font-size: 14px;
-  color: rgb(112, 112, 112);
-}
-
-.select_box1_add_img {}
-
-.select_box1_select {
-  background: #fff;
-  border-radius: 5px;
-  padding: 15px;
-  box-sizing: border-box;
-  height: calc(100% - 200px);
-  overflow: auto;
-}
-
-.select_box2 {
-  height: 100%;
-}
-
-.select_box2_title {
-  background: #fff;
-  border-radius: 5px;
-  padding: 5px 10px;
-  box-sizing: border-box;
-  margin-bottom: 10px;
-}
-
-.select_box2_box {
-  display: flex;
-  height: calc(100% - 30px);
-}
-
-.select_box2_img {
-  width: calc(100% - 310px);
-  height: 100%;
-  overflow: auto;
-  background: #fff;
-  border-radius: 5px;
-}
-
-.select_box2_img img {
-  width: 100%;
-}
-
-.select_box2_answer {
-  background: #fff;
-  margin-left: 10px;
-  border-radius: 5px;
-  width: 300px;
-  overflow: auto;
-  height: 100%;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  padding-top: 10px;
-  box-sizing: border-box;
-}
-
-.select_box2_answer_box {
-  margin: 0 0 10px 0;
-  width: 85%;
-}
-
-.rate_textarea {
-  font: inherit;
-  color: currentColor;
-  width: 100%;
-  padding: 8px 14px;
-  display: block;
-  min-width: 0;
-  outline: none;
-  border: 1px solid rgba(0, 0, 0, 0.23);
-  border-radius: 4px;
-  box-sizing: border-box;
-  background: #fff;
-  margin: 0 20px 0 0;
-  resize: none;
-}
-
-.select_answer_title {
-  text-align: left;
-  width: 85%;
-  margin-bottom: 10px;
-  font-size: 18px;
-  color: #8e8e8e;
-}
-
-.mask {
-  background-color: rgb(0 0 0 / 30%);
-  /* position: fixed; */
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  z-index: 90;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.progressBox {
-  width: 300px;
-  height: 150px;
-  background: #fff;
-  border-radius: 10px;
-  box-shadow: 0 0 6px 1px #bfbfbf;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-  position: relative;
-  color: #6c6c6c;
-}
-
-.progressBox>>>.el-progress-bar__outer {
-  background-color: #d1dfff !important;
-}
-
-.progressBox .lbox {
-  height: 50px;
-  font-size: 19px;
-  display: flex;
-  align-items: center;
-  color: #747474;
-}
-
-.progressBox .lbox img {
-  width: 40px;
-  margin-right: 20px;
-}
-
-.closeCss {
-  position: absolute;
-  top: 8px;
-  right: 8px;
-  cursor: pointer;
-  width: 20px;
-  height: 20px;
-}
-
-.closeCss>img {
-  width: 100%;
-  height: 100%;
-}
-
-.updateTips::before {
-  content: "协同编辑课程暂不支持修改基本信息,只支持修改阶段内容。";
-  font-size: 14px;
-  margin-left: 20px;
-  font-weight: 400;
-  color: #ff3a3a;
-  margin-bottom: 10px;
-  display: block;
-}
-
-.updateMask {
-  width: 100%;
-  z-index: 3;
-  top: 0;
-  position: absolute;
-  /* background-color: rgba(0,0,0,.3); */
-}
-
-.t_j_box {
-  display: flex;
-}
-
-.t_j_box span:nth-child(1) {
-  width: 15%;
-  overflow: hidden;
-  margin-right: 10px;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.t_j_box span:nth-child(2) {
-  width: 30%;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  margin-right: 10px;
-}
-
-.t_j_box span:nth-child(3) {
-  max-width: calc(55% - 20px);
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.sentenBox {
-  background: #fff;
-  height: 600px;
-  overflow: auto;
-  background-image: url("../../../assets/icon/conSentences/csBg.png");
-  background-position: 102%;
-  background-repeat: no-repeat;
-  background-size: 60%;
-}
-
-.sentenBox>.sentenContent {
-  padding-bottom: 10px;
-  width: 97%;
-  margin: 0 auto;
-}
-
-.sentenBox>.sentenContent+.sentenContent {
-  border-top: 1px solid #cbcbcb;
-}
-
-.addSen {
-  background: #409efe;
-  width: 90px;
-  color: #fff;
-  height: 35px;
-  text-align: center;
-  line-height: 35px;
-  border-radius: 5px;
-  float: right;
-  margin: 10px 20px 0 0;
-  cursor: pointer;
-}
-
-.sentenTop {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.sentenTop::before {
-  content: attr(index);
-  background: #3681fc;
-  border-radius: 50%;
-  color: #fff;
-  width: 25px;
-  height: 25px;
-  min-width: 25px;
-  min-height: 25px;
-  text-align: center;
-  line-height: 25px;
-  margin-right: 5px;
-}
-
-.sentenTop>div:nth-child(2) {
-  width: 300px;
-  margin: 0 15px;
-}
-
-.sentenTop>div:nth-child(3) {
-  background: #409efe;
-  color: #fff;
-  width: 65px;
-  height: 35px;
-  text-align: center;
-  line-height: 35px;
-  border-radius: 5px;
-  cursor: pointer;
-}
-
-.cardList {
-  padding: 30px 0 20px 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  align-items: center;
-  box-sizing: border-box;
-  border-bottom: 1px solid #f4f4f4;
-  width: 98%;
-  margin: 0 auto;
-}
-
-.rightCardList {
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.cardBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-  align-items: center;
-  align-content: center;
-}
-
-.isCard,
-.isCard1 {
-  width: auto;
-  padding: 0 20px;
-  height: 65px;
-  text-align: center;
-  line-height: 65px;
-  font-size: 14px;
-  cursor: pointer;
-  background-image: url("../../../assets/icon/conSentences/titleBorder.png");
-  background-size: 100% 100%;
-  position: relative;
-  z-index: 99;
-}
-
-.isCard1 {
-  background-image: url("../../../assets/icon/conSentences/answerBorder.png");
-}
-
-.isCard:hover .deleteWord {
-  display: block;
-}
-
-.isCard>div:nth-child(1),
-.isCard1>div:nth-child(1) {
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  width: 100%;
-  margin: 0 auto;
-}
-
-.card {
-  width: 140px;
-  height: 65px;
-}
-
-.card>img {
-  width: 100%;
-  height: 100%;
-}
-
-.rightCardBox {
-  width: 98%;
-  margin: 10px auto 0;
-}
-
-.rightCardBox>div:nth-child(1) {
-  margin-bottom: 10px;
-}
-
-.cardCss {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  border-bottom: 3px solid #b4c3d3;
-  padding: 0 0 5px 0;
-  /* margin-right: 10px; */
-}
-
-.cardCss>div:nth-child(2) {
-  background: #5b7b9d;
-  color: #fff;
-  width: 20px;
-  height: 20px;
-  border-radius: 50%;
-  text-align: center;
-  line-height: 20px;
-}
-
-.sentenTopBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  justify-content: space-between;
-  padding: 55px 0 0 20px;
-  box-sizing: border-box;
-  width: 85%;
-}
-
-.rb_c_ai_box,
-.stepsBottom {
-  width: 100%;
-  /* box-shadow: 0 0 10px 10px #f7f7f7; */
-  /* background: #f7f7f7; */
-  border-radius: 10px;
-  overflow: hidden;
-  /* height: 100%; */
-  height: calc(100% - 55px);
-}
-
-.navTop {
-  background: #53749b;
-  color: #fff;
-  height: 40px;
-  line-height: 40px;
-  padding-left: 15px;
-  font-size: 18px;
-}
-
-.navBottom {
-  /* background: #6b91b7; */
-  height: 100%;
-  overflow: auto;
-  padding: 10px 0;
-}
-
-.navStage {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  padding: 10px 10px 10px 0;
-  cursor: pointer;
-  background: #ffffff;
-  width: 95%;
-  margin: 5px auto 5px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  flex-wrap: wrap;
-  position: relative;
-}
-
-.navStage:hover>.chapter_upload_drag {
-  display: block;
-}
-
-.navTask:hover>.chapter_upload_drag {
-  display: block;
-}
-
-.chapter_upload:hover>.chapter_upload_drag {
-  display: block;
-}
-
-.navStage::before {
-  content: "";
-  display: block;
-  width: 16px;
-  height: 16px;
-  background-image: url(../../../assets/icon/new/icon_stage.png);
-  background-size: 100%;
-  margin-left: 25px;
-}
-
-.navStage .chapter_unit_open {
-  content: "";
-  display: block;
-  width: 16px;
-  height: 16px;
-  background-image: url(../../../assets/icon/new/down.png);
-  transform: rotate(-90deg);
-  background-size: 100%;
-  margin-left: 10px;
-  transition: all 0.5s;
-}
-
-.isNavStageOpen .chapter_unit_open {
-  transform: rotate(0deg);
-}
-
-.isNavStage {
-  background: #0061ff;
-}
-
-.isNavStage::before {
-  background-image: url(../../../assets/icon/new/icon_stage_a.png);
-}
-
-.isNavStage .chapter_unit_open {
-  background-image: url(../../../assets/icon/new/downC.png);
-}
-
-.isNavStage .nt_taskName {
-  font-weight: bold !important;
-  color: #ffffff !important;
-}
-
-.isNavStage .nt_taskTitle {
-  font-weight: bold !important;
-  color: #fff !important;
-}
-
-.navStage .nt_taskBox {
-  width: calc(100% - 68px);
-  padding: 0 0 0 5px;
-  box-sizing: border-box;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.navStage .nt_taskTitle {
-  color: #060e17;
-  line-height: 25px;
-  font-size: 16px;
-}
-
-.navStage .nt_taskName {
-  max-width: calc(100% - 82px);
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 16px;
-  color: #060e17;
-}
-
-.navTask {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  padding: 10px 10px 10px 0;
-  cursor: pointer;
-  background: #ffffff;
-  width: 95%;
-  margin: 5px auto 5px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  flex-wrap: wrap;
-  position: relative;
-}
-
-.navTask .chapter_upload_open {
-  content: "";
-  display: block;
-  width: 16px;
-  height: 16px;
-  background-image: url(../../../assets/icon/new/icon_arrow.png);
-  background-size: 100%;
-  margin-left: 23px;
-}
-
-.noImage .chapter_upload_open {
-  display: none;
-  background-image: unset !important;
-}
-
-.isNavOpen .chapter_upload_open {
-  /* background-image: url(../../../assets/icon/new/icon_arrow_a.png) !important; */
-  transform: rotate(90deg);
-}
-
-.isNavTask .chapter_upload_open {
-  background-image: url(../../../assets/icon/new/icon_arrow_a.png) !important;
-  transform: rotate(-90deg);
-}
-
-.isNavTask.isNavOpen .chapter_upload_open {
-  transform: rotate(0deg);
-}
-
-.dragOverTop {
-  border-top: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-  margin-top: 10px;
-}
-
-.dragOverBottom {
-  border-bottom: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-  margin-top: 10px;
-}
-
-.dragOverTop2 {
-  border-top: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-}
-
-.dragOverBottom2 {
-  border-bottom: 2px solid #0061ff !important;
-  border-radius: 0 !important;
-}
-
-.isNavTask {
-  /* background: #3681FC; */
-  background: #eef3fb;
-}
-
-.isNavTask>.chapter_upload_drag {
-  background-image: url(../../../assets/icon/new/icon_course_drag_active.png) !important;
-}
-
-.isNavTask .nt_taskName {
-  /* color: #fff !important; */
-  font-weight: bold !important;
-  color: #0061ff !important;
-}
-
-.isNavTask .nt_taskTitle {
-  /* color: #AECCFE !important; */
-  font-weight: bold !important;
-  color: #0061ff !important;
-}
-
-.navTask .nt_taskBox {
-  width: calc(100% - 40px);
-  padding: 0 0 0 5px;
-  box-sizing: border-box;
-  box-sizing: border-box;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.navTask .nt_taskTitle {
-  /* color: #717C8D; */
-  color: #060e17;
-  line-height: 25px;
-  font-size: 16px;
-  /* min-width: 66px; */
-}
-
-.navTask .nt_taskName {
-  /* color: #fff; */
-  /* max-width: 130px; */
-  /* width: 100%; */
-  max-width: calc(100% - 66px);
-  font-size: 16px;
-  color: #060e17;
-  /* color: #0E1E33; */
-}
-
-.navTask .nt_taskName span {
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  display: block;
-}
-
-.gjBox {
-  width: calc(100% - 25px);
-  padding: 0 0 0 0;
-  box-sizing: border-box;
-  border-left: 1px solid #cad1dc;
-  margin-left: 25px;
-}
-
-.gjBox>div {
-  display: flex;
-  align-items: center;
-}
-
-.gjBox>div::before {
-  content: "";
-  height: 1px;
-  width: 10px;
-  background: #cad1dc;
-  display: block;
-  margin-right: 5px;
-}
-
-.gjCss {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  padding: 15px 0;
-  box-sizing: border-box;
-  font-size: 14px;
-  cursor: pointer;
-}
-
-.isGjCss {
-  color: #0061ff;
-}
-
-.groupBox {}
-
-.groupContent+.groupContent {
-  margin-top: 30px;
-}
-
-.groupTitle {
-  font-size: 24px;
-  color: rgb(80, 80, 80);
-  margin-bottom: 20px;
-}
-
-.groupName {
-  display: flex;
-  align-items: center;
-}
-
-.groupn {
-  font-size: 15px;
-  margin-right: 10px;
-}
-
-.groupName+.groupName {
-  margin-top: 15px;
-}
-
-.groupBtn {
-  margin-left: 10px;
-}
-
-.groupContent>>>.el-input-number.is-without-controls .el-input__inner {
-  text-align: left;
-}
-
-.radioBox>div {
-  margin: 10px 0 0 10px;
-}
-
-.radioBox>>>.el-radio__input,
-.radioBox>>>.el-checkbox__inner {
-  margin-left: 10px;
-}
-
-.radioBox>>>.el-radio__label,
-.radioBox>>>.el-checkbox__label {
-  display: flex;
-  align-items: center;
-}
-
-.inImg {
-  width: 50px;
-}
-
-.inImg>img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.upCss>>>.el-upload-list--picture .el-upload-list__item {
-  height: auto;
-  padding: 10px;
-  margin: 0;
-}
-
-.upCss>>>.el-upload-list {
-  width: 100%;
-}
-
-.upCss>>>.el-upload-list--picture .el-upload-list__item-thumbnail {
-  width: 100%;
-  height: 120px;
-  object-fit: contain;
-  background: unset;
-  margin-left: 0;
-}
-
-.upCss>>>.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name {
-  display: none;
-}
-
-.tcMember+.tcMember::before {
-  content: "、";
-}
-
-.xzUpImg {
-  width: 25px;
-  height: 25px;
-  min-width: 25px;
-  min-height: 25px;
-  cursor: pointer;
-  margin: 0 10px;
-}
-
-.xzUpImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.closeCss {
-  position: absolute;
-  top: 8px;
-  right: 8px;
-  cursor: pointer;
-  width: 20px;
-  height: 20px;
-}
-
-.closeCss>img {
-  width: 100%;
-  height: 100%;
-}
-
-.moveBtn {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  width: 55px;
-}
-
-.timuUpImg {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  width: 100%;
-  margin-right: 10px;
-}
-
-.timuUpImg>div:nth-child(1) {
-  margin-right: 10px;
-  display: flex;
-  align-items: center;
-  width: 100%;
-}
-
-.timuImgBox {
-  margin: 10px 0;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: wrap;
-  align-items: flex-start;
-}
-
-.timuImg {
-  width: 100px;
-  margin: 5px 0;
-  cursor: pointer;
-  position: relative;
-}
-
-.timuImg:hover .deleteWord {
-  display: block;
-}
-
-.deleteWord {
-  width: 25px;
-  height: 25px;
-  position: absolute;
-  right: -5px;
-  top: -5px;
-  cursor: pointer;
-  display: none;
-}
-
-.timuImg>img,
-.deleteWord>img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-
-.e_add_delete {
-  cursor: pointer;
-  margin-left: 10px;
-}
-
-.pType_box {
-  margin-top: 30px;
-  align-items: flex-end;
-}
-
-.noneBox {
-  height: 200px;
-  width: 100%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-  /* margin-top: 150px; */
-}
-
-.noneBox>img {
-  width: 95px;
-}
-
-.noneBox>span {
-  margin-top: 10px;
-  color: #717c8d;
-}
-
-.rb_c_box {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  /* padding: 20px; */
-  box-sizing: border-box;
-  justify-content: space-between;
-}
-
-.rb_c_box_left {
-  height: 100%;
-  background: #fff;
-  width: 270px;
-  min-width: 270px;
-  border-radius: 8px;
-  margin-right: 10px;
-}
-
-.rb_c_box_right {
-  height: 100%;
-  width: calc(100%);
-  overflow: hidden;
-}
-
-.rb_c_box_btn {
-  display: flex;
-  justify-content: flex-start;
-  height: 50px;
-  align-items: center;
-}
-
-.rb_c_box_right>.basic_box {
-  /* background: #fff; */
-  border-radius: 0;
-  height: calc(100% - 0px);
-  overflow: auto;
-  padding: 0;
-}
-
-.textarea_css {
-  display: block;
-  resize: none;
-  padding: 10px 15px;
-  line-height: 1.5;
-  box-sizing: border-box;
-  width: 100%;
-  font-size: 14px;
-  color: #606266;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #dcdfe6;
-  border-radius: 4px;
-  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
-  outline: none;
-  overflow: hidden;
-  height: 46px;
-  font-family: "Microsoft YaHei";
-}
-
-.textarea_css::-webkit-input-placeholder {
-  color: #c0c4cc;
-}
-
-.textarea_css:focus {
-  border-color: #409eff;
-  outline: 0;
-}
-
-.addEditor>>>.text {
-  height: auto;
-  min-height: 100px;
-}
-
-.addEditor>>>.w-e-text-container {
-  min-height: 100px;
-}
-
-.moveBtn2 {
-  flex-direction: column;
-  width: fit-content;
-  margin: 0 10px 0 10px;
-}
-
-.moveBtn2 .chapter_upload_down,
-.moveBtn2 .chapter_upload_up {
-  width: 16px;
-  height: 16px;
-}
-
-.moveBtn2 .chapter_upload_up::after,
-.moveBtn2 .chapter_upload_down::after {
-  width: 10px;
-  height: 10px;
-}
-
-.fullStyle>>>.el-dialog__body {
-  height: calc(100% - 125px) !important;
-  box-sizing: border-box;
-}
-
-.fullStyle1>>>.el-dialog__body {
-  height: auto !important;
-}
-
-.fullStyle>>>.el-dialog {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 !important;
-}
-
-.fullStyle {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 auto !important;
-}
-
-.wb_j_box_btn {
-  width: calc(100% - 30px);
-  display: flex;
-  height: 40px;
-  border: 1.5px solid #cad1dc;
-  border-radius: 4px;
-  box-sizing: border-box;
-  align-items: center;
-  font-size: 14px;
-  cursor: pointer;
-  overflow: hidden;
-}
-
-.wb_j_box_btn:hover {
-  border: 1.5px solid #0061ff;
-}
-
-.wb_j_box_title {
-  background: #f0f4fa;
-  height: 100%;
-  line-height: 40px;
-  width: 90px;
-  text-align: center;
-  color: #060e17;
-  border-right: 1.5px solid #cad1dc;
-  box-sizing: border-box;
-}
-
-.wb_j_box_btn_c {
-  width: calc(100% - 90px);
-  padding: 0 35px 0 10px;
-  box-sizing: border-box;
-  position: relative;
-}
-
-.wb_j_box_span {
-  width: 100%;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  word-wrap: break-word;
-  color: #717c8d;
-}
-
-.wb_j_box_arrow {
-  content: "";
-  width: 14px;
-  height: 14px;
-  background: url(../../../assets/icon/new/u_arrow.png);
-  background-size: 100% 100%;
-  position: absolute;
-  right: 12px;
-  top: 50%;
-  transform: translateY(-50%);
-}
-
-.check_classBox {
-  height: 400px;
-  display: flex;
-  border-top: 1.5px solid #e7ebf1;
-  border-bottom: 1.5px solid #e7ebf1;
-}
-
-.check_class_right {
-  width: 130px;
-  border-right: 1px solid #e7ebf1;
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  height: 100%;
-  overflow: auto;
-  padding: 15px 0;
-  box-sizing: border-box;
-}
-
-.check_class {
-  width: 85%;
-  border-radius: 5px;
-  height: 30px;
-  min-height: 30px;
-  line-height: 30px;
-  text-align: center;
-  padding: 0 10px;
-  box-sizing: border-box;
-  cursor: pointer;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.check_class.activeX {
-  background: #e0eafb;
-  color: #3681fc;
-  font-weight: 700;
-}
-
-.check_class+.check_class {
-  margin-top: 15px;
-}
-
-.check_class_left {
-  background: #fafafa;
-  width: calc(100% - 130px);
-  padding: 15px;
-  box-sizing: border-box;
-}
-
-.check_class_all_box {
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.all_check {
-  display: flex;
-  align-items: center;
-  padding: 2px 0 0;
-  margin-left: 10px;
-}
-
-.all_check>>>.el-checkbox__label {
-  line-height: 18px;
-}
-
-.check_class_left_title {
-  font-size: 16px;
-  font-weight: 700;
-}
-
-.check_class_item {
-  display: flex;
-  flex-wrap: wrap;
-  height: calc(100% - 45px);
-  overflow: auto;
-  justify-content: flex-start;
-  align-items: flex-start;
-  align-content: flex-start;
-}
-
-.class_item:first-child {
-  /* margin: 0 15px 15px 67px; */
-}
-
-.class_item {
-  margin: 0 15px 15px 0;
-}
-
-.class_item:hover>>>.el-checkbox__label {
-  color: #409eff;
-}
-
-.class_item>>>.el-checkbox__label {
-  color: #0e1e33;
-}
-
-.class_item:hover>>>.el-checkbox__inner {
-  border-color: #409eff;
-}
-
-.class_item>>>.el-checkbox,
-.class_item>>>.el-checkbox__input {
-  display: flex;
-  align-items: center;
-}
-
-.taskTitle {
-  font-size: 20px;
-  font-weight: bold;
-  margin-bottom: 35px;
-}
-
-.taskTitle:after {
-  content: "";
-  width: 100%;
-  display: block;
-  height: 1px;
-  background: #cad1dc;
-  position: absolute;
-  left: 0;
-  margin: 15px 0 0;
-}
-
-.eva_btn_box {
-  margin: 20px 0px 0 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  justify-content: space-between;
-  width: 100%;
-}
-
-.eva_btn_left_box {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.addTypeChoose {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  margin: 15px 0;
-}
-
-.addTypeBox {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-}
-
-.addTypeChoose {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  margin: 15px 0;
-}
-
-.buchong_box {
-  background: #E0EAFB66;
-  width: calc(100% - 20px);
-  min-height: 50px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin: 0 auto;
-}
-
-.outline {
-  width: calc(100% - 40px);
-  margin: 0 auto;
-}
-
-.task_outline {
-  width: calc(100% - 40px);
-  margin: 0 auto;
-}
-
-.outline_box+.outline_box {
-  margin: 30px 0 0px;
-}
-
-.outline_task {
-  display: flex;
-  align-items: center;
-  margin-bottom: 10px;
-}
-
-.outline_task .title {
-  font-size: 18px;
-  font-weight: bold;
-  min-width: 80px;
-}
-
-.op_task_box,
-.op_tool_box,
-.outline_detail {
-  position: relative;
-}
-
-.op_task_box:hover .op_box,
-.op_tool_box:hover .op_box,
-.outline_detail:hover .op_box {
-  display: flex
-}
-
-.op_box {
-  position: absolute;
-  bottom: 10px;
-  display: none;
-  align-items: center;
-  justify-content: space-between;
-  width: calc(100% - 20px);
-  left: 50%;
-  transform: translateX(-50%);
-}
-
-.op_box .op_remark {
-  color: #8E8E8E;
-  font-size: 14px;
-}
-
-.rb_c_nav {
-  width: calc(100% - 20px);
-  margin: 15px auto 0;
-  font-size: 18px;
-}
-
-.rb_c_nav span {
-  cursor: pointer;
-}
-
-.rb_c_nav span+span {
-  margin-left: 10px;
-}
-
-.rb_c_nav span.active {
-  color: #0061FF
-}
-
-.text_panel>>>.text {
-  height: 400px;
-}
-
-.markBox{
-  padding: 20px 14px;
-  line-height: 29px;
-  font-size: 16px;
-  background: #f4f4f4;
-  border-radius: 5px;
-}
-
-.info_box_t{
-  display: flex;
-  align-items: center;
-}
-
-.info_box_t_box{
-  display: flex;
-  align-items: center;
-}
-
-.info_box_t_box + .info_box_t_box{
-  margin-left: 10px;
-}
-
-.info_box_t_box > span{
-  width: fit-content
-}
-
-.info_box_t_box > input{
-  width: 150px !important; 
-  margin: 0 5px 0 0;
-}
-</style>

+ 19 - 19
src/components/pages/aiAddCourse/aiBoxRight.vue

@@ -48,7 +48,7 @@
     <div class="ai_body_select" v-if="false">
       <div class="checkBox" v-if="checkBool">
         <div class="task">
-          <div class="title">选择需要优化的任务:</div>
+          <div class="title">Select the task to optimize:</div>
           <div class="content">
             <div class="span" @click="addAllTask()">
               <div class="check">
@@ -59,7 +59,7 @@
                 />
                 <img :src="checkIsImg" alt="" v-else />
               </div>
-              <span>全选</span>
+              <span>Select All</span>
             </div>
             <div
               class="span"
@@ -75,12 +75,12 @@
                 />
                 <img :src="checkIsImg" alt="" v-else />
               </div>
-              <span>任务{{ index + 1 }}</span>
+              <span>Task {{ index + 1 }}</span>
             </div>
           </div>
         </div>
         <div class="part">
-          <div class="title">选择优化的部分:</div>
+          <div class="title">Select the part to optimize:</div>
           <div class="content">
             <div
               class="span"
@@ -99,7 +99,7 @@
         :class="{ isCheck: checkBool }"
         v-if="!checkArray.length && !part"
         @click="checkBool = !checkBool"
-        >选择优化内容</span
+        >Select optimization content</span
       >
       <span
         class="check"
@@ -144,18 +144,18 @@
               d="M12.465 11.507L15.9141 14.9048C16.1279 14.5365 16.25 14.1088 16.25 13.6521C16.25 12.2714 15.1307 11.1521 13.75 11.1521C13.2799 11.1521 12.8406 11.2815 12.465 11.507ZM15.0374 15.7957L11.5873 12.397C11.3726 12.7659 11.25 13.1944 11.25 13.6521C11.25 15.0328 12.3693 16.1521 13.75 16.1521C14.2211 16.1521 14.6613 16.0222 15.0374 15.7957ZM11.0797 11.0192C11.759 10.3303 12.7051 9.9021 13.75 9.9021C15.8211 9.9021 17.5 11.581 17.5 13.6521C17.5 14.6767 17.0882 15.6064 16.4226 16.2827C15.7431 16.9729 14.7961 17.4021 13.75 17.4021C11.6789 17.4021 10 15.7232 10 13.6521C10 12.6263 10.4127 11.6957 11.0797 11.0192Z"
             />
           </svg>
-          <span>清屏</span>
+          <span>Clear Screen</span>
         </span>
         <span
           class="clear"
           @click.stop="showjList = !showjList"
           v-if="jArray.length"
         >
-          <span>查看</span>
+          <span>View</span>
         </span>
         <div style="margin-left: auto;">
           <el-switch v-model="continuous"></el-switch>
-          <span @click.stop="continuous = !continuous">连续对话</span>
+          <span @click.stop="continuous = !continuous">Continuous Conversation</span>
         </div>
       </div>
 
@@ -186,7 +186,7 @@
             />
             <div class="ai_b_i_rlb_i_name">
               <span>{{ item.assistantName }}</span>
-              <span>作者:{{ item.username }}</span>
+              <span>Author: {{ item.username }}</span>
             </div>
           </div>
           <div class="ai_b_i_rlb_itemBottom">
@@ -202,13 +202,13 @@
       <div class="ai_b_i_jListBox" v-if="showjList && jArray.length > 0">
         <div class="jlist_box" v-for="(item, index) in jArray" :key="index">
           <el-tooltip
-            :content="item.area + '' + item.value"
+            :content="item.area + ': ' + item.value"
             placement="left"
             effect="dark"
             popper-class="text_tooltip2"
           >
             <!-- content to trigger tooltip here -->
-            <span>{{ item.area }}{{ item.value }}</span>
+            <span>{{ item.area }}: {{ item.value }}</span>
           </el-tooltip>
           <div class="cancel" @click="cancelJ(item.string)">×</div>
         </div>
@@ -230,8 +230,8 @@
           isVoice
             ? isTalk
               ? ''
-              : '点击按钮开始录音'
-            : '在此输入您想了解的内容'
+              : 'Click the button to start recording'
+            : 'Enter the content you want to know here'
         "
       ></textarea>
 
@@ -295,7 +295,7 @@
         v-if="!faloading && !isVoice"
         @click="addContent"
       >
-        发送
+        Send
       </div>
 
       <div
@@ -344,12 +344,12 @@
 
       <div v-if="!faloading && isVoice"></div>
       <div class="c_pub_button_confirm" v-if="faloading" @click="stopSend">
-        终止
+        Stop
       </div>
     </div>
     <iframe
       allow="camera *; microphone *;display-capture;midi;encrypted-media;"
-      src="https://beta.cloud.cocorobo.cn/browser/public/index.html"
+      src="https://cloud.cocorobo.hk/browser/public/index.html"
       ref="iiframe"
       v-show="false"
     ></iframe>
@@ -361,16 +361,16 @@
         class="binfo_input binfo_textarea"
         cols
         v-model.trim="courseText"
-        placeholder="在此输入您想了解的内容"
+        placeholder="Enter the content you want to know here"
       ></textarea>
       <div
         class="c_pub_button_confirm"
         v-if="!loading && courseText"
         @click="addContent"
       >
-        发送
+        Send
       </div>
-      <div class="c_pub_button_confirm" @click="promptTit" v-else>发送</div>
+      <div class="c_pub_button_confirm" @click="promptTit" v-else>Send</div>
     </div> -->
   </div>
 </template>

+ 14 - 14
src/components/pages/aiAddCourse/aiCreateDialog.vue

@@ -1,21 +1,21 @@
 <template>
-    <el-dialog title="AI生成PPT" :visible.sync="dialogVisibleAiCreate" :append-to-body="true" width="700px"
+    <el-dialog title="AI Generate PPT" :visible.sync="dialogVisibleAiCreate" :append-to-body="true" width="700px"
         :before-close="handleClose" class="dialog_diy">
-        <div style="height: 500px; padding: 15px" v-loading="loading" element-loading-text="小可正在努力生成中,请稍等...">
-            <div class="c_pub_button_confirm stopBtn" v-if="loading && stopPpt" @click="cancelAjax()">停止</div>
+        <div style="height: 500px; padding: 15px" v-loading="loading" element-loading-text="Xiao Ke is working hard to generate, please wait...">
+            <div class="c_pub_button_confirm stopBtn" v-if="loading && stopPpt" @click="cancelAjax()">Stop</div>
             <!-- <div class="t_box">
-                <span>选择:</span>
+                <span>Select:</span>
                 <el-radio-group v-model="radio" @change="changeRadio">
                     <el-radio :label="0">PPT</el-radio>
-                    <el-radio :label="1">教案</el-radio>
-                    <el-radio :label="2">视频</el-radio>
+                    <el-radio :label="1">Lesson Plan</el-radio>
+                    <el-radio :label="2">Video</el-radio>
                 </el-radio-group>
             </div> -->
             <div class="t_box" v-if="steps == 1" style="height: 100%">
                 <textarea style="height: 100%;width:calc(100% - 260px)" rows="10" class="binfo_input binfo_textarea"
-                    cols placeholder="请生成大纲" v-model="outline"></textarea>
+                    cols placeholder="Please generate an outline" v-model="outline"></textarea>
                 <div class="template_box">
-                    <span class="title">选择模板</span>
+                    <span class="title">Select Template</span>
                     <div class="template_list">
                         <div class="template_item" :class="{ active: index == templateIndex }"
                             v-for="(item, index) in templateList" :key="index" @click="changeTemplate(index)">
@@ -29,14 +29,14 @@
             </div>
         </div>
         <span slot="footer" class="dialog-footer">
-            <el-button @click="aiGet(2)" type="primary" :disabled="loading">重新生成大纲</el-button>
+            <el-button @click="aiGet(2)" type="primary" :disabled="loading">Regenerate Outline</el-button>
             <el-button @click="aiGet(1)" type="primary" :disabled="loading">{{
-                url ? "重新生成PPT" : "生成PPT"
+                url ? "Regenerate PPT" : "Generate PPT"
                 }}</el-button>
-            <el-button @click="steps = 1" type="primary" v-if="steps == 2">上一步</el-button>
-            <el-button @click="steps = 2" type="primary" v-else-if="steps == 1 && url">下一步</el-button>
-            <el-button @click="confirm" type="primary">确 定</el-button>
-            <el-button @click="close">关 闭</el-button>
+            <el-button @click="steps = 1" type="primary" v-if="steps == 2">Previous Step</el-button>
+            <el-button @click="steps = 2" type="primary" v-else-if="steps == 1 && url">Next Step</el-button>
+            <el-button @click="confirm" type="primary">Confirm</el-button>
+            <el-button @click="close">Close</el-button>
         </span>
     </el-dialog>
 </template>

+ 0 - 525
src/components/pages/aiAddCourse/aiCreateVideoDialog copy.vue

@@ -1,525 +0,0 @@
-<template>
-    <el-dialog title="智能检索" :visible.sync="dialogVisibleAiCreateVideo" :append-to-body="true" width="700px"
-        :before-close="handleClose" class="dialog_diy">
-        <div style="height: 500px;padding:15px" v-loading="loading" element-loading-text="小可正在努力生成中,请稍等...">
-            <div style="position: relative; width: 100%;height: 40px;margin-bottom: 10px;">
-                <el-input class="inputC" style="height: 100%;" placeholder="搜索视频关键字(如需搜索多个可“,”隔开)" v-model="detail"
-                    @keyup.enter.native="searchA()"></el-input>
-                <div class="search_img" @click="searchA" style="right: 10px">
-                    <img src="../../../assets/icon/search.png" alt />
-                </div>
-            </div>
-            <div class="Box">
-                <!-- <div class="video_box" v-for="(item,index) in data" :key="index">
-                    <img :src="item.snippet.thumbnails.high.url" />
-                    <span class="name">{{ item.snippet.title }}</span> 
-                    <span class="detail">{{ item.snippet.description }}</span> 
-                    <div class="btn">
-                        <span @click="openUrl(item.id.videoId)">查看</span>
-                        <span @click="checkUrl(item.snippet.title,item.id.videoId)">加入</span>
-                    </div>
-                </div> -->
-                <div class="video_box video_box2" v-for="(item, index) in data" :key="index">
-                    <!-- <img :src="item.pic" /> -->
-                    <span class="name" v-html="item.title"></span>
-                    <span class="detail">{{ item.description }}</span>
-                    <div class="btn">
-                        <span @click="openUrl(item.bvid)">查看</span>
-                        <span @click="checkUrl(item.title, item.bvid)">加入</span>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <span slot="footer" class="dialog-footer">
-            <!-- <el-button @click="aiGet" type="primary">重新生成</el-button> -->
-            <!-- <el-button @click="confirm" type="primary">确 定</el-button> -->
-            <el-button @click="close">关 闭</el-button>
-        </span>
-    </el-dialog>
-</template>
-
-<script>
-import { v4 as uuidv4 } from "uuid";
-
-export default {
-    components: {
-    },
-    props: {
-        dialogVisibleAiCreateVideo: {
-            type: Boolean,
-            default: false
-        },
-        courseName: {
-            type: String,
-            default: ""
-        },
-        courseState: {
-            type: Number,
-        },
-        lineCount: {
-            type: Number,
-        },
-        unitJson: {
-            type: Array,
-        }
-    },
-    // 根据用户给你的参考资料
-    data() {
-        return {
-            userid: this.$route.query.userid,
-            radio: 0,
-            aiJson: {
-                ppt: ``,
-                word: '',
-                video: ''
-            },
-            aiUrl: {
-                ppt: '',
-                word: '',
-                video: ''
-            },
-            detail: "",
-            loading: false,
-            url: "",
-            data: [],
-            uJson: {}
-        }
-    },
-    watch: {
-        dialogVisibleAiCreateVideo(newValue, oldValue) {
-            if (newValue) {
-                // if (this.radio == 0) {
-                if (this.courseState == 4) {
-                    this.detail = this.courseName
-                    this.aiGet()
-                } else if (this.courseState == 5) {
-                    // this.detail = this.unitJson[0].chapterInfo[0].taskJson[this.lineCount].task.replace("任务"+(this.lineCount+1)+":","")
-                    this.againEva()
-                }
-                // }
-                // if (this.radio == 1) {
-                //     this.detail = this.aiJson.word
-                // }
-                // if (this.radio == 2) {
-                //     this.detail = this.aiJson.video
-                // }
-                // this.loading = false
-
-                // this.aiGet()
-                // this.againEva()
-            }
-        },
-    },
-    methods: {
-        handleClose(done) {
-            this.close()
-            done();
-        },
-        close() {
-            this.$emit('update:dialogVisibleAiCreateVideo', false)
-        },
-        openUrl(url) {
-            // window.open('https://www.youtube.com/embed/'+url)
-            window.open(`//www.bilibili.com/video/${url}`)
-        },
-        checkUrl(name, id) {
-            let json = {
-                name: "链接",
-                title: name.replace(/<[^>]*>?/gm, ''),
-                // url: 'https://www.youtube.com/embed/'+id,
-                url: `//player.bilibili.com/player.html?isOutside=true&bvid=${id}`,
-                type: 8,
-            }
-            this.$emit('createAiVideo', json)
-            this.$message.success('加入成功')
-        },
-        changeRadio() {
-            if (this.radio == 0) {
-                this.detail = this.aiJson.ppt
-            }
-            if (this.radio == 1) {
-                this.detail = this.aiJson.word
-            }
-            if (this.radio == 2) {
-                this.detail = this.aiJson.video
-            }
-        },
-        // async aiGet() {
-        //     let _this = this
-        //     _this.loading = true
-        //     this.ajax
-        //         .get(`https://www.googleapis.com/youtube/v3/search?key=AIzaSyBUvNQ5Wyua4PbStE2vp3t7MIY4htry-4M&part=snippet&q=${this.detail}&maxResults=10&type=video&order=relevance&regionCode=HK`)
-        //         .then((response) => {
-        //             console.log(response);
-        //             _this.data = response.data.items
-        //             _this.loading = false
-
-        //         })
-        //         .catch((error) => {
-        //             _this.loading = false
-        //             console.log(error);
-        //         });
-        // },
-        async aiGet() {
-            let _this = this
-            _this.loading = true
-            this.ajax.post(`https://gpt4.cocorobo.cn/get_network_search`, {
-                engine: "bilibili",
-                keyword: this.detail
-            }).then(response => {
-                console.log(response);
-                _this.data = response.data.FunctionResponse
-                _this.loading = false
-
-            })
-                .catch((error) => {
-                    _this.loading = false
-                    console.log(error);
-                });
-        },
-        // async aiGet2(msg) {
-        //     let _this = this
-        //     _this.loading = true
-        //     this.ajax
-        //         .get(`https://www.googleapis.com/youtube/v3/search?key=AIzaSyBUvNQ5Wyua4PbStE2vp3t7MIY4htry-4M&part=snippet&q=${msg}&maxResults=10&type=video&order=relevance&regionCode=HK`)
-        //         .then((response) => {
-        //             console.log(response);
-        //             _this.data = response.data.items
-        //             _this.loading = false
-
-        //         })
-        //         .catch((error) => {
-        //             _this.loading = false
-        //             console.log(error);
-        //         });
-        // },
-        async aiGet2(msg) {
-            let _this = this
-            return new Promise((resolve, reject) => {
-                this.ajax.post(`https://gpt4.cocorobo.cn/get_network_search`, {
-                    engine: "bilibili",
-                    keyword: msg
-                }).then(response => {
-                    console.log(response);
-                    // _this.data = [..._this.data,...response.data.FunctionResponse]
-                    resolve(response.data.FunctionResponse)
-                })
-                    .catch((error) => {
-                        resolve([])
-                        console.log(error);
-                    });
-            });
-        },
-        async searchA(){
-            let _this = this
-            if(!_this.detail){
-                _this.$message.error("请输入关键字")
-                return
-            }
-            _this.loading = true
-            let _content = ""
-            if(_this.detail.split(",").length>1){
-                _content = _this.detail.split(",")
-            }else{
-                _content = _this.detail.split(",")
-            }
-            _this.data = []
-            for (var a = 0; a < _content.length; a++) {
-                let _data = await _this.aiGet2(_content[a])
-                _this.data = [..._this.data, ..._data]
-            }
-            _this.data = _this.data.sort(
-                function (a, b) {
-                    return b.play - a.play;
-                }
-            );
-            _this.againEva2();
-            // _this.loading = false
-        },
-        againEva() {
-            let _this = this
-            _this.loading = true
-            let message = `从以下内容中识别出1~2个学科知识点关键词,用于检索知识点相关视频。注意,你仅需要返回关键词,“,”分开。教案:${_this.unitJson[0].chapterInfo[0].taskJson[_this.lineCount].taskDetail3.replaceAll('#', '').replaceAll('*', '').replaceAll('-', '').replaceAll('\n', '')}`
-            let parm = {
-                assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
-                message: [{ "type": "text", "text": message.replaceAll('\n', " ").replaceAll('*', "") }],
-                session_name: uuidv4(),
-                userId: _this.userid,
-                file_ids: [],
-                model: 'gpt-4o-2024-08-06',
-            }
-            _this.ajax
-                .post("https://gpt4.cocorobo.cn/ai_agent_park_chat", parm)
-                .then(async (response) => {
-                    console.log(response);
-                    let data = response.data.FunctionResponse
-                    if (data.message) {
-                        console.log(data.message);
-
-                        let content = data.message;
-                        _this.detail = content
-                        let _content = content.split(",")
-                        if(content.split(",").length>1){
-                            _content = content.split(",")
-                        }else{
-                            _content = content.split(",")
-                        }
-                        _this.data = []
-                        for (var a = 0; a < _content.length; a++) {
-                            let _data = await _this.aiGet2(_content[a])
-                            _this.data = [..._this.data, ..._data]
-                        }
-                        _this.data = _this.data.sort(
-                            function (a, b) {
-                                return b.play - a.play;
-                            }
-                        );
-                        _this.againEva2();
-                    }
-                    // _this.loading = false
-
-                })
-                .catch((error) => {
-                    console.log(error);
-                    _this.loading = true
-                });
-        },
-        againEva2() {
-            let _this = this
-            _this.loading = true
-            let message = `ATTENTION: Use '##' to SPLIT SECTIONS, not '#'.Output format carefully referenced "Format example".
-针对以下视频数组内容,删除其中不适合k12年级的学生在教室里看到的条目,返回以下视频数组不符合的视频的aid,视频数组:${JSON.stringify(_this.data)}
-
-# Format example
-[{aid:""},{aid:""}]
-`
-            let parm = {
-              model: 'gpt-4o-2024-08-06',
-              temperature: 0,
-              max_tokens: 4096,
-              top_p: 1,
-              frequency_penalty: 0,
-              presence_penalty: 0,
-              messages: [{
-                content: message.replaceAll('\n', " ").replaceAll('*', ""),
-                role: 'user'
-              }],
-              uid: uuidv4(),
-              stream: false,
-              mind_map_question: "",
-            }
-            _this.ajax
-                .post("https://gpt4.cocorobo.cn/chat", parm)
-                .then(async (response) => {
-                    console.log(response);
-                    let data = response.data.FunctionResponse
-                    if (data.choices && data.choices.length && data.choices[0].message) {
-                        console.log(data.choices[0].message.content);
-                        let dArray = []
-                        try {
-                            dArray = JSON.parse(data.choices[0].message.content.replaceAll('```json','').replaceAll('```',''))
-                        } catch (error) {
-                            console.log("error_________________" + error);
-                            try {
-                                let regex = new RegExp("(?<=```json)([\\s\\S]*?)(?=```)");
-                                let match = data.choices[0].message.content.match(regex);
-                                dArray = JSON.parse(match[0]);
-                            } catch (error) {
-                                console.log("error_________________" + error);
-                            }
-                        }
-
-                        let aid = []
-                        for(var i = 0; i < dArray.length; i++){
-                            aid.push(dArray[i].aid)
-                        }
-                        _this.data = _this.data.filter(el => {
-                            return aid.indexOf(el.aid) === -1
-                        })
-                        _this.$forceUpdate()
-                    }
-                    _this.loading = false
-                })
-                .catch((error) => {
-                    console.log(error);
-                    _this.loading = true
-                });
-        },
-    },
-}
-</script>
-
-<style scoped>
-.dialog_diy>>>.el-dialog {
-    height: auto;
-    margin: 15vh auto 0 !important;
-}
-
-.dialog_diy>>>.el-dialog__header {
-    background: #454545 !important;
-    padding: 15px 20px;
-}
-
-.dialog_diy>>>.el-dialog__body {
-    height: calc(100% - 124px);
-    box-sizing: border-box;
-    padding: 0px;
-}
-
-
-.dialog_diy>>>.el-dialog__title {
-    color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-    top: 19px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-    color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-    color: #fff;
-}
-
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-    background: #fafafa;
-}
-
-.binfo_input {
-    width: 100%;
-    margin: 0;
-    padding: 5px 7px;
-    display: block;
-    min-width: 0;
-    outline: none;
-    box-sizing: border-box;
-    background: none;
-    border: none;
-    border-radius: 4px;
-    background: #fff;
-    font-size: 15px;
-    resize: none;
-    font-family: "Microsoft YaHei";
-    min-height: 48px;
-    /* border: 1px solid #3682fc00; */
-    border: 1.5px solid #cad1dc;
-}
-
-.binfo_textarea {
-    border: 1.5px solid #cad1dc;
-    font-size: 15px;
-    resize: none;
-    /* background: #f6f6f6; */
-    font-family: "Microsoft YaHei";
-}
-
-.binfo_input:focus-visible {
-    border: 1.5px solid #3681fc !important;
-}
-
-
-.t_box {
-    display: flex;
-    margin-bottom: 15px;
-}
-
-.t_box>span:nth-child(1) {
-    min-width: 80px;
-    font-size: 16px;
-    color: #000;
-}
-
-.inputC>>>.el-input__inner {
-    padding: '0 35px 0 15px'
-}
-
-.search_img {
-    width: 20px;
-    height: 20px;
-    position: absolute;
-    right: 10px;
-    top: 50%;
-    transform: translateY(-50%);
-}
-
-.search_img>img {
-    width: 100%;
-    height: 100%;
-}
-
-
-.Box {
-    width: 100%;
-    height: calc(100% - 50px);
-    overflow: auto;
-    display: flex;
-    flex-direction: row;
-    justify-content: flex-start;
-    flex-wrap: wrap;
-}
-
-.video_box {
-    width: calc(100% / 2 - 10px);
-    /* overflow: hidden; */
-    margin-right: 10px;
-    display: flex;
-    flex-direction: column;
-    margin-bottom: 15px;
-    cursor: pointer;
-}
-
-.video_box>img {
-    height: 200px;
-    object-fit: cover;
-}
-
-.video_box>.detail {
-    color: #cecece;
-}
-
-.video_box>.name {
-    color: #000;
-    margin: 5px 0;
-    height: 32px;
-}
-
-.btn {
-    width: 100%;
-    height: 35px;
-    display: flex;
-    align-items: center;
-    margin-top: auto;
-}
-
-.btn>span:hover {
-    background: #4087f1;
-}
-
-.btn>span {
-    width: 100%;
-    height: 100%;
-    background: #3681fc;
-    color: #fff;
-    border-radius: 5px;
-    margin-top: 10px;
-    cursor: pointer;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-.btn>span+span {
-    margin-left: 10px;
-}
-
-.video_box2 {
-    box-shadow: 0px 0px 4px 2px #d2d2d282;
-    padding: 5px 10px 10px;
-    box-sizing: border-box;
-    border-radius: 5px;
-}
-</style>

+ 13 - 13
src/components/pages/aiAddCourse/aiCreateVideoDialog.vue

@@ -1,26 +1,26 @@
 <template>
-    <el-dialog title="智能检索" :visible.sync="dialogVisibleAiCreateVideo" :append-to-body="true" width="90%"
+    <el-dialog title="Intelligent Search" :visible.sync="dialogVisibleAiCreateVideo" :append-to-body="true" width="90%"
         :before-close="handleClose" class="dialog_diy">
-        <div style="box-sizing:border-box;padding:15px" v-loading="loading" element-loading-text="小可正在努力生成中,请稍等...">
+        <div style="box-sizing:border-box;padding:15px" v-loading="loading" element-loading-text="Generating, please wait...">
             <div style="position: relative; width: 100%;height: 40px;margin-bottom: 10px;">
-                <el-input class="inputC" style="height: 100%;" placeholder="搜索视频关键字(如需搜索多个可“,”隔开)" v-model="detail"
+                <el-input class="inputC" style="height: 100%;" placeholder="Search video keywords (separate multiple keywords with commas)" v-model="detail"
                     @keyup.enter.native="searchA()"></el-input>
                 <div class="search_img" @click="searchA" style="right: 10px">
                     <img src="../../../assets/icon/search.png" alt />
                 </div>
             </div>
             <div class="nav_box">
-                <div class="nav" :class="{ active: navActive == 0 }" @click="navClick(0)">综合排序</div>
-                <div class="nav" :class="{ active: navActive == 1 }" @click="navClick(1)">相关程度</div>
-                <div class="nav" :class="{ active: navActive == 2 }" @click="navClick(2)">上传日期</div>
-                <div class="nav" :class="{ active: navActive == 3 }" @click="navClick(3)">观看次数</div>
-                <div class="nav" :class="{ active: navActive == 4 }" @click="navClick(4)">评分</div>
+                <div class="nav" :class="{ active: navActive == 0 }" @click="navClick(0)">Comprehensive Sorting</div>
+                <div class="nav" :class="{ active: navActive == 1 }" @click="navClick(1)">Relevance</div>
+                <div class="nav" :class="{ active: navActive == 2 }" @click="navClick(2)">Upload Date</div>
+                <div class="nav" :class="{ active: navActive == 3 }" @click="navClick(3)">View Count</div>
+                <div class="nav" :class="{ active: navActive == 4 }" @click="navClick(4)">Rating</div>
             </div>
             <div class="Box">
                 <div class="video_box video_box2" v-for="(item, index) in data" :key="index">
                     <img :src="item.thumbnail.static" />
                     <span class="name" v-html="item.title"></span>
-                    <span class="author">作者:{{ item.channel.title }}</span>
+                    <span class="author">Author: {{ item.channel.title }}</span>
                     <span class="detail">{{ item.description }}</span>
                     <div class="tag" v-if="item.badges && item.badges.length > 0">
                         <el-tooltip :content="tag" placement="top" effect="dark" v-for="(tag, index) in item.badges.slice(0, 5)" :key="index">
@@ -30,15 +30,15 @@
                         
                     </div>
                     <div class="btn" :style="{marginTop: item.badges && item.badges.length > 0 ? '0' : 'auto'}">
-                        <span @click="openUrl(item.id)">查看</span>
-                        <span @click="checkUrl(item.title, item.id)">加入</span>
+                        <span @click="openUrl(item.id)">View</span>
+                        <span @click="checkUrl(item.title, item.id)">Add</span>
                     </div>
                 </div>
-                <div v-if="data.length == 0" class="no_data">暂无数据</div>
+                <div v-if="data.length == 0" class="no_data">No data available</div>
             </div>
         </div>
         <span slot="footer" class="dialog-footer">
-            <el-button @click="close">关 闭</el-button>
+            <el-button @click="close">Close</el-button>
         </span>
     </el-dialog>
 </template>

+ 10 - 10
src/components/pages/aiAddCourse/aiDialog.vue

@@ -1,29 +1,29 @@
 <template>
-    <el-dialog title="提示词设置" :visible.sync="dialogVisibleAiD" :append-to-body="true" width="650px" :before-close="handleClose"
+    <el-dialog title="Prompt Settings" :visible.sync="dialogVisibleAiD" :append-to-body="true" width="650px" :before-close="handleClose"
         class="dialog_diy">
         <div style="height: 100%;padding:15px">
             <div class="ai_nav">
-                <span :class="{active: type == 1}">基础创建</span>
+                <span :class="{active: type == 1}">Basic Creation</span>
             </div>
             <div class="ai_detail" v-if="type == 1">
-                <span class="title">{{text2 ? '默认的提示词1' : '默认的提示词'}}</span>
+                <span class="title">{{text2 ? 'Default Prompt 1' : 'Default Prompt'}}</span>
                 <textarea rows="10" class="binfo_input binfo_textarea" cols v-model="text"
-                      placeholder="请输入...."></textarea>
+                      placeholder="Please enter..."></textarea>
             </div>
             <div class="ai_detail" v-if="text2 && type == 1" style="margin-top: 10px;">
-                <span class="title">默认的提示词2</span>
+                <span class="title">Default Prompt 2</span>
                 <textarea rows="10" class="binfo_input binfo_textarea" cols v-model="text2"
-                      placeholder="请输入...."></textarea>
+                      placeholder="Please enter..."></textarea>
             </div>
             <div class="ai_detail" v-if="text3 && type == 1" style="margin-top: 10px;">
-                <span class="title">默认的提示词3</span>
+                <span class="title">Default Prompt 3</span>
                 <textarea rows="10" class="binfo_input binfo_textarea" cols v-model="text3"
-                      placeholder="请输入...."></textarea>
+                      placeholder="Please enter..."></textarea>
             </div>
         </div>
         <span slot="footer" class="dialog-footer">
-            <el-button @click="confirm" type="primary">确 定</el-button>
-            <el-button @click="close">关 闭</el-button>
+            <el-button @click="confirm" type="primary">Confirm</el-button>
+            <el-button @click="close">Close</el-button>
         </span>
     </el-dialog>
 </template>

+ 2 - 2
src/components/pages/aiAddCourse/aiTips.vue

@@ -13,10 +13,10 @@
             <div class="at_text_detail">
                 <span v-if="!edtiPan">{{ detail }}</span>
                 <textarea v-else rows="5" class="binfo_input binfo_textarea" cols v-model="eDetail"
-                    placeholder="请输入提示词"></textarea>
+                    placeholder="Please enter the prompt"></textarea>
             </div>
             <div class="at_btn" v-if="edtiPan">
-                <el-button type="primary" size="mini" @click="confrim">保存</el-button>
+                <el-button type="primary" size="mini" @click="confrim">Save</el-button>
             </div>
         </div>
     </div>

+ 17 - 17
src/components/pages/aiAddCourse/evaList.vue

@@ -1,16 +1,16 @@
 <template>
     <div style="position: relative;" v-loading="loading" :style="{ minHeight: loading ? '250px' : 'auto' }"
-        element-loading-text="小可正在努力生成中,请稍等...">
-        <div class="c_pub_button_confirm stopBtn" v-if="loading" @click="cancelAjax('elist')">停止</div>
+        element-loading-text="Loading, please wait...">
+        <div class="c_pub_button_confirm stopBtn" v-if="loading" @click="cancelAjax('elist')">Stop</div>
         <div class="elist_title">
             <div style=" display: flex; flex-direction: row;align-items: center; margin: 20px 0; ">
-                <div class="lineTitle clineTitle">评价设置</div>
+                <div class="lineTitle clineTitle">Evaluation Settings</div>
                 <div style="margin-left:auto;display: flex;">
                     <div class="r_pub_button_op" style="margin-left:10px;" @click="openAiDialog('elist')">{{ (eList &&
-                        eList.length) ? '重新生成评价' : '生成评价' }}</div>
+                        eList.length) ? 'Regenerate Evaluation' : 'Generate Evaluation' }}</div>
                     <div  v-if="eList && eList.length" class="show_taskD" :class="{ show: interPan }" @click="toggleInterPan">
                         <img src="../../../assets/icon/new/u_up.png" />
-                        {{ interPan ? '收起' : '展开' }}
+                        {{ interPan ? 'Collapse' : 'Expand' }}
                     </div>
                 </div>
             </div>
@@ -20,17 +20,17 @@
                 <div v-if="eList && eList.length" class="elist_input">
                     <div v-for="(eItem, eIndex) in eList" :key="eIndex" class="elist_input_box">
                         <div class="elist_inptu_text">
-                            <span>素养:</span>
-                            <input type="input" v-model="eItem.target" placeholder="填写目标"
+                            <span>Competency:</span>
+                            <input type="input" v-model="eItem.target" placeholder="Enter target"
                                 style="width: calc(100% - 280px);" />
                             <el-switch @change="forceUpdate" class="rateSwitch" style="margin-left: auto;"
-                                v-model="eItem.isai" active-color="#0061FF" active-text="AI评分" inactive-text=""
+                                v-model="eItem.isai" active-color="#0061FF" active-text="AI Scoring" inactive-text=""
                                 active-value="1" inactive-value="2">
                             </el-switch>
                         </div>
                         <div class="elist_inptu_text">
-                            <span>评价标准:</span>
-                            <input type="input" v-model="eItem.detail" placeholder="填写评价标准" />
+                            <span>Evaluation Criteria:</span>
+                            <input type="input" v-model="eItem.detail" placeholder="Enter evaluation criteria" />
                             <div class="remove" @click="
                                 deletEList(
                                     eIndex
@@ -38,18 +38,18 @@
                                 "></div>
                         </div>
                         <div class="elist_inptu_text" style="align-items: flex-start;">
-                            <span>评价细则:</span>
+                            <span>Evaluation Details:</span>
                             <div style="width: calc(100%);">
-                                <div @click="openRule(eIndex)" class="ruleBtn">{{ eItem.isrule ? '收起细则' : '展开细则' }}
+                                <div @click="openRule(eIndex)" class="ruleBtn">{{ eItem.isrule ? 'Collapse Details' : 'Expand Details' }}
                                 </div>
-                                <div style="width: calc(100%);" class='op_task_box' v-if="eItem.isrule" v-loading="ruleLoading.length && ruleLoading[eIndex]" element-loading-text='小可正在努力生成中,请稍等...'>
-                                    <div class="c_pub_button_confirm stopBtn" v-if="ruleLoading.length && ruleLoading[eIndex]" @click="cancelAjax('rule', eIndex)">停止</div>
+                                <div style="width: calc(100%);" class='op_task_box' v-if="eItem.isrule" v-loading="ruleLoading.length && ruleLoading[eIndex]" element-loading-text='Loading, please wait...'>
+                                    <div class="c_pub_button_confirm stopBtn" v-if="ruleLoading.length && ruleLoading[eIndex]" @click="cancelAjax('rule', eIndex)">Stop</div>
                                     <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols
-                                        v-model="eItem.rule" placeholder="请输入评价细则"></textarea>
+                                        v-model="eItem.rule" placeholder="Enter evaluation details"></textarea>
                                     <div class="op_box">
                                         <div class="op_remark"></div>
                                         <div style="display: flex;">
-                                                <div class="r_pub_button_op" @click="openAiDialog('rule', eIndex)">{{ eList[eIndex].rule ? '重新生成' : '生成细则'}}</div>
+                                                <div class="r_pub_button_op" @click="openAiDialog('rule', eIndex)">{{ eList[eIndex].rule ? 'Regenerate' : 'Generate Details'}}</div>
                                         </div>
                                     </div>
                                 </div>
@@ -61,7 +61,7 @@
                 <!-- <div class="eva_btn_box">
                     <div class="eva_btn_left_box">
                         <button class="c_pub_button_add pub_btn_eval_img" @click="addEList()">
-                            添加
+                            Add
                         </button>
                     </div>
                 </div> -->

+ 1 - 1
src/components/pages/aiAddCourse/jsmind2.vue

@@ -2,7 +2,7 @@
   <!-- 普通菜单 -->
   <div class="jsmind_layout">
     <div class="noMind" v-if="mindV">
-      <span>暂无数据</span>
+      <span>No data available</span>
     </div>
     <div :id="jsmindId" ref="container" class="jsmind_container"></div>
   </div>

+ 9 - 9
src/components/pages/aiAddCourse/templateDialog.vue

@@ -3,14 +3,14 @@
         <!-- <div v-if="showDialog == true" class="a-dialog" v-el-drag-dialog> -->
         <div class="a-d-top">
             <div class="a-d-topTit">
-                <div style="width: 136px">模板库</div>
+                <div style="width: 136px">Template Library</div>
             </div>
             <div>
-                <el-input placeholder="请输入内容" prefix-icon="el-icon-search" v-model="input2" clearable>
+                <el-input placeholder="Please enter content" prefix-icon="el-icon-search" v-model="input2" clearable>
                 </el-input>
             </div>
             <div class="a-d-t-right">
-                <el-button @click="open2()" type="primary" size="small" style="margin-right: 10px;">设置模板</el-button>
+                <el-button @click="open2()" type="primary" size="small" style="margin-right: 10px;">Set Template</el-button>
                 <span @click.stop="close">×</span>
             </div>
         </div>
@@ -47,8 +47,8 @@
                                 <div class="a-d-b-i-t-title">{{ item.name }}</div>
                             </el-tooltip>
                         </div>
-                        <!-- <div class="a-d-b-i-top" v-if="item.uname">创建人:{{ item.uname }}</div> -->
-                        <div class="a-d-b-i-top" v-show="false">创建人:{{ item.uname }}</div>
+                        <!-- <div class="a-d-b-i-top" v-if="item.uname">Created by: {{ item.uname }}</div> -->
+                        <div class="a-d-b-i-top" v-show="false">Created by: {{ item.uname }}</div>
                         <!-- <el-tooltip :content="item.detail" placement="top" effect="dark"> -->
                             <div class="a-d-b-i-bottom">{{ item.detail }}</div>
                         <!-- </el-tooltip> -->
@@ -59,16 +59,16 @@
 										justify-content: space-around;
 									">
                                 <div class="a-d-b-i-t-btn" v-if="item.userid == userid" style="margin-right: 10px;"
-                                    @click="deleteA(item.id)">删除</div>
+                                    @click="deleteA(item.id)">Delete</div>
                                 <div class="a-d-b-i-t-btn1" v-if="item.userid == userid" style="margin-right: 10px;"
-                                    @click="open2(item.id)">修改</div>
+                                    @click="open2(item.id)">Edit</div>
                                 <div class="a-d-b-i-t-btn1" @click="open(item.id)">
-                                    使用
+                                    Use
                                 </div>
                             </div>
                         </div>
                     </div>
-                    <div v-if="!searchDataList.length" style="text-align: center;">暂无内容</div>
+                    <div v-if="!searchDataList.length" style="text-align: center;">No content available</div>
                 </div>
             </div>
         </div>

+ 14 - 14
src/components/pages/aiAddCourse/tipsDialog.vue

@@ -1,36 +1,36 @@
 <template>
-    <el-dialog title="保存提示词模板" :visible.sync="dialogVisibleTips" :append-to-body="true" width="650px"
+    <el-dialog title="Save Prompt Template" :visible.sync="dialogVisibleTips" :append-to-body="true" width="650px"
         :before-close="handleClose" class="dialog_diy">
         <div style="height: 100%;padding:15px">
             <div class="t_box">
-                <span>模板名称:</span>
+                <span>Template Name:</span>
                 <input type="text" class="binfo_input" v-model="title">
             </div>
             <div class="t_box">
-                <span>模板描述:</span>
-                <textarea rows="3" class="binfo_input binfo_textarea" cols placeholder="请输入内容"
+                <span>Template Description:</span>
+                <textarea rows="3" class="binfo_input binfo_textarea" cols placeholder="Please enter content"
                     v-model="detail"></textarea>
             </div>
             <div class="t_box">
-                <span>权限:</span>
+                <span>Permission:</span>
                 <el-radio-group v-model="radio">
-                    <el-radio :label="0">个人</el-radio>
-                    <el-radio :label="1">组织内</el-radio>
-                    <el-radio :label="2">所有人</el-radio>
+                    <el-radio :label="0">Personal</el-radio>
+                    <el-radio :label="1">Within Organization</el-radio>
+                    <el-radio :label="2">Everyone</el-radio>
                 </el-radio-group>
             </div>
             <div class="t_box">
-                <span>是否公开提示词:</span>
+                <span>Public Prompt:</span>
                 <el-radio-group v-model="isT">
-                    <el-radio :label="1">不公开</el-radio>
-                    <el-radio :label="2">公开</el-radio>
+                    <el-radio :label="1">Not Public</el-radio>
+                    <el-radio :label="2">Public</el-radio>
                 </el-radio-group>
             </div>
         </div>
         <span slot="footer" class="dialog-footer">
-            <el-button @click="selectT(2)" type="primary">确定并保存课程</el-button>
-            <el-button @click="selectT" type="primary">确 定</el-button>
-            <el-button @click="close">关 闭</el-button>
+            <el-button @click="selectT(2)" type="primary">Confirm and Save Course</el-button>
+            <el-button @click="selectT" type="primary">Confirm</el-button>
+            <el-button @click="close">Close</el-button>
         </span>
     </el-dialog>
 </template>

+ 1 - 1
src/components/pages/test/check/aiBoxRight.vue

@@ -324,7 +324,7 @@
     </div>
 		<iframe
       allow="camera *; microphone *;display-capture;midi;encrypted-media;"
-      src="https://beta.cloud.cocorobo.cn/browser/public/index.html"
+      src="https://cloud.cocorobo.hk/browser/public/index.html"
       ref="iiframe"
       v-show="false"
     ></iframe>

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