lex 1 gadu atpakaļ
vecāks
revīzija
d2156eb677
20 mainītis faili ar 140 papildinājumiem un 92 dzēšanām
  1. 1 0
      src/components/TheEmpty/index.module.less
  2. 1 0
      src/views/attend-class/index.tsx
  3. 1 1
      src/views/attend-class/model/class-work/index.tsx
  4. BIN
      src/views/attend-class/model/train-type/images/icon-edit.png
  5. 9 0
      src/views/attend-class/model/train-type/index.module.less
  6. 12 4
      src/views/attend-class/model/train-type/index.tsx
  7. BIN
      src/views/homework-record/images/icon-ing.png
  8. BIN
      src/views/homework-record/images/icon-over.png
  9. 3 0
      src/views/homework-record/index.module.less
  10. 27 8
      src/views/homework-record/index.tsx
  11. 9 3
      src/views/natural-resources/components/my-resources/upload-modal/index.module.less
  12. 3 2
      src/views/prepare-lessons/components/lesson-main/courseware-presets/index.module.less
  13. 0 14
      src/views/prepare-lessons/components/lesson-main/courseware-presets/index.tsx
  14. 15 4
      src/views/prepare-lessons/components/lesson-main/courseware-presets/select-related/index.tsx
  15. 1 0
      src/views/prepare-lessons/components/lesson-main/train/assign-homework.tsx
  16. 2 2
      src/views/prepare-lessons/components/lesson-main/train/assign-student/index.module.less
  17. 15 2
      src/views/prepare-lessons/components/lesson-main/train/assign-student/index.tsx
  18. 7 6
      src/views/prepare-lessons/components/lesson-main/train/index.module.less
  19. 31 44
      src/views/prepare-lessons/components/lesson-main/train/index.tsx
  20. 3 2
      src/views/prepare-lessons/model/add-courseware-protocol/index.module.less

+ 1 - 0
src/components/TheEmpty/index.module.less

@@ -10,6 +10,7 @@
     .n-empty__icon {
       width: 100%;
       height: 100%;
+      text-align: center;
     }
   }
 

+ 1 - 0
src/views/attend-class/index.tsx

@@ -1922,6 +1922,7 @@ export default defineComponent({
                   chapterId: data.courseId, // 课件编号
                   id: data.lessonPreTrainingId // 作业编号
                 }}
