# 盘点审批功能修复说明

## 问题描述

盘点管理的审批和驳回弹窗中缺少操作按钮，导致用户无法完成审批操作。

## 修复内容

### 1. 添加审批操作按钮

在盘点详情对话框底部，当任务状态为"待审批"时，现在会显示两个操作按钮：

- **驳回按钮**（橙色边框）
- **审批通过按钮**（绿色背景）

### 2. 按钮功能

#### 驳回按钮
- 点击后弹出确认对话框
- 确认后任务状态变为"待盘点"
- 需要重新进行盘点和录入

#### 审批通过按钮
- 点击后弹出确认对话框
- 确认后任务状态变为"已完成"
- 自动调整库存账面数量

### 3. 修改详情

**文件**: `/components/asset/AssetInventory.tsx`

**修改位置**: 盘点详情对话框底部操作按钮区域

**原代码**:
```tsx
<div className="flex justify-end pt-4 border-t">
  <Button
    variant="outline"
    onClick={() => setShowCheckItemDialog(false)}
  >
    关闭
  </Button>
</div>
```

**新代码**:
```tsx
<div className="flex justify-between gap-2 pt-4 border-t">
  <Button
    variant="outline"
    onClick={() => setShowCheckItemDialog(false)}
  >
    关闭
  </Button>
  
  {selectedCheckTask.status === '待审批' && (
    <div className="flex gap-2">
      <Button
        variant="outline"
        className="text-orange-600 hover:bg-orange-50"
        onClick={() => {
          if (window.confirm('确定要驳回此盘点任务吗？驳回后需要重新盘点。')) {
            handleSubmitCheckApproval('驳回');
            setShowCheckItemDialog(false);
          }
        }}
      >
        <X className="w-4 h-4 mr-2" />
        驳回
      </Button>
      <Button
        className="bg-green-600 hover:bg-green-700"
        onClick={() => {
          if (window.confirm('确定要审批通过吗？通过后将调整库存账面数量。')) {
            handleSubmitCheckApproval('通过');
            setShowCheckItemDialog(false);
          }
        }}
      >
        <CheckCircle2 className="w-4 h-4 mr-2" />
        审批通过
      </Button>
    </div>
  )}
</div>
```

### 4. 函数签名优化

修改了`handleSubmitCheckApproval`函数，使其可以接受参数：

```typescript
// 原函数依赖状态变量 approvalAction
const handleSubmitCheckApproval = () => {
  // ...
  const finalAction = approvalAction === 'approve' ? '通过' : '驳回';
  // ...
}

// 新函数可以接受参数
const handleSubmitCheckApproval = (action?: '通过' | '驳回') => {
  // ...
  const finalAction = action || (approvalAction === 'approve' ? '通过' : '驳回');
  // ...
}
```

这样可以直接在按钮点击时传入操作类型，无需依赖状态变量。

## 测试步骤

### 步骤1: 创建盘点任务

1. 进入"库存管理 > 盘点管理"
2. 点击"创建盘点任务"
3. 填写任务信息并初始化物料
4. 确认创建

### 步骤2: 录入实盘数量

1. 点击任务卡片上的"盘点录入"
2. 录入各物料的实盘数量
3. 点击"提交审批"
4. 任务状态变为"待审批"（橙色标签）

### 步骤3: 查看详情

1. 点击任务卡片上的"查看详情"
2. 盘点详情对话框打开

### 步骤4: 测试审批按钮

**测试点1 - 按钮显示**:
- ✅ 底部右侧应显示"驳回"和"审批通过"两个按钮
- ✅ "驳回"按钮为橙色边框样式
- ✅ "审批通过"按钮为绿色背景

**测试点2 - 驳回功能**:
1. 点击"驳回"按钮
2. ✅ 弹出确认对话框："确定要驳回此盘点任务吗？驳回后需要重新盘点。"
3. 点击"确定"
4. ✅ 显示成功提示："已驳回"
5. ✅ 对话框自动关闭
6. ✅ 任务状态变为"待盘点"（蓝色标签）

**测试点3 - 审批通过功能**:
1. 重新录入实盘数量并提交审批
2. 再次查看详情
3. 点击"审批通过"按钮
4. ✅ 弹出确认对话框："确定要审批通过吗？通过后将调整库存账面数量。"
5. 点击"确定"
6. ✅ 显示成功提示："审批通过，库存已调整"
7. ✅ 对话框自动关闭
8. ✅ 任务状态变为"已完成"（绿色标签）

