Prechádzať zdrojové kódy

Merge branch 'beta' of https://git.cocorobo.cn/CocoRoboLabs/pbl-teacher-table into beta

SanHQin 6 mesiacov pred
rodič
commit
8794d9add2

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.7c174b86058ed07ba8fd7ef39628255d.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.a82b79982b082928b294.js></script><script type=text/javascript src=./static/js/app.0542b62cbead8a97988a.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.6abdbeeaff0b386b1d5bec5bee3f74f5.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.a82b79982b082928b294.js></script><script type=text/javascript src=./static/js/app.320e3975a16e27287d9d.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/app.6abdbeeaff0b386b1d5bec5bee3f74f5.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/app.6abdbeeaff0b386b1d5bec5bee3f74f5.css.map


BIN
dist/static/img/aiImage.c4ce77d.png


BIN
dist/static/img/aiImage2.13de0f5.png


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/app.320e3975a16e27287d9d.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/app.320e3975a16e27287d9d.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


+ 116 - 15
src/components/pages/aiAddCourse/addCourse.vue

@@ -576,6 +576,7 @@
                       <div class="op_box">
                         <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                         <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiteacherTextDetail']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiteacherTextDetail')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                           <div class="r_pub_button_op"
                             @contextmenu.prevent="openAiDialog(1, 'aiteacherTextDetail', 2)"
@@ -608,6 +609,7 @@
                     <div class="op_box">
                       <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                       <div style="display: flex;">
+                        <el-switch style="margin-right: 10px" v-model="isQuote['aitargetTextDetail']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aitargetTextDetail')"></el-switch>
                         <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                           <div class="r_pub_button_op"
                             @contextmenu.prevent="openAiDialog(1, 'aitargetTextDetail', 2)"
@@ -936,6 +938,7 @@
                       <div class="op_box">
                         <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                         <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiDetail']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiDetail')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op"
                               @contextmenu.prevent="openAiDialog(1, 'aiDetail', 2)"
@@ -985,6 +988,7 @@
                               @contextmenu.prevent="openAiDialog(1, 'aiDetail', 2)"
                               @click="openAiDialog(2, 'aiDetail', 2)">智能优化</div>
                           </el-tooltip> -->
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiDetail']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiDetail')"></el-switch>
                           <div class="r_pub_button_edit" style="margin-left:10px" @click="courseTextB = !courseTextB,forceUpdate2()">{{ courseTextB ? '确定' : '编辑'}}</div>
                         </div>
                       </div>
@@ -1155,6 +1159,7 @@
                       <div class="op_box">
                         <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                         <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aitargetTextDetail2']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aitargetTextDetail2')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op"
                               @contextmenu.prevent="openAiDialog(1, 'aitargetTextDetail2', 2)"
@@ -1482,6 +1487,7 @@
                       <div class="op_box">
                         <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                         <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiDetail1-'+index]" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiDetail1-'+index)"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op"
                               @contextmenu.prevent="openAiDialog(1, 'aiDetail1', item, index)"
@@ -1512,6 +1518,7 @@
                     <div class="op_box">
                       <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                       <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiCpote1']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiCpote1')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op" @contextmenu.prevent="openAiDialog(1, 'aiCpote1')"
                             @click="openAiDialog(2, 'aiCpote1')">智能优化</div>
@@ -1540,6 +1547,7 @@
                     <div class="op_box">
                       <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                       <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiCpote2']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiCpote2')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op" @contextmenu.prevent="openAiDialog(1, 'aiCpote2')"
                             @click="openAiDialog(2, 'aiCpote2')">智能优化</div>
@@ -1568,6 +1576,7 @@
                     <div class="op_box">
                       <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                       <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiCpote3']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiCpote3')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op" @contextmenu.prevent="openAiDialog(1, 'aiCpote3')"
                             @click="openAiDialog(2, 'aiCpote3')">智能优化</div>
@@ -1596,6 +1605,7 @@
                     <div class="op_box">
                       <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                       <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['aiCpote4']" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiCpote4')"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op" @contextmenu.prevent="openAiDialog(1, 'aiCpote4')"
                             @click="openAiDialog(2, 'aiCpote4')">智能优化</div>
@@ -1641,6 +1651,7 @@
                       <div class="op_box">
                         <div class="op_remark">*可以将需要优化的建议添加在任务描述后,点击“智能优化”,自动进行修改</div>
                         <div style="display: flex;">
+                          <el-switch style="margin-right: 10px" v-model="isQuote['teacherDetail2-'+index]" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('teacherDetail2-'+index)"></el-switch>
                           <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
                             <div class="r_pub_button_op"
                               @contextmenu.prevent="openAiDialog(1, 'teacherDetail2', item.taskDetail3, index)"
@@ -2546,13 +2557,16 @@
                                   "></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 style="display: flex;">
