import request from '@/utils/request'

export function getPage(params) {
  return request({
    url: '/api/system/department/page-api',
    // url: 'http://localhost:8080/leaveschool/api/v1/base/department',
    method: 'get',
    params
  })
}
export function getDeptList(params) {
  return request({
    url: '/api/system/department/dept-list',
    method: 'get',
    params
  })
}
export function getSectionList(params) {
  return request({
    url: '/api/system/department/section-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
  })
}
