service.ts 10.1 KB
import type { PromisePageResp, PageBaseParams } from '@feewee/h5app-common';
import { host, http } from '@feewee/h5app-common';

import type { DimensionEnum, MatchStatusEnum, QueryItemTypeEnum, QueryTypeEnum, SubTypeEnum, TypeEnum } from './entity';

export interface DetailResult {
  // 申请id
  applyId: number;
  // 文件id
  fid: string;
  // 文件名称
  fName: string;
  // 文件大小,单位b
  fSize: number;
  // 品牌名称
  brandName: string;
  // 往来单位名称
  contactUnits: string;
  // 申报商家 id
  applyDealerId: number;
  // 申报商家名称
  applyDealerName: string;
  // 匹配结果的最早提报时间
  beginTime: number;
  // 匹配结果的最晚提报时间
  endTime: number;
  // 未复核单数
  notReviewedCount: number;
  // 未复核金额
  notReviewedAmount: number;
  // 超60天未复核单数
  overtimeNotReviewedCount: number;
  // 厂家审核金额
  amount: number;
}

export interface ClaimBeforeData {
  // 类型
  type: DimensionEnum;
  // 类型id
  typeId: number;
  // 类型名称
  typeName: string;
  // 系统单数
  systemCount: number;
  // 系统金额
  systemAmount: number;
  // 系统有,导入无单数
  notExistsCount: number;
  // 系统有,导入无金额
  notExistsAmount: number;
  // 本次导入 合计单数
  total: number;
  // 本次导入 合计金额
  totalAmount: number;
  // 本次导入 匹配一致单数
  consistentCount: number;
  // 本次导入 匹配一致金额
  consistentAmount: number;
  // 本次导入 匹配不一致单数
  nonConsistentCount: number;
  // 本次导入 匹配不一致金额
  nonConsistentAmount: number;
  // 本次导入,系统无,导入有单数
  importNonSystemCount: number;
  // 本次导入,系统无,导入有金额
  importNonSystemAmount: number;
}

export interface ClaimAfterData {
  // 类型id
  typeId: number;
  // 类型名称
  typeName: string;
  // 差异单数
  nonConsistentCount: number;
  // 差异金额
  nonConsistentAmount: number;
  // 系统金额
  systemAmount: number;
  // 厂家金额
  factoryAmount: number;
}

export interface PunishData {
  // 人员id
  userId: number;
  // 人员名称
  userName: number;
  // 提报单数
  submitCount: number;
  // 差异单数
  nonConsistentCount: number;
  // 差异金额
  nonConsistentAmount: number;
  // 差异金额占比
  nonConsistentRate: number;
  // 处罚金额
  punishAmount: number;
  // 处罚绩效得分率
  punishRate: number;
}

export interface FactoryPunishOrRewardData {
  // 合计金额
  totalAmount: number;
  //
  items: FactoryPunishOrRewardItem[];
}

export interface FactoryPunishOrRewardItem {
  // 厂家奖励/处罚id
  id: number;
  // 文件名称
  fName: string;
  // 文件id
  fid: string;
  // 兑现方式
  cashType: number;
  // 处罚类型
  projectTypeName: string;
  // 金额
  amount: number;
  // 是否门店分摊
  apportion: boolean;
  // 是否门店
  shop: boolean;
  // 是否人员
  user: boolean;
}

export interface FactoryPunishOrRewardTypeDetail {
  // 对象id
  targetId: number;
  // 对象名称
  targetName: string;
  // 金额
  amount: number;
  // 比例
  proportion: number;
  // 绩效得分率
  scoringRate: number;
  // 岗位名称
  postName: string;
  // 在职门店名称
  shopName: string;
}

export interface ReviewListParams extends PageBaseParams {
  applyId: number;
  type: DimensionEnum | QueryTypeEnum.USER_PUNISH;
  typeId: number;
  queryType: QueryTypeEnum;
  queryItemType: QueryItemTypeEnum;
  keywords?: string;
}

export interface ReviewListResult {
  // 导入数据id
  importDataId: number;
  // 索赔单号
  claimNo: string;
  // 索赔类型
  claimType: number;
  // 索赔类型名称
  claimTypeName: string;
  // 复核附件
  fid: string;
  // 厂家兑现金额
  amount: number;
  // 系统生成-总金额
  totalFee: number;
  // 系统生成-工时费
  systemManHoursFee: number;
  // 系统生成-材料费
  systemPartFee: number;
  // 系统生成与厂家差异金额
  differenceAmount: number;
  // 提报-总金额
  submitAmount: number;
  // 提报-工时费
  submitManHoursFee: number;
  // 提报-材料费
  submitPartFee: number;
  // 提报-与厂家差异金额
  differenceSubmitAmount: number;
  // 上传其他信息:json格式
  importData: string;
  // 提报人
  claimer: string;
  // 提报商家名称
  submitDealerName: string;
  // 提报时间
  commitTime: number;
  // VIN
  vin: string;
  // 车牌号
  plateNo: string;
  // 车辆
  carName: string;
  // 差异原因
  differenceReasonId: number;
  differenceReason: string;
  // 是否已复核 1: 未填写差异原因,2: 已填写差异原因
  reviewStatus: number;
}

export interface DetailListParams {
  importDataNo: string; // 导入明细编号,同一文件一致
  claimNo?: string; // 索赔单号
  distributorName?: string; // 经销商
  vin?: string;
  claimType?: number; // 索赔类型
  matchStatus?: MatchStatusEnum; // 匹配状态,1:匹配一致,2:无工单记录,3:匹配不一致
  current?: number;
  pageSize?: number;
}

