Browse Source

Merge branch 'beta'

lsc 2 months ago
parent
commit
6c9555005c
28 changed files with 1478 additions and 392 deletions
  1. 1 1
      dist/index.html
  2. 0 0
      dist/static/css/app.69dae9f1eb5f33fa8a49717afaf55a96.css
  3. 0 0
      dist/static/css/app.69dae9f1eb5f33fa8a49717afaf55a96.css.map
  4. 0 0
      dist/static/js/app.da2a63f4612844236887.js
  5. 0 0
      dist/static/js/app.da2a63f4612844236887.js.map
  6. 0 0
      dist/static/js/manifest.161e82026ac2ae03ab6f.js.map
  7. 1 0
      src/assets/icon/appStore/arrow.svg
  8. 3 0
      src/assets/icon/appStore/collect2_icon.svg
  9. 12 0
      src/assets/icon/appStore/collect_icon.svg
  10. 4 0
      src/assets/icon/appStore/find_icon.svg
  11. 4 0
      src/assets/icon/appStore/history2_icon.svg
  12. 5 0
      src/assets/icon/appStore/history_icon.svg
  13. 1 1
      src/components/pages/aiAddCourse/aiBoxRight.vue
  14. 11 8
      src/components/pages/aiEasy/addCourse.vue
  15. 34 10
      src/components/pages/appStore/components/saveCard.vue
  16. 1 1
      src/components/pages/appStore/dialog/addAppDialog.vue
  17. 5 0
      src/components/pages/appStore/dialog/releaseAppDialog.vue
  18. 36 7
      src/components/pages/appStore/dialog/selectAppDialog.vue
  19. 451 69
      src/components/pages/appStore/views/appManagement.vue
  20. 10 8
      src/components/pages/classroomObservation/components/messageArea.vue
  21. 1 0
      src/components/pages/newCourse/addCourse.vue
  22. 8 7
      src/components/pages/test/check/docxTemplateDialog.vue
  23. 581 172
      src/components/pages/test/check/index.vue
  24. 249 89
      src/components/pages/test/checkAi/aiLeader.vue
  25. 9 3
      src/components/pages/test/checkAi/eChartTemplate.vue
  26. 5 3
      src/components/pages/test/choseCheck/index.vue
  27. 7 7
      src/components/pages/test/smarter.vue
  28. 39 6
      src/components/pages/testPerson/info/infoDialog/index.vue

+ 1 - 1
dist/index.html

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

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


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


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


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


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


+ 1 - 0
src/assets/icon/appStore/arrow.svg

@@ -0,0 +1 @@
+<svg t="1736317821638" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4274" width="200" height="200"><path d="M512 693.333333c-14.933333 0-29.866667-4.266667-40.533333-14.933333l-277.33333399-234.666667c-27.733333-23.466667-29.866667-64-8.53333301-89.6 23.466667-27.733333 64-29.866667 89.6-8.53333299L512 546.133333l236.8-200.53333299c27.733333-23.466667 68.266667-19.19999999 89.6 8.53333299 23.466667 27.733333 19.19999999 68.266667-8.53333301 89.6l-277.33333399 234.666667c-10.666667 10.666667-25.6 14.933333-40.533333 14.933333z" fill="#A2A2A2" p-id="4275"></path></svg>

+ 3 - 0
src/assets/icon/appStore/collect2_icon.svg

@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8.00001 1.5C8.1894 1.5 8.36253 1.61128 8.44723 1.78745L10.3276 5.69853L14.062 6.18401C14.2515 6.20865 14.411 6.34338 14.4729 6.53124C14.5349 6.71909 14.4886 6.92726 14.3536 7.06769L11.5537 9.9795L12.4851 13.8539C12.5302 14.0413 12.4715 14.2393 12.3329 14.368C12.1942 14.4967 11.9984 14.5347 11.8245 14.4669L8.00001 12.9754L4.17558 14.4669C4.0016 14.5347 3.80578 14.4967 3.66714 14.368C3.52849 14.2393 3.46988 14.0413 3.51494 13.8539L4.44628 9.9795L1.64646 7.06769C1.51143 6.92726 1.4651 6.71909 1.52708 6.53124C1.58905 6.34338 1.7485 6.20865 1.938 6.18401L5.67247 5.69853L7.5528 1.78745C7.6375 1.61128 7.81063 1.5 8.00001 1.5ZM8.00001 3.18275L6.44723 6.41255C6.37246 6.56806 6.22792 6.67442 6.06203 6.69598L3.07646 7.08411L5.35357 9.4523C5.47776 9.58146 5.52768 9.76891 5.48509 9.94611L4.71603 13.1454L7.82445 11.9331C7.93764 11.889 8.06238 11.889 8.17558 11.9331L11.284 13.1454L10.5149 9.94611C10.4723 9.76891 10.5223 9.58146 10.6465 9.4523L12.9236 7.08411L9.938 6.69598C9.77211 6.67442 9.62756 6.56806 9.5528 6.41255L8.00001 3.18275Z" fill="black" fill-opacity="0.4"/>
+</svg>

+ 12 - 0
src/assets/icon/appStore/collect_icon.svg

@@ -0,0 +1,12 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_979_7372)">
+<path d="M8.0851 0.390411C12.2643 0.470411 15.4697 3.63745 15.4806 7.73601C15.4915 11.9459 12.3971 15.184 8.12798 15.2192C3.93822 15.2538 0.711662 12.0947 0.692462 7.82337C0.673902 3.63553 3.9027 0.473931 8.0851 0.390411Z" fill="#FFF3D0"/>
+<path d="M4.91328 11.9315C5.0384 11.1238 5.10335 10.3891 5.27967 9.68257C5.38367 9.26593 5.27135 9.02081 4.99455 8.75521C4.56287 8.34145 4.152 7.90497 3.73568 7.47489C3.48864 7.21985 3.19392 6.95073 3.32064 6.56161C3.46496 6.11809 3.87488 6.00961 4.29856 5.95137C4.8352 5.87777 5.36768 5.76993 5.90496 5.70401C6.33056 5.65185 6.56096 5.44289 6.71424 5.03393C6.93343 4.45089 7.21024 3.88513 7.51104 3.33857C7.87936 2.66881 8.43808 2.66273 8.8128 3.32001C9.0816 3.79105 9.36639 4.27489 9.50815 4.79073C9.71359 5.53793 10.2234 5.72577 10.8867 5.78753C11.3446 5.83009 11.8051 5.88865 12.2544 5.98561C13.0637 6.16065 13.3424 6.84545 12.7046 7.31809C11.1107 8.50017 10.7798 9.92865 11.3872 11.7514C11.5974 12.3821 10.8662 12.8947 10.3181 12.4899C8.85472 11.4086 7.496 11.3565 6.02911 12.4826C5.51295 12.8797 4.91872 12.4739 4.91328 11.9315Z" fill="#FFCB01"/>
+<path d="M7.57921 6.44574C7.70881 6.45438 7.87713 6.41982 7.92993 6.56766C8.00417 6.77438 7.82593 6.86846 7.67521 6.89726C7.10337 7.00702 6.76513 7.32574 6.68353 7.9091C6.66369 8.05118 6.58145 8.19614 6.43777 8.18142C6.24545 8.16158 6.21441 7.98398 6.21121 7.81054C6.19905 7.18014 6.93441 6.44382 7.57921 6.44574Z" fill="white"/>
+</g>
+<defs>
+<clipPath id="clip0_979_7372">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 4 - 0
src/assets/icon/appStore/find_icon.svg

@@ -0,0 +1,4 @@
+<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10 1.66666C14.6023 1.66666 18.3334 5.3977 18.3334 9.99999C18.3334 14.6023 14.6023 18.3333 10 18.3333C5.39773 18.3333 1.66669 14.6023 1.66669 9.99999C1.66669 5.3977 5.39773 1.66666 10 1.66666ZM10 2.91666C6.08794 2.91666 2.91669 6.08791 2.91669 9.99999C2.91669 13.9121 6.08794 17.0833 10 17.0833C13.9121 17.0833 17.0834 13.9121 17.0834 9.99999C17.0834 6.08791 13.9121 2.91666 10 2.91666ZM12.9134 6.0202C13.0622 5.96659 13.2231 5.95643 13.3775 5.99092C13.5319 6.02541 13.6732 6.10311 13.7851 6.21495C13.8969 6.32679 13.9746 6.46815 14.0091 6.62251C14.0436 6.77687 14.0334 6.93785 13.9798 7.08666L12.454 11.325C12.3605 11.5847 12.2108 11.8205 12.0156 12.0157C11.8204 12.2108 11.5845 12.3605 11.3248 12.4539L7.08669 13.9798C6.93788 14.0334 6.7769 14.0435 6.62254 14.0091C6.46818 13.9746 6.32682 13.8969 6.21498 13.785C6.10314 13.6732 6.02544 13.5318 5.99095 13.3775C5.95646 13.2231 5.96662 13.0621 6.02023 12.9133L7.54606 8.67499C7.63958 8.4153 7.78927 8.17946 7.98446 7.98431C8.17965 7.78915 8.41552 7.6395 8.67523 7.54603L12.9134 6.0202ZM12.5038 7.49624L9.09856 8.72207C9.01197 8.75323 8.93332 8.80314 8.86824 8.86821C8.80317 8.93329 8.75327 9.01194 8.7221 9.09853L7.49627 12.5037L10.9015 11.2779C10.9881 11.2467 11.0667 11.1968 11.1318 11.1318C11.1969 11.0667 11.2468 10.988 11.2779 10.9014L12.5038 7.49624Z" fill="black"/>
+<path d="M13.0827 6.49062L13.0828 6.49059C13.1423 6.46914 13.2067 6.46508 13.2685 6.47888C13.3302 6.49267 13.3868 6.52375 13.4315 6.56849C13.4762 6.61322 13.5073 6.66977 13.5211 6.73151C13.5349 6.79325 13.5308 6.85765 13.5094 6.91717L13.5094 6.91728L11.9835 11.1556C11.915 11.346 11.8052 11.519 11.662 11.6621C11.5189 11.8052 11.3459 11.9149 11.1555 11.9835L11.1554 11.9835L6.9173 13.5093L6.9172 13.5094C6.85768 13.5308 6.79328 13.5349 6.73154 13.5211C6.6698 13.5073 6.61325 13.4762 6.56852 13.4315C6.52378 13.3867 6.4927 13.3302 6.47891 13.2684C6.46511 13.2067 6.46917 13.1423 6.49062 13.0828L6.49066 13.0827L8.01647 8.84438C8.01648 8.84436 8.01648 8.84435 8.01649 8.84434C8.08507 8.65392 8.19484 8.48098 8.33797 8.33788C8.48111 8.19476 8.65408 8.08502 8.84453 8.01648L8.84458 8.01646L13.0827 6.49062Z" stroke="#0354D7"/>
+</svg>

