lex 1 rok pred
rodič
commit
84637e9b81
44 zmenil súbory, kde vykonal 1029 pridanie a 643 odobranie
  1. 41 27
      src/components/TheSearch/index.module.less
  2. 5 1
      src/components/TheSearch/index.tsx
  3. 1 1
      src/components/card-preview/index.module.less
  4. 3 2
      src/components/card-preview/song-modal/index.module.less
  5. 6 4
      src/components/card-preview/video-modal/index.module.less
  6. 1 1
      src/utils/urlUtils.ts
  7. 6 2
      src/views/attend-class/component/audio.module.less
  8. 6 2
      src/views/attend-class/component/video.module.less
  9. 3 3
      src/views/attend-class/index.module.less
  10. 1 1
      src/views/attend-class/model/train-settings/index.module.less
  11. 39 0
      src/views/attend-class/model/train-type/index.module.less
  12. 38 29
      src/views/attend-class/model/train-type/index.tsx
  13. 108 12
      src/views/classList/index.module.less
  14. 43 26
      src/views/classList/index.tsx
  15. 21 22
      src/views/classList/modals/restStudentBox.tsx
  16. 1 44
      src/views/home/components/trainData.tsx
  17. 1 1
      src/views/home/index.module.less
  18. 1 2
      src/views/home/index.tsx
  19. 33 2
      src/views/prepare-lessons/components/directory-main/select-lessonware/index.module.less
  20. 33 17
      src/views/prepare-lessons/components/directory-main/select-lessonware/index.tsx
  21. 59 0
      src/views/prepare-lessons/components/lesson-main/courseware/index.module.less
  22. 95 43
      src/views/prepare-lessons/components/lesson-main/courseware/index.tsx
  23. 1 1
      src/views/prepare-lessons/components/lesson-main/train/index.module.less
  24. 1 1
      src/views/prepare-lessons/components/lesson-main/train/index.tsx
  25. 39 39
      src/views/prepare-lessons/components/resource-main/components/resource-item/index.tsx
  26. 1 1
      src/views/prepare-lessons/components/resource-main/components/select-music/index.module.less
  27. 1 1
      src/views/prepare-lessons/components/resource-main/index.module.less
  28. 1 1
      src/views/prepare-lessons/model/select-resources/index.module.less
  29. 2 2
      src/views/prepare-lessons/model/select-resources/select-item/index.module.less
  30. 39 39
      src/views/prepare-lessons/model/select-resources/select-item/index.tsx
  31. 8 3
      src/views/setting/components/personInfo.tsx
  32. 11 3
      src/views/setting/components/schoolInfo/index.module.less
  33. 30 8
      src/views/setting/index.module.less
  34. 5 5
      src/views/setting/index.tsx
  35. 4 6
      src/views/studentList/components/baseInfo.tsx
  36. 4 3
      src/views/studentList/components/evaluationRecords.tsx
  37. 30 26
      src/views/studentList/components/practiceData.tsx
  38. 4 6
      src/views/studentList/components/studentAfterWork.tsx
  39. 21 7
      src/views/studentList/index.module.less
  40. 25 1
      src/views/studentList/modals/studentTraomomhDetails.tsx
  41. 9 3
      src/views/studentList/studentDetail.tsx
  42. 4 2
      src/views/xiaoku-ai/index.tsx
  43. 243 243
      src/views/xiaoku-music/index.module.less
  44. 1 0
      src/views/xiaoku-music/index.tsx

+ 41 - 27
src/components/TheSearch/index.module.less

@@ -1,38 +1,52 @@
 .TheSearch {
-    border-radius: 20px !important;
+  border-radius: 20px !important;
 
-    :global {
-        .n-input-wrapper {
-            padding-left: 12px;
-            padding-right: 4px;
-            height: 42px !important;
-        }
-
-        .n-button {
-            height: 34px;
-            font-size: 15px;
-            font-weight: 500;
-            width: auto;
-        }
+  &.noBorder {
+    --n-border: none !important;
+  }
+
+  :global {
+    .n-input-wrapper {
+      padding-left: 12px;
+      padding-right: 4px;
+      height: 42px !important;
     }
 
+    .n-button {
+      height: 34px;
+      font-size: 15px;
+      font-weight: 500;
+      width: auto;
+      opacity: 0.7;
+    }
+
+  }
+
+  .active {
+    display: none;
+  }
+
+  &:global(.n-input--focus) {
     .active {
-        display: none;
+      display: block;
     }
 
-    &:global(.n-input--focus) {
-        .active {
-            display: block;
-        }
+    .default {
+      display: none;
+    }
 
-        .default {
-            display: none;
-        }
+    :global {
+      .n-button {
+        opacity: 1;
+      }
+    }
+  }
 
-        :global {
-            .n-button {
-                opacity: 1;
-            }
-        }
+  &:hover {
+    :global {
+      .n-button {
+        opacity: 1;
+      }
     }
+  }
 }

+ 5 - 1
src/components/TheSearch/index.tsx

@@ -11,6 +11,10 @@ export default defineComponent({
     round: {
       type: Boolean as PropType<InputProps['round']>,
       default: false
+    },
+    border: {
+      type: Boolean,
+      default: true
     }
   },
   emits: ['search'],
@@ -20,7 +24,7 @@ export default defineComponent({
     });
     return () => (
       <NInput
-        class={styles.TheSearch}
+        class={[styles.TheSearch, props.border ? '' : styles.noBorder]}
         round={props.round}
         placeholder="请输入搜索关键词"
         clearable

+ 1 - 1
src/components/card-preview/index.module.less

@@ -4,7 +4,7 @@
   :global {
     .n-card__content {
       height: 517px;
-      border-radius: 16px;
+      border-radius: 0 0 16px 16px !important;
       overflow: hidden;
     }
 

+ 3 - 2
src/components/card-preview/song-modal/index.module.less

@@ -26,7 +26,7 @@
     position: absolute;
     top: 0;
     right: 0;
-    bottom: 0;
+    bottom: 80px;
     left: 0;
     padding: 0;
   }
@@ -38,6 +38,7 @@
 }
 
 .controls {
+  border-radius: 0 0 16px 16px !important;
   position: absolute;
   bottom: 0;
   left: 0;
@@ -131,4 +132,4 @@
   pointer-events: none;
   transform: translateY(100%);
   transition: all .5s;
-}
+}

+ 6 - 4
src/components/card-preview/video-modal/index.module.less

@@ -85,9 +85,10 @@
 
     .actionBtn {
       display: flex;
+
+      padding: 4px 0;
       width: 52px;
       height: 52px;
-      padding: 4px 0;
       background: transparent;
     }
 
@@ -126,8 +127,9 @@
 
     .loopBtn {
       background-color: transparent;
-      width: 31px;
-      height: 29px;
+      width: 31px !important;
+      height: 29px !important;
+      padding: 0;
       cursor: pointer;
 
       :global {
@@ -141,4 +143,4 @@
       }
     }
   }
-}
+}

+ 1 - 1
src/utils/urlUtils.ts

