OMS_H5/概要设计文档.md

273 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 微信小程序H5审批系统 - 概要设计文档
## 1. 项目概述
### 1.1 项目背景
开发一个运行在微信小程序WebView中的H5应用主要用于处理审批流程包括列表查看、详情展示和审批操作。
### 1.2 项目目标
- 提供流畅的审批流程体验
- 适配微信小程序WebView环境
- 支持移动端友好的界面设计
- 高效的接口调用和数据展示
## 2. 技术架构
### 2.1 技术栈选择
- **前端框架**: Vue 3.3.4 + TypeScript
- **构建工具**: Vite 4.4.9
- **UI组件库**: Vant 4.6.6 (专为移动端设计)
- **HTTP客户端**: Axios 1.5.0
- **路由管理**: Vue Router 4.2.4
- **状态管理**: Pinia 2.1.6
- **样式预处理器**: SCSS (Sass)
- **PDF预览**: vue-pdf-embed + pdfjs-dist
### 2.2 项目结构
```
oms_vue/
├── public/
├── src/
│ ├── api/ # API接口管理
│ │ ├── auth.ts # 认证接口
│ │ ├── order.ts # 订单相关接口
│ │ ├── purchase.ts # 采购相关接口
│ │ └── todo.ts # 待办相关接口
│ ├── router/ # 路由配置
│ ├── store/ # 状态管理
│ │ ├── auth.ts # 认证状态
│ │ ├── order.ts # 订单状态
│ │ └── purchase.ts # 采购状态
│ ├── styles/ # 全局样式
│ ├── types/ # TypeScript类型定义
│ ├── utils/ # 工具函数 (http封装等)
│ ├── views/ # 页面组件
│ │ ├── Home/ # 审批中心主页 (含抽屉菜单)
│ │ ├── List/ # 订单审批列表组件
│ │ ├── Purchase/ # 采购审批列表组件
│ │ ├── Detail/ # 订单详情页面
│ │ ├── PurchaseDetail/# 采购详情页面
│ │ └── Login/ # 登录页面
│ ├── App.vue
│ └── main.ts
├── .env.development # 开发环境配置
├── .env.production # 生产环境配置
├── package.json
└── vite.config.ts
```
## 3. 功能模块设计
### 3.0 主页面模块(审批中心)
**功能描述**: 提供左侧抽屉菜单导航,统一管理不同类型的审批入口。
**组件位置**: `src/views/Home/index.vue`
**页面架构**:
- **顶部导航栏**: 显示当前菜单标题、菜单图标和退出按钮。
- **左侧抽屉菜单**: 展示所有审批类型的菜单项(订单审批、采购审批)。
- **内容区域**: 根据选中的菜单项动态切换显示 `List` (订单列表) 或 `Purchase` (采购列表) 组件。
**主要功能**:
- 抽屉式菜单切换审批类型。
- 统一的退出登录功能。
- 动态组件 (`<component :is="...">`) 切换列表视图。
**菜单配置**:
1. **订单审批** (icon: notes-o) -> 对应 `List` 组件
2. **采购审批** (icon: shopping-cart-o) -> 对应 `Purchase` 组件
### 3.1 订单审批列表模块
**功能描述**: 采用双Tab设计支持查看待审批和已审批两种状态的订单列表。
**组件位置**: `src/views/List/index.vue`
**Tab设计**:
- **Tab1 - 待审批**: 展示用户需要审批的订单。支持按"订单编号"、"客户名称"搜索。
- **Tab2 - 已审批**: 展示用户已审批的历史记录。支持按"合同名称"搜索。
**数据展示**:
- **待审批**: 订单编号、项目名称、客户名称、订单金额、创建时间。
- **已审批**: 合同编号、合同名称、流程名称、发起人、审批时间、审批状态、审批意见。
**接口定义**:
- **待审批列表**: `POST /project/order/list`
- **已审批列表**: `POST /flow/completed/list`
### 3.2 订单详情页面模块
**功能描述**: 展示订单详细信息、附件、审批历史,并提供审批操作。
**组件位置**: `src/views/Detail/index.vue`
**路由**: `/detail/:id`
**主要功能**:
- **项目/订单信息**: 客户信息、金额、相关人员等。
- **产品明细**: 软件、硬件、维保产品列表。
- **附件查看**: 合同附件、配置附件等。
- **审批历史**: 展示审批流转记录。
- **审批操作**: 通过、驳回、填写意见。
**接口定义**:
- **获取详情**: `GET /project/order/h5/approve/{id}`
- **提交审批**: `POST /project/order/order/approve`
### 3.3 采购审批列表模块
**功能描述**: 采用双Tab设计支持查看待审批和已审批的采购单。
**组件位置**: `src/views/Purchase/index.vue`
**Tab设计**:
- **Tab1 - 待审批**: 展示待审批采购单。支持按"采购单号"搜索。
- **Tab2 - 已审批**: 展示已审批采购记录。支持按"合同名称"搜索。
**接口定义**:
- **待审批列表**: `GET /sip/purchaseorder/approveList`
- **已审批列表**: `POST /flow/completed/list` (参数 `processKeyList` 包含 `purchase_order_online` 等)
### 3.4 采购详情页面模块
**功能描述**: 展示采购单详细信息和产品列表,支持审批操作。
**组件位置**: `src/views/PurchaseDetail/index.vue`
**路由**: `/purchase-detail/:id` (id为采购单号 purchaseNo)
**页面架构**:
- **Tab1 - 订单信息**: 采购单号、供应商、金额、付款方式、仓库等基本信息。
- **Tab2 - 采购列表**: 采购产品明细(型号、描述、数量、单价、小计)。
- **底部操作栏**: 审批通过/驳回按钮。
**接口定义**:
- **获取详情**: `GET /sip/purchaseorder/code/{purchaseNo}`
- **提交审批**: `POST /flow/todo/approve`
- **审批历史**: `POST /flow/completed/all/list`
## 4. 数据接口规范
### 4.1 通用响应格式
```typescript
interface ApiResponse<T> {
code: number; // 0 表示成功
msg: string | null;
rows: T; // 列表数据通常在这里 (注意:部分接口可能在 data 字段)
total?: number; // 分页总数
}
```
### 4.2 核心API接口
#### 4.2.1 认证 (Auth)
- `POST /login`: 用户登录 (FormData: username, password, rememberMe)
#### 4.2.2 订单 (Order)
- `POST /project/order/list`: 获取待审批订单列表
- 参数: `approve="approve"`, `page`, `pageSize`, `keyword`
- `POST /flow/completed/list`: 获取已审批订单列表
- 参数: `page`, `pageSize`, `businessName`, `processKeyList`
- `GET /project/order/h5/approve/{id}`: 获取订单详情
- `POST /project/order/order/approve`: 提交订单审批
- 参数: `todoId`, `approveStatus`, `approveOpinion`, `variables`, `taxRateData`
#### 4.2.3 采购 (Purchase)
- `GET /sip/purchaseorder/approveList`: 获取采购待审批列表
- 参数: `page`, `pageSize`, `keyword`
- `POST /flow/completed/list`: 获取采购已审批列表 (复用流程接口)
- 参数: `processKeyList` (如 `['purchase_order_online']`)
- `GET /sip/purchaseorder/code/{purchaseNo}`: 获取采购详情
- `POST /flow/todo/approve`: 提交采购审批 (注意与订单审批接口不同)
- `POST /flow/completed/all/list`: 获取采购审批历史
## 5. 数据模型 (TypeScript Types)
### 5.1 订单相关
```typescript
// 订单信息
interface Order {
id: number;
orderCode: string;
projectName: string;
customerName: string;
shipmentAmount: number;
orderStatus: '0' | '1' | '2';
// ... 其他字段
}
// 订单详情响应
interface OrderDetailResponse {
projectOrderInfo: Order & {
contractFileList: AttachmentFile[];
softwareProjectProductInfoList: ProductInfo[];
hardwareProjectProductInfoList: ProductInfo[];
// ...
};
approveLog: ApprovalRecord[];
user: UserInfo;
}
```
### 5.2 采购相关
```typescript
// 采购单列表项
interface Purchase {
id: number;
purchaseNo: string;
approveStatus: string;
vendorName: string;
ownerName: string;
totalAmount: number;
createTime: string;
}
// 采购详情
interface PurchaseDetail {
id: number;
purchaseNo: string;
purchaserName: string;
warehouseName: string;
payMethod: string;
omsPurchaseOrderItemList: PurchaseOrderItem[];
// ...
}
// 采购产品项
interface PurchaseOrderItem {
productCode: string;
productModel: string;
productDescription: string;
quantity: number;
price: number;
}
```
## 6. 部署与环境
### 6.1 环境变量
- `VITE_API_BASE_URL`: 后端API地址
- `VITE_FILE_BASE_URL`: 文件服务器地址 (用于图片/PDF预览)
### 6.2 微信小程序适配
- 使用 `viewport` meta 标签禁止缩放。
- 检测 `window.__wxjs_environment` 识别环境。
- 使用 `@vant/touch-emulator` 在桌面端调试触摸事件。
## 7. 更新日志
### v1.4 - 2026-01-06 (Current)
**文档同步更新**
- 根据实际代码库结构和API实现更新了概要设计文档。
- 明确了订单审批与采购审批使用不同的提交接口。
- 完善了采购模块的接口定义和数据模型描述。
- 确认了项目采用 Vue 3.3 + Vite 4.4 + Vant 4.6 技术栈。
### v1.3 - 2025-12-01
**功能完善:实现采购详情页面**
- 独立实现采购详情页面 `PurchaseDetail`
- 对接采购详情接口和状态管理。
### v1.2 - 2025-12-01
**功能实现:对接采购审批接口**
- 实现采购待审批列表。
- 预留已审批列表对接逻辑。
### v1.1 - 2025-12-01
**架构优化:添加左侧抽屉菜单**
- 重构 `Home` 页面,引入抽屉菜单切换 "订单审批" 和 "采购审批"。