/**
 * 设备管理接口
 */
import request from '@/utils/request'
import qs from 'qs'
import Vue from 'vue'
/**
 * 控制器接口
 */
// 控制器查询
export function getContrllerList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/listPage',
    method: 'get',
    params
  })
}
// 查询可绑定的控制器
export function listNoBindController(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/listNoBind',
    method: 'get',
    params
  })
}
// 添加控制器
export function addController(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/add',
    method: 'post',
    params
  })
}
// 编辑控制器
export function editController(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/update',
    method: 'post',
    params
  })
}
// 批量删除控制器
export function batchDelController(ids) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/batchDelete',
    method: 'post',
    params: {
      busDeviceControllerIds: ids
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
// 批量导入控制器
export function batchImportController(fileobj) {
  const param = new FormData()
  param.append('file', fileobj)
  return request({
    url: 'lamp/busDeviceController/batchImport',
    method: 'post',
    headers: { 'Content-Type': 'multipart/form-data' },
    data: param
  })
}
// 批量导出控制器
export function batchExportController(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/export',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

/**
 * 灯杆接口
 */
// 灯杆查询
export function getLamppostList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/listPage',
    method: 'get',
    params
  })
}
// 添加灯杆
export function addLamppost(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/add',
    method: 'post',
    params
  })
}
// 编辑灯杆
export function editLamppost(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/update',
    method: 'post',
    params
  })
}
// 删除灯杆
export function delLamppost(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/delete',
    method: 'post',
    params
  })
}
// 批量删除灯杆
export function batchDelLamppost(ids) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/batchDelete',
    method: 'post',
    params: {
      busDeviceLamppostIds: ids
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
// 批量导入灯杆
export function batchImportLamppost(fileobj) {
  const param = new FormData()
  param.append('file', fileobj)
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'device/batchImport',
    method: 'post',
    headers: { 'Content-Type': 'multipart/form-data' },
    data: param
  })
}
// 批量导出灯杆
export function batchExportLamppost(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/export',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

export function batchExportLamp(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamp/export',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

export function batchExportLampbox(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLampbox/export',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

export function batchExportCircuit(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceCircuit/export',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

export function batchExportGroup(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/export',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

// 查询未绑定的路灯杆
export function listNoBindLamppost(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/listNoBind',
    method: 'get',
    params
  })
}

export function getAllLamppostList() {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamppost/list',
    method: 'get'
  })
}
export function getAllLampList() {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamp/list',
    method: 'get'
  })
}

/**
 * 路灯接口
 */
// 路灯查询
export function getLampList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamp/listPage',
    method: 'get',
    params
  })
}
// 添加路灯
export function addLamp(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'lamp/busDeviceLamp/add',
    method: 'post',
    params
  })
}
// 编辑路灯
export function editLamp(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamp/update',
    method: 'post',
    params
  })
}
// 批量删除路灯
export function batchDelLamp(ids) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLamp/batchDelete',
    method: 'post',
    params: {
      busDeviceLampIds: ids
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
/**
 * 灯箱接口
 */
// 灯箱查询
export function getLampboxList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLampbox/listPage',
    method: 'get',
    params
  })
}
// 查询所有灯箱
export function getAllLampboxList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLampbox/list',
    method: 'get',
    params
  })
}
export function getAllControllerList() {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceController/list',
    method: 'get'
  })
}
// 添加灯箱
export function addLampbox(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLampbox/add',
    method: 'post',
    params
  })
}
// 编辑灯箱
export function editLampbox(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLampbox/update',
    method: 'post',
    params
  })
}
// 批量删除灯箱
export function batchDelLampbox(ids) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceLampbox/batchDelete',
    method: 'post',
    params: {
      busDeviceLampboxIds: ids
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
/**
 * 回路接口
 */
// 回路查询
export function getCircuitList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceCircuit/listPage',
    method: 'get',
    params
  })
}
// 查询所有回路
export function getAllCircuitList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceCircuit/list',
    method: 'get',
    params
  })
}
// 添加回路
export function addCircuit(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceCircuit/add',
    method: 'post',
    params
  })
}
// 编辑回路
export function editCircuit(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceCircuit/update',
    method: 'post',
    params
  })
}
// 批量删除回路
export function batchDelCircuit(ids) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busDeviceCircuit/batchDelete',
    method: 'post',
    params: {
      busDeviceCircuitIds: ids
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}

// 设备查询
export function getDeviceListAll(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'device/listAll',
    method: 'get',
    params
  })
}
// 添加设备
export function addDevice(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'irisDevice/addIrisDevice',
    method: 'post',
    params
  })
}
// 修改设备
export function updateDevice(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'irisDevice/editIrisDevice',
    method: 'post',
    params
  })
}
// 删除设备
export function delDevice(id) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'irisDevice/deleteIrisDevice',
    method: 'post',
    params: {
      id: id
    }
  })
}
// 批量导入
export function batchImportDevice(fileobj) {
  const param = new FormData()
  param.append('file', fileobj)
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'device/batchImport',
    method: 'post',
    headers: { 'Content-Type': 'multipart/form-data' },
    data: param
  })
}
// 批量导出
export function batchExportDevice(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'device/batchExport',
    method: 'post',
    timeout: 120000,
    params,
    responseType: 'blob' // 这一步也很关键，一定要加上 responseType 值为 blob
  })
}

/**
 * 分组接口
 */
// 分组查询
export function getGroupList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/listPage',
    method: 'get',
    params
  })
}
export function getGroupDetail(id) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/detail/' + id,
    method: 'get'
  })
}
// 查询所有分组
export function getAllGroupList(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/list',
    method: 'get',
    params
  })
}
// 添加分组
export function addGroup(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/add',
    method: 'post',
    params,
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
// 编辑分组
export function editGroup(params) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/update',
    method: 'post',
    params,
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
// 批量删除分组
export function batchDelGroup(ids) {
  const basetConfig = Vue.prototype.baseConfig // 注意该行应放在export里面，否则获取不到值
  const lampPath = basetConfig.lampBasePath
  return request({
    url: lampPath + 'busGroupInfo/batchDelete',
    method: 'post',
    params: {
      busGroupInfoIds: ids
    },
    paramsSerializer: params => {
      return qs.stringify(params, { indices: false })
    }
  })
}
