import { request } from './request';
|
|
export interface PageResult<T> {
|
list: T[];
|
total: number;
|
}
|
|
export interface MaterialItem {
|
id?: number;
|
code: string;
|
name: string;
|
specification?: string;
|
categoryId?: number;
|
categoryName?: string;
|
unitMeasureId?: number;
|
unitMeasureName?: string;
|
unitMeasureId2?: number;
|
unitMeasureName2?: string;
|
unitMeasureRate1?: number;
|
unitMeasureId3?: number;
|
unitMeasureName3?: string;
|
unitMeasureRate2?: number;
|
itemType?: number;
|
status: number;
|
purchasePrice?: number;
|
salesPrice?: number;
|
costPrice?: number;
|
safetyStock?: number;
|
minStock?: number;
|
maxStock?: number;
|
warehouseId?: number;
|
warehouseCode?: string;
|
warehouseName?: string;
|
remark?: string;
|
isBatchManaged?: boolean;
|
produceDateFlag?: boolean;
|
expireDateFlag?: boolean;
|
receiptDateFlag?: boolean;
|
vendorFlag?: boolean;
|
purchaseOrderCodeFlag?: boolean;
|
lotNumberFlag?: boolean;
|
qualityStatusFlag?: boolean;
|
expiryDay?: number;
|
syncMes?: boolean;
|
syncedMes?: boolean;
|
}
|
|
export interface MaterialCategory {
|
id?: number;
|
parentId?: number;
|
code?: string;
|
name?: string;
|
itemOrProduct?: string;
|
sort?: number;
|
status?: number;
|
remark?: string;
|
children?: MaterialCategory[];
|
}
|
|
export interface MeasureUnit {
|
id?: number;
|
code: string;
|
name: string;
|
primaryFlag?: boolean;
|
primaryId?: number;
|
changeRate?: number;
|
status: number;
|
remark?: string;
|
}
|
|
function authHeader(accessToken: string) {
|
return { Authorization: `Bearer ${accessToken}` };
|
}
|
|
function toQuery(params: Record<string, string | number | boolean | undefined>) {
|
const query = Object.keys(params)
|
.filter((key) => params[key] !== undefined && params[key] !== '')
|
.map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(String(params[key]))}`)
|
.join('&');
|
return query ? `?${query}` : '';
|
}
|
|
export function getMaterialPage(accessToken: string, params: { pageNo: number; pageSize: number; name?: string; code?: string; status?: number }) {
|
return request<PageResult<MaterialItem>>(`/mdm/item/page${toQuery(params)}`, { header: authHeader(accessToken) });
|
}
|
export function getMaterial(accessToken: string, id: number) {
|
return request<MaterialItem>(`/mdm/item/get${toQuery({ id })}`, { header: authHeader(accessToken) });
|
}
|
export function createMaterial(accessToken: string, data: MaterialItem) {
|
return request<number>('/mdm/item/create', { method: 'POST', data, header: authHeader(accessToken) });
|
}
|
export function updateMaterial(accessToken: string, data: MaterialItem) {
|
return request<boolean>('/mdm/item/update', { method: 'PUT', data, header: authHeader(accessToken) });
|
}
|
export function deleteMaterial(accessToken: string, id: number) {
|
return request<boolean>(`/mdm/item/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) });
|
}
|
export function deleteMaterialList(accessToken: string, ids: number[] | string) {
|
return request<boolean>(`/mdm/item/delete-list${toQuery({ ids: Array.isArray(ids) ? ids.join(',') : ids })}`, { method: 'DELETE', header: authHeader(accessToken) });
|
}
|
export function updateMaterialStatus(accessToken: string, id: number, status: number) {
|
return request<boolean>('/mdm/item/update-status', { method: 'PUT', data: { id, status }, header: authHeader(accessToken) });
|
}
|
export function updateMaterialSync(accessToken: string, id: number, sync: boolean) {
|
return request<boolean>('/mdm/item/update-sync', { method: 'PUT', data: { id, sync }, header: authHeader(accessToken) });
|
}
|
|
export function getMaterialCategoryList(accessToken: string, params: { name?: string; status?: number } = {}) {
|
return request<MaterialCategory[]>(`/mes/md/item-type/list${toQuery(params)}`, { header: authHeader(accessToken) });
|
}
|
export function getMaterialCategorySimpleList(accessToken: string) {
|
return request<MaterialCategory[]>('/mes/md/item-type/simple-list', { header: authHeader(accessToken) });
|
}
|
export function getMaterialCategory(accessToken: string, id: number) {
|
return request<MaterialCategory>(`/mes/md/item-type/get${toQuery({ id })}`, { header: authHeader(accessToken) });
|
}
|
export function generateMaterialCategoryCode(accessToken: string): Promise<string> {
|
return request<string>('/mes/md/auto-code-record/generate', {
|
method: 'POST',
|
data: { ruleCode: 'MD_ITEM_TYPE_CODE' },
|
header: authHeader(accessToken),
|
});
|
}
|
export function createMaterialCategory(accessToken: string, data: MaterialCategory) {
|
return request<number>('/mes/md/item-type/create', { method: 'POST', data, header: authHeader(accessToken) });
|
}
|
export function updateMaterialCategory(accessToken: string, data: MaterialCategory) {
|
return request<boolean>('/mes/md/item-type/update', { method: 'PUT', data, header: authHeader(accessToken) });
|
}
|
export function deleteMaterialCategory(accessToken: string, id: number) {
|
return request<boolean>(`/mes/md/item-type/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) });
|
}
|
|
export function getMeasureUnitPage(accessToken: string, params: { pageNo: number; pageSize: number; name?: string; code?: string; status?: number }) {
|
return request<PageResult<MeasureUnit>>(`/mdm/unit/page${toQuery(params)}`, { header: authHeader(accessToken) });
|
}
|
/**
|
* 计量单位候选列表(下拉/选择器用)。
|
* 对齐 web 的 MdUnitMeasureSelect:web 走的就是 `/mdm/unit/page`(pageSize 100),
|
* 而不是 `/mes/md/unit-measure/simple-list`(该接口实测恒返回空,见 2026-10-10 日志)。
|
*/
|
export async function getMeasureUnitList(accessToken: string) {
|
const res = await getMeasureUnitPage(accessToken, { pageNo: 1, pageSize: 100 });
|
return res?.list || [];
|
}
|
export function getMeasureUnit(accessToken: string, id: number) {
|
return request<MeasureUnit>(`/mdm/unit/get${toQuery({ id })}`, { header: authHeader(accessToken) });
|
}
|
export function createMeasureUnit(accessToken: string, data: MeasureUnit) {
|
return request<number>('/mdm/unit/create', { method: 'POST', data, header: authHeader(accessToken) });
|
}
|
export function updateMeasureUnit(accessToken: string, data: MeasureUnit) {
|
return request<boolean>('/mdm/unit/update', { method: 'PUT', data, header: authHeader(accessToken) });
|
}
|
export function deleteMeasureUnit(accessToken: string, id: number) {
|
return request<boolean>(`/mdm/unit/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) });
|
}
|