소스 검색

评测报告

skyblued 2 년 전
부모
커밋
1d00eef70a

+ 52 - 38
colexiu-report.html

@@ -1,5 +1,6 @@
 <!DOCTYPE html>
 <html lang="ZH-cn">
+
 <head>
   <meta charset="UTF-8">
   <link rel="icon" href="/favicon.ico" />
@@ -9,52 +10,63 @@
   <script src="/helpers/lottie.min.js"></script>
   <link href="/vant.css" rel="stylesheet">
   <script>
-    function getBroswer(){
+    function getBroswer() {
       var Sys = {};
       var ua = navigator.userAgent.toLowerCase();
       var s;
       (s = ua.match(/edge\/([\d.]+)/)) ? Sys.edge = s[1] :
-      (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :
-      (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
-      (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
-      (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
-      (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
-      (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
+        (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :
+          (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
+            (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
+              (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
+                (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
+                  (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
 
-      if (Sys.edge) return { broswer : "Edge", version : Sys.edge };
-      if (Sys.ie) return { broswer : "IE", version : Sys.ie };
-      if (Sys.firefox) return { broswer : "Firefox", version : Sys.firefox };
-      if (Sys.chrome) return { broswer : "Chrome", version : Sys.chrome };
-      if (Sys.opera) return { broswer : "Opera", version : Sys.opera };
-      if (Sys.safari) return { broswer : "Safari", version : Sys.safari };
+      if (Sys.edge) return { broswer: "Edge", version: Sys.edge };
+      if (Sys.ie) return { broswer: "IE", version: Sys.ie };
+      if (Sys.firefox) return { broswer: "Firefox", version: Sys.firefox };
+      if (Sys.chrome) return { broswer: "Chrome", version: Sys.chrome };
+      if (Sys.opera) return { broswer: "Opera", version: Sys.opera };
+      if (Sys.safari) return { broswer: "Safari", version: Sys.safari };
 
-      return { broswer : "", version : "0" };
-  }
-  var broswer = getBroswer();
-  window.addEventListener('DOMContentLoaded', function() {
-    if (broswer.broswer === 'Chrome' && parseFloat(broswer.version) <= 50) {
-      document.getElementById('update').className = 'show'
-      document.getElementById('loading').className = ''
+      return { broswer: "", version: "0" };
     }
-  })
-  // 获取token
-  const instance = window.ORCHESTRA || window.webkit?.messageHandlers?.ORCHESTRA
-    if (instance) {
-      const sendData = { api: 'getToken', content: { uuid: '' + Date.now() + Math.floor(Math.random() * 1000000) } }
-      function setToken(evt) {
-        window.removeEventListener('message', setToken)
-        try {
-          const data = typeof evt.data === "object" ? evt.data : JSON.parse(evt.data)
-          if (data.api === 'getToken') {
-            const token = `${data.content.tokenType} ${data.content.accessToken}`
-            sessionStorage.setItem('Authorization', token)
-          }
-
-        } catch (error) { }
+    var broswer = getBroswer();
+    window.addEventListener('DOMContentLoaded', function () {
+      if (broswer.broswer === 'Chrome' && parseFloat(broswer.version) <= 50) {
+        document.getElementById('update').className = 'show'
+        document.getElementById('loading').className = ''
+      }
+    })
+    function _postMessage(data, callback) {
+      const instance = window.ORCHESTRA || (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.ORCHESTRA)
+      if (instance) {
+        const uuid = '' + Date.now() + Math.floor(Math.random() * 1000000)
+        data.content = data.content ? { ...data.content, uuid } : { uuid }
+        console.log('h5发送:', JSON.stringify(data))
+        instance.postMessage(JSON.stringify(data))
       }
-      window.addEventListener('message', setToken)
-      instance.postMessage(JSON.stringify(sendData))
     }
+    // 横屏
+    _postMessage({
+      api: 'setRequestedOrientation',
+      content: {
+        orientation: 0
+      }
+    })
+    // 安卓的状态栏
+    _postMessage({
+      api: 'setStatusBarVisibility',
+      content: {
+        isVisibility: 0
+      }
+    })
+    _postMessage({
+      api: 'setTitleBarVisibility',
+      content: {
+        status: 0
+      }
+    })
   </script>
   <style>
     #lottieWeb {
@@ -70,6 +82,7 @@
     }
   </style>
 </head>
+
 <body>
   <div id="app"></div>
   <div id="lottieWeb"></div>
@@ -93,4 +106,5 @@
   </script>
   <script type="module" src="/src/subpages/colexiu-report/main.ts"></script>
 </body>
-</html>
+
+</html>

+ 4 - 4
src/subpages/colexiu-report/header/index.tsx

@@ -112,7 +112,7 @@ export default defineComponent({
                     text: () => <span>评测分数</span>,
                   }}
                 />
-                <GridItem
+                {detailState.isPercussion ? null : <GridItem
                   class="van-hairline--right"
                   onClick={() => {
                     active.value = 'pitch'
@@ -122,7 +122,7 @@ export default defineComponent({
                     icon: () => <span style={{ color: 'var(--van-primary-color)' }}>{record.value?.intonation}分</span>,
                     text: () => <span class={['switch', { active: active.value === 'pitch' }]}>音准</span>,
                   }}
-                />
+                />}
                 <GridItem
                   class="van-hairline--right"
                   onClick={() => {
@@ -134,7 +134,7 @@ export default defineComponent({
                     text: () => <span class={['switch', { active: active.value === 'rhythm' }]}>节奏</span>,
                   }}
                 />
-                <GridItem
+                {detailState.isPercussion ? null : <GridItem
                   onClick={() => {
                     active.value = 'completion'
                     emit('activeChange', 'completion')
@@ -143,7 +143,7 @@ export default defineComponent({
                     icon: () => <span style={{ color: '#4EA1FF' }}>{record.value?.integrity}分</span>,
                     text: () => <span class={['switch', { active: active.value === 'completion' }]}>完成度</span>,
                   }}
-                />
+                />}
               </Grid>
             ) : null}
             <Grid columnNum={3} class={styles.btns}>

+ 14 - 12
src/subpages/colexiu-report/index.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, onMounted, Ref, ref, watch } from 'vue'
+import { defineComponent, onMounted, Ref, ref, Transition, watch } from 'vue'
 import request from '/src/helpers/request'
 import originRequest from 'umi-request'
 import MusicSheet from '/src/music-sheet'
@@ -72,6 +72,7 @@ const useDetail = (id: number | string): [Ref<ShaeetStatusType>, Ref<MusicSheelD
       const res = await request.get(`/musicSheet/detail/${record.value?.musicalNotesPlayStats.examSongId}`)
       data.value = res.data
       detailState.partIndex = recordRes.data.partIndex || 0
+      detailState.isPercussion = res.data?.background?.[detailState.partIndex]?.musicSubject == 1
       status.value = 'success'
     } catch (error) {
       status.value = 'error'
@@ -132,7 +133,6 @@ export default defineComponent({
 
     const setViewColor = () => {
       clearViewColor()
-      renderLoading.value = false
       for (const note of filterNotes()) {
         const active = allNote.value[note.musicalNotesIndex]
         setTimeout(() => {
@@ -258,16 +258,18 @@ export default defineComponent({
             SettingState.sett.camera && 'openCamera',
           ]}
         >
-          <Header
-            className={styles.header}
-            detail={detail.value}
-            record={record}
-            ref={headerRef}
-            style={{
-              paddingLeft: detailState.isSpecialShapedScreen ? detailState.notchHeight / 2 + 'px' : 'auto',
-            }}
-            onActiveChange={() => setViewColor()}
-          />
+          {!renderLoading.value && (
+            <Header
+              className={styles.header}
+              detail={detail.value}
+              record={record}
+              ref={headerRef}
+              style={{
+                paddingLeft: detailState.isSpecialShapedScreen ? detailState.notchHeight / 2 + 'px' : 'auto',
+              }}
+              onActiveChange={() => setViewColor()}
+            />
+          )}
           <div
             id="colexiu-detail-music-sheet"
             class={[styles.musicSheet, detailStyles.musicSheet]}

+ 1 - 13
src/subpages/colexiu-report/main.ts

@@ -1,5 +1,4 @@
 import { createApp } from 'vue'
-import { close } from '/src/helpers/loading'
 import { formatZoom } from '/src/helpers/utils'
 import '../colexiu/lib-flexible'
 import 'animate.css'
@@ -7,17 +6,6 @@ import '../colexiu/app.css'
 import '../../base.css'
 
 import App from './index'
-import { promisefiyPostMessage } from '/src/helpers/native-message'
+import { postMessage } from '/src/helpers/native-message'
 
-// 获取token
-promisefiyPostMessage({ api: 'getToken' }).then((res: any) => {
-  console.log('获取token', res.content)
-  if (res?.content?.accessToken) {
-    sessionStorage.setItem('Authorization', res.content.tokenType + ' ' + res.content.accessToken)
-  }
-})
-
-document.body.style.setProperty('--osdm-zoom', '' + formatZoom())
-
-close()
 createApp(App).mount('#app')

+ 6 - 0
src/subpages/colexiu/tips/index.tsx

@@ -5,6 +5,7 @@ import styles from './index.module.less'
 import Tip1 from './tip1'
 import Tip2 from './tip2'
 import { modelType } from '../buttons'
+import { useOriginSearch } from '../uses'
 
 export default defineComponent({
   name: 'tips-step',
@@ -23,6 +24,11 @@ export default defineComponent({
     }
     /** 触发器 */
     const handleChange = () => {
+      const search = useOriginSearch()
+      // 如果为课后作业 和 单元测验 不引导
+      if (search.questionId || search.lessonTrainingId) {
+        return
+      }
       const isFirstTip = localStorage.getItem('isFirstTip')
       const isFirstModel = localStorage.getItem('isFirstModel')
       if (modelType.value == 'init' && !isFirstTip) {