Browse Source

添加作业拖拽

lex 1 year ago
parent
commit
901ab21bdd

+ 3 - 0
src/views/attend-class/model/train-update/index.tsx

@@ -39,6 +39,7 @@ export default defineComponent({
       baseMaxScore: 99,
       type: 'PRACTICE',
       musicId: '',
+      musicName: '',
       coursewareKnowledgeDetailId: '', // 章节编号
       minScore: null as any,
       maxScore: null as any,
@@ -62,6 +63,7 @@ export default defineComponent({
           const params = {
             trainingType: forms.type,
             musicId: forms.musicId,
+            musicName: forms.musicName,
             coursewareKnowledgeDetailId: forms.coursewareKnowledgeDetailId,
             subjectId: forms.subjectId,
             id: forms.id,
@@ -121,6 +123,7 @@ export default defineComponent({
       }
       forms.baseMaxScore = item.practiceChapterMax || 99;
       forms.musicId = item.id;
+      forms.musicName = item.musicName;
       forms.coursewareKnowledgeDetailId = item.coursewareKnowledgeDetailId;
       forms.subjectId = item.subjectId;
       forms.coverImg = item.coverImg;

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

@@ -24,6 +24,7 @@ import { evaluateDifficult } from '/src/utils/contants';
 import TrainUpdate from '/src/views/attend-class/model/train-update';
 import AssignHomework from './assign-homework';
 import Trainguide from '@/custom-plugins/guide-page/train-guide';
+import { eventGlobal } from '/src/utils';
 export default defineComponent({
   name: 'courseware-modal',
   setup() {
@@ -68,6 +69,7 @@ export default defineComponent({
         prepareStore.setIsEditTrain(false);
         // 重置临时删除编号
         forms.removeIds = [];
+        await getList();
       } catch {
         //
       }
@@ -185,38 +187,15 @@ export default defineComponent({
       }
     };
 
-    // const checkSubjectIds = () => {
-    //   const subjectList = prepareStore.getSubjectList;
-
-    //   // 并且没有声部时才会更新
-    //   if (subjectList.length > 0) {
-    //     // 判断浏览器上面是否有
-    //     const index = subjectList.findIndex(
-    //       (subject: any) => subject.id == forms.subjectId
-    //     );
-
-    //     // 并且声部在列表中
-    //     if (forms.subjectId && index >= 0) {
-    //       prepareStore.setSubjectId(forms.subjectId);
-    //     } else {
-    //       // 判断是否有缓存
-    //       prepareStore.setSubjectId(subjectList[0].id);
-    //     }
-    //   }
-    // };
-
     onMounted(async () => {
-      // 获取教材分类列表
-      // await catchStore.getSubjects();
-
-      // const subjectList = catchStore.getSubjectList;
-      // if (subjectList.length > 0 && !prepareStore.getSubjectId) {
-      //   prepareStore.setSubjectId(subjectList[0].id);
-      // }
-      // 获取教材分类列表
-      // checkSubjectIds();
-
       await getList();
+
+      // 动态添加数据
+      eventGlobal.on('onTrainAddItem', (item: any) => {
+        forms.drag = true;
+        forms.trainList.push(item);
+        prepareStore.setTrainList(forms.trainList);
+      });
     });
     return () => (
       <div class={styles.coursewareModal}>
@@ -320,7 +299,22 @@ export default defineComponent({
                 !forms.loadingStatus && prepareStore.getTrainList.length <= 0
                   ? styles.emptySection
                   : ''
-              ]}>
+              ]}
+              onDragenter={(e: any) => {
+                e.preventDefault();
+              }}
+              onDragover={(e: any) => {
+                e.preventDefault();
+              }}
+              onDrop={(e: any) => {
+                console.log(e, 'e');
+                let dropItem = e.dataTransfer.getData('text');
+                dropItem = dropItem ? JSON.parse(dropItem) : {};
+                // 判断是否有数据
+                if (dropItem.id) {
+                  eventGlobal.emit('onTrainDragItem', dropItem);
+                }
+              }}>
               {forms.trainList.length > 0 && (
                 <>
                   {forms.drag ? (
@@ -340,7 +334,9 @@ export default defineComponent({
                         item: (element: any) => {
                           const item = element.element;
                           return (
-                            <div data-id={item.id} class={styles.itemBlock}>
+                            <div
+                              data-id={item.musicId}
+                              class={styles.itemBlock}>
                               <TrainType
                                 item={item}
                                 isDelete

+ 68 - 5
src/views/prepare-lessons/components/resource-main/components/select-music/index.tsx

@@ -10,6 +10,8 @@ import { musicSheetPage } from '/src/views/prepare-lessons/api';
 import TrainUpdate from '/src/views/attend-class/model/train-update';
 import requestOrigin from 'umi-request';
 import CardPreview from '/src/components/card-preview';
+import { evaluateDifficult } from '/src/utils/contants';
+import { eventGlobal } from '/src/utils';
 export default defineComponent({
   name: 'share-resources',
   setup() {
@@ -48,7 +50,11 @@ export default defineComponent({
         state.loading = false;
         const tempRows = data.rows || [];
         const temp: any = [];
+
         tempRows.forEach((row: any) => {
+          const index = prepareStore.getTrainList.findIndex(
+            (course: any) => course.musicId === row.id
+          );
           temp.push({
             id: row.id,
             coverImg: row.musicSvg,
@@ -57,7 +63,8 @@ export default defineComponent({
             isCollect: false,
             isSelected: true,
             content: row.id,
-            xmlFileUrl: row.xmlFileUrl
+            xmlFileUrl: row.xmlFileUrl,
+            exist: index !== -1 ? true : false // 是否存在
           });
         });
         state.tableList.push(...temp);
@@ -81,6 +88,21 @@ export default defineComponent({
         onSearch(state.searchGroup);
       }
     );
+    watch(
+      () => prepareStore.trainList,
+      () => {
+        state.tableList.forEach((item: any) => {
+          const index = prepareStore.getTrainList.findIndex(
+            (course: any) => course.musicId === item.id
+          );
+          item.exist = index !== -1 ? true : false; // 是否存在
+        });
+      },
+      {
+        deep: true,
+        immediate: true
+      }
+    );
 
     const throttledFn = useThrottleFn(() => {
       state.pagination.page = state.pagination.page + 1;
@@ -118,8 +140,32 @@ export default defineComponent({
       state.editStatus = true;
     };
 
+    const typeFormat = (trainingType: string, configJson: any) => {
+      let tList: string[] = [];
+
+      if (trainingType === 'EVALUATION') {
+        tList = [
+          `${evaluateDifficult[configJson.evaluateDifficult]}`,
+          '全部小节',
+          // `速度${configJson.evaluateSpeed}`,
+          `${configJson.trainingTimes}分合格`
+        ];
+      } else {
+        tList = [
+          `${configJson.practiceChapterBegin}-${configJson.practiceChapterEnd}小节`,
+          `速度${configJson.practiceSpeed}`,
+          `${configJson.trainingTimes}分钟`
+        ];
+      }
+      return tList;
+    };
+
     onMounted(() => {
       getList();
+
+      eventGlobal.on('onTrainDragItem', (item: any) => {
+        onAdd(item);
+      });
     });
     return () => (
       <div>
@@ -154,7 +200,8 @@ export default defineComponent({
                       isShowAdd
                       isShowCollect={false}
                       item={item}
-                      isShowAddDisabled={!prepareStore.getIsEditTrain}
+                      draggable
+                      // isShowAddDisabled={!prepareStore.getIsEditTrain}
                       disabledMouseHover={false}
                       onClick={() => {
                         if (item.type === 'IMG') return;
@@ -181,10 +228,26 @@ export default defineComponent({
           title="作业设置">
           <TrainUpdate
             item={state.editItem}
+            type="homework"
             onClose={() => (state.editStatus = false)}
-            onConfirm={() => {
-              state.editItem = {};
-              prepareStore.setIsAddTrain(true);
+            onConfirm={(item: any) => {
+              // state.editItem = {};
+              // prepareStore.setIsAddTrain(true);
+
+              const tList = typeFormat(
+                item.trainingType,
+                item.trainingConfigJson
+              );
+              //
+              const train = {
+                ...item,
+                id: null,
+                musicName: state.editItem.title,
+                typeList: tList
+              };
+
+              console.log(train, '1212');
+              eventGlobal.emit('onTrainAddItem', train);
             }}
           />
         </NModal>

+ 1 - 1
src/views/prepare-lessons/model/select-music/index.tsx

@@ -137,7 +137,7 @@ export default defineComponent({
                           isShowAdd
                           isShowCollect={false}
                           item={item}
-                          isShowAddDisabled={state.isShowAddDisabled}
+                          // isShowAddDisabled={state.isShowAddDisabled}
                           onAdd={() => emit('add', item)}
                           disabledMouseHover={false}
                           onClick={() => {