Bläddra i källkod

Merge branch 'beta'

lsc 2 månader sedan
förälder
incheckning
6c9555005c
28 ändrade filer med 1478 tillägg och 392 borttagningar
  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%;
       background: #e6eaf0;
       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浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/css/app.69dae9f1eb5f33fa8a49717afaf55a96.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/css/app.69dae9f1eb5f33fa8a49717afaf55a96.css.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/app.da2a63f4612844236887.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/app.da2a63f4612844236887.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 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}`
           }
         ],
-        stream: false,
+        stream: true,
         uid: this.userid,
         mind_map_question: ""
       });

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

@@ -2354,12 +2354,12 @@
                     <!-- <span class="button-toggle" @click="stepShow = !stepShow">{{ stepShow ? '收缩' : '展开' }}</span> -->
                   </div>
                   <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',
                     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="nt_taskBox" style="width: 100%;">
                           <div class="nt_taskTitle"
@@ -7909,7 +7909,7 @@ export default {
           }
         }
         if (cPan == 2) {
-          this.unitIndex = oldValue;
+          // this.unitIndex = oldValue;
           return;
         }
         for (var i = 0; i < this.unitJson.length; i++) {
@@ -7987,7 +7987,7 @@ export default {
         }
         this.inputShow = true;
         if (cPan == 2) {
-          this.steps = old;
+          // this.steps = old;
           return;
         }
         this.goTo(
@@ -10461,6 +10461,9 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
                 if(fileid && fileid != 1){
                   _this.knowFileids.push(fileid)
                 }
+                if(!_this.courseName){
+                  _this.courseName = fileName.split('.').slice(0, -1).join('.')
+                }
                 console.log(data.Location);
               }
             });
@@ -12518,7 +12521,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       }
       this.inputShow = true;
       if (cPan == 2) {
-        this.steps--;
+        // this.steps--;
         return;
       }
       let params = [
@@ -12589,7 +12592,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       }
       this.inputShow = true;
       if (cPan == 2) {
-        this.steps--;
+        // this.steps--;
         return;
       }
       let params = [
@@ -12654,7 +12657,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       }
       this.inputShow = true;
       if (cPan == 2) {
-        this.steps--;
+        // this.steps--;
         return;
       }
       for (var i = 0; i < this.unitJson.length; i++) {

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

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

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

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

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

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

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

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

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

@@ -1,13 +1,24 @@
 <template>
   <div class="appManagement">
     <div class="ac_left">
+      <div class="find">
+        <img src="../../../../assets/icon/appStore/find_icon.svg" />
+        <span>发现</span>
+      </div>
       <saveCard
         title="最近使用"
         :data="recentUse"
+        :icon="require('../../../../assets/icon/appStore/history2_icon.svg')"
         :type="1"
         @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 class="ac_right">
       <div class="ac_header">
@@ -53,14 +64,14 @@
 
         </div> -->
         <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">
           <img :src="bannerObj.poster" alt="banner图" />
         </div>
@@ -84,7 +95,7 @@
               v-model="selectJuri"
               placeholder="请选择显示范围"
               @change="changeSelectType"
-              style="width: 150px;margin-right: 10px;"
+              style="width: 120px;margin-right: 10px;"
             >
               <el-option
                 v-for="item in selectList"
@@ -97,7 +108,7 @@
               v-model="selectLabel"
               placeholder="请选择类型"
               @change="changeSelectType"
-              style="width: 120px;margin-right: 10px;"
+              style="width: 110px;margin-right: 10px;"
             >
               <el-option
                 v-for="item in labelSelect"
@@ -108,24 +119,34 @@
             </el-select>
             <el-input
               v-model="searchText"
-              style="width: 200px;"
+              style="width: 250px;margin-right: 10px;"
               placeholder="请输入应用名称"
               @keyup.enter.native="getData"
-              clearable
-            />
-            <el-button
+            >
+              <i
+                slot="suffix"
+                class="searchInputIcon el-icon-search"
+                @click="getData"
+              ></i>
+            </el-input>
+            <!-- <el-button
               type="primary"
               style="margin-left: 10px;"
               icon="el-icon-search"
               @click="getData"
-            ></el-button>
+            ></el-button> -->
             <el-button type="primary" @click="selectApp()">发布应用</el-button>
           </div>
         </div>
       </div>
 
       <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_t_left">
               <img v-if="item.json.icon" :src="item.json.icon" />
@@ -173,28 +194,43 @@
                       @click.stop="copyApp(item)"
                       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>
                     </div>
                     <div
                       @click.stop="updateApp(item)"
                       v-if="item.userid === userId"
                     >
-                    <img src="../../../../assets/icon/appStore/edit.svg" alt="">
+                      <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="">
+                      <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'}`"
+                    :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"
@@ -305,6 +341,235 @@
             </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
           class="ac_c_item"
           v-for="(item, index) in dataList"
