index.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { defineComponent, onMounted, reactive, ref, watch } from "vue";
  2. import WorkHome from "../work-home";
  3. import WorkEaluating from "../work-ealuating";
  4. import { getQuery } from "/src/utils/queryString";
  5. import { api_lessonTrainingTrainingStudentDetail } from "../../api";
  6. import { headTopData } from "../../header-top";
  7. import { evaluatingData } from "/src/view/evaluating";
  8. import state from "/src/state";
  9. const workHomeRef = ref();
  10. const workEvaluatRef = ref();
  11. export const data = reactive({
  12. /** 作业类型:练习PRACTICE, 评测EVALUATION */
  13. trainingType: "" as "PRACTICE" | "EVALUATION",
  14. worke: {},
  15. });
  16. export const HANDLE_WORK_ADD = () => {
  17. if (data.trainingType === "PRACTICE"){
  18. workHomeRef.value?.handleAdd();
  19. }
  20. };
  21. // 刷新谱面后,设置作业选段
  22. export const resetSection = () => {
  23. console.log('重新设置选段1111')
  24. if (data.trainingType === "PRACTICE"){
  25. workHomeRef.value?.getWorkData();
  26. }
  27. if (data.trainingType === "EVALUATION") {
  28. workEvaluatRef.value?.getWorkData();
  29. }
  30. state.workSectionNeedReset = false;
  31. };
  32. export default defineComponent({
  33. name: "workIndex",
  34. setup(props) {
  35. const query = getQuery();
  36. const setModelType = () => {
  37. if (!data.trainingType) return;
  38. const type = data.trainingType === "PRACTICE" ? "practise" : "evaluating";
  39. headTopData.handleChangeModeType(type);
  40. };
  41. const getWorkDetail = async () => {
  42. const res = await api_lessonTrainingTrainingStudentDetail(query.workRecord);
  43. if (res?.code === 200) {
  44. data.trainingType = res.data.trainingType;
  45. data.worke = res.data;
  46. setModelType();
  47. }
  48. };
  49. // 评测作业监听评测资源加载完成
  50. watch(
  51. () => evaluatingData.jsonLoadDone,
  52. () => {
  53. if (data.trainingType === "EVALUATION" && evaluatingData.jsonLoading && evaluatingData.jsonLoadDone) {
  54. headTopData.handleChangeModeType('evaluating');
  55. }
  56. }
  57. );
  58. onMounted(() => {
  59. getWorkDetail();
  60. });
  61. return () => (
  62. <>
  63. {/* 课后训练作业 */}
  64. {data.trainingType === "PRACTICE" && <WorkHome ref={workHomeRef} workeData={data.worke} />}
  65. {/* 评测作业 */}
  66. {data.trainingType === "EVALUATION" && (
  67. <WorkEaluating ref={workEvaluatRef} workeData={data.worke} />
  68. )}
  69. </>
  70. );
  71. },
  72. });