|
@@ -7,6 +7,7 @@
|
|
accept="application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
accept="application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
@change="
|
|
@change="
|
|
files => {
|
|
files => {
|
|
|
|
+ spinType = 'import'
|
|
importPPTXFile(files)
|
|
importPPTXFile(files)
|
|
mainMenuVisible = false
|
|
mainMenuVisible = false
|
|
}
|
|
}
|
|
@@ -14,7 +15,7 @@
|
|
>
|
|
>
|
|
<PopoverMenuItem>导入pptx</PopoverMenuItem>
|
|
<PopoverMenuItem>导入pptx</PopoverMenuItem>
|
|
</FileInput>
|
|
</FileInput>
|
|
- <PopoverMenuItem @click="setDialogForExport('pptx')">导出pptx</PopoverMenuItem>
|
|
|
|
|
|
+ <PopoverMenuItem @click="handleExport">导出pptx</PopoverMenuItem>
|
|
<PopoverMenuItem
|
|
<PopoverMenuItem
|
|
@click="
|
|
@click="
|
|
() => {
|
|
() => {
|
|
@@ -53,16 +54,16 @@
|
|
<HotkeyDoc />
|
|
<HotkeyDoc />
|
|
<template v-slot:title>快捷操作</template>
|
|
<template v-slot:title>快捷操作</template>
|
|
</Drawer>
|
|
</Drawer>
|
|
- <FullscreenSpin :loading="exporting" tip="正在导入..." />
|
|
|
|
|
|
+ <FullscreenSpin :loading="fullscreenSpinData.loading" :progress="fullscreenSpinData.progress" :tip="fullscreenSpinData.tip" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
import { storeToRefs } from "pinia"
|
|
import { storeToRefs } from "pinia"
|
|
-import { useMainStore, useSlidesStore } from "@/store"
|
|
|
|
|
|
+import { useSlidesStore } from "@/store"
|
|
import useImport from "@/hooks/useImport"
|
|
import useImport from "@/hooks/useImport"
|
|
|
|
+import useExport from "@/hooks/useExport"
|
|
import useSlideHandler from "@/hooks/useSlideHandler"
|
|
import useSlideHandler from "@/hooks/useSlideHandler"
|
|
-import type { DialogForExportTypes } from "@/types/export"
|
|
|
|
|
|
|
|
import HotkeyDoc from "./HotkeyDoc.vue"
|
|
import HotkeyDoc from "./HotkeyDoc.vue"
|
|
import FileInput from "@/components/FileInput.vue"
|
|
import FileInput from "@/components/FileInput.vue"
|
|
@@ -70,22 +71,49 @@ import FullscreenSpin from "@/components/FullscreenSpin.vue"
|
|
import Drawer from "@/components/Drawer.vue"
|
|
import Drawer from "@/components/Drawer.vue"
|
|
import Popover from "@/components/Popover.vue"
|
|
import Popover from "@/components/Popover.vue"
|
|
import PopoverMenuItem from "@/components/PopoverMenuItem.vue"
|
|
import PopoverMenuItem from "@/components/PopoverMenuItem.vue"
|
|
-import { ref } from "vue"
|
|
|
|
|
|
+import { ref, computed } from "vue"
|
|
|
|
+import { ElMessageBox } from "element-plus"
|
|
|
|
|
|
-const mainStore = useMainStore()
|
|
|
|
const slidesStore = useSlidesStore()
|
|
const slidesStore = useSlidesStore()
|
|
const { title } = storeToRefs(slidesStore)
|
|
const { title } = storeToRefs(slidesStore)
|
|
-const { importPPTXFile, exporting } = useImport()
|
|
|
|
const { resetSlides } = useSlideHandler()
|
|
const { resetSlides } = useSlideHandler()
|
|
|
|
|
|
const mainMenuVisible = ref(false)
|
|
const mainMenuVisible = ref(false)
|
|
const hotkeyDrawerVisible = ref(false)
|
|
const hotkeyDrawerVisible = ref(false)
|
|
|
|
|
|
-/* 导出老逻辑 */
|
|
|
|
-const setDialogForExport = (type: DialogForExportTypes) => {
|
|
|
|
- mainStore.setDialogForExport(type)
|
|
|
|
|
|
+const spinType = ref<"import" | "export">("import")
|
|
|
|
+/* 导入 */
|
|
|
|
+const { importPPTXFile, importing, importProgress } = useImport()
|
|
|
|
+/* 导出 */
|
|
|
|
+const { exportPPTX, exporting, exportProgress } = useExport()
|
|
|
|
+function handleExport() {
|
|
mainMenuVisible.value = false
|
|
mainMenuVisible.value = false
|
|
|
|
+ ElMessageBox.confirm("导出pptx可能会丢失一些内容,确认导出?", "提示", {
|
|
|
|
+ confirmButtonText: "确认",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ type: "warning"
|
|
|
|
+ })
|
|
|
|
+ .then(() => {
|
|
|
|
+ spinType.value = "export"
|
|
|
|
+ exportPPTX()
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {})
|
|
}
|
|
}
|
|
|
|
+const fullscreenSpinData = computed(() => {
|
|
|
|
+ if (spinType.value === "export") {
|
|
|
|
+ return {
|
|
|
|
+ loading: exporting.value,
|
|
|
|
+ progress: exportProgress.value,
|
|
|
|
+ tip: "正在导出中,请稍等…"
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return {
|
|
|
|
+ loading: importing.value,
|
|
|
|
+ progress: importProgress.value,
|
|
|
|
+ tip: "正在导入中,请稍等…"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+})
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|