import request from '@/utils/request'

export function getList(params) {
  return request({
    url: '/api/system/department/list-api',
    // url: 'http://localhost:8080/leaveschool/api/v1/base/department',
    method: 'get',
    params
  })
}
export function getAllList(params) {
  return request({
    url: '/api/system/department/all-list',
    method: 'get',
    params
  })
}
export function getItem(params) {
  return request({
    url: '/api/system/department/get-item',
    method: 'get',
    params
  })
}

export function createDepartment(data) {
  return request({
    url: '/api/system/department/create-department',
    method: 'post',
    data
  })
}

export function deleteDepartment(data) {
  return request({
    url: '/api/system/department/delete-department',
    method: 'delete',
    data
  })
}