+ 4 - 0
src/assets/icon/appStore/history2_icon.svg

@@ -0,0 +1,4 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14ZM8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15Z" fill="black" fill-opacity="0.4"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M7.5 5C7.77614 5 8 5.22386 8 5.5V8H10.5C10.7761 8 11 8.22386 11 8.5C11 8.77614 10.7761 9 10.5 9H7.5C7.22386 9 7 8.77614 7 8.5V5.5C7 5.22386 7.22386 5 7.5 5Z" fill="black" fill-opacity="0.4"/>
+</svg>

+ 5 - 0
src/assets/icon/appStore/history_icon.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.99998 12.6667C5.43331 12.6667 3.33331 10.5667 3.33331 8.00004C3.33331 5.43337 5.43331 3.33337 7.99998 3.33337C10.5666 3.33337 12.6666 5.43337 12.6666 8.00004C12.6666 10.5667 10.5666 12.6667 7.99998 12.6667Z" fill="#B6EAFF"/>
+<path d="M7.99998 2.00004C11.3 2.00004 14 4.70004 14 8.00004C14 11.3 11.3 14 7.99998 14C4.69998 14 1.99998 11.3 1.99998 8.00004C1.99998 4.70004 4.69998 2.00004 7.99998 2.00004ZM7.99998 1.33337C4.33331 1.33337 1.33331 4.33337 1.33331 8.00004C1.33331 11.6667 4.33331 14.6667 7.99998 14.6667C11.6666 14.6667 14.6666 11.6667 14.6666 8.00004C14.6666 4.33337 11.6666 1.33337 7.99998 1.33337Z" fill="#1FB6FF"/>
+<path d="M11 10.5334L8.33335 7.86671V3.66671C8.33335 3.50004 8.16669 3.33337 8.00002 3.33337C7.83335 3.33337 7.66669 3.50004 7.66669 3.66671V8.00004C7.66669 8.10004 7.70002 8.16671 7.76669 8.23337L10.5 10.9667C10.6334 11.1 10.8334 11.1 10.9667 10.9667C11.1 10.8334 11.1334 10.6667 11 10.5334Z" fill="#1FB6FF"/>
+</svg>

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