+                                    <el-switch style="margin-right: 10px" v-model="isQuote['aiDetail2-'+itemTaskIndex]" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiDetail2-'+itemTaskIndex)"></el-switch>
+                                    <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>
@@ -4656,13 +4670,16 @@
                                   " 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 style="display: flex">
+                                    <el-switch style="margin-right: 10px" v-model="isQuote['aiDetail3-'+itemTaskIndex+'-'+toolIndex]" active-text="引用" active-color="#0061FF"  class="custom-switch" v-if="templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2'"  @change="handleSwitchChange('aiDetail3-'+itemTaskIndex+'-'+toolIndex)"></el-switch>
+                                    <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>
@@ -5424,7 +5441,16 @@
         <aiTips ttitle="任务详情" title="生成评价细则" :detail="aiJson.aiRateRule" pan="aiRateRule" @setAiJson="setAiJson"/>
       </div>
       <div class="leftBar2" v-if="istemplate != 1 && templateid == 'cf5722a4-401b-11ef-b873-005056b86cd2' && chatid">
-        <aiBoxRight  :courseId="chatid" :unitJson="unitJson"></aiBoxRight>
+        <aiBoxRight  
+        :courseId="chatid" 
+        :unitJson="unitJson" 
+        :quoteArray="isQuote"
+        :teacherCourseText="teacherCourseText"
+        :targetCourseText="targetCourseText"
+        :courseText2="courseText"
+        :targetCourseText2="targetCourseText2"
+        :cpote="cpote"
+        @setIsQuote="setIsQuote"></aiBoxRight>
       </div>
     </div>
     <el-dialog title="提示" :visible.sync="dialogVisible" :append-to-body="true" width="25%" :before-close="handleClose"
@@ -7437,6 +7463,7 @@ export default {
       interSetting: false,
       chatid: "",
       languageSetting: 0, //0中文 1繁体 2英文
+      isQuote: {}
     };
   },
   directives: {
@@ -16046,6 +16073,12 @@ export default {
       }else {
         this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].isrule = true
       }
+      setTimeout(() => {
+          this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].rule += "*0*%*";
+          setTimeout(() => {
+            this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].rule = this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].rule.replaceAll("*0*%*", "");
+          }, 0);
+      }, 100);
       this.$forceUpdate();
     },
     editCpote(index){
@@ -22630,6 +22663,70 @@ ${msg}
         }
         
       });
+    },
+    handleSwitchChange(string){
+      // let area = ''
+      // let text = ''
+      // if(string == 'aiteacherTextDetail'){
+      //   area = '已有教案摘要'
+      //   text = this.teacherCourseText
+      // }else if(string == 'aitargetTextDetail'){
+      //   area = '课程目标'
+      //   text = this.targetCourseText
+      // }else if(string == 'aiDetail'){
+      //   area = '课程简要描述'
+      //   text = this.courseText
+      // }else if(string == 'aitargetTextDetail2'){
+      //   area = '课程目标'
+      //   text = this.targetCourseText2
+      // }else if(string.indexOf('aiDetail1') != -1){
+      //   let index = parseInt(string.split('aiDetail1-')[1])
+      //   area = `任务${index+1}课程大纲`
+      //   text = this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail2
+      // }else if(string == 'aiCpote1'){
+      //   area = '概念群'
+      //   text = this.cpote.cpote1
+      // }else if(string == 'aiCpote2'){
+      //   area = '问题链'
+      //   text = this.cpote.cpote2
+      // }else if(string == 'aiCpote3'){
+      //   area = '目标层'
+      //   text = this.cpote.cpote3
+      // }else if(string == 'aiCpote4'){
+      //   area = '任务簇'
+      //   text = this.cpote.cpote4
+      // }else if(string.indexOf('teacherDetail2') != -1){
+      //   let index = parseInt(string.split('teacherDetail2-')[1])
+      //   area = `任务${index+1}教案`
+      //   text = this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3
+      // }else if(string.indexOf('aiDetail2') != -1){
+      //   let index = parseInt(string.split('aiDetail2-')[1])
+      //   area = `任务${index+1}任务描述`
+      //   text = this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail
+      // }else if(string.indexOf('aiDetail3') != -1){
+      //   let index = parseInt(string.split('-')[1])
+      //   let index2 = parseInt(string.split('-')[2])
+      //   area = `任务${index+1}工具${index2+1}的工具描述`
+      //   text = this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose[index2].toolDetail
+      // }
+      
+
+
+
+      // if(this.isQuote[string] && text){
+      //   this.quoteArray.push({
+      //     string,
+      //     area,
+      //     value: text
+      //   })
+      // }
+      
+      
+  
+      console.log(this.isQuote)
+    },
+    setIsQuote(string){
+      this.isQuote[string] = false
     }
   },
   beforeDestroy() {
@@ -27143,4 +27240,8 @@ ol {
   display: flex;
   justify-content: space-between;
 }
+
+.custom-switch >>> .el-switch__label.is-active {
+  color: #0061FF;
+}
 </style>

+ 370 - 191
src/components/pages/aiAddCourse/aiBoxRight.vue

@@ -10,25 +10,17 @@
         </div>
         <div style="margin-top:20px;margin-bottom:20px ; margin-right: auto;">
           <div class="role">
-            <img
-              :src="
-                item.fileid
-                  ? item.fileid
-                  : require('../../../assets/icon/new/role1.png')
-              "
-            />
+            <img :src="item.fileid
+                ? item.fileid
+                : require('../../../assets/icon/new/role1.png')
+              " />
           </div>
-          <div
-            element-loading-background="#f6f9ff"
-            :style="{
-              minHeight: item.loading ? '50px' : 'unset',
-              minWidth: item.loading ? '50px' : 'unset'
-            }"
-            class="content"
-            v-loading="item.loading"
-          >
-            <span class="vditor-reset" v-html="item.aiContent"></span
-            ><span class="createTime" v-text="item.createtime"></span>
+          <div element-loading-background="#f6f9ff" :style="{
+            minHeight: item.loading ? '50px' : 'unset',
+            minWidth: item.loading ? '50px' : 'unset'
+          }" class="content" v-loading="item.loading">
+            <span class="vditor-reset" v-html="item.aiContent"></span><span class="createTime"
+              v-text="item.createtime"></span>
           </div>
         </div>
       </div>
