dealer.ts 3.96 KB
import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: 'http://localhost:8083/api',
  timeout: 10000
})

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response.data
  },
  (error) => {
    if (error.response?.status === 401) {
      localStorage.removeItem('token')
      localStorage.removeItem('userInfo')
      window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

// 经销商信息接口
export interface DealerInfo {
  dealerId: number
  dealerCode: string
  dealerName: string
  creditCode: string
  dealerLevel: number
  region: string
  contactPerson: string
  contactPhone: string
  cooperateStartDate: string
  cooperateStatus: number
  businessLicenseUrl: string
  cooperationAgreementUrl: string
  qualificationAuditStatus: number
  auditOpinion: string
  createTime: string
  updateTime: string
}

// 经销商查询请求参数
export interface DealerQueryReq {
  dealerCode?: string
  dealerName?: string
  creditCode?: string
  dealerLevel?: number
  region?: string
  contactPerson?: string
  contactPhone?: string
  cooperateStatus?: number
  qualificationAuditStatus?: number
  pageNum: number
  pageSize: number
}

// 经销商新增请求参数
export interface DealerAddReq {
  dealerCode: string
  dealerName: string
  creditCode: string
  dealerLevel: number
  region: string
  contactPerson?: string
  contactPhone?: string
  cooperateStartDate: string
  cooperateStatus?: number
  businessLicenseUrl?: string
  cooperationAgreementUrl?: string
  qualificationAuditStatus?: number
  auditOpinion?: string
}

// 经销商修改请求参数
export interface DealerUpdateReq {
  dealerId: number
  dealerCode: string
  dealerName: string
  creditCode: string
  dealerLevel: number
  region: string
  contactPerson?: string
  contactPhone?: string
  cooperateStartDate: string
  cooperateStatus?: number
  businessLicenseUrl?: string
  cooperationAgreementUrl?: string
  qualificationAuditStatus?: number
  auditOpinion?: string
}

// 分页数据接口
export interface PageData<T> {
  records: T[]
  total: number
  pageNum: number
  pageSize: number
}

// API响应接口
export interface ApiResponse<T = any> {
  code: number
  message: string
  data: T
}

// 经销商管理API
export const dealerApi = {
  // 分页查询经销商列表
  getDealerList: (params: DealerQueryReq) => {
    return api.get<ApiResponse<PageData<DealerInfo>>>('/dealer/list', { params })
  },

  // 获取经销商详情
  getDealerDetail: (dealerId: number) => {
    return api.get<ApiResponse<DealerInfo>>(`/dealer/${dealerId}`)
  },

  // 新增经销商
  addDealer: (data: DealerAddReq) => {
    return api.post<ApiResponse>('/dealer', data)
  },

  // 修改经销商
  updateDealer: (data: DealerUpdateReq) => {
    return api.post<ApiResponse>('/dealer/update', data)
  },

  // 删除经销商
  deleteDealer: (dealerId: number) => {
    return api.delete<ApiResponse>(`/dealer/${dealerId}`)
  },

  // 批量删除经销商
  batchDeleteDealer: (dealerIds: number[]) => {
    return api.delete<ApiResponse>('/dealer/batch', { data: dealerIds })
  },

  // 修改经销商合作状态
  updateCooperateStatus: (dealerId: number, cooperateStatus: number) => {
    return api.post<ApiResponse>(`/dealer/${dealerId}/cooperateStatus/${cooperateStatus}`)
  },

  // 修改经销商资质审核状态
  updateAuditStatus: (dealerId: number, qualificationAuditStatus: number, auditOpinion?: string) => {
    return api.post<ApiResponse>(`/dealer/${dealerId}/auditStatus`, null, {
      params: { qualificationAuditStatus, auditOpinion }
    })
  },

  // 获取所有经销商(用于下拉选择)
  getAllDealers: () => {
    return api.get<ApiResponse<DealerInfo[]>>('/dealer/all')
  }
}