From deaf39e94391ad22bf56f7d5ff94e4b5b1fec4b2 Mon Sep 17 00:00:00 2001
From: Ls <2391972606@qq.com>
Date: Thu, 26 Mar 2026 08:34:32 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
AGENTS.md | 143 +
package-lock.json | 14 +-
src/App.vue | 43 +-
src/Service/Service.ts | 20 +
src/common/Domain/Project.ts | 19 +
src/common/Unit/StorageManager.ts | 69 +
src/common/Unit/TimeFormat.ts | 22 +
src/manifest.json | 4 +-
src/pages.json | 110 +-
src/pages/index/index.vue | 400 +-
src/pages/index/user.vue | 398 +-
src/pages/userFunc/analyze.vue | 426 +
src/pages/userFunc/dataAnalyze.vue | 280 +
src/pages/userFunc/project.vue | 610 ++
src/pages/userFunc/projectList.vue | 404 +
src/pages/userFunc/segmentation.vue | 512 ++
src/pages/userFunc/set.vue | 310 +
src/pages/userFunc/setCourse.vue | 809 ++
src/pages/userFunc/student.vue | 547 ++
src/pages/userFunc/swiming.vue | 839 ++
src/static/index/Flag.png | Bin 0 -> 4544 bytes
src/static/index/pause.png | Bin 0 -> 12059 bytes
src/static/index/reflash.png | Bin 0 -> 11576 bytes
src/static/index/swiming.png | Bin 0 -> 16665 bytes
src/uni_modules/qiun-data-charts/changelog.md | 320 +
.../qiun-data-charts/qiun-data-charts.vue | 1618 ++++
.../components/qiun-error/qiun-error.vue | 46 +
.../components/qiun-loading/loading1.vue | 162 +
.../components/qiun-loading/loading2.vue | 170 +
.../components/qiun-loading/loading3.vue | 173 +
.../components/qiun-loading/loading4.vue | 222 +
.../components/qiun-loading/loading5.vue | 229 +
.../components/qiun-loading/qiun-loading.vue | 36 +
.../js_sdk/u-charts/config-echarts.js | 422 +
.../js_sdk/u-charts/config-ucharts.js | 606 ++
.../js_sdk/u-charts/readme.md | 5 +
.../js_sdk/u-charts/u-charts.js | 7706 +++++++++++++++++
.../js_sdk/u-charts/u-charts.min.js | 18 +
src/uni_modules/qiun-data-charts/license.md | 201 +
src/uni_modules/qiun-data-charts/package.json | 80 +
src/uni_modules/qiun-data-charts/readme.md | 84 +
.../static/app-plus/echarts.min.js | 23 +
.../qiun-data-charts/static/h5/echarts.min.js | 23 +
43 files changed, 18037 insertions(+), 86 deletions(-)
create mode 100644 AGENTS.md
create mode 100644 src/common/Domain/Project.ts
create mode 100644 src/common/Unit/StorageManager.ts
create mode 100644 src/common/Unit/TimeFormat.ts
create mode 100644 src/pages/userFunc/analyze.vue
create mode 100644 src/pages/userFunc/dataAnalyze.vue
create mode 100644 src/pages/userFunc/project.vue
create mode 100644 src/pages/userFunc/projectList.vue
create mode 100644 src/pages/userFunc/segmentation.vue
create mode 100644 src/pages/userFunc/set.vue
create mode 100644 src/pages/userFunc/setCourse.vue
create mode 100644 src/pages/userFunc/student.vue
create mode 100644 src/pages/userFunc/swiming.vue
create mode 100644 src/static/index/Flag.png
create mode 100644 src/static/index/pause.png
create mode 100644 src/static/index/reflash.png
create mode 100644 src/static/index/swiming.png
create mode 100644 src/uni_modules/qiun-data-charts/changelog.md
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue
create mode 100644 src/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue
create mode 100644 src/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js
create mode 100644 src/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js
create mode 100644 src/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md
create mode 100644 src/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js
create mode 100644 src/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js
create mode 100644 src/uni_modules/qiun-data-charts/license.md
create mode 100644 src/uni_modules/qiun-data-charts/package.json
create mode 100644 src/uni_modules/qiun-data-charts/readme.md
create mode 100644 src/uni_modules/qiun-data-charts/static/app-plus/echarts.min.js
create mode 100644 src/uni_modules/qiun-data-charts/static/h5/echarts.min.js
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..dec33c0
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,143 @@
+# AGENTS.md - Swimming uni-app Project
+
+## Build & Development Commands
+
+### Development Servers
+```bash
+npm run dev:h5 # Run H5 development server
+npm run dev:mp-weixin # Run WeChat mini-program development
+npm run dev:app # Run app development
+npm run dev:app-android # Run Android app development
+npm run dev:app-ios # Run iOS app development
+npm run dev:mp-alipay # Run Alipay mini-program
+npm run dev:mp-baidu # Run Baidu mini-program
+npm run dev:mp-qq # Run QQ mini-program
+npm run dev:mp-toutiao # Run Toutiao mini-program
+```
+
+### Build Commands
+```bash
+npm run build:h5 # Build for H5
+npm run build:mp-weixin # Build for WeChat mini-program
+npm run build:app # Build for app
+npm run build:app-android # Build for Android
+npm run build:app-ios # Build for iOS
+```
+
+### Type Checking
+```bash
+npm run type-check # Run TypeScript type checking (vue-tsc --noEmit)
+```
+
+### Testing
+- **Note**: No test framework configured in this project yet.
+
+## Code Style Guidelines
+
+### Imports & Path Aliases
+- Use `@/` alias for imports from `src/` directory (configured in `tsconfig.json`)
+- Example: `import { Service } from '@/Service/Service'`
+- Import Vue composition API functions from 'vue'
+- Import uni-app lifecycle hooks from `@dcloudio/uni-app`
+
+### File Structure
+```
+src/
+├── pages/ # Page components (with sub-packages)
+├── components/ # Reusable Vue components
+├── Service/ # API services and utilities
+├── common/ # Common utilities and helpers
+├── static/ # Static assets (images, etc.)
+├── types/ # TypeScript type definitions
+├── uni_modules/ # Uni-app modules
+└── colorui/ # ColorUI CSS framework
+```
+
+### Naming Conventions
+- **Files**: PascalCase for components (e.g., `ImageCropper.vue`), camelCase for utilities
+- **Components**: PascalCase for component names
+- **Variables**: camelCase for local variables and functions
+- **Constants**: UPPER_SNAKE_CASE for constants
+- **Classes**: PascalCase for class names (e.g., `Service`)
+- **CSS Classes**: kebab-case (e.g., `home-container`, `timer-card`)
+
+### TypeScript
+- Use `lang="ts"` in Vue SFC `
+
+
+```
+
+### Formatting
+- **Indentation**: Use tabs (not spaces) for indentation
+- **Quotes**: Single quotes for strings in TypeScript/JavaScript
+- **Semicolons**: Optional but consistent (project uses semicolons)
+- **Line endings**: CRLF (Windows)
+- **SCSS**: Use nested selectors, kebab-case class names
+
+### Error Handling
+- Use `Service.Msg()` for toast messages
+- Use `Service.Alert()` for modal dialogs
+- API requests through `Service.Request()` handle 401 (token expired) automatically
+- Return `ResultData` objects from service methods
+- Clean up intervals in `onUnmounted()` lifecycle hook
+
+### UI Components
+- Use **uview-plus** as primary UI component library
+- Use **ColorUI** for CSS framework and icons
+- Component prefix: `u-` for uview-plus components (e.g., ``, ``)
+
+### Service Layer Pattern
+- Extend `BaseConfig` for service classes
+- Use static methods for utility functions
+- `Service` class provides:
+ - API requests: `Service.Request()`
+ - Navigation: `Service.GoPage()`, `Service.GoPageTab()`, `Service.GoPageBack()`
+ - Storage: `Service.SetStorageCache()`, `Service.GetStorageCache()`
+ - Messages: `Service.Msg()`, `Service.Alert()`
+ - Loading: `Service.LoadIng()`, `Service.LoadClose()`
+
+### uni-app Specifics
+- Use `uni.` API for platform-specific operations
+- Pages registered in `src/pages.json`
+- Tab bar configured in `src/pages.json`
+- Use `rpx` units for responsive design
+- Global styles in `src/App.vue` and `src/uni.scss`
+
+### Git & Commit
+- `.gitignore` includes `node_modules/`, `dist/`, `unpackage/`
+- Commit messages should be descriptive (in Chinese or English)
+
+### Key Dependencies
+- Vue 3.4.21
+- TypeScript 4.9.4
+- Vite 5.2.8
+- uni-app 3.0.0
+- uview-plus 3.3.54
+- dayjs (date manipulation)
+- echarts (charts)
+- vue-i18n (internationalization)
+
+### No Existing Rules
+- No `.cursor/rules/` or `.cursorrules` found
+- No `.github/copilot-instructions.md` found
+- No ESLint or Prettier configuration found
+- Follow existing code patterns when making changes
diff --git a/package-lock.json b/package-lock.json
index c9f8b1f..49b9869 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12682,15 +12682,13 @@
}
},
"node_modules/uview-plus": {
- "version": "3.3.54",
- "resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.3.54.tgz",
- "integrity": "sha512-c/KcwTkbJed6ZZqxh7mreDFjtkq5ebNkMHsvgFn53xKVEbjWuGJ/zz4jOXWoO+n0r5hxH1LzrDXXDDiBDvqORA==",
- "dependencies": {
- "clipboard": "^2.0.11",
- "dayjs": "^1.11.3"
- },
+ "version": "3.7.13",
+ "resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.7.13.tgz",
+ "integrity": "sha512-vHByf0kxKReYxam6BuU6wn/80giCkMaMUHEblhkf4kAjP852b86V3ctkjfGtV17MEIORFo3Vkve+HFnHNXpwNg==",
"engines": {
- "HBuilderX": "^3.1.0"
+ "HBuilderX": "^3.1.0",
+ "uni-app": "^4.66",
+ "uni-app-x": ""
}
},
"node_modules/v8-to-istanbul": {
diff --git a/src/App.vue b/src/App.vue
index 0dd0cb3..a99d936 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,9 +1,7 @@
\ No newline at end of file
+ page {
+ --nav-mian: #22a6f2; //全局颜色
+ --nav-vice: #00a2ff; //副颜色
+ --nav-diluted: #6ba9cd; //淡颜色
+
+ }
+
\ No newline at end of file
diff --git a/src/Service/Service.ts b/src/Service/Service.ts
index f286dfa..9f4d504 100644
--- a/src/Service/Service.ts
+++ b/src/Service/Service.ts
@@ -15,6 +15,16 @@ export class Service extends BaseConfig {
}
}
+ //获取静态图片地址
+ static GetIconImg(path : string) {
+ return path;
+ if (path.startsWith('http') || path.startsWith('https')) {
+ return path;
+ } else {
+ return `${this.payuploadUrl}${path}`;
+ }
+ }
+
//获取图片地址
static GetMateUrlByImg(path : string) {
if (path.startsWith('http') || path.startsWith('https')) {
@@ -240,6 +250,13 @@ export class Service extends BaseConfig {
// 时间戳处理
static formatDate(time : any, type : number) : string {
+ if(time==0 && type==6 ){
+ return "00:00"
+ }
+ if(time==0 && type==5 ){
+ return "00"
+ }
+
const date = new Date(time);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以加1,并用0填充
@@ -258,11 +275,14 @@ export class Service extends BaseConfig {
return `${hours}:${minutes}`;
} else if (type == 4) {
return `${year}${month}${day}`;
+ }else if (type == 5) {
+ return `${seconds}`;
}
else {
return `${hours}:${minutes}`;
}
+
}
/*****节流*****/
diff --git a/src/common/Domain/Project.ts b/src/common/Domain/Project.ts
new file mode 100644
index 0000000..9718957
--- /dev/null
+++ b/src/common/Domain/Project.ts
@@ -0,0 +1,19 @@
+export interface Project {
+ id: string;
+ name: string;
+ createdAt: number;
+}
+
+export interface StudentRecord {
+ id: string;
+ projectId: string;
+ name: string;
+ time: number;
+ createdAt: number;
+}
+
+export interface TimingState {
+ isRunning: boolean;
+ startTime: number;
+ elapsedTime: number;
+}
diff --git a/src/common/Unit/StorageManager.ts b/src/common/Unit/StorageManager.ts
new file mode 100644
index 0000000..0df9b36
--- /dev/null
+++ b/src/common/Unit/StorageManager.ts
@@ -0,0 +1,69 @@
+import type { Project, StudentRecord } from '../Domain/Project';
+
+const STORAGE_KEYS = {
+ PROJECTS: 'swimming_projects',
+ RECORDS: 'swimming_records',
+};
+
+export class StorageManager {
+ static async getProjects(): Promise {
+ try {
+ const data = uni.getStorageSync(STORAGE_KEYS.PROJECTS);
+ return data ? JSON.parse(data) : [];
+ } catch {
+ return [];
+ }
+ }
+
+ static async saveProjects(projects: Project[]): Promise {
+ uni.setStorageSync(STORAGE_KEYS.PROJECTS, JSON.stringify(projects));
+ }
+
+ static async addProject(project: Project): Promise {
+ const projects = await this.getProjects();
+ projects.unshift(project);
+ await this.saveProjects(projects);
+ }
+
+ static async deleteProject(projectId: string): Promise {
+ const projects = await this.getProjects();
+ const filtered = projects.filter(p => p.id !== projectId);
+ await this.saveProjects(filtered);
+ }
+
+ static async getRecordsByProject(projectId: string): Promise {
+ try {
+ const data = uni.getStorageSync(STORAGE_KEYS.RECORDS);
+ const records: StudentRecord[] = data ? JSON.parse(data) : [];
+ return records.filter(r => r.projectId === projectId);
+ } catch {
+ return [];
+ }
+ }
+
+ static async saveRecords(records: StudentRecord[]): Promise {
+ uni.setStorageSync(STORAGE_KEYS.RECORDS, JSON.stringify(records));
+ }
+
+ static async addRecord(record: StudentRecord): Promise {
+ try {
+ const data = uni.getStorageSync(STORAGE_KEYS.RECORDS);
+ const records: StudentRecord[] = data ? JSON.parse(data) : [];
+ records.unshift(record);
+ await this.saveRecords(records);
+ } catch {
+ const records: StudentRecord[] = [record];
+ await this.saveRecords(records);
+ }
+ }
+
+ static async deleteRecord(recordId: string): Promise {
+ try {
+ const data = uni.getStorageSync(STORAGE_KEYS.RECORDS);
+ const records: StudentRecord[] = data ? JSON.parse(data) : [];
+ const filtered = records.filter(r => r.id !== recordId);
+ await this.saveRecords(filtered);
+ } catch {
+ }
+ }
+}
diff --git a/src/common/Unit/TimeFormat.ts b/src/common/Unit/TimeFormat.ts
new file mode 100644
index 0000000..58385c7
--- /dev/null
+++ b/src/common/Unit/TimeFormat.ts
@@ -0,0 +1,22 @@
+export function formatTime(ms: number): string {
+ if (ms < 0) ms = 0;
+ const totalSeconds = Math.floor(ms / 1000);
+ const hours = Math.floor(totalSeconds / 3600);
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
+ const seconds = totalSeconds % 60;
+ const milliseconds = Math.floor((ms % 1000) / 10);
+
+ const hh = hours.toString().padStart(2, '0');
+ const mm = minutes.toString().padStart(2, '0');
+ const ss = seconds.toString().padStart(2, '0');
+ const mmm = milliseconds.toString().padStart(2, '0');
+
+ if (hours > 0) {
+ return `${hh}:${mm}:${ss}.${mmm}`;
+ }
+ return `${mm}:${ss}.${mmm}`;
+}
+
+export function generateId(): string {
+ return Date.now().toString(36) + Math.random().toString(36).substr(2);
+}
diff --git a/src/manifest.json b/src/manifest.json
index 9bdcbd5..aebf979 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -1,5 +1,5 @@
{
- "name" : "科讯代购",
+ "name" : "智能秒表",
"appid" : "__UNI__06C2D6A",
"description" : "",
"versionName" : "1.0.8",
@@ -112,7 +112,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "",
+ "appid" : "wx6a9cfc961962b249",
"setting" : {
"urlCheck" : false
},
diff --git a/src/pages.json b/src/pages.json
index cc237e8..803c398 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -8,46 +8,110 @@
}
},
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-
+
{
"path": "pages/index/index",
"style": {
- "navigationBarTitleText": "门店运营",
- "navigationBarBackgroundColor": "#36394D",
- "navigationStyle": "custom",
- "backgroundColor": "#F8F8F8"
+ "navigationBarTitleText": "智能秒表"
}
},
{
- "path" : "pages/index/user",
- "style" :
- {
- "navigationBarTitleText" : "我的"
+ "path": "pages/index/user",
+ "style": {
+ "navigationBarTitleText": "我的"
}
}
],
+ "subPackages": [{
+ "root": "pages/userFunc",
+ "pages": [{
+ "path" : "setCourse",
+ "style" :
+ {
+ "navigationBarTitleText" : "新增项目"
+ }
+ },
+ {
+ "path" : "swiming",
+ "style" :
+ {
+ "navigationBarTitleText" : "游泳项目",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path" : "segmentation",
+ "style" :
+ {
+ "navigationBarTitleText" : "分段"
+ }
+ },
+ {
+ "path" : "student",
+ "style" :
+ {
+ "navigationBarTitleText" : "学员管理"
+ }
+ },
+ {
+ "path" : "analyze",
+ "style" :
+ {
+ "navigationBarTitleText" : "数据分析"
+ }
+ },
+ {
+ "path" : "dataAnalyze",
+ "style" :
+ {
+ "navigationBarTitleText" : "数据分析图"
+ }
+ },
+ {
+ "path" : "set",
+ "style" :
+ {
+ "navigationBarTitleText" : "设置"
+ }
+ },
+ {
+ "path" : "projectList",
+ "style" :
+ {
+ "navigationBarTitleText" : "项目列表"
+ }
+ },
+ {
+ "path" : "project",
+ "style" :
+ {
+ "navigationBarTitleText" : "包干"
+ }
+ }]
+ }],
"globalStyle": {
- "navigationBarTextStyle": "white",
+ "navigationBarTextStyle": "black",
"navigationBarTitleText": "v派商家",
- "navigationBarBackgroundColor": "#F84F28",
- "backgroundColor": "#F8F8F8"
+ "navigationBarBackgroundColor": "#fff",
+ "backgroundColor": "#000"
},
"tabBar": {
"color": "#000",
"selectedColor": "#000",
"backgroundColor": "#FFFFFF",
- "list": [ {
- "pagePath": "pages/index/index",
- "iconPath": "static/tab/01.png",
- "selectedIconPath": "static/tab/02.png",
- "text": "主页"
- }, {
- "pagePath": "pages/index/user",
- "iconPath": "static/tab/01.png",
- "selectedIconPath": "static/tab/02.png",
- "text": "我的"
- }
+ "list": [{
+ "pagePath": "pages/index/index",
+ "iconPath": "static/tab/01.png",
+ "selectedIconPath": "static/tab/02.png",
+ "text": "智能秒表"
+ },
+ {
+ "pagePath": "pages/index/user",
+ "iconPath": "static/tab/01.png",
+ "selectedIconPath": "static/tab/02.png",
+ "text": "我的"
+ }
]
}
}
\ No newline at end of file
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
index 8b845d2..d1cf3be 100644
--- a/src/pages/index/index.vue
+++ b/src/pages/index/index.vue
@@ -1,29 +1,407 @@
-
-
- 11111
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自由泳500米
+ 00:00''00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无项目
+ 您的计时列表目前是空的。点击下方按钮,开始您的第一次游泳训练记录吧。
+
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/src/pages/index/user.vue b/src/pages/index/user.vue
index 6a0d16e..0caab92 100644
--- a/src/pages/index/user.vue
+++ b/src/pages/index/user.vue
@@ -1,19 +1,401 @@
-
-
+
+
+
+
+
+
+
+
+
+
+ 游泳爱好者
+
+
+ 138****8888
+
+
+
+
+
+
+
+
+
+
+
+ 12
+ 我的项目
+
+
+
+ 8
+ 记录数
+
+
+
+ 8
+ 学员数
+
+
+
+
+
+
+
-
diff --git a/src/pages/userFunc/analyze.vue b/src/pages/userFunc/analyze.vue
new file mode 100644
index 0000000..2cd328b
--- /dev/null
+++ b/src/pages/userFunc/analyze.vue
@@ -0,0 +1,426 @@
+
+
+
+
+
+
+
+
+
+ {{ projects.length }}
+ 项目总数
+
+
+
+ {{ totalStudents }}
+ 学员总数
+
+
+
+ {{ totalRecords }}
+ 记录次数
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无数据
+ 创建项目后这里会显示数据分析
+
+
+
+
+
+
+
+ {{ project.name }}
+
+
+
+ {{ project.studentCount }}位学员
+
+
+
+ {{ project.recordCount }}次记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/userFunc/dataAnalyze.vue b/src/pages/userFunc/dataAnalyze.vue
new file mode 100644
index 0000000..4ff24fb
--- /dev/null
+++ b/src/pages/userFunc/dataAnalyze.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/userFunc/project.vue b/src/pages/userFunc/project.vue
new file mode 100644
index 0000000..1358f76
--- /dev/null
+++ b/src/pages/userFunc/project.vue
@@ -0,0 +1,610 @@
+
+
+
+
+ 计划时长
+
+ {{ formatPlanTime(planDuration) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ timer.studentName || '计时器 ' + (index + 1) }}
+
+ {{ formatTime(timer.currentTime) }}
+ {{ formatDuration(timer.currentTime) }}
+
+
+
+
+ 休息
+ {{ formatRestTime(timer.displayRestTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/userFunc/projectList.vue b/src/pages/userFunc/projectList.vue
new file mode 100644
index 0000000..7a1a5bb
--- /dev/null
+++ b/src/pages/userFunc/projectList.vue
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+
+
+
+ 暂无项目
+ 点击下方按钮创建第一个项目
+
+
+
+
+
+
+
+ {{ project.name }}
+
+
+
+ {{ project.studentCount }}位学员
+
+
+
+ {{ project.recordCount }}条记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/userFunc/segmentation.vue b/src/pages/userFunc/segmentation.vue
new file mode 100644
index 0000000..0143e63
--- /dev/null
+++ b/src/pages/userFunc/segmentation.vue
@@ -0,0 +1,512 @@
+
+
+
+
+
+
+
+ 计时器
+
+ {{ formatTime(currentTime) }}
+ {{ formatDuration(currentTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 第{{ segIndex + 1 }}段
+ {{ segment.time ? formatTime(segment.time) : '--:--.--' }}
+
+
+ 第{{ student.segments.length + 1 }}段
+ --:--.--
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/userFunc/set.vue b/src/pages/userFunc/set.vue
new file mode 100644
index 0000000..505a68c
--- /dev/null
+++ b/src/pages/userFunc/set.vue
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击更换头像
+
+
+
+
+
+
+
+
+ 用户姓名
+
+
+
+
+
+
+
+
+ 手机号码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/userFunc/setCourse.vue b/src/pages/userFunc/setCourse.vue
new file mode 100644
index 0000000..dfeeedc
--- /dev/null
+++ b/src/pages/userFunc/setCourse.vue
@@ -0,0 +1,809 @@
+
+
+
+
+ 项目信息
+
+
+
+ 项目名称
+
+
+
+
+
+ 模块类型
+
+ {{ selectedModule || '请选择模块类型' }}
+
+
+
+
+
+ 段数
+
+
+
+
+ 秒表模式
+
+
+
+
+
+ 间隔出发
+
+
+
+
+
+ 一起出发
+
+
+
+
+
+
+ 间隔时间(秒)
+
+
+
+
+
+
+
+
+
+ {{ hours<10?('0'+hours):hours }}:{{ minutes<10?('0'+minutes):minutes }}
+ :{{ seconds<10?('0'+seconds):seconds }}
+
+ 点击设置时间
+
+
+
+
+
+
+
+
+
+
+
+ {{ index + 1 }}
+ {{ item.name }}
+
+
+
+ {{ item.lane || '选择泳道' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/userFunc/student.vue b/src/pages/userFunc/student.vue
new file mode 100644
index 0000000..5a09a02
--- /dev/null
+++ b/src/pages/userFunc/student.vue
@@ -0,0 +1,547 @@
+
+
+
+
+
+
+
+
+
+
+
+ 暂无学员
+ 点击下方按钮添加第一位学员
+
+
+
+
+
+ {{ student.number }}
+
+ {{ student.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 序号
+
+
+
+ 学员姓名
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/userFunc/swiming.vue b/src/pages/userFunc/swiming.vue
new file mode 100644
index 0000000..2221b6c
--- /dev/null
+++ b/src/pages/userFunc/swiming.vue
@@ -0,0 +1,839 @@
+
+
+
+
+
+ 当前总用时
+
+ {{ formatTime(currentTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ athlete.number }}
+
+ {{ athlete.name }}
+ {{ athlete.lane }}
+
+
+ {{ formatTime(athlete.time) }}
+ 最快: {{ formatTime(athlete.bestTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 调试秒表模式
+
+
+
+
+ 添加学生
+
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+
+
+
+ 间隔出发
+
+
+
+ 间隔时间(秒)
+
+
+
+
+
+
+
+ 一起出发
+
+
+
+
+
+
+
+
+
+
+
+ 学生姓名
+
+
+
+ 序号
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/static/index/Flag.png b/src/static/index/Flag.png
new file mode 100644
index 0000000000000000000000000000000000000000..4110e66cae251c732db37e6b60be1a2c19b77fbe
GIT binary patch
literal 4544
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
literal 0
HcmV?d00001
diff --git a/src/static/index/reflash.png b/src/static/index/reflash.png
new file mode 100644
index 0000000000000000000000000000000000000000..014ad6401eb2f0e8771e6e60d8b3d2240b748b89
GIT binary patch
literal 11576
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