api.ts 6.04 KB
import { http } from "@/typing/http";
import request from "@/utils/request";
import { FVM_HOST, ORDER3_HOST } from "@/utils/host";

type PromiseResp<T> = http.PromiseResp<T>;

export interface GetSaleTaskApiReq {
  taskDate?: number;
  shopName?: string;
}

export interface GetSaleTaskApiRes {
  id: number;
  totalTaskCount: number;
  shopTaskList: ShopTaskItem[];
  year: number;
  month: number;
  canModified: boolean; // 是否可以编辑
  revoke: boolean; // 是否可以撤销
  newEnergyTaskCount: number;
  fuelVehicleTaskCount: number;
  clueDealTaskCount: number;
  approvalNumber: string;
  tackCarTaskCount: number;
  testDriveTaskCount: number;
  seriesTaskCount: number;
  vehicleGrossProfitTask: number;
  totalGrossProfitTask: number;
}

export interface SeriesTaskItem {
  brandId: number;
  brandName: string;
  seriesId: number;
  seriesName: string;
  newEnergy: boolean;
  taskCount: number;
  id?: number;
}

export interface StaffTaskItem {
  id?: number;
  staffId: number;
  staffName: string;
  taskCount: number;
  clueDealTaskCount: number;
  regularMonth: number;
  addedValueTask: number;
  seriesTaskList: SeriesTaskItem[];
  newEnergyTaskCount: number;
  fuelVehicleTaskCount: number;
  tackCarTaskCount: number;
  testDriveTaskCount: number;
  seriesTaskCount: number;
  vehicleGrossProfitTask: number;
}

export interface ShopTaskItem {
  id?: number;
  shopId: number;
  shopName: string;
  taskCount: number;
  clueDealTaskCount: number;
  clueDealTaskRate: number;
  staffTaskList: StaffTaskItem[];
  addedValueTask: number;
  seriesTaskList: SeriesTaskItem[];
  newEnergyTaskCount: number;
  fuelVehicleTaskCount: number;
  tackCarTaskCount: number;
  testDriveTaskCount: number;
  seriesTaskCount: number;
  vehicleGrossProfitTask: number;
  taskId?: number;
  orderTaskApplyId?: number;
  orderShopTaskId?: number;
}

/** 月度零售任务列表 */
export function getSaleTaskApi(
  params: GetSaleTaskApiReq
): PromiseResp<GetSaleTaskApiRes> {
  return request.get(`${ORDER3_HOST}/erp/sales/task/detail`, { params });
}

export interface GetShopSaleTaskReq {
  shopId: number;
  taskDate: number;
}

/** 门店零售任务详情 */
export function getShopSaleTask(
  params: GetShopSaleTaskReq
): PromiseResp<ShopTaskItem> {
  return request.get(`${ORDER3_HOST}/erp/sales/task/detail/one`, { params });
}

/** 保存门店零售任务 */
export function saveShopSaleTask(params: ShopTaskItem): PromiseResp<boolean> {
  return request.post(`${ORDER3_HOST}/erp/sales/task/manual/assign`, params);
}

/** 撤销审批零售任务 */
export function cancelSaleTask(params: { id: number }): PromiseResp<boolean> {
  return request.post(`${ORDER3_HOST}/erp/sales/task/cancel/approve`, params, {
    contentType: "form-urlencoded",
  });
}

/** 提交审批零售任务 */
export function submitSaleTask(params: { id: number }): PromiseResp<boolean> {
  return request.post(`${ORDER3_HOST}/erp/sales/task/submit`, params);
}

export interface AutoAssignItem {
  shopId: number;
  taskCount: number;
  newEnergyTaskCount: number;
  fuelVehicleTaskCount: number;
  tackCarTaskCount: number;
}

export interface AutoAssignSaleTaskReq {
  id: number;
  assignTask: boolean;
  shopTaskList: AutoAssignItem[];
}

/** 自动分配零售任务 */
export function autoAssignSaleTask(
  params: AutoAssignSaleTaskReq
): PromiseResp<boolean> {
  return request.post(`${ORDER3_HOST}/erp/sales/task/auto/assign`, params);
}

interface BatchSetSaleTaskItem {
  shopIdList: number[];
  taskAims: number;
}

export interface BatchSetSaleTaskReq {
  grossProfitTaskList?: BatchSetSaleTaskItem[];
  tackCarTaskList?: BatchSetSaleTaskItem[];
  testDriveTaskList?: BatchSetSaleTaskItem[];
  assignTask: boolean;
  orderTaskApplyId: number;
}

/** 批量设置零售任务 */
export function batchSetSaleTask(
  params: BatchSetSaleTaskReq
): PromiseResp<boolean> {
  return request.post(`${ORDER3_HOST}/erp/sales/task/batch/shop/set`, params);
}

/** 自动分配单个门店的零售任务 */
export function autoAssignOneShop(
  params: ShopTaskItem
): PromiseResp<boolean> {
  return request.post(`${ORDER3_HOST}/erp/sales/task/auto/assign/shop`, params);
}

export interface BrandItem {
  id: number;
  initial: string;
  name: string;
  thumbnail: string;
}

/** 门店下面品牌列表 */
export function getBrands(params: {
  shopId: number;
}): PromiseResp<BrandItem[]> {
  return request.get(`${FVM_HOST}/erp/putaway/vehicle/support/brand`, {
    params,
  });
}

export interface SeriesItem {
  id: number;
  name: string;
  newEnergy: boolean;
  thumbnail: string;
}

/** 门店某品牌下车系列表 */
export function getSeries(params: {
  shopId: number;
  brandId: number;
}): PromiseResp<SeriesItem[]> {
  return request.get(`${FVM_HOST}/erp/putaway/vehicle/support/series`, {
    params,
  });
}

export interface PreviewTaskReq {
  shopId?: number;
  firstManageId?: number;
  secondManageId?: number;
  thirdManageId?: number;
  taskId?: number;
  orderTaskApprovalType?: number;
  id?: number;
  token?: string;
  keywords?: string;
}

export interface TaskListItem {
  id: number;
  dataId: number;
  dataName: string;
  beforeTaskCount: number;
  afterTaskCount: number;
  beforeClueDealTaskCount: number;
  afterClueDealTaskCount: number;
  beforeNewEnergyTaskCount: number;
  afterNewEnergyTaskCount: number;
  beforeFuelVehicleTaskCount: number;
  afterFuelVehicleTaskCount: number;
  beforeTackCarTaskCount: number;
  afterTackCarTaskCount: number;
  beforeTestDriveTaskCount: number;
  afterTestDriveTaskCount: number;
  taskCountModified: boolean;
  clueDealTaskCountModified: boolean;
  newEnergyTaskCountModified: boolean;
  fuelVehicleTaskCountModified: boolean;
  tackCarTaskCountModified: boolean;
  testDriveTaskCountModified: boolean;
  seriesTaskCount: number;
  newEnergy: boolean;
}

export interface PreviewTaskRes {
  year: number;
  month: number;
  remark: string;
  attachmentList: string[];
  taskList: TaskListItem[];
}

/** 预览任务 */
export function previewTask(
  params: PreviewTaskReq
): PromiseResp<PreviewTaskRes> {
  return request.get(`${ORDER3_HOST}/erp/sales/task/approve/info`, {
    params,
  });
}