Kaynağa Gözat

新增高抬腿

linxuxiang 4 ay önce
ebeveyn
işleme
7c199281ff

BIN
public/static/images/tips/highknees.png


BIN
public/static/images/train/highknees.png


BIN
src/assets/images/analysis/highknees.png


+ 2 - 3
src/components/AddItemWindow/index.vue

@@ -68,13 +68,13 @@
               </div>
             </div>
             <div class="switchList">
-              <div class="li" v-if="['jumprope', 'jumpingjack', 'situp'].includes(project.key)">
+              <div class="li" v-if="['jumprope', 'jumpingjack', 'highknees', 'situp'].includes(project.key)">
                 <span>时长</span>
                 <el-select v-model="optionForm.time" :popper-append-to-body="false" placeholder="请选择">
                   <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" />
                 </el-select>
               </div>
-              <div class="li" v-if="['jumprope', 'jumpingjack', 'situp'].includes(project.key)">
+              <div class="li" v-if="['jumprope', 'jumpingjack', 'highknees', 'situp'].includes(project.key)">
                 <span>音乐</span>
                 <el-select v-model="optionForm.music" :popper-append-to-body="false" placeholder="请选择" clearable>
                   <el-option v-for="item in musicList" :key="item.id" :label="item.name" :value="item.url" />
@@ -96,7 +96,6 @@
       </div>
     </Transition>
   </div>
-
 </template>
 <script setup lang="ts">
 import useAppStore from '@/store/modules/app';

+ 2 - 2
src/components/MultipleItem/index.vue