export interface DetailListResult {
  id: number; // 复核 id
  createTime: number; // 创建时间
  updateTime: number; // 更新时间
  createBy: string; // 创建人
  updateBy: string; // 更新人
  groupId: number; // 集团id
  importDataNo: string; // 导入明细编号,同一文件一致
  reviewAmount: number; // 复核后金额
  differenceReason: string; // 差异原因, 1.工时费,材料费差异:2.厂家拒绝:3.漏报:4.其他4s店支付:5.家直接打款到公司账户;6.同一工单分多次提报;7.多个工单一次提报(See: 索赔数据不一致原因)
  differenceReasonName: string; // 差异原因名称
  distributorName: string; // 经销商
  claimNo: string; // 索赔单号
  vin: string; // 车架号
  claimType: string; // 索赔类型
  manHoursFee: number; // 工时费
  partFee: number; // 配件费
  rescueFee: number; // 救援费
  totalFee: number; // 总结算费用
  remark: string; // 复核备注
  fids: string; // 附件ids
  matchStatus: number; // 匹配状态,1: 匹配一致,2: 匹配不一致,3: 无工单记录(See: 索赔匹配状
}

export interface ReviewDetailResult {
  claimOrderReviewData: ReviewData; // 复核数据
  claimOrders: ClaimOrder[]; // 索赔单信息
  punishes: ReviewPunish[]; // 处罚信息
}

export interface ReviewData {
  id: number; // 主键
  createTime: number; // 创建时间
  updateTime: number; // 更新时间
  createBy: string; // 创建人
  updateBy: string; // 更新人
  groupId: number; // 集团id
  importDataNo: string; // 导入明细编号,同一文件一致
  reviewAmount: number; // 复核后金额
  differenceReason: string; // 差异原因, 1.工时费,材料费差异;2.厂家拒绝;3.漏报;4.其他4s店支付;5.厂家直接打款到公司账户;6.同一工单分多次提报;7.多个工单一次提报(See: 索赔数据不一致原因)
  differenceReasonName: string; // 差异原因名称
  distributorName: string; // 经销商
  claimNo: string; // 索赔单号
  vin: string; // 车架号
  claimType: number; // 索赔类型
  manHoursFee: number; // 工时费
  partFee: number; // 配件费
  rescueFee: number; // 救援费
  totalFee: number; // 总结算费用
  remark: string; // 复核备注
  fids: string; // 附件ids
  matchStatus: number; // 匹配状态,1: 匹配一致,2: 匹配不一致,3: 无工单记录(See: 索赔匹配状态)
}

export interface ClaimOrder {
  type: number; // 三包类型(1:首保 2: 三包件5: 市场行动)
  claimUsername: number; // 索赔确认/提报员工姓名
  claimSubmitAmount: number; // 提报金额
  claimOrderId: number; // 索赔单id
  orderNo: number; // 工单号
  ownerName: number; // 车主姓名
  carName: number; // 车辆名称
  vin: number; // 车辆vin码
  plateNo: number; // 车牌号
  specCode: number; // 车型代码
  receiverName: number; // 接车人姓名
  judgeNames: number; // 故障判断员
}

export interface ReviewPunish {
  id: number; // 复核id
  createTime: number; // 创建时间
  updateTime: number; // 更新时间
  dataId: number; // 索赔复核导入数据id
  punishUserId: number; // 处罚人员id
  punishUsername: string; // 处罚人员
  punishAmount: number; // 处罚金额
  achievements: number; // 处罚绩效
  punishId: number; // 绩效系统id
  shopId: number;
  shopName: string;
}

// 详情
export function detailApi(applyId: number): Promise<DetailResult> {
  return http.get(`${host.cas}/erp/claim/review/apply/detail`, { applyId });
}

// 复核前数据
export function dataBeforeReviewApi(params: { applyId: number; type: DimensionEnum }): Promise<ClaimBeforeData[]> {
  return http.get(`${host.cas}/erp/claim/review/apply/before/review`, params);
}

// 复核后数据
export function dataAfterReviewApi(params: { applyId: number; type: DimensionEnum }): Promise<ClaimAfterData[]> {
  return http.get(`${host.cas}/erp/claim/review/apply/after/review`, params);
}

// 处罚信息
export function punishListApi(applyId: number): Promise<PunishData[]> {
  return http.get(`${host.cas}/erp/claim/review/apply/punish/list`, { applyId });
}

// 厂家处罚/奖励信息 1:奖励 2:处罚
export function factoryPunishOrRewardListApi(params: { applyId: number; type: TypeEnum }): Promise<FactoryPunishOrRewardData> {
  return http.get(`${host.cas}/erp/claim/review/apply/factory/info`, params);
}

// 厂家处罚/奖励类型详情 1:门店分摊,2:门店,3:人员
export function factoryPunishOrRewardTypeDetailApi(params: { id: number; type: SubTypeEnum }): Promise<FactoryPunishOrRewardTypeDetail[]> {
  return http.get(`${host.cas}/erp/claim/review/apply/factory/info/detail`, params);
}

// 复核列表
export function reviewListApi(params: ReviewListParams): PromisePageResp<ReviewListResult> {
  return http.get(`${host.cas}/erp/claim/review/apply/import/data/page`, params);
}

// 详情明细
export function detailListApi(params: DetailListParams): PromisePageResp<DetailListResult> {
  return http.get(`${host.cas}/erp/claim/order/review/data/list`, params);
}

// 复核详情
export function reviewDetailApi(id: number): Promise<ReviewDetailResult> {
  return http.get(`${host.cas}/erp/claim/order/review/data/${id}`);
}