Files
cody-crm/frontend/packages/lib-shared/api/modules/opportunity.ts
wangziqi 72e2110987
Some checks failed
Synchronize to Gitee / repo-sync (push) Has been cancelled
Typos Checking / Spell Check with Typos (push) Has been cancelled
chore: initial commit
2026-06-23 11:56:23 +08:00

552 lines
16 KiB
TypeScript

import type { CordysAxios } from '@lib/shared/api/http/Axios';
import {
AddBusinessViewUrl,
AddOpportunityStageUrl,
AddOptFollowPlanUrl,
AddOptFollowRecordUrl,
AddQuotationUrl,
AddQuotationViewUrl,
AdvancedSearchOptDetailUrl,
AdvancedSearchOptPageUrl,
ApprovalQuotationUrl,
BatchApproveUrl,
BatchUpdateQuotationUrl,
BatchUpdateOpportunityUrl,
BatchVoidedUrl,
CancelOptFollowPlanUrl,
DeleteBusinessViewUrl,
DeleteOpportunityStageUrl,
DeleteOptFollowPlanUrl,
DeleteOptFollowRecordUrl,
DeleteQuotationUrl,
DeleteQuotationViewUrl,
DownloadOptTemplateUrl,
DownloadQuotationUrl,
DragBusinessViewUrl,
DragQuotationViewUrl,
EnableBusinessViewUrl,
EnableQuotationViewUrl,
ExportOpportunityAllUrl,
ExportOpportunitySelectedUrl,
FixedBusinessViewUrl,
FixedQuotationViewUrl,
GenerateOpportunityChartUrl,
GetBusinessViewDetailUrl,
GetBusinessViewListUrl,
GetOpportunityContactListUrl,
GetOpportunityStageConfigUrl,
GetOptDetailUrl,
GetOptFollowPlanUrl,
GetOptFollowRecordUrl,
GetOptFormConfigUrl,
GetOptStatisticUrl,
GetOptTabUrl,
GetQuotationDetailUrl,
GetQuotationFormConfigUrl,
GetQuotationSnapshotDetailUrl,
GetQuotationSnapshotFormConfigUrl,
GetQuotationTabUrl,
GetQuotationViewDetailUrl,
GetQuotationViewListUrl,
GlobalSearchOptPageUrl,
ImportOpportunityUrl,
OptAddUrl,
OptBatchDeleteUrl,
OptBatchTransferUrl,
OptDeleteUrl,
OptFollowPlanPageUrl,
OptFollowRecordListUrl,
OptPageUrl,
OptUpdateStageUrl,
OptUpdateUrl,
PreCheckOptImportUrl,
QuotationPageUrl,
RevokeQuotationUrl,
SortOpportunityStageUrl,
SortOpportunityUrl,
UpdateBusinessViewUrl,
UpdateOpportunityStageRollbackUrl,
UpdateOpportunityStageUrl,
UpdateOptFollowPlanStatusUrl,
UpdateOptFollowPlanUrl,
UpdateOptFollowRecordUrl,
UpdateQuotationUrl,
UpdateQuotationViewUrl,
VoidQuotationUrl,
} from '@lib/shared/api/requrls/opportunity';
import type {
ChartResponseDataItem,
CommonList,
GenerateChartParams,
TableDraggedParams,
TableExportParams,
TableExportSelectedParams,
TableQueryParams,
} from '@lib/shared/models/common';
import type {
BatchUpdatePoolAccountParams,
CustomerContractTableParams,
CustomerFollowPlanTableParams,
CustomerFollowRecordTableParams,
CustomerTabHidden,
FollowDetailItem,
SaveCustomerFollowPlanParams,
SaveCustomerFollowRecordParams,
TransferParams,
UpdateCustomerFollowPlanParams,
UpdateCustomerFollowRecordParams,
UpdateFollowPlanStatusParams,
} from '@lib/shared/models/customer';
import type {
AddOpportunityStageParams,
ApproveQuotation,
BatchOperationResult,
BatchUpdateQuotationStatusParams,
BatchVoidQuotationStatusParams,
StageBoardPageQueryParams,
StageBoardDraggedParams,
OpportunityDetail,
OpportunityItem,
OpportunityStageConfig,
QuotationItem,
QuotationQueryParams,
SaveOpportunityParams,
SaveQuotationParams,
UpdateOpportunityParams,
UpdateOpportunityStageParams,
UpdateOpportunityStageRollbackParams,
UpdateQuotationParams,
} from '@lib/shared/models/opportunity';
import type { FormDesignConfigDetailParams } from '@lib/shared/models/system/module';
import { ValidateInfo } from '@lib/shared/models/system/org';
import type { ViewItem, ViewParams } from '@lib/shared/models/view';
export default function useProductApi(CDR: CordysAxios) {
// 商机列表
function getOpportunityList(data: StageBoardPageQueryParams) {
return CDR.post<CommonList<OpportunityItem>>({ url: OptPageUrl, data }, { ignoreCancelToken: true });
}
// 添加商机
function addOpportunity(data: SaveOpportunityParams) {
return CDR.post({ url: OptAddUrl, data });
}
// 更新商机
function updateOpportunity(data: UpdateOpportunityParams) {
return CDR.post({ url: OptUpdateUrl, data });
}
// 商机详情
function getOpportunityDetail(id: string) {
return CDR.get<OpportunityDetail>({ url: `${GetOptDetailUrl}/${id}` });
}
// 商机看板拖拽排序
function sortOpportunity(data: StageBoardDraggedParams) {
return CDR.post({ url: SortOpportunityUrl, data });
}
// 获取商机表单配置
function getOptFormConfig() {
return CDR.get<FormDesignConfigDetailParams>({ url: GetOptFormConfigUrl });
}
// 商机跟进记录列表
function getOptFollowRecordList(data: CustomerFollowRecordTableParams) {
return CDR.post<CommonList<FollowDetailItem>>({ url: OptFollowRecordListUrl, data });
}
// 删除商机跟进记录
function deleteOptFollowRecord(id: string) {
return CDR.get({ url: `${DeleteOptFollowRecordUrl}/${id}` });
}
// 添加商机跟进记录
function addOptFollowRecord(data: SaveCustomerFollowRecordParams) {
return CDR.post({ url: AddOptFollowRecordUrl, data });
}
// 更新商机跟进记录
function updateOptFollowRecord(data: UpdateCustomerFollowRecordParams) {
return CDR.post({ url: UpdateOptFollowRecordUrl, data });
}
// 获取商机跟进记录详情
function getOptFollowRecord(id: string) {
return CDR.get<FollowDetailItem>({ url: `${GetOptFollowRecordUrl}/${id}` });
}
// 跟进计划列表
function getOptFollowPlanList(data: CustomerFollowPlanTableParams) {
return CDR.post<CommonList<FollowDetailItem>>({ url: OptFollowPlanPageUrl, data });
}
// 添加商机跟进计划
function addOptFollowPlan(data: SaveCustomerFollowPlanParams) {
return CDR.post({ url: AddOptFollowPlanUrl, data });
}
// 更新商机跟进计划
function updateOptFollowPlan(data: UpdateCustomerFollowPlanParams) {
return CDR.post({ url: UpdateOptFollowPlanUrl, data });
}
// 删除商机跟进计划
function deleteOptFollowPlan(id: string) {
return CDR.get({ url: `${DeleteOptFollowPlanUrl}/${id}` });
}
// 获取商机跟进计划详情
function getOptFollowPlan(id: string) {
return CDR.get<FollowDetailItem>({ url: `${GetOptFollowPlanUrl}/${id}` });
}
// 取消商机跟进计划
function cancelOptFollowPlan(id: string) {
return CDR.get({ url: `${CancelOptFollowPlanUrl}/${id}` });
}
// 批量转移商机
function transferOpt(data: TransferParams) {
return CDR.post({ url: OptBatchTransferUrl, data });
}
// 批量删除商机
function batchDeleteOpt(data: (string | number)[]) {
return CDR.post({ url: OptBatchDeleteUrl, data });
}
// 删除商机
function deleteOpt(id: string) {
return CDR.get({ url: `${OptDeleteUrl}/${id}` });
}
// 更新商机阶段
function updateOptStage(data: { id: string; stage: string; failureReason?: string | null }) {
return CDR.post({ url: OptUpdateStageUrl, data });
}
// 获取商机tab显隐藏
function getOptTab() {
return CDR.get<CustomerTabHidden>({ url: GetOptTabUrl });
}
// 获取商机联系人列表
function getOpportunityContactList(data: CustomerContractTableParams) {
return CDR.get({ url: `${GetOpportunityContactListUrl}/${data.id}` });
}
// 更新商机跟进计划状态
function updateOptFollowPlanStatus(data: UpdateFollowPlanStatusParams) {
return CDR.post({ url: UpdateOptFollowPlanStatusUrl, data });
}
// 导出全量商机列表
function exportOpportunityAll(data: TableExportParams) {
return CDR.post({ url: ExportOpportunityAllUrl, data });
}
// 导出选中商机列表
function exportOpportunitySelected(data: TableExportSelectedParams) {
return CDR.post({ url: ExportOpportunitySelectedUrl, data });
}
// 商机列表的金额数据
function getOptStatistic(data: TableQueryParams) {
return CDR.post({ url: GetOptStatisticUrl, data }, { ignoreCancelToken: true });
}
// 更新商机阶段配置
function updateOpportunityStage(data: UpdateOpportunityStageParams) {
return CDR.post({ url: UpdateOpportunityStageUrl, data });
}
// 商机阶段回退配置
function updateOpportunityStageRollback(data: UpdateOpportunityStageRollbackParams) {
return CDR.post({ url: UpdateOpportunityStageRollbackUrl, data });
}
// 商机阶段排序
function sortOpportunityStage(data: string[]) {
return CDR.post({ url: SortOpportunityStageUrl, data });
}
// 添加商机阶段
function addOpportunityStage(data: AddOpportunityStageParams) {
return CDR.post({ url: AddOpportunityStageUrl, data });
}
// 获取商机阶段配置
function getOpportunityStageConfig() {
return CDR.get<OpportunityStageConfig>({ url: GetOpportunityStageConfigUrl }, { ignoreCancelToken: true });
}
// 删除商机阶段
function deleteOpportunityStage(id: string) {
return CDR.get({ url: `${DeleteOpportunityStageUrl}/${id}` });
}
// 生成商机图表
function generateOpportunityChart(data: GenerateChartParams) {
return CDR.post<ChartResponseDataItem[]>({ url: GenerateOpportunityChartUrl, data });
}
// 商机视图
function addBusinessView(data: ViewParams) {
return CDR.post({ url: AddBusinessViewUrl, data });
}
function updateBusinessView(data: ViewParams) {
return CDR.post({ url: UpdateBusinessViewUrl, data });
}
function getBusinessViewList() {
return CDR.get<ViewItem[]>({ url: GetBusinessViewListUrl });
}
function getBusinessViewDetail(id: string) {
return CDR.get({ url: `${GetBusinessViewDetailUrl}/${id}` });
}
function fixedBusinessView(id: string) {
return CDR.get({ url: `${FixedBusinessViewUrl}/${id}` });
}
function enableBusinessView(id: string) {
return CDR.get({ url: `${EnableBusinessViewUrl}/${id}` });
}
function deleteBusinessView(id: string) {
return CDR.get({ url: `${DeleteBusinessViewUrl}/${id}` });
}
function dragBusinessView(data: TableDraggedParams) {
return CDR.post({ url: DragBusinessViewUrl, data });
}
function globalSearchOptPage(data: TableQueryParams) {
return CDR.post<CommonList<OpportunityItem>>({ url: GlobalSearchOptPageUrl, data }, { ignoreCancelToken: true });
}
function advancedSearchOptPage(data: TableQueryParams) {
return CDR.post<CommonList<OpportunityItem>>({ url: AdvancedSearchOptPageUrl, data }, { ignoreCancelToken: true });
}
function advancedSearchOptDetail(data: TableQueryParams) {
return CDR.post<CommonList<OpportunityItem>>({ url: AdvancedSearchOptDetailUrl, data });
}
function preCheckImportOpt(file: File) {
return CDR.uploadFile<{ data: ValidateInfo }>({ url: PreCheckOptImportUrl }, { fileList: [file] }, 'file');
}
function downloadOptTemplate() {
return CDR.get(
{
url: DownloadOptTemplateUrl,
responseType: 'blob',
},
{ isTransformResponse: false, isReturnNativeResponse: true }
);
}
function importOpportunity(file: File) {
return CDR.uploadFile({ url: ImportOpportunityUrl }, { fileList: [file] }, 'file');
}
// 批量更新商机
function batchUpdateOpportunity(data: BatchUpdatePoolAccountParams) {
return CDR.post({ url: BatchUpdateOpportunityUrl, data });
}
// 获取商机报价单tab显隐藏
function getQuotationTab() {
return CDR.get<CustomerTabHidden>({ url: GetQuotationTabUrl });
}
// 报价单视图
function addQuotationView(data: ViewParams) {
return CDR.post({ url: AddQuotationViewUrl, data });
}
function updateQuotationView(data: ViewParams) {
return CDR.post({ url: UpdateQuotationViewUrl, data });
}
function getQuotationViewList() {
return CDR.get<ViewItem[]>({ url: GetQuotationViewListUrl });
}
function getQuotationViewDetail(id: string) {
return CDR.get({ url: `${GetQuotationViewDetailUrl}/${id}` });
}
function fixedQuotationView(id: string) {
return CDR.get({ url: `${FixedQuotationViewUrl}/${id}` });
}
function enableQuotationView(id: string) {
return CDR.get({ url: `${EnableQuotationViewUrl}/${id}` });
}
function deleteQuotationView(id: string) {
return CDR.get({ url: `${DeleteQuotationViewUrl}/${id}` });
}
function dragQuotationView(data: TableDraggedParams) {
return CDR.post({ url: DragQuotationViewUrl, data });
}
// 报价单
// 报价列表
function getQuotationList(data: QuotationQueryParams) {
return CDR.post<CommonList<QuotationItem>>({ url: QuotationPageUrl, data });
}
// 添加报价
function addQuotation(data: SaveQuotationParams) {
return CDR.post({ url: AddQuotationUrl, data });
}
// 更新报价
function updateQuotation(data: UpdateQuotationParams, approvalTaskId?: string) {
return CDR.post({ url: UpdateQuotationUrl, data, params: { approvalTaskId } });
}
// 报价详情
function getQuotationDetail(id: string, approvalTaskId?: string) {
return CDR.get<QuotationItem>({ url: `${GetQuotationDetailUrl}/${id}`, params: { approvalTaskId } });
}
// 报价单快照详情
function getQuotationSnapshotDetail(id: string, approvalTaskId?: string) {
return CDR.get<QuotationItem>({ url: `${GetQuotationSnapshotDetailUrl}/${id}`, params: { approvalTaskId } });
}
// 获取报价表单配置
function getQuotationFormConfig() {
return CDR.get<FormDesignConfigDetailParams>({ url: GetQuotationFormConfigUrl });
}
// 获取报价表单快照配置
function getQuotationSnapshotFormConfig(id?: string, approvalTaskId?: string) {
return CDR.get<FormDesignConfigDetailParams>({
url: `${GetQuotationSnapshotFormConfigUrl}/${id}`,
params: { approvalTaskId },
});
}
// 删除报价
function deleteQuotation(id: string) {
return CDR.get({ url: `${DeleteQuotationUrl}/${id}` });
}
// 作废报价
function voidQuotation(id: string) {
return CDR.get({ url: `${VoidQuotationUrl}/${id}` });
}
// 审批报价
function approvalQuotation(data: ApproveQuotation) {
return CDR.post({ url: ApprovalQuotationUrl, data });
}
// 撤销报价
function revokeQuotation(id: string) {
return CDR.get({ url: `${RevokeQuotationUrl}/${id}` });
}
function batchApprove(data: BatchUpdateQuotationStatusParams) {
return CDR.post<BatchOperationResult>({ url: BatchApproveUrl, data });
}
function batchVoided(data: BatchVoidQuotationStatusParams) {
return CDR.post<BatchOperationResult>({ url: BatchVoidedUrl, data });
}
function batchUpdateQuotation(data: BatchUpdatePoolAccountParams) {
return CDR.post({ url: BatchUpdateQuotationUrl, data });
}
function downloadQuotation(id: string) {
return CDR.get({ url: `${DownloadQuotationUrl}/${id}` });
}
return {
getOpportunityList,
addOpportunity,
updateOpportunity,
getOpportunityDetail,
getOptFormConfig,
getOptFollowRecordList,
deleteOptFollowRecord,
addOptFollowRecord,
updateOptFollowRecord,
getOptFollowRecord,
getOptFollowPlanList,
addOptFollowPlan,
updateOptFollowPlan,
deleteOptFollowPlan,
getOptFollowPlan,
cancelOptFollowPlan,
transferOpt,
batchDeleteOpt,
deleteOpt,
updateOptStage,
getOptTab,
getOpportunityContactList,
updateOptFollowPlanStatus,
exportOpportunityAll,
exportOpportunitySelected,
addBusinessView,
deleteBusinessView,
fixedBusinessView,
getBusinessViewDetail,
getBusinessViewList,
updateBusinessView,
enableBusinessView,
dragBusinessView,
advancedSearchOptPage,
globalSearchOptPage,
advancedSearchOptDetail,
preCheckImportOpt,
downloadOptTemplate,
importOpportunity,
getOptStatistic,
batchUpdateOpportunity,
sortOpportunity,
updateOpportunityStage,
updateOpportunityStageRollback,
sortOpportunityStage,
addOpportunityStage,
getOpportunityStageConfig,
deleteOpportunityStage,
generateOpportunityChart,
getQuotationTab,
addQuotationView,
deleteQuotationView,
fixedQuotationView,
getQuotationViewDetail,
getQuotationViewList,
updateQuotationView,
enableQuotationView,
dragQuotationView,
getQuotationList,
addQuotation,
updateQuotation,
getQuotationDetail,
getQuotationSnapshotDetail,
getQuotationFormConfig,
getQuotationSnapshotFormConfig,
deleteQuotation,
approvalQuotation,
voidQuotation,
revokeQuotation,
batchApprove,
batchVoided,
batchUpdateQuotation,
downloadQuotation,
};
}