index.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. // 手动提交评测作业
  33. export const selfSubmitWorkHome = () => {
  34. workEvaluatRef.value?.addEvaluatingWorkRecored(evaluatingData.resultData);
  35. }
  36. export default defineComponent({
  37. name: "workIndex",
  38. setup(props) {
  39. const query = getQuery();
  40. const setModelType = () => {
  41. if (!data.trainingType) return;
  42. const type = data.trainingType === "PRACTICE" ? "practise" : "evaluating";
  43. headTopData.handleChangeModeType(type);
  44. };
  45. const getWorkDetail = async () => {
  46. const res = await api_lessonTrainingTrainingStudentDetail(query.workRecord);
  47. if (res?.code === 200) {
  48. data.trainingType = res.data.trainingType;
  49. data.worke = res.data;
  50. // 评测作业是否已经合格
  51. if (data.trainingType === 'EVALUATION' && JSON.parse(res.data?.trainingContent)) {
  52. state.isWorkDone = res.data.trainingTimes >= JSON.parse(res.data.trainingContent).trainingTimes
  53. }
  54. setModelType();
  55. }
  56. };
  57. // 评测作业监听评测资源加载完成
  58. watch(
  59. () => evaluatingData.jsonLoadDone,
  60. () => {
  61. if (data.trainingType === "EVALUATION" && evaluatingData.jsonLoading && evaluatingData.jsonLoadDone) {
  62. headTopData.handleChangeModeType('evaluating');
  63. }
  64. }
  65. );
  66. onMounted(() => {
  67. getWorkDetail();
  68. });
  69. return () => (
  70. <>
  71. {/* 课后训练作业 */}
  72. {data.trainingType === "PRACTICE" && <WorkHome ref={workHomeRef} workeData={data.worke} />}
  73. {/* 评测作业 */}
  74. {data.trainingType === "EVALUATION" && (
  75. <WorkEaluating ref={workEvaluatRef} workeData={data.worke} />
  76. )}
  77. </>
  78. );
  79. },
  80. });