dictItem.ts 2.71 KB
import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: 'http://localhost:8083/api/system/dict/item',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
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) => {
    console.error('API请求错误:', error)
    if (error.response?.status === 401) {
      localStorage.removeItem('token')
      localStorage.removeItem('userInfo')
      window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

// 字典项接口类型定义
export interface DictItem {
  dictItemId: number
  dictTypeId: number
  dictType: string
  dictLabel: string
  dictValue: string
  sort: number
  remark: string
  createBy: string
  createTime: string
  updateBy: string
  updateTime: string
}

export interface DictItemSearchParams {
  pageNum: number
  pageSize: number
  dictTypeId?: number
  dictLabel?: string
  dictValue?: string
}

export interface DictItemAddReq {
  dictTypeId: number
  dictLabel: string
  dictValue: string
  sort?: number
  remark?: string
}

export interface DictItemUpdateReq {
  dictItemId: number
  dictTypeId: number
  dictLabel: string
  dictValue: string
  sort?: number
  remark?: string
}

export interface ApiResponse<T> {
  code: number
  message: string
  data: T
}

export interface PageData<T> {
  records: T[]
  total: number
  current: number
  size: number
  pages: number
}

// API调用方法
export const dictItemApi = {
  // 获取字典项列表
  getDictItemList: (params: DictItemSearchParams): Promise<ApiResponse<PageData<DictItem>>> => {
    return api.get('/list', { params })
  },

  // 根据字典类型获取字典项列表
  getDictItemsByType: (dictType: string): Promise<ApiResponse<DictItem[]>> => {
    return api.get(`/type/${dictType}`)
  },

  // 获取字典项详情
  getDictItemById: (dictItemId: number): Promise<ApiResponse<DictItem>> => {
    return api.get(`/${dictItemId}`)
  },

  // 新增字典项
  createDictItem: (dictItemData: DictItemAddReq): Promise<ApiResponse<any>> => {
    return api.post('/', dictItemData)
  },

  // 修改字典项
  updateDictItem: (dictItemData: DictItemUpdateReq): Promise<ApiResponse<any>> => {
    return api.put('/', dictItemData)
  },

  // 删除字典项
  deleteDictItem: (dictItemIds: number[]): Promise<ApiResponse<any>> => {
    const ids = dictItemIds.join(',')
    return api.delete(`/${ids}`)
  }
}

export default dictItemApi