index.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. if (data.trainingType === "PRACTICE"){
  24. workHomeRef.value?.getWorkData();
  25. }
  26. if (data.trainingType === "EVALUATION") {
  27. workHomeRef.value?.getWorkData();
  28. }
  29. state.workSectionNeedReset = false;
  30. };
  31. export default defineComponent({
  32. name: "workIndex",
  33. setup(props) {
  34. const query = getQuery();
  35. const setModelType = () => {
  36. if (!data.trainingType) return;
  37. const type = data.trainingType === "PRACTICE" ? "practise" : "evaluating";
  38. headTopData.handleChangeModeType(type);
  39. };
  40. const getWorkDetail = async () => {
  41. const res = await api_lessonTrainingTrainingStudentDetail(query.workRecord);
  42. if (res?.code === 200) {
  43. data.trainingType = res.data.trainingType;
  44. data.worke = res.data;
  45. setModelType();
  46. }
  47. };
  48. // 评测作业监听评测资源加载完成
  49. watch(
  50. () => evaluatingData.jsonLoadDone,
  51. () => {
  52. if (data.trainingType === "EVALUATION" && evaluatingData.jsonLoading && evaluatingData.jsonLoadDone) {
  53. headTopData.handleChangeModeType('evaluating');
  54. }
  55. }
  56. );
  57. onMounted(() => {
  58. getWorkDetail();
  59. });
  60. return () => (
  61. <>
  62. {/* 课后训练作业 */}
  63. {data.trainingType === "PRACTICE" && <WorkHome ref={workHomeRef} workeData={data.worke} />}
  64. {/* 评测作业 */}
  65. {data.trainingType === "EVALUATION" && (
  66. <WorkEaluating ref={workEvaluatRef} workeData={data.worke} />
  67. )}
  68. </>
  69. );
  70. },
  71. });