Compare commits

...
10 Commits
Author SHA1 Message Date
zhongyidianandClaude Code 45973a5145 feat: 完善名师工作室内容与成员悬浮导航
更新工作室页面、成员资料与静态资源,保留成员导航的渐变及定位交互。排除视频和超过 10 MiB 的新增部署资源。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-15 11:36:05 +08:00
zhongyidian 53d0eeac6b feat: 添加引导页、视频播放和触摸交互功能
- 新增引导页组件(Guide.tsx)及相关资源
- 添加视频播放功能和相关资源文件
- 实现useTouch自定义hook支持触摸交互
- 添加store状态管理
- 更新多个页面组件(Content, Menu, Publicity)
- 优化图片组件和背景图片组件
- 更新项目依赖
2025-10-31 17:49:13 +08:00
zhongyidian 4ce7520066 feat: enhance modal functionality and integrate new components
- Added keyframes and animation for a smooth scale-in effect in the Tailwind configuration.
- Updated Image component to improve quality handling and style definitions.
- Introduced WordViewer and WordViewerModal components for document viewing capabilities.
- Enhanced Modal component to support embedded mode with customizable position and dimensions.
- Integrated IframeModal across various pages for user assistance and content display.
- Updated Content and Menu pages to utilize new components and improve user interaction.
- Added utility function to retrieve public paths for resources.
2025-10-29 00:18:06 +08:00
zhongyidian 13dd84a8a7 feat: add avatar interaction and modal for user assistance
- Introduced an avatar element that opens a modal when clicked, providing users with assistance.
- Integrated IframeModal component to display external content within the modal.
- Enhanced user experience with hover effects on the avatar.
2025-10-26 13:15:41 +08:00
zhongyidian 2d66abc610 refactor: clean up dependencies and enhance component functionality
- Removed unused dependencies related to @dnd-kit from pnpm-lock.yaml.
- Updated Vite configuration to set the base path.
- Added input styles to the main CSS file.
- Enhanced BackgroundImage component to include an overflowHidden prop for better layout control.
- Deleted the DraggableItem component as it was no longer needed.
- Updated routing to include new Publicity and Content pages, and modified navigation in Menu and NotFound components.
2025-10-22 00:41:38 +08:00
zhongyidian 29029bb608 feat: update README and enhance Menu component with teacher selection functionality
- Updated project title in README.md to reflect the new focus on "名师工作室".
- Enhanced Image component to accept custom styles.
- Implemented teacher selection feature in Menu component, allowing users to select and display different teacher avatars with corresponding positions and transitions.
2025-10-21 18:14:20 +08:00
zhongyidian 95d594c2aa refactor: update project structure and content 2025-10-21 18:14:01 +08:00
zhongyidian cdbe3bb51e feat:提交实验室环境配置 2025-10-21 00:59:09 +08:00
zhongyidian 6367014e1f fix:解决拖拽问题 2025-10-20 17:50:42 +08:00
zhongyidian ce06ad0214 feat:init 2025-10-17 11:01:17 +08:00
449 changed files with 12573 additions and 590 deletions

No files matched your search

