[] = [
{ id: 'offline', label: '离线转写', icon: FileAudio },
{ id: 'phrases', label: '热词管理', icon: BookText }
];
// 渲染
setActiveTab(tabId as TingwuTab)}
/>
{/* 条件渲染内容 */}
{activeTab === 'offline' && (...)}
{activeTab === 'phrases' && (...)}
```
#### 3.2 卡片组件
**之前 (Ant Design):**
```typescript
```
**之后 (Tailwind):**
```typescript
1. 上传音视频文件
```
#### 3.3 提示消息
**之前 (Ant Design):**
```typescript
message.success('文件上传成功');
message.error('加载任务列表失败');
```
**之后 (useToast):**
```typescript
const { showToast } = useToast();
showToast('文件上传成功,请配置参数后开始转写', 'success');
showToast('加载任务列表失败', 'error');
```
#### 3.4 成功提示框
**之前 (Ant Design):**
```typescript
```
**之后 (Tailwind):**
```typescript
```
#### 3.5 按钮
**之前 (Ant Design):**
```typescript
```
**之后 (Tailwind):**
```typescript
```
### 4. 新增功能
#### 4.1 返回按钮
```typescript
}
title="通义听悟"
description="智能音视频转写与分析服务"
showBackButton={true} // ✅ 新增
>
```
#### 4.2 类型安全
```typescript
type TingwuTab = 'offline' | 'phrases'; // ✅ 新增类型定义
const [activeTab, setActiveTab] = useState('offline');
```
### 5. 保留的组件
以下组件保持不变,继续复用:
- ✅ `FileUpload` - 文件上传组件
- ✅ `TaskConfig` - 任务配置组件
- ✅ `TaskList` - 任务列表组件
- ✅ `PhraseManager` - 热词管理组件
这些组件内部可能仍使用 Ant Design,但不影响主页面的一致性。
## 样式统一
### 卡片样式
```css
bg-white rounded-2xl border border-gray-100 shadow-sm p-6
```
### 标题样式
```css
text-sm font-bold text-gray-900 mb-4
```
### 输入框样式
```css
w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500
```
### 渐变按钮样式
```css
bg-gradient-to-r from-blue-600 to-purple-600 text-white rounded-xl font-bold hover:from-blue-700 hover:to-purple-700 transition-all shadow-lg shadow-blue-500/20
```
## 迁移步骤
1. **备份原文件**
```bash
cp frontend/pages/TingwuWorkshop.tsx frontend/pages/TingwuWorkshop.backup.tsx
```
2. **替换文件**
```bash
cp frontend/pages/TingwuWorkshop.new.tsx frontend/pages/TingwuWorkshop.tsx
```
3. **删除临时文件**
```bash
rm frontend/pages/TingwuWorkshop.new.tsx
```
4. **测试功能**
- 文件上传
- 任务创建
- Tab 切换
- 热词管理
- Toast 通知
## 优势
### 1. 视觉一致性
- ✅ 与其他通义应用(多模态翻译、图像翻译)保持一致
- ✅ 统一的卡片、按钮、输入框样式
- ✅ 统一的 Tab 导航体验
### 2. 性能优化
- ✅ 移除 Ant Design 依赖,减小 bundle 体积
- ✅ 使用 Tailwind 的 Tree-shaking
- ✅ 更快的首次加载速度
### 3. 可维护性
- ✅ 统一的组件库(TabNavigation, useToast)
- ✅ 类型安全(TypeScript 类型定义)
- ✅ 更清晰的代码结构
### 4. 用户体验
- ✅ 统一的交互模式
- ✅ 更流畅的动画效果
- ✅ 更好的响应式设计
## 注意事项
1. **子组件兼容性**
- `FileUpload`, `TaskConfig`, `TaskList`, `PhraseManager` 组件可能仍使用 Ant Design
- 如需完全移除 Ant Design,需要进一步重构这些子组件
2. **功能验证**
- 确保所有功能正常工作
- 特别注意文件上传和任务创建流程
3. **样式调整**
- 根据实际效果微调间距和颜色
- 确保在不同屏幕尺寸下显示正常
## 后续优化建议
1. **重构子组件**
- 将 `FileUpload` 重构为 Tailwind 版本
- 将 `TaskConfig` 重构为 Tailwind 版本
- 将 `TaskList` 重构为 Tailwind 版本
- 将 `PhraseManager` 重构为 Tailwind 版本
2. **完全移除 Ant Design**
- 检查项目中其他使用 Ant Design 的地方
- 逐步替换为自定义组件
- 最终从 package.json 中移除 antd 依赖
3. **组件库建设**
- 提取通用的卡片组件
- 提取通用的按钮组件
- 提取通用的表单组件
## 参考文档
- [TabNavigation 组件](../frontend/components/TabNavigation.tsx)
- [useToast Hook](../frontend/contexts/NotificationContext.tsx)
- [MultimodalTranslation 页面](../frontend/pages/MultimodalTranslation.tsx) - 参考示例