@@ -40,27 +32,14 @@
           <div class="content">
             <div class="span" @click="addAllTask()">
               <div class="check">
-                <img
-                  :src="checkImg"
-                  alt=""
-                  v-if="checkArray.length !== course.length"
-                />
+                <img :src="checkImg" alt="" v-if="checkArray.length !== course.length" />
                 <img :src="checkIsImg" alt="" v-else />
               </div>
               <span>全选</span>
             </div>
-            <div
-              class="span"
-              v-for="(item, index) in course"
-              :key="index"
-              @click="addTask(index)"
-            >
+            <div class="span" v-for="(item, index) in course" :key="index" @click="addTask(index)">
               <div class="check">
-                <img
-                  :src="checkImg"
-                  alt=""
-                  v-if="checkArray.indexOf(index) === -1"
-                />
+                <img :src="checkImg" alt="" v-if="checkArray.indexOf(index) === -1" />
                 <img :src="checkIsImg" alt="" v-else />
               </div>
               <span>任务{{ index + 1 }}</span>
@@ -70,31 +49,16 @@
         <div class="part">
           <div class="title">选择优化的部分:</div>
           <div class="content">
-            <div
-              class="span"
-              v-for="(item, index) in partArray"
-              :key="index"
-              :class="{ active: part == item.name }"
-              @click="checkPart(item.name)"
-            >
+            <div class="span" v-for="(item, index) in partArray" :key="index" :class="{ active: part == item.name }"
+              @click="checkPart(item.name)">
               {{ item.name }}
             </div>
           </div>
         </div>
       </div>
-      <span
-        class="check"
-        :class="{ isCheck: checkBool }"
-        v-if="!checkArray.length && !part"
-        @click="checkBool = !checkBool"
-        >选择优化内容</span
-      >
-      <span
-        class="check"
-        :class="{ isCheck: checkBool }"
-        @click="checkBool = !checkBool"
-        v-else
-      >
+      <span class="check" :class="{ isCheck: checkBool }" v-if="!checkArray.length && !part"
+        @click="checkBool = !checkBool">选择优化内容</span>
+      <span class="check" :class="{ isCheck: checkBool }" @click="checkBool = !checkBool" v-else>
         <el-tooltip :content="taskName" placement="top" effect="dark">
           <!-- content to trigger tooltip here -->
           <span>{{ taskName }}</span>
@@ -103,68 +67,39 @@
     </div>
     <div class="ai_body_input">
       <div class="ai_b_i_btnArea">
