All files ownershipTransfer.ts

100% Statements 21/21
87.5% Branches 7/8
100% Functions 5/5
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101                                                                                    1x                     4x   3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x                 2x               1x 1x       1x             3x            
import { http } from "@/utils/http";
 
// 货权转移类型定义
export type OwnershipTransfer = {
  id: string;
  transferNumber: string; // 转移函编号
  transferDate: string; // 货转日期
  commodity: string; // 商品
  warehouse: string; // 库方
  transferor: string; // 货权出让方
  transferee: string; // 货权接收方
  status: "draft" | "effective" | "void"; // 状态
  remark: string; // 备注
  blItems: Array<{
    // 提单明细(动态列表)
    id?: number;
    transferId?: number;
    blNumber: string; // 提单号
    quantity: number; // 数量
  }>;
  fileList: Array<{
    name: string;
    url: string;
  }>;
  createdAt: string;
  updatedAt: string;
};
 
// API响应基础类型
export type BaseResponse<T = any> = {
  success: boolean;
  message: string;
  data?: T;
};
 
// 货权转移列表响应类型
export type OwnershipListResponse = BaseResponse<{
  items: OwnershipTransfer[];
  total: number;
}>;
 
/** 创建货权转移 */
export const createOwnershipTransfer = (data: {
  transferDate: string;
  commodity: string;
  blItems: Array<{ blNumber: string; quantity: number }>;
  warehouse: string;
  transferor: string;
  transferee: string;
  remarks?: string;
  files?: File[];
}) => {
  // 过滤空提单号
  const validItems = data.blItems.filter(item => item.blNumber || item.quantity);
 
  if (data.files?.length) {
    const formData = new FormData();
    formData.append("transferDate", data.transferDate);
    formData.append("commodity", data.commodity);
    formData.append("blItems", JSON.stringify(validItems));
    formData.append("warehouse", data.warehouse);
    formData.append("transferor", data.transferor);
    formData.append("transferee", data.transferee);
    Eif (data.remarks) formData.append("remark", data.remarks);
    data.files.forEach(file => formData.append("files", file));
    return http.request<BaseResponse<OwnershipTransfer>>(
      "post",
      "/api/ownership-transfer/create-with-files",
      {
        data: formData,
        headers: { "Content-Type": "multipart/form-data" }
      }
    );
  }
  return http.request<BaseResponse<OwnershipTransfer>>(
    "post",
    "/api/ownership-transfer/create",
    { data: { ...data, blItems: validItems, remark: data.remarks ?? "" } }
  );
};
 
/** 删除货权转移 */
export const deleteOwnershipTransfer = (id: string) => {
  return http.request<BaseResponse>("delete", `/api/ownership-transfer/${id}`);
};
 
/** 获取货权转移列表 */
export const getOwnershipList = (params?: {
  transferNumber?: string;
  blNumber?: string;
  status?: string;
  page?: number;
  pageSize?: number;
}) => {
  return http.request<OwnershipListResponse>(
    "get",
    "/api/ownership-transfer/list",
    { params }
  );
};