import { API_BASE_URL, request, type ApiResponse } from './request';
|
import type { PageResult, UserSimple } from './purchase';
|
|
export interface DictData { dictType: string; label: string; value: string; status?: number; sort?: number; }
|
export interface DictTypeSimple { id?: number; name?: string; type?: string; status?: number; }
|
export interface Area { id: number; name: string; parentId?: number; children?: Area[]; }
|
export interface StorageFile { id: number; name?: string; url?: string; previewURL?: string; downloadURL?: string; }
|
export interface Clue { id?: number; name: string; source?: number; mobile?: string; telephone?: string; email?: string; wechat?: string; qq?: string; industryId?: number; level?: number; areaId?: number; areaName?: string; detailAddress?: string; contactNextTime?: string; remark?: string; ownerUserId?: number; ownerUserName?: string; ownerUserDeptName?: string; transformStatus?: boolean; followUpStatus?: boolean; contactLastTime?: string; contactLastContent?: string; creatorName?: string; createTime?: string; updateTime?: string; }
|
export interface CrmCustomerSimple { id: number; name: string; }
|
export interface CrmCustomer { id?: number; name: string; mobile?: string; telephone?: string; qq?: string; wechat?: string; email?: string; areaId?: number; areaName?: string; detailAddress?: string; industryId?: number; level?: number; source?: number; remark?: string; ownerUserId?: number; ownerUserName?: string; ownerUserDeptName?: string; lockStatus?: boolean; dealStatus?: boolean; followUpStatus?: boolean; contactStatus?: number; contactLastTime?: string; contactLastContent?: string; contactNextTime?: string; poolDay?: number; creatorName?: string; createTime?: string; updateTime?: string; }
|
export interface CrmContact { id?: number; name: string; customerId?: number; customerName?: string; businessId?: number; ownerUserId?: number; mobile?: string; telephone?: string; email?: string; wechat?: string; qq?: string | number; post?: string; master?: boolean; contactLastTime?: string; contactLastContent?: string; contactNextTime?: string; ownerUserName?: string; ownerUserDeptName?: string; areaId?: number; areaName?: string; detailAddress?: string; sex?: number; parentId?: number; parentName?: string; remark?: string; creatorName?: string; createTime?: string; updateTime?: string; }
|
export interface ContractProduct { id?: number; itemId?: number; itemName?: string; itemCode?: string; itemSpecification?: string; itemUnitId?: number; itemUnitName?: string; itemPrice?: number; contractPrice?: number; count?: number; totalPrice?: number; }
|
export interface CrmContract { id?: number; name: string; no?: string; customerId?: number; customerName?: string; businessId?: number; businessName?: string; contactId?: number; contactName?: string; contactLastTime?: string; contactNextTime?: string; ownerUserId?: number; ownerUserName?: string; ownerUserDeptName?: string; processInstanceId?: number; auditStatus?: number; orderDate?: string; startTime?: string; endTime?: string; totalProductPrice?: number; discountPercent?: number; totalPrice?: number; depositPrice?: number; totalReceivablePrice?: number; totalInvoicePrice?: number; unInvoicePrice?: number; signContactId?: number; signContactName?: string; signUserId?: number; signUserName?: string; remark?: string; creatorName?: string; createTime?: string; updateTime?: string; products?: ContractProduct[]; }
|
export interface CrmInvoiceSimple { id: number; no?: string; invoiceNo?: string; price?: number; contractId?: number; customerId?: number; }
|
export interface CrmInvoice { id?: number; no?: string; contractId?: number; contract?: { id?: number; no?: string; name?: string }; customerId?: number; customerName?: string; invoiceType?: number; invoiceNo?: string; invoiceTitle?: string; price?: number; invoiceTime?: string; auditStatus?: number; remark?: string; ownerUserId?: number; ownerUserName?: string; ownerUserDeptName?: string; processInstanceId?: string; attachmentList?: StorageFile[]; blobIds?: number[]; hasAttachment?: boolean; remainingInvoicePrice?: number; creatorName?: string; createTime?: string; updateTime?: string; }
|
export interface SaleQuotationItem { id?: number; itemId?: number; itemName?: string; itemCode?: string; itemSpecification?: string; itemUnitName?: string; itemUnitName2?: string; itemUnitName3?: string; itemPrice?: number; quotationPrice?: number; count?: number; totalPrice?: number; taxPercent?: number; taxPrice?: number; remark?: string; }
|
export interface SaleQuotation { id?: number; name: string; no?: string; customerId?: number; customerName?: string; businessId?: number; businessName?: string; contactId?: number; contactName?: string; quotationTime?: string; validUntil?: string; totalProductPrice?: number; discountPercent?: number; totalPrice?: number; taxRate?: number; blobIds?: number[]; attachmentList?: StorageFile[]; remark?: string; status?: number; contractId?: number; contractNo?: string; ownerUserId?: number; ownerUserName?: string; creatorName?: string; createTime?: string; updateTime?: string; items?: SaleQuotationItem[]; }
|
export interface CrmReceivable { id?: number; no?: string; customerId?: number; customerName?: string; contractId?: number; contractNo?: string; invoiceId?: number; planId?: number; ownerUserId?: number; returnTime?: string; price?: number; returnType?: number; auditStatus?: number; ownerUserName?: string; remark?: string; }
|
export interface CrmReceivablePlan { id?: number; period?: number; customerId?: number; customerName?: string; contractId?: number; contractNo?: string; ownerUserId?: number; returnTime?: string; returnType?: number; price?: number; remindDays?: number; receivableId?: number; ownerUserName?: string; remark?: string; }
|
export interface BusinessStatusType { id: number; name: string; percent?: number; sort?: number; }
|
export interface BusinessStatusGroup { id: number; name: string; statuses?: BusinessStatusType[]; }
|
export interface BusinessProduct { id?: number; itemId?: number; name?: string; code?: string; specification?: string; unitMeasureId?: number; unitMeasureName?: string; salesPrice?: number; itemName?: string; itemCode?: string; itemSpecification?: string; itemUnitId?: number; itemUnitName?: string; itemPrice?: number; businessPrice?: number; count?: number; totalPrice?: number; }
|
export interface Business { id?: number; name: string; customerId?: number; customerName?: string; ownerUserId?: number; ownerUserName?: string; ownerUserDeptName?: string; statusTypeId?: number; statusTypeName?: string; statusId?: number; statusName?: string; contactNextTime?: string; dealTime?: string; discountPercent?: number; totalProductPrice?: number; totalPrice?: number; endRemark?: string; remark?: string; followUpStatus?: boolean; contactLastTime?: string; contactLastContent?: string; creatorName?: string; createTime?: string; updateTime?: string; products?: BusinessProduct[]; }
|
export interface FollowUpRecord { id?: number; bizType: number; bizId: number; type?: number; content: string; nextTime?: string; picUrls?: string[]; blobIds?: number[]; attachmentList?: StorageFile[]; creatorName?: string; createTime?: string; }
|
export interface CrmPermission { id?: number; ids?: number[]; userId?: number; nickname?: string; deptName?: string; postNames?: string[]; level: number; bizType: number; bizId: number; createTime?: string; }
|
export interface OperateLog { id: number; type?: number; content?: string; creatorName?: string; createTime?: string; }
|
export interface OperationRecord { id?: number; type?: number; content?: string; creatorName?: string; createTime?: string; operationType?: number; operationTypeDesc?: string; operationDetail?: string; action?: string; beforeStatus?: string; afterStatus?: string; beforeData?: unknown; afterData?: unknown; operatorName?: string; operateTime?: string; recordNo?: string; recordId?: number | string; }
|
export interface CustomerPoolConfig { enabled?: boolean; contactExpireDays?: number; dealExpireDays?: number; notifyEnabled?: boolean; notifyDays?: number; }
|
export interface DeptSimple { id: number; name: string; parentId?: number; children?: DeptSimple[]; }
|
export interface CustomerLimitConfig { id?: number; type?: number; userIds?: number[]; deptIds?: number[]; maxCount?: number; dealCountEnabled?: boolean; users?: UserSimple[]; depts?: DeptSimple[]; createTime?: string; }
|
export interface BusinessStatusConfigItem { id?: number; name: string; percent?: number; sort?: number; }
|
export interface BusinessStatusConfig { id?: number; name: string; deptIds?: number[]; deptNames?: string[]; creator?: string; createTime?: string; statuses: BusinessStatusConfigItem[]; }
|
export interface ContractConfig { notifyEnabled?: boolean; notifyDays?: number; }
|
export interface ClueTransfer { id: number; newOwnerUserId: number; oldOwnerHandler: boolean; oldOwnerPermissionLevel?: number; toBizTypes?: number[]; }
|
export interface OwnerTransfer { id: number; newOwnerUserId: number; oldOwnerPermissionLevel?: number; toBizTypes?: number[]; }
|
export interface ApproveProcess { key: string; 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 getSimpleDictDataList(accessToken: string) { return request<DictData[]>('/system/dict-data/simple-list', { header: header(accessToken) }); }
|
/** 字典类型精简列表(对齐 web 端 getSimpleDictTypeList) */
|
export function getSimpleDictTypeList(accessToken: string) { return request<DictTypeSimple[]>('/system/dict-type/list-all-simple', { header: header(accessToken) }); }
|
export function getAreaTree(accessToken: string) { return request<Area[]>('/system/area/tree', { header: header(accessToken) }); }
|
export function getCrmUserList(accessToken: string) { return request<UserSimple[]>('/system/user/simple-list', { header: header(accessToken) }); }
|
export function getDeptSimpleList(accessToken: string) { return request<DeptSimple[]>('/system/dept/simple-list', { header: header(accessToken) }); }
|
export function getCustomerPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; name?: string; pool?: boolean; followUpStatus?: boolean; contactStatus?: number }) { return request<PageResult<CrmCustomer>>(`/crm/customer/page${query(params)}`, { header: header(accessToken) }); }
|
export function getPutPoolRemindCustomerPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number }) { return request<PageResult<CrmCustomer>>(`/crm/customer/put-pool-remind-page${query(params)}`, { header: header(accessToken) }); }
|
export function getPutPoolRemindCustomerCount(accessToken: string) { return request<number>('/crm/customer/put-pool-remind-count', { header: header(accessToken) }); }
|
export function getTodayContactCustomerCount(accessToken: string) { return request<number>('/crm/customer/today-contact-count', { header: header(accessToken) }); }
|
export function getFollowCustomerCount(accessToken: string) { return request<number>('/crm/customer/follow-count', { header: header(accessToken) }); }
|
export function getCustomer(accessToken: string, id: number) { return request<CrmCustomer>(`/crm/customer/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createCustomer(accessToken: string, data: CrmCustomer) { return request<number>('/crm/customer/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateCustomer(accessToken: string, data: CrmCustomer) { return request<boolean>('/crm/customer/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteCustomer(accessToken: string, id: number) { return request<boolean>(`/crm/customer/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function transferCustomer(accessToken: string, data: OwnerTransfer) { return request<boolean>('/crm/customer/transfer', { method: 'PUT', data, header: header(accessToken) }); }
|
export function lockCustomer(accessToken: string, id: number, lockStatus: boolean) { return request<boolean>('/crm/customer/lock', { method: 'PUT', data: { id, lockStatus }, header: header(accessToken) }); }
|
export function updateCustomerDealStatus(accessToken: string, id: number, dealStatus: boolean) { return request<boolean>(`/crm/customer/update-deal-status${query({ id, dealStatus })}`, { method: 'PUT', header: header(accessToken) }); }
|
export function receiveCustomer(accessToken: string, ids: number[]) { return request<boolean>(`/crm/customer/receive${query({ ids: ids.join(',') })}`, { method: 'PUT', header: header(accessToken) }); }
|
export function distributeCustomer(accessToken: string, ids: number[], ownerUserId: number) { return request<boolean>('/crm/customer/distribute', { method: 'PUT', data: { ids, ownerUserId }, header: header(accessToken) }); }
|
export function putCustomerPool(accessToken: string, id: number) { return request<boolean>(`/crm/customer/put-pool${query({ id })}`, { method: 'PUT', header: header(accessToken) }); }
|
export function getCustomerPoolConfig(accessToken: string) { return request<CustomerPoolConfig>('/crm/customer-pool-config/get', { header: header(accessToken) }); }
|
export function saveCustomerPoolConfig(accessToken: string, data: CustomerPoolConfig) { return request<boolean>('/crm/customer-pool-config/save', { method: 'PUT', data, header: header(accessToken) }); }
|
export function getCustomerLimitConfigPage(accessToken: string, params: { pageNo: number; pageSize: number; type?: number }) { return request<PageResult<CustomerLimitConfig>>(`/crm/customer-limit-config/page${query(params)}`, { header: header(accessToken) }); }
|
export function getCustomerLimitConfig(accessToken: string, id: number) { return request<CustomerLimitConfig>(`/crm/customer-limit-config/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createCustomerLimitConfig(accessToken: string, data: CustomerLimitConfig) { return request<number>('/crm/customer-limit-config/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateCustomerLimitConfig(accessToken: string, data: CustomerLimitConfig) { return request<boolean>('/crm/customer-limit-config/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteCustomerLimitConfig(accessToken: string, id: number) { return request<boolean>(`/crm/customer-limit-config/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function getCustomerSimpleList(accessToken: string) { return request<CrmCustomerSimple[]>('/crm/customer/simple-list', { header: header(accessToken) }); }
|
export function getContactPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; name?: string; customerId?: number; businessId?: number }) { return request<PageResult<CrmContact>>(`/crm/contact/page${query(params)}`, { header: header(accessToken) }); }
|
export function getContact(accessToken: string, id: number) { return request<CrmContact>(`/crm/contact/get${query({ id})}`, { header: header(accessToken) }); }
|
export function createContact(accessToken: string, data: CrmContact) { return request<number>('/crm/contact/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateContact(accessToken: string, data: CrmContact) { return request<boolean>('/crm/contact/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteContact(accessToken: string, id: number) { return request<boolean>(`/crm/contact/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function transferContact(accessToken: string, data: OwnerTransfer) { return request<boolean>('/crm/contact/transfer', { method: 'PUT', data, header: header(accessToken) }); }
|
export function getContactPageByCustomer(accessToken: string, params: { pageNo: number; pageSize: number; customerId: number }) { return request<PageResult<CrmContact>>(`/crm/contact/page-by-customer${query(params)}`, { header: header(accessToken) }); }
|
export function getContactPageByBusiness(accessToken: string, params: { pageNo: number; pageSize: number; businessId: number }) { return request<PageResult<CrmContact>>(`/crm/contact/page-by-business${query(params)}`, { header: header(accessToken) }); }
|
export function getContractPageByCustomer(accessToken: string, params: { pageNo: number; pageSize: number; customerId: number }) { return request<PageResult<CrmContract>>(`/crm/contract/page-by-customer${query(params)}`, { header: header(accessToken) }); }
|
export function getContractPageByBusiness(accessToken: string, params: { pageNo: number; pageSize: number; businessId: number }) { return request<PageResult<CrmContract>>(`/crm/contract/page-by-business${query(params)}`, { header: header(accessToken) }); }
|
export function getInvoiceSimpleList(accessToken: string, contractId: number) { return request<CrmInvoiceSimple[]>(`/crm/invoice/simple-list${query({ contractId })}`, { header: header(accessToken) }); }
|
export function getInvoicePage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; no?: string; customerId?: number }) { return request<PageResult<CrmInvoice>>(`/crm/invoice/page${query(params)}`, { header: header(accessToken) }); }
|
export function getInvoice(accessToken: string, id: number) { return request<CrmInvoice>(`/crm/invoice/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createInvoice(accessToken: string, data: CrmInvoice) { return request<number>('/crm/invoice/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateInvoice(accessToken: string, data: CrmInvoice) { return request<boolean>('/crm/invoice/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteInvoice(accessToken: string, id: number) { return request<boolean>(`/crm/invoice/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function submitInvoice(accessToken: string, id: number) { return request<boolean>(`/crm/invoice/submit${query({ id })}`, { method: 'PUT', header: header(accessToken) }); }
|
export function getSaleQuotationPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; no?: string; name?: string; customerId?: number; status?: number }) { return request<PageResult<SaleQuotation>>(`/crm/sale-quotation/page${query(params)}`, { header: header(accessToken) }); }
|
export function getSaleQuotation(accessToken: string, id: number) { return request<SaleQuotation>(`/crm/sale-quotation/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createSaleQuotation(accessToken: string, data: SaleQuotation) { return request<number>('/crm/sale-quotation/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateSaleQuotation(accessToken: string, data: SaleQuotation) { return request<boolean>('/crm/sale-quotation/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteSaleQuotation(accessToken: string, id: number) { return request<boolean>(`/crm/sale-quotation/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function convertSaleQuotationToContract(accessToken: string, id: number) { return request<number>(`/crm/sale-quotation/convert-contract${query({ id })}`, { method: 'POST', header: header(accessToken) }); }
|
export function getReceivable(accessToken: string, id: number) { return request<CrmReceivable>(`/crm/receivable/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createReceivable(accessToken: string, data: CrmReceivable) { return request<number>('/crm/receivable/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateReceivable(accessToken: string, data: CrmReceivable) { return request<boolean>('/crm/receivable/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteReceivable(accessToken: string, id: number) { return request<boolean>(`/crm/receivable/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function updateReceivableStatus(accessToken: string, id: number, status: number) { return request<boolean>(`/crm/receivable/update-status${query({ id, status })}`, { method: 'PUT', header: header(accessToken) }); }
|
export function getReceivablePlan(accessToken: string, id: number) { return request<CrmReceivablePlan>(`/crm/receivable-plan/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createReceivablePlan(accessToken: string, data: CrmReceivablePlan) { return request<number>('/crm/receivable-plan/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateReceivablePlan(accessToken: string, data: CrmReceivablePlan) { return request<boolean>('/crm/receivable-plan/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteReceivablePlan(accessToken: string, id: number) { return request<boolean>(`/crm/receivable-plan/delete${query({ id})}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function getReceivablePageByCustomer(accessToken: string, params: { pageNo: number; pageSize: number; customerId: number; contractId?: number }) { return request<PageResult<CrmReceivable>>(`/crm/receivable/page-by-customer${query(params)}`, { header: header(accessToken) }); }
|
export function getReceivablePage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; no?: string; contractId?: number; customerId?: number; auditStatus?: number }) { return request<PageResult<CrmReceivable>>(`/crm/receivable/page${query(params)}`, { header: header(accessToken) }); }
|
export function getAuditReceivableCount(accessToken: string) { return request<number>('/crm/receivable/audit-count', { header: header(accessToken) }); }
|
export function getReceivablePlanPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; customerId?: number; contractNo?: string; remindType?: number }) { return request<PageResult<CrmReceivablePlan>>(`/crm/receivable-plan/page${query(params)}`, { header: header(accessToken) }); }
|
export function getReceivablePlanRemindCount(accessToken: string) { return request<number>('/crm/receivable-plan/remind-count', { header: header(accessToken) }); }
|
export function getReceivablePlanSimpleList(accessToken: string, customerId: number, contractId: number) { return request<CrmReceivablePlan[]>(`/crm/receivable-plan/simple-list${query({ customerId, contractId })}`, { header: header(accessToken) }); }
|
export function getReceivablePlanPageByCustomer(accessToken: string, params: { pageNo: number; pageSize: number; customerId: number; contractId?: number }) { return request<PageResult<CrmReceivablePlan>>(`/crm/receivable-plan/page-by-customer${query(params)}`, { header: header(accessToken) }); }
|
export function getContractPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; name?: string; no?: string; auditStatus?: number; expiryType?: number }) { return request<PageResult<CrmContract>>(`/crm/contract/page${query(params)}`, { header: header(accessToken) }); }
|
export function getAuditContractCount(accessToken: string) { return request<number>('/crm/contract/audit-count', { header: header(accessToken) }); }
|
export function getRemindContractCount(accessToken: string) { return request<number>('/crm/contract/remind-count', { header: header(accessToken) }); }
|
export function getContract(accessToken: string, id: number) { return request<CrmContract>(`/crm/contract/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createContract(accessToken: string, data: CrmContract) { return request<number>('/crm/contract/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateContract(accessToken: string, data: CrmContract) { return request<boolean>('/crm/contract/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteContract(accessToken: string, id: number) { return request<boolean>(`/crm/contract/delete${query({ id})}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function transferContract(accessToken: string, data: OwnerTransfer) { return request<boolean>('/crm/contract/transfer', { method: 'PUT', data, header: header(accessToken) }); }
|
export function getContractApproveProcessList(accessToken: string) { return request<ApproveProcess[]>('/crm/contract/approve-process-list', { header: header(accessToken) }); }
|
export function submitContract(accessToken: string, id: number, processDefinitionKey: string) { return request<boolean>(`/crm/contract/submit${query({ id, processDefinitionKey })}`, { method: 'PUT', header: header(accessToken) }); }
|
export function getBusinessPage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; name?: string; customerId?: number }) { return request<PageResult<Business>>(`/crm/business/page${query(params)}`, { header: header(accessToken) }); }
|
export function getBusinessPageByCustomer(accessToken: string, params: { pageNo: number; pageSize: number; customerId: number }) { return request<PageResult<Business>>(`/crm/business/page-by-customer${query(params)}`, { header: header(accessToken) }); }
|
export function getBusinessPageByContact(accessToken: string, params: { pageNo: number; pageSize: number; contactId: number }) { return request<PageResult<Business>>(`/crm/business/page-by-contact${query(params)}`, { header: header(accessToken) }); }
|
export function getBusiness(accessToken: string, id: number) { return request<Business>(`/crm/business/get${query({ id})}`, { header: header(accessToken) }); }
|
export function createBusiness(accessToken: string, data: Business) { return request<number>('/crm/business/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateBusiness(accessToken: string, data: Business) { return request<boolean>('/crm/business/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function updateBusinessStatus(accessToken: string, data: { id: number; statusId: number }) { return request<boolean>('/crm/business/update-status', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteBusiness(accessToken: string, id: number) { return request<boolean>(`/crm/business/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function transferBusiness(accessToken: string, data: OwnerTransfer) { return request<boolean>('/crm/business/transfer', { method: 'PUT', data, header: header(accessToken) }); }
|
export function getBusinessStatusTypeSimpleList(accessToken: string) { return request<BusinessStatusGroup[]>('/crm/business-status/type-simple-list', { header: header(accessToken) }); }
|
export function getBusinessStatusSimpleList(accessToken: string, typeId: number) { return request<BusinessStatusType[]>(`/crm/business-status/status-simple-list${query({ typeId })}`, { header: header(accessToken) }); }
|
export function getBusinessStatusConfigPage(accessToken: string, params: { pageNo: number; pageSize: number; name?: string }) { return request<PageResult<BusinessStatusConfig>>(`/crm/business-status/page${query(params)}`, { header: header(accessToken) }); }
|
export function getBusinessStatusConfig(accessToken: string, id: number) { return request<BusinessStatusConfig>(`/crm/business-status/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createBusinessStatusConfig(accessToken: string, data: BusinessStatusConfig) { return request<number>('/crm/business-status/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateBusinessStatusConfig(accessToken: string, data: BusinessStatusConfig) { return request<boolean>('/crm/business-status/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteBusinessStatusConfig(accessToken: string, id: number) { return request<boolean>(`/crm/business-status/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function getContractConfig(accessToken: string) { return request<ContractConfig>('/crm/contract-config/get', { header: header(accessToken) }); }
|
export function saveContractConfig(accessToken: string, data: ContractConfig) { return request<boolean>('/crm/contract-config/save', { method: 'PUT', data, header: header(accessToken) }); }
|
export function getMaterialSimpleList(accessToken: string) { return request<BusinessProduct[]>('/mdm/item/simple-list', { header: header(accessToken) }); }
|
export function getCluePage(accessToken: string, params: { pageNo: number; pageSize: number; sceneType?: number; name?: string; transformStatus?: boolean; followUpStatus?: boolean }) { return request<PageResult<Clue>>(`/crm/clue/page${query(params)}`, { header: header(accessToken) }); }
|
export function getFollowClueCount(accessToken: string) { return request<number>('/crm/clue/follow-count', { header: header(accessToken) }); }
|
export function getClue(accessToken: string, id: number) { return request<Clue>(`/crm/clue/get${query({ id })}`, { header: header(accessToken) }); }
|
export function createClue(accessToken: string, data: Clue) { return request<number>('/crm/clue/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updateClue(accessToken: string, data: Clue) { return request<boolean>('/crm/clue/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deleteClue(accessToken: string, id: number) { return request<boolean>(`/crm/clue/delete${query({ id})}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function transformClue(accessToken: string, id: number) { return request<boolean>(`/crm/clue/transform${query({ id})}`, { method: 'PUT', header: header(accessToken) }); }
|
export function transferClue(accessToken: string, data: ClueTransfer) { return request<boolean>('/crm/clue/transfer', { method: 'PUT', data, header: header(accessToken) }); }
|
export function getFollowUpPage(accessToken: string, params: { pageNo: number; pageSize: number; bizType: number; bizId: number }) { return request<PageResult<FollowUpRecord>>(`/crm/follow-up-record/page${query(params)}`, { header: header(accessToken) }); }
|
export function createFollowUp(accessToken: string, data: FollowUpRecord) { return request<number>('/crm/follow-up-record/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function deleteFollowUp(accessToken: string, id: number) { return request<boolean>(`/crm/follow-up-record/delete${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function getPermissionList(accessToken: string, bizId: number, bizType = 1) { return request<CrmPermission[]>(`/crm/permission/list${query({ bizId, bizType})}`, { header: header(accessToken) }); }
|
export function createPermission(accessToken: string, data: CrmPermission) { return request<number>('/crm/permission/create', { method: 'POST', data, header: header(accessToken) }); }
|
export function updatePermission(accessToken: string, data: CrmPermission) { return request<boolean>('/crm/permission/update', { method: 'PUT', data, header: header(accessToken) }); }
|
export function deletePermission(accessToken: string, ids: number[]) { return request<boolean>(`/crm/permission/delete${query({ ids: ids.join(',') })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function deleteSelfPermission(accessToken: string, id: number) { return request<boolean>(`/crm/permission/delete-self${query({ id })}`, { method: 'DELETE', header: header(accessToken) }); }
|
export function getOperateLogPage(accessToken: string, bizId: number, bizType = 1) { return request<PageResult<OperationRecord>>(`/crm/operate-log/page${query({ bizType, bizId, pageNo: 1, pageSize: 100 })}`, { header: header(accessToken) }); }
|
export function listOperationLog(accessToken: string, contractNo: string) {
|
return new Promise<OperationRecord[]>((resolve, reject) => {
|
uni.request({
|
url: `${API_BASE_URL}/mes/operation/detail`,
|
method: 'POST',
|
data: { contractNo },
|
header: { 'content-type': 'application/json', ...header(accessToken) },
|
success: response => {
|
const result = response.data as ApiResponse<OperationRecord[]>;
|
if (result?.code === 0 || result?.code === 200) {
|
resolve(result.data || []);
|
return;
|
}
|
if (response.statusCode === 401 || result?.code === 401) {
|
uni.$emit('auth-expired');
|
reject(new Error('登录已过期,请重新登录'));
|
return;
|
}
|
reject(new Error(result?.msg || '操作记录加载失败'));
|
},
|
fail: () => reject(new Error('网络连接失败,请检查网络后重试')),
|
});
|
});
|
}
|
export function uploadCrmFile(accessToken: string, filePath: string) {
|
return new Promise<StorageFile>((resolve, reject) =>
|
uni.uploadFile({
|
url: `${API_BASE_URL}/system/storage-blob/upload`,
|
filePath,
|
name: 'files',
|
header: header(accessToken),
|
success: response => {
|
try {
|
const data = JSON.parse(response.data) as ApiResponse<StorageFile[]>;
|
if (data.code === 0 && data.data?.[0]) {
|
resolve(data.data[0]);
|
} else {
|
reject(new Error(data.msg || '文件上传失败'));
|
}
|
} catch {
|
reject(new Error('文件上传响应解析失败'));
|
}
|
},
|
fail: () => reject(new Error('文件上传失败,请检查网络后重试')),
|
}),
|
);
|
}
|