|
@@ -1,113 +1,119 @@
|
|
|
-import { defineComponent, onMounted, reactive, ref } from 'vue'
|
|
|
-import { useOriginSearch } from '../uses'
|
|
|
-import request from '/src/helpers/request'
|
|
|
-import SettingState from '/src/pages/detail/setting-state'
|
|
|
-import runtime, { changeSpeed } from '/src/pages/detail/runtime'
|
|
|
-import state from '/src/pages/detail/state'
|
|
|
-import { Toast } from 'vant'
|
|
|
-import { userInfo } from '../App'
|
|
|
-import { browser } from '/src/helpers/utils'
|
|
|
+import { defineComponent, onMounted, reactive, ref } from "vue";
|
|
|
+import { getQuery } from "/src/utils/queryString";
|
|
|
+import request from "/src/utils/request";
|
|
|
+import { storeData } from "/src/store";
|
|
|
+import state, { handleSetSpeed, hanldeDirectSelection } from "/src/state";
|
|
|
+import { handleCloseModeMode } from "../../header-top";
|
|
|
+import { handleStartEvaluat } from "/src/view/evaluating";
|
|
|
|
|
|
interface IquestionExtendsInfo {
|
|
|
- /** 评测难度 */
|
|
|
- difficulty?: 'ONE' | 'TWO' | 'THREE' | '1' | '2' | '3' | ''
|
|
|
- /** 开始小节 */
|
|
|
- start?: string | number
|
|
|
- /** 结束小节 */
|
|
|
- end?: string | number
|
|
|
- /** 速度 */
|
|
|
- speed?: number
|
|
|
+ /** 评测难度 */
|
|
|
+ difficulty?: "ONE" | "TWO" | "THREE" | "1" | "2" | "3" | "";
|
|
|
+ /** 开始小节 */
|
|
|
+ start?: string | number;
|
|
|
+ /** 结束小节 */
|
|
|
+ end?: string | number;
|
|
|
+ /** 速度 */
|
|
|
+ speed?: number;
|
|
|
}
|
|
|
const difficultyData: { [_: string]: any } = {
|
|
|
- ONE: 'BEGINNER',
|
|
|
- TWO: 'ADVANCED',
|
|
|
- THREE: 'PERFORMER',
|
|
|
- '1': 'BEGINNER',
|
|
|
- '2': 'ADVANCED',
|
|
|
- '3': 'PERFORMER',
|
|
|
-}
|
|
|
+ ONE: "BEGINNER",
|
|
|
+ TWO: "ADVANCED",
|
|
|
+ THREE: "PERFORMER",
|
|
|
+ "1": "BEGINNER",
|
|
|
+ "2": "ADVANCED",
|
|
|
+ "3": "PERFORMER",
|
|
|
+};
|
|
|
|
|
|
export const unitTestData = reactive({
|
|
|
- /** 是否是选段模式 */
|
|
|
- isSelectMeasureMode: false,
|
|
|
-})
|
|
|
+ /** 是否是选段模式 */
|
|
|
+ isSelectMeasureMode: false,
|
|
|
+});
|
|
|
|
|
|
export default defineComponent({
|
|
|
- name: 'unitTest',
|
|
|
- setup() {
|
|
|
- const questionExtendsInfo = ref<IquestionExtendsInfo>({difficulty: ''})
|
|
|
- /**
|
|
|
- * 如果是课后训练或者单元测验,获取数据
|
|
|
- * @param xml 获取的xml数据
|
|
|
- * @returns 格式化的xml数据
|
|
|
- */
|
|
|
- const getUnitData = async () => {
|
|
|
- const search = useOriginSearch()
|
|
|
- if (!search.questionId) return ''
|
|
|
-
|
|
|
- try {
|
|
|
- const res: any = await request.get(`/examinationQuestion/detail?examinationQuestionId=${search.questionId}`)
|
|
|
- questionExtendsInfo.value = JSON.parse(res?.data?.questionExtendsInfo) || {}
|
|
|
- questionExtendsInfo.value.start = Number(questionExtendsInfo.value.start)
|
|
|
- questionExtendsInfo.value.end = Number(questionExtendsInfo.value.end)
|
|
|
- } catch (error) {
|
|
|
- console.error('解析单元测验曲谱题目失败', error)
|
|
|
- }
|
|
|
- setSection()
|
|
|
- }
|
|
|
-
|
|
|
- const getlessonTrainingData = async () => {
|
|
|
- const search = useOriginSearch()
|
|
|
- if (!search.lessonTrainingId) return
|
|
|
- try {
|
|
|
- const res: any = await request.post(`/studentLessonTraining/trainingRecord/${search.courseScheduleId}?userId=${userInfo.id}`)
|
|
|
- if (Array.isArray(res?.data?.trainings)){
|
|
|
- const train = res.data.trainings.find((n: any) => n.materialId == search.materialId)
|
|
|
- const info = JSON.parse(train.trainingContent)
|
|
|
- // console.log("🚀 ~ info", info)
|
|
|
- questionExtendsInfo.value.start = Number(info.startSection)
|
|
|
- questionExtendsInfo.value.end = Number(info.endSection)
|
|
|
- questionExtendsInfo.value.speed = isNaN(info.speed) ? 0 : Number(info.speed)
|
|
|
- }
|
|
|
- } catch (error) {
|
|
|
- console.error('解析课后训练曲谱题目失败', error)
|
|
|
- }
|
|
|
- setSection()
|
|
|
- }
|
|
|
+ name: "unitTest",
|
|
|
+ setup() {
|
|
|
+ const questionExtendsInfo = ref<IquestionExtendsInfo>({ difficulty: "" });
|
|
|
+ /** 隐藏评测功能 */
|
|
|
+ const handleHide = (list: string[]) => {
|
|
|
+ const ids = list;
|
|
|
+ for (let i = 0; i < ids.length; i++) {
|
|
|
+ const speedBtn = document.getElementById(ids[i]);
|
|
|
+ if (speedBtn) {
|
|
|
+ speedBtn.style.pointerEvents = "none";
|
|
|
+ if (ids[i] != "selectionBox") {
|
|
|
+ speedBtn.style.opacity = ".7";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ /**
|
|
|
+ * 如果是课后训练或者单元测验,获取数据
|
|
|
+ * @param xml 获取的xml数据
|
|
|
+ * @returns 格式化的xml数据
|
|
|
+ */
|
|
|
+ const getUnitData = async () => {
|
|
|
+ const search = getQuery();
|
|
|
+ if (!search.questionId) return "";
|
|
|
+ handleHide(["tips-step-0", "tips-step-2", "selectionBox"])
|
|
|
+ handleStartEvaluat();
|
|
|
+ handleCloseModeMode()
|
|
|
+ try {
|
|
|
+ const res: any = await request.get(`/examinationQuestion/detail?examinationQuestionId=${search.questionId}`);
|
|
|
+ questionExtendsInfo.value = JSON.parse(res?.data?.questionExtendsInfo) || {};
|
|
|
+ questionExtendsInfo.value.start = Number(questionExtendsInfo.value.start);
|
|
|
+ questionExtendsInfo.value.end = Number(questionExtendsInfo.value.end);
|
|
|
+ } catch (error) {
|
|
|
+ console.error("解析单元测验曲谱题目失败", error);
|
|
|
+ }
|
|
|
+ setSection();
|
|
|
+ };
|
|
|
+
|
|
|
+ const getlessonTrainingData = async () => {
|
|
|
+ const search = getQuery();
|
|
|
+ if (!search.lessonTrainingId) return;
|
|
|
+ handleHide([ "tips-step-2", "selectionBox"])
|
|
|
+ try {
|
|
|
+ const res: any = await request.post(`/studentLessonTraining/trainingRecord/${search.courseScheduleId}?userId=${storeData.user?.id}`);
|
|
|
+ if (Array.isArray(res?.data?.trainings)) {
|
|
|
+ const train = res.data.trainings.find((n: any) => n.materialId == search.materialId);
|
|
|
+ const info = JSON.parse(train.trainingContent);
|
|
|
+ // console.log("🚀 ~ info", info)
|
|
|
+ questionExtendsInfo.value.start = Number(info.startSection);
|
|
|
+ questionExtendsInfo.value.end = Number(info.endSection);
|
|
|
+ questionExtendsInfo.value.speed = isNaN(info.speed) ? 0 : Number(info.speed);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error("解析课后训练曲谱题目失败", error);
|
|
|
+ }
|
|
|
+ setSection();
|
|
|
+ };
|
|
|
|
|
|
- /**设置小节 */
|
|
|
- const setSection = () => {
|
|
|
- const startNotes = state.times.filter(
|
|
|
- (n: any) => n.noteElement.sourceMeasure.MeasureNumberXML == questionExtendsInfo.value.start
|
|
|
- )
|
|
|
- const endNotes = state.times.filter(
|
|
|
- (n: any) => n.noteElement.sourceMeasure.MeasureNumberXML == questionExtendsInfo.value.end
|
|
|
- )
|
|
|
- const startNote = startNotes[0]
|
|
|
- const endNote = endNotes[endNotes.length - 1]
|
|
|
- // console.log('🚀 ~ activeNote', startNote, endNote, questionExtendsInfo.value.end)
|
|
|
- if (startNote && endNote) {
|
|
|
- unitTestData.isSelectMeasureMode = true
|
|
|
- // 设置小节
|
|
|
- state.sectionStatus = true
|
|
|
- state.section = [startNote, endNote]
|
|
|
- // 设置评测难度
|
|
|
- if (difficultyData[questionExtendsInfo.value.difficulty!]) {
|
|
|
- SettingState.eva.difficulty = difficultyData[questionExtendsInfo.value.difficulty!]
|
|
|
- }
|
|
|
- //设置速度
|
|
|
- if (questionExtendsInfo.value.speed) {
|
|
|
- changeSpeed(questionExtendsInfo.value.speed)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- onMounted(() => {
|
|
|
- const browserInfo = browser()
|
|
|
- //如果不是学生端直接return
|
|
|
- if (!browserInfo.isStudent) return
|
|
|
- getUnitData()
|
|
|
- getlessonTrainingData()
|
|
|
- })
|
|
|
- return () => ''
|
|
|
- },
|
|
|
-})
|
|
|
+ /**设置小节 */
|
|
|
+ const setSection = () => {
|
|
|
+ const startNotes = state.times.filter((n: any) => n.MeasureNumberXML == questionExtendsInfo.value.start);
|
|
|
+ const endNotes = state.times.filter((n: any) => n.MeasureNumberXML == questionExtendsInfo.value.end);
|
|
|
+ const startNote = startNotes[0];
|
|
|
+ const endNote = endNotes[endNotes.length - 1];
|
|
|
+ // console.log('🚀 ~ activeNote', startNote, endNote, questionExtendsInfo.value.end)
|
|
|
+ if (startNote && endNote) {
|
|
|
+ state.isSelectMeasureMode = true;
|
|
|
+ // 设置小节
|
|
|
+ hanldeDirectSelection([startNote, endNote])
|
|
|
+ // 设置评测难度
|
|
|
+ if (difficultyData[questionExtendsInfo.value.difficulty!]) {
|
|
|
+ state.setting.evaluationDifficulty = difficultyData[questionExtendsInfo.value.difficulty!];
|
|
|
+ }
|
|
|
+ //设置速度
|
|
|
+ if (questionExtendsInfo.value.speed) {
|
|
|
+ handleSetSpeed(questionExtendsInfo.value.speed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ onMounted(() => {
|
|
|
+ getUnitData();
|
|
|
+ getlessonTrainingData();
|
|
|
+ });
|
|
|
+ return () => "";
|
|
|
+ },
|
|
|
+});
|