|
@@ -1,8 +1,11 @@
|
|
|
-import { defineComponent, onMounted } from 'vue'
|
|
|
+import { defineComponent, onBeforeUnmount, onMounted, onUnmounted } from 'vue'
|
|
|
import qs from 'query-string'
|
|
|
import '../../vue-tsx-shim.d'
|
|
|
import '../../app.d'
|
|
|
import { useRoute } from 'vue-router'
|
|
|
+import { useClientType, useOriginSearch } from './uses'
|
|
|
+import request from '/src/helpers/request'
|
|
|
+import { getPlatform, getRequestHostname } from '/src/helpers/utils'
|
|
|
|
|
|
export default defineComponent({
|
|
|
setup() {
|
|
@@ -11,8 +14,40 @@ export default defineComponent({
|
|
|
if (route?.query?.Authorization) {
|
|
|
sessionStorage.setItem('Authorization', route.query.Authorization as string)
|
|
|
}
|
|
|
- },
|
|
|
- render() {
|
|
|
- return <router-view></router-view>
|
|
|
+
|
|
|
+ const startTime = Date.now()
|
|
|
+ const initBehaviorId = '' + new Date().valueOf()
|
|
|
+ /** 学生端记录在云教练里面的时长 */
|
|
|
+ const recordTotalTime = async () => {
|
|
|
+ const client = useClientType()
|
|
|
+ if (client != 'student') return
|
|
|
+ const search = useOriginSearch()
|
|
|
+ const behaviorId = sessionStorage.getItem('behaviorId') || search.behaviorId || initBehaviorId
|
|
|
+ const prefix = getRequestHostname()
|
|
|
+ const totalTime = Date.now() - startTime
|
|
|
+ const res = await request.post('/musicPracticeRecord/save', {
|
|
|
+ prefix: prefix,
|
|
|
+ requestType: 'json',
|
|
|
+ data: {
|
|
|
+ musicSheetId: search.id,
|
|
|
+ sysMusicScoreId: search.id,
|
|
|
+ feature: search.feature,
|
|
|
+ playTime: totalTime / 1000,
|
|
|
+ deviceType: getPlatform(),
|
|
|
+ behaviorId,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ }
|
|
|
+ let timer = null as any
|
|
|
+ onMounted(() => {
|
|
|
+ clearInterval(timer)
|
|
|
+ if (!route.name) return
|
|
|
+ console.log('进入云教练')
|
|
|
+ timer = setInterval(() => {
|
|
|
+ recordTotalTime()
|
|
|
+ }, 10 * 1000)
|
|
|
+ })
|
|
|
+
|
|
|
+ return () => <router-view></router-view>
|
|
|
},
|
|
|
})
|