-        <span @click.stop="clear()">
-          <svg
-            width="20"
-            height="20"
-            viewBox="0 0 20 20"
-            fill="none"
-            xmlns="http://www.w3.org/2000/svg"
-          >
-            <path
-              fill-rule="evenodd"
-              clip-rule="evenodd"
-              d="M2.5 3.125C2.5 2.77982 2.77982 2.5 3.125 2.5H16.875C17.2202 2.5 17.5 2.77982 17.5 3.125V8.02715C17.5 8.37233 17.2202 8.65215 16.875 8.65215C16.5298 8.65215 16.25 8.37233 16.25 8.02715V3.75H3.75V16.25H8.125C8.47018 16.25 8.75 16.5298 8.75 16.875C8.75 17.2202 8.47018 17.5 8.125 17.5H3.125C2.77982 17.5 2.5 17.2202 2.5 16.875V3.125Z"
-            />
-            <path
-              fill-rule="evenodd"
-              clip-rule="evenodd"
-              d="M5.625 6.1521C5.625 5.80692 5.90482 5.5271 6.25 5.5271H13.125C13.4702 5.5271 13.75 5.80692 13.75 6.1521C13.75 6.49728 13.4702 6.7771 13.125 6.7771H6.25C5.90482 6.7771 5.625 6.49728 5.625 6.1521Z"
-            />
-            <path
-              fill-rule="evenodd"
-              clip-rule="evenodd"
-              d="M5.625 9.2771C5.625 8.93192 5.90482 8.6521 6.25 8.6521H9.37496C9.72014 8.6521 9.99996 8.93192 9.99996 9.2771C9.99996 9.62228 9.72014 9.9021 9.37496 9.9021H6.25C5.90482 9.9021 5.625 9.62228 5.625 9.2771Z"
-            />
-            <path
-              fill-rule="evenodd"
-              clip-rule="evenodd"
-              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"
-            />
+        <span class="clear" @click.stop="clear()">
+          <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M2.5 3.125C2.5 2.77982 2.77982 2.5 3.125 2.5H16.875C17.2202 2.5 17.5 2.77982 17.5 3.125V8.02715C17.5 8.37233 17.2202 8.65215 16.875 8.65215C16.5298 8.65215 16.25 8.37233 16.25 8.02715V3.75H3.75V16.25H8.125C8.47018 16.25 8.75 16.5298 8.75 16.875C8.75 17.2202 8.47018 17.5 8.125 17.5H3.125C2.77982 17.5 2.5 17.2202 2.5 16.875V3.125Z" />
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M5.625 6.1521C5.625 5.80692 5.90482 5.5271 6.25 5.5271H13.125C13.4702 5.5271 13.75 5.80692 13.75 6.1521C13.75 6.49728 13.4702 6.7771 13.125 6.7771H6.25C5.90482 6.7771 5.625 6.49728 5.625 6.1521Z" />
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              d="M5.625 9.2771C5.625 8.93192 5.90482 8.6521 6.25 8.6521H9.37496C9.72014 8.6521 9.99996 8.93192 9.99996 9.2771C9.99996 9.62228 9.72014 9.9021 9.37496 9.9021H6.25C5.90482 9.9021 5.625 9.62228 5.625 9.2771Z" />
+            <path fill-rule="evenodd" clip-rule="evenodd"
+              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>
-        <div>
+        <span class="clear" @click.stop="showjList = !showjList" v-if="jArray.length">
+          <span>查看</span>
+        </span>
+        <div style="margin-left: auto;">
           <el-switch v-model="continuous"></el-switch>
           <span @click.stop="continuous = !continuous">连续对话</span>
         </div>
       </div>
 
-      <div
-        class="ai_b_i_roleListBox"
-        ref="roleListRef"
-        v-if="showRoleList && choseRoleList.length > 0"
-      >
-        <div
-          :class="[
-            'ai_b_i_rlb_item',
-            index == choseRoleItem ? 'ai_b_i_rlb_itemActive' : ''
-          ]"
-          :ref="`roleItem${index}Ref`"
-          v-for="(item, index) in choseRoleList"
-          :key="item.id"
-          @mouseover="choseRoleItem = index"
-          @click.stop="choseRole(item)"
-        >
+      <div class="ai_b_i_roleListBox" ref="roleListRef" v-if="showRoleList && choseRoleList.length > 0">
+        <div :class="[
+          'ai_b_i_rlb_item',
+          index == choseRoleItem ? 'ai_b_i_rlb_itemActive' : ''
+        ]" :ref="`roleItem${index}Ref`" v-for="(item, index) in choseRoleList" :key="item.id"
+          @mouseover="choseRoleItem = index" @click.stop="choseRole(item)">
           <div class="ai_b_i_rlb_itemTop">
-            <img
-              :src="
-                item.headUrl
-                  ? item.headUrl
-                  : require('../../../assets/icon/new/role1.png')
-              "
-              alt=""
-            />
+            <img :src="item.headUrl
+                ? item.headUrl
+                : require('../../../assets/icon/new/role1.png')
+              " alt="" />
             <div class="ai_b_i_rlb_i_name">
               <span>{{ item.assistantName }}</span>
               <span>作者:{{ item.username }}</span>
@@ -175,28 +110,28 @@
           </div>
         </div>
       </div>
-
+      <div class="ai_b_i_jListPanel" @click="showjList = !showjList" v-if="showjList && jArray.length > 0"></div>
+      <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" placement="top" effect="dark" popper-class="text_tooltip2">
+            <!-- content to trigger tooltip here -->
+            <span>{{ item.area }}:{{ item.value }}</span>
+          </el-tooltip>
+          <div class="cancel" @click="cancelJ(item.string)">×</div>
+        </div>
+      </div>
       <!-- <div class="ai_b_i_textListBox">
 				<div class="ai_b_i_tlb_left"></div>
 				<div class="ai_b_i_tlb_right"></div>
 			</div> -->
       <!-- @input="inputChange" -->
 
