# HTML文档导出功能测试指南

## ✅ 功能实现完成

### 🎯 核心功能
- ✅ 实现了HTML格式的牛只发车验收单生成
- ✅ 支持在新窗口中预览文档
- ✅ 内置打印功能，可保存为PDF
- ✅ 严格按照图片格式设计布局
- ✅ 完整的字段映射和计算逻辑

### 📋 字段映射
- ✅ 供货单位 ← `supplierName`
- ✅ 收货单位 ← `buyerName`
- ✅ 发车地点 ← `startLocation`
- ✅ 发车时间 ← `createTime`
- ✅ 到达地点 ← `endLocation`
- ✅ 司机姓名及联系方式 ← `driverName` + `driverMobile`
- ✅ 装车车牌号 ← `licensePlate`
- ✅ 下车总数量 ← `ratedQuantity`
- ✅ 下车总重量 ← 计算：(落地装车磅数-空车磅重)/2
- ✅ 单价 ← 计算：约定价格/2
- ✅ 总金额 ← 计算：下车总重量×单价

### 🎨 设计特点
- ✅ 专业的表格布局
- ✅ 打印友好的样式
- ✅ 响应式设计
- ✅ 清晰的字体和间距
- ✅ 边框和背景色区分

## 🧪 测试步骤

### 1. 基本功能测试
1. 打开应用：http://localhost:8081/
2. 登录并进入"入境检疫"页面
3. 找到状态为"已装车"或"运输中"的记录
4. 点击"下载文件"按钮

### 2. 预期结果
- ✅ 新窗口打开，显示格式化的验收单
- ✅ 所有字段正确填充
- ✅ 计算公式正确执行
- ✅ 布局与图片格式一致

### 3. 打印/PDF测试
1. 在新窗口中点击"打印/保存为PDF"按钮
2. 在打印对话框中选择"另存为PDF"
3. 保存PDF文件
4. 验证PDF格式和内容

### 4. 数据验证
检查以下计算是否正确：
- 下车总重量 = (落地装车磅数 - 空车磅重) / 2
- 单价 = 约定价格 / 2
- 总金额 = 下车总重量 × 单价

## 🔧 技术实现

### 前端技术栈
- Vue 3 Composition API
- HTML5 + CSS3
- JavaScript ES6+
- 浏览器打印API

### 核心代码
```javascript
// 计算字段
const landingWeight = parseFloat(row.landingEntruckWeight || 0);
const emptyWeight = parseFloat(row.emptyWeight || 0);
const totalWeight = ((landingWeight - emptyWeight) / 2).toFixed(2);
const unitPrice = (parseFloat(row.firmPrice || 0) / 2).toFixed(2);
const totalAmount = (parseFloat(totalWeight) * parseFloat(unitPrice)).toFixed(2);

// 生成HTML并打开新窗口
const newWindow = window.open('', '_blank');
newWindow.document.write(htmlContent);
newWindow.document.close();
```

## 🎉 优势

1. **无需额外依赖**：不依赖复杂的Word处理库
2. **跨平台兼容**：所有现代浏览器都支持
3. **打印友好**：专门优化的打印样式
4. **PDF支持**：通过浏览器打印功能生成PDF
5. **易于维护**：纯HTML/CSS实现，易于修改
6. **性能优秀**：轻量级实现，加载快速

## 📝 使用说明

1. **查看文档**：点击"下载文件"按钮在新窗口中查看
2. **打印文档**：点击"打印/保存为PDF"按钮
3. **保存PDF**：在打印对话框中选择"另存为PDF"
4. **编辑内容**：可以在打印前手动编辑某些字段

## 🚀 后续优化建议

1. 可以添加更多导出格式选项
2. 可以添加文档模板选择功能
3. 可以添加批量导出功能
4. 可以添加文档预览功能
