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/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/views/prepare/index.vue b/src/renderer/src/views/prepare/index.vue index 6ff278e..bdc2e45 100644 --- a/src/renderer/src/views/prepare/index.vue +++ b/src/renderer/src/views/prepare/index.vue @@ -449,6 +449,7 @@ export default { } case 'click': { // 点击-打开课件-aippt if (row.fileFlag === 'aippt' && !!row.fileId) { + sessionStore.delete('curr.classcourse') // 清除上课相关信息 const res = await getEntpcoursefile(row.fileId) if (res && res.code === 200) { this.openPublicScreen('edit', res.data, row) // 打开公屏-窗口