feat(M08-D): 补加盟申请与跟进运营

This commit is contained in:
Codex
2026-08-10 13:17:19 +08:00
parent e0e17159a7
commit aa4a6bd014
28 changed files with 894 additions and 13 deletions
+33
View File
@@ -9,6 +9,10 @@ import type {
CleaningTaskMember,
DecorationComponent,
DecorationVersion,
FranchiseApplication,
FranchiseApplicationDetail,
FranchiseFollowUpType,
FranchiseStatus,
DeviceTopology,
DeviceType,
BusinessStatistics,
@@ -499,6 +503,35 @@ export function updateAdvertisement(
);
}
export function listFranchiseApplications(session: ApiSession, input: {
page: number; pageSize: number; status?: FranchiseStatus; assigneeUserId?: string; search?: string;
}) {
const params = new URLSearchParams({ page: String(input.page), pageSize: String(input.pageSize) });
if (input.status) params.set('status', input.status);
if (input.assigneeUserId) params.set('assigneeUserId', input.assigneeUserId);
if (input.search) params.set('search', input.search);
return request<PageResult<FranchiseApplication>>(session, `/franchise-applications?${params}`);
}
export function getFranchiseApplication(session: ApiSession, applicationId: string) {
return request<FranchiseApplicationDetail>(session, `/franchise-applications/${encodeURIComponent(applicationId)}`);
}
export function assignFranchiseApplication(session: ApiSession, applicationId: string, assigneeUserId: string | null) {
return request<{ applicationId: string; assigneeUserId: string | null }>(session,
`/franchise-applications/${encodeURIComponent(applicationId)}/assignee`,
{ method: 'PATCH', body: JSON.stringify({ assigneeUserId }) });
}
export function addFranchiseFollowUp(session: ApiSession, applicationId: string, input: {
followUpType: Exclude<FranchiseFollowUpType, 'ASSIGNMENT' | 'STATUS'>;
note: string; nextFollowUpAt: string | null; status?: FranchiseStatus;
}) {
return request<{ applicationId: string; followUpId: string; status: FranchiseStatus }>(session,
`/franchise-applications/${encodeURIComponent(applicationId)}/follow-ups`,
{ method: 'POST', body: JSON.stringify(input) });
}
export function createStaffUser(
session: ApiSession,
input: { nickname: string; phone: string; note?: string; roles: StaffRole[]; storeIds: string[] }