+                classGroupId={data.classGroupId}
                 courseScheduleId={data.classId}
                 onChange={(val: any) => {
                   data.modelTrainStatus = val.status;

+ 1 - 1
src/views/attend-class/model/class-work/index.tsx

@@ -296,7 +296,7 @@ export default defineComponent({
                 lessonPreTraining={{
                   title:
                     (props.activeName || dayjs().format('YYYY年MM月DD日')) +
-                    '-课作业',
+                    '-课作业',
                   id: forms.selectItem.id
                 }}
                 // cardType={'homeworkRecord'}

BIN
src/views/attend-class/model/train-type/images/icon-edit.png


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

@@ -93,6 +93,11 @@
   position: relative;
   overflow: hidden;
   transition: all 0.2s ease;
+  cursor: pointer;
+
+  &.trainDisabled {
+    cursor: default;
+  }
 
   :global {
     .n-image {
@@ -229,6 +234,10 @@
     gap: 8px 10px !important;
   }
 
+  .title-text {
+    width: 150px;
+  }
+
 
   .operation {
     display: flex;

+ 12 - 4
src/views/attend-class/model/train-type/index.tsx

@@ -22,6 +22,7 @@ import CardPreview from '/src/components/card-preview';
 import { vaildMusicScoreUrl, vaildUrl } from '/src/utils/urlUtils';
 import { musicPracticeRecordDetail } from '/src/views/prepare-lessons/api';
 import { checkUrlType } from '/src/utils';
+import TheNoticeBar from '/src/components/TheNoticeBar';
 type ItemType = {
   id: string | number;
   trainingType: 'PRACTICE' | 'EVALUATION';
@@ -179,7 +180,13 @@ export default defineComponent({
           class={[
             styles['train-content'],
             props.isDisabled && !props.isCLassWork && styles.trainDisabled
-          ]}>
+          ]}
+          onClick={() => {
+            if (props.isDisabled && !props.isCLassWork) {
+              return;
+            }
+            onDetail();
+          }}>
           <NImage
             src={props.item.coverImg}
             previewDisabled
@@ -256,9 +263,10 @@ export default defineComponent({
               <span class={[styles.type, styles[props.item.trainingType]]}>
                 {props.item.trainingType === 'EVALUATION' ? '评测' : '练习'}
               </span>
-              <NEllipsis class={styles['title-text']} tooltip={false}>
-                {props.item.musicName}
-              </NEllipsis>
+              {/* <NEllipsis tooltip={false}>{props.item.musicName}</NEllipsis> */}
+              <div class={styles['title-text']}>
+                <TheNoticeBar text={props.item.musicName} />
+              </div>
             </div>
             <div class={styles.tagList}>
               {props.item.typeList?.map((type: string, index: number) => (

BIN
src/views/homework-record/images/icon-ing.png


BIN
src/views/homework-record/images/icon-over.png


+ 3 - 0
src/views/homework-record/index.module.less

@@ -166,6 +166,8 @@
   border-radius: 13px;
   padding: 0 17px 17px;
   position: relative;
+  display: flex;
+  flex-direction: column;
 
   .header {
     display: flex;
@@ -232,6 +234,7 @@
     // display: flex;
     // justify-content: space-between;
     // align-items: flex-end;
+    flex: 1;
     padding: 13px;
     background: #FFFFFF;
     border-radius: 10px;

+ 27 - 8
src/views/homework-record/index.tsx

@@ -145,15 +145,34 @@ export default defineComponent({
           ) {
             item.studentLessonTrainingDetails.forEach((child: any) => {
               if (child.trainingType === 'PRACTICE' && child.musicName) {
-                pTitle += pTitle ? '、' + child.musicName : child.musicName;
+                pTitle += pTitle
+                  ? '、《' + child.musicName + '》'
+                  : '练习曲目《' + child.musicName + '》';
               }
               if (child.trainingType === 'EVALUATION' && child.musicName) {
-                eTitle += eTitle ? '、' + child.musicName : child.musicName;
+                eTitle += eTitle
+                  ? '、《' + child.musicName + '》'
+                  : '评测曲目《' + child.musicName + '》';
               }
             });
           }
           item.pTitle = pTitle;
           item.eTitle = eTitle;
+
+          let studentName = item.homeworkObjName;
+          if (item.homeworkObjName) {
+            const tempObjName = item.homeworkObjName.split(',');
+            if (tempObjName.length > 5) {
+              studentName =
+                tempObjName.slice(0, 5).join('、') +
+                `...等${tempObjName.length}${
+                  item.homeworkObj === 'CLASS' ? '个班级' : '人'
+                }`;
+            } else {
+              studentName = tempObjName.join('、');
+            }
+          }
+          item.studentName = studentName;
         });
         state.tableList = res.data.rows;
         state.pagination.pageTotal = res.data.total;
@@ -285,8 +304,8 @@ export default defineComponent({
                 {...({
                   options: [
                     { id: '', name: '全部类型' },
-                    { id: 'CLASSWORK', name: '课作业' },
-                    { id: 'HOMEWORK', name: '课作业' }
+                    { id: 'CLASSWORK', name: '课作业' },
+                    { id: 'HOMEWORK', name: '课作业' }
                   ],
                   placeholder: '选择类型',
                   clearable: true,
@@ -460,8 +479,8 @@ export default defineComponent({
                         <p>
                           <span class={styles[item.homeworkType]}>
                             {item.homeworkType === 'CLASSWORK'
-                              ? '课'
-                              : '课'}
+                              ? '课'
+                              : '课'}
                           </span>
                           {item.name}
                         </p>
@@ -499,7 +518,7 @@ export default defineComponent({
                       </div>
                       <div class={styles.homeContent}>
                         <span class={styles.title}>作业对象:</span>
-                        <span class={styles.text}>{item.homeworkObjName}</span>
+                        <span class={styles.text}>{item.studentName}</span>
                       </div>
                       <div class={[styles.homeContent, styles.homeworkText]}>
                         <span class={styles.title}>作业内容:</span>
@@ -589,7 +608,7 @@ export default defineComponent({
             <div class={styles.workTrain}>
               <Train
                 lessonPreTraining={{
-                  title: dayjs().format('YYYY年MM月DD日') + '-课作业'
+                  title: dayjs().format('YYYY年MM月DD日') + '-课作业'
                 }}
                 cardType={'homeworkRecord'}
                 onChange={(val: any) => {

+ 9 - 3
src/views/natural-resources/components/my-resources/upload-modal/index.module.less

@@ -38,8 +38,8 @@
       position: absolute;
       top: 6px;
       left: 6px;
-      width: 54px;
-      height: 26px;
+      width: 22px;
+      height: 22px;
       z-index: 99;
     }
 
@@ -63,14 +63,20 @@
       font-weight: 600;
       color: #FFFFFF;
       height: 43px;
-      background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 100%);
+      // background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 100%);
       width: 100%;
       border-radius: 0 0 10px 10px;
       justify-content: flex-end;
       padding-right: 12px;
       z-index: 99;
+      background: rgba(0, 0, 0, 0.3);
+      backdrop-filter: blur(1px);
 
       :global {
+        .n-switch {
+          margin-left: 8px;
+        }
+
         .n-switch__rail {
           background-color: #ccc;
         }

+ 3 - 2
src/views/prepare-lessons/components/lesson-main/courseware-presets/index.module.less

@@ -69,7 +69,6 @@
       left: -23px;
       top: 50%;
       margin-top: -30px;
-      display: inline-block;
       width: 23px;
       height: 50px;
       line-height: 50px;
@@ -77,7 +76,9 @@
       background-color: #F5F6FA;
       border-radius: 10px 0 0 10px;
       color: #ABAEB0;
-      text-align: center;
+      display: flex;
+      align-items: center;
+      justify-content: center;
 
       svg {
         transform: rotate(180deg);

+ 0 - 14
src/views/prepare-lessons/components/lesson-main/courseware-presets/index.tsx

@@ -263,17 +263,6 @@ export default defineComponent({
       }
     });
 
-    const getModalHeight = () => {
-      const dom: any = document.querySelector('#model-homework-height');
-      if (dom) {
-        useResizeObserver(dom as HTMLElement, (entries: any) => {
-          const entry = entries[0];
-          const { height } = entry.contentRect;
-          dom.style.setProperty('--window-page-lesson-height', height + 'px');
-        });
-      }
-    };
-
     // 重命名
     // const onEditTitleSubmit = async () => {
     //   try {
@@ -517,9 +506,6 @@ export default defineComponent({
                           onWork={() => {
                             forms.workVisiable = true;
                             forms.selectItem = item;
-                            nextTick(() => {
-                              getModalHeight();
-                            });
                           }}
                         />
                       </div>

+ 15 - 4
src/views/prepare-lessons/components/lesson-main/courseware-presets/select-related/index.tsx

@@ -1,4 +1,11 @@
-import { PropType, defineComponent, onMounted, reactive, watch } from 'vue';
+import {
+  PropType,
+  defineComponent,
+  onMounted,
+  onUnmounted,
+  reactive,
+  watch
+} from 'vue';
 import ResourceSearchGroup from './resource-search-group';
 import { NModal, NScrollbar, NSpin } from 'naive-ui';
 import styles from './index.module.less';
@@ -93,11 +100,15 @@ export default defineComponent({
       getList();
     }, 500);
 
+    const eventChanged = () => {
+      onSearch(state.searchGroup);
+    };
     onMounted(() => {
       getList();
-      eventGlobal.on('openCoursewareChanged', () =>
-        onSearch(state.searchGroup)
-      );
+      eventGlobal.on('openCoursewareChanged', eventChanged);
+    });
+    onUnmounted(() => {
+      eventGlobal.off('openCoursewareChanged', eventChanged);
     });
     return () => (
       <div>

+ 1 - 0
src/views/prepare-lessons/components/lesson-main/train/assign-homework.tsx

@@ -373,6 +373,7 @@ export default defineComponent({
             classGroupId={props.classGroupId}
             currentGradeNum={forms.currentGradeNum as any}
             selectIds={forms.selectIds}
+            studentList={forms.studentList}
             classList={forms.classList}
             onClose={() => (forms.workVisiable = false)}
             onConfirm={(val: any) => {

+ 2 - 2
src/views/prepare-lessons/components/lesson-main/train/assign-student/index.module.less

@@ -49,11 +49,11 @@
 
   .student {
     padding: 0 30px 15px;
-    height: 50vh;
+    height: 48vh;
   }
 
   .loadingSection {
-    height: calc(50vh - 15px);
+    height: calc(48vh - 15px);
   }
 
   .studentItem {

+ 15 - 2
src/views/prepare-lessons/components/lesson-main/train/assign-student/index.tsx

@@ -27,6 +27,11 @@ export default defineComponent({
       type: Array,
       default: () => []
     },
+    /** 所选学生列表 */
+    studentList: {
+      type: Array,
+      default: () => []
+    },
     /** 学年 */
     currentGradeNum: {
       type: [String || Number],
@@ -169,7 +174,8 @@ export default defineComponent({
       state.selectStudents.forEach((item: any) => {
         studentInfo.push({
           id: item.id,
-          name: item.nickname
+          name: item.nickname,
+          avatar: item.avatar
         });
       });
 
@@ -182,7 +188,14 @@ export default defineComponent({
       await catchStore.getSubjects();
       await getYearList();
       await getStudentLists();
-      onCheckStudents();
+      // onCheckStudents();
+      // 重置选择的学生
+      state.selectStudents = props.studentList?.map((item: any) => {
+        return {
+          ...item,
+          nickname: item.name
+        };
+      });
     });
     return () => (
       <div class={styles.assignStudent}>

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

@@ -2,9 +2,9 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
-  padding-left: 22px !important;
+  padding-left: 36px !important;
   height: 40px;
-  padding-right: 22px !important;
+  padding-right: 36px !important;
 
 
   :global {
@@ -25,6 +25,7 @@
       font-size: max(18px, 13Px);
       font-weight: 600 !important;
       padding: 0 27px;
+      margin-left: 14px;
     }
 
     .n-button--default-type {
@@ -105,9 +106,9 @@
     font-weight: 600;
   }
 
-  &:last-child {
-    margin-left: 12px;
-  }
+  // &:last-child {
+  //   margin-left: 12px;
+  // }
 
   :global {
     .n-input {
@@ -147,7 +148,7 @@
 }
 
 .list {
-  padding: 12px 22px 12px;
+  padding: 12px 36px 12px;
   display: flex;
   flex-flow: row wrap;
   justify-content: flex-start;

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

@@ -39,6 +39,7 @@ import { eventGlobal } from '/src/utils';
 import iconTips from '../../../images/icon-tips.png';
 import { typeFormat } from '../../resource-main/components/select-music';
 import TheMessageDialog from '/src/components/TheMessageDialog';
+import { useResizeObserver } from '@vueuse/core';
 export default defineComponent({
   name: 'courseware-modal',
   props: {
@@ -210,7 +211,19 @@ export default defineComponent({
       forms.preBtnLoading = false;
     };
 
+    const getModalHeight = () => {
+      const dom: any = document.querySelector('#model-homework-height');
+      if (dom) {
+        useResizeObserver(dom as HTMLElement, (entries: any) => {
+          const entry = entries[0];
+          const { height } = entry.contentRect;
+          dom.style.setProperty('--window-page-lesson-height', height + 'px');
+        });
+      }
+    };
+
     onMounted(async () => {
+      getModalHeight();
       await getList();
       // 动态添加数据
       eventGlobal.on('onTrainAddItem', (item: any) => {
@@ -240,7 +253,7 @@ export default defineComponent({
             </div>
           </NSpace>
 
-          <NSpace>
+          <div class={styles.spaceBtnGroup}>
             <NButton
               bordered={false}
               type="error"
@@ -264,9 +277,11 @@ export default defineComponent({
               取消
             </NButton>
 
-            {props.cardType === 'homeworkRecord' ? (
+            {(props.cardType !== 'homeworkRecord' ||
+              props.courseScheduleId) && (
               <NButton
-                type="primary"
+                bordered={false}
+                type="default"
                 disabled={forms.trainList.length <= 0}
                 onClick={() => {
                   if (!forms.title) {
@@ -283,11 +298,16 @@ export default defineComponent({
                     message.error('作业内容不能为空');
                     return;
                   }
-                  forms.assignHomeworkStatus = true;
-                }}>
-                立即布置
+
+                  forms.preSaveVisiable = true;
+                }}
+                // loading={forms.preBtnLoading}
+              >
+                保存
               </NButton>
-            ) : (
+            )}
+            {(props.cardType === 'homeworkRecord' ||
+              props.courseScheduleId) && (
               <NButton
                 type="primary"
                 disabled={forms.trainList.length <= 0}
@@ -306,15 +326,12 @@ export default defineComponent({
                     message.error('作业内容不能为空');
                     return;
                   }
-
-                  forms.preSaveVisiable = true;
-                }}
-                // loading={forms.preBtnLoading}
-              >
-                保存
+                  forms.assignHomeworkStatus = true;
+                }}>
+                立即布置
               </NButton>
             )}
-          </NSpace>
+          </div>
         </div>
 
         <NScrollbar
@@ -430,36 +447,6 @@ export default defineComponent({
           </NSpin>
         </NScrollbar>
 
-        {props.cardType !== 'homeworkRecord' &&
-          props.cardType !== 'prepare' && (
-            <div
-              class={[styles.btnGroup, styles.btnGroupClass]}
-              style={{ justifyContent: 'flex-end' }}>
-              <NSpace justify="end">
-                <NButton
-                  type="primary"
-                  // {...{ id: 'train-0' }}
-                  // disabled={forms.drag}
-                  disabled={forms.trainList.length <= 0}
-                  onClick={() => {
-                    let count = 0;
-                    forms.trainList.forEach((item: any) => {
-                      if (!item.removeFlag) {
-                        count++;
-                      }
-                    });
-                    if (count <= 0) {
-                      message.error('作业内容不能为空');
-                      return;
-                    }
-                    forms.assignHomeworkStatus = true;
-                  }}>
-                  立即布置
-                </NButton>
-              </NSpace>
-            </div>
-          )}
-
         {/* 编辑 */}
         <NModal
           v-model:show={forms.editStatus}

+ 3 - 2
src/views/prepare-lessons/model/add-courseware-protocol/index.module.less

@@ -107,7 +107,7 @@
   background: #FFFFFF;
   border-radius: 16px;
   position: relative;
-  padding: 0 50px 35px;
+  padding: 0 0 35px;
   overflow: hidden;
 
   .downMoveBg {
@@ -141,10 +141,11 @@
   }
 
   .protocolContent {
+    padding: 0 50px;
     font-size: max(18px, 13Px);
     line-height: 30px;
     color: #777;
-    text-align: justify;
+    // text-align: justify;
 
     p {
       font-weight: 600;