import { defineComponent, reactive, watch } from "vue"; import state from "/src/state"; import { api_musicPracticeRecordSave } from "../../api"; import { browser, getBehaviorId, getCampId } from "/src/utils"; import { getQuery } from "/src/utils/queryString"; import { storeData } from "/src/store"; const recordData = reactive({ starTime: 0, }); const handleRecord = () => { // 不是练习模式不记录,web后台不记录 if (state.modeType !== "practise" || state.systemType === 'web') return; let total = Date.now() - recordData.starTime; recordData.starTime = Date.now(); if (total < 0) total = 0; const totalTime = total / 1000; const query: any = getQuery(); const body: any = { clientType: storeData.user.clientType, musicSheetId: state.examSongId, sysMusicScoreId: state.examSongId, feature: "PRACTICE", practiceSource: "PRACTICE", playTime: totalTime, deviceType: browser().android ? "ANDROID" : "IOS", behaviorId: getBehaviorId(), }; // 如果是作业模式,需要添加作业id if (query.workRecord || query.evaluatingRecord) { body.lessonDetailId = query.workRecord || query.evaluatingRecord } api_musicPracticeRecordSave(body); }; export const handleNoEndExit = () => { if (state.playState === "play") { handleRecord(); } }; /** * 记录练习时长, 仅记录练习模式的时长 */ export default defineComponent({ name: "recordingTime", setup() { watch( () => state.playState, () => { if (state.playState === "play") { recordData.starTime = Date.now(); } else { handleRecord(); } } ); return () =>
; }, });