JutarryWu 7 сар өмнө
parent
commit
f6867d40e2
2 өөрчлөгдсөн 68 нэмэгдсэн , 25 устгасан
  1. 11 24
      .idea/workspace.xml
  2. 57 1
      src/utils/index.ts

+ 11 - 24
.idea/workspace.xml

@@ -4,30 +4,9 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="b9dc0b93-aea2-4509-84d8-c1e57bc059b1" name="更改" comment="修改后台请求接口路径及全局样式">
-      <change afterPath="$PROJECT_DIR$/src/assets/styles/globals.scss" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.env.development" beforeDir="false" afterPath="$PROJECT_DIR$/.env.development" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.env.production" beforeDir="false" afterPath="$PROJECT_DIR$/.env.production" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.env.test" beforeDir="false" afterPath="$PROJECT_DIR$/.env.test" afterDir="false" />
+    <list default="true" id="b9dc0b93-aea2-4509-84d8-c1e57bc059b1" name="更改" comment="">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/api/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/api/index.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/assets/styles/globals.css" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/components/VoiceImp/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/VoiceImp/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/components/WuIsCorrect/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/WuIsCorrect/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/router/guards.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/router/guards.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/utils/request.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/request.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/BreadthTraining/BTRandomPentagram.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/BreadthTraining/BTRandomPentagram.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/BreadthTraining/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/BreadthTraining/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/ContinueAddition/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/ContinueAddition/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PictureNaming/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PictureNaming/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/components/PPCountDown/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/components/PPCountDown/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/components/PicturePuzzleChild/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/components/PicturePuzzleChild/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/cocos/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/cocos/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/main/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/main/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/spatialOrientationAbility/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/spatialOrientationAbility/index.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/vite.config.ts" beforeDir="false" afterPath="$PROJECT_DIR$/vite.config.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/index.ts" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -410,7 +389,15 @@
       <option name="project" value="LOCAL" />
       <updated>1726737001708</updated>
     </task>
-    <option name="localTasksCounter" value="31" />
+    <task id="LOCAL-00031" summary="修改后台请求接口路径及全局样式">
+      <option name="closed" value="true" />
+      <created>1726738052902</created>
+      <option name="number" value="00031" />
+      <option name="presentableId" value="LOCAL-00031" />
+      <option name="project" value="LOCAL" />
+      <updated>1726738052902</updated>
+    </task>
+    <option name="localTasksCounter" value="32" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">

+ 57 - 1
src/utils/index.ts

@@ -2,7 +2,7 @@ function isObject(value: any) {
   return typeof value === 'object' && !Array.isArray(value)
 }
 // 比较两个对象,并提取出不同的部分
-export function getTwoObjectDiff(originalObj: Record<string, any>, diffObj: Record<string, any>) {
+function getTwoObjectDiff(originalObj: Record<string, any>, diffObj: Record<string, any>) {
   if (!isObject(originalObj) || !isObject(diffObj)) {
     return diffObj
   }
@@ -24,3 +24,59 @@ export function getTwoObjectDiff(originalObj: Record<string, any>, diffObj: Reco
   }
   return diff
 }
+
+/**
+ * 在指定范围内生成指定数量的随机整数
+ * @param count 指定数量
+ * @param max 指定范围
+ *
+ * 示例: 生成10以内的4个随机整数
+ * let randomNumbers = generateRandomNumbers(4, 10)
+ */
+function generateRandomNumbers(count: number, max: number) {
+  const numbers = new Set()
+  while (numbers.size < count) {
+    numbers.add(Math.floor(Math.random() * max) + 1)
+  }
+  return Array.from(numbers)
+}
+
+/**
+ * 毫秒数转时分秒
+ * @param fmtSeconds
+ */
+function formatSeconds(fmtSeconds: number) {
+  const hours = Math.floor(fmtSeconds / (1000 * 60 * 60))
+  const minutes = Math.floor((fmtSeconds % (1000 * 60 * 60)) / (1000 * 60))
+  const seconds = Math.floor((fmtSeconds % (1000 * 60)) / 1000)
+
+  if (hours === 0) {
+    if (hours === 0 && minutes === 0) {
+      return `${seconds.toString().padStart(2, '0')}秒`
+    }
+    else {
+      return `${minutes.toString().padStart(2, '0')}分 ${seconds.toString().padStart(2, '0')}秒`
+    }
+  }
+  return `${hours.toString().padStart(2, '0')}时 ${minutes.toString().padStart(2, '0')}分 ${seconds.toString().padStart(2, '0')}秒`
+}
+
+function isAndroidOrIos(): 'android' | 'ios' | 'unknown' {
+  const userAgent = navigator.userAgent.toLowerCase()
+
+  if (/iphone|ipad|ipod/.test(userAgent)) {
+    return 'ios'
+  }
+  else if (/android/.test(userAgent)) {
+    return 'android'
+  }
+
+  return 'unknown'
+}
+
+export {
+  getTwoObjectDiff,
+  generateRandomNumbers,
+  formatSeconds,
+  isAndroidOrIos,
+}