feat: PLANNING体系首版(00路线图/02任务总表/03执行协议/I-03/I-04/registry42口径)+M1止血交付
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# 二维码生成器移动端适配计划
|
||||
|
||||
## Why
|
||||
当前二维码生成器(/qrcode-generator)仅通过 CSS 媒体查询实现基础响应式布局,在移动端存在以下问题:
|
||||
- 两栏布局在小屏幕上操作不便
|
||||
- 高级设置区域拥挤,难以操作
|
||||
- 触摸体验未针对移动设备优化
|
||||
- 缺少独立的移动端组件,与其他工具(Base64Tool、JsonFormatter 等)的适配模式不一致
|
||||
|
||||
## What Changes
|
||||
创建独立的移动端组件 `QRCodeGeneratorMobile`,为移动设备提供优化的用户体验。
|
||||
|
||||
## Impact
|
||||
- New files:
|
||||
- `chunyu_project_react/src/pages/QRCodeGenerator/QRCodeGeneratorMobile.tsx` - 移动端组件
|
||||
- `chunyu_project_react/src/pages/QRCodeGenerator/QRCodeGeneratorMobile.css` - 移动端样式
|
||||
- Modified files:
|
||||
- `chunyu_project_react/src/App.tsx` - 更新路由,支持移动端检测
|
||||
|
||||
## 设计方案
|
||||
|
||||
### 移动端组件结构
|
||||
参考 `Base64ToolMobile` 的设计模式:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────┐
|
||||
│ ← 返回 二维码生成器 [收藏] │
|
||||
├─────────────────────────────────┤
|
||||
│ │
|
||||
│ 二维码预览区域 │
|
||||
│ (生成后显示二维码) │
|
||||
│ │
|
||||
├─────────────────────────────────┤
|
||||
│ [下载二维码] [清空] │
|
||||
├─────────────────────────────────┤
|
||||
│ 文本输入区域 │
|
||||
│ ┌─────────────────────────┐ │
|
||||
│ │ │ │
|
||||
│ │ 请输入文本或URL... │ │
|
||||
│ │ │ │
|
||||
│ └─────────────────────────┘ │
|
||||
│ [生成二维码] │
|
||||
├─────────────────────────────────┤
|
||||
│ 高级设置(可折叠) │
|
||||
│ ▼ 容错率 / 版本 / 尺寸 │
|
||||
│ ▼ 颜色设置(预设色板) │
|
||||
│ ▼ 形状设置(点阵/定位样式) │
|
||||
│ ▼ Logo 上传 │
|
||||
└─────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 核心功能保留
|
||||
- 文本/URL 输入
|
||||
- 二维码实时生成预览
|
||||
- 下载 PNG 功能
|
||||
- 容错率设置(L/M/Q/H)
|
||||
- 尺寸预设(300/400/500/1000px)
|
||||
- 颜色预设(12种配色方案)
|
||||
- 形状设置(点阵样式 + 定位图案)
|
||||
- Logo 上传
|
||||
|
||||
### 移动端优化点
|
||||
1. **单列布局**:从上到下依次排列,避免左右分栏
|
||||
2. **可折叠设置区**:高级设置默认折叠,点击展开
|
||||
3. **触摸友好**:增大按钮和输入区域
|
||||
4. **预设色板**:使用色块网格展示,便于触摸选择
|
||||
5. **简化操作**:减少层级,常用功能直接展示
|
||||
|
||||
## 具体修改
|
||||
|
||||
### 1. 创建 QRCodeGeneratorMobile.tsx
|
||||
**路径**: `chunyu_project_react/src/pages/QRCodeGenerator/QRCodeGeneratorMobile.tsx`
|
||||
|
||||
核心结构:
|
||||
```tsx
|
||||
const QRCodeGeneratorMobile: React.FC = () => {
|
||||
// 状态管理(与桌面端共享 qrRenderer 工具)
|
||||
const [text, setText] = useState("");
|
||||
const [qrValue, setQrValue] = useState("");
|
||||
const [fgColor, setFgColor] = useState("#000000");
|
||||
const [bgColor, setBgColor] = useState("#ffffff");
|
||||
const [errorLevel, setErrorLevel] = useState<ErrorLevel>("M");
|
||||
const [sizePreset, setSizePreset] = useState<number>(400);
|
||||
const [dotStyle, setDotStyle] = useState<DotStyle>("square");
|
||||
const [finderStyle, setFinderStyle] = useState<FinderStyle>("square");
|
||||
const [logo, setLogo] = useState<QRCodeLogo | null>(null);
|
||||
const [logoSizePercent, setLogoSizePercent] = useState<number>(20);
|
||||
const [settingsOpen, setSettingsOpen] = useState(false);
|
||||
const [colorOpen, setColorOpen] = useState(false);
|
||||
const [shapeOpen, setShapeOpen] = useState(false);
|
||||
const [logoOpen, setLogoOpen] = useState(false);
|
||||
|
||||
// 使用共享的 drawQRCode 函数
|
||||
// 使用 useRecordHistory 记录历史
|
||||
// 使用 useNavigate 导航
|
||||
// 使用 useTranslation 国际化
|
||||
};
|
||||
```
|
||||
|
||||
### 2. 创建 QRCodeGeneratorMobile.css
|
||||
**路径**: `chunyu_project_react/src/pages/QRCodeGenerator/QRCodeGeneratorMobile.css`
|
||||
|
||||
样式特点:
|
||||
- 单列布局
|
||||
- 大按钮设计(最小 44px 触摸目标)
|
||||
- 可折叠面板动画
|
||||
- 预设色板网格(3列或4列)
|
||||
- 暗色模式支持
|
||||
|
||||
### 3. 更新 App.tsx 路由
|
||||
**路径**: `chunyu_project_react/src/App.tsx`
|
||||
|
||||
修改前:
|
||||
```tsx
|
||||
<Route path="/qrcode-generator" element={<QRCodeGenerator />} />
|
||||
```
|
||||
|
||||
修改后:
|
||||
```tsx
|
||||
<Route path="/qrcode-generator" element={isMobile ? <QRCodeGeneratorMobile /> : <QRCodeGenerator />} />
|
||||
```
|
||||
|
||||
## Assumptions & Decisions
|
||||
- 复用桌面端的 `drawQRCode` 工具函数,保持生成逻辑一致
|
||||
- 移动端不显示粒子动画效果,提升性能
|
||||
- 高级设置默认折叠,减少初始界面复杂度
|
||||
- 预设色板使用网格布局,便于触摸选择
|
||||
- 二维码预览区域保持固定比例,确保扫描可靠性
|
||||
|
||||
## Verification
|
||||
1. 在移动端访问 `/qrcode-generator`,确认显示移动端组件
|
||||
2. 在桌面端访问 `/qrcode-generator`,确认显示桌面端组件
|
||||
3. 测试文本输入和二维码生成功能
|
||||
4. 测试下载功能
|
||||
5. 测试高级设置(容错率、尺寸、颜色、形状)
|
||||
6. 测试 Logo 上传功能
|
||||
7. 测试暗色模式切换
|
||||
8. 测试浏览器窗口缩放时的响应
|
||||
Reference in New Issue
Block a user