浏览代码

Merge branch 'temp-register'

lex 1 年之前
父节点
当前提交
ca4f9436a1

+ 28 - 0
src/components/card-type/index.module.less

@@ -11,6 +11,23 @@
 .card-section-content {
   border-radius: 14px;
   background: linear-gradient(270deg, #DBF1FF 0%, #E7F9FF 100%) !important;
+
+  // 图片禁止拖动
+  img {
+    -moz-user-select: none;
+    /* 火狐浏览器 */
+    -webkit-user-drag: none;
+    /* 谷歌、Safari和Opera浏览器 */
+    -webkit-user-select: none;
+    /* 谷歌、Safari和Opera浏览器 */
+    -ms-user-select: none;
+    /* IE10+浏览器 */
+    user-select: none;
+    /* 通用 */
+    -webkit-touch-callout: none;
+    /* iOS Safari */
+  }
+
 }
 
 .card-section {
@@ -23,6 +40,16 @@
   display: inline-flex;
   transition: all .3s ease-in-out;
 
+  &.cardDrag {
+    cursor: move;
+
+    :global {
+      .n-image:not(.n-image--preview-disabled) {
+        cursor: move !important;
+      }
+    }
+  }
+
   &.course {
     cursor: pointer;
   }
@@ -162,6 +189,7 @@
       --n-border-pressed: 1px solid #fff !important;
       --n-border-focus: 1px solid #fff !important;
       --n-border-disabled: 1px solid #fff !important;
+      --n-opacity-disabled: 1 !important;
     }
   }
 

+ 15 - 1
src/components/card-type/index.tsx

@@ -30,6 +30,11 @@ export default defineComponent({
       type: Boolean,
       default: false
     },
+    /** 是否可以拖拽 */
+    draggable: {
+      type: Boolean,
+      default: false
+    },
     // 是否可以收藏
     isCollect: {
       type: Boolean,
@@ -101,12 +106,21 @@ export default defineComponent({
     return () => (
       <div
         onClick={() => emit('click', props.item)}
-        class={[styles['card-section'], 'card-section-container']}
+        draggable={!props.draggable ? false : props.item.exist ? false : true}
+        class={[
+          styles['card-section'],
+          'card-section-container',
+          !props.draggable ? '' : props.item.exist ? '' : styles.cardDrag
+        ]}
         onMouseenter={() => {
           isAnimation.value = true;
         }}
         onMouseleave={() => {
           isAnimation.value = false;
+        }}
+        onDragstart={(e: any) => {
+          console.log(e, 'dragstart');
+          e.dataTransfer.setData('text', JSON.stringify(props.item));
         }}>
         {/* 判断是否下架 */}
         {props.offShelf && (

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

@@ -344,6 +344,7 @@ export default defineComponent({
 
       // 动态添加数据
       eventGlobal.on('onPrepareAddItem', (item: any) => {
+        forms.drag = true;
         forms.coursewareList.push(item);
         prepareStore.setCoursewareList(forms.coursewareList);
 
@@ -462,7 +463,30 @@ export default defineComponent({
                 // !forms.loadingStatus && forms.coursewareList.length <= 0
                 //   ? styles.emptySection
                 //   : ''
-              ]}>
+              ]}
+              onDragenter={(e: any) => {
+                e.preventDefault();
+              }}
+              onDragover={(e: any) => {
+                e.preventDefault();
+              }}
+              onDrop={(e: any) => {
+                let dropItem = e.dataTransfer.getData('text');
+                dropItem = dropItem ? JSON.parse(dropItem) : {};
+                // 判断是否有数据
+                if (dropItem.id) {
+                  eventGlobal.emit('onPrepareAddItem', {
+                    materialId: dropItem.id,
+                    coverImg: dropItem.coverImg,
+                    type: dropItem.type,
+                    title: dropItem.title,
+                    isCollect: dropItem.isCollect,
+                    isSelected: dropItem.isSelected,
+                    content: dropItem.content,
+                    removeFlag: false
+                  });
+                }
+              }}>
               {forms.coursewareList.length > 0 && (
                 <>
                   {forms.drag ? (

+ 4 - 0
src/views/prepare-lessons/components/lesson-main/index.tsx

@@ -20,6 +20,10 @@ export default defineComponent({
           value={prepareStore.getTabType}
           onUpdate:value={(val: string) => {
             prepareStore.setTabType(val);
+
+            // 重置编辑状态
+            prepareStore.setIsEditResource(false);
+            prepareStore.setIsEditTrain(false);
           }}>
           <NTabPane name="courseware" tab="课件" displayDirective="show">
             <Courseware />

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

@@ -72,7 +72,7 @@
     }
 
     .n-base-selection-input {
-      padding-left: 8px;
+      padding-left: 8px !important;
     }
 
     .n-base-selection .n-base-selection-overlay {
@@ -214,4 +214,4 @@
       }
     }
   }
-}
+}

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

@@ -363,7 +363,7 @@ export default defineComponent({
                           offShelf={item.removeFlag ? true : false}
                           onOffShelf={() => onRemove(item)}
                           onEdit={(child: any) => {
-                            console.log('edit', child);
+                            // console.log('edit', child);
                             const { trainingConfigJson, id, musicId, ...res } =
                               child;
                             forms.editItem = {

+ 1 - 0
src/views/prepare-lessons/components/resource-main/components/select-music/index.tsx

@@ -154,6 +154,7 @@ export default defineComponent({
                       isShowAdd
                       isShowCollect={false}
                       item={item}
+                      draggable
                       isShowAddDisabled={!prepareStore.getIsEditTrain}
                       disabledMouseHover={false}
                       onClick={() => {