import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace MesDvMeteringApi {
  /** MES 计量器具 */
  export interface Metering {
    id?: number; // 主键ID
    code?: string; // 计量器具编码
    name?: string; // 计量器具名称
    specification?: string; // 规格型号
    brand?: string; // 品牌/生产厂家
    category?: number; // 器具类别（字典）
    precision?: string; // 精度
    range?: string; // 量程
    deptId?: number; // 使用部门编号
    deptName?: string; // 使用部门名称
    chargeUserId?: number; // 责任人编号
    chargeUserNickname?: string; // 责任人昵称
    checkCycleCount?: number; // 校准周期（月）
    useDate?: string; // 投入使用日期
    lastCheckDate?: string; // 上次检测日期
    nextCheckDate?: string; // 下次检测日期（到期日）
    status?: number; // 状态（字典）
    expireStatus?: number; // 到期状态：1 已过期 / 2 即将到期 / 3 正常
    expireDays?: number; // 距到期天数
    remark?: string; // 备注
    createTime?: Date; // 创建时间
  }
}

/** 查询计量器具分页 */
export function getMeteringPage(params: PageParam) {
  return requestClient.get<PageResult<MesDvMeteringApi.Metering>>(
    '/mes/dv/metering/page',
    { params },
  );
}

/** 查询计量器具详情 */
export function getMetering(id: number) {
  return requestClient.get<MesDvMeteringApi.Metering>(
    `/mes/dv/metering/get?id=${id}`,
  );
}

/** 新增计量器具 */
export function createMetering(data: MesDvMeteringApi.Metering) {
  return requestClient.post<number>('/mes/dv/metering/create', data);
}

/** 修改计量器具 */
export function updateMetering(data: MesDvMeteringApi.Metering) {
  return requestClient.put('/mes/dv/metering/update', data);
}

/** 删除计量器具 */
export function deleteMetering(id: number) {
  return requestClient.delete(`/mes/dv/metering/delete?id=${id}`);
}

/** 导出计量器具 */
export function exportMetering(params: any) {
  return requestClient.download('/mes/dv/metering/export-excel', { params });
}

/** 查询计量器具精简列表（下拉选项） */
export function getMeteringSimpleList() {
  return requestClient.get<MesDvMeteringApi.Metering[]>(
    '/mes/dv/metering/simple-list',
  );
}