@@ -1,7 +1,7 @@
 export function vaildUrl() {
   const url: string = window.location.href;
   let returnUrl = '';
-  if (/192/.test(url)) {
+  if (/192/.test(url) || /localhost/.test(url)) {
     //本地环境
     returnUrl = 'https://test.lexiaoya.cn';
   } else if (/test/.test(url)) {

+ 6 - 2
src/views/attend-class/component/audio.module.less

@@ -62,6 +62,10 @@
     font-weight: 600;
     line-height: 33px;
 
+    &>div {
+      font-size: 24px !important;
+    }
+
     .line {
       font-size: 12px;
     }
@@ -103,8 +107,8 @@
 
 
   .iconReplay {
-    width: 41px;
-    height: 39px;
+    width: 43px;
+    height: 42px;
     background-color: transparent;
 
     &>img {

+ 6 - 2
src/views/attend-class/component/video.module.less

@@ -41,6 +41,10 @@
     font-weight: 600;
     line-height: 33px;
 
+    &>div {
+      font-size: 24px !important;
+    }
+
     .line {
       font-size: 12px;
     }
@@ -83,8 +87,8 @@
 
     .actionBtn {
       display: flex;
-      width: 82px;
-      height: 82px;
+      width: 43px !important;
+      height: 43px !important;
       padding: 4px 0;
       background: transparent;
     }

+ 3 - 3
src/views/attend-class/index.module.less

@@ -321,14 +321,14 @@
 .switchDisplaySection {
   position: absolute;
   right: 30px;
-  bottom: 40px;
+  bottom: 30px;
   z-index: 199;
   transition: all 0.5s;
   display: flex;
 
   .displayBtn {
-    width: 70px;
-    height: 70px;
+    width: 90px;
+    height: 90px;
     cursor: pointer;
 
     img {

+ 1 - 1
src/views/attend-class/model/train-settings/index.module.less

@@ -91,7 +91,7 @@
 }
 
 .trainEditModal {
-  width: 580px;
+  width: 494px;
 }
 
 .selectMusicModal {

+ 39 - 0
src/views/attend-class/model/train-type/index.module.less

@@ -143,22 +143,27 @@
     flex-direction: column;
     justify-content: center;
     transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+
     .disPreviewDivide {
       font-size: 15px;
       color: #fff;
     }
+
     :global {
       .n-progress-graph-circle-rail {
         stroke: #8b8b8b !important;
       }
     }
+
     .BProgress {
       color: #fff;
+
       h4 {
         font-size: 20px;
         font-family: 'DINA';
         font-weight: bold;
         text-align: center;
+
         span {
           font-size: 12px;
           font-weight: 400;
@@ -195,6 +200,7 @@
       border-radius: 6px;
       background-color: transparent;
       height: 28px;
+      --n-border: none !important;
     }
   }
 
@@ -224,8 +230,10 @@
   .train-footer {
     :global {
       .n-tag {
+        --n-border: none !important;
         color: #f92d53;
         border: 1px solid #f92d53;
+
       }
     }
   }
@@ -259,3 +267,34 @@
     min-width: 124px;
   }
 }
+
+
+.removeVisiable {
+  width: 500px;
+
+  .studentRemove {
+    padding: 20px 40px 0;
+
+    p {
+      font-size: 18px;
+      color: #777777;
+      line-height: 30px;
+      text-align: center;
+
+      span {
+        color: #EA4132;
+      }
+    }
+  }
+
+  .btnGroupModal {
+    padding: 32px 0;
+
+    :global {
+      .n-button {
+        height: 47px;
+        min-width: 156px;
+      }
+    }
+  }
+}

+ 38 - 29
src/views/attend-class/model/train-type/index.tsx

@@ -1,4 +1,4 @@
-import { PropType, defineComponent } from 'vue';
+import { PropType, defineComponent, ref } from 'vue';
 import styles from './index.module.less';
 import {
   NButton,
@@ -6,14 +6,13 @@ import {
   NSpace,
   NImage,
   NTag,
-  useDialog,
+  NModal,
   NProgress
 } from 'naive-ui';
 import pTag from './images/p-tag.svg';
 import eTag from './images/e-tag.svg';
 import pEdit from './images/p-edit.svg';
 import eEdit from './images/e-edit.svg';
-import iconPause from './images/icon-pause.svg';
 import pDelete from './images/p-delete.svg';
 import eDelete from './images/e-delete.svg';
 import iconDelete from './images/icon-delete.png';
@@ -61,21 +60,8 @@ export default defineComponent({
   emits: ['click', 'delete', 'edit', 'offShelf'],
   setup(props, { emit }) {
     const userStore = useUserStore();
-    const dialog = useDialog();
-
-    const onDelete = () => {
-      const dialogT = dialog.warning({
-        title: '提示',
-        content: '您确定是否删除?',
-        positiveText: '确定',
-        negativeText: '取消',
-        onPositiveClick: () => {
-          dialogT.loading = true;
-          emit('delete', props.item);
-        }
-      });
-    };
 
+    const removeVisiable = ref(false);
     const onDetail = () => {
       const origin = /(localhost|192)/.test(location.host)
         ? 'https://dev.kt.colexiu.com'
@@ -83,9 +69,6 @@ export default defineComponent({
       const src = `${origin}/instrument?platform=pc&modelType=practise&id=${props.item.musicId}&Authorization=${userStore.getToken}`;
       window.open(src, '_blank');
     };
-    function rgba(arg0: number, arg1: number, arg2: number, arg3: number) {
-      throw new Error('Function not implemented.');
-    }
 
     return () => (
       <div
@@ -130,20 +113,23 @@ export default defineComponent({
               {props.item.trainingType === 'EVALUATION'
                 ? '评测模式'
                 : '练习模式'}
-              {props.isDisabled ? null : <img src={iconPause} />}
             </NButton>
           )}
         </div>
         <div class={styles['train-content']}>
-
           <NImage src={props.item.coverImg} previewDisabled objectFit="cover" />
           {props.isDisabled && !props.isCLassWork ? (
             <div class={styles.disPreview}>
               <NProgress
                 percentage={
-                  props.item.trainingType === 'EVALUATION' ? (Number(props.item.trainingTimes) /
-                    Number(props.item.allTimes)) *
-                    100 : ((Number(props.item.trainingTimes) / 60) / Number(props.item.allTimes) * 100)
+                  props.item.trainingType === 'EVALUATION'
+                    ? (Number(props.item.trainingTimes) /
+                        Number(props.item.allTimes)) *
+                      100
+                    : (Number(props.item.trainingTimes) /
+                        60 /
+                        Number(props.item.allTimes)) *
+                      100
                 }
                 offset-degree={180}
                 type="circle"
@@ -154,7 +140,6 @@ export default defineComponent({
                     : '#44B3FF'
                 }
                 style="width: 120px; margin: 0  0 10px;">
-
                 <div class={styles.BProgress}>
                   {props.item.trainingType === 'EVALUATION' ? (
                     <h4>
@@ -164,9 +149,8 @@ export default defineComponent({
                     </h4>
                   ) : (
                     <h4>
-
                       {props.item.trainingTimes
-                        ? parseInt((props.item.trainingTimes / 60) + '')
+                        ? parseInt(props.item.trainingTimes / 60 + '')
                         : 0}
                       <span>分钟</span>
                     </h4>
@@ -227,7 +211,8 @@ export default defineComponent({
                   class={styles.operation}
                   onClick={(e: MouseEvent) => {
                     e.stopPropagation();
-                    onDelete();
+                    // onDelete();
+                    removeVisiable.value = true;
                   }}>
                   <img
                     src={
@@ -254,6 +239,30 @@ export default defineComponent({
             </NButton>
           </div>
         )}
+
+        <NModal
+          v-model:show={removeVisiable.value}
+          preset="card"
+          class={['modalTitle', styles.removeVisiable]}
+          title={'提示'}>
+          <div class={styles.studentRemove}>
+            <p>您确定是否删除?</p>
+
+            <NSpace class={styles.btnGroupModal} justify="center">
+              <NButton
+                round
+                type="primary"
+                onClick={() => {
+                  emit('delete', props.item);
+                }}>
+                确定
+              </NButton>
+              <NButton round onClick={() => (removeVisiable.value = false)}>
+                取消
+              </NButton>
+            </NSpace>
+          </div>
+        </NModal>
       </div>
     );
   }

+ 108 - 12
src/views/classList/index.module.less

@@ -1,15 +1,18 @@
 @img: '../setting/images';
 @currentimg './images'
+
 .listWrap {
   padding: 32px;
   background-color: #fff;
   min-height: 100%;
   border-radius: 20px;
 }
+
 .addBtnIcon {
   width: 16px;
   height: 17px;
 }
+
 .addBtn {
   margin-bottom: 30px;
   height: 43px;
@@ -18,12 +21,14 @@
   line-height: 41px;
   width: 144px;
   padding: 0 24px;
+
   :global {
     .n-button__content {
       font-size: 18px;
     }
   }
 }
+
 .btnGroup {
   padding: 40px 0;
 
@@ -34,13 +39,16 @@
     }
   }
 }
+
 .resetStudentWrap {
   display: flex;
   flex-direction: column;
   align-items: center;
   padding-top: 40px;
+
   .studentTransfer {
     position: relative;
+
     .smallArrow {
       right: 166px;
       top: 15px;
@@ -55,6 +63,7 @@
       .n-legacy-transfer {
         width: 634px;
         min-height: 340px;
+
         .n-legacy-transfer-list {
           &:nth-child(1) {
             .n-legacy-transfer-list-header__header {
@@ -68,17 +77,21 @@
           }
         }
       }
+
       .n-legacy-transfer-list-item {
         &:hover {
           background-color: #fff !important;
         }
       }
+
       .n-legacy-transfer-list__border {
         border: none;
       }
+
       .n-legacy-transfer-list-header__extra {
         display: none;
       }
+
       .n-legacy-transfer-list-header {
         display: flex;
         flex-direction: column;
@@ -86,15 +99,19 @@
         align-items: flex-start;
         height: auto;
       }
+
       .n-legacy-transfer-list-header__checkbox {
         order: 2;
         padding: 0 !important;
+
         &::after {
           content: '全选';
           margin-left: 5px;
         }
+
         margin-top: 8px;
       }
+
       .n-legacy-transfer-list-header__header {
         width: 100%;
         padding: 14px 0;
@@ -105,23 +122,28 @@
         order: 1;
         border-bottom: 1px solid rgba(0, 0, 0, 0.06);
       }
+
       .n-legacy-transfer-list {
         padding: 0 16px;
         min-height: 340px;
         background: #e8f2ff;
         border-radius: 16px 16px 0 0;
         width: 277px;
+
         .n-legacy-transfer-filter {
           background: #e8f2ff;
           padding: 8px 0px 0px;
           border-bottom: none;
         }
+
         .n-input {
           border-radius: 8px;
+
           .n-input-wrapper {
             .n-input__border {
               border-radius: 8px;
             }
+
             .n-input__input-el {
               height: 41px;
               line-height: 41px;
@@ -130,6 +152,7 @@
           }
         }
       }
+
       // .n-legacy-transfer-gap {
       //   width: 80px;
       //   .n-button {
@@ -191,6 +214,7 @@
       //   }
       // }
     }
+
     .studentTransferBottom {
       width: 100%;
       display: flex;
@@ -205,6 +229,7 @@
         background-color: #e8f2ff;
 
         border-radius: 0 0 8px 8px;
+
         .bottomWrap {
           padding: 14px 0;
           border-top: 1px solid rgba(0, 0, 0, 0.06);
@@ -213,10 +238,12 @@
     }
   }
 }
+
 .studentTransferList {
   display: flex;
   flex-direction: row;
   align-items: center;
+
   .studentLeft,
   .studentRight {
     padding: 14px 16px;
@@ -224,6 +251,7 @@
 
     background: #e8f2ff;
     border-radius: 16px;
+
     .listTop {
       display: flex;
       flex-direction: row;
@@ -234,12 +262,14 @@
       font-weight: 600;
       color: #131415;
       line-height: 22px;
+
       span {
         color: #777;
         font-weight: 400;
         font-size: 12px;
       }
     }
+
     .chioseCheckBox {
       padding: 2px 2px;
       font-size: 16px;
@@ -255,6 +285,7 @@
     flex-direction: column;
     align-items: center;
     justify-content: center;
+
     .chioseBtn {
       cursor: pointer;
       width: 34px;
@@ -262,25 +293,30 @@
       border-radius: 8px;
       background: url('./images/transArrrow.png') no-repeat;
       background-size: 34px 34px;
+
       &:hover {
         background: url('./images/transArrowActive.png') no-repeat;
         background-size: 34px 34px;
       }
     }
+
     .chioseBtnRight {
       transform: rotate(180deg);
       margin-bottom: 23px;
     }
   }
+
   .chioseCheckAllBox {
     margin-top: 8px !important;
     margin-bottom: 14px !important;
   }
+
   .bottom {
     padding-top: 14px;
     border-top: 1px solid rgba(0, 0, 0, 0.06);
   }
 }
+
 .addClass {
   display: flex;
   flex-direction: column;
@@ -325,6 +361,7 @@
     }
   }
 }
+
 .indDot,
 .endDot {
   display: flex;
@@ -364,22 +401,23 @@
     }
   }
 }
+
 .teacherList {
   display: flex;
   flex-direction: row;
   align-items: center;
   margin-bottom: 32px;
+
   .teacherHeader {
     width: 100px;
     height: 100px;
     padding: 4px;
     border-radius: 99px;
-    background: linear-gradient(
-      228deg,
-      rgba(2, 186, 255, 1),
-      rgba(0, 122, 254, 1)
-    );
+    background: linear-gradient(228deg,
+        rgba(2, 186, 255, 1),
+        rgba(0, 122, 254, 1));
     margin-right: 20px;
+
     .teacherHeaderBorder {
       width: 100%;
       height: 100%;
@@ -400,6 +438,7 @@
     border-radius: 50%;
     overflow: hidden;
   }
+
   .workafterInfo {
     h4 {
       font-size: 22px;
@@ -408,24 +447,29 @@
       color: #131415;
       margin-bottom: 12px;
     }
+
     p {
       font-size: 16px;
       line-height: 22px;
       color: #777;
+
       span {
         color: #ea4132;
       }
     }
   }
 }
+
 .isok {
   font-weight: 600;
   color: #333333;
 }
+
 .ison {
   font-weight: 600;
   color: #ea4132;
 }
+
 .nosub {
   font-weight: 600;
   color: #aaa;
@@ -443,6 +487,7 @@
     display: flex;
     flex-direction: row;
     align-items: center;
+
     span {
       font-family: 'DINA';
       font-size: 26px;
@@ -467,6 +512,7 @@
   display: flex;
   flex-direction: row;
   align-items: center;
+
   img {
     margin-left: 11px;
     width: 10px;
@@ -532,11 +578,14 @@
     }
   }
 }
+
 .wordDetailModel {
   width: 1012px;
 }
+
 .trainingDetails {
-  padding: 24px 32px 32px;
+  padding: 24px 0 32px;
+
   .studentList {
     display: flex;
     flex-direction: row;
@@ -544,7 +593,9 @@
     margin-bottom: 24px;
     justify-content: space-between;
     border-bottom: 1px solid #f2f2f2;
-    padding-bottom: 18px;
+    // padding-bottom: 18px;
+    padding: 0 32px 18px;
+
     .studentHeaderWrap {
       display: flex;
       flex-direction: row;
@@ -555,12 +606,11 @@
         height: 66px;
         padding: 2px;
         border-radius: 99px;
-        background: linear-gradient(
-          228deg,
-          rgba(2, 186, 255, 1),
-          rgba(0, 122, 254, 1)
-        );
+        background: linear-gradient(228deg,
+            rgba(2, 186, 255, 1),
+            rgba(0, 122, 254, 1));
         margin-right: 16px;
+
         .studentHeaderBorder {
           width: 100%;
           height: 100%;
@@ -575,16 +625,19 @@
         }
       }
     }
+
     .workStatus {
       width: 87px;
       height: 87px;
     }
+
     .studentHeaderImg {
       width: 66px;
       height: 66px;
       border-radius: 50%;
       overflow: hidden;
     }
+
     .workafterInfo {
       h4 {
         font-size: 22px;
@@ -596,6 +649,7 @@
         display: flex;
         flex-direction: row;
         align-items: center;
+
         .workafterInfoDot {
           width: 52px;
           height: 22px;
@@ -608,34 +662,42 @@
           text-align: center;
           margin-left: 8px;
         }
+
         .workafterInfoDot.workafterTeacherInfoDot {
           background: #198cfe;
         }
       }
+
       p {
         font-size: 16px;
         line-height: 22px;
         color: #777;
+
         span {
           color: #ea4132;
         }
       }
     }
   }
+
   .workList {
     display: flex;
     flex-direction: row;
     align-items: center;
     justify-content: space-between;
     flex-wrap: wrap;
+    padding: 0 32px;
   }
+
   .allTotal {
     font-size: 16px;
     font-weight: 400;
     color: #8b8b8b;
   }
+
   .btnGroups {
     padding: 40px 0;
+
     :global {
       .n-button {
         height: 47px;
@@ -645,3 +707,37 @@
     }
   }
 }
+
+
+.studentVisible {
+  width: 714px;
+}
+
+.removeVisiable {
+  width: 500px;
+
+  .studentRemove {
+    padding: 0 40px;
+
+    p {
+      font-size: 18px;
+      color: #777777;
+      line-height: 30px;
+
+      span {
+        color: #EA4132;
+      }
+    }
+  }
+
+  .btnGroup {
+    padding: 32px 0;
+
+    :global {
+      .n-button {
+        height: 47px;
+        min-width: 156px;
+      }
+    }
+  }
+}

+ 43 - 26
src/views/classList/index.tsx

@@ -20,10 +20,7 @@ import { classGroupList, deleteClass } from './api';
 import CreateClass from './modals/createClass';
 import RestStudentBox from './modals/restStudentBox';
 import TrainDetail from './modals/Gotoclass';
-import {
-  getgradeNumList,
-  classArray
-} from './contants';
+import { getgradeNumList, classArray } from './contants';
 import add from '@/views/studentList/images/add.png';
 import { useRouter } from 'vue-router';
 import { rowDark } from 'naive-ui/es/legacy-grid/styles';
@@ -49,7 +46,9 @@ export default defineComponent({
       studentVisible: false,
       activeRow: null as any,
       showaddClass: false,
-      goCourseVisiable: false
+      goCourseVisiable: false,
+      removeVisiable: false,
+      removeRow: {} as any
     });
     const formRef = ref();
     const dialog = useDialog();
@@ -61,7 +60,7 @@ export default defineComponent({
       console.log('search', state);
     };
 
-    state.gradeNumList = getgradeNumList()
+    state.gradeNumList = getgradeNumList();
     const onReset = () => {
       state.searchForm = {
         keyword: null as any,
@@ -71,22 +70,15 @@ export default defineComponent({
       getList();
     };
 
-    const removeClass = async (row: any) => {
-      dialog.warning({
-        title: '警告',
-        content: `是否删除班级“${row.name}”?`,
-        positiveText: '确定',
-        negativeText: '取消',
-        onPositiveClick: async () => {
-          try {
-            await deleteClass({ ids: row.id });
-            getList();
-            message.success(`删除成功`);
-          } catch (e) {
-            console.log(e);
-          }
-        }
-      });
+    const removeClass = async () => {
+      try {
+        await deleteClass({ ids: state.removeRow.id });
+        getList();
+        message.success(`删除成功`);
+        state.removeVisiable = false;
+      } catch (e) {
+        console.log(e);
+      }
     };
     const getList = async () => {
       // classGroupList
@@ -159,7 +151,10 @@ export default defineComponent({
                   {!(row.preStudentNum > 0) ? (
                     <p
                       style={{ color: '#EA4132', cursor: 'pointer' }}
-                      onClick={() => removeClass(row)}>
+                      onClick={() => {
+                        state.removeVisiable = true;
+                        state.removeRow = row;
+                      }}>
                       删除
                     </p>
                   ) : null}
@@ -267,9 +262,8 @@ export default defineComponent({
         </div>
         <NModal
           v-model:show={state.studentVisible}
-          style={{ width: '707px' }}
           preset="card"
-          class={['modalTitle background']}
+          class={['modalTitle background', styles.studentVisible]}
           title={'学员调整'}>
           <RestStudentBox
             activeRow={state.activeRow}
@@ -296,9 +290,32 @@ export default defineComponent({
           class={['modalTitle background', styles.chioseModel]}
           title={'选择课件'}>
           <TrainDetail
-          activeRow={state.activeRow}
+            activeRow={state.activeRow}
             onClose={() => (state.goCourseVisiable = false)}></TrainDetail>
         </NModal>
+
+        <NModal
+          v-model:show={state.removeVisiable}
+          preset="card"
+          class={['modalTitle', styles.removeVisiable]}
+          title={'删除班级'}>
+          <div class={styles.studentRemove}>
+            <p>
+              确定要删除班级么?
+              <span>删除后该班级所有学生的年级、班级信息将会清空</span>
+              ,重新加入班级后同步更新。
+            </p>
+
+            <NSpace class={styles.btnGroup} justify="center">
+              <NButton round type="primary" onClick={removeClass}>
+                确定
+              </NButton>
+              <NButton round onClick={() => (state.removeVisiable = false)}>
+                取消
+              </NButton>
+            </NSpace>
+          </div>
+        </NModal>
       </div>
     );
   }

+ 21 - 22
src/views/classList/modals/restStudentBox.tsx

@@ -80,8 +80,6 @@ export default defineComponent({
           targetClass.id = classList.value[0].key;
         }
 
-
-
         const tarRes = await getCLassStudentList(targetClass.id);
         targetStudentList.value = tarRes.data.rows.map((item: any) => {
           return {
@@ -230,9 +228,9 @@ export default defineComponent({
     };
 
     const submitStudent = async () => {
-      if(classList.value.length <2){
-        message.error('当前只有一个班级,无法调整')
-        return
+      if (classList.value.length < 2) {
+        message.error('当前只有一个班级,无法调整');
+        return;
       }
       if (submitList.value < 1) {
         emit('close');
@@ -319,23 +317,24 @@ export default defineComponent({
             </div>
             <div class={styles.studentRight}>
               <div class={styles.listTop}>
-                {targetClass.id?      <NDropdown
-                  key="111"
-                  v-model:value={targetClass.id}
-                  options={classList.value}
-                  onSelect={(value: any) => {
-                    chioseClass(value);
-                  }}
-                  scrollable>
-                  <div>
-                    {targetClass.name}
-                    <NImage
-                      class={styles.smallArrow}
-                      src={smallArrow}
-                      previewDisabled></NImage>
-                  </div>
-                </NDropdown>:null}
-
+                {targetClass.id ? (
+                  <NDropdown
+                    key="111"
+                    v-model:value={targetClass.id}
+                    options={classList.value}
+                    onSelect={(value: any) => {
+                      chioseClass(value);
+                    }}
+                    scrollable>
+                    <div>
+                      {targetClass.name}
+                      <NImage
+                        class={styles.smallArrow}
+                        src={smallArrow}
+                        previewDisabled></NImage>
+                    </div>
+                  </NDropdown>
+                ) : null}
               </div>
               <div class={styles.listCore}>
                 <NRow class={styles.chioseCheckAllBox}>

+ 1 - 44
src/views/home/components/trainData.tsx

@@ -58,50 +58,7 @@ export default defineComponent({
         pageTotal: 4
       },
       tableList: [
-        {
-          teacherName: '孙忆枫',
-          createTime: '2023-06-27',
-          endTime: '2023-06-30',
-          status: 'ing',
-          studentNum: 100,
-          submitNum: 100,
-          quantityNum: 60,
-          submitRate: 100,
-          quantityRate: 60
-        },
-        {
-          teacherName: '孙忆枫',
-          createTime: '2023-06-27',
-          endTime: '2023-06-30',
-          status: 'ing',
-          studentNum: 100,
-          submitNum: 100,
-          quantityNum: 60,
-          submitRate: 100,
-          quantityRate: 60
-        },
-        {
-          teacherName: '孙忆枫',
-          createTime: '2023-06-27',
-          endTime: '2023-06-30',
-          status: 'ing',
-          studentNum: 100,
-          submitNum: 100,
-          quantityNum: 60,
-          submitRate: 100,
-          quantityRate: 60
-        },
-        {
-          teacherName: '孙忆枫',
-          createTime: '2023-06-25',
-          endTime: '2023-06-26',
-          status: 'end',
-          studentNum: 100,
-          submitNum: 100,
-          quantityNum: 60,
-          submitRate: 100,
-          quantityRate: 60
-        }
+
       ] as any,
       goCourseVisiable: false
     });

+ 1 - 1
src/views/home/index.module.less

@@ -519,7 +519,7 @@
         }
 
         .DataTopRightDot.DataTopRightDotBlue {
-          background: #d5e9ff;
+          background: #edeef1;
         }
 
         .DataTopRightDot.red {

+ 1 - 2
src/views/home/index.tsx

@@ -336,7 +336,6 @@ export default defineComponent({
 
     return () => (
       <div class={styles.homeWrap}>
-
         <div class={styles.homeInfoLeft}>
           <div class={styles.homeBanner}>
             <div class={styles.welcomeInfo}>
@@ -356,7 +355,7 @@ export default defineComponent({
                 </NButton>
               </div>
             </div>
-            <div class={styles.centerInfo}>11111</div>
+            {/* <div class={styles.centerInfo}>11111</div> */}
             <div class={styles.applyInfo}>
               {userStore.getUserInfo.gender === 1 ? (
                 <img src={teacherMan} class={styles.teacherMan} />

+ 33 - 2
src/views/prepare-lessons/components/directory-main/select-lessonware/index.module.less

@@ -30,7 +30,7 @@
 
   .content {
     min-height: 60vh;
-    padding: 32px 40px;
+    padding: 22px 40px;
   }
 }
 
@@ -74,7 +74,7 @@
     left: 0;
     width: 100%;
     height: 100%;
-    background-color: rgba(0, 0, 0, 0.7);
+    background-color: rgba(0, 0, 0, 0.5);
     z-index: 8;
     display: none;
     align-items: flex-end;
@@ -123,6 +123,7 @@
     background-image: url('../images/icon_default.svg');
     background-repeat: no-repeat;
     background-position: center center;
+    margin-top: 10px;
 
     &::before {
       content: '';
@@ -191,4 +192,34 @@
 
 .teachingModal {
   width: 1100px;
+}
+
+.removeVisiable {
+  width: 500px;
+
+  .studentRemove {
+    padding: 20px 40px 0;
+
+    p {
+      font-size: 18px;
+      color: #777777;
+      line-height: 30px;
+      text-align: center;
+
+      span {
+        color: #EA4132;
+      }
+    }
+  }
+
+  .btnGroup {
+    padding: 32px 0;
+
+    :global {
+      .n-button {
+        height: 47px;
+        min-width: 156px;
+      }
+    }
+  }
 }

+ 33 - 17
src/views/prepare-lessons/components/directory-main/select-lessonware/index.tsx

@@ -39,7 +39,9 @@ export default defineComponent({
       selectItem: {} as any,
       bookVersionId: null,
       keyword: null,
-      currentGradeNum: null
+      currentGradeNum: null,
+      removeVisiable: false,
+      removeRow: {} as any
       // bookType: null
     });
 
@@ -66,21 +68,14 @@ export default defineComponent({
 
     // 删除教材
     const onDelete = async (item: any) => {
-      dialog.warning({
-        title: '提示',
-        content: '是否删除该教材?',
-        positiveText: '确定',
-        negativeText: '取消',
-        onPositiveClick: async () => {
-          try {
-            await lessonCoursewareRemove({ id: item.id });
-            message.success('删除成功');
-            getLessonCourseware();
-          } catch {
-            //
-          }
-        }
-      });
+      try {
+        await lessonCoursewareRemove({ id: forms.removeRow.id });
+        message.success('删除成功');
+        getLessonCourseware();
+        forms.removeVisiable = false;
+      } catch (e) {
+        console.log(e);
+      }
     };
 
     const throttledFn = useThrottleFn(() => getLessonCourseware(), 500);
@@ -217,7 +212,9 @@ export default defineComponent({
                                   color="#EA4132"
                                   onClick={(e: MouseEvent) => {
                                     e.stopPropagation();
-                                    onDelete(item);
+                                    // onDelete(item);
+                                    forms.removeVisiable = true;
+                                    forms.removeRow = item;
                                   }}>
                                   删除
                                 </NButton>
@@ -263,6 +260,25 @@ export default defineComponent({
             }}
           />
         </NModal>
+
+        <NModal
+          v-model:show={forms.removeVisiable}
+          preset="card"
+          class={['modalTitle', styles.removeVisiable]}
+          title={'删除教材'}>
+          <div class={styles.studentRemove}>
+            <p>是否删除该教材</p>
+
+            <NSpace class={styles.btnGroup} justify="center">
+              <NButton round type="primary" onClick={onDelete}>
+                确定
+              </NButton>
+              <NButton round onClick={() => (forms.removeVisiable = false)}>
+                取消
+              </NButton>
+            </NSpace>
+          </div>
+        </NModal>
       </div>
     );
   }

+ 59 - 0
src/views/prepare-lessons/components/lesson-main/courseware/index.module.less

@@ -107,4 +107,63 @@
     margin-right: 8px;
     cursor: pointer;
   }
+}
+
+.removeVisiable {
+  width: 500px;
+
+  .studentRemove {
+    padding: 20px 40px 0;
+
+    p {
+      font-size: 18px;
+      color: #777777;
+      line-height: 30px;
+      text-align: center;
+
+      span {
+        color: #EA4132;
+      }
+    }
+  }
+
+  .btnGroupModal {
+    padding: 32px 0;
+
+    :global {
+      .n-button {
+        height: 47px;
+        min-width: 156px;
+      }
+    }
+  }
+}
+
+.removeVisiable1 {
+  width: 500px;
+
+  .studentRemove {
+    padding: 20px 40px 0;
+
+    p {
+      font-size: 18px;
+      color: #777777;
+      line-height: 30px;
+
+      span {
+        color: #EA4132;
+      }
+    }
+  }
+
+  .btnGroupModal {
+    padding: 32px 0;
+
+    :global {
+      .n-button {
+        height: 47px;
+        min-width: 156px;
+      }
+    }
+  }
 }

+ 95 - 43
src/views/prepare-lessons/components/lesson-main/courseware/index.tsx

@@ -37,7 +37,9 @@ export default defineComponent({
       loadingStatus: false,
       showAttendClass: false,
       removeIds: [] as any, // 临时删除的编号
-      drag: false
+      drag: false,
+      removeVisiable: false,
+      removeVisiable1: false
     });
 
     // 获取列表
@@ -119,42 +121,41 @@ export default defineComponent({
 
     // 完成编辑
     const onOverEdit = async () => {
-      dialog.warning({
-        title: '提示',
-        content: `是否完成编辑?`,
-        positiveText: '确定',
-        negativeText: '取消',
-        onPositiveClick: async () => {
-          try {
-            const temp: any = [];
-            forms.coursewareList.forEach((item: any) => {
-              temp.push({
-                materialName: item.title,
-                materialType: item.type,
-                materialId: item.materialId,
-                id: item.id
-              });
-            });
-            // 保存课件
-            await saveCourseware({
-              coursewareDetailKnowledgeId: prepareStore.getSelectKey,
-              lessonCoursewareId: prepareStore.getLessonCoursewareId,
-              lessonCoursewareDetailId:
-                prepareStore.getLessonCoursewareDetailId,
-              materialList: [...temp]
-            });
-
-            forms.drag = false;
-            message.success('编辑成功');
+      // dialog.warning({
+      //   title: '提示',
+      //   content: `是否完成编辑?`,
+      //   positiveText: '确定',
+      //   negativeText: '取消',
+      //   onPositiveClick: async () => {
+      try {
+        const temp: any = [];
+        forms.coursewareList.forEach((item: any) => {
+          temp.push({
+            materialName: item.title,
+            materialType: item.type,
+            materialId: item.materialId,
+            id: item.id
+          });
+        });
+        // 保存课件
+        await saveCourseware({
+          coursewareDetailKnowledgeId: prepareStore.getSelectKey,
+          lessonCoursewareId: prepareStore.getLessonCoursewareId,
+          lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId,
+          materialList: [...temp]
+        });
 
-            prepareStore.setCoursewareList(forms.coursewareList);
-            // 重置临时删除编号
-            forms.removeIds = [];
-          } catch {
-            //
-          }
-        }
-      });
+        forms.drag = false;
+        message.success('编辑成功');
+        forms.removeVisiable = false;
+        prepareStore.setCoursewareList(forms.coursewareList);
+        // 重置临时删除编号
+        forms.removeIds = [];
+      } catch {
+        //
+      }
+      //   }
+      // });
     };
 
     // 预览上课
@@ -219,7 +220,11 @@ export default defineComponent({
         <div class={styles.btnGroup}>
           {forms.drag ? (
             <NSpace>
-              <NButton type="default" onClick={onOverEdit}>
+              <NButton
+                type="default"
+                onClick={() => {
+                  forms.removeVisiable = true;
+                }}>
                 完成编辑
               </NButton>
               <NButton
@@ -229,16 +234,12 @@ export default defineComponent({
                   forms.removeIds = [];
                   getList();
                 }}>
-                退出编辑
+                取消编辑
               </NButton>
               <NButton
                 type="error"
                 onClick={() => {
-                  forms.coursewareList.forEach((item: any) => {
-                    forms.removeIds.push(item.id);
-                  });
-                  forms.coursewareList = [];
-                  // prepareStore.setCoursewareList([]);
+                  forms.removeVisiable1 = true;
                 }}>
                 清空资源
               </NButton>
@@ -368,6 +369,57 @@ export default defineComponent({
           blockScroll={false}>
           <AttendClass onClose={() => (forms.showAttendClass = false)} />
         </NModal>
+
+        <NModal
+          v-model:show={forms.removeVisiable}
+          preset="card"
+          class={['modalTitle', styles.removeVisiable]}
+          title={'提示'}>
+          <div class={styles.studentRemove}>
+            <p>是否完成编辑?</p>
+
+            <NSpace class={styles.btnGroupModal} justify="center">
+              <NButton round type="primary" onClick={onOverEdit}>
+                确定
+              </NButton>
+              <NButton round onClick={() => (forms.removeVisiable = false)}>
+                取消
+              </NButton>
+            </NSpace>
+          </div>
+        </NModal>
+
+        <NModal
+          v-model:show={forms.removeVisiable1}
+          preset="card"
+          class={['modalTitle', styles.removeVisiable1]}
+          title={'清空资源'}>
+          <div class={styles.studentRemove}>
+            <p>
+              请确认是否要清空资源?
+              <span>点击确认后所有的素材内容 将被清空掉。</span>
+            </p>
+
+            <NSpace class={styles.btnGroupModal} justify="center">
+              <NButton
+                round
+                type="primary"
+                onClick={() => {
+                  forms.coursewareList.forEach((item: any) => {
+                    forms.removeIds.push(item.id);
+                  });
+                  forms.coursewareList = [];
+                  forms.removeVisiable1 = false;
+                  // prepareStore.setCoursewareList([]);
+                }}>
+                确定
+              </NButton>
+              <NButton round onClick={() => (forms.removeVisiable1 = false)}>
+                取消
+              </NButton>
+            </NSpace>
+          </div>
+        </NModal>
       </div>
     );
   }

+ 1 - 1
src/views/prepare-lessons/components/lesson-main/train/index.module.less

@@ -81,7 +81,7 @@
 }
 
 .trainEditModal {
-  width: 580px;
+  width: 494px;
 }
 
 .assignHomework {

+ 1 - 1
src/views/prepare-lessons/components/lesson-main/train/index.tsx

@@ -186,7 +186,7 @@ export default defineComponent({
                   forms.drag = false;
                   getList();
                 }}>
-                退出编辑
+                取消编辑
               </NButton>
               <NButton
                 type="error"

+ 39 - 39
src/views/prepare-lessons/components/resource-main/components/resource-item/index.tsx

@@ -120,47 +120,46 @@ export default defineComponent({
 
     // 添加资源
     const onAdd = async (item: any) => {
-      dialog.warning({
-        title: '提示',
-        content: `是否添加"${item.title}"资源?`,
-        positiveText: '确定',
-        negativeText: '取消',
-        onPositiveClick: async () => {
-          try {
-            console.log(item, 'any');
-            const temp: any = [];
-            prepareStore.getCoursewareList.forEach((item: any) => {
-              temp.push({
-                materialName: item.title,
-                materialType: item.type,
-                materialId: item.materialId,
-                id: item.id
-              });
-            });
+      // dialog.warning({
+      //   title: '提示',
+      //   content: `是否添加"${item.title}"资源?`,
+      //   positiveText: '确定',
+      //   negativeText: '取消',
+      //   onPositiveClick: async () => {
+      try {
+        console.log(item, 'any');
+        const temp: any = [];
+        prepareStore.getCoursewareList.forEach((item: any) => {
+          temp.push({
+            materialName: item.title,
+            materialType: item.type,
+            materialId: item.materialId,
+            id: item.id
+          });
+        });
 
-            // 保存课件
-            await saveCourseware({
-              coursewareDetailKnowledgeId: prepareStore.getSelectKey,
-              lessonCoursewareId: prepareStore.getLessonCoursewareId,
-              lessonCoursewareDetailId:
-                prepareStore.getLessonCoursewareDetailId,
-              materialList: [
-                ...temp,
-                {
-                  materialName: item.title,
-                  materialType: item.type,
-                  materialId: item.id
-                }
-              ]
-            });
+        // 保存课件
+        await saveCourseware({
+          coursewareDetailKnowledgeId: prepareStore.getSelectKey,
+          lessonCoursewareId: prepareStore.getLessonCoursewareId,
+          lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId,
+          materialList: [
+            ...temp,
+            {
+              materialName: item.title,
+              materialType: item.type,
+              materialId: item.id
+            }
+          ]
+        });
 
-            message.success('添加成功');
-            prepareStore.setIsAddResource(true);
-          } catch {
-            //
-          }
-        }
-      });
+        message.success('添加成功');
+        prepareStore.setIsAddResource(true);
+      } catch {
+        //
+      }
+      // }
+      // });
     };
 
     onMounted(() => {
@@ -204,6 +203,7 @@ export default defineComponent({
                     <CardType
                       isShowAdd
                       item={item}
+                      isShowCollect={false}
                       onAdd={(item: any) => onAdd(item)}
                     />
                   ))}

+ 1 - 1
src/views/prepare-lessons/components/resource-main/components/select-music/index.module.less

@@ -27,5 +27,5 @@
 }
 
 .trainEditModal {
-  width: 580px;
+  width: 494px;
 }

+ 1 - 1
src/views/prepare-lessons/components/resource-main/index.module.less

@@ -70,5 +70,5 @@
 }
 
 .trainEditModal {
-  width: 580px;
+  width: 494px;
 }

+ 1 - 1
src/views/prepare-lessons/model/select-resources/index.module.less

@@ -7,7 +7,7 @@
     }
 
     .n-tabs-nav {
-      padding: 12px 20px 24px;
+      padding: 20px 20px 30px;
     }
 
     .n-tabs-tab {

+ 2 - 2
src/views/prepare-lessons/model/select-resources/select-item/index.module.less

@@ -1,9 +1,9 @@
 .listContainer {
   margin: 0;
-  max-height: calc(var(--window-page-lesson-height) - 224px - 20px);
+  max-height: calc(var(--window-page-lesson-height) - 324px - 20px);
 
   .listSection {
-    min-height: calc(var(--window-page-lesson-height) - 224px - 20px);
+    min-height: calc(var(--window-page-lesson-height) - 324px - 20px);
   }
 
   .emptySection {

+ 39 - 39
src/views/prepare-lessons/model/select-resources/select-item/index.tsx

@@ -94,47 +94,46 @@ export default defineComponent({
 
     // 添加资源
     const onAdd = async (item: any) => {
-      dialog.warning({
-        title: '提示',
-        content: `是否添加"${item.title}"资源?`,
-        positiveText: '确定',
-        negativeText: '取消',
-        onPositiveClick: async () => {
-          try {
-            console.log(item, 'any');
-            const temp: any = [];
-            prepareStore.getCoursewareList.forEach((item: any) => {
-              temp.push({
-                materialId: item.materialId,
-                materialName: item.title,
-                materialType: item.type,
-                id: item.id
-              });
-            });
+      // dialog.warning({
+      //   title: '提示',
+      //   content: `是否添加"${item.title}"资源?`,
+      //   positiveText: '确定',
+      //   negativeText: '取消',
+      //   onPositiveClick: async () => {
+      try {
+        console.log(item, 'any');
+        const temp: any = [];
+        prepareStore.getCoursewareList.forEach((item: any) => {
+          temp.push({
+            materialId: item.materialId,
+            materialName: item.title,
+            materialType: item.type,
+            id: item.id
+          });
+        });
 
-            // 保存课件
-            await saveCourseware({
-              coursewareDetailKnowledgeId: prepareStore.getSelectKey,
-              lessonCoursewareId: prepareStore.getLessonCoursewareId,
-              lessonCoursewareDetailId:
-                prepareStore.getLessonCoursewareDetailId,
-              materialList: [
-                ...temp,
-                {
-                  materialName: item.title,
-                  materialType: item.type,
-                  materialId: item.id
-                }
-              ]
-            });
+        // 保存课件
+        await saveCourseware({
+          coursewareDetailKnowledgeId: prepareStore.getSelectKey,
+          lessonCoursewareId: prepareStore.getLessonCoursewareId,
+          lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId,
+          materialList: [
+            ...temp,
+            {
+              materialName: item.title,
+              materialType: item.type,
+              materialId: item.id
+            }
+          ]
+        });
 
-            message.success('添加成功');
-            prepareStore.setIsAddResource(true);
-          } catch {
-            //
-          }
-        }
-      });
+        message.success('添加成功');
+        prepareStore.setIsAddResource(true);
+      } catch {
+        //
+      }
+      //   }
+      // });
     };
 
     watch(
@@ -192,6 +191,7 @@ export default defineComponent({
                     <CardType
                       isShowAdd
                       item={item}
+                      isShowCollect={false}
                       onAdd={(item: any) => onAdd(item)}
                     />
                   ))}

+ 8 - 3
src/views/setting/components/personInfo.tsx

@@ -95,8 +95,12 @@ export default defineComponent({
               class={styles.defultHeade}
               src={teacherForm.avatar || defultHeade}></NImage>
             <div
-              style={{ display: data.disabled ? 'none' : '' }}
-              class={[styles.defultHeade, styles.changeHead]}>
+              // style={{ display: data.disabled ? 'none' : '' }}
+              class={[
+                styles.defultHeade,
+                styles.changeHead,
+                data.disabled ? styles.disalbedNone : styles.hoverNone
+              ]}>
               修改头像
               {data.uploadShow && (
                 <UploadFile
@@ -124,7 +128,8 @@ export default defineComponent({
               )}
             </p>
             <p class={styles.headerSubTitle}>
-              {userStore.info.schoolInfos?.[0]?.name} | 音乐老师
+              {userStore.info.schoolInfos?.[0]?.name}
+              {/* | 音乐老师 */}
             </p>
           </div>
         </div>

+ 11 - 3
src/views/setting/components/schoolInfo/index.module.less

@@ -50,11 +50,14 @@
       }
 
       &.n-input--disabled {
-        background-color: #F5F6FA;
-        color: rgba(149, 149, 152, 1);
+        .n-input__input-el {
+          background-color: #F5F6FA;
+          color: rgba(0, 0, 0, 0.4);
+        }
       }
     }
 
+
     .n-base-selection {
       height: 50Px;
       width: 284Px;
@@ -68,7 +71,11 @@
 
     .n-base-selection.n-base-selection--disabled .n-base-selection-label {
       background-color: #F5F6FA;
-      color: rgba(149, 149, 152, 1);
+      color: rgba(0, 0, 0, 0.4);
+    }
+
+    .n-base-selection.n-base-selection--disabled .n-base-selection-label .n-base-selection-input {
+      color: rgba(0, 0, 0, 0.4) !important;
     }
   }
 }
@@ -218,6 +225,7 @@
     font-weight: 600 !important;
     margin-right: 24Px;
   }
+
 }
 
 

+ 30 - 8
src/views/setting/index.module.less

@@ -82,6 +82,22 @@
         cursor: pointer;
       }
 
+      .disalbedNone {
+        display: none;
+      }
+
+      .hoverNone {
+        background: transparent;
+        color: transparent;
+        transition: all 0.3s;
+
+        &:hover {
+          background-color: rgba(0, 0, 0, 0.7);
+          color: #fff;
+          transition: all 0.3s;
+        }
+      }
+
       .uploadFile {
         position: absolute;
         left: 0;
@@ -146,8 +162,10 @@
         }
 
         &.n-input--disabled {
-          background-color: #F5F6FA;
-          color: rgba(149, 149, 152, 1);
+          .n-input__input-el {
+            background-color: #F5F6FA;
+            color: rgba(0, 0, 0, 0.4);
+          }
         }
       }
 
@@ -156,15 +174,19 @@
         border-radius: 8Px;
 
         .n-base-selection-label {
-            height: 50Px;
-            font-size: 16Px;
+          height: 50Px;
+          font-size: 16Px;
         }
-    }
+      }
 
-    .n-base-selection.n-base-selection--disabled .n-base-selection-label {
+      .n-base-selection.n-base-selection--disabled .n-base-selection-label {
         background-color: #F5F6FA;
-        color: rgba(149, 149, 152, 1);
-    }
+        color: rgba(0, 0, 0, 0.4) !important;
+      }
+
+      .n-base-selection.n-base-selection--disabled .n-base-selection-label .n-base-selection-input {
+        color: rgba(0, 0, 0, 0.4) !important;
+      }
     }
   }
 }

+ 5 - 5
src/views/setting/index.tsx

@@ -32,11 +32,11 @@ export default defineComponent({
           <NTabPane name="person" tab="个人信息">
             <PersonInfo></PersonInfo>
           </NTabPane>
-          {user.info.isSuperAdmin && (
-            <NTabPane name="school" tab="学校设置">
-              <SchoolInfo />
-            </NTabPane>
-          )}
+          {/* {user.info.isSuperAdmin && ( */}
+          <NTabPane name="school" tab="学校设置">
+            <SchoolInfo />
+          </NTabPane>
+          {/* )} */}
         </NTabs>
       </div>
     );

+ 4 - 6
src/views/studentList/components/baseInfo.tsx

@@ -24,10 +24,7 @@ import { useUserStore } from '/src/store/modules/users';
 import { api_teacherUpdate } from '/src/api/user';
 import { resetStudentInfo } from '../api';
 import UploadFile from '/src/components/upload-file';
-import {
-  getgradeNumList,
-  classArray
-} from '@/views/classList/contants';
+import { getgradeNumList, classArray } from '@/views/classList/contants';
 export default defineComponent({
   name: 'setting-personInfo',
   props: {
@@ -62,8 +59,8 @@ export default defineComponent({
       currentGradeNum: props.studentInfo.currentGradeNum,
       currentClass: props.studentInfo.currentClass
     });
-    const gradeNumList = ref(getgradeNumList())
-    const classArrayRef = ref([...classArray] as any)
+    const gradeNumList = ref(getgradeNumList());
+    const classArrayRef = ref([...classArray] as any);
     const data = reactive({
       disabled: true,
       openChangePwd: false,
@@ -185,6 +182,7 @@ export default defineComponent({
           <NSpace class={styles.btnList} align="center" justify="end">
             <NButton
               class={styles.btn}
+              strong
               color="#f24433"
               onClick={() => (data.disabled = false)}>
               修改信息

+ 4 - 3
src/views/studentList/components/evaluationRecords.tsx

@@ -28,7 +28,8 @@ export default defineComponent({
     studentId: {
       type: String,
       default: ''
-    }, classGroupId: {
+    },
+    classGroupId: {
       type: String,
       default: ''
     }
@@ -147,8 +148,8 @@ export default defineComponent({
       const res = await getPracticeRecordList({
         userId: props.studentId,
         ...state.pagination,
-        classGroupId:props.classGroupId,
-        feature: "EVALUATION",
+        classGroupId: props.classGroupId,
+        feature: 'EVALUATION',
         ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
       });
       state.tableList = res.data.rows;

+ 30 - 26
src/views/studentList/components/practiceData.tsx

@@ -12,7 +12,7 @@ import numeral from 'numeral';
 import { useECharts } from '@/hooks/web/useECharts';
 import Pagination from '/src/components/pagination';
 import { getTrainingStat } from '../api';
-import { getTrainingStatList } from '@/views/classList/api'
+import { getTrainingStatList } from '@/views/classList/api';
 import {
   getNowDateAndMonday,
   getNowDateAndSunday,
@@ -90,19 +90,19 @@ export default defineComponent({
         }
       ];
     };
-    const getList =  async () => {
-        try{
-          const res = await getTrainingStatList({
-            page:1,
-            rows:999,
-            studentId: props.studentId,
-            classGroupId:props.classGroupId,
-            ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
-          })
-          state.tableList = res.data.rows;
-        }catch(e){
-          console.log(e)
-        }
+    const getList = async () => {
+      try {
+        const res = await getTrainingStatList({
+          page: 1,
+          rows: 999,
+          studentId: props.studentId,
+          classGroupId: props.classGroupId,
+          ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
+        });
+        state.tableList = res.data.rows;
+      } catch (e) {
+        console.log(e);
+      }
     };
     const setChart = () => {
       setOptions({
@@ -226,7 +226,7 @@ export default defineComponent({
       try {
         const res = await getTrainingStat({
           studentId: props.studentId,
-          classGroupId:props.classGroupId,
+          classGroupId: props.classGroupId,
           ...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
         });
         payForm.practiceDays = res.data.practiceDays;
@@ -249,7 +249,7 @@ export default defineComponent({
     const search = () => {
       state.pagination.page = 1;
       getChartDetail();
-      getList()
+      getList();
       console.log('search');
     };
     const onReset = () => {
@@ -258,13 +258,13 @@ export default defineComponent({
         getNowDateAndSunday(new Date().getTime())
       ];
       search();
-      getList()
+      getList();
       console.log('onReset');
     };
     onMounted(() => {
       console.log(props.studentId);
       getChartDetail();
-      getList()
+      getList();
     });
     return () => (
       <>
@@ -301,8 +301,10 @@ export default defineComponent({
                           to={getMinutes(
                             payForm.practiceDurationTotal
                           )}></NNumberAnimation>
-                      </span>{' '}
+                      </span>
+                      <i style={{ width: '4px', display: 'inline-block' }}></i>
+                      <i style={{ width: '4px', display: 'inline-block' }}></i>
                     </div>
                   ) : null}
                   <div>
@@ -312,8 +314,8 @@ export default defineComponent({
                         to={getSecend(
                           payForm.practiceDurationTotal
                         )}></NNumberAnimation>
-                    </span>{' '}
-                    秒
+                    </span>
+                    <i style={{ width: '4px', display: 'inline-block' }}></i>
                   </div>
                 </p>
                 <p class={styles.TrainDataItemsubTitle}>累计练习时长</p>
@@ -328,8 +330,10 @@ export default defineComponent({
                           to={getMinutes(
                             payForm.practiceDurationAvg
                           )}></NNumberAnimation>
-                      </span>{' '}
+                      </span>
+                      <i style={{ width: '4px', display: 'inline-block' }}></i>
+                      <i style={{ width: '4px', display: 'inline-block' }}></i>
                     </div>
                   ) : null}
                   <div>
@@ -339,8 +343,8 @@ export default defineComponent({
                         to={getSecend(
                           payForm.practiceDurationAvg
                         )}></NNumberAnimation>
-                    </span>{' '}
-                    秒
+                    </span>
+                    <i style={{ width: '4px', display: 'inline-block' }}></i>
                   </div>
                 </p>
                 <p class={styles.TrainDataItemsubTitle}>平均练习时长</p>
@@ -352,8 +356,8 @@ export default defineComponent({
                       <NNumberAnimation
                         from={0}
                         to={payForm.practiceDays}></NNumberAnimation>
-                    </span>{' '}
-                    天
+                    </span>
+                    <i style={{ width: '4px', display: 'inline-block' }}></i>
                   </div>
                 </p>
                 <p class={styles.TrainDataItemsubTitle}>练习天数</p>

+ 4 - 6
src/views/studentList/components/studentAfterWork.tsx

@@ -25,7 +25,7 @@ import {
   getTimes
 } from '/src/utils/dateFormat';
 import { trainingStatusArray } from '@/utils/searchArray';
-import StudentTraomomhDetails from '../modals/studentTraomomhDetails'
+import StudentTraomomhDetails from '../modals/studentTraomomhDetails';
 import dayjs from 'dayjs';
 import { lookup } from 'dns';
 export default defineComponent({
@@ -204,10 +204,10 @@ export default defineComponent({
     };
     return () => (
       <div>
-        <div >
+        <div>
           <div class={styles.searchList}>
             <NForm label-placement="left" inline>
-                       <NFormItem>
+              <NFormItem>
                 <CDatePicker
                   v-model:value={timer.value}
                   separator={'至'}
@@ -231,7 +231,6 @@ export default defineComponent({
                   v-model:value={state.searchForm.trainingStatus}></CSelect>
               </NFormItem>
 
-
               <NFormItem>
                 <NSpace justify="end">
                   <NButton type="primary" class="searchBtn" onClick={search}>
@@ -248,7 +247,7 @@ export default defineComponent({
               </NFormItem>
             </NForm>
           </div>
-          <div >
+          <div>
             <NDataTable
               class={styles.classTable}
               loading={state.loading}
@@ -260,7 +259,6 @@ export default defineComponent({
               v-model:pageTotal={state.pagination.pageTotal}
               onList={getList}
               sync
-
             />
           </div>
         </div>

+ 21 - 7
src/views/studentList/index.module.less

@@ -250,11 +250,18 @@
         }
       }
     }
+
+    .n-tag {
+      --n-border-radius: 6px !important;
+      --n-height: 26px !important;
+      --n-font-size: 13px !important;
+      --n-padding: 0 14px !important;
+    }
   }
 }
 
 .reportModel {
-  width: 830px;
+  width: 1030px;
   overflow: hidden;
 }
 
@@ -262,7 +269,7 @@
   position: relative;
   width: 378px;
   height: 631px;
-  margin: 120px auto 0;
+  margin: 130px auto 0;
 
   .studentCLose {
     cursor: pointer;
@@ -448,16 +455,18 @@
 
     position: absolute;
     left: -21px;
-    bottom: -120px;
+    bottom: -140px;
     display: flex;
     flex-direction: column;
     align-items: center;
 
     p {
       text-align: center;
-      font-size: 16px;
+      font-size: 20px;
+      font-weight: bold;
       color: #ffffff;
       margin-bottom: 30px;
+
     }
 
     .downBtn {
@@ -483,11 +492,11 @@
   :global {
     .n-form-item-label {
       font-size: 15px;
-      color: rgba(0, 0, 0, 0.8);
+      color: #000;
     }
 
     .n-input {
-      height: 50px;
+      height: 57px;
       border-radius: 8px;
 
       .n-input__input-el {
@@ -504,7 +513,7 @@
       border-radius: 8px;
 
       .n-base-selection-label {
-        height: 50px;
+        height: 57px;
       }
     }
 
@@ -517,6 +526,11 @@
 
 .btnList {
   margin-top: 300px;
+
+  .btn {
+    --n-padding: 0 36px !important;
+    --n-height: 45px !important;
+  }
 }
 
 

+ 25 - 1
src/views/studentList/modals/studentTraomomhDetails.tsx

@@ -71,7 +71,7 @@ export default defineComponent({
       return tList;
     };
     const getTrainingDetail = async (id: any) => {
-      console.log(id,'getTrainingDetail')
+      console.log(id, 'getTrainingDetail');
       try {
         const res = await getTrainingStudentDetail({
           studentLessonTrainingId: id
@@ -173,6 +173,30 @@ export default defineComponent({
                 isCLassWork={false}
                 item={item}></TrainType>
             ))}
+            {teacherInfo.value.studentLessonTrainingDetails.map((item: any) => (
+              <TrainType
+                style={{ marginBottom: '20px' }}
+                isDisabled={true}
+                isDelete={false}
+                isCLassWork={false}
+                item={item}></TrainType>
+            ))}
+            {teacherInfo.value.studentLessonTrainingDetails.map((item: any) => (
+              <TrainType
+                style={{ marginBottom: '20px' }}
+                isDisabled={true}
+                isDelete={false}
+                isCLassWork={false}
+                item={item}></TrainType>
+            ))}
+            {teacherInfo.value.studentLessonTrainingDetails.map((item: any) => (
+              <TrainType
+                style={{ marginBottom: '20px' }}
+                isDisabled={true}
+                isDelete={false}
+                isCLassWork={false}
+                item={item}></TrainType>
+            ))}
           </div>
         </NScrollbar>
       </div>

+ 9 - 3
src/views/studentList/studentDetail.tsx

@@ -23,14 +23,20 @@ import maleIcon from '@/views/setting/images/maleIcon.png';
 import PracticeData from '@/views/studentList/components/practiceData';
 import EvaluationRecords from '@/views/studentList/components/evaluationRecords';
 import BaseInfo from '@/views/studentList/components/baseInfo';
-import StudentAfterWork from './components/studentAfterWork'
+import StudentAfterWork from './components/studentAfterWork';
 import { getTabsCache, setTabsCaches } from '@/hooks/use-async';
 import dayjs from 'dayjs';
 export default defineComponent({
   name: 'studentDetail',
   setup(props, { emit }) {
     const state = reactive({
-      studentInfo: { avatar: '', nickname: '', gender: null, subjectNames: '',classGroupName:'' }
+      studentInfo: {
+        avatar: '',
+        nickname: '',
+        gender: null,
+        subjectNames: '',
+        classGroupName: ''
+      }
     });
     const activeStudentTab = ref('baseInfo');
     const route = useRoute();
@@ -99,7 +105,7 @@ export default defineComponent({
             </div>
           </div>
           <NTabs
-              onUpdate:value={(val: any) => setTabs(val)}
+            onUpdate:value={(val: any) => setTabs(val)}
             class={styles.customTabs}
             v-model:value={activeStudentTab.value}
             size="large"

+ 4 - 2
src/views/xiaoku-ai/index.tsx

@@ -121,7 +121,7 @@ export default defineComponent({
                     <>
                       <NButton
                         round
-                        secondary
+                        secondary={data.tagActiveId === item.id ? false : true}
                         type={
                           data.tagActiveId === item.id ? 'primary' : 'default'
                         }
@@ -147,7 +147,9 @@ export default defineComponent({
                         <>
                           <NButton
                             round
-                            secondary
+                            secondary={
+                              column.activeIndex === index ? false : true
+                            }
                             type={
                               column.activeIndex === index
                                 ? 'primary'

+ 243 - 243
src/views/xiaoku-music/index.module.less

@@ -1,317 +1,317 @@
 .container {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
+  display: flex;
+  flex-direction: column;
+  height: 100%;
 
-    :global {
-        .n-breadcrumb>ul {
-            display: flex;
-            align-items: center;
-
-            .n-breadcrumb-item {
-                display: flex;
-                align-items: center;
-            }
-
-            .n-breadcrumb-item__separator {
-                display: none;
-            }
-
-            .n-breadcrumb-item__link {
-                padding: 5Px 18Px;
-                background: #FFFFFF;
-                border-radius: 16Px;
-                color: #21225D;
-                line-height: 20Px;
-            }
-        }
+  :global {
+    .n-breadcrumb>ul {
+      display: flex;
+      align-items: center;
 
-        .n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__link {
-            color: #fff;
-            background: var(--product-color);
-        }
+      .n-breadcrumb-item {
+        display: flex;
+        align-items: center;
+      }
 
-    }
+      .n-breadcrumb-item__separator {
+        display: none;
+      }
 
-    &> :global(.n-space) {
-        height: 36Px;
-        flex-shrink: 0;
+      .n-breadcrumb-item__link {
+        padding: 5Px 18Px;
+        background: #FFFFFF;
+        border-radius: 16Px;
+        color: #21225D;
+        line-height: 20Px;
+      }
     }
 
-    .separator {
-        height: 18Px;
-        margin: 0 16Px;
+    .n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__link {
+      color: #fff;
+      background: var(--product-color);
     }
+
+  }
+
+  &> :global(.n-space) {
+    height: 36Px;
+    flex-shrink: 0;
+  }
+
+  .separator {
+    height: 18Px;
+    margin: 0 16Px;
+  }
 }
 
 .wrap {
-    padding-top: 20Px;
-    flex: 1;
-    transition: padding .3s;
-    overflow: hidden;
+  padding-top: 20Px;
+  flex: 1;
+  transition: padding .3s;
+  overflow: hidden;
 }
 
 .content {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-    background: #DDF2FF;
-    border-radius: 20Px;
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+  background: #DDF2FF;
+  border-radius: 20Px;
 }
 
 .tools {
-    padding: 20Px;
-    display: flex;
-    align-items: center;
-    flex-shrink: 0;
-
-    :global {
-        .n-input {
-            margin-left: auto;
-            width: 361Px;
-        }
+  padding: 20Px;
+  display: flex;
+  align-items: center;
+  flex-shrink: 0;
+
+  :global {
+    .n-input {
+      margin-left: auto;
+      width: 361Px;
     }
+  }
 }
 
 .contentWrap {
-    flex: 1;
-    display: flex;
-    padding: 0 20Px 20Px;
-    overflow: hidden;
+  flex: 1;
+  display: flex;
+  padding: 0 20Px 20Px;
+  overflow: hidden;
 }
 
 .musicList {
-    width: 548px;
-    height: 100%;
-    overflow-x: hidden;
-    overflow-y: auto;
-    min-width: 330Px;
-
-    &::-webkit-scrollbar {
-        width: 0;
-        display: none;
-    }
-
-    .wrapList {
-        width: 512px;
-        min-width: 294Px;
-        min-height: 100%;
-        background: #fff;
-        border-radius: 16Px;
-    }
+  width: 548px;
+  height: 100%;
+  overflow-x: hidden;
+  overflow-y: auto;
+  min-width: 330Px;
+
+  &::-webkit-scrollbar {
+    width: 0;
+    display: none;
+  }
+
+  .wrapList {
+    width: 512px;
+    min-width: 294Px;
+    min-height: 100%;
+    background: #fff;
+    border-radius: 16Px;
+  }
 
-    .empty {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        height: 50vh;
-    }
+  .empty {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    height: 50vh;
+  }
 }
 
 .itemContainer {
-    border-radius: 16Px;
-    padding: 4Px 8Px;
+  border-radius: 16Px;
+  padding: 4Px 8Px;
 
-    &:first-child {
-        padding-top: 8Px;
-    }
+  &:first-child {
+    padding-top: 8Px;
+  }
 
-    &:last-child {
-        padding-bottom: 8Px;
-    }
+  &:last-child {
+    padding-bottom: 8Px;
+  }
 }
 
 .item {
-    position: relative;
-    display: flex;
-    align-items: center;
-    padding: 10Px;
-    border-radius: 12Px;
+  position: relative;
+  display: flex;
+  align-items: center;
+  padding: 10Px;
+  border-radius: 12Px;
 
-    cursor: pointer;
+  cursor: pointer;
 
-    &:hover {
-        background-color: rgba(0, 0, 0, .05);
-    }
+  &:hover {
+    background-color: rgba(0, 0, 0, .05);
+  }
 
-    &.active {
-        background-color: #DDF2FF;
+  &.active {
+    background-color: #DDF2FF;
 
-        .arrow {
-            opacity: 1;
-        }
+    .arrow {
+      opacity: 1;
     }
+  }
 
-    .img {
-        position: relative;
-        width: 60Px;
-        height: 60Px;
-        border-radius: 8Px;
-        margin-right: 12Px;
-        box-shadow: 0 0 10px 4px rgba(27, 35, 55, .1);
-        overflow: hidden;
-        flex-shrink: 0;
-
-        :global {
-            .n-image {
-                width: 100%;
-                height: 100%;
-            }
-        }
-
-        img {
-            transition: opacity .3s;
-            opacity: 0;
-        }
+  .img {
+    position: relative;
+    width: 60Px;
+    height: 60Px;
+    border-radius: 8Px;
+    margin-right: 12Px;
+    box-shadow: 0 0 10px 4px rgba(27, 35, 55, .1);
+    overflow: hidden;
+    flex-shrink: 0;
 
-        img[data-loaded="true"] {
-            opacity: 1;
-        }
+    :global {
+      .n-image {
+        width: 100%;
+        height: 100%;
+      }
     }
 
-    .title {
-        flex: 1;
-        overflow: hidden;
-        display: flex;
-        flex-direction: column;
-        align-items: flex-start;
-
-        .titleName {
-            font-size: 16Px;
-            font-weight: 600;
-            color: #131415;
-            line-height: 28Px;
-            width: 100%;
-        }
+    img {
+      transition: opacity .3s;
+      opacity: 0;
+    }
 
-        .titleDes {
-            font-size: 14Px;
-            font-weight: 400;
-            color: #777777;
-            line-height: 20Px;
-            max-width: 100%;
-            white-space: nowrap;
-            text-overflow: ellipsis;
-            overflow: hidden;
-        }
+    img[data-loaded="true"] {
+      opacity: 1;
     }
+  }
 
-    .btn {
-        margin-left: auto;
-        width: 84px;
-        height: 40px;
-        background: linear-gradient(to right, #44CAFF, #259DFE);
-        border: none;
-        padding: 0;
-        font-weight: bold !important;
-        flex-shrink: 0;
-        min-width: 62Px;
-        min-height: 30Px;
-
-        :global {
-            .n-button__content {
-                &>img {
-                    margin-left: 10Px;
-                }
-            }
-        }
+  .title {
+    flex: 1;
+    overflow: hidden;
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+
+    .titleName {
+      font-size: 16Px;
+      font-weight: 600;
+      color: #131415;
+      line-height: 28Px;
+      width: 100%;
     }
 
-    .arrow {
-        position: absolute;
-        top: 50%;
-        right: 0;
-        transform: translate(124%, -50%);
-        opacity: 0;
+    .titleDes {
+      font-size: 14Px;
+      font-weight: 400;
+      color: #777777;
+      line-height: 20Px;
+      max-width: 100%;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+      overflow: hidden;
     }
+  }
+
+  .btn {
+    margin-left: auto;
+    width: 84px;
+    height: 40px;
+    background: linear-gradient(to right, #44CAFF, #259DFE);
+    border: none;
+    padding: 0;
+    font-weight: bold !important;
+    flex-shrink: 0;
+    min-width: 62Px;
+    min-height: 30Px;
 
-    .showPlayLoading {
-        opacity: 0;
+    :global {
+      .n-button__content {
+        &>img {
+          margin-left: 10Px;
+        }
+      }
     }
+  }
+
+  .arrow {
+    position: absolute;
+    top: 50%;
+    right: 0;
+    transform: translate(124%, -50%);
+    opacity: 0;
+  }
+
+  .showPlayLoading {
+    opacity: 0;
+  }
 
 }
 
 .loadingWrap {
-    display: flex;
-    justify-content: center;
-    min-height: 80Px;
+  display: flex;
+  justify-content: center;
+  min-height: 80Px;
 }
 
 .musicStaff {
-    display: flex;
-    flex-direction: column;
-    position: relative;
-    left: -8Px;
-    flex: 1;
-    background-color: #fff;
-    border-radius: 16Px;
-    height: 100%;
-    z-index: 1;
-    overflow: hidden;
-
-    &::-webkit-scrollbar {
-        width: 0;
-        display: none;
-    }
+  display: flex;
+  flex-direction: column;
+  position: relative;
+  left: -8Px;
+  flex: 1;
+  background-color: #fff;
+  border-radius: 16Px;
+  height: 100%;
+  z-index: 1;
+  overflow: hidden;
+
+  &::-webkit-scrollbar {
+    width: 0;
+    display: none;
+  }
+
+  .goBtn {
+    position: absolute;
+    left: 50%;
+    bottom: 46Px;
+    transform: translateX(-50%);
+    height: 70Px;
+    cursor: pointer;
+  }
+
+  .favitor {
+    position: absolute;
+    top: 20px;
+    right: 24px;
+    width: 48px;
+    height: 48px;
+    cursor: pointer;
+    transition: all .3s;
 
-    .goBtn {
-        position: absolute;
-        left: 50%;
-        bottom: 46Px;
-        transform: translateX(-50%);
-        height: 70Px;
-        cursor: pointer;
+    &:hover {
+      transform: scale(1.1);
     }
 
-    .favitor {
-        position: absolute;
-        top: 20px;
-        right: 24px;
-        width: 48px;
-        height: 48px;
-        cursor: pointer;
-        transition: all .3s;
-
-        &:hover {
-            transform: scale(1.1);
-        }
-
-        &>img {
-            display: block;
-            width: 100%;
-            height: 100%;
-            filter: drop-shadow(0 0 10px rgba(27, 35, 55, .1));
-        }
+    &>img {
+      display: block;
+      width: 100%;
+      height: 100%;
+      filter: drop-shadow(0 0 10px rgba(27, 35, 55, .1));
     }
+  }
 }
 
 .musicName {
-    padding-top: 30Px;
-    font-size: 24Px;
-    font-weight: 500;
-    color: #333;
-    line-height: 24Px;
-    text-align: center;
+  padding-top: 30Px;
+  font-size: 24Px;
+  font-weight: 500;
+  color: #333;
+  line-height: 24Px;
+  text-align: center;
 }
 
 .staffImgs {
-    flex: 1;
-    overflow-y: auto;
+  flex: 1;
+  overflow-y: auto;
 
-    &>img {
-        width: 100%;
-    }
+  &>img {
+    width: 100%;
+  }
 }
 
 :global {
 
-    .van-fade-enter-active,
-    .van-fade-leave-active {
-        transition: all 0.3s;
-    }
+  .van-fade-enter-active,
+  .van-fade-leave-active {
+    transition: all 0.3s;
+  }
 
-    .van-fade-enter-from,
-    .van-fade-leave-to {
-        opacity: 0;
-    }
+  .van-fade-enter-from,
+  .van-fade-leave-to {
+    opacity: 0;
+  }
 }

+ 1 - 0
src/views/xiaoku-music/index.tsx

@@ -232,6 +232,7 @@ export default defineComponent({
               <TheSearch
                 style={{ marginLeft: 'auto' }}
                 round
+                border={false}
                 onSearch={val => {
                   forms.keyword = val;
                   data.reshing = true;