diff --git a/src/hooks/useSlideHandler.ts b/src/hooks/useSlideHandler.ts
index eb2c3f2b..cbe11d08 100644
--- a/src/hooks/useSlideHandler.ts
+++ b/src/hooks/useSlideHandler.ts
@@ -138,6 +138,18 @@ export default () => {
mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)
}
+ // 拖拽调整幻灯片顺序同步数据
+ const sortSlides = (newIndex: number, oldIndex: number) => {
+ if (oldIndex === newIndex) return
+
+ const _slides = JSON.parse(JSON.stringify(slides.value))
+ const _slide = _slides[oldIndex]
+ _slides.splice(oldIndex, 1)
+ _slides.splice(newIndex, 0, _slide)
+ slidesStore.setSlides(_slides)
+ slidesStore.updateSlideIndex(newIndex)
+ }
+
return {
resetSlides,
updateSlideIndex,
@@ -149,5 +161,6 @@ export default () => {
deleteSlide,
cutSlide,
selectAllSlide,
+ sortSlides,
}
}
\ No newline at end of file
diff --git a/src/views/Editor/Thumbnails/index.vue b/src/views/Editor/Thumbnails/index.vue
index c01a224b..524d49fd 100644
--- a/src/views/Editor/Thumbnails/index.vue
+++ b/src/views/Editor/Thumbnails/index.vue
@@ -81,6 +81,7 @@ const {
deleteSlide,
cutSlide,
selectAllSlide,
+ sortSlides,
} = useSlideHandler()
// 切换页面
@@ -153,14 +154,7 @@ const setThumbnailsFocus = (focus: boolean) => {
// 拖拽调整顺序后进行数据的同步
const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {
const { newIndex, oldIndex } = eventData
- if (oldIndex === newIndex) return
-
- const _slides = JSON.parse(JSON.stringify(slides.value))
- const _slide = _slides[oldIndex]
- _slides.splice(oldIndex, 1)
- _slides.splice(newIndex, 0, _slide)
- slidesStore.setSlides(_slides)
- slidesStore.updateSlideIndex(newIndex)
+ sortSlides(newIndex, oldIndex)
}
const { enterScreening, enterScreeningFromStart } = useScreening()
diff --git a/src/views/Mobile/MobileThumbnails.vue b/src/views/Mobile/MobileThumbnails.vue
index 5d97a4be..4c74936f 100644
--- a/src/views/Mobile/MobileThumbnails.vue
+++ b/src/views/Mobile/MobileThumbnails.vue
@@ -1,15 +1,28 @@
@@ -17,16 +30,26 @@
import { storeToRefs } from 'pinia'
import { useSlidesStore } from '@/store'
import useLoadSlides from '@/hooks/useLoadSlides'
+import useSlideHandler from '@/hooks/useSlideHandler'
+import Draggable from 'vuedraggable'
import ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'
const slidesStore = useSlidesStore()
const { slides, slideIndex } = storeToRefs(slidesStore)
+const { sortSlides } = useSlideHandler()
+
const { slidesLoadLimit } = useLoadSlides()
const changeSlideIndex = (index: number) => {
slidesStore.updateSlideIndex(index)
}
+
+// 拖拽调整顺序后进行数据的同步
+const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {
+ const { newIndex, oldIndex } = eventData
+ sortSlides(newIndex, oldIndex)
+}