import request from '@/utils/request'

export function getList(params) {
  return request({
    url: '/api/system/class/list-api',
    method: 'get',
    params
  })
}
export function getAllList(params) {
  return request({
    url: '/api/system/class/all-list',
    method: 'get',
    params
  })
}
export function getBjListByZy(params) {
  return request({
    url: '/api/system/major/list-byzy-api',
    method: 'get',
    params
  })
}
export function getItem(params) {
  return request({
    url: '/api/system/class/get-item',
    method: 'get',
    params
  })
}

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

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