-      <textarea
-        class="ai_body_input_textarea"
-        @keydown="textareaKeydown"
-        ref="textareaRef"
-        v-model.trim="courseText"
-        placeholder="在此输入您想了解的内容"
-      ></textarea>
-      <div
-        :class="[
-          'c_pub_button_confirm',
-          courseText ? '' : 'c_pub_button_confirmDisabled'
-        ]"
-        v-if="!loading"
-        @click="addContent"
-      >
+      <textarea class="ai_body_input_textarea" @keydown="textareaKeydown" ref="textareaRef" v-model.trim="courseText"
+        placeholder="在此输入您想了解的内容"></textarea>
+      <div :class="[
+        'c_pub_button_confirm',
+        courseText ? '' : 'c_pub_button_confirmDisabled'
+      ]" v-if="!loading" @click="addContent">
         发送
       </div>
     </div>
@@ -235,11 +170,40 @@ export default {
     courseId: {
       type: String,
       default: ""
-    }
+    },
+    quoteArray: {
+      type: Object,
+      default: function () {
+        return {};
+      }
+    },
+    teacherCourseText: {
+      type: String,
+      default: ""
+    },
+    targetCourseText: {
+      type: String,
+      default: ""
+    },
+    courseText2: {
+      type: String,
+      default: ""
+    },
+    targetCourseText2: {
+      type: String,
+      default: ""
+    },
+    cpote: {
+      type: Object,
+      default: function () {
+        return {};
+      }
+    },
   },
   data() {
     return {
       array: [],
+      jArray: [],
       courseText: "",
       checkImg: checkImg,
       checkIsImg: checkIsImg,
@@ -322,7 +286,8 @@ export default {
       showRoleList: false,
       choseRoleItem: 0,
       choseTextItem: 0,
-      continuous: false
+      continuous: false,
+      showjList: false
     };
   },
   watch: {
@@ -331,6 +296,10 @@ export default {
       deep: true,
       handler(newValue, oldValue) {
         this.course = this.unitJson[0].chapterInfo[0].taskJson;
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
       }
     },
     courseId: {
@@ -346,9 +315,135 @@ export default {
           });
         }
       }
