import request from '@/utils/request'

export function getList(params) {
  return request({
    url: '/api/system/schoolyear/list-api',
    method: 'get',
    params
  })
}
export function getItem(params) {
  return request({
    url: '/api/system/schoolyear/get-item',
    method: 'get',
    params
  })
}

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

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