+2 -1
View File
@@ -4,7 +4,8 @@
"Bash(npx tsc --noEmit)", "Bash(npx tsc --noEmit)",
"Bash(pnpm lint)", "Bash(pnpm lint)",
"Bash(pnpm add -D typescript-eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin)", "Bash(pnpm add -D typescript-eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin)",
"Bash(git add .)" "Bash(git add .)",
"Bash(git commit -m \"$(cat <<''EOF''\n迁移到 TypeScript\n\n完整的 TypeScript 迁移,提升代码质量和开发体验\n\n**安装依赖:**\n- TypeScript 5.9.3\n- @types/react, @types/react-dom, @types/node\n- typescript-eslint 相关包\n\n**配置文件:**\n- 创建 tsconfig.json (应用配置)\n- 创建 tsconfig.node.json (Node 配置)\n- 更新 eslint.config.ts 支持 TypeScript\n- 所有配置文件迁移到 .ts 扩展名\n\n**源代码迁移:**\n- 所有 .jsx 文件 → .tsx\n- 所有 .js 文件 → .ts \n- 添加完整的类型定义和接口\n- 修复所有类型错误\n\n**类型定义:**\n- Experiment 接口 (实验数据类型)\n- DraggableItemProps 接口\n- 函数参数类型注解\n- React 组件 Props 类型\n\n**代码优化:**\n- 修复 main.tsx 中的 null 检查\n- 添加 DragEndEvent 类型\n- 使用类型守卫和类型断言\n- 改进错误处理\n\n**构建脚本:**\n- 添加 typecheck 脚本\n- build 脚本包含类型检查\n- 更新 index.html 入口为 main.tsx\n\n**验证:**\n- ✅ TypeScript 编译通过\n- ✅ ESLint 检查通过\n- ✅ 所有类型正确推导\n- ✅ 代码质量提升\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []
+16
View File
@@ -22,3 +22,19 @@ dist-ssr
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?
# Microsoft Office temporary lock files
~$*.docx
# Large original media kept outside the production bundle
source-assets/
# Videos and oversized deployment assets are managed outside Git
*.mp4
*.webm
*.mov
*.m4v
*.avi
*.mkv
/public/fonts/SourceHanSansSC-Medium.otf
/public/teachers/yuan-yuan/documents/yy-6bbf801b066d.pptx
+1 -1
View File
@@ -8,4 +8,4 @@ engine-strict=true
auto-install-peers=true auto-install-peers=true
# 使用国内镜像(可选) # 使用国内镜像(可选)
# registry=https://registry.npmmirror.com registry=https://registry.npmmirror.com
+2 -2
View File
@@ -1,6 +1,6 @@
# 传感器及检测技术 - 实验课件系统 # 名师工作室 - 实验课件系统
这是一个基于 React 的传感器及检测技术实验课件交互式平台。 这是一个基于 React 的名师工作室实验课件交互式平台。
## 技术栈 ## 技术栈
+15 -14
View File
@@ -1,32 +1,33 @@
import js from '@eslint/js'; import js from "@eslint/js";
import globals from 'globals'; import globals from "globals";
import reactHooks from 'eslint-plugin-react-hooks'; import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from 'eslint-plugin-react-refresh'; import reactRefresh from "eslint-plugin-react-refresh";
import tseslint from 'typescript-eslint'; import tseslint from "typescript-eslint";
export default tseslint.config( export default tseslint.config(
{ ignores: ['dist', 'node_modules'] }, { ignores: ["dist", "node_modules"] },
{ {
extends: [js.configs.recommended, ...tseslint.configs.recommended], extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'], files: ["**/*.{ts,tsx}"],
languageOptions: { languageOptions: {
ecmaVersion: 2020, ecmaVersion: 2020,
globals: globals.browser, globals: globals.browser,
}, },
plugins: { plugins: {
'react-hooks': reactHooks, "react-hooks": reactHooks,
'react-refresh': reactRefresh, "react-refresh": reactRefresh,
}, },
rules: { rules: {
...reactHooks.configs.recommended.rules, ...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [ "react-refresh/only-export-components": [
'warn', "warn",
{ allowConstantExport: true }, { allowConstantExport: true },
], ],
'@typescript-eslint/no-unused-vars': [ "@typescript-eslint/no-unused-vars": [
'error', "warn",
{ varsIgnorePattern: '^_', argsIgnorePattern: '^_' }, { varsIgnorePattern: "^_", argsIgnorePattern: "^_" },
], ],
"@typescript-eslint/no-explicit-any": "off",
}, },
} }
); );
+6 -3
View File
@@ -1,10 +1,13 @@
<!doctype html> <!DOCTYPE html>
<html lang="zh-CN"> <html lang="zh-CN">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta
<title>传感器及检测技术 - 实验课件系统</title> name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"
/>
<title>南湖名师/技能大师工作室</title>
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
+7 -6
View File
@@ -1,5 +1,5 @@
{ {
"name": "sensor-lab", "name": "master-teacher-studio",
"private": true, "private": true,
"version": "0.0.0", "version": "0.0.0",
"type": "module", "type": "module",
@@ -16,15 +16,16 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"axios": "^1.12.2",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"docx-preview": "^0.3.7",
"exceljs": "4.4.0",
"lucide-react": "^0.545.0", "lucide-react": "^0.545.0",
"pptx-preview": "1.0.7",
"react": "^19.1.1", "react": "^19.1.1",
"react-dom": "^19.1.1", "react-dom": "^19.1.1",
"react-router-dom": "^7.9.4" "react-router-dom": "^7.18.4",
"vconsole": "^3.15.1",
"zustand": "^5.0.8"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.36.0", "@eslint/js": "^9.36.0",
+1527 -139
View File
File diff suppressed because it is too large. Load diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 496 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 KiB

Loaded 100 of 449 files, more files were not shown because too many files have changed in this diff. Show more