-    }
+    },
+    quoteArray: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
+      }
+    },
+    teacherCourseText: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
+      }
+    },
+    targetCourseText: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
+      }
+    },
+    courseText2: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
+      }
+    },
+    targetCourseText2: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
+      }
+    },
+    cpote: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.jArray = this.getString();
+        if (!this.jArray.length) {
+          this.showjList = false
+        }
+      }
+    },
   },
   methods: {
+    cancelJ(string) {
+      this.$emit('setIsQuote', string)
+    },
+    getString() {
+      let quoteArray = []
+      let array = Object.keys(this.quoteArray)
+      array.forEach(item => {
+        if (!this.quoteArray[item]) {
+          return
+        }
+        let string = item
+        let area = ''
+        let text = ''
+        if (string == 'aiteacherTextDetail') {
+          area = '已有教案摘要'
+          text = this.teacherCourseText
+        } else if (string == 'aitargetTextDetail') {
+          area = '课程目标'
+          text = this.targetCourseText
+        } else if (string == 'aiDetail') {
+          area = '课程简要描述'
+          text = this.courseText2
+        } else if (string == 'aitargetTextDetail2') {
+          area = '课程目标'
+          text = this.targetCourseText2
+        } else if (string.indexOf('aiDetail1') != -1) {
+          let index = parseInt(string.split('aiDetail1-')[1])
+          area = `任务${index + 1}课程大纲`
+          text = this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail2
+        } else if (string == 'aiCpote1') {
+          area = '概念群'
+          text = this.cpote.cpote1
+        } else if (string == 'aiCpote2') {
+          area = '问题链'
+          text = this.cpote.cpote2
+        } else if (string == 'aiCpote3') {
+          area = '目标层'
+          text = this.cpote.cpote3
+        } else if (string == 'aiCpote4') {
+          area = '任务簇'
+          text = this.cpote.cpote4
+        } else if (string.indexOf('teacherDetail2') != -1) {
+          let index = parseInt(string.split('teacherDetail2-')[1])
+          area = `任务${index + 1}教案`
+          text = this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3
+        } else if (string.indexOf('aiDetail2') != -1) {
+          let index = parseInt(string.split('aiDetail2-')[1])
+          area = `任务${index + 1}任务描述`
+          text = this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail
+        } else if (string.indexOf('aiDetail3') != -1) {
+          let index = parseInt(string.split('-')[1])
+          let index2 = parseInt(string.split('-')[2])
+          area = `任务${index + 1}工具${index2 + 1}的工具描述`
+          text = this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose[index2].toolDetail
+        }
+
+        quoteArray.push({
+          string,
+          area,
+          value: text
+        })
+      })
+
+      return quoteArray
+
+    },
     promptTit() {
       if (!this.loading && !this.courseText) {
         this.$message({
@@ -365,9 +460,10 @@ export default {
     addContent() {
       let message = this.courseText;
       if (this.courseText) {
-        let msg = `
-          ATTENTION: Use '##' to SPLIT SECTIONS, not '#'.Output format carefully referenced "Format example".`;
+        let msg = ``;
         if (this.checkArray.length) {
+          msg = `
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'.Output format carefully referenced "Format example".`
           let task = [];
           if (this.part == "全部内容") {
             for (var i = 0; i < this.checkArray.length; i++) {
@@ -387,19 +483,36 @@ export default {
           }
 
           msg += `
-          --------
           ## 修改内容
           ${JSON.stringify(task)}
           `;
 
           msg += `
-          --------
           ## 要求
           ${this.courseText}
           `;
           message = msg;
         }
 
+        if (this.jArray.length) {
+          let task = [];
+          for (var i = 0; i < this.jArray.length; i++) {
+            let _index = this.jArray[i];
+            task.push(`${_index.area}: ${_index.value.replaceAll('\n', '')}`);
+          }
+
+          msg += `
+          ## 参考资料
+          ${task.join('\n')}
+          `;
+
+          msg += `
+          ## 要求
+          根据<参考资料>中的内容实现以下要求:${this.courseText}
+          `;
+          message = msg;
+        }
+
         // 这里处理@的角色
         let _atRoleList = [];
         let _roleList = [...this.roleList, ...this.publicRoleList];
@@ -664,7 +777,7 @@ export default {
       };
       this.ajax
         .post("https://gpt4.cocorobo.cn/insert_chat", params)
-        .then(res => {});
+        .then(res => { });
     },
     // 获取对应的聊天记录
     getChatList() {
@@ -844,7 +957,7 @@ export default {
               this.$message.error("清除聊天记录失败");
             });
         })
-        .catch(_ => {});
+        .catch(_ => { });
     },
     getRoleList() {
       this.roleList = [];
@@ -890,9 +1003,8 @@ export default {
     },
     choseRole(item) {
       let _lastAtIndex = this.courseText.lastIndexOf("@");
-      this.courseText = `${this.courseText.slice(0, _lastAtIndex)}@${
-        item.assistantName
-      } `;
+      this.courseText = `${this.courseText.slice(0, _lastAtIndex)}@${item.assistantName
+        } `;
       this.$refs.textareaRef.focus();
       this.showRoleList = false;
     }
@@ -936,6 +1048,7 @@ export default {
     });
     this.getRoleList();
     this.getPublicRoleList();
+    this.jArray = this.getString();
   }
 };
 </script>
@@ -1019,29 +1132,32 @@ export default {
 }
 
 .ai_b_i_btnArea {
-  width: 100%;
+  width: calc(100% - 10px);
   position: absolute;
   bottom: calc(100% + 5px);
   height: 30px;
   display: flex;
-  justify-content: space-between;
+  /* justify-content: space-between; */
 }
 
-.ai_b_i_btnArea > div {
+.ai_b_i_btnArea>div {
   display: flex;
   align-items: center;
-	
+
 }
 
-.ai_b_i_btnArea > div > span {
+.ai_b_i_btnArea>div>span {
   margin-left: 5px;
-	cursor: pointer;
+  cursor: pointer;
+}
+
+.ai_b_i_btnArea>.clear+.clear {
+  margin-left: 10px;
 }
 
-.ai_b_i_btnArea > span {
+.ai_b_i_btnArea>.clear {
   box-sizing: border-box;
-  height: 90%;
-  width: 90px;
+  padding: 5px 10px;
   box-sizing: border-box;
   cursor: pointer;
   border: solid 1px #3781fb;
@@ -1053,19 +1169,19 @@ export default {
   background-color: #fff;
 }
 
-.ai_b_i_btnArea > span > svg {
+.ai_b_i_btnArea>.clear>svg {
   width: 17px;
   height: 17px;
   margin-right: 5px;
   fill: black;
 }
 
-.ai_b_i_btnArea > span:hover {
+.ai_b_i_btnArea>.clear:hover {
   background-color: #ebf4fe;
   color: #409eff;
 }
 
-.ai_b_i_btnArea > span:hover > svg {
+.ai_b_i_btnArea>.clear:hover>svg {
   fill: #409eff;
 }
 
@@ -1138,7 +1254,7 @@ export default {
   display: flex;
 }
 
-.ai_b_i_rlb_itemTop > img {
+.ai_b_i_rlb_itemTop>img {
   width: 40px;
   height: 40px;
   margin-right: 10px;
@@ -1146,17 +1262,17 @@ export default {
   overflow: hidden;
 }
 
-.ai_b_i_rlb_itemTop > div {
+.ai_b_i_rlb_itemTop>div {
   display: flex;
   flex-direction: column;
 }
 
-.ai_b_i_rlb_itemTop > div > span {
+.ai_b_i_rlb_itemTop>div>span {
   font-size: 16px;
   font-weight: bold;
 }
 
-.ai_b_i_rlb_itemTop > div > span:last-child {
+.ai_b_i_rlb_itemTop>div>span:last-child {
   font-size: 14px;
   color: #999;
 }
@@ -1166,7 +1282,7 @@ export default {
   display: flex;
 }
 
-.ai_b_i_rlb_itemBottom > span {
+.ai_b_i_rlb_itemBottom>span {
   width: 60px;
   height: 30px;
   border-radius: 15px;
@@ -1188,25 +1304,35 @@ export default {
 }
 
 .ai_body_input_textarea::-webkit-input-placeholder {
-  font-size: 16px; /* 修改placeholder字体大小 */
-  color: grey; /* 修改placeholder文字颜色 */
+  font-size: 16px;
+  /* 修改placeholder字体大小 */
+  color: grey;
+  /* 修改placeholder文字颜色 */
 }
 
 .ai_body_input_textarea::-moz-placeholder {
-  font-size: 16px; /* 修改placeholder字体大小 */
-  color: grey; /* 修改placeholder文字颜色 */
-  opacity: 1; /* 修复Firefox的透明度问题 */
+  font-size: 16px;
+  /* 修改placeholder字体大小 */
+  color: grey;
+  /* 修改placeholder文字颜色 */
+  opacity: 1;
+  /* 修复Firefox的透明度问题 */
 }
 
 .ai_body_input_textarea::-moz-placeholder {
-  font-size: 16px; /* 修改placeholder字体大小 */
-  color: grey; /* 修改placeholder文字颜色 */
-  opacity: 1; /* 修复Firefox的透明度问题 */
+  font-size: 16px;
+  /* 修改placeholder字体大小 */
+  color: grey;
+  /* 修改placeholder文字颜色 */
+  opacity: 1;
+  /* 修复Firefox的透明度问题 */
 }
 
 .ai_body_input_textarea::-ms-input-placeholder {
-  font-size: 16px; /* 修改placeholder字体大小 */
-  color: grey; /* 修改placeholder文字颜色 */
+  font-size: 16px;
+  /* 修改placeholder字体大小 */
+  color: grey;
+  /* 修改placeholder文字颜色 */
 }
 
 .ai_body_input_textarea::-webkit-scrollbar {
@@ -1222,6 +1348,7 @@ export default {
   background: #c9c9c9;
   border-radius: 10px;
 }
+
 .ai_body_input_textarea::-webkit-scrollbar-thumb:hover {
   background: #c9c9c9;
 }
@@ -1262,26 +1389,26 @@ export default {
   flex-direction: column;
 }
 
-.dialog_content > div {
+.dialog_content>div {
   display: flex;
   align-items: flex-start;
   width: 100%;
 }
 
-.dialog_content + .dialog_content {
+.dialog_content+.dialog_content {
   margin: 15px 0;
 }
 
-.dialog_content > div .right {
+.dialog_content>div .right {
   flex-direction: row-reverse;
 }
 
-.dialog_content > div .right .role {
+.dialog_content>div .right .role {
   margin-right: 0;
   margin-left: 10px;
 }
 
-.dialog_content > div .role {
+.dialog_content>div .role {
   min-width: 30px;
   width: 30px;
   height: 30px;
@@ -1289,13 +1416,13 @@ export default {
   border-radius: 50%;
 }
 
-.dialog_content > div .role > img {
+.dialog_content>div .role>img {
   height: 100%;
   width: 100%;
   border-radius: 100%;
 }
 
-.dialog_content > div .content {
+.dialog_content>div .content {
   padding: 10px 10px;
   border-radius: 2px 8px 8px 8px;
   width: auto;
@@ -1320,7 +1447,7 @@ export default {
   color: #919191;
 }
 
-.dialog_content > div .content2 {
+.dialog_content>div .content2 {
   background: #3681fc;
   color: #fff;
   border-radius: 8px 2px 8px 8px;
@@ -1331,7 +1458,7 @@ export default {
   position: relative;
 }
 
-.ai_body_select > .check {
+.ai_body_select>.check {
   background: #e7e7e7;
   display: flex;
   width: fit-content;
@@ -1347,7 +1474,7 @@ export default {
   cursor: pointer;
 }
 
-.ai_body_select > .check::before {
+.ai_body_select>.check::before {
   content: "";
   width: 15px;
   height: 15px;
@@ -1357,7 +1484,7 @@ export default {
   margin-right: 5px;
 }
 
-.ai_body_select > .check::after {
+.ai_body_select>.check::after {
   content: "";
   width: 15px;
   height: 15px;
@@ -1367,7 +1494,7 @@ export default {
   margin-right: 5px;
 }
 
-.ai_body_select > .isCheck {
+.ai_body_select>.isCheck {
   background: #0061ff;
   display: flex;
   width: fit-content;
@@ -1385,7 +1512,7 @@ export default {
   box-sizing: border-box;
 }
 
-.ai_body_select > .isCheck > span {
+.ai_body_select>.isCheck>span {
   width: calc(100% - 40px);
   display: block;
   overflow: hidden;
@@ -1393,7 +1520,7 @@ export default {
   text-overflow: ellipsis;
 }
 
-.ai_body_select > .isCheck::before {
+.ai_body_select>.isCheck::before {
   content: "";
   width: 15px;
   height: 15px;
@@ -1403,7 +1530,7 @@ export default {
   margin-right: 5px;
 }
 
-.ai_body_select > .isCheck::after {
+.ai_body_select>.isCheck::after {
   content: "";
   width: 15px;
   height: 15px;
@@ -1413,7 +1540,7 @@ export default {
   margin-right: 5px;
 }
 
-.ai_body_select > .checkBox {
+.ai_body_select>.checkBox {
   position: absolute;
   bottom: 40px;
   border: 1px solid #e0eafb;
@@ -1425,37 +1552,36 @@ export default {
   box-sizing: border-box;
 }
 
-.ai_body_select > .checkBox > .task > .title,
-.ai_body_select > .checkBox > .part > .title {
+.ai_body_select>.checkBox>.task>.title,
+.ai_body_select>.checkBox>.part>.title {
   font-size: 14px;
   font-weight: 700;
   margin-bottom: 5px;
 }
 
-.ai_body_select > .checkBox > .task {
+.ai_body_select>.checkBox>.task {
   height: calc(100% - 60px);
 }
 
-.ai_body_select > .checkBox > .part {
-}
+.ai_body_select>.checkBox>.part {}
 
-.ai_body_select > .checkBox > .task > .content {
+.ai_body_select>.checkBox>.task>.content {
   height: calc(100% - 40px);
   overflow: auto;
 }
 
-.ai_body_select > .checkBox > .task > .content > .span + .span {
+.ai_body_select>.checkBox>.task>.content>.span+.span {
   margin-top: 5px;
 }
 
-.ai_body_select > .checkBox > .task > .content > .span {
+.ai_body_select>.checkBox>.task>.content>.span {
   display: flex;
   align-items: center;
   font-size: 14px;
   cursor: pointer;
 }
 
-.ai_body_select > .checkBox > .task > .content > .span > .check {
+.ai_body_select>.checkBox>.task>.content>.span>.check {
   width: 13px;
   height: 13px;
   display: flex;
@@ -1463,27 +1589,80 @@ export default {
   margin-right: 5px;
 }
 
-.ai_body_select > .checkBox > .task > .content > .span > .check > img {
+.ai_body_select>.checkBox>.task>.content>.span>.check>img {
   width: 100%;
   height: 100%;
 }
 
-.ai_body_select > .checkBox > .part > .content {
+.ai_body_select>.checkBox>.part>.content {
   display: flex;
   align-items: center;
   font-size: 14px;
   justify-content: space-between;
 }
 
-.ai_body_select > .checkBox > .part > .content > .span {
+.ai_body_select>.checkBox>.part>.content>.span {
   padding: 3px 6px;
   border: 1px solid #e0eafb;
   border-radius: 40px;
   cursor: pointer;
 }
 
-.ai_body_select > .checkBox > .part > .content > .span.active {
+.ai_body_select>.checkBox>.part>.content>.span.active {
   color: #0061ff;
   border-color: #0061ff;
 }
+
+.ai_b_i_jListPanel {
+  width: 400px;
+  height: 100%;
+  top: 0;
+  right: 0;
+  position: fixed;
+  /* background-color: #000; */
+  z-index: 990;
+}
+
+.ai_b_i_jListBox {
+  width: 100%;
+  max-height: 300px;
+  background-color: #fff;
+  position: absolute;
+  bottom: calc(100% + 5px);
+  box-sizing: border-box;
+  padding: 10px;
+  overflow: auto;
+  border-radius: 8px;
+  border: 1px solid #e7e7e7;
+  box-shadow: 0 4px 10px 0 rgba(29, 57, 131, 0.08),
+    1px 1px 20px 4px rgba(29, 57, 131, 0.05);
+  z-index: 999;
+}
+
+.jlist_box {
+  background: #f1f1f1;
+  border-radius: 5px;
+  margin-bottom: 10px;
+  padding: 8px 18px 8px 8px;
+  box-sizing: border-box;
+  width: 100%;
+  position: relative;
+}
+
+.jlist_box .cancel {
+  position: absolute;
+  top: 8px;
+  right: 5px;
+  cursor: pointer;
+  font-size: 14px;
+}
+
+.jlist_box>span {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 3;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  word-break: break-all;
+}
 </style>

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov