林旭祥 6 місяців тому
батько
коміт
71fd107d4e

+ 9 - 1
src/api/module/analysis.ts

@@ -17,7 +17,15 @@ export default {
     });
   },
 
-  examDetails: (data: any) => {
+  trainExamDetails: (data: any) => {
+    return req({
+      url: '/report/onev2',
+      method: 'get',
+      data: data
+    });
+  },
+
+  testExamDetails: (data: any) => {
     return req({
       url: '/task/indivi_exam_detail',
       method: 'get',

+ 1 - 3
src/views/analysis/components/pullUp.vue

@@ -285,9 +285,7 @@ onBeforeMount(() => {
 })
 
 onMounted(() => {
-  nextTick(() => {
-    faliChart();
-  })
+  faliChart();
 })
 </script>
 

+ 1 - 3
src/views/analysis/components/ropeSkipping.vue

@@ -175,9 +175,7 @@ onBeforeMount(() => {
 })
 
 onMounted(() => {
-  nextTick(() => {
-    faliChart();
-  })
+  faliChart();
 })
 </script>
 

+ 3 - 5
src/views/analysis/components/run.vue

@@ -301,11 +301,9 @@ onBeforeMount(() => {
 })
 
 onMounted(() => {
-  nextTick(() => {
-    speedChart();
-    strideChart();
-    stepsChart();
-  })
+  speedChart();
+  strideChart();
+  stepsChart();
 })
 </script>
 

+ 3 - 5
src/views/analysis/components/runa.vue

@@ -353,11 +353,9 @@ onBeforeMount(() => {
 })
 
 onMounted(() => {
-  nextTick(() => {
-    speedChart();
-    strideChart();
-    stepsChart();
-  })
+  speedChart();
+  strideChart();
+  stepsChart();
 })
 </script>
 

+ 0 - 2
src/views/analysis/components/shotPut.vue

@@ -164,7 +164,5 @@ onBeforeMount(() => {
 })
 </script>
 
-<style lang="scss" scoped></style>
-
 <style lang="scss" scoped>
 </style>

+ 1 - 3
src/views/analysis/components/sidePullUp.vue

@@ -282,9 +282,7 @@ onBeforeMount(() => {
 })
 
 onMounted(() => {
-  nextTick(() => {
-    faliChart();
-  })
+  faliChart();
 })
 </script>
 

+ 1 - 3
src/views/analysis/components/sitUp.vue

@@ -316,9 +316,7 @@ onBeforeMount(() => {
 })
 
 onMounted(() => {
-  nextTick(() => {
-    faliChart();
-  })
+  faliChart();
 })
 </script>
 

+ 83 - 52
src/views/analysis/detail.vue

@@ -30,12 +30,12 @@
               src="@/assets/images/analysis/run1000.png" />
             <img v-if="query.exam_name == 'basketball' ||
               query.exam_name == 'basketballv1'
-              " src="@/assets/images/analysis/basketball.png" />
+            " src="@/assets/images/analysis/basketball.png" />
             <img v-if="query.exam_name == 'football' || query.exam_name == 'footballv1'
-              " src="@/assets/images/analysis/football.png" />
+            " src="@/assets/images/analysis/football.png" />
             <img v-if="query.exam_name == 'badminton' ||
               query.exam_name == 'badmintonv1'
-              " src="@/assets/images/analysis/badminton.png" />
+            " src="@/assets/images/analysis/badminton.png" />
             <img v-if="query.exam_name == 'pingpong'" src="@/assets/images/analysis/pingpong.png" />
             <img v-if="query.exam_name == 'volleyball'" src="@/assets/images/analysis/volleyball.png" />
             <img v-if="query.exam_name == 'solidball'" src="@/assets/images/analysis/solidBall.png" />
@@ -78,14 +78,14 @@
     <div class="main-b" :class="{ 'main-b-margintop': details.score == 0 }">
       <div class="main-b-title">分数评级</div>
       <div class="main-b-con">
-        <div class="drawingItem" v-if="JSON.stringify(details.std) != '{}' && details.std.scores != undefined">
+        <div class="drawingItem" v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined">
           <span class="a" :style="{ width: details.std.scores[0] * 100 + '%' }">不及格</span><span class="b" :style="{
             width:
               (details.std.scores[1] - details.std.scores[0]) * 100 + '%',
           }">及格</span><span class="c" :style="{
-  width:
-    (details.std.scores[2] - details.std.scores[1]) * 100 + '%',
-}">良好</span><span class="d" :style="{
+            width:
+              (details.std.scores[2] - details.std.scores[1]) * 100 + '%',
+          }">良好</span><span class="d" :style="{
   width:
     (details.std.scores[3] - details.std.scores[2]) * 100 + '%',
 }">优秀</span>
@@ -93,7 +93,7 @@
         <div class="drawingItem" v-else>
           <span class="a">不及格</span><span class="b">及格</span><span class="c">良好</span><span class="d">优秀</span>
         </div>
-        <div v-if="JSON.stringify(details.std) != '{}' && details.std.scores != undefined">
+        <div v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined">
           <i class="branchA scoreType">成绩</i>
           <i class="branchB scoreType" :style="{
             left: (details.std.scores[0] / details.std.scores[3]) * 100 + '%',
@@ -108,7 +108,7 @@
             left: (details.std.scores[3] / details.std.scores[3]) * 100 + '%',
           }">{{ details.std.values[3] }}</i>
         </div>
-        <div v-if="JSON.stringify(details.std) != '{}' && details.std.scores != undefined">
+        <div v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined">
           <i class="branchA">分数</i>
           <i class="branchB" :style="{
             left: (details.std.scores[0] / details.std.scores[3]) * 100 + '%',
@@ -130,7 +130,7 @@
           <i class="branchD">90</i>
           <i class="branchE">100</i>
         </div>
-        <div v-if="JSON.stringify(details.std) != '{}' && details.std.scores != undefined" class="currentDian" :style="{
+        <div v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined" class="currentDian" :style="{
           left:
             (details.score / details.std.scores[3] > 1
               ? 1
@@ -150,30 +150,30 @@
     <div class="main-c">
       <!--立定跳远-->
       <Jump :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['jump'].includes(query.exam_name)
-        " />
+      " />
       <!--实心球-->
       <SolidBall :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['solidball'].includes(query.exam_name)
-        " />
+      " />
       <!--脚环跑步-->
       <Runa :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['runa800', 'runa1000'].includes(query.exam_name)
-        " />
+      " />
       <!--跑步-->
       <Run :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['run50', 'run60', 'run100', 'run200', 'run400', 'run800', 'run1000', 'run15x4', 'run50x8'].includes(query.exam_name)
-        " />
+      " />
       <!--仰卧起坐-->
       <SitUp :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['situp'].includes(query.exam_name)
-        " />
+      " />
       <!--引体向上-->
       <PullUp :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['pullup'].includes(query.exam_name)
-        " />
+      " />
       <!--跳绳类-->
       <RopeSkipping :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['jumprope', 'skiprope'].includes(query.exam_name)
-        " />
+      " />
       <!--球类-->
       <Balls :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         [
@@ -186,21 +186,21 @@
           'badminton',
           'pingpong',
         ].includes(query.exam_name)
-        " />
+      " />
       <!--斜身引体-->
       <SidePullUp :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['sidepullup'].includes(query.exam_name)
-        " />
+      " />
       <!--三级蛙跳-->
       <TriJump :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['trijump'].includes(query.exam_name)
-        " />
+      " />
       <!--铅球-->
       <ShotPut :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
         ['shotput'].includes(query.exam_name)
-        " />
+      " />
       <!--急行跳远-->
       <LongJump :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['longjump'].includes(query.exam_name)
-        " />
+      " />
       <div class="tip">
         <!-- 温馨提示:<br />
         因为光线或人员遮挡等环境问题,导致测试数据偶尔有偏差,最终解释权归卓浦士科技所有。<br />客服热线:<a
@@ -236,45 +236,70 @@ const data = reactive<any>({
 const { query, details, gradeType } = toRefs(data);
 
 /**
- * 项目详情
+ * 测试详情
 */
-const getDetails = () => {
+const getTestExamDetails = () => {
+  let params = {
+    test_key: query.value.test_key,
+    stu_key: query.value.stu_key,
+    exam_name: query.value.exam_name
+  };
+  proxy?.$http.analysis.testExamDetails(params)
+    .then((res: any) => {
+      //console.log(res);
+      details.value = res.data || {};
+      getDetails();
+    })
+    .catch(() => { });
+};
+
+/**
+ * 上课详情
+*/
+const getTrainExamDetails = () => {
   let params = {
     exam_name: query.value.exam_name,
     student_id: query.value.student_id,
-    result_id: query.value.result_id
+    result_ids: query.value.result_ids
   };
-  proxy?.$http.common.reportDetails(params)
+  proxy?.$http.analysis.trainExamDetails(params)
     .then((res: any) => {
       //console.log(res);
       details.value = res.data || {};
-      let obj = gradeType.value.find((item: any) => {
-        return item.value == details.value.grade;
-      });
-      details.value.grade_name = obj.name;
-      details.value.unit = dic.project.unit[query.value.exam_name];
-      details.value.examsName = dic.project[query.value.exam_name];
-      details.value.image_url_list = details.value.image_url
-        ? details.value.image_url.split("  ")
-        : [];
-      if (['trijump', 'solidball', 'shotput', 'longjump'].includes(query.value.exam_name)) {
-        details.value.result = Number(details.value.result / 100).toFixed(2);
-      } else {
-        details.value.result =
-          String(details.value.result).indexOf(".") == -1
-            ? details.value.result
-            : Number(details.value.result).toFixed(1);
-      }
-      if (
-        ["runa800", "runa1000"].includes(query.value.exam_name) &&
-        details.value.result == 0
-      ) {
-        proxy?.$modal.alertError(`无数据原因:${details.value.comments}`);
-      }
+      getDetails();
     })
     .catch(() => { });
 };
 
+/**
+ * 重组详情
+*/
+const getDetails = () => {
+  let obj = gradeType.value.find((item: any) => {
+    return item.value == details.value.grade;
+  });
+  details.value.grade_name = obj.name;
+  details.value.unit = dic.project.unit[query.value.exam_name];
+  details.value.examsName = dic.project[query.value.exam_name];
+  details.value.image_url_list = details.value.image_url
+    ? details.value.image_url.split("  ")
+    : [];
+  if (['trijump', 'solidball', 'shotput', 'longjump'].includes(query.value.exam_name)) {
+    details.value.result = Number(details.value.result / 100).toFixed(2);
+  } else {
+    details.value.result =
+      String(details.value.result).indexOf(".") == -1
+        ? details.value.result
+        : Number(details.value.result).toFixed(1);
+  }
+  if (
+    ["runa800", "runa1000"].includes(query.value.exam_name) &&
+    details.value.result == 0
+  ) {
+    proxy?.$modal.alertError(`无数据原因:${details.value.comments}`);
+  }
+};
+
 onBeforeMount(() => {
   const myInfo: any = localStorage.getItem("userInfo");
   const userinfo = JSON.parse(myInfo)
@@ -283,11 +308,16 @@ onBeforeMount(() => {
   })
   gradeType.value = obj.child || [];
   query.value = route.query;
-
+  if (query.value.test_key) {
+    //测试
+    getTestExamDetails();
+  } else {
+    //上课
+    getTrainExamDetails();
+  }
 })
 
 onMounted(() => {
-  getDetails();
 })
 
 </script>
@@ -298,7 +328,8 @@ onMounted(() => {
     font-size: calc(1280px / 106);
   }
 }
-.main {
+
+::v-deep(.main) {
   background: #efefef;
   padding-bottom: 0.65rem;
   min-height: calc(100vh - 0.65rem);

+ 1 - 1
src/views/analysis/index.vue

@@ -100,7 +100,7 @@ const openReport = (data: any) => {
   let params = {
     exam_name: data.exam_name,
     student_id: data.student_id,
-    result_id: data.result_id,
+    result_ids: data.result_id,
   }
   router.push({
     path: '/analysis/detail', query: params