@@ -414,7 +679,7 @@
             <div>{{ item.detail }}</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>
         </div>
       </div>
@@ -480,12 +745,12 @@ export default {
       selectList: [
         { index: 3, label: "所有组织" },
         { index: 2, label: "组织内" },
-        { index: 1, label: "我的" },
+        { index: 1, label: "我的" }
         // { index: 98,label:"已发布"},
         // { index: 99,label:"未发布"},
       ],
       labelSelect: [
-        { value: "", label: "全部类型" },
+        { value: "", label: "所有类型" },
         { value: "agent", label: "智能体" },
         { value: "workflow", label: "工作流" }
       ],
@@ -533,6 +798,16 @@ export default {
       };
     }
   },
+  watch: {
+    searchText: {
+      immediate:false,
+      handler() {
+        if (this.searchText === "") {
+          this.getData();
+        }
+      }
+    }
+  },
   methods: {
     changeType(newIndex) {
       let flag = this.showType === newIndex;
@@ -646,7 +921,7 @@ export default {
           this.ajax
             .post(this.$store.state.api + "insert_appStore", params)
             .then(res => {
-              if (res.data == 1) {
+              if (res.data) {
                 this.$message.success("复制成功,已添加至我的列表。");
                 this.getData();
                 this.insertSave(item, 3);
@@ -717,7 +992,7 @@ export default {
         this.ajax
           .post(this.$store.state.api + "insert_appStore", params)
           .then(res => {
-            if (res.data == 1) {
+            if (res.data[0][0]["id"]) {
               this.$message.success("添加成功");
               this.$refs.addAppDialogRef.close(true);
               this.getData();
@@ -748,7 +1023,7 @@ export default {
         this.ajax
           .post(this.$store.state.api + "update_appStore", params)
           .then(res => {
-            if (res.data == 1) {
+            if (res.data) {
               this.$message.success("修改成功");
               this.$refs.addAppDialogRef.close(true);
               this.getData();
@@ -782,14 +1057,14 @@ export default {
       this.ajax
         .post(this.$store.state.api + "update_appStore", params)
         .then(res => {
-          if (res.data == 1) {
+          if (res.data) {
             this.$message.success("发布成功");
             this.$refs.releaseAppDialogRef.close(true);
-            this.getData();
           } else {
             this.$message.error("发布失败");
             this.$refs.releaseAppDialogRef.loading = false;
           }
+          this.getData();
         })
         .catch(err => {
           console.log(err);
@@ -809,6 +1084,11 @@ export default {
         .then(res => {
           let data = res.data[0];
           if (data.length > 0) {
+            // data.forEach(i => {
+            //   if (i.open == undefined) {
+            //     i.open = true;
+            //   }
+            // });
             this.typeList = data;
           }
         })
@@ -935,8 +1215,8 @@ export default {
               } else {
                 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 => {
@@ -1095,7 +1375,7 @@ export default {
   margin: 0;
   overflow: auto;
   box-sizing: border-box;
-  padding: 20px;
+  /* padding: 20px; */
   display: flex;
   justify-content: space-between;
 }
@@ -1103,24 +1383,52 @@ export default {
 .ac_left {
   /* width: 280px;
   min-width: 280px; */
-  width: clamp(150px, 12vw, 280px);
-  min-width: 150px;
+  width: clamp(200px, 12vw, 280px);
+  min-width: 200px;
   margin-right: 20px;
   height: 100%;
-  border-radius: 5px;
+  /* border-radius: 5px; */
   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;
   padding: 10px;
+  padding-left: 20px;
   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 {
   flex: 1;
   min-width: 800px;
   height: 100%;
-  overflow-y: hidden;
+  overflow: auto;
   display: flex;
+  padding-right: 10px;
+  padding-top: 10px;
+  box-sizing: border-box;
   flex-direction: column;
 }
 
@@ -1128,8 +1436,8 @@ export default {
   width: 100%;
   height: auto;
   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 {
@@ -1182,7 +1490,8 @@ export default {
 
 .ac_h_banner {
   width: 100%;
-  height: clamp(100px, 20vh, 300px);
+  height: clamp(100px, 25vh, 350px);
+  /* height: 400px; */
   border-radius: 5px;
   overflow: hidden;
   box-sizing: border-box;
@@ -1204,6 +1513,7 @@ export default {
   display: flex;
   justify-content: space-between;
   align-items: center;
+  border-bottom: solid 1px #e7e7e7;
 }
 
 .ac_h_b_typeList {
@@ -1216,7 +1526,7 @@ export default {
 
 .ac_h_b_typeList > span {
   font-size: 18px;
-  margin-right: 20px;
+  margin-right: 30px;
   margin-top: 10px;
   margin-bottom: 5px;
   cursor: pointer;
@@ -1224,6 +1534,18 @@ export default {
 
 .ac_h_b_typeList_active {
   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 {
@@ -1235,16 +1557,19 @@ export default {
 
 .ac_content {
   width: 100%;
-  flex: 1;
   height: auto;
   margin-top: 10px;
-  overflow: auto;
-  min-height: 200px;
+  padding-bottom: 10px;
+}
+
+.ac_c_typeCard {
+  width: 100%;
+  height: auto;
 }
 
 .ac_c_item {
   width: calc(100% / 4 - (15px * 4) / 4);
-  height: 250px;
+  height: 260px;
   background-color: #fff;
   border-radius: 10px;
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
@@ -1254,7 +1579,7 @@ export default {
   margin-bottom: 15px;
   float: left;
   border: solid 1px #e7e7e7;
-  transition: .2s;
+  transition: 0.2s;
 
   /* cursor: pointer; */
 }
@@ -1314,43 +1639,51 @@ export default {
   height: 40%;
   display: flex;
   box-sizing: border-box;
-  padding-top: 2%;
+  /* padding-top: 2%; */
   justify-content: center;
+  color: #a1a1a1;
   /* align-items: center; */
 }
 
 .ac_c_i_top {
   width: 100%;
   display: flex;
-  height: calc(100% - 40px);
+  height: calc(100% - 40px - 10px);
   cursor: pointer;
 }
 
 .ac_c_i_t_left {
-  width: 100px;
-  min-width: 100px;
-  height: 100%;
+  width: 80px;
+  min-width: 80px;
+  height: 80px;
   box-sizing: border-box;
   display: flex;
   align-items: flex-start;
   box-sizing: border-box;
-  padding: 10px;
+  /* padding: 10px; */
+  margin-right: 10px;
 }
 
 .ac_c_i_t_left > svg {
   width: 100%;
-  height: auto;
+  height: 80px;
+  border: 1px solid #e7e7e7;
+  border-radius: 4px;
+  box-sizing: border-box;
 }
 
 .ac_c_i_t_left > img {
   width: 100%;
   object-fit: cover;
   height: 80px;
+  border: 1px solid #e7e7e7;
+  border-radius: 4px;
+  box-sizing: border-box;
 }
 
 .ac_c_i_t_right {
   flex: 1;
-  width: calc(100% - 100px);
+  width: calc(100% - 100px - 10px);
   height: 100%;
   display: flex;
   flex-direction: column;
@@ -1366,7 +1699,6 @@ export default {
   align-items: flex-end;
   justify-content: space-between;
   position: relative;
-  font-size: 1.3em;
   font-weight: bold;
   box-sizing: border-box;
   padding-bottom: 2px;
@@ -1378,6 +1710,7 @@ export default {
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
+  font-size: 22px;
 }
 
 .ac_c_i_t_popover {
@@ -1396,7 +1729,7 @@ export default {
   padding: 2.5px;
   /* transform: rotate(90deg); */
   cursor: pointer;
-  transition: .3s;
+  transition: 0.3s;
   border-radius: 4px;
 }
 
@@ -1410,7 +1743,7 @@ export default {
   background-color: #fff;
   /* box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1); */
   width: auto;
-  border: 1px solid #E7E7E7
+  border: 1px solid #e7e7e7;
 }
 
 .ac_c_i_t_p_box > div {
@@ -1428,7 +1761,7 @@ export default {
   box-sizing: border-box;
 }
 
-.ac_c_i_t_p_box > div>img{
+.ac_c_i_t_p_box > div > img {
   width: 18px;
   height: 18px;
   margin-right: 10px;
@@ -1443,6 +1776,7 @@ export default {
   display: flex;
   justify-content: space-between;
   align-items: center;
+  margin: 10px 0;
 }
 
 .ac_c_i_t_r_center > span {
@@ -1450,6 +1784,7 @@ export default {
   max-width: calc(100% - 80px);
   white-space: nowrap;
   overflow: hidden;
+  font-size: 18px;
   color: #00000066;
   text-overflow: ellipsis;
 }
@@ -1460,7 +1795,7 @@ export default {
   display: flex;
   align-items: center;
   justify-content: center;
-  font-size: 0.8em;
+  font-size: 16px;
   background-color: #f3f3f3;
   color: #00000066;
   border-radius: 3px;
@@ -1474,39 +1809,39 @@ export default {
 
 .ac_c_i_t_r_bottom {
   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;
+  font-size: 16px;
   color: #00000099;
   display: -webkit-box;
   -webkit-box-orient: vertical;
-  -webkit-line-clamp: 5;
+  -webkit-line-clamp: 4;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 
 .ac_c_i_bottom {
   width: 100%;
-  height: 40px;
-  padding-top: 10px;
+  height: 60px;
   box-sizing: border-box;
-  border-top: solid 2px #e7e7e7;
+  border-top: solid 1px #e7e7e7;
   display: flex;
   align-items: center;
   justify-content: space-between;
 }
 
 .ac_c_i_b_left {
-  width: 130px;
+  width: calc(100% - 60px);
   display: flex;
   align-items: center;
-  justify-content: space-between;
+  /* justify-content: space-between; */
   overflow: auto;
   height: 100%;
 }
 
 .ac_c_i_b_left > div {
-  /* margin-right: 20px; */
+  margin-right: 20px;
   display: flex;
   align-items: center;
 }
@@ -1526,7 +1861,7 @@ export default {
   display: flex;
   align-items: center;
   width: 70px;
-  height: 100%;
+  height: 70%;
   justify-content: flex-end;
 }
 
@@ -1549,6 +1884,53 @@ export default {
   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 {
   width: 100%;
   height: 50px;

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

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

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

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

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

@@ -322,9 +322,9 @@ export default {
           _item2.array.forEach((i, index2) => {
             choseTxt += `${
               _item2.answer2 === index2 || _item2.answer2.includes(index2)
-                ? "☑"
-                : ""
-            }${i.option}    `;
+                ? "☑"+i.option
+                : ""
+            }`;
           });
           _list.push({
             name: _item2.title,
@@ -521,11 +521,11 @@ export default {
               `{${fieldList[i].field}}`,
               fieldList[i].value
             );
-          } else if (this.fieldList[i].type == "file") {
+          } else if (fieldList[i].type == "file") {
             let _text = ``;
             // 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)) {
                 // const img = await this.convertImageUrlToBase64(f.url);
                 // _text += `<img src="${f.url}" width="${100}" height="100" style="object-fit:contain"/><br/>`;
@@ -533,11 +533,12 @@ export default {
                 let _setWidth = 100;
                 let _setHeight = (_imageWidthAndHeight.height / _imageWidthAndHeight.width) * _setWidth; // 根据比例计算高度
                 _text += `<img src="${f.url}" width="${_setWidth}" height="${_setHeight}" style="object-fit:contain"/><br/>`;
+                console.log(_text)
               } else {
                 _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);
             // });
           }
         }

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 581 - 172
src/components/pages/test/check/index.vue


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 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: {
 		data() {
+      this.chartData = JSON.parse(JSON.stringify(this.data))
 			this.getChartData();
-		},
+    },
 	},
 	methods: {
 		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", () => {
 					this.chartObj.resize();
       });

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

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

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

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

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

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

Vissa filer visades inte eftersom för många filer har ändrats