Pārlūkot izejas kodu

Merge branch 'active_voice_static'

jwyu 2 gadi atpakaļ
vecāks
revīzija
292ad3e6f6

+ 25 - 0
src/api/activity.js

@@ -74,3 +74,28 @@ export const apiGetReportDetail=(params)=>{
 export const apiGetChapterReportDetail=params=>{
     return get('/report/research_report_chapter',params)
 }
+
+
+/**
+ * 新增活动音频播放记录
+ * @param primary_id 音频ID
+ * @param extend_id 活动ID
+ * @param source 来源:1-小程序;2-小程序PC端;3-公众号;4-Web PC端
+ * @param from_page 来源页面:eg:活动详情
+ */
+export const apiActivityAudioPlayRecordAdd=params=>{
+    let source_agent=2
+	if(window.__wxjs_environment === 'miniprogram'){
+		source_agent=2
+	}else{
+		source_agent=4
+	}
+    return post('/activity/voice_log/add',{...params,source:source_agent})
+}
+
+/**
+ * 新增活动音频播放记录
+ */
+export const apiActivityAudioPlayRecordUpate=params=>{
+    return post('/activity/voice_log/update',params)
+}

+ 1 - 0
src/components/Audio.vue

@@ -27,6 +27,7 @@ const curUrl=computed(()=>{
 let curTime=ref(0)//当前音频播放时长
 const audioTimeupdate=(e)=>{// 音频播放时间更新
     curTime.value=e.target.currentTime
+    store.commit('updateAudioTime',e.target.currentTime)
 }
 
 const audioOnError=(e)=>{

+ 51 - 1
src/store/index.js

@@ -1,6 +1,10 @@
 import { createStore } from "vuex";
 import {ElMessage} from 'element-plus'
 import {apiUserInfo} from '@/api/user.js'
+import {apiActivityAudioPlayRecordAdd,apiActivityAudioPlayRecordUpate} from '@/api/activity'
+
+let lastActivityAudioRecordId=0//上次新曾活动音频记录时的id
+
 const token=localStorage.getItem('token')||''
 let platform='web'
 if(window.__wxjs_environment === 'miniprogram'){
@@ -35,6 +39,7 @@ export default createStore({
       questionId:0,//问答社区的id
       paused:true,//当前音频播放状态
       show:false,//是否显示音频弹窗
+      audioCurrentTime:0,//音频当前播放的时间
     },
 
     activityItemStatus:{//活动详情中某个活动点击了会议提醒\报名 更新列表状态
@@ -75,6 +80,12 @@ export default createStore({
       state.audioData.questionId=e.questionId||0
       state.audioData.show=true
       state.audioData.INS.play()
+      if(state.audioData.activityId!=0){
+        if(lastActivityAudioRecordId!=0){
+          handleActivityAudioRecordUpdate(state.audioData)
+        }
+        handleActivityAudioRecordAdd(state.audioData)
+      }
     },
     //切换音频
     changeAudio(state,e){
@@ -82,17 +93,20 @@ export default createStore({
         if(state.audioData.index===0){
           ElMessage('当前为第一首')
         }else{
+          handleActivityAudioRecordUpdate(state.audioData)
           state.audioData.index--
         }
       }else if(e==='next'){//点击按钮切换下一首
         if(state.audioData.index==state.audioData.list.length-1){
           ElMessage('当前为最后一首')
         }else{
+          handleActivityAudioRecordUpdate(state.audioData)
           state.audioData.index++
         }
       }else if(e==='auto'){//自动播放切换下一首
         if(state.audioData.index==state.audioData.list.length-1){
           // ElMessage('当前为最后一首')
+          handleActivityAudioRecordUpdate(state.audioData)
           state.audioData.list=[]
           state.audioData.index=0
           state.audioData.activityId=0
@@ -103,12 +117,14 @@ export default createStore({
           state.audioData.show=false
           state.audioData.paused=false
         }else{
+          handleActivityAudioRecordUpdate(state.audioData)
           state.audioData.index++
         }
       }
     },
     // 关闭音频
     closeAudio(state,e){
+      handleActivityAudioRecordUpdate(state.audioData)
       state.audioData.list=[]
       state.audioData.index=0
       state.audioData.activityId=0
@@ -118,6 +134,7 @@ export default createStore({
       state.audioData.INS=null
       state.audioData.show=false
       state.audioData.paused=false
+      
     },
     //音频状态切换
     audioStatusChange(state,e){
@@ -130,8 +147,13 @@ export default createStore({
     },
     //关闭音频弹窗
     closeAudioPop(state){
+      handleActivityAudioRecordUpdate(state.audioData)
       state.audioData.show=false
     },
+    //更新音频当前播放时间
+    updateAudioTime(state,e){
+      state.audioData.audioCurrentTime=e
+    },
 
     // 更新活动列表某项状态
     updateActivityStatus(state,e){
@@ -188,4 +210,32 @@ export default createStore({
     }
   },
   modules: {},
-});
+});
+
+
+
+//新增活动音频播放记录
+function handleActivityAudioRecordAdd(params) {
+  apiActivityAudioPlayRecordAdd({
+    primary_id:Number(params.list[params.index].activity_voice_id),
+    extend_id:Number(params.list[params.index].activityId),
+    from_page:window.location.pathname=='/activity/list'?'活动列表':'活动详情'
+  }).then(res=>{
+    if(res.code===200){
+      console.log('新增活动音频播放记录成功');
+      lastActivityAudioRecordId=res.data.id
+    }
+  })
+}
+
+//更新活动音频播放记录
+function handleActivityAudioRecordUpdate(params) {
+  apiActivityAudioPlayRecordUpate({
+    id:Number(lastActivityAudioRecordId),
+    stop_seconds:parseInt(params.audioCurrentTime)
+  }).then(res=>{
+    if(res.code===200){
+      console.log('更新音频记录成功');
+    }
+  })
+}

+ 3 - 1
src/views/activity/Detail.vue

@@ -123,7 +123,9 @@ const getAudio=async ()=>{
             return {
                 name:_item.voiceName,
                 url:_item.voiceUrl,
-                time:_item.voicePlaySeconds
+                time:_item.voicePlaySeconds,
+                activityId:_item.activityId,
+                activity_voice_id:_item.activity_voice_id
             }
         })
     }

+ 3 - 1
src/views/activity/List.vue

@@ -239,7 +239,9 @@ const handleGetAudio=async (item)=>{
             return {
                 name:_item.voiceName,
                 url:_item.voiceUrl,
-                time:_item.voicePlaySeconds
+                time:_item.voicePlaySeconds,
+                activityId:_item.activityId,
+                activity_voice_id:_item.activity_voice_id
             }
         })
         store.commit('addAudio',{