From b0fca4ad9bd04908ef093dcb7cbf29895cb11af5 Mon Sep 17 00:00:00 2001 From: zdg Date: Wed, 18 Dec 2024 15:59:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?ppt=E4=B8=8A=E8=AF=BE-=E5=85=A8=E5=B1=8F?= =?UTF-8?q?=E6=BC=94=E8=AE=B2=E8=80=85=20=E7=82=B9=E8=B5=9E=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/AixPPTist/src/api/classcourse.ts | 19 ++----- src/renderer/src/AixPPTist/src/api/upvote.ts | 33 ++++++++++++ src/renderer/src/AixPPTist/src/api/watcher.ts | 14 ++--- .../src/AixPPTist/src/store/classcourse.ts | 5 ++ .../src/AixPPTist/src/store/slides.ts | 7 ++- .../AixPPTist/src/views/Screen/BaseView.vue | 53 ++----------------- .../src/views/Screen/PresenterView.vue | 7 +-- .../src/views/Screen/hooks/useExecPlay.ts | 9 ++-- .../src/AixPPTist/src/views/Screen/index.vue | 8 +++ .../src/views/tool/components/upvote.vue | 2 + 10 files changed, 79 insertions(+), 78 deletions(-) create mode 100644 src/renderer/src/AixPPTist/src/api/upvote.ts diff --git a/src/renderer/src/AixPPTist/src/api/classcourse.ts b/src/renderer/src/AixPPTist/src/api/classcourse.ts index b41091e..21e7296 100644 --- a/src/renderer/src/AixPPTist/src/api/classcourse.ts +++ b/src/renderer/src/AixPPTist/src/api/classcourse.ts @@ -41,21 +41,12 @@ export class Classcourse { this.classcourse = classcourse // 课堂信息 this.id = classcourse.id // 课堂id // 如果课堂信息有paging,则更新当前页码 - const { paging } = classcourse + const { paging, cartoonTimes } = classcourse const isPaging = !!paging || paging === 0 - if (isPaging) { - await this.sleep(200) - emitter.emit('useExecPlay', {key:'turnSlideToIndex', paging}) - await this.sleep(1000) - // 如果课堂信息有paging,则更新动画播放状态 - const isAnim = !!classcourse.cartoonTimes - if (isAnim) { // 动画播放 - for (let i = 0; i < classcourse.cartoonTimes; i++) { - // 异步执行动画 - emitter.emit('useExecPlay', {key:'execNext', isAsync:true}) - } - } - } + // 如果课堂信息有paging,则更新动画播放状态 + const isAnim = !!cartoonTimes || cartoonTimes === 0 + if (isPaging) slidesStore.updateSlideIndex(paging) + if (isAnim) slidesStore.updateAnimationIndex(cartoonTimes+1) // 课堂信息-状态管理 classcourseStore.setClasscourse(classcourse) // 待上课提示 diff --git a/src/renderer/src/AixPPTist/src/api/upvote.ts b/src/renderer/src/AixPPTist/src/api/upvote.ts new file mode 100644 index 0000000..4e84407 --- /dev/null +++ b/src/renderer/src/AixPPTist/src/api/upvote.ts @@ -0,0 +1,33 @@ +/** + * 点赞组件-相关 + */ +export default class Upvote { + instance: any = null // 自身实例 + upvoteRef: any = null // 点赞组件 + constructor(elRef?: any) { + if(!!elRef) this.upvoteRef = elRef // 点赞组件 + if (!Upvote.Instance) { + Upvote.Instance = this + } + return Upvote.Instance + } + + // 初始化 + init(elRef) { + if(!!elRef) this.upvoteRef = elRef // 点赞组件 + return this + } + // 打开点赞或者疑问 1点赞 2疑问 + trigger(type) { + this.upvoteRef?.value?.trigger?.(type) + return this + } + // 静态方法-初始化 + static init(elRef) { + return new Upvote(elRef) + } + // 静态方法-打开点赞或者疑问 1点赞 2疑问 + static trigger(type) { + return new Upvote().trigger(type) + } +} \ No newline at end of file diff --git a/src/renderer/src/AixPPTist/src/api/watcher.ts b/src/renderer/src/AixPPTist/src/api/watcher.ts index 35d8454..cb67de2 100644 --- a/src/renderer/src/AixPPTist/src/api/watcher.ts +++ b/src/renderer/src/AixPPTist/src/api/watcher.ts @@ -13,6 +13,7 @@ import msgUtils from '@/plugins/modal' // 消息工具 import { Homework } from './index' // api-作业相关 import emitter from '@/utils/mitt' //mitt 事件总线 import useExecPlay from '../views/Screen/hooks/useExecPlay' // 播放控制 +import hooksUpvote from './upvote' // 点赞-工具 /** * @description 监听器 @@ -22,7 +23,7 @@ export default () => { const classcourseStore = store.useClasscourseStore() // 课堂信息-状态管理 const resource = sessionStore.get('curr.resource') // apt 资源 const smarttalk = sessionStore.get('curr.smarttalk') // 备课资源 - const execPlay = useExecPlay() // 播放控制 + const { execNext, turnPrevSlide } = useExecPlay() // 监听幻灯片内容变化 watch(() => slidesStore.slides, (newVal, oldVal) => { PPTApi.updateSlides(newVal, oldVal) // 更新幻灯片内容 @@ -98,9 +99,8 @@ export default () => { case MsgEnum.HEADS.MSG_slideFlapping: // 幻灯片翻页 const slideIndex = content?.current || 0 const type = content?.animation - // if (type === 'Nextsteps') emitter.emit('useExecPlay', 'execNext') // 下一步 - if (type === 'Nextsteps') emitter.emit('useExecPlay', {key:'execNext', isAsync:true}) // 下一步 - else if (type === 'Previoustep') emitter.emit('useExecPlay', 'turnPrevSlide') // 上一步清空-动画 + if (type === 'Nextsteps') execNext(true) // 下一步-异步动画 + else if (type === 'Previoustep') turnPrevSlide() // 上一步清空-动画 else slidesStore.updateSlideIndex(slideIndex) // 更新幻灯片下标 break case MsgEnum.HEADS.MSG_homework: // 作业|活动-布置 @@ -111,10 +111,12 @@ export default () => { close() break case MsgEnum.HEADS.MSG_dz: // 点赞 - emitter.emit('upvoteTrigger', 1) + // emitter.emit('upvoteTrigger', 1) + hooksUpvote.trigger(1) break case MsgEnum.HEADS.MSG_yh: // 疑惑 - emitter.emit('upvoteTrigger', 2) + // emitter.emit('upvoteTrigger', 2) + hooksUpvote.trigger(2) break case MsgEnum.HEADS.MSG_0010: // 备用 break diff --git a/src/renderer/src/AixPPTist/src/store/classcourse.ts b/src/renderer/src/AixPPTist/src/store/classcourse.ts index bd77fbd..5d83314 100644 --- a/src/renderer/src/AixPPTist/src/store/classcourse.ts +++ b/src/renderer/src/AixPPTist/src/store/classcourse.ts @@ -3,16 +3,21 @@ import type { Classcourse } from '../api/types' export interface ClasscourseState { classcourse: Classcourse | any, // 课堂信息 + isEmit: boolean, // 是否加载监听事件(动画播放) } export const useClasscourseStore = defineStore('classcourse', { state: (): ClasscourseState => ({ classcourse: null, // 课堂信息 + isEmit: false, // 是否加载监听事件(动画播放) }), actions: { setClasscourse(classcourse: Classcourse) { this.classcourse = classcourse }, + setIsEmit(isEmit: boolean) { + this.isEmit = isEmit + }, }, }) \ No newline at end of file diff --git a/src/renderer/src/AixPPTist/src/store/slides.ts b/src/renderer/src/AixPPTist/src/store/slides.ts index d7a3bae..f3a23fa 100644 --- a/src/renderer/src/AixPPTist/src/store/slides.ts +++ b/src/renderer/src/AixPPTist/src/store/slides.ts @@ -33,7 +33,8 @@ export interface SlidesState { slides: Slide[] slideIndex: number viewportSize: number - viewportRatio: number + viewportRatio: number, + animationIndex: number, // 不是从0开始 workList:Object[], workItem:Object[], } @@ -46,6 +47,7 @@ export const useSlidesStore = defineStore('slides', { slideIndex: 0, // 当前页面索引 viewportSize: 1000, // 可视区域宽度基数 viewportRatio: 0.5625, // 可视区域比例,默认16:9 + animationIndex: 0, // 不是从0开始 workList:[],// 活动的列表 workItem:[],// 获取到的所有pptlist }), @@ -206,6 +208,9 @@ export const useSlidesStore = defineStore('slides', { updateSlideIndex(index: number) { this.slideIndex = index }, + updateAnimationIndex(index: number) { + this.animationIndex = index + }, addElement(element: PPTElement | PPTElement[]) { const elements = Array.isArray(element) ? element : [element] diff --git a/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue b/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue index fc4940a..8e7acf0 100644 --- a/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue +++ b/src/renderer/src/AixPPTist/src/views/Screen/BaseView.vue @@ -30,14 +30,10 @@ @close="timerlVisible = false" /> -
+
- -
- -