diff --git a/src/renderer/src/AixPPTist/src/api/index.ts b/src/renderer/src/AixPPTist/src/api/index.ts index 8e15fb7..d568d02 100644 --- a/src/renderer/src/AixPPTist/src/api/index.ts +++ b/src/renderer/src/AixPPTist/src/api/index.ts @@ -97,14 +97,30 @@ export class PPTApi { }) } + /** + * @description 批量插入slide + * @param slides 批量新增的幻灯片 + * @param slideAll 所有幻灯片 + * @returns + */ + static async addSlideServer(slides: object[], slideAll: object[]) { + const resource = sessionStore.get('curr.resource')||{} + for(const slide of slides){ + slide.id = resource.id // 覆盖默认随机id + await this.addSlide(slide) + } + await this.batchUpdateSlides(slideAll, true) // 批量更新-排序 + return PPTApi.getSlideList(resource.id) // 更新幻灯片列表以及活动相关 + } + // 新增幻灯片 static addSlide(data: object): Promise { return new Promise(async (resolve, reject) => { const enpt = sessionStore.get('curr.entp')||{} - const resource = sessionStore.get('curr.resource')||{} + // const resource = sessionStore.get('curr.resource')||{} const {id, ...content} = data const params = { - parentid: resource.id, + parentid: id, entpid: userStore.user.deptId, entpcourseid: enpt.id, ppttype: 'file', @@ -126,7 +142,7 @@ export class PPTApi { // msgUtils.msgSuccess('新增成功') this.isUpdate = false // 新增后会触发监听,不再更新数据 resolve(true) - } else msgUtils.msgError('新增失败');resolve(false) + } else msgUtils.msgError('新增失败');reject(false) }) } /** @@ -147,22 +163,17 @@ export class PPTApi { const currInd = toRaw(slidesStore.slideIndex) // 当前页索引-new const oldInd = oldData.findIndex(o => o.id == currentSlide.id) // 当前页索引-old const isBatch = oldVal && oldVal.length && currInd != oldInd // 是否批量更新-排序 - if (isAdd) { // 新增的幻灯片(id 为非数字,说明是新增的幻灯片) - const bool = await this.addSlide(currentSlide) - bool && await this.batchUpdateSlides(newData, true) // 批量更新-排序 - const resource = sessionStore.get('curr.resource')||{} - await PPTApi.getSlideList(resource.id) - } else { // 防抖-更新 - if (!this.isUpdate) return this.isUpdate = true // 下次更新数据 - if (isBatch) { // 批量更新-排序 - this.batchUpdateSlides(newData, true) - } else { // 更新当前页幻灯片 - const params = { - id: currentSlide.id, - datacontent: JSON.stringify(currentSlide), - } - Utils.mxThrottle(() => {this.updateSlide(params)}, 200, 2) + if (isAdd) return // 新增-这里不处理 状态管理-处理 + // 防抖-更新 + if (!this.isUpdate) return this.isUpdate = true // 下次更新数据 + if (isBatch) { // 批量更新-排序 + this.batchUpdateSlides(newData, true) + } else { // 更新当前页幻灯片 + const params = { + id: currentSlide.id, + datacontent: JSON.stringify(currentSlide), } + Utils.mxThrottle(() => {this.updateSlide(params)}, 200, 2) } } // 更新幻灯片 isThum 是否更新缩略图 diff --git a/src/renderer/src/AixPPTist/src/api/watcher.ts b/src/renderer/src/AixPPTist/src/api/watcher.ts index 5a9e731..b7ae2f8 100644 --- a/src/renderer/src/AixPPTist/src/api/watcher.ts +++ b/src/renderer/src/AixPPTist/src/api/watcher.ts @@ -130,7 +130,7 @@ export default () => { case MsgEnum.HEADS.MSG_yh: // 疑惑 hooksUpvote.trigger(2) break - case MsgEnum.HEADS.MSG_pushSreen_ImgList: // 推图片上屏 + case MsgEnum.HEADS.MSG_pushSreen_ImgList: // 推图片上屏 const imgArray = content.ImgList.map((obj) => obj.url); emitter.emit('opengridPic',{arr:imgArray}) // 打开推图片上屏窗口 break diff --git a/src/renderer/src/AixPPTist/src/store/slides.ts b/src/renderer/src/AixPPTist/src/store/slides.ts index f3a23fa..420bd84 100644 --- a/src/renderer/src/AixPPTist/src/store/slides.ts +++ b/src/renderer/src/AixPPTist/src/store/slides.ts @@ -148,7 +148,8 @@ export const useSlidesStore = defineStore('slides', { this.workItem = list }, - addSlide(slide: Slide | Slide[]) { + async addSlide(slide: Slide | Slide[]) { + const { PPTApi } = await import('../api/index') const slides = Array.isArray(slide) ? slide : [slide] for (const slide of slides) { if (slide.sectionTag) delete slide.sectionTag @@ -156,6 +157,8 @@ export const useSlidesStore = defineStore('slides', { const addIndex = this.slideIndex + 1 this.slides.splice(addIndex, 0, ...slides) this.slideIndex = addIndex + // 添加到服务器 + PPTApi.addSlideServer(slides, this.slides) }, updateSlide(props: Partial, slideId?: string) { const slideIndex = slideId ? this.slides.findIndex(item => item.id === slideId) : this.slideIndex diff --git a/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue b/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue index 7d24e8c..df33b5c 100644 --- a/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue +++ b/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue @@ -47,8 +47,9 @@ - - + + +
@@ -75,7 +76,8 @@ import WritingBoardTool from './WritingBoardTool.vue' import CountdownTimer from './CountdownTimer.vue' import emitter from '@/utils/mitt'; import Chat from '../../api/chat' // 聊天 -import { CircleDoubleDown, CircleDoubleUp } from '@icon-park/vue-next' // icon-park 图标库 +import { CircleDoubleDown, CircleDoubleUp, Share } from '@icon-park/vue-next' // icon-park 图标库 +import { ShareCode } from '@/utils/ppt' // ppt相关 const props = defineProps<{ changeViewMode: (mode: 'base' | 'presenter') => void @@ -198,7 +200,7 @@ const contextmenus = (): ContextmenuItem[] => { }, ] } - +// 工具栏按钮触发 const toolTrigger = (type:string) => { const curT = Date.now() if (curT - timer.value < 200) return diff --git a/src/renderer/src/AixPPTist/src/views/Screen/PresenterView.vue b/src/renderer/src/AixPPTist/src/views/Screen/PresenterView.vue index a747a9c..5ece2f4 100644 --- a/src/renderer/src/AixPPTist/src/views/Screen/PresenterView.vue +++ b/src/renderer/src/AixPPTist/src/views/Screen/PresenterView.vue @@ -10,9 +10,10 @@ {{ fullscreenState ? '退出全屏' : '全屏' }}
+
分享
-
结束放映
-
结束课堂
+
结束放映
+
结束课堂
@@ -78,6 +79,7 @@