Files
craftlabs-authorization-sdk/web/delivery-platform-ui/src/api/platform.js
T

382 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import axios from "axios";
/**
* @param {{ page?: number, size?: number, keyword?: string }} params
*/
export function uploadContractAttachment(contractId, file) {
const formData = new FormData();
formData.append('file', file);
return axios.post(`/api/v1/contracts/${contractId}/attachments`, formData, {
headers: { 'Content-Type': 'multipart/form-data' }
});
}
export function listContractAttachments(contractId) {
return axios.get(`/api/v1/contracts/${contractId}/attachments`);
}
export function listCustomers(params) {
return axios.get("/api/v1/customers", { params });
}
export function createCustomer(body) {
return axios.post("/api/v1/customers", body);
}
export function updateCustomer(id, body) {
return axios.put(`/api/v1/customers/${id}`, body);
}
export function deleteCustomer(id) {
return axios.delete(`/api/v1/customers/${id}`);
}
/**
* @param {{ page?: number, size?: number, customerId?: string | number }} params
*/
export function listProjects(params) {
return axios.get("/api/v1/projects", { params });
}
export function createProject(body) {
return axios.post("/api/v1/projects", body);
}
export function updateProject(id, body) {
return axios.put(`/api/v1/projects/${id}`, body);
}
export function deleteProject(id) {
return axios.delete(`/api/v1/projects/${id}`);
}
export function getCustomerSummary(id) {
return axios.get(`/api/v1/customers/${id}/summary`);
}
export function getProjectPhaseDictionary() {
return axios.get("/api/v1/dictionaries/PROJECT_PHASE");
}
/**
* 合同列表(分页)。后端就绪后路径以 OpenAPI 为准。
* @param {{ page?: number, size?: number, customerId?: string | number, projectId?: string | number, keyword?: string }} params
*/
export function listContracts(params) {
return axios.get("/api/v1/contracts", { params });
}
/**
* @param {Record<string, unknown>} body
*/
export function createContract(body) {
return axios.post("/api/v1/contracts", body);
}
export function getContract(id) {
return axios.get(`/api/v1/contracts/${id}`);
}
/**
* @param {string | number} id
* @param {Record<string, unknown>} body
*/
export function updateContract(id, body) {
return axios.put(`/api/v1/contracts/${id}`, body);
}
/**
* @param {string | number} contractId
* @param {Record<string, unknown>} body
*/
export function addLine(contractId, body) {
return axios.post(`/api/v1/contracts/${contractId}/lines`, body);
}
/**
* @param {string | number} contractId
* @param {string | number} lineId
* @param {Record<string, unknown>} body
*/
export function updateLine(contractId, lineId, body) {
return axios.put(`/api/v1/contracts/${contractId}/lines/${lineId}`, body);
}
export function deleteLine(contractId, lineId) {
return axios.delete(`/api/v1/contracts/${contractId}/lines/${lineId}`);
}
/**
* 状态迁移:后端 `PATCH /api/v1/contracts/{id}/status`body `{ status: "PENDING_EFFECTIVE" }` 等。
* @param {string | number} id
* @param {{ status: string }} body
*/
export function patchContractStatus(id, body) {
return axios.patch(`/api/v1/contracts/${id}/status`, body);
}
/**
* M10-F01 审计分页:`GET /api/v1/audit-events`。
* @param {{ entityType: string, entityId: string | number, page?: number, size?: number }} params
*/
export function listAuditEvents(params) {
return axios.get("/api/v1/audit-events", { params });
}
/**
* @param {{ page?: number, size?: number, projectId?: string | number, keyword?: string }} params
*/
export function listDeliveryBatches(params) {
return axios.get("/api/v1/delivery-batches", { params });
}
/**
* @param {Record<string, unknown>} body
*/
export function createDeliveryBatch(body) {
return axios.post("/api/v1/delivery-batches", body);
}
export function getDeliveryBatch(id) {
return axios.get(`/api/v1/delivery-batches/${id}`);
}
/**
* @param {string | number} id
* @param {Record<string, unknown>} body
*/
export function updateDeliveryBatch(id, body) {
return axios.put(`/api/v1/delivery-batches/${id}`, body);
}
/**
* @param {string | number} id
* @param {{ status: string }} body
*/
export function patchDeliveryBatchStatus(id, body) {
return axios.patch(`/api/v1/delivery-batches/${id}/status`, body);
}
/**
* @param {string | number} batchId
*/
export function listDeliveryLines(batchId) {
return axios.get(`/api/v1/delivery-batches/${batchId}/lines`);
}
/**
* @param {string | number} batchId
* @param {Record<string, unknown>} body
*/
export function addDeliveryLine(batchId, body) {
return axios.post(`/api/v1/delivery-batches/${batchId}/lines`, body);
}
/**
* @param {string | number} batchId
* @param {string | number} lineId
* @param {Record<string, unknown>} body
*/
export function updateDeliveryLine(batchId, lineId, body) {
return axios.put(`/api/v1/delivery-batches/${batchId}/lines/${lineId}`, body);
}
export function deleteDeliveryLine(batchId, lineId) {
return axios.delete(`/api/v1/delivery-batches/${batchId}/lines/${lineId}`);
}
/**
* @param {{ page?: number, size?: number, projectId?: string | number, keyword?: string }} params
*/
export function listLicenseSns(params) {
return axios.get("/api/v1/license-sns", { params });
}
/**
* @param {Record<string, unknown>} body
*/
export function createLicenseSn(body) {
return axios.post("/api/v1/license-sns", body);
}
export function getLicenseSn(id) {
return axios.get(`/api/v1/license-sns/${id}`);
}
/**
* @param {string | number} id
* @param {Record<string, unknown>} body
*/
export function updateLicenseSn(id, body) {
return axios.put(`/api/v1/license-sns/${id}`, body);
}
/**
* @param {string | number} id
* @param {{ status: string }} body
*/
export function patchLicenseSnStatus(id, body) {
return axios.patch(`/api/v1/license-sns/${id}/status`, body);
}
export function batchImportLicenseSns(body) {
return axios.post('/api/v1/license-sns/batch-import', body);
}
/* —— I5 Callback Inbox & M6 integration read APIs (paths per docs/engineering/iterations/I5_I6_DESIGN.md A.3) —— */
/**
* @param {{
* page?: number,
* size?: number,
* status?: string,
* eventType?: string,
* snCode?: string,
* projectId?: string | number,
* productLineId?: string | number,
* environmentId?: string | number,
* from?: string,
* to?: string,
* }} params
*/
export function listCallbackInbox(params) {
return axios.get("/api/v1/callback-inbox", { params });
}
export function getCallbackInbox(id) {
return axios.get(`/api/v1/callback-inbox/${id}`);
}
/**
* @param {string | number} id
* @param {{ status: string }} body
*/
export function patchCallbackInboxStatus(id, body) {
return axios.patch(`/api/v1/callback-inbox/${id}/status`, body);
}
/**
* 人工挂接(M5-F04)。body 字段以 OpenAPI 为准。
* @param {string | number} id
* @param {Record<string, unknown>} body
*/
export function patchCallbackInboxLink(id, body) {
return axios.patch(`/api/v1/callback-inbox/${id}/link`, body);
}
/**
* I8:将 Webhook 侧 DEAD 出库按收据 ID 重新入队(需平台配置 LICENSE_WEBHOOK_*)。
* @param {string | number} id — callback inbox id
*/
export function replayCallbackWebhookDelivery(id) {
return axios.post(`/api/v1/callback-inbox/${id}/replay-webhook-delivery`);
}
/**
* I9:只读查询 Webhook 侧平台投递行状态(需 LICENSE_WEBHOOK_*)。
* @param {string | number} id — callback inbox id
*/
export function getCallbackWebhookDelivery(id) {
return axios.get(`/api/v1/callback-inbox/${id}/webhook-delivery`);
}
/**
* @param {{ page?: number, size?: number }} params
*/
export function listIntegrationEnvironments(params) {
return axios.get("/api/v1/integration/environments", { params });
}
/**
* @param {string | number} id
*/
export function getIntegrationEnvironment(id) {
return axios.get(`/api/v1/integration/environments/${id}`);
}
export function createIntegrationEnvironment(body) {
return axios.post("/api/v1/integration/environments", body);
}
export function updateIntegrationEnvironment(id, body) {
return axios.put(`/api/v1/integration/environments/${id}`, body);
}
export function deleteIntegrationEnvironment(id) {
return axios.delete(`/api/v1/integration/environments/${id}`);
}
/**
* @param {{ page?: number, size?: number }} params
*/
export function listProductLines(params) {
return axios.get("/api/v1/integration/product-lines", { params });
}
/**
* @param {string | number} id
*/
export function getProductLine(id) {
return axios.get(`/api/v1/integration/product-lines/${id}`);
}
export function createProductLine(body) {
return axios.post("/api/v1/integration/product-lines", body);
}
export function updateProductLine(id, body) {
return axios.put(`/api/v1/integration/product-lines/${id}`, body);
}
export function deleteProductLine(id) {
return axios.delete(`/api/v1/integration/product-lines/${id}`);
}
// —— M7 设备管理 ————————————————————————————
export function listDevices(params) {
return axios.get('/api/v1/devices', { params });
}
export function getDevice(id) {
return axios.get(`/api/v1/devices/${id}`);
}
export function createDevice(body) {
return axios.post('/api/v1/devices', body);
}
export function updateDevice(id, body) {
return axios.put(`/api/v1/devices/${id}`, body);
}
export function getDeviceBindings(id) {
return axios.get(`/api/v1/devices/${id}/bindings`);
}
export function createDeviceSwapRequest(id, body) {
return axios.post(`/api/v1/devices/${id}/swap-request`, body);
}
// —— M8 通知待办 ————————————————————————————
export function listTodos(params) {
return axios.get('/api/v1/todos', { params });
}
export function patchTodoStatus(id, body) {
return axios.patch(`/api/v1/todos/${id}/status`, body);
}
export function batchUpdateTodoStatus(body) {
return axios.post('/api/v1/todos/batch-status', body);
}
export function getNotificationConfig(params) {
return axios.get('/api/v1/notifications/config', { params });
}
export function updateNotificationConfig(body) {
return axios.put('/api/v1/notifications/config', body);
}
// —— M9 报表对账 ————————————————————————————
export function getContractSnReport(params) {
return axios.get('/api/v1/reports/contract-sn', { params });
}
export function getCallbackStats(params) {
return axios.get('/api/v1/reports/callback-stats', { params });
}
export function getProjectHealth() {
return axios.get('/api/v1/reports/project-health');
}