@@ -1825,7 +1825,7 @@ ${message}`;
             content: `帮一下内容想一个名字命名作为word文档的名字,仅输出字符串即可 内容:${str}`
             content: `帮一下内容想一个名字命名作为word文档的名字,仅输出字符串即可 内容:${str}`
           }
           }
         ],
         ],
-        stream: false,
+        stream: true,
         uid: this.userid,
         uid: this.userid,
         mind_map_question: ""
         mind_map_question: ""
       });
       });

+ 11 - 8
src/components/pages/aiEasy/addCourse.vue

@@ -2354,12 +2354,12 @@
                     <!-- <span class="button-toggle" @click="stepShow = !stepShow">{{ stepShow ? '收缩' : '展开' }}</span> -->
                     <!-- <span class="button-toggle" @click="stepShow = !stepShow">{{ stepShow ? '收缩' : '展开' }}</span> -->
                   </div>
                   </div>
                   <div class="stepsBottom" v-if="stepsNav == 1" :style="{
                   <div class="stepsBottom" v-if="stepsNav == 1" :style="{
-                    height:istemplate == 1 ? 'calc(100vh - 300px)' : 'calc(100% - 55px - 60px)',
+                    height:istemplate == 1 ? 'calc(100vh - 300px)' : 'calc(100% - 40px)',
                     position: istemplate == 1 ? 'sticky' : 'unset',
                     position: istemplate == 1 ? 'sticky' : 'unset',
                     top: istemplate == 1 ? '0' : 'unset'
                     top: istemplate == 1 ? '0' : 'unset'
                   }">
                   }">
-                    <!-- <div class="navTop">辅助导航</div> -->
-                    <div class="navBottom" v-if="courseState == 6"  :style="{ height: heightPx }">
+                    <!-- <div class="navTop">辅助导航</div>  :style="{ height: heightPx }"-->
+                    <div class="navBottom" v-if="courseState == 6" >
                       <!-- <div class="navTask noImage" v-if="unitJson[unitIndex].dyName">
                       <!-- <div class="navTask noImage" v-if="unitJson[unitIndex].dyName">
                         <div class="nt_taskBox" style="width: 100%;">
                         <div class="nt_taskBox" style="width: 100%;">
                           <div class="nt_taskTitle"
                           <div class="nt_taskTitle"
@@ -7909,7 +7909,7 @@ export default {
           }
           }
         }
         }
         if (cPan == 2) {
         if (cPan == 2) {
-          this.unitIndex = oldValue;
+          // this.unitIndex = oldValue;
           return;
           return;
         }
         }
         for (var i = 0; i < this.unitJson.length; i++) {
         for (var i = 0; i < this.unitJson.length; i++) {
@@ -7987,7 +7987,7 @@ export default {
         }
         }
         this.inputShow = true;
         this.inputShow = true;
         if (cPan == 2) {
         if (cPan == 2) {
-          this.steps = old;
+          // this.steps = old;
           return;
           return;
         }
         }
         this.goTo(
         this.goTo(
@@ -10461,6 +10461,9 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
                 if(fileid && fileid != 1){
                 if(fileid && fileid != 1){
                   _this.knowFileids.push(fileid)
                   _this.knowFileids.push(fileid)
                 }
                 }
+                if(!_this.courseName){
+                  _this.courseName = fileName.split('.').slice(0, -1).join('.')
+                }
                 console.log(data.Location);
                 console.log(data.Location);
               }
               }
             });
             });
@@ -12518,7 +12521,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       }
       }
       this.inputShow = true;
       this.inputShow = true;
       if (cPan == 2) {
       if (cPan == 2) {
-        this.steps--;
+        // this.steps--;
         return;
         return;
       }
       }
       let params = [
       let params = [
@@ -12589,7 +12592,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       }
       }
       this.inputShow = true;
       this.inputShow = true;
       if (cPan == 2) {
       if (cPan == 2) {
-        this.steps--;
+        // this.steps--;
         return;
         return;
       }
       }
       let params = [
       let params = [
@@ -12654,7 +12657,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       }
       }
       this.inputShow = true;
       this.inputShow = true;
       if (cPan == 2) {
       if (cPan == 2) {
-        this.steps--;
+        // this.steps--;
         return;
         return;
       }
       }
       for (var i = 0; i < this.unitJson.length; i++) {
       for (var i = 0; i < this.unitJson.length; i++) {

+ 34 - 10
src/components/pages/appStore/components/saveCard.vue

@@ -1,6 +1,9 @@
 <template>
 <template>
   <div class="saveCard">
   <div class="saveCard">
-    <span>{{ title }}</span>
+    <span>
+      <img v-if="icon" :src="icon">
+      {{ title }}
+    </span>
     <div class="s_box">
     <div class="s_box">
       <div v-for="(item,index) in data" :key="item.sid" @click="openAppUrl(item)" v-if="data.length>0 && item.id">
       <div v-for="(item,index) in data" :key="item.sid" @click="openAppUrl(item)" v-if="data.length>0 && item.id">
         <div>
         <div>
@@ -59,6 +62,10 @@ export default {
 			type:Number,
 			type:Number,
 			default:0
 			default:0
 		},
 		},
+    icon:{
+      type:String,
+      default:''
+    }
   },
   },
   data() {
   data() {
     return {};
     return {};
@@ -95,14 +102,24 @@ export default {
 .saveCard {
 .saveCard {
   width: 100%;
   width: 100%;
   height: auto;
   height: auto;
-  margin-bottom: 20px;
+  margin-bottom: 10px;
   box-sizing: border-box;
   box-sizing: border-box;
   padding: 10px;
   padding: 10px;
 }
 }
 
 
 .saveCard > span {
 .saveCard > span {
-  font-size: 1.1em;
-  font-weight: bold;
+  font-size: 16px;
+  font-weight: 400;
+  display: flex;
+  color: #00000066;
+  align-items: center;
+  margin-left: 0px;
+}
+
+.saveCard >span >img{
+  width: 20px;
+  height: 20px;
+  margin-right: 5px;
 }
 }
 
 
 .s_box {
 .s_box {
@@ -114,6 +131,7 @@ export default {
 .s_box>div{
 .s_box>div{
 	width: 100%;
 	width: 100%;
 	height: 30px;
 	height: 30px;
+  margin-top: 10px;
 	margin-bottom: 15px;
 	margin-bottom: 15px;
 	display: flex;
 	display: flex;
 	align-items: center;
 	align-items: center;
@@ -122,15 +140,18 @@ export default {
 	transition: .1s;
 	transition: .1s;
 }
 }
 
 
-.s_box>div:hover{
+/* .s_box>div:hover{
 	background-color: aliceblue;
 	background-color: aliceblue;
-}
+} */
 
 
 .s_box>div>div{
 .s_box>div>div{
-	width: 30px;
-	height: 30px;
+	width: 22px;
+	height: 22px;
 	box-sizing: border-box;
 	box-sizing: border-box;
-	padding: 5px;
+  border-radius: 50%;
+  overflow: hidden;
+  margin-right: 10px;
+  margin-left: 15px;
 }
 }
 
 
 .s_box>div>div>svg{
 .s_box>div>div>svg{
@@ -145,10 +166,13 @@ export default {
 
 
 
 
 .s_box>div>span{
 .s_box>div>span{
-	max-width: calc(100% - 30px);
+	max-width: calc(100% - 46px);
 	overflow: hidden;
 	overflow: hidden;
 	text-overflow: ellipsis;
 	text-overflow: ellipsis;
 	white-space: nowrap;
 	white-space: nowrap;
+  font-size: 16px;
+  font-weight: 400;
+  color: #000000E5;
 }
 }
 
 
 .s_box>span{
 .s_box>span{

+ 1 - 1
src/components/pages/appStore/dialog/addAppDialog.vue

@@ -224,7 +224,7 @@ export default {
         // nlabel: [
         // nlabel: [
         //   { required: true, message: "请输入应用标签", trigger: "blur" }
         //   { required: true, message: "请输入应用标签", trigger: "blur" }
         // ],
         // ],
-        // ntype: [{ required: true, message: "请选择应用类型", trigger: "blur" }],
+        type: [{ required: true, message: "请选择应用类型", trigger: "blur" }],
         // ndetail:[{required:true,message:"请输入应用简介",trigger:"blur"}],
         // ndetail:[{required:true,message:"请输入应用简介",trigger:"blur"}],
         juri: [{ required: true, message: "请选择权限管理", trigger: "blur" }],
         juri: [{ required: true, message: "请选择权限管理", trigger: "blur" }],
         url: [
         url: [

+ 5 - 0
src/components/pages/appStore/dialog/releaseAppDialog.vue

@@ -120,6 +120,7 @@ export default {
       rules: {
       rules: {
 
 
         juri: [{ required: true, message: "请选择权限管理", trigger: "blur" }],
         juri: [{ required: true, message: "请选择权限管理", trigger: "blur" }],
+        type: [{ required: true, message: "请选择应用类型", trigger: "blur" }],
         url: [
         url: [
           { required: true, message: "请输入应用链接", trigger: "blur" },
           { required: true, message: "请输入应用链接", trigger: "blur" },
           { validator: validUrl, trigger: "blur" }
           { validator: validUrl, trigger: "blur" }
@@ -142,6 +143,10 @@ export default {
         data.form.json.model = "1"
         data.form.json.model = "1"
       }
       }
 
 
+      if(!data.form.type){
+        data.form.type = this.typeList[0].id?this.typeList[0].id:''
+      }
+
       data.form.juri = '3'
       data.form.juri = '3'
       this.form = data.form;
       this.form = data.form;
       this.loading = false;
       this.loading = false;

+ 36 - 7
src/components/pages/appStore/dialog/selectAppDialog.vue

@@ -22,13 +22,13 @@
               style="margin-right: 10px;"
               style="margin-right: 10px;"
               placeholder="请输入应用名称"
               placeholder="请输入应用名称"
               @keyup.enter.native="getData"
               @keyup.enter.native="getData"
-              clearable
-            />
-            <el-button
-              type="primary"
-              icon="el-icon-search"
-              @click="getData"
-            ></el-button>
+            >
+            <i
+                slot="suffix"
+                class="searchInputIcon el-icon-search"
+                @click="getData"
+              ></i>
+          </el-input>
         </div>
         </div>
 
 
         <div class="b_list">
         <div class="b_list">
@@ -89,6 +89,16 @@ export default {
       dataList:[],
       dataList:[],
     };
     };
   },
   },
+  watch:{
+    search:{
+      immediate:false,
+      handler(){
+        if(this.search===""){
+          this.getData();
+        }
+      }
+    }
+  },
   methods: {
   methods: {
     open() {
     open() {
       this.dataList = [];
       this.dataList = [];
@@ -262,6 +272,10 @@ export default {
   color: #0354D7;
   color: #0354D7;
 }
 }
 
 
+.b_l_item:hover .b_l_i_message>span{
+  color: #000000B8;
+}
+
 .b_l_i_icon{
 .b_l_i_icon{
   width: 80px;
   width: 80px;
   height: 80px;
   height: 80px;
@@ -274,11 +288,15 @@ export default {
 .b_l_i_icon>img{
 .b_l_i_icon>img{
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
+  border: 1px solid #E7E7E7;
+  border-radius: 4px;
 }
 }
 
 
 .b_l_i_icon>svg{
 .b_l_i_icon>svg{
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;
+  border: 1px solid #E7E7E7;
+  border-radius: 4px;
 }
 }
 
 
 .b_l_i_message{
 .b_l_i_message{
@@ -304,4 +322,15 @@ export default {
   overflow: hidden;
   overflow: hidden;
   text-overflow: ellipsis;
   text-overflow: ellipsis;
 }
 }
+
+.searchInputIcon {
+  width: 20px;
+  height: 20px;
+  position: relative;
+  top: 10px;
+  right: 5px;
+  font-size: 19px;
+  cursor: pointer;
+  color: #666666;
+}
 </style>
 </style>

+ 451 - 69
src/components/pages/appStore/views/appManagement.vue

@@ -1,13 +1,24 @@
 <template>
 <template>
   <div class="appManagement">
   <div class="appManagement">
     <div class="ac_left">
     <div class="ac_left">
+      <div class="find">
+        <img src="../../../../assets/icon/appStore/find_icon.svg" />
+        <span>发现</span>
+      </div>
       <saveCard
       <saveCard
         title="最近使用"
         title="最近使用"
         :data="recentUse"
         :data="recentUse"
+        :icon="require('../../../../assets/icon/appStore/history2_icon.svg')"
         :type="1"
         :type="1"
         @saveClick="openApp"
         @saveClick="openApp"
       />
       />
-      <saveCard title="收藏" :data="collect" :type="0" @saveClick="openApp" />
+      <saveCard
+        title="我的收藏"
+        :icon="require('../../../../assets/icon/appStore/collect2_icon.svg')"
+        :data="collect"
+        :type="0"
+        @saveClick="openApp"
+      />
     </div>
     </div>
     <div class="ac_right">
     <div class="ac_right">
       <div class="ac_header">
       <div class="ac_header">
@@ -53,14 +64,14 @@
 
 
         </div> -->
         </div> -->
         <el-button
         <el-button
-            type="primary"
-            size="small"
-            icon="el-icon-plus"
-            v-show="false"
-            style="position: absolute;right: 15px;"
-            @click="addApp"
-            >添加应用</el-button
-          >
+          type="primary"
+          size="small"
+          icon="el-icon-plus"
+          v-show="false"
+          style="position: absolute;right: 15px;"
+          @click="addApp"
+          >添加应用</el-button
+        >
         <div class="ac_h_banner" v-if="bannerObj">
         <div class="ac_h_banner" v-if="bannerObj">
           <img :src="bannerObj.poster" alt="banner图" />
           <img :src="bannerObj.poster" alt="banner图" />
         </div>
         </div>
@@ -84,7 +95,7 @@
               v-model="selectJuri"
               v-model="selectJuri"
               placeholder="请选择显示范围"
               placeholder="请选择显示范围"
               @change="changeSelectType"
               @change="changeSelectType"
-              style="width: 150px;margin-right: 10px;"
+              style="width: 120px;margin-right: 10px;"
             >
             >
               <el-option
               <el-option
                 v-for="item in selectList"
                 v-for="item in selectList"
@@ -97,7 +108,7 @@
               v-model="selectLabel"
               v-model="selectLabel"
               placeholder="请选择类型"
               placeholder="请选择类型"
               @change="changeSelectType"
               @change="changeSelectType"
-              style="width: 120px;margin-right: 10px;"
+              style="width: 110px;margin-right: 10px;"
             >
             >
               <el-option
               <el-option
                 v-for="item in labelSelect"
                 v-for="item in labelSelect"
@@ -108,24 +119,34 @@
             </el-select>
             </el-select>
             <el-input
             <el-input
               v-model="searchText"
               v-model="searchText"
-              style="width: 200px;"
+              style="width: 250px;margin-right: 10px;"
               placeholder="请输入应用名称"
               placeholder="请输入应用名称"
               @keyup.enter.native="getData"
               @keyup.enter.native="getData"
-              clearable
-            />
-            <el-button
+            >
+              <i
+                slot="suffix"
+                class="searchInputIcon el-icon-search"
+                @click="getData"
+              ></i>
+            </el-input>
+            <!-- <el-button
               type="primary"
               type="primary"
               style="margin-left: 10px;"
               style="margin-left: 10px;"
               icon="el-icon-search"
               icon="el-icon-search"
               @click="getData"
               @click="getData"
-            ></el-button>
+            ></el-button> -->
             <el-button type="primary" @click="selectApp()">发布应用</el-button>
             <el-button type="primary" @click="selectApp()">发布应用</el-button>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
 
 
       <div class="ac_content">
       <div class="ac_content">
-        <div class="ac_c_item" v-for="(item, index) in dataList" :key="item.id">
+        <div
+          class="ac_c_item"
+          v-if="showType !== '' && !getDataLoading"
+          v-for="(item, index) in dataList"
+          :key="item.id"
+        >
           <div class="ac_c_i_top" @click="openApp(item)">
           <div class="ac_c_i_top" @click="openApp(item)">
             <div class="ac_c_i_t_left">
             <div class="ac_c_i_t_left">
               <img v-if="item.json.icon" :src="item.json.icon" />
               <img v-if="item.json.icon" :src="item.json.icon" />
@@ -173,28 +194,43 @@
                       @click.stop="copyApp(item)"
                       @click.stop="copyApp(item)"
                       v-if="item.json && item.json.copy === '1'"
                       v-if="item.json && item.json.copy === '1'"
                     >
                     >
-                      <img src="../../../../assets/icon/appStore/copy.svg" alt="">
+                      <img
+                        src="../../../../assets/icon/appStore/copy.svg"
+                        alt=""
+                      />
                       <span>复制</span>
                       <span>复制</span>
                     </div>
                     </div>
                     <div
                     <div
                       @click.stop="updateApp(item)"
                       @click.stop="updateApp(item)"
                       v-if="item.userid === userId"
                       v-if="item.userid === userId"
                     >
                     >
-                    <img src="../../../../assets/icon/appStore/edit.svg" alt="">
+                      <img
+                        src="../../../../assets/icon/appStore/edit.svg"
+                        alt=""
+                      />
                       <span>修改</span>
                       <span>修改</span>
                     </div>
                     </div>
                     <div
                     <div
                       @click.stop="delApp(item)"
                       @click.stop="delApp(item)"
                       v-if="item.userid === userId"
                       v-if="item.userid === userId"
                     >
                     >
-                    <img src="../../../../assets/icon/appStore/del.svg" alt="">
+                      <img
+                        src="../../../../assets/icon/appStore/del.svg"
+                        alt=""
+                      />
                       <span>删除</span>
                       <span>删除</span>
                     </div>
                     </div>
                   </div>
                   </div>
                   <svg
                   <svg
                     t="1732786015570"
                     t="1732786015570"
                     @click.stop="updateCard(item.id)"
                     @click.stop="updateCard(item.id)"
-                    :style="`transform: rotate(${editAppCard===item.id?'0deg':'90deg'});background-color:${editAppCard===item.id?'#F3F7FD':'#fff'}`"
+                    :style="
+                      `transform: rotate(${
+                        editAppCard === item.id ? '0deg' : '90deg'
+                      });background-color:${
+                        editAppCard === item.id ? '#F3F7FD' : '#fff'
+                      }`
+                    "
                     class="icon"
                     class="icon"
                     viewBox="0 0 1024 1024"
                     viewBox="0 0 1024 1024"
                     version="1.1"
                     version="1.1"
@@ -305,6 +341,235 @@
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
+
+        <div class="ac_c_typeCard" v-if="showType == ''">
+          <div class="ac_c_tc_item" v-for="(item2, index2) in typeList">
+            <div class="ac_c_tc_i_top">
+              <div>{{ item2.name }}</div>
+
+              <span @click="changeType(item2.id)"
+                >查看更多
+                <img src="../../../../assets/icon/appStore/arrow.svg" />
+              </span>
+            </div>
+            <div class="ac_c_tc_i_bottom">
+              <div
+                class="ac_c_item"
+                v-if="index < 8"
+                v-for="(item, index) in dataList.filter(
+                  i => i.type == item2.id
+                )"
+                :key="item.id"
+              >
+                <div class="ac_c_i_top" @click="openApp(item)">
+                  <div class="ac_c_i_t_left">
+                    <img v-if="item.json.icon" :src="item.json.icon" />
+                    <svg
+                      v-else
+                      t="1732605901531"
+                      class="icon"
+                      viewBox="0 0 1024 1024"
+                      version="1.1"
+                      xmlns="http://www.w3.org/2000/svg"
+                      p-id="4275"
+                      width="200"
+                      height="200"
+                    >
+                      <path
+                        d="M179.2 153.6a51.2 51.2 0 0 0-51.2 51.2v128a51.2 51.2 0 0 0 51.2 51.2h128a51.2 51.2 0 0 0 51.2-51.2V204.8a51.2 51.2 0 0 0-51.2-51.2H179.2z m0-102.4h128a153.6 153.6 0 0 1 153.6 153.6v128a153.6 153.6 0 0 1-153.6 153.6H179.2a153.6 153.6 0 0 1-153.6-153.6V204.8a153.6 153.6 0 0 1 153.6-153.6z m0 614.4a51.2 51.2 0 0 0-51.2 51.2v128a51.2 51.2 0 0 0 51.2 51.2h128a51.2 51.2 0 0 0 51.2-51.2V716.8a51.2 51.2 0 0 0-51.2-51.2H179.2z m0-102.4h128a153.6 153.6 0 0 1 153.6 153.6v128a153.6 153.6 0 0 1-153.6 153.6H179.2a153.6 153.6 0 0 1-153.6-153.6V716.8a153.6 153.6 0 0 1 153.6-153.6z m611.84-403.4048a51.2 51.2 0 0 0-72.3968 0L646.144 232.2432a51.2 51.2 0 0 0 0 72.3968l72.448 72.3968a51.2 51.2 0 0 0 72.3968 0l72.3968-72.3968a51.2 51.2 0 0 0 0-72.3968L791.04 159.744z m72.3968-72.3968l72.3968 72.3968a153.6 153.6 0 0 1 0 217.2416l-72.3968 72.3968a153.6 153.6 0 0 1-217.2416 0l-72.3968-72.3968a153.6 153.6 0 0 1 0-217.2416l72.3968-72.3968a153.6 153.6 0 0 1 217.2416 0zM699.7504 896a51.2 51.2 0 0 1 0 102.4A162.1504 162.1504 0 0 1 537.6 836.2496v-110.8992A162.1504 162.1504 0 0 1 699.7504 563.2h110.8992a162.1504 162.1504 0 0 1 162.1504 162.1504v8.448a51.2 51.2 0 0 1-102.4 0v-8.448c0-33.024-26.7264-59.7504-59.7504-59.7504h-110.8992c-33.024 0-59.7504 26.7264-59.7504 59.7504v110.8992c0 33.024 26.7264 59.7504 59.7504 59.7504z"
+                        fill="#2C6DD2"
+                        p-id="4276"
+                      ></path>
+                      <path
+                        d="M791.4496 160a51.2 51.2 0 0 0-72.3968 0l-72.448 72.3968a51.2 51.2 0 0 0 0 72.3968l72.448 72.3968a51.2 51.2 0 0 0 72.3968 0l72.3968-72.3968a51.2 51.2 0 0 0 0-72.3968l-72.3968-72.3968z"
+                        fill="#20C997"
+                        p-id="4277"
+                      ></path>
+                    </svg>
+                  </div>
+                  <div class="ac_c_i_t_right">
+                    <div class="ac_c_i_t_r_top">
+                      <el-tooltip
+                        class="item"
+                        effect="light"
+                        :content="item.name"
+                        placement="top"
+                      >
+                        <span>{{ item.name }}</span>
+                      </el-tooltip>
+
+                      <div class="ac_c_i_t_popover" v-if="showMenu(item)">
+                        <div
+                          class="ac_c_i_t_p_box"
+                          v-if="editAppCard === item.id"
+                          v-click-outside="handleBlur"
+                        >
+                          <div
+                            @click.stop="copyApp(item)"
+                            v-if="item.json && item.json.copy === '1'"
+                          >
+                            <img
+                              src="../../../../assets/icon/appStore/copy.svg"
+                              alt=""
+                            />
+                            <span>复制</span>
+                          </div>
+                          <div
+                            @click.stop="updateApp(item)"
+                            v-if="item.userid === userId"
+                          >
+                            <img
+                              src="../../../../assets/icon/appStore/edit.svg"
+                              alt=""
+                            />
+                            <span>修改</span>
+                          </div>
+                          <div
+                            @click.stop="delApp(item)"
+                            v-if="item.userid === userId"
+                          >
+                            <img
+                              src="../../../../assets/icon/appStore/del.svg"
+                              alt=""
+                            />
+                            <span>删除</span>
+                          </div>
+                        </div>
+                        <svg
+                          t="1732786015570"
+                          @click.stop="updateCard(item.id)"
+                          :style="
+                            `transform: rotate(${
+                              editAppCard === item.id ? '0deg' : '90deg'
+                            });background-color:${
+                              editAppCard === item.id ? '#F3F7FD' : '#fff'
+                            }`
+                          "
+                          class="icon"
+                          viewBox="0 0 1024 1024"
+                          version="1.1"
+                          xmlns="http://www.w3.org/2000/svg"
+                          p-id="9199"
+                          width="200"
+                          height="200"
+                        >
+                          <path
+                            d="M192 443.733333c-38.4 0-68.266667 29.866667-68.266667 68.266667 0 38.4 29.866667 68.266667 68.266667 68.266667s68.266667-29.866667 68.266667-68.266667c0-38.4-29.866667-68.266667-68.266667-68.266667zM512 443.733333c-38.4 0-68.266667 29.866667-68.266667 68.266667 0 38.4 29.866667 68.266667 68.266667 68.266667s68.266667-29.866667 68.266667-68.266667c0-38.4-29.866667-68.266667-68.266667-68.266667zM832 443.733333c-38.4 0-68.266667 29.866667-68.266667 68.266667 0 38.4 29.866667 68.266667 68.266667 68.266667s68.266667-29.866667 68.266667-68.266667c0-38.4-34.133333-68.266667-68.266667-68.266667z"
+                            fill="#111111"
+                            p-id="9200"
+                          ></path>
+                        </svg>
+                      </div>
+                    </div>
+                    <div class="ac_c_i_t_r_center">
+                      <span>@{{ item.username }}</span>
+                      <div v-if="item.label === 'workflow'">
+                        <img
+                          src="../../../../assets/icon/appStore/workflow.svg"
+                          alt=""
+                        />
+                        工作流
+                      </div>
+                      <div v-if="item.label === 'agent'">
+                        <img
+                          src="../../../../assets/icon/appStore/agent.svg"
+                          alt=""
+                        />
+                        智能体
+                      </div>
+                    </div>
+                    <div class="ac_c_i_t_r_bottom">
+                      {{ item.detail }}
+                    </div>
+                  </div>
+                </div>
+                <div class="ac_c_i_bottom">
+                  <div class="ac_c_i_b_left">
+                    <el-tooltip
+                      class="item"
+                      effect="light"
+                      content="被复制数"
+                      placement="top"
+                    >
+                      <div>
+                        <img
+                          src="../../../../assets/icon/appStore/user_copy.svg"
+                        />
+                        <span>{{ item.copyCount }}</span>
+                      </div>
+                    </el-tooltip>
+                    <el-tooltip
+                      class="item"
+                      effect="light"
+                      :content="item.likeId ? '取消点赞' : '点赞'"
+                      placement="top"
+                    >
+                      <div>
+                        <img
+                          :src="
+                            require('../../../../assets/icon/appStore/praise_default.svg')
+                          "
+                          v-if="!item.likeId"
+                          style="cursor: pointer;"
+                          @click="praiseFn(item, 0)"
+                        />
+                        <img
+                          :src="
+                            require('../../../../assets/icon/appStore/praise_active.svg')
+                          "
+                          v-else
+                          style="cursor: pointer;"
+                          @click="praiseFn(item, 1)"
+                        />
+                        <span>{{ item.likeCount }}</span>
+                      </div>
+                    </el-tooltip>
+                    <el-tooltip
+                      class="item"
+                      effect="light"
+                      :content="item.collectId ? '取消收藏' : '收藏'"
+                      placement="top"
+                    >
+                      <div>
+                        <img
+                          src="../../../../assets/icon/appStore/collect_default.svg"
+                          v-if="!item.collectId"
+                          style="cursor: pointer;"
+                          @click="collectFn(item, 0)"
+                        />
+                        <img
+                          src="../../../../assets/icon/appStore/collect_active.svg"
+                          v-else
+                          style="cursor: pointer;"
+                          @click="collectFn(item, 1)"
+                        />
+                        <span>{{ item.collectCount }}</span>
+                      </div>
+                    </el-tooltip>
+                  </div>
+                  <div class="ac_c_i_b_right" v-if="item.json.status">
+                    <span
+                      class="ac_c_i_b_r_type2"
+                      v-if="item.json.status === '1'"
+                      >测试</span
+                    >
+                    <span
+                      class="ac_c_i_b_r_type1"
+                      v-if="item.json.status === '2'"
+                      >稳定</span
+                    >
+                  </div>
+                </div>
+              </div>
+              <div
+                class="ac_c_empty"
+                v-if="dataList.filter(i => i.type == item2.id).length === 0"
+              >
+                <span>暂无数据...</span>
+              </div>
+            </div>
+          </div>
+        </div>
         <!-- <div
         <!-- <div
           class="ac_c_item"
           class="ac_c_item"
           v-for="(item, index) in dataList"
           v-for="(item, index) in dataList"
@@ -414,7 +679,7 @@
             <div>{{ item.detail }}</div>
             <div>{{ item.detail }}</div>
           </div>
           </div>
         </div> -->
         </div> -->
-        <div class="ac_c_empty" v-if="dataList.length === 0">
+        <div class="ac_c_empty" v-if="dataList.length === 0 && showType !== ''">
           <span>暂无数据...</span>
           <span>暂无数据...</span>
         </div>
         </div>
       </div>
       </div>
@@ -480,12 +745,12 @@ export default {
       selectList: [
       selectList: [
         { index: 3, label: "所有组织" },
         { index: 3, label: "所有组织" },
         { index: 2, label: "组织内" },
         { index: 2, label: "组织内" },
-        { index: 1, label: "我的" },
+        { index: 1, label: "我的" }
         // { index: 98,label:"已发布"},
         // { index: 98,label:"已发布"},
         // { index: 99,label:"未发布"},
         // { index: 99,label:"未发布"},
       ],
       ],
       labelSelect: [
       labelSelect: [
-        { value: "", label: "全部类型" },
+        { value: "", label: "所有类型" },
         { value: "agent", label: "智能体" },
         { value: "agent", label: "智能体" },
         { value: "workflow", label: "工作流" }
         { value: "workflow", label: "工作流" }
       ],
       ],
@@ -533,6 +798,16 @@ export default {
       };
       };
     }
     }
   },
   },
+  watch: {
+    searchText: {
+      immediate:false,
+      handler() {
+        if (this.searchText === "") {
+          this.getData();
+        }
+      }
+    }
+  },
   methods: {
   methods: {
     changeType(newIndex) {
     changeType(newIndex) {
       let flag = this.showType === newIndex;
       let flag = this.showType === newIndex;
@@ -646,7 +921,7 @@ export default {
           this.ajax
           this.ajax
             .post(this.$store.state.api + "insert_appStore", params)
             .post(this.$store.state.api + "insert_appStore", params)
             .then(res => {
             .then(res => {
-              if (res.data == 1) {
+              if (res.data) {
                 this.$message.success("复制成功,已添加至我的列表。");
                 this.$message.success("复制成功,已添加至我的列表。");
                 this.getData();
                 this.getData();
                 this.insertSave(item, 3);
                 this.insertSave(item, 3);
@@ -717,7 +992,7 @@ export default {
         this.ajax
         this.ajax
           .post(this.$store.state.api + "insert_appStore", params)
           .post(this.$store.state.api + "insert_appStore", params)
           .then(res => {
           .then(res => {
-            if (res.data == 1) {
+            if (res.data[0][0]["id"]) {
               this.$message.success("添加成功");
               this.$message.success("添加成功");
               this.$refs.addAppDialogRef.close(true);
               this.$refs.addAppDialogRef.close(true);
               this.getData();
               this.getData();
@@ -748,7 +1023,7 @@ export default {
         this.ajax
         this.ajax
           .post(this.$store.state.api + "update_appStore", params)
           .post(this.$store.state.api + "update_appStore", params)
           .then(res => {
           .then(res => {
-            if (res.data == 1) {
+            if (res.data) {
               this.$message.success("修改成功");
               this.$message.success("修改成功");
               this.$refs.addAppDialogRef.close(true);
               this.$refs.addAppDialogRef.close(true);
               this.getData();
               this.getData();
@@ -782,14 +1057,14 @@ export default {
       this.ajax
       this.ajax
         .post(this.$store.state.api + "update_appStore", params)
         .post(this.$store.state.api + "update_appStore", params)
         .then(res => {
         .then(res => {
-          if (res.data == 1) {
+          if (res.data) {
             this.$message.success("发布成功");
             this.$message.success("发布成功");
             this.$refs.releaseAppDialogRef.close(true);
             this.$refs.releaseAppDialogRef.close(true);
-            this.getData();
           } else {
           } else {
             this.$message.error("发布失败");
             this.$message.error("发布失败");
             this.$refs.releaseAppDialogRef.loading = false;
             this.$refs.releaseAppDialogRef.loading = false;
           }
           }
+          this.getData();
         })
         })
         .catch(err => {
         .catch(err => {
           console.log(err);
           console.log(err);
@@ -809,6 +1084,11 @@ export default {
         .then(res => {
         .then(res => {
           let data = res.data[0];
           let data = res.data[0];
           if (data.length > 0) {
           if (data.length > 0) {
+            // data.forEach(i => {
+            //   if (i.open == undefined) {
+            //     i.open = true;
+            //   }
+            // });
             this.typeList = data;
             this.typeList = data;
           }
           }
         })
         })
@@ -935,8 +1215,8 @@ export default {
               } else {
               } else {
                 this.$message.error("删除失败");
                 this.$message.error("删除失败");
               }
               }
-              if(this.collect.findIndex(i=>i.id == item.id)!=-1){
-                this.getCollect()
+              if (this.collect.findIndex(i => i.id == item.id) != -1) {
+                this.getCollect();
               }
               }
             })
             })
             .catch(err => {
             .catch(err => {
@@ -1095,7 +1375,7 @@ export default {
   margin: 0;
   margin: 0;
   overflow: auto;
   overflow: auto;
   box-sizing: border-box;
   box-sizing: border-box;
-  padding: 20px;
+  /* padding: 20px; */
   display: flex;
   display: flex;
   justify-content: space-between;
   justify-content: space-between;
 }
 }
@@ -1103,24 +1383,52 @@ export default {
 .ac_left {
 .ac_left {
   /* width: 280px;
   /* width: 280px;
   min-width: 280px; */
   min-width: 280px; */
-  width: clamp(150px, 12vw, 280px);
-  min-width: 150px;
+  width: clamp(200px, 12vw, 280px);
+  min-width: 200px;
   margin-right: 20px;
   margin-right: 20px;
   height: 100%;
   height: 100%;
-  border-radius: 5px;
+  /* border-radius: 5px; */
   background-color: #fff;
   background-color: #fff;
-  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
+  /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   box-sizing: border-box;
   box-sizing: border-box;
   padding: 10px;
   padding: 10px;
+  padding-left: 20px;
   overflow: auto;
   overflow: auto;
 }
 }
 
 
+.ac_left > .find {
+  width: 100%;
+  height: 45px;
+  background-color: #fff;
+  border-radius: 10px;
+  border: 1px solid #f3f7fd;
+  box-sizing: border-box;
+  padding: 0 20px;
+  display: flex;
+  align-items: center;
+  /* box-shadow: 2px 2px 4px 0px #1D39830A; */
+  box-shadow: 0px 0px 4px 2px #1d39830a;
+  margin-bottom: 10px;
+  font-weight: bold;
+  font-size: 16px;
+  color: #000000e5;
+}
+
+.ac_left > .find > img {
+  width: 22px;
+  height: 22px;
+  margin-right: 10px;
+}
+
 .ac_right {
 .ac_right {
   flex: 1;
   flex: 1;
   min-width: 800px;
   min-width: 800px;
   height: 100%;
   height: 100%;
-  overflow-y: hidden;
+  overflow: auto;
   display: flex;
   display: flex;
+  padding-right: 10px;
+  padding-top: 10px;
+  box-sizing: border-box;
   flex-direction: column;
   flex-direction: column;
 }
 }
 
 
@@ -1128,8 +1436,8 @@ export default {
   width: 100%;
   width: 100%;
   height: auto;
   height: auto;
   border-radius: 5px;
   border-radius: 5px;
-  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
-  background-color: #fff;
+  /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
+  background-color: none;
 }
 }
 
 
 .ac_h_top {
 .ac_h_top {
@@ -1182,7 +1490,8 @@ export default {
 
 
 .ac_h_banner {
 .ac_h_banner {
   width: 100%;
   width: 100%;
-  height: clamp(100px, 20vh, 300px);
+  height: clamp(100px, 25vh, 350px);
+  /* height: 400px; */
   border-radius: 5px;
   border-radius: 5px;
   overflow: hidden;
   overflow: hidden;
   box-sizing: border-box;
   box-sizing: border-box;
@@ -1204,6 +1513,7 @@ export default {
   display: flex;
   display: flex;
   justify-content: space-between;
   justify-content: space-between;
   align-items: center;
   align-items: center;
+  border-bottom: solid 1px #e7e7e7;
 }
 }
 
 
 .ac_h_b_typeList {
 .ac_h_b_typeList {
@@ -1216,7 +1526,7 @@ export default {
 
 
 .ac_h_b_typeList > span {
 .ac_h_b_typeList > span {
   font-size: 18px;
   font-size: 18px;
-  margin-right: 20px;
+  margin-right: 30px;
   margin-top: 10px;
   margin-top: 10px;
   margin-bottom: 5px;
   margin-bottom: 5px;
   cursor: pointer;
   cursor: pointer;
@@ -1224,6 +1534,18 @@ export default {
 
 
 .ac_h_b_typeList_active {
 .ac_h_b_typeList_active {
   color: #007aff;
   color: #007aff;
+  position: relative;
+}
+
+.ac_h_b_typeList_active::after {
+  content: "";
+  width: 80%;
+  height: 5px;
+  background-color: #007aff;
+  border-radius: 4px;
+  position: absolute;
+  top: 110%;
+  left: 10%;
 }
 }
 
 
 .ac_h_b_selectList {
 .ac_h_b_selectList {
@@ -1235,16 +1557,19 @@ export default {
 
 
 .ac_content {
 .ac_content {
   width: 100%;
   width: 100%;
-  flex: 1;
   height: auto;
   height: auto;
   margin-top: 10px;
   margin-top: 10px;
-  overflow: auto;
-  min-height: 200px;
+  padding-bottom: 10px;
+}
+
+.ac_c_typeCard {
+  width: 100%;
+  height: auto;
 }
 }
 
 
 .ac_c_item {
 .ac_c_item {
   width: calc(100% / 4 - (15px * 4) / 4);
   width: calc(100% / 4 - (15px * 4) / 4);
-  height: 250px;
+  height: 260px;
   background-color: #fff;
   background-color: #fff;
   border-radius: 10px;
   border-radius: 10px;
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
@@ -1254,7 +1579,7 @@ export default {
   margin-bottom: 15px;
   margin-bottom: 15px;
   float: left;
   float: left;
   border: solid 1px #e7e7e7;
   border: solid 1px #e7e7e7;
-  transition: .2s;
+  transition: 0.2s;
 
 
   /* cursor: pointer; */
   /* cursor: pointer; */
 }
 }
@@ -1314,43 +1639,51 @@ export default {
   height: 40%;
   height: 40%;
   display: flex;
   display: flex;
   box-sizing: border-box;
   box-sizing: border-box;
-  padding-top: 2%;
+  /* padding-top: 2%; */
   justify-content: center;
   justify-content: center;
+  color: #a1a1a1;
   /* align-items: center; */
   /* align-items: center; */
 }
 }
 
 
 .ac_c_i_top {
 .ac_c_i_top {
   width: 100%;
   width: 100%;
   display: flex;
   display: flex;
-  height: calc(100% - 40px);
+  height: calc(100% - 40px - 10px);
   cursor: pointer;
   cursor: pointer;
 }
 }
 
 
 .ac_c_i_t_left {
 .ac_c_i_t_left {
-  width: 100px;
-  min-width: 100px;
-  height: 100%;
+  width: 80px;
+  min-width: 80px;
+  height: 80px;
   box-sizing: border-box;
   box-sizing: border-box;
   display: flex;
   display: flex;
   align-items: flex-start;
   align-items: flex-start;
   box-sizing: border-box;
   box-sizing: border-box;
-  padding: 10px;
+  /* padding: 10px; */
+  margin-right: 10px;
 }
 }
 
 
 .ac_c_i_t_left > svg {
 .ac_c_i_t_left > svg {
   width: 100%;
   width: 100%;
-  height: auto;
+  height: 80px;
+  border: 1px solid #e7e7e7;
+  border-radius: 4px;
+  box-sizing: border-box;
 }
 }
 
 
 .ac_c_i_t_left > img {
 .ac_c_i_t_left > img {
   width: 100%;
   width: 100%;
   object-fit: cover;
   object-fit: cover;
   height: 80px;
   height: 80px;
+  border: 1px solid #e7e7e7;
+  border-radius: 4px;
+  box-sizing: border-box;
 }
 }
 
 
 .ac_c_i_t_right {
 .ac_c_i_t_right {
   flex: 1;
   flex: 1;
-  width: calc(100% - 100px);
+  width: calc(100% - 100px - 10px);
   height: 100%;
   height: 100%;
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
@@ -1366,7 +1699,6 @@ export default {
   align-items: flex-end;
   align-items: flex-end;
   justify-content: space-between;
   justify-content: space-between;
   position: relative;
   position: relative;
-  font-size: 1.3em;
   font-weight: bold;
   font-weight: bold;
   box-sizing: border-box;
   box-sizing: border-box;
   padding-bottom: 2px;
   padding-bottom: 2px;
@@ -1378,6 +1710,7 @@ export default {
   white-space: nowrap;
   white-space: nowrap;
   overflow: hidden;
   overflow: hidden;
   text-overflow: ellipsis;
   text-overflow: ellipsis;
+  font-size: 22px;
 }
 }
 
 
 .ac_c_i_t_popover {
 .ac_c_i_t_popover {
@@ -1396,7 +1729,7 @@ export default {
   padding: 2.5px;
   padding: 2.5px;
   /* transform: rotate(90deg); */
   /* transform: rotate(90deg); */
   cursor: pointer;
   cursor: pointer;
-  transition: .3s;
+  transition: 0.3s;
   border-radius: 4px;
   border-radius: 4px;
 }
 }
 
 
@@ -1410,7 +1743,7 @@ export default {
   background-color: #fff;
   background-color: #fff;
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   width: auto;
   width: auto;
-  border: 1px solid #E7E7E7
+  border: 1px solid #e7e7e7;
 }
 }
 
 
 .ac_c_i_t_p_box > div {
 .ac_c_i_t_p_box > div {
@@ -1428,7 +1761,7 @@ export default {
   box-sizing: border-box;
   box-sizing: border-box;
 }
 }
 
 
-.ac_c_i_t_p_box > div>img{
+.ac_c_i_t_p_box > div > img {
   width: 18px;
   width: 18px;
   height: 18px;
   height: 18px;
   margin-right: 10px;
   margin-right: 10px;
@@ -1443,6 +1776,7 @@ export default {
   display: flex;
   display: flex;
   justify-content: space-between;
   justify-content: space-between;
   align-items: center;
   align-items: center;
+  margin: 10px 0;
 }
 }
 
 
 .ac_c_i_t_r_center > span {
 .ac_c_i_t_r_center > span {
@@ -1450,6 +1784,7 @@ export default {
   max-width: calc(100% - 80px);
   max-width: calc(100% - 80px);
   white-space: nowrap;
   white-space: nowrap;
   overflow: hidden;
   overflow: hidden;
+  font-size: 18px;
   color: #00000066;
   color: #00000066;
   text-overflow: ellipsis;
   text-overflow: ellipsis;
 }
 }
@@ -1460,7 +1795,7 @@ export default {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   justify-content: center;
   justify-content: center;
-  font-size: 0.8em;
+  font-size: 16px;
   background-color: #f3f3f3;
   background-color: #f3f3f3;
   color: #00000066;
   color: #00000066;
   border-radius: 3px;
   border-radius: 3px;
@@ -1474,39 +1809,39 @@ export default {
 
 
 .ac_c_i_t_r_bottom {
 .ac_c_i_t_r_bottom {
   max-width: 100%;
   max-width: 100%;
-  max-height: calc(100% - 30px - 40px - 20px);
-  margin-top: 10px;
+  max-height: calc(100% - 30px - 40px - 20px - 10px + 5px);
+  margin-top: 5px;
   margin-bottom: 10px;
   margin-bottom: 10px;
+  font-size: 16px;
   color: #00000099;
   color: #00000099;
   display: -webkit-box;
   display: -webkit-box;
   -webkit-box-orient: vertical;
   -webkit-box-orient: vertical;
-  -webkit-line-clamp: 5;
+  -webkit-line-clamp: 4;
   overflow: hidden;
   overflow: hidden;
   text-overflow: ellipsis;
   text-overflow: ellipsis;
 }
 }
 
 
 .ac_c_i_bottom {
 .ac_c_i_bottom {
   width: 100%;
   width: 100%;
-  height: 40px;
-  padding-top: 10px;
+  height: 60px;
   box-sizing: border-box;
   box-sizing: border-box;
-  border-top: solid 2px #e7e7e7;
+  border-top: solid 1px #e7e7e7;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   justify-content: space-between;
   justify-content: space-between;
 }
 }
 
 
 .ac_c_i_b_left {
 .ac_c_i_b_left {
-  width: 130px;
+  width: calc(100% - 60px);
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
-  justify-content: space-between;
+  /* justify-content: space-between; */
   overflow: auto;
   overflow: auto;
   height: 100%;
   height: 100%;
 }
 }
 
 
 .ac_c_i_b_left > div {
 .ac_c_i_b_left > div {
-  /* margin-right: 20px; */
+  margin-right: 20px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
 }
 }
@@ -1526,7 +1861,7 @@ export default {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
   width: 70px;
   width: 70px;
-  height: 100%;
+  height: 70%;
   justify-content: flex-end;
   justify-content: flex-end;
 }
 }
 
 
@@ -1549,6 +1884,53 @@ export default {
   color: #000;
   color: #000;
 }
 }
 
 
+.searchInputIcon {
+  width: 20px;
+  height: 20px;
+  position: relative;
+  top: 10px;
+  right: 5px;
+  font-size: 19px;
+  cursor: pointer;
+}
+
+.ac_c_tc_item {
+  width: 100%;
+  height: auto;
+}
+
+.ac_c_tc_i_top {
+  width: 100%;
+  height: 40px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 20px;
+  box-sizing: border-box;
+  padding: 0 20px;
+  /* background-color: red; */
+}
+
+.ac_c_tc_i_top > div {
+  font-size: 26px;
+}
+
+.ac_c_tc_i_top > span {
+  display: flex;
+  align-items: center;
+  color: #a2a2a2;
+  font-size: 16px;
+  cursor: pointer;
+}
+
+.ac_c_tc_i_top > span > img {
+  width: 18px;
+  height: 18px;
+  margin-left: 5px;
+  /*transform: rotate(90deg);*/
+  transition: 0.3s;
+}
+
 /* .ac_c_i_top {
 /* .ac_c_i_top {
   width: 100%;
   width: 100%;
   height: 50px;
   height: 50px;

+ 10 - 8
src/components/pages/classroomObservation/components/messageArea.vue

@@ -1175,22 +1175,24 @@ export default {
         return Promise.all(promises).then(res => {
         return Promise.all(promises).then(res => {
           this.dialogTagList.splice(_index, 1);
           this.dialogTagList.splice(_index, 1);
           this.$message.success("删除分析分组成功");
           this.$message.success("删除分析分组成功");
+          this.dataList = this.dataList.filter(i=>!data.groupId.includes(i.id))
+          this.bmData.jsonData.dialogTagList = this.dialogTagList;
           this.saveData(this.bmData);
           this.saveData(this.bmData);
         });
         });
       } else {
       } else {
         this.dialogTagList.splice(_index, 1);
         this.dialogTagList.splice(_index, 1);
         this.$message.success("删除分析分组成功");
         this.$message.success("删除分析分组成功");
+        this.bmData.jsonData.dialogTagList = this.dialogTagList;
         return this.saveData(this.bmData);
         return this.saveData(this.bmData);
       }
       }
     },
     },
     delAnalysisItem2(id) {
     delAnalysisItem2(id) {
       return new Promise(resolve => {
       return new Promise(resolve => {
-        let _index = this.dataList.findIndex(i => i.id == id);
-        if (_index > -1) {
-          let _data = this.dataList[_index];
+        let delData = this.dataList.find(i => i.id === id);
+        if (delData) {
           let params = {
           let params = {
-            id: _data.id,
-            type: _data.Type,
+            id: delData.id,
+            type: delData.Type,
             tid: this.tid
             tid: this.tid
           };
           };
           this.ajax
           this.ajax
@@ -1199,7 +1201,7 @@ export default {
               params
               params
             )
             )
             .then(res => {
             .then(res => {
-              this.dataList.splice(_index, 1);
+              // this.dataList.splice(_index, 1);
               resolve();
               resolve();
             })
             })
             .catch(e => {
             .catch(e => {
@@ -1315,7 +1317,7 @@ export default {
 				this.isDrag = false;
 				this.isDrag = false;
 				this.loading = false;
 				this.loading = false;
 				// this.$message.success("更换成功")
 				// this.$message.success("更换成功")
-				return 
+				return
 			}
 			}
 
 
 			let _copyData = JSON.parse(JSON.stringify(this.dataList));
 			let _copyData = JSON.parse(JSON.stringify(this.dataList));
@@ -1323,7 +1325,7 @@ export default {
 			_copyData = _copyData.filter(i=>!(i.Type==0&&i.tIndex==2));
 			_copyData = _copyData.filter(i=>!(i.Type==0&&i.tIndex==2));
 
 
 			let _result = _copyData.map(i=>({id:i.id,tIndex:i.tIndex,Type:i.Type}));
 			let _result = _copyData.map(i=>({id:i.id,tIndex:i.tIndex,Type:i.Type}));
-			
+
 			let params = {
 			let params = {
 				data:JSON.stringify(_result)
 				data:JSON.stringify(_result)
 			}
 			}

+ 1 - 0
src/components/pages/newCourse/addCourse.vue

@@ -17757,6 +17757,7 @@ ol {
   height: 100%;
   height: 100%;
   overflow: auto;
   overflow: auto;
   padding: 10px 0;
   padding: 10px 0;
+  box-sizing: border-box;
 }
 }
 
 
 .navStage {
 .navStage {

+ 8 - 7
src/components/pages/test/check/docxTemplateDialog.vue

@@ -322,9 +322,9 @@ export default {
           _item2.array.forEach((i, index2) => {
           _item2.array.forEach((i, index2) => {
             choseTxt += `${
             choseTxt += `${
               _item2.answer2 === index2 || _item2.answer2.includes(index2)
               _item2.answer2 === index2 || _item2.answer2.includes(index2)
-                ? "☑"
-                : ""
-            }${i.option}    `;
+                ? "☑"+i.option
+                : ""
+            }`;
           });
           });
           _list.push({
           _list.push({
             name: _item2.title,
             name: _item2.title,
@@ -521,11 +521,11 @@ export default {
               `{${fieldList[i].field}}`,
               `{${fieldList[i].field}}`,
               fieldList[i].value
               fieldList[i].value
             );
             );
-          } else if (this.fieldList[i].type == "file") {
+          } else if (fieldList[i].type == "file") {
             let _text = ``;
             let _text = ``;
             // this.fieldList[i].value.forEach(async f => {
             // this.fieldList[i].value.forEach(async f => {
-            for (let j = 0; j < this.fieldList[i].value.length; j++) {
-              let f = this.fieldList[i].value[j];
+            for (let j = 0; j < fieldList[i].value.length; j++) {
+              let f = fieldList[i].value[j];
               if (/\.(jpeg|jpg|gif|png|svg|bmp|webp)$/i.test(f.url)) {
               if (/\.(jpeg|jpg|gif|png|svg|bmp|webp)$/i.test(f.url)) {
                 // const img = await this.convertImageUrlToBase64(f.url);
                 // const img = await this.convertImageUrlToBase64(f.url);
                 // _text += `<img src="${f.url}" width="${100}" height="100" style="object-fit:contain"/><br/>`;
                 // _text += `<img src="${f.url}" width="${100}" height="100" style="object-fit:contain"/><br/>`;
@@ -533,11 +533,12 @@ export default {
                 let _setWidth = 100;
                 let _setWidth = 100;
                 let _setHeight = (_imageWidthAndHeight.height / _imageWidthAndHeight.width) * _setWidth; // 根据比例计算高度
                 let _setHeight = (_imageWidthAndHeight.height / _imageWidthAndHeight.width) * _setWidth; // 根据比例计算高度
                 _text += `<img src="${f.url}" width="${_setWidth}" height="${_setHeight}" style="object-fit:contain"/><br/>`;
                 _text += `<img src="${f.url}" width="${_setWidth}" height="${_setHeight}" style="object-fit:contain"/><br/>`;
+                console.log(_text)
               } else {
               } else {
                 _text += `<a href="${f.url}" target="_blank">${f.name}</a><br/>`;
                 _text += `<a href="${f.url}" target="_blank">${f.name}</a><br/>`;
               }
               }
             }
             }
-            _html = _html.replaceAll(`{${this.fieldList[i].field}}`, _text);
+            _html = _html.replaceAll(`{${fieldList[i].field}}`, _text);
             // });
             // });
           }
           }
         }
         }

File diff suppressed because it is too large
+ 581 - 172
src/components/pages/test/check/index.vue


File diff suppressed because it is too large
+ 249 - 89
src/components/pages/test/checkAi/aiLeader.vue


+ 9 - 3
src/components/pages/test/checkAi/eChartTemplate.vue

@@ -19,13 +19,19 @@ export default {
 	},
 	},
 	watch: {
 	watch: {
 		data() {
 		data() {
+      this.chartData = JSON.parse(JSON.stringify(this.data))
 			this.getChartData();
 			this.getChartData();
-		},
+    },
 	},
 	},
 	methods: {
 	methods: {
 		getChartData() {
 		getChartData() {
-			this.chartObj = echarts.init(this.$refs.chartRef);
-			this.chartObj.setOption(this.data);
+      if(!this.chartObj){
+        this.chartObj = echarts.init(this.$refs.chartRef);
+      }
+      if(!this.chartData){
+        this.chartData = JSON.parse(JSON.stringify(this.data))
+      }
+			this.chartObj.setOption(this.chartData);
 			window.addEventListener("resize", () => {
 			window.addEventListener("resize", () => {
 					this.chartObj.resize();
 					this.chartObj.resize();
       });
       });

+ 5 - 3
src/components/pages/test/choseCheck/index.vue

@@ -34,13 +34,13 @@
 			</div>
 			</div>
 			<div class="cc_b_right">
 			<div class="cc_b_right">
 				<div class="cc_b_r_menu">
 				<div class="cc_b_r_menu">
-					
+
 						<div v-for="(item,index) in menuList" @click="changeMenuIndex(index)" :key="index" :class="{'cc_b_r_menu_active':menuIndex==index}">
 						<div v-for="(item,index) in menuList" @click="changeMenuIndex(index)" :key="index" :class="{'cc_b_r_menu_active':menuIndex==index}">
 							<el-tooltip  class="item" effect="dark" :content="item.name" placement="top">
 							<el-tooltip  class="item" effect="dark" :content="item.name" placement="top">
 								<span>{{item.name}}</span>
 								<span>{{item.name}}</span>
 						</el-tooltip>
 						</el-tooltip>
 						</div>
 						</div>
-					
+
 				</div>
 				</div>
 				<div class="cc_b_r_content">
 				<div class="cc_b_r_content">
 					<!-- <iframe
 					<!-- <iframe
@@ -341,7 +341,7 @@ export default {
 				_cidList.sort((a, b) => parseInt(b) - parseInt(a));
 				_cidList.sort((a, b) => parseInt(b) - parseInt(a));
 				_result = _cidList.join(',');
 				_result = _cidList.join(',');
 			}
 			}
-			
+
 			return _result
 			return _result
 		},
 		},
 		getFileLoading(){
 		getFileLoading(){
@@ -398,6 +398,8 @@ export default {
 .cc_b_right{
 .cc_b_right{
 	width: 50%;
 	width: 50%;
 	height: 100%;
 	height: 100%;
+  max-height: 100%;
+  overflow: auto;
 	box-sizing: border-box;
 	box-sizing: border-box;
 	border-left: 1px solid #E4E7ED;
 	border-left: 1px solid #E4E7ED;
 }
 }

+ 7 - 7
src/components/pages/test/smarter.vue

@@ -87,7 +87,7 @@
                         <!-- <div style="display: flex;">
                         <!-- <div style="display: flex;">
                             <div :class="['preview_file', { active: fileMenu === 1 }]" @click="fileMenu = 1">文档预览</div>
                             <div :class="['preview_file', { active: fileMenu === 1 }]" @click="fileMenu = 1">文档预览</div>
                             <div :class="['bianji_file', { active: fileMenu === 2 }]" @click="fileMenu = 2">文档编辑</div>
                             <div :class="['bianji_file', { active: fileMenu === 2 }]" @click="fileMenu = 2">文档编辑</div>
-                        </div> 
+                        </div>
                         <div v-if="fileMenu == 1" style="margin: -2px 10px;">  -->
                         <div v-if="fileMenu == 1" style="margin: -2px 10px;">  -->
                         <div class="cc_b_r_menu">
                         <div class="cc_b_r_menu">
                             <div v-for="(item, index) in menuList" @click="changeMenuIndex(index)" :key="index"
                             <div v-for="(item, index) in menuList" @click="changeMenuIndex(index)" :key="index"
@@ -138,7 +138,7 @@
                     </div>
                     </div>
                 </div>
                 </div>
             </div>
             </div>
-            <div v-show="activeMenu == 2" style="width:100%;">
+            <div v-show="activeMenu == 2" style="width:calc(100% - 148px);">
                 <div class="history_talk">
                 <div class="history_talk">
                     <div class="h_t_head">
                     <div class="h_t_head">
                         <div class="t_h_left">
                         <div class="t_h_left">
@@ -154,13 +154,13 @@
                     </div>
                     </div>
                     <div class="h_t_table">
                     <div class="h_t_table">
                         <el-table :data="tableData" style="width: 100%;cursor: pointer" @row-click="handleRowClick">
                         <el-table :data="tableData" style="width: 100%;cursor: pointer" @row-click="handleRowClick">
-                            <el-table-column prop="name" label="会话名称" width="180">
+                            <el-table-column prop="name" label="会话名称" >
                             </el-table-column>
                             </el-table-column>
                             <el-table-column prop="ctime" label="创建时间" width="180">
                             <el-table-column prop="ctime" label="创建时间" width="180">
                             </el-table-column>
                             </el-table-column>
-                            <el-table-column prop="utime" label="更新时间">
+                            <el-table-column prop="utime" label="更新时间" width="180">
                             </el-table-column>
                             </el-table-column>
-                            <el-table-column prop="control" label="操作">
+                            <el-table-column prop="control" label="操作" width="200">
                                 <template slot-scope="scope">
                                 <template slot-scope="scope">
                                     <div style="display: flex;">
                                     <div style="display: flex;">
                                         <div class="bianji">
                                         <div class="bianji">
@@ -410,7 +410,7 @@ export default {
         //     if(this.bianjiText){
         //     if(this.bianjiText){
         //         this.fileMenu = 2
         //         this.fileMenu = 2
         //     }
         //     }
-            
+
         // },
         // },
         // pushAiContent(data){
         // pushAiContent(data){
         //     this.aiContentArea.push(...data),
         //     this.aiContentArea.push(...data),
@@ -1154,4 +1154,4 @@ export default {
     display: inline-block;
     display: inline-block;
     width: 100%;
     width: 100%;
 }
 }
-</style>
+</style>

+ 39 - 6
src/components/pages/testPerson/info/infoDialog/index.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <el-dialog title="编辑个人信息" :visible.sync="dialogVisibleInfo" :append-to-body="true" width="500px"
   <el-dialog title="编辑个人信息" :visible.sync="dialogVisibleInfo" :append-to-body="true" width="500px"
-    :before-close="handleClose" class="dialog_diy">
+    :before-close="handleClose" class="dialog_diy" :show-close="isClosed">
     <div style="width:100%;height: 100%;">
     <div style="width:100%;height: 100%;">
       <div class="info_box">
       <div class="info_box">
         <div class="img" v-loading="imgLoading">
         <div class="img" v-loading="imgLoading">
@@ -21,7 +21,7 @@
           </el-select>
           </el-select>
         </div> -->
         </div> -->
 
 
-        <div class="info_span" v-for="item in teaType" :key="item.id">
+        <div class="info_span" v-for="item in teaType" :key="item.id" :class="{ 'error-text': !item.value.length, 'error-border': !item.value.length }">
           <span>
           <span>
             {{ item.name + ":" }}
             {{ item.name + ":" }}
           </span>
           </span>
@@ -48,7 +48,7 @@
     </div>
     </div>
     <span slot="footer" class="dialog-footer">
     <span slot="footer" class="dialog-footer">
       <el-button type="primary" @click="confirm()">确 认</el-button>
       <el-button type="primary" @click="confirm()">确 认</el-button>
-      <el-button @click="close()">关 闭</el-button>
+      <el-button @click="close()" v-if="isClosed">关 闭</el-button>
     </span>
     </span>
   </el-dialog>
   </el-dialog>
 </template>
 </template>
@@ -105,12 +105,13 @@ export default {
       typeId2: "",
       typeId2: "",
       formLabelWidth: "100px",
       formLabelWidth: "100px",
       oidArray: ["d67940a5-510c-40ea-9c9a-2631ab03013a"],
       oidArray: ["d67940a5-510c-40ea-9c9a-2631ab03013a"],
-      resultInfo: '' // 用于存储字符串
+      resultInfo: '', // 用于存储字符串
+      isClosed: true,
     };
     };
   },
   },
   mounted() {
   mounted() {
     this.$nextTick();
     this.$nextTick();
-
+    this.getTypeInfo();
   },
   },
   methods: {
   methods: {
     cha(rows) {
     cha(rows) {
@@ -170,6 +171,10 @@ export default {
 
 
     },
     },
     confirm() {
     confirm() {
+      if(!this.panData()){
+        this.$message.error('请完善教研室分类信息');
+        return;
+      }
       if (!this.info.username) {
       if (!this.info.username) {
         this.$message.error("姓名不能为空!");
         this.$message.error("姓名不能为空!");
         return
         return
@@ -215,20 +220,40 @@ export default {
           }
           }
           this.info.teacherOffice = this.arrayToArray(this.info.cclassid.split(','), array)
           this.info.teacherOffice = this.arrayToArray(this.info.cclassid.split(','), array)
           console.log(this.info.cclassid);
           console.log(this.info.cclassid);
-          
+          let count = 0
           this.teaType.forEach(e =>{
           this.teaType.forEach(e =>{
             let array2 = []
             let array2 = []
             for (var i = 0; i < e.child.length; i++) {
             for (var i = 0; i < e.child.length; i++) {
               array2.push(e.child[i].id)
               array2.push(e.child[i].id)
             }
             }
             e.value = this.arrayToArray(this.info.cclassid.split(','), array2)
             e.value = this.arrayToArray(this.info.cclassid.split(','), array2)
+            if(e.value.length){
+              count++
+            }
           })
           })
+          if(count != this.teaType.length){
+            this.$emit("update:dialogVisibleInfo", true);
+          }
+          if(!this.panData()){
+            this.isClosed = false
+          }else {
+            this.isClosed = true
+          }
           this.$forceUpdate();
           this.$forceUpdate();
         })
         })
         .catch((err) => {
         .catch((err) => {
           console.error(err);
           console.error(err);
         });
         });
     },
     },
+    panData(){
+      let count = 0
+      this.teaType.forEach(e =>{
+        if(e.value.length){
+          count++
+        }
+      })
+      return count == this.teaType.length
+    },
     arrayToArray(arrayo, arrayt) {
     arrayToArray(arrayo, arrayt) {
       let array1 = arrayo;
       let array1 = arrayo;
       let array2 = arrayt;
       let array2 = arrayt;
@@ -499,4 +524,12 @@ export default {
 .info_span>div {
 .info_span>div {
     width: 250px;
     width: 250px;
 }
 }
+
+.error-border >>> .el-input__inner {
+  border: 1px solid red; /* 红色边框 */
+}
+
+.error-text {
+  color: red; /* 红色文字 */
+}
 </style>
 </style>

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