---
name: api-service-pattern
description: API 接口定义模式,包括类型定义、接口函数、分页查询、命名空间规范。
项目 API 接口开发规范,使用 namespace 组织类型和函数。
src/api/
└── mes/
└── pro/
└── workorder/
├── index.ts # 工单接口
└── bom/
└── index.ts # 工单 BOM 接口
import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace WorkOrderApi {
/** 工单信息 */
export interface WorkOrder {
id?: number; // 编号
code?: string; // 编码
name?: string; // 名称
status?: number; // 状态
createTime?: number; // 创建时间
}
/** 分页查询参数 */
export interface PageParams extends PageParam {
code?: string;
name?: string;
status?: number;
}
}
/** 查询工单分页 */
export function getWorkOrderPage(params: WorkOrderApi.PageParams) {
return requestClient.get<PageResult<WorkOrderApi.WorkOrder>>(
'/mes/pro/work-order/page',
{ params },
);
}
/** 查询工单详情 */
export function getWorkOrder(id: number) {
return requestClient.get<WorkOrderApi.WorkOrder>(
`/mes/pro/work-order/get?id=${id}`,
);
}
/** 新增工单 */
export function createWorkOrder(data: WorkOrderApi.WorkOrder) {
return requestClient.post<number>('/mes/pro/work-order/create', data);
}
/** 修改工单 */
export function updateWorkOrder(data: WorkOrderApi.WorkOrder) {
return requestClient.put('/mes/pro/work-order/update', data);
}
/** 删除工单 */
export function deleteWorkOrder(id: number) {
return requestClient.delete(`/mes/pro/work-order/delete?id=${id}`);
}
/** 导出工单 */
export function exportWorkOrder(params: any) {
return requestClient.download('/mes/pro/work-order/export-excel', { params });
}
export namespace ItemApi {
/** 物料信息 */
export interface Item {
id?: number; // 编号(可选,新增时无)
code: string; // 编码(必填)
name: string; // 名称(必填)
specification?: string; // 规格型号
unitMeasureId?: number; // 单位编号
unitMeasureName?: string; // 单位名称(冗余字段)
status?: number; // 状态
remark?: string; // 备注
createTime?: number; // 创建时间
}
}
export namespace ItemApi {
/** 分页查询参数 */
export interface PageParams extends PageParam {
code?: string; // 编码(模糊)
name?: string; // 名称(模糊)
status?: number; // 状态
categoryId?: number; // 分类编号
createTime?: number[]; // 创建时间范围
}
}
export namespace ProcessApi {
/** 工序精简信息(下拉选择用) */
export interface ProcessSimple {
id: number;
code: string;
name: string;
}
}
/** 查询工序列表 */
export function getProcessList(params?: ProcessApi.ListParams) {
return requestClient.get<ProcessApi.Process[]>(
'/mes/pro/process/list',
{ params },
);
}
/** 查询工序精简列表 */
export function getProcessSimpleList() {
return requestClient.get<ProcessApi.ProcessSimple[]>(
'/mes/pro/process/simple-list',
);
}
| 操作 | 方法 | URL 格式 | 返回类型 |
|---|---|---|---|
| 分页查询 | GET | /module/page |
PageResult<T> |
| 列表查询 | GET | /module/list |
T[] |
| 精简列表 | GET | /module/simple-list |
SimpleT[] |
| 详情查询 | GET | /module/get?id= |
T |
| 新增 | POST | /module/create |
number |
| 修改 | PUT | /module/update |
void |
| 删除 | DELETE | /module/delete?id= |
void |
| 导出 | GET | /module/export-excel |
Blob |
子模块接口放在父模块目录下:
src/api/mes/pro/workorder/
├── index.ts # 工单接口
└── bom/
└── index.ts # 工单 BOM 接口
// bom/index.ts
export namespace WorkOrderBomApi {
export interface WorkOrderBom {
id?: number;
workOrderId?: number; // 关联父表
itemId?: number;
itemName?: string;
quantity?: number;
}
export interface PageParams extends PageParam {
workOrderId?: number; // 必须有父表 ID
}
}
// 导入类型
import type { WorkOrderApi } from '#/api/mes/pro/workorder';
import type { WorkOrderBomApi } from '#/api/mes/pro/workorder/bom';
// 导入函数
import { getWorkOrderPage, createWorkOrder } from '#/api/mes/pro/workorder';
pageNo、pageSizerequestClient.get<T>/module/get?id=${id}