OMS_H5/概要设计文档.md

9.1 KiB
Raw Permalink Blame History

微信小程序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 通用响应格式

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 订单相关

// 订单信息
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 采购相关

// 采购单列表项
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 页面,引入抽屉菜单切换 "订单审批" 和 "采购审批"。