import { request } from "./request";
|
import type { PageResult, UserSimple } from "./purchase";
|
import type { BusinessProduct, CrmContract, CrmCustomerSimple } from "./crm";
|
import type { AccountSimple, PurchaseProcess } from "./purchase";
|
import type { StorageFile } from "./crm";
|
|
export interface SalesTarget {
|
id?: number;
|
name?: string;
|
periodType?: number;
|
periodValue?: string;
|
startTime?: string;
|
endTime?: string;
|
targetDimension?: number;
|
targetUserId?: number;
|
targetUserName?: string;
|
targetDeptId?: number;
|
targetDeptName?: string;
|
targetItemId?: number;
|
targetItemName?: string;
|
contractTarget?: number;
|
receivableTarget?: number;
|
businessTarget?: number;
|
customerTarget?: number;
|
contractCountTarget?: number;
|
actualContractPrice?: number;
|
actualReceivablePrice?: number;
|
actualBusinessPrice?: number;
|
actualCustomerCount?: number;
|
actualContractCount?: number;
|
contractRate?: number;
|
receivableRate?: number;
|
businessRate?: number;
|
customerRate?: number;
|
contractCountRate?: number;
|
status?: number;
|
remark?: string;
|
creatorName?: string;
|
createTime?: string;
|
updateTime?: string;
|
}
|
|
export interface SaleOrderItem {
|
id?: number;
|
productId?: number;
|
productName?: string;
|
productCode?: string;
|
productUnitId?: number;
|
productUnitName?: string;
|
productSpecification?: string;
|
productPrice?: number;
|
count?: number;
|
taxPercent?: number;
|
taxPrice?: number;
|
totalProductPrice?: number;
|
totalPrice?: number;
|
stockCount?: number;
|
outCount?: number;
|
needProduction?: number;
|
mpsId?: number;
|
batchCode?: string;
|
remark?: string;
|
}
|
|
export interface SaleOrder {
|
id?: number;
|
no?: string;
|
status?: number;
|
customerId?: number;
|
customerName?: string;
|
contractId?: number;
|
contractNo?: string;
|
orderTime?: string;
|
saleUserId?: number;
|
saleUserName?: string;
|
accountId?: number;
|
accountName?: string;
|
totalCount?: number;
|
totalPrice?: number;
|
totalProductPrice?: number;
|
totalTaxPrice?: number;
|
discountPercent?: number;
|
discountPrice?: number;
|
depositPrice?: number;
|
remark?: string;
|
blobIds?: number[];
|
attachmentList?: StorageFile[];
|
creatorName?: string;
|
creator?: string;
|
createTime?: string;
|
updateTime?: string;
|
processInstanceId?: string | number;
|
productNames?: string;
|
outCount?: number;
|
outStatus?: number;
|
hasSalesNotice?: boolean;
|
canCreateSalesNotice?: boolean;
|
needProduction?: number;
|
productionStatus?: number;
|
productionFinishTime?: string;
|
items?: SaleOrderItem[];
|
}
|
|
export interface DeptSimple {
|
id: number;
|
name: string;
|
}
|
|
const header = (accessToken: string) => ({
|
Authorization: `Bearer ${accessToken}`,
|
});
|
function query(params: Record<string, string | number | boolean | undefined>) {
|
const content = Object.entries(params)
|
.filter(([, value]) => value !== undefined && value !== "")
|
.map(
|
([key, value]) =>
|
`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`
|
)
|
.join("&");
|
return content ? `?${content}` : "";
|
}
|
|
export function getSalesTargetPage(
|
accessToken: string,
|
params: {
|
pageNo: number;
|
pageSize: number;
|
sceneType?: number;
|
name?: string;
|
periodType?: number;
|
periodValue?: string;
|
targetDimension?: number;
|
status?: number;
|
}
|
) {
|
return request<PageResult<SalesTarget>>(
|
`/crm/sales-target/page${query(params)}`,
|
{ header: header(accessToken) }
|
);
|
}
|
export function getSalesTarget(accessToken: string, id: number) {
|
return request<SalesTarget>(`/crm/sales-target/get${query({ id })}`, {
|
header: header(accessToken),
|
});
|
}
|
export function createSalesTarget(accessToken: string, data: SalesTarget) {
|
return request<number>("/crm/sales-target/create", {
|
method: "POST",
|
data,
|
header: header(accessToken),
|
});
|
}
|
export function updateSalesTarget(accessToken: string, data: SalesTarget) {
|
return request<boolean>("/crm/sales-target/update", {
|
method: "PUT",
|
data,
|
header: header(accessToken),
|
});
|
}
|
export function deleteSalesTarget(accessToken: string, id: number) {
|
return request<boolean>(`/crm/sales-target/delete${query({ id })}`, {
|
method: "DELETE",
|
header: header(accessToken),
|
});
|
}
|
export function changeSalesTargetStatus(
|
accessToken: string,
|
id: number,
|
status: number
|
) {
|
return request<boolean>("/crm/sales-target/change-status", {
|
method: "PUT",
|
data: { id, status },
|
header: header(accessToken),
|
});
|
}
|
export function getSaleOrderPage(
|
accessToken: string,
|
params: {
|
pageNo: number;
|
pageSize: number;
|
no?: string;
|
customerId?: number;
|
status?: number;
|
outStatus?: number;
|
productionStatus?: number;
|
needProduction?: number;
|
productId?: number;
|
creator?: string;
|
}
|
) {
|
return request<PageResult<SaleOrder>>(`/erp/sale-order/page${query(params)}`, {
|
header: header(accessToken),
|
});
|
}
|
export function getSaleOrder(accessToken: string, id: number) {
|
return request<SaleOrder>(`/erp/sale-order/get${query({ id })}`, {
|
header: header(accessToken),
|
});
|
}
|
export function createSaleOrder(accessToken: string, data: SaleOrder) {
|
return request<number>("/erp/sale-order/create", {
|
method: "POST",
|
data,
|
header: header(accessToken),
|
});
|
}
|
export function updateSaleOrder(accessToken: string, data: SaleOrder) {
|
return request<boolean>("/erp/sale-order/update", {
|
method: "PUT",
|
data,
|
header: header(accessToken),
|
});
|
}
|
export function deleteSaleOrder(accessToken: string, id: number) {
|
return request<boolean>(`/erp/sale-order/delete${query({ ids: id })}`, {
|
method: "DELETE",
|
header: header(accessToken),
|
});
|
}
|
export function updateSaleOrderStatus(
|
accessToken: string,
|
id: number,
|
status: number
|
) {
|
return request<boolean>(`/erp/sale-order/update-status${query({ id, status })}`, {
|
method: "PUT",
|
header: header(accessToken),
|
});
|
}
|
export function cancelSaleOrder(accessToken: string, id: number) {
|
return request<boolean>(`/erp/sale-order/cancel${query({ id })}`, {
|
method: "PUT",
|
header: header(accessToken),
|
});
|
}
|
export function enableSaleOrder(accessToken: string, id: number) {
|
return request<boolean>(`/erp/sale-order/enable${query({ id })}`, {
|
method: "PUT",
|
header: header(accessToken),
|
});
|
}
|
export function getSaleOrderApproveProcessList(accessToken: string) {
|
return request<PurchaseProcess[]>("/erp/sale-order/approve-process-list", {
|
header: header(accessToken),
|
});
|
}
|
export function submitSaleOrder(
|
accessToken: string,
|
id: number,
|
processDefinitionKey: string
|
) {
|
return request<boolean>(
|
`/erp/sale-order/submit${query({ id, processDefinitionKey })}`,
|
{ method: "POST", data: {}, header: header(accessToken) }
|
);
|
}
|
export function generateSalesNoticeFromSaleOrder(accessToken: string, saleOrderId: number) {
|
return request<number>("/mes/wm/sales-notice/generate-from-sale-order", {
|
method: "POST",
|
data: { saleOrderId },
|
header: header(accessToken),
|
});
|
}
|
export function getDeptSimpleList(accessToken: string) {
|
return request<DeptSimple[]>("/system/dept/simple-list", {
|
header: header(accessToken),
|
});
|
}
|
export function getAccountSimpleList(accessToken: string) {
|
return request<AccountSimple[]>("/erp/account/simple-list", {
|
header: header(accessToken),
|
});
|
}
|
|
export type {
|
AccountSimple,
|
BusinessProduct,
|
CrmContract,
|
CrmCustomerSimple,
|
UserSimple,
|
};
|