index.ts 4.51 KB
import {
  AddDataBoardParams,
  AddDataComponentParams,
  ComponentInfoDetail,
  DataBoardList,
  DataComponentRecord,
  GetDataBoardParams,
  Layout,
  MasterDeviceList,
  UpdateDataBoardLayoutParams,
  UpdateDataBoardParams,
  UpdateDataComponentParams,
} from './model';
import { defHttp } from '/@/utils/http/axios';

enum DataBoardUrl {
  GET_DATA_BOARD = '/data_board',
  ADD_DATA_BOARD = '/data_board/add',
  DELETE_DATA_BOARD = '/data_board',
  UPDATE_DATA_BOARD = '/data_board/update',
  UPDATE_DATA_BOARD_LAYOUT = '/data_board',
}

enum DataComponentUrl {
  GET_DATA_COMPONENT = '/data_component',
  ADD_DATA_COMPONENT = '/data_component',
  DELETE_DATA_COMPONENT = '/data_component',
  UPDATE_DATA_COMPONENT = '/data_component',
}

enum DataBoardShareUrl {
  GET_DATA_COMPONENT = '/noauth/share/data_board',
}

enum DeviceUrl {
  GET_DEVICE = '/device/list/master',
  GET_SLAVE_DEVICE = '/device/list/slave',
  GET_DEVICE_ATTRIBUTE = '/plugins/telemetry',
}

/**
 * @description 获取数据看板
 * @param params
 * @returns
 */
export const getDataBoardList = (params: GetDataBoardParams) => {
  return defHttp.get<DataBoardList>({
    url: DataBoardUrl.GET_DATA_BOARD,
    params,
  });
};

/**
 * @description 新增数据看板
 * @param params
 * @returns
 */
export const addDataBoard = (params: AddDataBoardParams) => {
  return defHttp.post({
    url: DataBoardUrl.ADD_DATA_BOARD,
    params,
  });
};

/**
 * @description 编辑数据看吧
 * @param params
 * @returns
 */
export const updateDataBoard = (params: UpdateDataBoardParams) => {
  return defHttp.post({
    url: DataBoardUrl.UPDATE_DATA_BOARD,
    params,
  });
};

/**
 * @description 删除数据看板
 * @param params
 * @returns
 */
export const deleteDataBoard = (params: string[]) => {
  return defHttp.delete({
    url: DataBoardUrl.DELETE_DATA_BOARD,
    params: { ids: params },
  });
};

/**
 * @description 更新数据组件位置
 * @param params
 * @returns
 */
export const updateDataBoardLayout = (params: UpdateDataBoardLayoutParams) => {
  return defHttp.post({
    url: `${DataBoardUrl.UPDATE_DATA_BOARD_LAYOUT}/${params.boardId}/layout/`,
    params: params.layout,
  });
};

/**
 * @description 获取数据组件
 * @param params
 * @returns
 */
export const getDataComponent = (params: string) => {
  return defHttp.get<ComponentInfoDetail>({
    url: `${DataComponentUrl.GET_DATA_COMPONENT}/${params}`,
    // params: { boardId: params },
  });
};

export const addDataComponent = (params: AddDataComponentParams) => {
  return defHttp.post<{ data: DataComponentRecord }>({
    url: `${DataComponentUrl.ADD_DATA_COMPONENT}/${params.boardId}/add`,
    params: params.record,
  });
};

/**
 * @description 删除数据组件
 * @param params
 * @returns
 */
export const deleteDataComponent = (params: { dataBoardId: string; ids: string[] }) => {
  return defHttp.delete({
    url: `${DataComponentUrl.DELETE_DATA_COMPONENT}/${params.dataBoardId}`,
    params: {
      ids: params.ids,
    },
  });
};

/**
 * @description 更新数据组件
 * @param params
 * @returns
 */
export const updateDataComponent = (params: UpdateDataComponentParams) => {
  return defHttp.post({
    url: `${DataComponentUrl.UPDATE_DATA_COMPONENT}/${params.boardId}/update`,
    params: params.record,
  });
};

/**
 * @description 分享组件信息
 * @param params
 * @returns
 */
export const getShareBoardComponentInfo = (params: { boardId: string; tenantId: string }) => {
  const { boardId, tenantId } = params;
  return defHttp.get<ComponentInfoDetail>({
    url: `${DataBoardShareUrl.GET_DATA_COMPONENT}/${boardId}/${tenantId}`,
  });
};

/**
 * @description 获取所有主设备
 * @param params
 * @returns
 */
export const getAllDeviceByOrg = (params: string) => {
  return defHttp.get<MasterDeviceList[]>({
    url: `${DeviceUrl.GET_DEVICE}/${params}`,
  });
};

/**
 * @description 获取网关子设备
 * @param params
 * @returns
 */
export const getGatewaySlaveDevice = (params: { organizationId: string; masterId: string }) => {
  const { masterId, organizationId } = params;
  return defHttp.get<MasterDeviceList[]>({
    url: `${DeviceUrl.GET_SLAVE_DEVICE}/${organizationId}`,
    params: { masterId },
  });
};

/**
 * @description 获取设备属性
 * @param params
 * @returns
 */
export const getDeviceAttributes = (params: { entityType?: string; deviceId: string }) => {
  const { entityType = 'DEVICE', deviceId } = params;
  return defHttp.get<string[]>(
    {
      url: `${DeviceUrl.GET_DEVICE_ATTRIBUTE}/${entityType}/${deviceId}/keys/timeseries`,
    },
    {
      joinPrefix: false,
    }
  );
};