# 出库管理功能优化更新

## 更新时间
2024年12月

## 更新内容

### 1. 调拨出库增加入库仓库字段 ✓

**功能说明**：
- 当出库类型选择"调拨出库"时，表单会自动显示"入库仓库"字段
- 入库仓库为必填项，系统会自动过滤掉当前出库仓库（避免同仓库调拨）
- 提交时会验证入库仓库是否已选择

**数据结构变更**：
```typescript
interface OutboundRecord {
  // ... 其他字段
  targetWarehouseId?: string;      // 调拨入库仓库ID
  targetWarehouseName?: string;    // 调拨入库仓库名称
}
```

**使用场景**：
1. 打开"资产管理" → "库存管理" → "出库管理"
2. 点击"新增出库"按钮
3. 选择出库类型为"调拨出库"
4. 此时会显示"入库仓库"下拉选择框
5. 选择目标仓库（会自动排除当前出库仓库）
6. 填写其他必填信息后提交

### 2. 出库列表增加详情按钮 ✓

**功能说明**：
- 所有状态的出库单都显示"详情"按钮
- "待审核"状态：同时显示"审批通过"、"驳回"和"详情"按钮
- "已审核"/"已驳回"状态：只显示"详情"按钮

**修改前**：
- 待审核状态：显示"审批通过"、"驳回"
- 已审核/已驳回状态：显示"详情"

**修改后**：
- 所有状态都可以查看详情
- 待审核状态额外显示审批操作按钮

### 3. 出库详情对话框优化 ✓

**功能说明**：
- 详情对话框根据单据类型（入库/出库）动态显示不同字段
- 出库单不再显示入库特有字段（如生产日期、有效期等）
- 调拨出库会显示入库仓库信息
- 解决了之前出库详情显示异常的问题

**出库单详情显示字段**：
- 基本信息：
  - 出库单号
  - 出库类型
  - 状态
  - 出库仓库
  - 入库仓库（仅调拨出库）
  - 领用人/客户
  - 出库用途
  - 关联地块（如有）
  - 关联任务（如有）
  - 出库日期
  - 操作人
  - 创建时间
  
- 物料明细：
  - 序号
  - 物料名称
  - 规格
  - 数量
  - 批次号
  - 库位
  - 单价
  - 金额

**入库单详情显示字段**：
- 包含所有出库单字段
- 额外显示：生产日期、有效期、供应商等

### 4. 出库列表显示优化 ✓

**功能说明**：
- 调拨出库在列表中会显示完整的仓库调拨信息
- 格式：出库仓库 → 入库仓库
- 其他出库类型继续显示领用人信息

**显示示例**：
```
调拨出库：出库仓库: 1号仓库 → 入库仓库: 2号仓库 | 2024-12-20
生产领用：出库仓库: 1号仓库 | 领用人: 张三 | 2024-12-20
```

## 测试验证

### 测试场景1：创建调拨出库单
1. 进入"出库管理"页面
2. 点击"新增出库"
3. 出库类型选择"调拨出库"
4. 验证"入库仓库"字段显示
5. 选择出库仓库为"1号仓库"
6. 验证入库仓库选项中不包含"1号仓库"
7. 不选择入库仓库，点击提交
8. 验证提示"调拨出库必须选择入库仓库"
9. 选择入库仓库后提交成功

### 测试场景2：查看所有状态的出库单详情
1. 进入"出库管理"页面
2. 找到一个"待审核"状态的出库单
3. 验证显示3个按钮："审批通过"、"驳回"、"详情"
4. 点击"详情"按钮
5. 验证详情对话框正常显示，字段清晰可读
6. 找到一个"已审核"状态的出库单
7. 验证显示"详情"按钮
8. 点击查看详情

### 测试场景3：出库详情内容验证
1. 查看一个普通出库单详情
2. 验证显示：出库单号、类型、仓库、领用人、用途等
3. 验证物料明细表格正常（无生产日期、有效期列）
4. 查看一个调拨出库单详情
5. 验证显示出库仓库和入库仓库
6. 关闭详情对话框

## 技术实现

### 修改的接口
- `OutboundRecord`：增加 `targetWarehouseId` 和 `targetWarehouseName` 字段

### 修改的组件
- `AssetInventory.tsx`：出库管理主组件

### 修改的函数
- `handleSubmitOutbound`：增加调拨仓库验证和数据保存
- 表单重置函数：包含新增字段的重置

### UI改进
- 出库对话框：条件显示入库仓库选择器
- 出库列表：条件显示调拨仓库信息
- 详情对话框：根据单据类型动态显示字段
- 列表操作按钮：改为始终显示详情按钮

## 数据流

### 调拨出库流程
```
选择调拨出库 
  → 显示入库仓库字段
  → 选择目标仓库
  → 填写其他信息
  → 验证必填项
  → 创建出库记录（包含目标仓库信息）
  → 提交审批
  → 审批通过后库存核减（后续可实现自动调入目标仓库）
```

## 注意事项

1. **调拨出库必须选择入库仓库**
   - 系统会强制验证
   - 不能选择与出库仓库相同的仓库

2. **详情按钮始终可见**
   - 任何状态都可以查看详情
   - 方便随时核对单据信息

3. **详情显示差异**
   - 入库单显示完整批次信息（生产日期、有效期）
   - 出库单仅显示核心字段
   - 调拨出库显示双仓库信息

4. **后续扩展**
   - 可实现调拨出库审批通过后自动生成入库单
   - 可增加调拨单据的关联追踪
   - 可实现跨仓库库存自动调整

## 相关文档

- [库存管理完整指南](./ASSET_MANAGEMENT_SUMMARY.md)
- [入库管理指南](./INBOUND_MANAGEMENT_GUIDE.md)
- [库位管理指南](./LOCATION_PURCHASE_GUIDE.md)

## 版本历史

- v1.0 (2024-12) - 初始版本
  - 增加调拨出库入库仓库字段
  - 出库列表增加详情按钮
  - 优化出库详情对话框显示
