import request from '@/utils/request'

export function getList(params) {
  return request({
    url: '/api/procedures/node/list-api',
    method: 'get',
    params
  })
}
export function getAllList(params) {
  return request({
    url: '/api/procedures/node/all-list',
    method: 'get',
    params
  })
}
export function getItem(params) {
  return request({
    url: '/api/procedures/node/get-item',
    method: 'get',
    params
  })
}

export function createNode(data) {
  return request({
    url: '/api/procedures/node/create-node',
    method: 'post',
    data
  })
}

export function deleteNode(data) {
  return request({
    url: '/api/procedures/node/delete-node',
    method: 'delete',
    data
  })
}