@@ -418,9 +418,9 @@ const getAchievement = (data: any) => {
   currentResultObj.value = data;
   //违规处理
   let arr = backReason.value;
-  if (["situp", "pullup", "sidepullup", "jumprope", "jumpingjack", "jump", "longjump", "verticaljump"]
+  if (["situp", "pullup", "sidepullup", "jumprope", "jumpingjack", "highknees", "jump", "longjump", "verticaljump"]
     .indexOf(type) > -1) {
-    if (["pullup", "situp", "jumprope", "jumpingjack"].indexOf(type) > -1) {
+    if (["pullup", "situp", "jumprope", "jumpingjack", "highknees"].indexOf(type) > -1) {
       currentResultObj.value.back_num = data?.all_failed_num;
     }
     if (type === "sidepullup") {

+ 3 - 3
src/components/OptionWindow/index.vue

@@ -69,14 +69,14 @@
             </div>
             <div class="switchList">
               <div class="li"
-                v-if="['situp', 'jumprope', 'jumpingjack', 'footballv1', 'basketballv1', 'volleyball', 'volleyballv1', 'pingpong'].includes(project.key)">
+                v-if="['situp', 'jumprope', 'jumpingjack', 'highknees', 'footballv1', 'basketballv1', 'volleyball', 'volleyballv1', 'pingpong'].includes(project.key)">
                 <span>时长</span>
                 <el-select v-model="optionForm.time" :popper-append-to-body="false" placeholder="请选择">
                   <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" />
                 </el-select>
               </div>
               <div class="li"
-                v-if="['situp', 'jumprope', 'jumpingjack', 'footballv1', 'basketballv1', 'volleyball', 'volleyballv1', 'pingpong'].includes(project.key)">
+                v-if="['situp', 'jumprope', 'jumpingjack', 'highknees', 'footballv1', 'basketballv1', 'volleyball', 'volleyballv1', 'pingpong'].includes(project.key)">
                 <span>音乐</span>
                 <el-select v-model="optionForm.music" :popper-append-to-body="false" placeholder="请选择" clearable>
                   <el-option v-for="item in musicList" :key="item.id" :label="item.name" :value="item.url" />
@@ -171,7 +171,7 @@ const open = async (data: any) => {
   await getMusic();
   project.value = data;
   chooseArea.value = [];
-  if (['situp', 'jumprope', 'jumpingjack', 'footballv1', 'basketballv1', 'volleyball', 'volleyballv1', 'pingpong'].includes(project.value.key)) {
+  if (['situp', 'jumprope', 'jumpingjack', 'highknees', 'footballv1', 'basketballv1', 'volleyball', 'volleyballv1', 'pingpong'].includes(project.value.key)) {
     optionForm.value.gesture = true;
     optionForm.value.time = 60; //默认60秒
     if (musicList.value.length > 0) {

+ 2 - 2
src/components/ReportWindow/index.vue

@@ -48,7 +48,7 @@
                 </div>
               </div>
               <!--图形开始-->
-              <div v-if="['situp', 'pullup', 'sidepullup', 'jumprope'].includes(type)">
+              <div v-if="['situp', 'pullup', 'sidepullup', 'jumprope', 'jumpingjack', 'highknees'].includes(type)">
                 <div class="echartsBox" ref="echartsRef"></div>
               </div>
               <!--图形结束-->
@@ -293,7 +293,7 @@ const inits = () => {
         }
       },
       {
-        name: ['jumprope'].includes(type.value) ? '中断' : '犯规',
+        name: ['jumprope','jumpingjack','highknees'].includes(type.value) ? '中断' : '犯规',
         type: 'line',
         lineStyle: {
           type: 'solid',

+ 5 - 0
src/utils/dataDictionary.ts

@@ -9,6 +9,7 @@ let data = {
     sidepullup: '斜身引体',
     jumprope: '跳绳',
     jumpingjack: '开合跳',
+    highknees: '高抬腿',
     solidball: '实心球',
     shotput: '铅球',
     run50: '50米',
@@ -69,6 +70,7 @@ let data = {
     sidepullup: '个',
     jumprope: '个',
     jumpingjack: '个',
+    highknees: '个',
     skiprope: '个',
     volleyball: '个',
     volleyballv1: '个',
@@ -98,6 +100,7 @@ let data = {
     run1000: 'time',
     jumprope: 'counts',
     jumpingjack: 'counts',
+    highknees: 'counts',
     skiprope: 'counts',
     heartbeat: 'counts',
     bmi: 'bmi',
@@ -221,6 +224,8 @@ let data = {
       '<p><span style="color: #13ED84">上身:</span>要保持正直,目视前方一米处。采取单脚交替跳时,上体自然下压,尽可能的做到“挺胸、塌腰、翘臀”。</p><p><span style="color: #13ED84">摇绳:</span>大臂要贴紧身体,小臂放在大腿侧前方。利用手腕“外旋内转“摇绳,可提高摇绳速度。摇绳时,切忌手腕外翻掌心朝前,容易导致小臂外侧肌肉紧张酸痛,影响摇绳速度。</p><p><span style="color: #13ED84">脚落地:</span>脚在落地时切忌前后移动,用前脚掌着地,以减少失误。</p>',
     jumpingjack:
       '<p><span style="color: #13ED84">站姿准备:</span>开始时,双脚并拢,脚尖微微向前,双臂自然下垂,身体保持直立。</p><p><span style="color: #13ED84">双手上举:</span>双手从身体两侧向上举至头顶,掌心相对,手臂伸直。</p><p><span style="color: #13ED84">跳起:</span>用脚尖发力,向上跳起,同时双臂从两侧打开至头顶并伸直。</p><p><span style="color: #13ED84">落地:</span>落地时,用前脚掌着地,膝盖微屈,以吸收冲击力。</p>',
+    highknees:
+      '<p><span style="color: #13ED84">上身:</span>以身体直立,保持身体重心不前倾和后仰。肩膀时刻放松,双臂摆动要与抬腿协调。</p><p><span style="color: #13ED84">抬腿:</span>屈膝用力上顶,大腿抬至臀部高度位置,支撑腿保持伸直,换脚时要用前脚掌着地,同时学会利用反弹力量,使动作有节奏地进行。</p><p><span style="color: #13ED84">呼吸:</span>呼吸要自然,可采用三步一吸三步一呼。</p>',
     solidball:
       '<p><span style="color: #13ED84">持球:</span>两手用手指包球,两手心空出,大拇指交叉或并排放在球底,小指放在球的两侧,其余六手指对称来托球。</p><p><span style="color: #13ED84">预摆:</span>球依次是从前下方经过胸前至头后上方,充分挺宽、展肩,身体形成反弓形,同时吸气。</p><p><span style="color: #13ED84">投掷:</span>预摆结束时两手握球用力积极从后上方向前上方前摆,此时的动作特点是蹬腿、送髋、腰腹急震用力,两臂用力前摆并向前拨指和腕,旨在提高手臂的鞭打速度。</p>',
     shotput:

+ 3 - 3
src/views/train/multiple.vue

@@ -4,7 +4,7 @@
     <Transition :enter-active-class="proxy?.animate.dialog.enter" :leave-active-class="proxy?.animate.dialog.leave">
       <div class="time"
         :class="{ 'time1': styleType == 1, 'time2': styleType == 2, 'time3': styleType == 3, 'time4': styleType == 4, }"
-        v-show="(needStart && [42].includes(examState)) || (['jumprope', 'jumpingjack', 'situp'].includes(parameter.project) && [42].includes(examState))">
+        v-show="(needStart && [42].includes(examState)) || (['jumprope', 'jumpingjack', 'highknees', 'situp'].includes(parameter.project) && [42].includes(examState))">
         {{
           time.countdownNum
         }}</div>
@@ -34,7 +34,7 @@
       <template v-else>
         <template v-if="examState == 43">
           <div class="btn startBtn" @click="getReady"
-            v-if="['jumprope', 'jumpingjack', 'situp'].includes(parameter.project)">开始测试</div>
+            v-if="['jumprope', 'jumpingjack', 'highknees', 'situp'].includes(parameter.project)">开始测试</div>
           <div class="btn startBtn" @click="getStartOneTest" v-else>开始测试</div>
         </template>
       </template>
@@ -849,7 +849,7 @@ onBeforeMount(() => {
     styleType.value = 4;
   }
   //需要开始按钮的项目
-  let myList = ['jumprope', 'jumpingjack', 'situp'];
+  let myList = ['jumprope', 'jumpingjack', 'highknees', 'situp'];
   if (myList.includes(project) && styleType.value == 3) {
     needStart.value = true;
   }

+ 8 - 7
src/views/train/test.vue

@@ -44,7 +44,8 @@
                   <div class="value">{{ currentResultObj.score || "" }}</div>
                 </div>
                 <div class="violation">
-                  <div class="lable">{{ ['jumprope'].includes(parameter.project) ? '中断' : '犯规' }}</div>
+                  <div class="lable">{{ ['jumprope', 'jumpingjack', 'highknees'].includes(parameter.project) ? '中断' : '犯规'
+                  }}</div>
                   <div class="value">{{ currentResultObj.back_num || 0 }}</div>
                 </div>
               </div>
@@ -65,7 +66,7 @@
               </div>
             </div>
 
-            <div v-show="examState == 43 && !time.ready && readyState">
+            <div v-show="examState == 43 && faceCheckStu.student_id && !time.ready && readyState">
               <div class="readyBoxBefore">
                 <div class="item" v-if="parameter.handcontroller">
                   <div><img src="@/assets/images/test/jushou.png" /></div>
@@ -82,7 +83,7 @@
               </div>
             </div>
 
-            <div class="btn" @click="getReady" v-if="needStart && examState == 43 && !time.ready && readyState">开 始
+            <div class="btn" @click="getReady" v-if="needStart && examState == 43 && faceCheckStu.student_id && !time.ready && readyState">开 始
             </div>
             <!-- <div v-if="needStart"> -->
             <!-- <div class="btn" @click="getOpenOneTestAndStartFace" v-if="examState < 41">开始识别</div> -->
@@ -580,9 +581,9 @@ const getAchievement = (data: any) => {
   currentResultObj.value = data;
   //违规处理
   let arr = backReason.value;
-  if (["situp", "pullup", "sidepullup", "jumprope", "jumpingjack", "jump", "longjump", "verticaljump"]
+  if (["situp", "pullup", "sidepullup", "jumprope", "jumpingjack", "highknees", "jump", "longjump", "verticaljump"]
     .indexOf(type) > -1) {
-    if (["pullup", "situp", "jumprope", "jumpingjack"].indexOf(type) > -1) {
+    if (["pullup", "situp", "jumprope", "jumpingjack", "highknees"].indexOf(type) > -1) {
       currentResultObj.value.back_num = data?.all_failed_num;
     }
     if (type === "sidepullup") {
@@ -951,7 +952,7 @@ watch(() => currentResultObj.value, (newData: any, oldData: any) => {
     speckText(newData.count);
   }
   if (
-    ["situp", "sidepullup", "jumprope", "jumpingjack"].includes(project) &&
+    ["situp", "sidepullup", "jumprope", "jumpingjack", "highknees"].includes(project) &&
     newData.count > 0 &&
     newData.count % 10 == 0 &&
     oldData.back_num == oldData.back_num
@@ -977,7 +978,7 @@ onBeforeMount(() => {
     parameter.value.gesture = false
   }
   //需要开始按钮的项目
-  let myList = ['situp', 'jumprope', 'jumpingjack', 'footballv1', 'basketballv1', 'pingpong'];
+  let myList = ['situp', 'jumprope', 'jumpingjack', 'highknees', 'footballv1', 'basketballv1', 'pingpong'];
   if (myList.includes(project)) {
     needStart.value = true;
   }