浏览代码

feat: 补充TypeScript类型定义和API服务方法

docker 2 月之前
父节点
当前提交
8ce8035090
共有 2 个文件被更改,包括 470 次插入2 次删除
  1. 170 2
      src/api/services.ts
  2. 300 0
      src/types/page.ts

+ 170 - 2
src/api/services.ts

@@ -2,24 +2,47 @@ import { request } from './request';
 import type {
   AfterSaleItem,
   ApiKeyItem,
+  ApprovalFlowItem,
   ChannelItem,
+  CouponItem,
   DashboardAlert,
   DashboardStat,
+  DepartmentItem,
+  EmployeeItem,
   InventoryItem,
   InventoryLogItem,
+  InventoryTurnoverItem,
+  InvoiceItem,
+  IQCItem,
   LogItem,
+  LogisticsProviderItem,
   MappingItem,
+  MessageTemplateItem,
+  NotificationItem,
   OrderItem,
+  PaymentItem,
+  PriceWatchItem,
   PricingRuleItem,
   ProductItem,
+  PromotionItem,
   PurchaseOrderItem,
+  PurchaseRequestItem,
+  RefundItem,
   ReportDataItem,
   ReportItem,
+  ReplenishmentPlanItem,
+  ReturnPackageItem,
   RoleItem,
+  SatisfactionItem,
   ShippingItem,
+  ShippingTemplateItem,
   SupplierItem,
+  SupplierPerformanceItem,
   SupplyCapabilityItem,
-  UserProfile
+  SupplierSettlementItem,
+  TicketItem,
+  UserProfile,
+  WarehouseItem
 } from '@/types/page';
 
 export interface DashboardOverviewResponse {
@@ -141,5 +164,150 @@ export const api = {
   updateApiKey: (id: string, data: Partial<ApiKeyItem>) =>
     request<ApiKeyItem>(`/api/system/api-keys/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
   deleteApiKey: (id: string) =>
-    request<{ success: boolean }>(`/api/system/api-keys/${id}`, { method: 'DELETE' })
+    request<{ success: boolean }>(`/api/system/api-keys/${id}`, { method: 'DELETE' }),
+
+  /* Warehouse */
+  getWarehouses: () => request<{ items: WarehouseItem[] }>('/api/warehouses'),
+  createWarehouse: (data: Partial<WarehouseItem>) =>
+    request<WarehouseItem>('/api/warehouses', { method: 'POST', body: JSON.stringify(data) }),
+  updateWarehouse: (id: string, data: Partial<WarehouseItem>) =>
+    request<WarehouseItem>(`/api/warehouses/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Return Package */
+  getReturnPackages: () => request<{ items: ReturnPackageItem[] }>('/api/return-packages'),
+  updateReturnPackage: (id: string, data: Partial<ReturnPackageItem>) =>
+    request<ReturnPackageItem>(`/api/return-packages/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Logistics Provider */
+  getLogisticsProviders: () => request<{ items: LogisticsProviderItem[] }>('/api/logistics-providers'),
+  createLogisticsProvider: (data: Partial<LogisticsProviderItem>) =>
+    request<LogisticsProviderItem>('/api/logistics-providers', { method: 'POST', body: JSON.stringify(data) }),
+  updateLogisticsProvider: (id: string, data: Partial<LogisticsProviderItem>) =>
+    request<LogisticsProviderItem>(`/api/logistics-providers/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Shipping Template */
+  getShippingTemplates: () => request<{ items: ShippingTemplateItem[] }>('/api/shipping-templates'),
+  createShippingTemplate: (data: Partial<ShippingTemplateItem>) =>
+    request<ShippingTemplateItem>('/api/shipping-templates', { method: 'POST', body: JSON.stringify(data) }),
+  updateShippingTemplate: (id: string, data: Partial<ShippingTemplateItem>) =>
+    request<ShippingTemplateItem>(`/api/shipping-templates/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Finance: Payment */
+  getPayments: () => request<{ items: PaymentItem[] }>('/api/finance/payments'),
+  updatePayment: (id: string, data: Partial<PaymentItem>) =>
+    request<PaymentItem>(`/api/finance/payments/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Finance: Refund */
+  getRefunds: () => request<{ items: RefundItem[] }>('/api/finance/refunds'),
+  updateRefund: (id: string, data: Partial<RefundItem>) =>
+    request<RefundItem>(`/api/finance/refunds/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Finance: Supplier Settlement */
+  getSupplierSettlements: () => request<{ items: SupplierSettlementItem[] }>('/api/finance/settlements'),
+  createSupplierSettlement: (data: Partial<SupplierSettlementItem>) =>
+    request<SupplierSettlementItem>('/api/finance/settlements', { method: 'POST', body: JSON.stringify(data) }),
+  updateSupplierSettlement: (id: string, data: Partial<SupplierSettlementItem>) =>
+    request<SupplierSettlementItem>(`/api/finance/settlements/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Finance: Invoice */
+  getInvoices: () => request<{ items: InvoiceItem[] }>('/api/finance/invoices'),
+  createInvoice: (data: Partial<InvoiceItem>) =>
+    request<InvoiceItem>('/api/finance/invoices', { method: 'POST', body: JSON.stringify(data) }),
+  updateInvoice: (id: string, data: Partial<InvoiceItem>) =>
+    request<InvoiceItem>(`/api/finance/invoices/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Procurement: Replenishment Plan */
+  getReplenishmentPlans: () => request<{ items: ReplenishmentPlanItem[] }>('/api/procurement/replenishment'),
+  createPurchaseFromPlan: (data: Partial<ReplenishmentPlanItem>) =>
+    request<ReplenishmentPlanItem>('/api/procurement/replenishment', { method: 'POST', body: JSON.stringify(data) }),
+
+  /* Procurement: Purchase Request */
+  getPurchaseRequests: () => request<{ items: PurchaseRequestItem[] }>('/api/procurement/requests'),
+  createPurchaseRequest: (data: Partial<PurchaseRequestItem>) =>
+    request<PurchaseRequestItem>('/api/procurement/requests', { method: 'POST', body: JSON.stringify(data) }),
+  updatePurchaseRequest: (id: string, data: Partial<PurchaseRequestItem>) =>
+    request<PurchaseRequestItem>(`/api/procurement/requests/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Procurement: IQC */
+  getIQCItems: () => request<{ items: IQCItem[] }>('/api/procurement/iqc'),
+  createIQC: (data: Partial<IQCItem>) =>
+    request<IQCItem>('/api/procurement/iqc', { method: 'POST', body: JSON.stringify(data) }),
+  updateIQC: (id: string, data: Partial<IQCItem>) =>
+    request<IQCItem>(`/api/procurement/iqc/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* CRM: Ticket */
+  getTickets: () => request<{ items: TicketItem[] }>('/api/crm/tickets'),
+  createTicket: (data: Partial<TicketItem>) =>
+    request<TicketItem>('/api/crm/tickets', { method: 'POST', body: JSON.stringify(data) }),
+  updateTicket: (id: string, data: Partial<TicketItem>) =>
+    request<TicketItem>(`/api/crm/tickets/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* CRM: Satisfaction */
+  getSatisfactions: () => request<{ items: SatisfactionItem[] }>('/api/crm/satisfactions'),
+  updateSatisfaction: (id: string, data: Partial<SatisfactionItem>) =>
+    request<SatisfactionItem>(`/api/crm/satisfactions/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Marketing: Promotion */
+  getPromotions: () => request<{ items: PromotionItem[] }>('/api/marketing/promotions'),
+  createPromotion: (data: Partial<PromotionItem>) =>
+    request<PromotionItem>('/api/marketing/promotions', { method: 'POST', body: JSON.stringify(data) }),
+  updatePromotion: (id: string, data: Partial<PromotionItem>) =>
+    request<PromotionItem>(`/api/marketing/promotions/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* Marketing: Coupon */
+  getCoupons: () => request<{ items: CouponItem[] }>('/api/marketing/coupons'),
+  createCoupon: (data: Partial<CouponItem>) =>
+    request<CouponItem>('/api/marketing/coupons', { method: 'POST', body: JSON.stringify(data) }),
+  updateCoupon: (id: string, data: Partial<CouponItem>) =>
+    request<CouponItem>(`/api/marketing/coupons/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+  deleteCoupon: (id: string) =>
+    request<{ success: boolean }>(`/api/marketing/coupons/${id}`, { method: 'DELETE' }),
+
+  /* Marketing: Price Watch */
+  getPriceWatches: () => request<{ items: PriceWatchItem[] }>('/api/marketing/price-watches'),
+  updatePriceWatch: (id: string, data: Partial<PriceWatchItem>) =>
+    request<PriceWatchItem>(`/api/marketing/price-watches/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* System: Notification */
+  getNotifications: () => request<{ items: NotificationItem[] }>('/api/system/notifications'),
+  markNotificationRead: (id: string) =>
+    request<NotificationItem>(`/api/system/notifications/${id}/read`, { method: 'PUT' }),
+
+  /* System: Message Template */
+  getMessageTemplates: () => request<{ items: MessageTemplateItem[] }>('/api/system/message-templates'),
+  createMessageTemplate: (data: Partial<MessageTemplateItem>) =>
+    request<MessageTemplateItem>('/api/system/message-templates', { method: 'POST', body: JSON.stringify(data) }),
+  updateMessageTemplate: (id: string, data: Partial<MessageTemplateItem>) =>
+    request<MessageTemplateItem>(`/api/system/message-templates/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* System: Approval Flow */
+  getApprovalFlows: () => request<{ items: ApprovalFlowItem[] }>('/api/system/approval-flows'),
+  createApprovalFlow: (data: Partial<ApprovalFlowItem>) =>
+    request<ApprovalFlowItem>('/api/system/approval-flows', { method: 'POST', body: JSON.stringify(data) }),
+  updateApprovalFlow: (id: string, data: Partial<ApprovalFlowItem>) =>
+    request<ApprovalFlowItem>(`/api/system/approval-flows/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* System: Employee */
+  getEmployees: () => request<{ items: EmployeeItem[] }>('/api/system/employees'),
+  createEmployee: (data: Partial<EmployeeItem>) =>
+    request<EmployeeItem>('/api/system/employees', { method: 'POST', body: JSON.stringify(data) }),
+  updateEmployee: (id: string, data: Partial<EmployeeItem>) =>
+    request<EmployeeItem>(`/api/system/employees/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+
+  /* System: Department */
+  getDepartments: () => request<{ items: DepartmentItem[] }>('/api/system/departments'),
+  createDepartment: (data: Partial<DepartmentItem>) =>
+    request<DepartmentItem>('/api/system/departments', { method: 'POST', body: JSON.stringify(data) }),
+  updateDepartment: (id: string, data: Partial<DepartmentItem>) =>
+    request<DepartmentItem>(`/api/system/departments/${id}`, { method: 'PUT', body: JSON.stringify(data) }),
+  deleteDepartment: (id: string) =>
+    request<{ success: boolean }>(`/api/system/departments/${id}`, { method: 'DELETE' }),
+
+  /* Report: Inventory Turnover */
+  getInventoryTurnovers: () => request<{ items: InventoryTurnoverItem[] }>('/api/report/inventory-turnovers'),
+
+  /* Supplier: Performance */
+  getSupplierPerformances: () => request<{ items: SupplierPerformanceItem[] }>('/api/supplier/performances'),
+  createSupplierPerformance: (data: Partial<SupplierPerformanceItem>) =>
+    request<SupplierPerformanceItem>('/api/supplier/performances', { method: 'POST', body: JSON.stringify(data) })
 };

+ 300 - 0
src/types/page.ts

@@ -402,3 +402,303 @@ export interface UserProfile {
   roleLabel: string;
   workspace: string;
 }
+
+/* ───── Warehouse ───── */
+export interface WarehouseItem {
+  id: string;
+  name: string;
+  type: string;
+  address: string;
+  contact: string;
+  phone: string;
+  status: string;
+  manager: string;
+  remark: string;
+}
+
+export interface ReturnPackageItem {
+  id: string;
+  returnNo: string;
+  originalTrackingNo: string;
+  reason: string;
+  status: string;
+  warehouse: string;
+  createTime: string;
+  handleResult: string;
+}
+
+/* ───── Logistics ───── */
+export interface LogisticsProviderItem {
+  id: string;
+  name: string;
+  channels: string[];
+  billingType: string;
+  status: string;
+  contact: string;
+  phone: string;
+  trackingUrl: string;
+}
+
+export interface ShippingTemplateItem {
+  id: string;
+  name: string;
+  carrier: string;
+  billingType: string;
+  firstWeight: number;
+  firstCost: number;
+  continueWeight: number;
+  continueCost: number;
+  remoteSurcharge: number;
+  status: string;
+}
+
+/* ───── Finance ───── */
+export interface PaymentItem {
+  id: string;
+  paymentNo: string;
+  channelOrderNo: string;
+  channel: string;
+  shopName: string;
+  currency: string;
+  amount: string;
+  payMethod: string;
+  payTime: string;
+  reconcileStatus: string;
+  transactionNo: string;
+  fee: string;
+  remark: string;
+}
+
+export interface RefundItem {
+  id: string;
+  refundNo: string;
+  orderNo: string;
+  channelOrderNo: string;
+  channel: string;
+  refundAmount: string;
+  refundMethod: string;
+  refundTime: string;
+  refundStatus: string;
+  reason: string;
+}
+
+export interface SupplierSettlementItem {
+  id: string;
+  settlementNo: string;
+  supplier: string;
+  period: string;
+  payableAmount: string;
+  paidAmount: string;
+  status: string;
+  createTime: string;
+}
+
+export interface InvoiceItem {
+  id: string;
+  invoiceNo: string;
+  invoiceType: string;
+  buyerName: string;
+  sellerName: string;
+  amount: string;
+  taxRate: string;
+  taxAmount: string;
+  invoiceDate: string;
+  status: string;
+  buyerTaxNo: string;
+  remark: string;
+}
+
+/* ───── Procurement ───── */
+export interface ReplenishmentPlanItem {
+  id: string;
+  sku: string;
+  productTitle: string;
+  avgDailySales: number;
+  safeStock: number;
+  currentStock: number;
+  onTheWay: number;
+  suggestedQty: number;
+  suggestedSupplier: string;
+  status: string;
+}
+
+export interface PurchaseRequestItem {
+  id: string;
+  requestNo: string;
+  applicant: string;
+  sku: string;
+  qty: number;
+  reason: string;
+  urgency: string;
+  status: string;
+  createTime: string;
+}
+
+export interface IQCItem {
+  id: string;
+  iqcNo: string;
+  supplier: string;
+  arrivalNo: string;
+  standard: string;
+  qualifiedQty: number;
+  unqualifiedQty: number;
+  result: string;
+  inspector: string;
+  inspectTime: string;
+}
+
+/* ───── CRM ───── */
+export interface TicketItem {
+  id: string;
+  ticketNo: string;
+  title: string;
+  type: string;
+  priority: string;
+  status: string;
+  creator: string;
+  assignee: string;
+  createTime: string;
+  updateTime: string;
+}
+
+export interface SatisfactionItem {
+  id: string;
+  orderNo: string;
+  source: string;
+  buyer: string;
+  productTitle: string;
+  rating: number;
+  content: string;
+  reply: string;
+  handleStatus: string;
+  csName: string;
+  createTime: string;
+}
+
+/* ───── Marketing ───── */
+export interface PromotionItem {
+  id: string;
+  name: string;
+  type: string;
+  channel: string;
+  shopName: string;
+  startTime: string;
+  endTime: string;
+  status: string;
+  discount: string;
+  minAmount: string;
+}
+
+export interface CouponItem {
+  id: string;
+  name: string;
+  couponType: string;
+  value: string;
+  minAmount: number;
+  totalCount: number;
+  usedCount: number;
+  usedRate: number;
+  validStart: string;
+  validEnd: string;
+  status: string;
+  channels: string[];
+  remark: string;
+}
+
+export interface PriceWatchItem {
+  id: string;
+  sku: string;
+  productTitle: string;
+  channel: string;
+  shopName: string;
+  localPrice: string;
+  competitorPrice: string;
+  priceDiff: number;
+  competitorName: string;
+  competitorUrl: string;
+  lastUpdate: string;
+  alertStatus: string;
+}
+
+/* ───── System ───── */
+export interface NotificationItem {
+  id: string;
+  type: string;
+  title: string;
+  content: string;
+  isRead: boolean;
+  createTime: string;
+}
+
+export interface MessageTemplateItem {
+  id: string;
+  name: string;
+  type: string;
+  channel: string;
+  content: string;
+  variables: string[];
+  status: string;
+}
+
+export interface ApprovalFlowItem {
+  id: string;
+  name: string;
+  type: string;
+  nodeCount: number;
+  status: string;
+  createTime: string;
+}
+
+export interface EmployeeItem {
+  id: string;
+  employeeNo: string;
+  name: string;
+  avatar: string;
+  department: string;
+  position: string;
+  role: string;
+  phone: string;
+  email: string;
+  status: string;
+  hireDate: string;
+  supervisor: string;
+  remark: string;
+}
+
+export interface DepartmentItem {
+  id: string;
+  name: string;
+  parentId?: string;
+  leaderId?: string;
+  leaderName?: string;
+  description: string;
+  status: string;
+  employeeCount?: number;
+}
+
+/* ───── Report ───── */
+export interface InventoryTurnoverItem {
+  id: string;
+  sku: string;
+  productTitle: string;
+  warehouse: string;
+  turnoverDays: number;
+  salesQty: number;
+  avgStock: number;
+  alertStatus: string;
+}
+
+export interface SupplierPerformanceItem {
+  id: string;
+  supplierName: string;
+  contact: string;
+  phone: string;
+  deliveryRate: number;
+  qualityRate: number;
+  responseTime: number;
+  returnRate: number;
+  priceScore: number;
+  overallScore: number;
+  ratingLevel: string;
+  status: string;
+}