### 步骤5: 验证其他状态

**已完成状态**:
1. 查看已完成的盘点任务详情
2. ✅ 底部只显示"关闭"按钮
3. ✅ 不显示"驳回"和"审批通过"按钮

**待盘点状态**:
1. 查看待盘点的任务详情
2. ✅ 底部只显示"关闭"按钮
3. ✅ 不显示"驳回"和"审批通过"按钮

## 用户界面展示

### 待审批状态的详情对话框

```
┌─────────────────────────────────────────────────┐
│ 📋 盘点任务详情                        [X]      │
├─────────────────────────────────────────────────┤
│                                                  │
│ 基本信息                                        │
│ ┌────────────┬────────────┬────────────┐       │
│ │任务编号    │任务名称    │盘点类型    │       │
│ │CHECK-001   │12月盘点    │全盘        │       │
│ └────────────┴────────────┴────────────┘       │
│                                                  │
│ 盘点汇总                                        │
│ ┌──────┬──────┬──────┬──────┐                  │
│ │总数  │正常  │盘盈  │盘亏  │                  │
│ │50项  │45项  │3项   │2项   │                  │
│ └──────┴──────┴──────┴──────┘                  │
│                                                  │
│ 盘点明细                                        │
│ [物料列表表格...]                                │
│                                                  │
├─────────────────────────────────────────────────┤
│ [关闭]              [驳回] [审批通过]           │
│                      🟠     🟢                   │
└─────────────────────────────────────────────────┘
```

### 其他状态的详情对话框

```
┌─────────────────────────────────────────────────┐
│ 📋 盘点任务详情                        [X]      │
├─────────────────────────────────────────────────┤
│ [内容...]                                        │
├─────────────────────────────────────────────────┤
│                                      [关闭]     │
└─────────────────────────────────────────────────┘
```

## 业务流程

```
创建任务 (待盘点)
    ↓
盘点录入
    ↓
提交审批 (待审批) ← 查看详情 → 显示审批按钮
    ↓                              ↓
    ├──────────────┬───────────────┤
    ↓              ↓               ↓
审批通过      点击驳回          点击通过
    ↓              ↓               ↓
已完成        待盘点           已完成
             (重新盘点)      (库存调整)
```

## 注意事项

### 1. 权限控制
当前实现中，任何查看详情的用户都可以进行审批操作。在实际应用中，应该：
- 检查用户是否有审批权限
- 只对有权限的用户显示审批按钮
- 记录审批人信息

### 2. 审批日志
建议添加审批日志记录：
- 审批时间
- 审批人
- 审批结果（通过/驳回）
- 审批意见

### 3. 驳回原因
当前驳回时没有要求填写驳回原因，建议：
- 添加驳回原因输入框
- 驳回原因必填
- 在任务详情中显示驳回原因

### 4. 库存调整
审批通过后应该：
- 根据盘点结果调整库存
- 生成库存变动记录
- 记录盘盈盘亏明细
- 更新物料批次数量

## 未来优化建议

### 短期优化（1周内）
1. 添加驳回原因输入
2. 记录审批日志
3. 实现权限检查
4. 实际调整库存数量

### 中期优化（1个月内）
1. 多级审批流程
2. 审批意见通知
3. 审批历史查询
4. 批量审批功能

### 长期优化（3个月内）
1. 移动端审批
2. 审批流程可配置
3. 审批数据分析
4. 自动审批规则

## 相关文档

- [盘点管理完整功能说明](./INVENTORY_CHECK_COMPLETE.md)
- [盘点表打印功能使用指南](./INVENTORY_PRINT_GUIDE.md)
- [盘点功能快速测试指南](./PRINT_QUICK_TEST.md)

## 总结

本次修复完善了盘点管理的审批流程，添加了必要的操作按钮，使整个盘点业务闭环更加完整。用户现在可以在详情对话框中直接完成审批操作，无需额外的步骤。

修复内容：
- ✅ 添加"驳回"和"审批通过"按钮
- ✅ 根据任务状态条件显示
- ✅ 添加确认对话框
- ✅ 优化函数签名支持参数传递
- ✅ 添加X图标导入
- ✅ 完善用户反馈提示
