/**
 * @description: 监控调阅记录
 */
import { http } from '@/utils/http/axios';
import type { QueryPageRequest, QueryPageResponse } from '@/types/basic-query';

/**
 * @description: 分页查询监控调阅记录
 */
export interface SurveillanceListQuery {
  fieldType?: string; // 字段类型：1-姓名，2-工号，3-部门，4-调阅位置
  fieldContent?: string;
  isCopy?: number; // 是否拷贝：0-否，1-是
  accessStatus?: number; // 调阅状态：0-待调阅，1-已调阅
  startTime?: string; // 开始时间
  endTime?: string; // 结束时间
}
export interface SurveillanceInfoStruct {
  id?: number; // 自增主键
  staffNo?: string; // 工号
  userName?: string; // 姓名
  deptId?: number; // 部门id
  deptName?: string; // 部门名称
  accessLocation?: string; // 调阅位置
  accessStartTime?: string; // 调阅开始时间
  accessEndTime?: string; // 调阅结束时间
  isCopy?: number; // 是否拷贝: 0-否，1-是
  accessStatus?: number; // 调阅状态: 0-待调阅，1-已调阅
  approvalFormUrl?: string; // 审批单地址
  createdById?: number; // 创建人id
  createdByName?: string; // 创建人姓名
  createdByStaffNo?: string; // 创建人工号
  createdAt?: string; // 创建时间
  updatedAt?: string; // 更新时间
  isDeleted?: number; // 0-未删除，大于0(时间戳)-已删除
}
export const getSurveillanceInfoList = (params: QueryPageRequest<SurveillanceListQuery>) => {
  return http.request<QueryPageResponse<SurveillanceInfoStruct>>({
    url: '/MonitorAccessRecord/queryMonitorAccessRecordPage',
    method: 'post',
    params,
  });
};

/**
 * @description: 添加监控调阅记录
 */
export const addSurveillanceInfo = (params: SurveillanceInfoStruct) => {
  return http.request({
    url: '/MonitorAccessRecord/saveMonitorAccessRecord',
    method: 'post',
    params,
  });
};

/**
 * @description: 更新监控调阅记录
 */
export const updateSurveillanceInfo = (params: SurveillanceInfoStruct) => {
  return http.request({
    url: '/MonitorAccessRecord/updateMonitorAccessRecord',
    method: 'put',
    params,
  });
};

/**
 * @description: 删除监控调阅记录（单个）
 */
export const deleteSurveillanceInfo = (recordId: number) => {
  return http.request({
    url: `/MonitorAccessRecord/deleteMonitorAccessRecord?recordId=${recordId}`,
    method: 'delete',
  });
};

/**
 * @description: 导出监控调阅记录
 */
export function exportSurveillanceInfo(params: SurveillanceListQuery) {
  return http.request(
    {
      url: '/MonitorAccessRecord/exportMonitorAccessRecord',
      method: 'post',
      responseType: 'blob',
      params,
    },
    { isTransformResponse: false },
  );
}
