1167 lines
48 KiB
TypeScript
1167 lines
48 KiB
TypeScript
import http from "./http";
|
|
import { encryptLoginPassword } from "../utils/authCrypto";
|
|
|
|
export const fetchCaptcha = () => http.get("/captcha");
|
|
export const login = async (payload: { tenantCode: string; phone: string; password: string; captchaId?: string; captchaCode?: string }) =>
|
|
http.post("/auth/login", {
|
|
...payload,
|
|
password: await encryptLoginPassword(payload.password),
|
|
});
|
|
export const platformLogin = async (payload: { phone: string; password: string; captchaId?: string; captchaCode?: string }) =>
|
|
http.post("/auth/platform-login", {
|
|
...payload,
|
|
password: await encryptLoginPassword(payload.password),
|
|
});
|
|
export const verifyPasswordSetupToken = (params: { tenantCode: string; token: string }) =>
|
|
http.get("/auth/password-setup/verify", { params });
|
|
export const completePasswordSetup = (payload: { tenantCode: string; token: string; newPassword: string }) =>
|
|
http.post("/auth/password-setup/complete", payload);
|
|
export const refreshAuth = () => http.post("/auth/refresh");
|
|
export const fetchSwitchableTenants = () => http.get("/auth/switchable-tenants");
|
|
export const switchTenant = (payload: { tenantId: number }) => http.post("/auth/switch-tenant", payload);
|
|
export const logoutAuth = () => http.post("/auth/logout");
|
|
export const logoutAllAuth = () => http.post("/auth/logout-all");
|
|
export const fetchGlobalSearch = (params: { q: string; limitPerType?: number }) => http.get("/search/global", { params });
|
|
|
|
export const fetchProjects = (params?: { parentOnly?: boolean; includeDeleted?: boolean; keyword?: string; pageNo?: number; pageSize?: number }) => http.get("/projects", { params });
|
|
export const fetchProjectChildren = (id: number, params?: { includeDeleted?: boolean }) => http.get(`/projects/${id}/children`, { params });
|
|
export const createProject = (payload: {
|
|
name: string;
|
|
parentProjectId?: number;
|
|
startDate?: string;
|
|
endDate?: string;
|
|
hostEnterpriseName?: string;
|
|
partnerEnterpriseId?: number;
|
|
budgetCent: number;
|
|
meetingTotal: number;
|
|
allowMeetingOverBudget?: boolean;
|
|
overBudgetThresholdRatio?: number;
|
|
overBudgetApprovalChainJson?: string;
|
|
paymentStatus?: string;
|
|
writeOffStatus?: string;
|
|
laborFeeRatio?: number;
|
|
cateringFeeRatio?: number;
|
|
laborAgreementSignType?: 1 | 2;
|
|
allowProjectOverBudget?: boolean;
|
|
invoiceInfo?: string;
|
|
expenseRatioJson?: string;
|
|
projectFeeJson?: string;
|
|
}) => http.post("/projects", payload);
|
|
export const updateProject = (
|
|
id: number,
|
|
payload: {
|
|
name: string;
|
|
parentProjectId?: number;
|
|
startDate?: string;
|
|
endDate?: string;
|
|
hostEnterpriseName?: string;
|
|
partnerEnterpriseId?: number;
|
|
budgetCent: number;
|
|
meetingTotal: number;
|
|
allowMeetingOverBudget?: boolean;
|
|
overBudgetThresholdRatio?: number;
|
|
overBudgetApprovalChainJson?: string;
|
|
paymentStatus?: string;
|
|
writeOffStatus?: string;
|
|
laborFeeRatio?: number;
|
|
cateringFeeRatio?: number;
|
|
laborAgreementSignType?: 1 | 2;
|
|
allowProjectOverBudget?: boolean;
|
|
invoiceInfo?: string;
|
|
expenseRatioJson?: string;
|
|
projectFeeJson?: string;
|
|
},
|
|
) => http.put(`/projects/${id}`, payload);
|
|
export const freezeProject = (id: number, reason: string) =>
|
|
http.post(`/projects/${id}/freeze`, null, { params: { reason } });
|
|
export const unfreezeProject = (id: number, payload: { reason: string }) =>
|
|
http.post(`/projects/${id}/unfreeze`, payload);
|
|
export const archiveProject = (id: number) =>
|
|
http.post(`/projects/${id}/archive`);
|
|
export const fetchProjectBindingCandidates = () => http.get("/projects/binding-candidates");
|
|
export const fetchProjectBindings = (id: number) => http.get(`/projects/${id}/bindings`);
|
|
export const fetchProjectKeyChangeLogs = (id: number) => http.get(`/projects/${id}/key-change-logs`);
|
|
export const fetchProjectChangeLogs = (id: number) => http.get(`/projects/${id}/key-change-logs`);
|
|
export const saveProjectBindings = (
|
|
id: number,
|
|
payload: { ownerUserIds: number[]; executorUserIds: number[]; legacyExecutorUserIds?: number[] },
|
|
) => http.post(`/projects/${id}/bindings`, payload);
|
|
|
|
export const fetchMeetings = (params?: {
|
|
projectId?: number;
|
|
projectName?: string;
|
|
topic?: string;
|
|
meetingStatus?: string;
|
|
auditStatus?: string;
|
|
currentAuditNode?: string;
|
|
currentAuditorUserId?: number;
|
|
meetingStartFrom?: string;
|
|
meetingStartTo?: string;
|
|
lastSubmitFrom?: string;
|
|
lastSubmitTo?: string;
|
|
includeDeleted?: boolean;
|
|
pageNo?: number;
|
|
pageSize?: number;
|
|
}) => http.get("/meetings", { params });
|
|
export const fetchMeetingPlatformExperts = (params?: { keyword?: string }) => http.get("/meetings/tenant-experts", { params });
|
|
export const createMeetingPlatformExpert = (payload: {
|
|
expertName: string;
|
|
idNo: string;
|
|
phone: string;
|
|
titleCode?: string;
|
|
title?: string;
|
|
hospitalCode?: string;
|
|
organization?: string;
|
|
idCardFrontOssKey?: string;
|
|
idCardBackOssKey?: string;
|
|
}) => http.post("/meetings/tenant-experts", payload);
|
|
export const addMeetingTenantExpertBankCard = (
|
|
expertId: number,
|
|
payload: {
|
|
bankName: string;
|
|
bankProvince?: string;
|
|
bankCity?: string;
|
|
bankBranchName?: string;
|
|
bankCardNo: string;
|
|
bankCardFrontOssKey?: string;
|
|
bankCardBackOssKey?: string;
|
|
accountName: string;
|
|
isDefault?: boolean;
|
|
},
|
|
) => http.post(`/meetings/tenant-experts/${expertId}/bank-cards`, payload);
|
|
export const submitMeetingLaborAgreementExtractTask = (
|
|
meetingId: number,
|
|
payload: { objectKey: string; fileName: string },
|
|
) => http.post(`/meetings/${meetingId}/labor-agreement-extract/task`, payload);
|
|
export const fetchMeetingLaborAgreementUploadSign = (
|
|
meetingId: number,
|
|
payload: { fileName: string; contentType?: string },
|
|
) => http.post(`/meetings/${meetingId}/labor-agreement-extract/upload-sign`, payload);
|
|
export const queryMeetingLaborAgreementExtract = (
|
|
meetingId: number,
|
|
payload: { taskId: string },
|
|
) => http.post(`/meetings/${meetingId}/labor-agreement-extract/query`, payload);
|
|
export const applyMeetingLaborAgreementExtract = (
|
|
meetingId: number,
|
|
payload: {
|
|
taskId: string;
|
|
existingExpertId?: number;
|
|
updateExistingExpert?: boolean;
|
|
objectKey?: string;
|
|
fileName?: string;
|
|
},
|
|
) => http.post(`/meetings/${meetingId}/labor-agreement-extract/apply`, payload);
|
|
export const fetchMeetingExpertBindings = (meetingId: number) => http.get(`/meetings/${meetingId}/experts`);
|
|
export const bindMeetingExperts = (meetingId: number, payload: { expertIds: number[] }) =>
|
|
http.post(`/meetings/${meetingId}/experts/bind`, payload);
|
|
export const unbindMeetingExpert = (meetingId: number, expertId: number) =>
|
|
http.delete(`/meetings/${meetingId}/experts/${expertId}`);
|
|
export const fetchDefaultMeetingBudgetCent = (projectId: number) =>
|
|
http.get(`/meetings/default-budget?projectId=${projectId}`);
|
|
export const createMeeting = (payload: {
|
|
projectId: number;
|
|
topic: string;
|
|
budgetCent: number;
|
|
meetingCategory?: string;
|
|
meetingForm?: string;
|
|
location?: string;
|
|
startTime?: string;
|
|
endTime?: string;
|
|
laborRatio?: number;
|
|
cateringRatio?: number;
|
|
}) => http.post("/meetings", payload);
|
|
export const fetchMeetingDetail = (id: number) => http.get(`/meetings/${id}`);
|
|
export const fetchMeetingChangeLogs = (id: number) => http.get(`/meetings/${id}/change-logs`);
|
|
export const updateMeeting = (
|
|
id: number,
|
|
payload: {
|
|
projectId: number;
|
|
topic: string;
|
|
budgetCent: number;
|
|
meetingCategory?: string;
|
|
meetingForm?: string;
|
|
location?: string;
|
|
startTime?: string;
|
|
endTime?: string;
|
|
laborRatio?: number;
|
|
cateringRatio?: number;
|
|
},
|
|
) => http.put(`/meetings/${id}`, payload);
|
|
export const submitMeeting = (id: number, payload: {
|
|
idempotencyKey: string;
|
|
remark: string;
|
|
issueResponses?: Array<{
|
|
issueId: number;
|
|
responseText: string;
|
|
}>;
|
|
}) =>
|
|
http.post(`/meetings/${id}/submit`, payload);
|
|
export const fetchMeetingPendingIssues = (id: number) =>
|
|
http.get(`/meetings/${id}/pending-issues`);
|
|
export const withdrawMeeting = (id: number, payload: { idempotencyKey: string; reason: string }) =>
|
|
http.post(`/meetings/${id}/withdraw`, payload);
|
|
export const deleteMeeting = (id: number) =>
|
|
http.post(`/meetings/${id}/delete`);
|
|
export const cancelMeeting = (id: number, payload: { reason: string }) =>
|
|
http.post(`/meetings/${id}/cancel`, payload);
|
|
export const updateMeetingInvoiceConfig = (id: number, payload: { invoiceModules: string[] }) =>
|
|
http.put(`/meetings/${id}/invoice-config`, payload);
|
|
export const fetchMeetingMaterials = (meetingId: number) =>
|
|
http.get(`/meetings/${meetingId}/materials`);
|
|
export const fetchMeetingMaterialCurrent = (
|
|
meetingId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE",
|
|
) => http.get(`/meetings/${meetingId}/materials/${moduleCode}/current`);
|
|
export const saveMeetingMaterial = (
|
|
meetingId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE",
|
|
payload: { contentJson: string; remark?: string },
|
|
) => http.post(`/meetings/${meetingId}/materials/${moduleCode}/save`, payload);
|
|
export const submitMeetingMaterial = (
|
|
meetingId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE",
|
|
payload: {
|
|
contentJson: string;
|
|
remark?: string;
|
|
issueResponses?: Array<{
|
|
issueId: number;
|
|
responseText: string;
|
|
}>;
|
|
},
|
|
) => http.post(`/meetings/${meetingId}/materials/${moduleCode}/submit`, payload);
|
|
export const fetchMeetingMaterialUploadSign = (
|
|
meetingId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE",
|
|
payload: { fileName: string; contentType?: string },
|
|
) => http.post(`/meetings/${meetingId}/materials/${moduleCode}/upload-sign`, payload);
|
|
export const fetchMeetingMaterialHistory = (
|
|
meetingId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE",
|
|
) => http.get(`/meetings/${meetingId}/materials/${moduleCode}/history`);
|
|
export const fetchMeetingMaterialResubmitPreview = (
|
|
meetingId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE",
|
|
payload: { contentJson: string; remark?: string },
|
|
) => http.post(`/meetings/${meetingId}/materials/${moduleCode}/resubmit-preview`, payload);
|
|
export const fetchFilePresignDownload = (params: { objectKey: string }) =>
|
|
http.get("/files/presign-download", { params });
|
|
|
|
export const recognizeMultipleInvoice = (payload: { objectKey: string }) =>
|
|
http.post("/ocr/multiple-invoice", payload);
|
|
export const recognizeIdCard = (payload: { objectKey: string; idCardSide: "front" | "back" }) =>
|
|
http.post("/ocr/id-card", payload);
|
|
export const recognizePlatformIdCard = (payload: { objectKey: string; idCardSide: "front" | "back" }) =>
|
|
http.post("/platform/ocr/id-card", payload);
|
|
export const recognizeBankCard = (payload: { objectKey: string }) =>
|
|
http.post("/ocr/bank-card", payload);
|
|
export const recognizePlatformBankCard = (payload: { objectKey: string }) =>
|
|
http.post("/platform/ocr/bank-card", payload);
|
|
export const submitDocumentExtractTask = (payload: {
|
|
objectKey?: string;
|
|
fileName?: string;
|
|
fileUrls?: string[];
|
|
manifestVersionId?: string;
|
|
manifest?: Array<{
|
|
key: string;
|
|
parentKey?: string;
|
|
description?: string;
|
|
}>;
|
|
removeDuplicates?: boolean;
|
|
pageRange?: string;
|
|
extractSeal?: boolean;
|
|
eraseWatermark?: boolean;
|
|
}) => http.post("/ocr/document-extract/task", payload);
|
|
export const queryDocumentExtractTask = (payload: { taskId: string }) =>
|
|
http.post("/ocr/document-extract/query-task", payload);
|
|
export const fetchMeetingMatchedTemplates = (meetingId: number) =>
|
|
http.get(`/meetings/${meetingId}/matched-templates`);
|
|
export const createMeetingMaterialsExportTask = (
|
|
meetingId: number,
|
|
payload: { idempotencyKey: string; fileName?: string },
|
|
) => http.post(`/meetings/${meetingId}/materials/export`, payload);
|
|
export const generateMeetingSummaryTask = (
|
|
meetingId: number,
|
|
payload: { idempotencyKey: string; fileName?: string },
|
|
) => http.post(`/meetings/${meetingId}/summary/generate`, payload);
|
|
export const fetchMeetingSummaryTaskStatus = (
|
|
meetingId: number,
|
|
params?: { taskId?: number },
|
|
) => http.get(`/meetings/${meetingId}/summary/task-status`, { params });
|
|
export const refreshMeetingSummaryToken = (
|
|
meetingId: number,
|
|
params: { taskId: number },
|
|
) => http.post(`/meetings/${meetingId}/summary/refresh-token`, null, { params });
|
|
export const downloadMeetingSummary = (
|
|
meetingId: number,
|
|
params: { taskId: number; token: string },
|
|
) => http.get(`/meetings/${meetingId}/summary/download`, { params });
|
|
|
|
export const fetchAuditTasks = (params?: boolean | {
|
|
mine?: boolean;
|
|
scope?: string;
|
|
meetingId?: number;
|
|
pageNo?: number;
|
|
pageSize?: number;
|
|
reviewFocus?: string;
|
|
sortBy?: string;
|
|
order?: "asc" | "desc";
|
|
}) => {
|
|
if (typeof params === "boolean") {
|
|
return http.get("/audits/tasks", { params: { mine: params } });
|
|
}
|
|
return http.get("/audits/tasks", {
|
|
params: {
|
|
mine: !!params?.mine,
|
|
scope: params?.scope,
|
|
meetingId: params?.meetingId,
|
|
pageNo: params?.pageNo,
|
|
pageSize: params?.pageSize,
|
|
reviewFocus: params?.reviewFocus,
|
|
sortBy: params?.sortBy,
|
|
order: params?.order,
|
|
},
|
|
});
|
|
};
|
|
export const exportAuditOpinions = () => http.get("/audits/export-opinions");
|
|
export const fetchAuditTaskDetail = (taskId: number) =>
|
|
http.get(`/audits/tasks/${taskId}`);
|
|
export const readAuditTaskMaterial = (
|
|
taskId: number,
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_LIST" | "MEETING_INVOICE" | "EXPERT_PROFILE",
|
|
) =>
|
|
http.get(`/audits/tasks/${taskId}/material`, { params: { moduleCode } });
|
|
export const approveAuditMaterialModule = (
|
|
taskId: number,
|
|
payload: {
|
|
idempotencyKey: string;
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE";
|
|
},
|
|
) => http.post(`/audits/tasks/${taskId}/material/approve-module`, payload);
|
|
export const rejectAuditMaterialItem = (
|
|
taskId: number,
|
|
payload: {
|
|
idempotencyKey: string;
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE";
|
|
itemKey: string;
|
|
itemLabel: string;
|
|
reason: string;
|
|
},
|
|
) => http.post(`/audits/tasks/${taskId}/material/reject-item`, payload);
|
|
export const confirmAuditIssueResolved = (taskId: number, issueId: number) =>
|
|
http.post(`/audits/tasks/${taskId}/issues/${issueId}/resolve`);
|
|
export const approveAuditTask = (id: number, payload: { idempotencyKey: string; opinion: string }) =>
|
|
http.post(`/audits/tasks/${id}/approve`, payload);
|
|
export const rejectAuditTask = (id: number, payload: {
|
|
idempotencyKey: string;
|
|
opinion: string;
|
|
issues: Array<{
|
|
moduleCode: "BASIC_INFO" | "WRITE_OFF_DOCS" | "EXPERT_PROFILE" | "EXPERT_LIST" | "MEETING_INVOICE";
|
|
targetPath: string;
|
|
targetLabel: string;
|
|
reason: string;
|
|
}>;
|
|
}) =>
|
|
http.post(`/audits/tasks/${id}/reject`, payload);
|
|
export const returnAuditTask = (id: number, payload: { idempotencyKey: string; opinion: string }) =>
|
|
http.post(`/audits/tasks/${id}/return`, payload);
|
|
export const transferAuditTask = (
|
|
id: number,
|
|
payload: { idempotencyKey: string; toUserId: number; reason: string },
|
|
) => http.post(`/audits/tasks/${id}/transfer`, payload);
|
|
export const batchRemindAuditTasks = (payload: { idempotencyKey: string; taskIds?: number[] }) =>
|
|
http.post("/audits/tasks/batch-remind", payload);
|
|
export const batchApproveAuditTasks = (payload: { idempotencyKey: string; taskIds: number[]; opinion: string }) =>
|
|
http.post("/audits/tasks/batch-approve", payload);
|
|
export const batchRejectAuditTasks = (payload: { idempotencyKey: string; taskIds: number[]; opinion: string }) =>
|
|
http.post("/audits/tasks/batch-reject", payload);
|
|
export const fetchAuditSlaStat = () => http.get("/audits/tasks/sla-stat");
|
|
export const fetchAuditReviewStat = (params?: {
|
|
mine?: boolean;
|
|
scope?: string;
|
|
reviewFocus?: string;
|
|
}) => http.get("/audits/tasks/review-stat", {
|
|
params: {
|
|
mine: !!params?.mine,
|
|
scope: params?.scope,
|
|
reviewFocus: params?.reviewFocus,
|
|
},
|
|
});
|
|
|
|
export const fetchAuditFlows = (params?: { pageNo?: number; pageSize?: number }) =>
|
|
http.get("/audit-flows", { params });
|
|
export const createAuditFlow = (payload: {
|
|
flowCode: string;
|
|
flowName: string;
|
|
effectiveStartAt?: string;
|
|
effectiveEndAt?: string;
|
|
nodes: Array<{ nodeCode: string; nodeName: string; sortNo: number; assigneeType?: string; assigneeRefId?: number }>;
|
|
}) => http.post("/audit-flows", payload);
|
|
export const updateAuditFlow = (
|
|
id: number,
|
|
payload: {
|
|
flowCode: string;
|
|
flowName: string;
|
|
effectiveStartAt?: string;
|
|
effectiveEndAt?: string;
|
|
nodes: Array<{ nodeCode: string; nodeName: string; sortNo: number; assigneeType?: string; assigneeRefId?: number }>;
|
|
},
|
|
) => http.put(`/audit-flows/${id}`, payload);
|
|
export const copyAuditFlow = (id: number) => http.post(`/audit-flows/${id}/copy`);
|
|
export const setDefaultAuditFlow = (id: number) => http.post(`/audit-flows/${id}/default`);
|
|
export const enableAuditFlow = (id: number) => http.post(`/audit-flows/${id}/enable`);
|
|
export const disableAuditFlow = (id: number) => http.post(`/audit-flows/${id}/disable`);
|
|
|
|
export const fetchFinanceProjects = () => http.get("/finance/projects");
|
|
export const exportFinanceLedger = () => http.get("/finance/ledger/export");
|
|
export const reconcileFinance = (payload: { idempotencyKey: string; projectId: number; expectedAmountCent: number }) =>
|
|
http.post("/finance/reconciliation", payload);
|
|
export const lockFinance = (payload: { idempotencyKey: string; projectId: number; reason: string }) =>
|
|
http.post("/finance/lock", payload);
|
|
export const unlockFinance = (payload: { idempotencyKey: string; projectId: number; reason: string }) =>
|
|
http.post("/finance/unlock", payload);
|
|
export const fetchFinanceReconciliationList = (params?: { projectId?: number }) =>
|
|
http.get("/finance/reconciliation/list", { params });
|
|
export const confirmPayment = (payload: {
|
|
idempotencyKey: string;
|
|
projectId: number;
|
|
meetingId: number;
|
|
amountCent: number;
|
|
paymentVoucherOssKey: string;
|
|
}) => http.post("/finance/payments", payload);
|
|
|
|
export const fetchUsers = (params?: { pageNo?: number; pageSize?: number; includeDeleted?: boolean; keyword?: string }) => http.get("/users", { params });
|
|
export const fetchTenants = () => http.get("/tenants");
|
|
export const fetchPlatformTenants = () => http.get("/platform/tenants");
|
|
export const createTenant = (payload: { tenantCode: string; tenantName: string; logoUrl?: string }) =>
|
|
http.post("/tenants", payload);
|
|
export const updateTenant = (
|
|
id: number,
|
|
payload: { tenantName: string; logoUrl?: string },
|
|
) => http.put(`/tenants/${id}`, payload);
|
|
export const createPlatformTenant = (payload: { tenantCode: string; tenantName: string; logoUrl?: string }) =>
|
|
http.post("/platform/tenants", payload);
|
|
export const updatePlatformTenant = (
|
|
id: number,
|
|
payload: { tenantName: string; logoUrl?: string },
|
|
) => http.put(`/platform/tenants/${id}`, payload);
|
|
export const fetchTenantLogoUploadSign = (payload: { fileName: string; contentType?: string }) =>
|
|
http.post("/tenants/logo-upload-sign", payload);
|
|
export const fetchPlatformTenantLogoUploadSign = (payload: { fileName: string; contentType?: string }) =>
|
|
http.post("/platform/tenants/logo-upload-sign", payload);
|
|
export const enableTenant = (id: number) => http.post(`/tenants/${id}/enable`);
|
|
export const disableTenant = (id: number) => http.post(`/tenants/${id}/disable`);
|
|
export const enablePlatformTenant = (id: number) => http.post(`/platform/tenants/${id}/enable`);
|
|
export const disablePlatformTenant = (id: number) => http.post(`/platform/tenants/${id}/disable`);
|
|
export const deletePlatformTenant = (id: number) => http.post(`/platform/tenants/${id}/delete`);
|
|
export const fetchPlatformTenantAdmin = (id: number) => http.get(`/platform/tenants/${id}/admin`);
|
|
export const initPlatformTenantBaseline = (id: number) => http.post(`/platform/tenants/${id}/init-baseline`);
|
|
export const setPlatformTenantAdmin = (
|
|
id: number,
|
|
payload: { userName: string; phone: string; email?: string; roleCode?: string },
|
|
) => http.post(`/platform/tenants/${id}/admin`, payload);
|
|
export const fetchEnterprises = (params?: { pageNo?: number; pageSize?: number }) =>
|
|
http.get("/enterprises", { params });
|
|
export const createEnterprise = (payload: { enterpriseName: string; enterpriseUrl?: string; logoUrl?: string }) =>
|
|
http.post("/enterprises", payload);
|
|
export const fetchEnterpriseLogoUploadSign = (payload: { fileName: string; contentType?: string }) =>
|
|
http.post("/enterprises/logo-upload-sign", payload);
|
|
export const updateEnterprise = (
|
|
id: number,
|
|
payload: { enterpriseName: string; enterpriseUrl?: string; logoUrl?: string },
|
|
) => http.put(`/enterprises/${id}`, payload);
|
|
export const enableEnterprise = (id: number) => http.post(`/enterprises/${id}/enable`);
|
|
export const disableEnterprise = (id: number) => http.post(`/enterprises/${id}/disable`);
|
|
export const deleteEnterprise = (id: number) => http.post(`/enterprises/${id}/delete`);
|
|
export const createUser = (payload: {
|
|
userName: string;
|
|
phone: string;
|
|
password: string;
|
|
email?: string;
|
|
validFrom?: string;
|
|
validTo?: string;
|
|
}) => http.post("/users", payload);
|
|
export const updateUser = (
|
|
id: number,
|
|
payload: {
|
|
userName: string;
|
|
phone: string;
|
|
email?: string;
|
|
validFrom?: string;
|
|
validTo?: string;
|
|
password?: string;
|
|
},
|
|
) => http.put(`/users/${id}`, payload);
|
|
export const assignUserRole = (payload: { userId: number; roleId: number }) =>
|
|
http.post("/users/assign-role", payload);
|
|
export const enableUser = (id: number) => http.post(`/users/${id}/enable`);
|
|
export const disableUser = (id: number) => http.post(`/users/${id}/disable`);
|
|
export const deleteUser = (id: number) => http.post(`/users/${id}/delete`);
|
|
export const resetUserPassword = (id: number, payload: { newPassword: string }) =>
|
|
http.post(`/users/${id}/reset-password`, payload);
|
|
export const batchImportUsers = (payload: {
|
|
users: Array<{
|
|
userName: string;
|
|
phone: string;
|
|
password: string;
|
|
email?: string;
|
|
validFrom?: string;
|
|
validTo?: string;
|
|
roleCode?: string;
|
|
}>;
|
|
}) => http.post("/users/import", payload);
|
|
export const fetchUserRoleHistory = (id: number) => http.get(`/users/${id}/role-history`);
|
|
export const fetchUserDelegations = (id: number) => http.get(`/users/${id}/delegations`);
|
|
export const createUserDelegation = (
|
|
id: number,
|
|
payload: { delegateUserId: number; effectiveFrom: string; effectiveTo: string; reason?: string },
|
|
) => http.post(`/users/${id}/delegations`, payload);
|
|
export const disableUserDelegation = (id: number, payload: { reason: string }) =>
|
|
http.post(`/delegations/${id}/disable`, payload);
|
|
export const changeMyPassword = (payload: { oldPassword: string; newPassword: string }) =>
|
|
http.post("/profile/change-password", payload);
|
|
export const fetchProfilePreferences = () => http.get("/profile/preferences");
|
|
export const saveProfilePreferences = (payload: { themeMode: string; density: string; themeScheme: string }) =>
|
|
http.put("/profile/preferences", payload);
|
|
|
|
export const fetchRoles = (params?: { pageNo?: number; pageSize?: number }) =>
|
|
http.get("/roles", { params });
|
|
export const createRole = (payload: { roleCode: string; roleName: string }) =>
|
|
http.post("/roles", payload);
|
|
export const updateRole = (id: number, payload: { roleName: string }) =>
|
|
http.put(`/roles/${id}`, payload);
|
|
export const enableRole = (id: number) => http.post(`/roles/${id}/enable`);
|
|
export const disableRole = (id: number) => http.post(`/roles/${id}/disable`);
|
|
export const deleteRole = (id: number) => http.post(`/roles/${id}/delete`);
|
|
export const fetchPermissions = () => http.get("/permissions");
|
|
export const fetchRolePermissions = (id: number) => http.get(`/roles/${id}/permissions`);
|
|
export const bindRolePermissions = (id: number, payload: { permissionIds: number[] }) =>
|
|
http.post(`/roles/${id}/permissions`, payload);
|
|
export const fetchRoleMenus = (id: number) => http.get(`/roles/${id}/menus`);
|
|
export const bindRoleMenus = (id: number, payload: { menuIds: number[] }) =>
|
|
http.post(`/roles/${id}/menus`, payload);
|
|
export const fetchMenus = () => http.get("/menus");
|
|
export const fetchCurrentMenus = () => http.get("/menus/current");
|
|
export const fetchPlatformCurrentMenus = () => http.get("/platform/menus/current");
|
|
export const fetchMenuRoles = (id: number) => http.get(`/menus/${id}/roles`);
|
|
export const reorderMenus = (payload: { menus: Array<{ id: number; sortNo: number }> }) =>
|
|
http.post("/menus/reorder", payload);
|
|
export const createMenu = (payload: {
|
|
menuCode: string;
|
|
menuName: string;
|
|
routePath: string;
|
|
permissionCode: string;
|
|
sortNo: number;
|
|
}) =>
|
|
http.post("/menus", payload);
|
|
export const updateMenu = (
|
|
id: number,
|
|
payload: {
|
|
menuName: string;
|
|
routePath: string;
|
|
permissionCode: string;
|
|
sortNo: number;
|
|
status: "ENABLED" | "DISABLED";
|
|
},
|
|
) => http.put(`/menus/${id}`, payload);
|
|
|
|
export const fetchDataPermissions = () => http.get("/data-permissions");
|
|
export const createDataPermission = (payload: {
|
|
policyName: string;
|
|
projectScope: string;
|
|
projectIdsCsv?: string;
|
|
meetingScope: string;
|
|
meetingIdsCsv?: string;
|
|
userScope: string;
|
|
userIdsCsv?: string;
|
|
expertScope: string;
|
|
expertIdsCsv?: string;
|
|
moduleScope?: string;
|
|
exportAllowed?: boolean;
|
|
}) => http.post("/data-permissions", payload);
|
|
export const updateDataPermission = (
|
|
id: number,
|
|
payload: {
|
|
policyName: string;
|
|
projectScope: string;
|
|
projectIdsCsv?: string;
|
|
meetingScope: string;
|
|
meetingIdsCsv?: string;
|
|
userScope: string;
|
|
userIdsCsv?: string;
|
|
expertScope: string;
|
|
expertIdsCsv?: string;
|
|
moduleScope?: string;
|
|
exportAllowed?: boolean;
|
|
},
|
|
) => http.put(`/data-permissions/${id}`, payload);
|
|
export const assignDataPermissionRoles = (id: number, payload: { roleIds: number[]; assignMode?: "APPEND" | "REPLACE" }) =>
|
|
http.post(`/data-permissions/${id}/assign-roles`, payload);
|
|
export const copyDataPermission = (id: number) => http.post(`/data-permissions/${id}/copy`);
|
|
export const enableDataPermission = (id: number) => http.post(`/data-permissions/${id}/enable`);
|
|
export const disableDataPermission = (id: number) => http.post(`/data-permissions/${id}/disable`);
|
|
export const fetchDataPermissionRoles = (id: number) => http.get(`/data-permissions/${id}/roles`);
|
|
export const fetchCurrentDataScope = () => http.get("/data-permissions/current-scope");
|
|
export const fetchMatchedDataScope = (params: { account: string }) => http.get("/data-permissions/match", { params });
|
|
export const fetchAuditLogs = (params?: { userId?: number; actionCode?: string; pageNo?: number; pageSize?: number }) =>
|
|
http.get("/audit-logs", { params });
|
|
export const fetchPlatformAuditLogs = (params?: {
|
|
userId?: number;
|
|
actionCode?: string;
|
|
tenantId?: number;
|
|
scope?: "TENANT" | "PLATFORM";
|
|
pageNo?: number;
|
|
pageSize?: number;
|
|
}) =>
|
|
http.get("/platform/audit-logs", { params });
|
|
export const fetchPlatformRoles = () => http.get("/platform/roles");
|
|
export const createPlatformRole = (payload: { roleCode: string; roleName: string }) => http.post("/platform/roles", payload);
|
|
export const updatePlatformRole = (id: number, payload: { roleName: string }) => http.put(`/platform/roles/${id}`, payload);
|
|
export const enablePlatformRole = (id: number) => http.post(`/platform/roles/${id}/enable`);
|
|
export const disablePlatformRole = (id: number) => http.post(`/platform/roles/${id}/disable`);
|
|
export const fetchPlatformRolePermissions = (id: number) => http.get(`/platform/roles/${id}/permissions`);
|
|
export const bindPlatformRolePermissions = (id: number, payload: { permissionIds: number[] }) =>
|
|
http.post(`/platform/roles/${id}/permissions`, payload);
|
|
export const fetchPlatformRoleMenus = (id: number) => http.get(`/platform/roles/${id}/menus`);
|
|
export const bindPlatformRoleMenus = (id: number, payload: { menuIds: number[] }) =>
|
|
http.post(`/platform/roles/${id}/menus`, payload);
|
|
export const fetchPlatformPermissions = () => http.get("/platform/permissions");
|
|
export const fetchPlatformUsers = (params?: { keyword?: string }) => http.get("/platform/users", { params });
|
|
export const createPlatformUser = (payload: {
|
|
userName: string;
|
|
phone: string;
|
|
password: string;
|
|
email?: string;
|
|
validFrom?: string;
|
|
validTo?: string;
|
|
}) => http.post("/platform/users", payload);
|
|
export const batchImportPlatformUsers = (payload: {
|
|
users: Array<{
|
|
userName: string;
|
|
phone: string;
|
|
password: string;
|
|
email?: string;
|
|
validFrom?: string;
|
|
validTo?: string;
|
|
roleCode?: string;
|
|
}>;
|
|
}) => http.post("/platform/users/import", payload);
|
|
export const assignPlatformUserRole = (payload: { userId: number; roleId: number }) =>
|
|
http.post("/platform/users/assign-role", payload);
|
|
export const enablePlatformUser = (id: number) => http.post(`/platform/users/${id}/enable`);
|
|
export const disablePlatformUser = (id: number) => http.post(`/platform/users/${id}/disable`);
|
|
export const resetPlatformUserPassword = (id: number, payload: { newPassword: string }) =>
|
|
http.post(`/platform/users/${id}/reset-password`, payload);
|
|
export const fetchPlatformMenus = () => http.get("/platform/menus");
|
|
export const createPlatformMenu = (payload: {
|
|
menuCode: string;
|
|
menuName: string;
|
|
routePath: string;
|
|
permissionCode: string;
|
|
sortNo: number;
|
|
}) => http.post("/platform/menus", payload);
|
|
export const updatePlatformMenu = (
|
|
id: number,
|
|
payload: {
|
|
menuName: string;
|
|
routePath: string;
|
|
permissionCode: string;
|
|
sortNo: number;
|
|
status: "ENABLED" | "DISABLED";
|
|
},
|
|
) => http.put(`/platform/menus/${id}`, payload);
|
|
export const reorderPlatformMenus = (payload: { menus: Array<{ id: number; sortNo: number }> }) =>
|
|
http.post("/platform/menus/reorder", payload);
|
|
export const fetchPlatformMenuRoles = (id: number) => http.get(`/platform/menus/${id}/roles`);
|
|
export const bindPlatformMenuRoles = (id: number, payload: { roleIds: number[] }) =>
|
|
http.post(`/platform/menus/${id}/roles`, payload);
|
|
export const exportAuditLogs = (params?: { userId?: number; actionCode?: string }) =>
|
|
http.get("/audit-logs/export", { params });
|
|
export const fetchAuditLogExportTasks = () => http.get("/audit-logs/export-tasks");
|
|
export const createAuditLogExportTask = (payload: {
|
|
idempotencyKey: string;
|
|
userId?: number;
|
|
actionCode?: string;
|
|
fileName?: string;
|
|
}) => http.post("/audit-logs/export-tasks", payload);
|
|
export const fetchInvoiceProfiles = () => http.get("/invoice-profiles");
|
|
export const createInvoiceProfile = (payload: {
|
|
companyName: string;
|
|
taxNo: string;
|
|
bankName: string;
|
|
accountNo: string;
|
|
address?: string;
|
|
phone?: string;
|
|
defaultProjectId?: number;
|
|
status?: "ENABLED" | "DISABLED";
|
|
}) => http.post("/invoice-profiles", payload);
|
|
export const updateInvoiceProfile = (
|
|
id: number,
|
|
payload: {
|
|
companyName: string;
|
|
taxNo: string;
|
|
bankName: string;
|
|
accountNo: string;
|
|
address?: string;
|
|
phone?: string;
|
|
defaultProjectId?: number;
|
|
status?: "ENABLED" | "DISABLED";
|
|
},
|
|
) => http.put(`/invoice-profiles/${id}`, payload);
|
|
export const enableInvoiceProfile = (id: number) => http.post(`/invoice-profiles/${id}/enable`);
|
|
export const disableInvoiceProfile = (id: number) => http.post(`/invoice-profiles/${id}/disable`);
|
|
|
|
export const fetchTemplates = (params?: {
|
|
templateName?: string;
|
|
templateType?: string;
|
|
status?: string;
|
|
scopeType?: string;
|
|
bizScene?: string;
|
|
|
|
effectiveStatus?: string;
|
|
pageNo?: number;
|
|
pageSize?: number;
|
|
}) =>
|
|
http.get("/templates", { params });
|
|
export const fetchTemplateViewList = (params?: {
|
|
templateName?: string;
|
|
templateType?: string;
|
|
scopeType?: string;
|
|
bizScene?: string;
|
|
|
|
effectiveStatus?: string;
|
|
pageNo?: number;
|
|
pageSize?: number;
|
|
}) =>
|
|
http.get("/templates/view-list", { params });
|
|
export const fetchPublishedTemplateOptions = (params?: { bizScene?: string }) =>
|
|
http.get("/templates/published-options", { params });
|
|
export const fetchTemplateTypeOptions = () => http.get("/templates/type-options");
|
|
export const fetchTemplateFlowSceneOptions = () => http.get("/templates/flow-scene-options");
|
|
export const fetchTemplateFlowLinks = () => http.get("/templates/flow-links");
|
|
export const bindTemplateFlowLink = (sceneCode: string, payload: { templateId: number }) =>
|
|
http.post(`/templates/flow-links/${sceneCode}/bind`, payload);
|
|
export const enableTemplateTypeOption = (typeCode: string) => http.post(`/templates/type-options/${typeCode}/enable`);
|
|
export const disableTemplateTypeOption = (typeCode: string) => http.post(`/templates/type-options/${typeCode}/disable`);
|
|
export const createTemplate = (payload: {
|
|
templateName: string;
|
|
templateType: string;
|
|
scopeType: "ALL" | "PROJECT" | "MEETING";
|
|
projectId?: number;
|
|
meetingId?: number;
|
|
bizScene?: "MEETING_RECOMMEND" | "AUDIT_NOTIFY" | "SETTLEMENT";
|
|
objectKey: string;
|
|
changeLog?: string;
|
|
effectiveFrom?: string;
|
|
effectiveTo?: string;
|
|
|
|
downloadRateLimitPerHour?: number;
|
|
}) => http.post("/templates", payload);
|
|
export const updateTemplate = (id: number, payload: {
|
|
templateName: string;
|
|
templateType: string;
|
|
scopeType: "ALL" | "PROJECT" | "MEETING";
|
|
projectId?: number;
|
|
meetingId?: number;
|
|
bizScene?: "MEETING_RECOMMEND" | "AUDIT_NOTIFY" | "SETTLEMENT";
|
|
effectiveFrom?: string;
|
|
effectiveTo?: string;
|
|
|
|
downloadRateLimitPerHour?: number;
|
|
}) => http.post(`/templates/${id}/update`, payload);
|
|
export const fetchTemplateUploadSign = (payload: {
|
|
fileName: string;
|
|
contentType?: string;
|
|
templateType?: string;
|
|
}) => http.post("/templates/upload-sign", payload);
|
|
export const fetchTemplateVersions = (id: number) => http.get(`/templates/${id}/versions`);
|
|
export const addTemplateVersion = (
|
|
id: number,
|
|
payload: {
|
|
objectKey: string;
|
|
changeLog?: string;
|
|
},
|
|
) => http.post(`/templates/${id}/versions`, payload);
|
|
export const publishTemplate = (id: number) => http.post(`/templates/${id}/publish`);
|
|
export const disableTemplate = (id: number) => http.post(`/templates/${id}/disable`);
|
|
export const archiveTemplate = (id: number) => http.post(`/templates/${id}/archive`);
|
|
export const rollbackTemplate = (id: number, payload: { versionNo: number; rollbackReason: string }) =>
|
|
http.post(`/templates/${id}/rollback`, payload);
|
|
export const downloadTemplate = (id: number) => http.get(`/templates/${id}/download`);
|
|
export const fetchTemplateVersionDiff = (id: number, params?: { leftVersionNo?: number; rightVersionNo?: number }) =>
|
|
http.get(`/templates/${id}/versions/diff`, { params });
|
|
export const fetchTemplateDownloadLogs = (params?: {
|
|
templateId?: number;
|
|
templateName?: string;
|
|
userId?: number;
|
|
userKeyword?: string;
|
|
versionNo?: number;
|
|
|
|
ip?: string;
|
|
downloadedFrom?: string;
|
|
downloadedTo?: string;
|
|
pageNo?: number;
|
|
pageSize?: number;
|
|
}) =>
|
|
http.get("/templates/download-logs", { params });
|
|
|
|
export const fetchExperts = (params?: { keyword?: string; pageNo?: number; pageSize?: number }) => http.get("/experts", { params });
|
|
export const fetchPlatformExperts = (params?: { keyword?: string }) => http.get("/platform/experts", { params });
|
|
export const fetchExpertDetail = (id: number) => http.get(`/experts/${id}`);
|
|
export const fetchPlatformExpertDetail = (id: number) => http.get(`/platform/experts/${id}`);
|
|
export const fetchExpertUploadSign = (payload: { fileName: string; contentType?: string }) =>
|
|
http.post("/experts/upload-sign", payload);
|
|
export const fetchPlatformExpertUploadSign = (payload: { fileName: string; contentType?: string }) =>
|
|
http.post("/platform/experts/upload-sign", payload);
|
|
export const createExpert = (payload: {
|
|
expertName: string;
|
|
idNo: string;
|
|
phone: string;
|
|
titleCode?: string;
|
|
title?: string;
|
|
hospitalCode?: string;
|
|
organization?: string;
|
|
}) => http.post("/experts", payload);
|
|
export const createPlatformExpert = (payload: {
|
|
expertName: string;
|
|
idNo: string;
|
|
phone: string;
|
|
titleCode?: string;
|
|
title?: string;
|
|
hospitalCode?: string;
|
|
organization?: string;
|
|
}) => http.post("/platform/experts", payload);
|
|
export const updateExpert = (
|
|
id: number,
|
|
payload: {
|
|
expertName: string;
|
|
idNo: string;
|
|
phone: string;
|
|
titleCode?: string;
|
|
title?: string;
|
|
hospitalCode?: string;
|
|
organization?: string;
|
|
gender?: string;
|
|
birthday?: string;
|
|
idCardValidUntil?: string;
|
|
statusReason?: string;
|
|
},
|
|
) => http.put(`/experts/${id}`, payload);
|
|
export const updatePlatformExpert = (
|
|
id: number,
|
|
payload: {
|
|
expertName: string;
|
|
idNo: string;
|
|
phone: string;
|
|
titleCode?: string;
|
|
title?: string;
|
|
hospitalCode?: string;
|
|
organization?: string;
|
|
gender?: string;
|
|
birthday?: string;
|
|
idCardValidUntil?: string;
|
|
statusReason?: string;
|
|
},
|
|
) => http.put(`/platform/experts/${id}`, payload);
|
|
export const importExperts = (payload: {
|
|
experts: Array<{ expertName: string; idNo: string; phone: string; titleCode?: string; title?: string; hospitalCode?: string; organization?: string }>;
|
|
}) => http.post("/experts/import", payload);
|
|
export const importPlatformExperts = (payload: {
|
|
experts: Array<{ expertName: string; idNo: string; phone: string; titleCode?: string; title?: string; hospitalCode?: string; organization?: string }>;
|
|
}) => http.post("/platform/experts/import", payload);
|
|
export const exportExperts = () => http.get("/experts/export");
|
|
export const exportPlatformExperts = () => http.get("/platform/experts/export");
|
|
export const mergeExpert = (id: number, payload: { sourceExpertId: number; reason: string }) =>
|
|
http.post(`/experts/${id}/merge`, payload);
|
|
export const mergePlatformExpert = (id: number, payload: { sourceExpertId: number; reason: string }) =>
|
|
http.post(`/platform/experts/${id}/merge`, payload);
|
|
export const fetchExpertBankCards = (id: number) => http.get(`/experts/${id}/bank-cards`);
|
|
export const fetchPlatformExpertBankCards = (id: number) => http.get(`/platform/experts/${id}/bank-cards`);
|
|
export const fetchExpertBankCardDetail = (id: number, cardId: number) => http.get(`/experts/${id}/bank-cards/${cardId}`);
|
|
export const fetchPlatformExpertBankCardDetail = (id: number, cardId: number) =>
|
|
http.get(`/platform/experts/${id}/bank-cards/${cardId}`);
|
|
export const addExpertBankCard = (
|
|
id: number,
|
|
payload: {
|
|
bankName: string;
|
|
bankProvince?: string;
|
|
bankCity?: string;
|
|
bankBranchName?: string;
|
|
bankCardNo: string;
|
|
bankCardFrontOssKey?: string;
|
|
bankCardBackOssKey?: string;
|
|
accountName: string;
|
|
isDefault?: boolean;
|
|
},
|
|
) => http.post(`/experts/${id}/bank-cards`, payload);
|
|
export const addPlatformExpertBankCard = (
|
|
id: number,
|
|
payload: {
|
|
bankName: string;
|
|
bankProvince?: string;
|
|
bankCity?: string;
|
|
bankBranchName?: string;
|
|
bankCardNo: string;
|
|
bankCardFrontOssKey?: string;
|
|
bankCardBackOssKey?: string;
|
|
accountName: string;
|
|
isDefault?: boolean;
|
|
},
|
|
) => http.post(`/platform/experts/${id}/bank-cards`, payload);
|
|
export const updateExpertBankCard = (
|
|
id: number,
|
|
cardId: number,
|
|
payload: {
|
|
bankName: string;
|
|
bankProvince?: string;
|
|
bankCity?: string;
|
|
bankBranchName?: string;
|
|
bankCardNo: string;
|
|
bankCardFrontOssKey?: string;
|
|
bankCardBackOssKey?: string;
|
|
accountName: string;
|
|
isDefault?: boolean;
|
|
},
|
|
) => http.put(`/experts/${id}/bank-cards/${cardId}`, payload);
|
|
export const updatePlatformExpertBankCard = (
|
|
id: number,
|
|
cardId: number,
|
|
payload: {
|
|
bankName: string;
|
|
bankProvince?: string;
|
|
bankCity?: string;
|
|
bankBranchName?: string;
|
|
bankCardNo: string;
|
|
bankCardFrontOssKey?: string;
|
|
bankCardBackOssKey?: string;
|
|
accountName: string;
|
|
isDefault?: boolean;
|
|
},
|
|
) => http.put(`/platform/experts/${id}/bank-cards/${cardId}`, payload);
|
|
export const fetchExpertDictionaryOptions = () => http.get("/dictionaries/expert-options");
|
|
export const fetchDictionaries = (params?: { dictType?: string; enabledOnly?: boolean }) =>
|
|
http.get("/dictionaries", { params });
|
|
export const fetchPlatformDictionaries = (params?: { dictType?: string; enabledOnly?: boolean }) =>
|
|
http.get("/platform/dictionaries", { params });
|
|
export const fetchPlatformDictionaryTypes = (params?: { enabledOnly?: boolean }) =>
|
|
http.get("/platform/dictionaries/types", { params });
|
|
export const createPlatformDictionaryType = (payload: {
|
|
dictType: string;
|
|
dictName: string;
|
|
sortNo: number;
|
|
remark?: string;
|
|
}) => http.post("/platform/dictionaries/types", payload);
|
|
export const createPlatformDictionary = (payload: {
|
|
dictType: string;
|
|
dictCode: string;
|
|
dictName: string;
|
|
sortNo: number;
|
|
remark?: string;
|
|
}) => http.post("/platform/dictionaries", payload);
|
|
export const updatePlatformDictionary = (
|
|
id: number,
|
|
payload: { dictName: string; sortNo: number; status: "ENABLED" | "DISABLED"; remark?: string },
|
|
) => http.put(`/platform/dictionaries/${id}`, payload);
|
|
export const enablePlatformDictionary = (id: number) => http.post(`/platform/dictionaries/${id}/enable`);
|
|
export const disablePlatformDictionary = (id: number) => http.post(`/platform/dictionaries/${id}/disable`);
|
|
export const fetchPlatformAuthSessions = (params?: {
|
|
scope?: "TENANT" | "PLATFORM";
|
|
status?: "ACTIVE" | "ROTATED" | "REVOKED" | "EXPIRED";
|
|
userId?: number;
|
|
tenantId?: number;
|
|
}) => http.get("/platform/auth-sessions", { params });
|
|
export const revokePlatformAuthSession = (id: number) => http.post(`/platform/auth-sessions/${id}/revoke`);
|
|
export const revokePlatformPrincipalSessions = (payload: {
|
|
userId: number;
|
|
scope: "TENANT" | "PLATFORM";
|
|
tenantId?: number;
|
|
}) => http.post("/platform/auth-sessions/revoke-principal", payload);
|
|
export const fetchNotifyGateways = () => http.get("/notify-gateways");
|
|
export const saveNotifyGateway = (
|
|
channelCode: string,
|
|
payload: {
|
|
gatewayName: string;
|
|
providerCode: string;
|
|
status: "ENABLED" | "DISABLED";
|
|
remark?: string;
|
|
config: Record<string, unknown>;
|
|
},
|
|
) => http.put(`/notify-gateways/${channelCode}`, payload);
|
|
export const testNotifyGateway = (
|
|
channelCode: string,
|
|
payload: {
|
|
receiverRef: string;
|
|
subject?: string;
|
|
content?: string;
|
|
smsTemplateCode?: string;
|
|
},
|
|
) => http.post(`/notify-gateways/${channelCode}/test`, payload);
|
|
|
|
export const fetchNotificationPolicies = (params?: { pageNo?: number; pageSize?: number }) =>
|
|
http.get("/notification-policies", { params });
|
|
export const fetchNotificationTextTemplates = (params?: { pageNo?: number; pageSize?: number }) =>
|
|
http.get("/notification-text-templates", { params });
|
|
export const createNotificationTextTemplate = (payload: {
|
|
templateName: string;
|
|
subjectTemplate?: string;
|
|
titleTemplate?: string;
|
|
contentTemplate: string;
|
|
status?: "ENABLED" | "DISABLED";
|
|
}) => http.post("/notification-text-templates", payload);
|
|
export const updateNotificationTextTemplate = (
|
|
id: number,
|
|
payload: {
|
|
templateName: string;
|
|
subjectTemplate?: string;
|
|
titleTemplate?: string;
|
|
contentTemplate: string;
|
|
status?: "ENABLED" | "DISABLED";
|
|
},
|
|
) => http.put(`/notification-text-templates/${id}`, payload);
|
|
export const enableNotificationTextTemplate = (id: number) => http.post(`/notification-text-templates/${id}/enable`);
|
|
export const disableNotificationTextTemplate = (id: number) => http.post(`/notification-text-templates/${id}/disable`);
|
|
export const createNotificationPolicy = (payload: {
|
|
policyName: string;
|
|
eventCode: string;
|
|
channel: string;
|
|
receiverType: string;
|
|
templateId: number;
|
|
smsTemplateCode?: string;
|
|
variablesJson?: string;
|
|
status?: "ENABLED" | "DISABLED";
|
|
}) => http.post("/notification-policies", payload);
|
|
export const updateNotificationPolicy = (
|
|
id: number,
|
|
payload: {
|
|
policyName: string;
|
|
eventCode: string;
|
|
channel: string;
|
|
receiverType: string;
|
|
templateId: number;
|
|
smsTemplateCode?: string;
|
|
variablesJson?: string;
|
|
status?: "ENABLED" | "DISABLED";
|
|
},
|
|
) => http.put(`/notification-policies/${id}`, payload);
|
|
export const bindNotificationPolicyEvents = (id: number, payload: { eventCode: string }) =>
|
|
http.post(`/notification-policies/${id}/events`, payload);
|
|
export const enableNotificationPolicy = (id: number) => http.post(`/notification-policies/${id}/enable`);
|
|
export const disableNotificationPolicy = (id: number) => http.post(`/notification-policies/${id}/disable`);
|
|
export const dispatchNotification = (payload: {
|
|
idempotencyKey: string;
|
|
eventCode: string;
|
|
bizType?: string;
|
|
bizId?: string;
|
|
variablesJson?: string;
|
|
policyId?: number;
|
|
}) => http.post("/notifications/dispatch", payload);
|
|
export const fetchNotificationTasks = (params?: { pageNo?: number; pageSize?: number }) =>
|
|
http.get("/notifications/tasks", { params });
|
|
export const ingestNotificationReceipt = (payload: {
|
|
taskId: number;
|
|
providerMessageId: string;
|
|
receiptCode: string;
|
|
receiptMessage?: string;
|
|
delivered?: boolean;
|
|
}) => http.post("/notifications/receipts", payload);
|
|
export const fetchInAppNotifications = (params?: { ts?: number; pageNo?: number; pageSize?: number; onlyUnread?: boolean }) =>
|
|
http.get("/in-app-notifications", { params });
|
|
export const fetchInAppNotificationSummary = (params?: { ts?: number }) =>
|
|
http.get("/in-app-notifications/summary", { params });
|
|
export const markInAppNotificationRead = (id: number) => http.post(`/in-app-notifications/${id}/read`);
|
|
export const markAllInAppNotificationsRead = () => http.post("/in-app-notifications/read-all");
|
|
export const fetchExportTasks = (params?: { pageNo?: number; pageSize?: number }) => http.get("/export-tasks", { params });
|
|
export const createExportTask = (payload: {
|
|
idempotencyKey: string;
|
|
taskCode: string;
|
|
bizType: string;
|
|
bizId?: string;
|
|
filtersJson?: string;
|
|
fileName?: string;
|
|
}) => http.post("/export-tasks", payload);
|
|
export const refreshExportTaskToken = (id: number) => http.post(`/export-tasks/${id}/refresh-token`);
|
|
export const downloadExportTask = (id: number, params: { token: string }) =>
|
|
http.get(`/export-tasks/${id}/download`, { params });
|
|
export const fetchOperationsDashboard = () => http.get("/operations/dashboard");
|
|
|
|
export const fetchObservabilityMetrics = (params: { metricCode: string; minutes?: number }) =>
|
|
http.get("/observability/metrics", { params });
|
|
export const fetchObservabilityExportMetrics = (params?: { minutes?: number }) =>
|
|
http.get("/observability/metrics/export", { params });
|
|
export const fetchAlertRules = () => http.get("/observability/alert-rules");
|
|
export const createAlertRule = (payload: {
|
|
ruleCode: string;
|
|
ruleName: string;
|
|
compareOp: string;
|
|
thresholdValue: number;
|
|
windowMinute: number;
|
|
suppressWindowMinute?: number;
|
|
status?: "ENABLED" | "DISABLED";
|
|
}) => http.post("/observability/alert-rules", payload);
|
|
export const updateAlertRule = (
|
|
id: number,
|
|
payload: {
|
|
ruleCode: string;
|
|
ruleName: string;
|
|
compareOp: string;
|
|
thresholdValue: number;
|
|
windowMinute: number;
|
|
suppressWindowMinute?: number;
|
|
status?: "ENABLED" | "DISABLED";
|
|
},
|
|
) => http.put(`/observability/alert-rules/${id}`, payload);
|
|
export const evaluateAlertRules = () => http.post("/observability/alert-rules/evaluate");
|
|
export const evaluateAlertRulesAuto = (params?: { recoveryWindowMinute?: number }) =>
|
|
http.post("/observability/alert-rules/evaluate/auto", null, { params });
|
|
export const fetchAlertEvents = () => http.get("/observability/alert-events");
|
|
|
|
// ========== Phase Zero: Dashboard Stats ==========
|
|
export const fetchDashboardStats = () => http.get("/dashboard/stats");
|
|
|
|
// ========== Phase Zero: Soft Delete & Lifecycle ==========
|
|
export const deleteAuditFlow = (id: number) => http.post(`/audit-flows/${id}/delete`);
|
|
export const deleteNotificationPolicy = (id: number) => http.post(`/notification-policies/${id}/delete`);
|
|
export const deleteNotificationTextTemplate = (id: number) => http.post(`/notification-text-templates/${id}/delete`);
|
|
|
|
// ========== Phase Zero: Platform User Update ==========
|
|
export const updatePlatformUser = (
|
|
id: number,
|
|
payload: {
|
|
userName: string;
|
|
phone: string;
|
|
email?: string;
|
|
validFrom?: string;
|
|
validTo?: string;
|
|
password?: string;
|
|
},
|
|
) => http.put(`/platform/users/${id}`, payload);
|
|
|
|
// ========== Phase Zero: Data Export ==========
|
|
export const exportMeetings = (payload: {
|
|
idempotencyKey: string;
|
|
filtersJson?: string;
|
|
fileName?: string;
|
|
}) => http.post("/meetings/export", payload);
|
|
export const exportUsers = (payload: {
|
|
idempotencyKey: string;
|
|
fileName?: string;
|
|
}) => http.post("/users/export", payload);
|
|
export const exportProjects = (payload: {
|
|
idempotencyKey: string;
|
|
fileName?: string;
|
|
}) => http.post("/projects/export", payload);
|
|
|
|
// ========== Phase Zero: Tenant Dictionary ==========
|
|
export const createDictionary = (payload: {
|
|
dictType: string;
|
|
dictCode: string;
|
|
dictName: string;
|
|
sortNo: number;
|
|
remark?: string;
|
|
}) => http.post("/dictionaries", payload);
|
|
export const updateDictionary = (
|
|
id: number,
|
|
payload: { dictName: string; sortNo: number; status: "ENABLED" | "DISABLED"; remark?: string },
|
|
) => http.put(`/dictionaries/${id}`, payload);
|
|
export const enableDictionary = (id: number) => http.post(`/dictionaries/${id}/enable`);
|
|
export const disableDictionary = (id: number) => http.post(`/dictionaries/${id}/disable`);
|