Forráskód Böngészése

Merge branch 'feature-tianyong-newVersion' into ktyq-test-new

TIANYONG 1 hónapja
szülő
commit
d9375cd7f2

+ 4 - 0
src/page-instrument/api.ts

@@ -18,6 +18,10 @@ export const api_musicPracticeRecordSave = (data: any) => {
 export const api_lessonTrainingSubmitTraining = (data: any) => {
   return request.post("/lessonTraining/submitTraining", { requestType: "json", data });
 };
+/** 保存练习时长 */
+export const api_submitTrainingTime = (data: any) => {
+  return request.post("/lessonTraining/submitTrainingTime", { requestType: "json", data });
+};
 /** 获取作业详情 */
 export const api_lessonTrainingTrainingStudentDetail = (id: any) => {
   return request.get(`/lessonTraining/trainingContentStudentDetail?id=${id}`);

+ 21 - 9
src/page-instrument/custom-plugins/work-home/index.tsx

@@ -1,7 +1,7 @@
 import { defineComponent, onMounted, reactive, watch } from "vue";
 import styles from "./index.module.less";
 // import { verifyMembershipServices } from "../vip-verify";
-import { api_lessonTrainingSubmitTraining, api_lessonTrainingTrainingStudentDetail } from "../../api";
+import { api_lessonTrainingSubmitTraining, api_lessonTrainingTrainingStudentDetail, api_submitTrainingTime } from "../../api";
 import state, { handleSetSpeed, hanldeDirectSelection, setSection, togglePlay } from "/src/state";
 import { getSecondRPM } from "/src/utils";
 import { headImg } from "/src/page-instrument/header-top/image";
@@ -28,6 +28,7 @@ export default defineComponent({
 			end: "" as any,
 			timer: null as any, // 定时器
 			realThisTimeTotal: 0, // 达标的本次练习时长
+			trainingStatus: "" as any, // 作业状态
 		});
 
 		/** 隐藏评测功能 */
@@ -77,7 +78,8 @@ export default defineComponent({
 			if (res?.code === 200) {
 				training.trainingTimes = (res.data.trainingTimes / 60).toFixed(1) || "0";
 				training.trainingTimeSecond = res.data.trainingTimes || 0;
-				state.isWorkDone = Number(training.trainingTimes) >= Number(training.times);
+				training.trainingStatus = res.data.trainingStatus;
+				state.isWorkDone = Number(training.trainingTimes) >= Number(training.times) && res.data.trainingStatus === 'TARGET';
 			}
 		};
 
@@ -91,9 +93,12 @@ export default defineComponent({
 				}
 				// 如果已达标,手动保存作业时,需要添加submitFlag参数
 				if (extraType === 'save') {
-					params.submitFlag = true
+					params = {
+						id: props.workeData.id,
+						submitFlag: true
+					}
 				}
-				const res = await api_lessonTrainingSubmitTraining(params);
+				const res = extraType === 'save' ? await api_lessonTrainingSubmitTraining(params) : await api_submitTrainingTime(params);
 				if (res?.code == 200) {
 					getWorkDetail();
 					training.starTime = Date.now();
@@ -119,9 +124,10 @@ export default defineComponent({
 					handleStart();
 				} else {
 					// 没有达标停止播放时,需要自动提交练习时长
-					if (!state.showWorkDonePop) {
-						addHomeworkRecored();
-					}
+					// if (!state.showWorkDonePop) {
+					// 	addHomeworkRecored();
+					// }
+					addHomeworkRecored();
 					handleStop();
 				}
 			}
@@ -139,12 +145,18 @@ export default defineComponent({
 			() => {
 				// console.log('累积时间',111,state.isWorkDone,training.trainingTimeSecond,training.times * 60)
 				// 如果播放中,作业从未达标到达标状态,需要暂停播放,并且弹窗提示作业已达标
-				if (!state.isWorkDone && training.trainingTimeSecond >= training.times * 60 || (state.isWorkDone && training.trainingTimeSecond === training.times * 60)) {
+				if (training.trainingStatus === 'UNSUBMITTED' && (!state.isWorkDone && training.trainingTimeSecond >= training.times * 60 || (state.isWorkDone && training.trainingTimeSecond === training.times * 60)) ) {
 					// training.realThisTimeTotal = state.isWorkDone && training.trainingTimeSecond === training.times * 60 ? 0 : Math.ceil((Date.now() - training.starTime) / 1000);
 					training.realThisTimeTotal = Math.floor((Date.now() - training.starTime) / 1000);
 					state.isWorkDone = true
-					state.showWorkDonePop = training.starTime > 0 ? true : false
 					togglePlay("paused")
+					if (training.starTime === 0) {
+						setTimeout(() => {
+							state.showWorkDonePop = true
+						}, 1500);
+					} else {
+						state.showWorkDonePop = true
+					}
 				}
 			}
 		);