import { http } from '@/utils/http/axios';
import type { QueryPageRequest, QueryPageResponse } from '@/types/basic-query';

/**
 * 根据用户名分页查询用户列表（管理员）
 * @param params - 分页查询参数，通常包含 username、pageNum、pageSize 等
 * @returns Promise<QueryPageResponse>
 */
export function queryAvailableUserList(params) {
  return http.request({
    url: `/admin/user/queryAvailableUserList`,
    method: 'post',
    params
  });
}

/**
 * 安全责任书 - 管理端分页查询
 * @param params - 分页查询条件
 * @returns Promise<QueryPageResponse>
 */
export function safetyResponsibilityAdminqueryPage(params) {
  return http.request({
    url: '/safetyResponsibility/admin/queryPage',
    method: 'post',
    params
  });
}

/**
 * 删除指定 ID 的安全责任书（管理端）
 * @param id - 安全责任书 ID
 * @returns Promise<void>
 */
export function safetyResponsibilityAdminDelete(id) {
  return http.request({
    url: `/safetyResponsibility/admin/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 新增安全责任书（管理端）
 * @param params - 安全责任书表单数据
 * @returns Promise<void>
 */
export function safetyResponsibilitySaveSafetyResponsibility(params) {
  return http.request({
    url: '/safetyResponsibility/admin/saveSafetyResponsibility',
    method: 'post',
    params
  });
}

/**
 * 更新安全责任书（管理端）
 * @param params - 更新后的安全责任书数据（需包含 ID）
 * @returns Promise<void>
 */
export function safetyResponsibilityUpdateSafetyResponsibility(params) {
  return http.request({
    url: '/safetyResponsibility/admin/updateSafetyResponsibility',
    method: 'put',
    params
  });
}

/**
 * 查询安全责任书详情（管理端）
 * @param params - 查询参数，通常包含 id
 * @returns Promise<any> 安全责任书详细信息
 */
export function safetyResponsibilityAdminQueryDetail(params) {
  return http.request({
    url: '/safetyResponsibility/admin/queryDetail',
    method: 'get',
    params
  });
}

/**
 * 作废指定 ID 的安全责任书（管理端）
 * @param id - 安全责任书 ID
 * @returns Promise<void>
 */
export function safetyResponsibilityAdminScrap(id) {
  return http.request({
    url: `/safetyResponsibility/admin/scrap?id=${id}`,
    method: 'put',
  });
}

/**
 * 分页查询已下发对象列表（管理端）
 * @param params - 查询条件，如责任书 ID、分页参数等
 * @returns Promise<QueryPageResponse>
 */
export function safetyResponsibilityAdminQueryIssuedObject(params) {
  return http.request({
    url: '/safetyResponsibility/admin/queryIssuedObject',
    method: 'post',
    params
  });
}

/**
 * 导出已下发对象列表（管理端）
 * @param params - 导出条件参数
 * @returns Promise<Blob> Excel 文件流
 */
export function safetyResponsibilityAdminExportIssuedObject(params) {
  return http.request({
    url: '/safetyResponsibility/admin/exportIssuedObject',
    method: 'post',
    params,
    responseType: 'blob',
  }, {
    isTransformResponse: false,
  });
}

/**
 * 删除指定 ID 的已下发对象（管理端）
 * @param id - 已下发对象 ID
 * @returns Promise<void>
 */
export function safetyResponsibilityAdminDeleteIssuedObject(id) {
  return http.request({
    url: `/safetyResponsibility/admin/deleteIssuedObject?id=${id}`,
    method: 'delete',
  });
}

/**
 * 下发安全责任书（管理端）
 * @param params - 下发参数，如责任书 ID、接收部门/人员等
 * @returns Promise<void>
 */
export function safetyResponsibilityAdminIssuedSafety(params) {
  return http.request({
    url: '/safetyResponsibility/admin/issuedSafety',
    method: 'put',
    params
  });
}


/**
 * 批量签收安全责任书（部门端）
 * @param params - 批量签收参数，如签收对象（部门/人员）、签收日期等
 * @returns Promise<void>
 */
export function safetyResponsibilityDeptBatchSign(params) {
  return http.request({
    url: '/safetyResponsibility/dept/batchSign',
    method: 'post',
    params
  });
}

/**
 * 查询当前用户的安全责任书节点等级
 * @returns Promise<any> 安全责任书节点等级
 */
export function queryNodeLevel(id) {
  return http.request({
    url: `/safetyResponsibility/admin/queryNodeLevel?id=${id}`,
    method: 'get',
  });
}


/**
 * 查询安全责任书详情（部门端）
 * @param params - 查询参数，通常包含 id
 * @returns Promise<any> 安全责任书详情（含签收/反馈状态）
 */
export function safetyResponsibilityDeptQueryDetail(params) {
  return http.request({
    url: '/safetyResponsibility/dept/queryDetail',
    method: 'get',
    params
  });
}

/**
 * 部门端对安全责任书进行签收或反馈
 * @param params - 包含 id、feedbackContent、status 等字段
 * @returns Promise<void>
 */
export function safetyResponsibilityDeptSignOrFeedback(params) {
  return http.request({
    url: '/safetyResponsibility/dept/signOrFeedback',
    method: 'put',
    params
  });
}

/**
 * 部门端分页查询接收到的安全责任书
 * @param params - 分页及过滤条件
 * @returns Promise<QueryPageResponse>
 */
export function safetyResponsibilityDeptQueryPage(params) {
  return http.request({
    url: '/safetyResponsibility/dept/queryPage',
    method: 'post',
    params
  });
}

/**
 * 管理端审批安全责任书（如反馈内容审核）
 * @param params - 审批参数，包含 id、approveStatus 等
 * @returns Promise<void>
 */
export function safetyResponsibilityAdminApprove(params) {
  return http.request({
    url: '/safetyResponsibility/admin/approve',
    method: 'put',
    params
  });
}

// ==================== 区域检查清单模块 ====================

/**
 * 区域检查清单 - 分页查询
 * @param params - 分页查询条件
 * @returns Promise<QueryPageResponse>
 */
export function areaCheckListQueryPage(params) {
  return http.request({
    url: '/areaCheckList/queryPage',
    method: 'post',
    params
  });
}

/**
 * 查询区域检查清单详情
 * @param params - 查询参数，通常包含 id
 * @returns Promise<any> 区域检查清单详细信息
 */
export function areaCheckListQueryDetail(params) {
  return http.request({
    url: '/areaCheckList/queryDetail',
    method: 'get',
    params
  });
}

/**
 * 删除指定 ID 的区域检查清单（仅限正常状态）
 * @param id - 清单 ID
 * @returns Promise<void>
 */
export function areaCheckListDelete(id) {
  return http.request({
    url: `/areaCheckList/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 新增区域检查清单
 * @param params - 区域检查清单表单数据
 * @returns Promise<void>
 */
export function areaCheckListSavaArea(params) {
  return http.request({
    url: `/areaCheckList/saveArea`,
    method: 'post',
    params
  });
}

/**
 * 更新区域检查清单
 * @param params - 更新数据（需包含 ID）
 * @returns Promise<void>
 */
export function areaCheckListUpdateArea(params) {
  return http.request({
    url: `/areaCheckList/updateArea`,
    method: 'put',
    params
  });
}

/**
 * 切换区域检查清单状态（如启用/停用）
 * @param params - 包含 id 和目标状态
 * @returns Promise<void>
 */
export function areaCheckListChange(params) {
  return http.request({
    url: `/areaCheckList/change`,
    method: 'put',
    params
  });
}

/**
 * 审批区域检查清单
 * @param params - 审批参数，如 id、approveResult 等
 * @returns Promise<void>
 */
export function areaCheckListApprove(params) {
  return http.request({
    url: `/areaCheckList/approve`,
    method: 'put',
    params
  });
}

/**
 * 导出区域检查清单数据
 * @param params - 导出筛选条件
 * @returns Promise<Blob> Excel 文件流
 */
export function areaCheckListExportArea(params) {
  return http.request({
    url: `/areaCheckList/exportArea`,
    method: 'post',
    params,
    responseType: 'blob',
  }, {
    isTransformResponse: false,
  });
}


/**
 * 部门端分页查询安全通知列表
 * @param params - 分页及查询条件（如通知标题、状态、分页参数等）
 * @returns Promise<QueryPageResponse> 安全通知分页数据
 */
export function safetyNoticeDeptQueryPage(params) {
  return http.request({
    url: `/safetyNotice/dept/queryPage`,
    method: 'post',
    params,
  });
}

/**
 * 查询安全通知详情（部门端）
 * @param params - 查询参数，通常包含通知 ID（如 { id: number }）
 * @returns Promise<any> 安全通知的详细内容，包括发布信息、附件、反馈状态等
 */
export function safetyNoticeDeptQueryDetail(params) {
  return http.request({
    url: `/safetyNotice/dept/queryDetail`,
    method: 'get',
    params,
  });
}

/**
 * 部门对安全通知提交反馈
 * @param params - 反馈内容，通常包含通知 ID、反馈意见、附件等字段
 * @returns Promise<void>
 */
export function safetyNoticeDeptFeedback(params) {
  return http.request({
    url: `/safetyNotice/dept/feedback`,
    method: 'put',
    params,
  });
}

/**
 * 管理端分页查询安全通知列表
 * @param params - 分页及筛选条件（如标题、发布状态、时间范围、pageNum、pageSize 等）
 * @returns Promise<QueryPageResponse> 安全通知分页数据列表
 */
export function safetyNoticeAdminQueryPage(params) {
  return http.request({
    url: `/safetyNotice/admin/queryPage`,
    method: 'post',
    params,
  });
}
/**
 * 管理端删除指定 ID 的安全通知
 * @param id - 安全通知的唯一标识 ID
 * @returns Promise<void>
 */
export function safetyNoticeAdminDelete(id) {
  return http.request({
    url: `/safetyNotice/admin/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 管理端查询安全通知详情
 * @param params - 查询参数，通常包含通知 ID（如 { id: number }）
 * @returns Promise<any> 安全通知的完整详细信息，包括发布内容、接收部门、反馈状态等
 */
export function safetyNoticeAdminQueryDetail(params) {
  return http.request({
    url: `/safetyNotice/admin/queryDetail`,
    method: 'get',
    params
  });
}

/**
 * 管理端审核安全通知（如审核部门提交的反馈内容）
 * @param params - 审核参数，通常包含通知 ID、审核状态（通过/驳回）、审核意见等
 * @returns Promise<void>
 */
export function safetyNoticeAdminApprove(params) {
  return http.request({
    url: `/safetyNotice/admin/approve`,
    method: 'put',
    params
  });
}


/**
 * 管理端查询安全通知的已下发对象列表
 * @param params - 查询条件，通常包含安全通知 ID、分页参数（pageNum、pageSize）等
 * @returns Promise<QueryPageResponse> 已下发对象的分页数据
 */
export function safetyNoticeAdminQueryIssuedObject(params) {
  return http.request({
    url: `/safetyNotice/admin/queryIssuedObject`,
    method: 'post',
    params
  });
}

/**
 * 管理端作废（撤销/废止）指定的安全通知
 * @param params - 作废参数，通常包含安全通知 ID（如 { id: number }）及其他必要字段
 * @returns Promise<void>
 */
export function safetyNoticeAdminScrap(id) {
  return http.request({
    url: `/safetyNotice/admin/scrap?id=${id}`,
    method: 'put',
  });
}



/**
 * 管理端导出安全通知的已下发对象列表（如接收部门/人员清单）
 * @returns Promise<Blob> Excel 或 CSV 文件的二进制流，用于下载
 */
export function safetyNoticeAdminExportIssuedObject(params) {
  return http.request({
    url: `/safetyNotice/admin/exportIssuedObject`,
    method: 'post',
    responseType: 'blob',
  }, {
    isTransformResponse: false,
  });
}

/**
 * 管理端新增安全通知
 * @param params - 安全通知表单数据，通常包含标题、内容、下发范围、附件等字段
 * @returns Promise<void>
 */
export function safetyNoticeAdminSaveSafetyNotice(params) {
  return http.request({
    url: `/safetyNotice/admin/saveSafetyNotice`,
    method: 'post',
    params
  });
}

/**
 * 查询区域检查清单列表（非分页，通常用于下拉选项或全量轻量查询）
 * @param params - 查询条件，如区域类型、状态等筛选参数
 * @returns Promise<Array<any>> 区域检查清单数据列表
 */
export function areaCheckListQueryList(params) {
  return http.request({
    url: '/areaCheckList/queryList',
    method: 'get',
    params
  });
}

/**
 * 管理端更新安全通知信息
 * @param params - 更新后的安全通知数据，通常包含 ID、标题、内容、下发范围等字段
 * @returns Promise<void>
 */
export function safetyNoticeAdminUpdateSafetyNotice(params) {
  return http.request({
    url: '/safetyNotice/admin/updateSafetyNotice',
    method: 'put',
    params
  });
}


/**
 * 管理端下发安全通知（将通知发布给指定部门或人员）
 * @param params - 下发参数，通常包含通知 ID、接收对象列表（如部门 IDs 或用户 IDs）等
 * @returns Promise<void>
 */
export function safetyNoticeAdminIssuedNotice(params) {
  return http.request({
    url: '/safetyNotice/admin/issuedNotice',
    method: 'put',
    params
  });
}

/**
 * 分页查询安全风险清单列表
 * @param params - 分页及查询条件（如风险名称、等级、状态、区域、pageNum、pageSize 等）
 * @returns Promise<QueryPageResponse> 安全风险数据的分页结果
 */
export function safetyRiskListQueryPage(params) {
  return http.request({
    url: '/safetyRisk/list/queryPage',
    method: 'post',
    params
  });
}

/**
 * 
 * @param id 
 * @returns 
 */
export function safetyRiskListDelete(id) {
  return http.request({
    url: `/safetyRisk/list/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 审批安全风险清单
 * @param params - 审批参数，包含 id、approveStatus 等
 * @returns Promise<void>
 */
export function safetyRiskListApprove(params) {
  return http.request({
    url: `/safetyRisk/list/approve`,
    method: 'put',
    params
  });
}

/**
 * 保存安全风险清单
 * @param params - 安全风险清单数据
 * @returns Promise<void>
 */
export function safetyRiskListSaveRiskList(params) {
  return http.request({
    url: `/safetyRisk/list/saveRiskList`,
    method: 'post',
    params
  });
}

/**
 * 更新安全风险清单
 * @param params - 更新后的安全风险清单数据（需包含 ID）
 * @returns Promise<void>
 */
export function safetyRiskListUpdateRiskList(params) {
  return http.request({
    url: `/safetyRisk/list/updateRiskList`,
    method: 'put',
    params
  });
}

/**   
 *  切换安全风险清单状态（启用/停用）
 * @param params - 包含 id 和目标状态
 * @returns Promise<void>
 */
export function safetyRiskListChange(params) {
  return http.request({
    url: `/safetyRisk/list/change`,
    method: 'put',
    params
  });
}


/** 
 * 查询安全风险清单详情           
 *  @param id - 安全风险清单 ID
 * @returns Promise<any> 安全风险清单详细信息
 */
export function safetyRiskListQueryDetail(id) {
  return http.request({
    url: `/safetyRisk/list/queryDetail?id=${id}`,
    method: 'get',
  });
}

/**
  * 分页查询安全危险源清单列表  
  * @param params - 分页及查询条件
  * @returns Promise<QueryPageResponse> 安全危险源清单分页结果
  */
export function safetyHazardInventoryQueryPage(params) {
  return http.request({
    url: '/safetyHazardInventory/queryPage',
    method: 'post',
    params
  });
}

/**
  * 删除安全危险源清单     
  * @param id - 安全危险源清单 ID
  * @returns Promise<void>
  */

export function safetyHazardInventoryDelete(id) {
  return http.request({
    url: `/safetyHazardInventory/delete?id=${id}`,
    method: 'delete',
  });
}

/**
  * 保存安全危险源清单     
  * @param params - 安全危险源清单数据
  * @returns Promise<void>
  */
export function safetyHazardInventorySaveHazard(params) {
  return http.request({
    url: `/safetyHazardInventory/saveHazard`,
    method: 'post',
    params
  });
}

// safetyHazardInventory/queryDetail
/**
 * 查询安全危险源清单详情 
 * @param id - 安全危险源清单 ID
 *  @returns Promise<any> 安全危险源清单详细信息
 */
export function safetyHazardInventoryQueryDetail(id) {
  return http.request({
    url: `/safetyHazardInventory/queryDetail?id=${id}`,
    method: 'get',
  });
}

/**
 * 更新安全危险源清单 
 * @param params - 更新后的安全危险源清单数据（需包含 ID）
 * @returns Promise<void>
 */
export function safetyHazardInventoryUpdateHazard(params) {
  return http.request({
    url: `/safetyHazardInventory/updateHazard`,
    method: 'put',
    params
  });
}

/**
 * 分页查询安全整改计划与方案列表 
 * @param params - 分页及查询条件
 * @returns Promise<QueryPageResponse> 安全整改计划与方案分页结果
 */

export function safetyHazardInventoryQueryPlanAndSchemePage(params) {
  return http.request({
    url: '/safetyHazardInventory/queryPlanAndSchemePage',
    method: 'post',
    params
  });
}

/**
 * 删除安全整改计划与方案 
 * @param id - 安全整改计划与方案 ID
 * @returns Promise<void>
 */
export function safetyHazardInventoryDeletePlan(id) {
  return http.request({
    url: `/safetyHazardInventory/deletePlan?id=${id}`,
    method: 'delete',
  });
}

/**
 * 查询安全整改计划与方案详情 
 * @param id - 安全整改计划与方案 ID    
 * @returns Promise<any> 安全整改计划与方案详细信息
 */
export function safetyHazardInventoryQueryPlanDetail(id) {
  return http.request({
    url: `/safetyHazardInventory/queryPlanDetail?id=${id}`,
    method: 'get',
  });
}

/**
 * 保存安全整改计划与方案 
 * @param params - 安全整改计划与方案数据
 * @returns Promise<void>
 */
export function safetyHazardInventorySavePlan(params) {
  return http.request({
    url: `/safetyHazardInventory/savePlan`,
    method: 'post',
    params
  });
}

/**
 * 更新安全整改计划与方案 
 * @param params - 更新后的安全整改计划与方案数据（需包含 ID）
 * @returns Promise<void>
 */
export function safetyHazardInventoryUpdatePlan(params) {
  return http.request({
    url: `/safetyHazardInventory/updatePlan`,
    method: 'put',
    params
  });
}


/**
 * 分页查询施工安全数据（施工侧）
 * @param params - 查询参数
 * @returns Promise<void>
 */
export function constructionSafetyQueryPageConstruction(params) {
  return http.request({
    url: `/constructionSafety/queryPageConstruction`,
    method: 'post',
    params
  });
}

/**
 * 管理端分页查询施工安全审批列表
 * @param params - 查询参数，包含分页参数（pageNum、pageSize）、申请人、申请时间、审批状态等
 * @returns Promise<QueryPageResponse> 施工安全审批分页结果
 */
export function constructionSafetyQueryConstructionApprovalPage(params) {
  return http.request({
    url: `/constructionSafety/queryConstructionApprovalPage`,
    method: 'post',
    params
  });
}



/**
 * 根据 ID 删除施工安全记录
 * @param id - 施工安全记录 ID
 * @returns Promise<void>
 */
export function constructionSafetyDeleteConstructionById(id) {
  return http.request({
    url: `/constructionSafety/deleteConstructionById?id=${id}`,
    method: 'delete',
  });
}


// safetyResponsibility/admin/queryUserByGroup
/**
 * 根据分组查询用户列表
 * @param params - 查询参数，包含分组 ID
 * @returns Promise<Array<any>> 用户列表
 */
export function safetyResponsibilityAdminQueryUserByGroup(params) {
  return http.request({
    url: `/safetyResponsibility/admin/queryUserByGroup`,
    method: 'post',
    params
  });
}

/**
 * 部门签署安全责任书   
 * @param params - 签署参数，包含签署人 ID、签署时间、签署内容等
 * @returns Promise<void>
 */
export function safetyResponsibilityDeptSaveSign(params) {
  return http.request({
    url: `/safetyResponsibility/dept/saveSign`,
    method: 'post',
    params
  });
}


/**
 * 管理端更新施工安全申请
 * @param params - 更新后的施工安全申请数据（需包含 ID）
 * @returns Promise<void>
 */
export function constructionSafetyUpdateApply(params) {
  return http.request({
    url: `/constructionSafety/updateApply`,
    method: 'put',
    params
  });
}

/**
 * 管理端保存施工安全数据
 * @param params - 施工安全数据
 * @returns Promise<void>
 */
export function constructionSafetySaveConstruction(params) {
  return http.request({
    url: `/constructionSafety/saveConstruction`,
    method: 'post',
    params
  });
}

// /api/dangerWork/submit
/**
 * 提交危险作业
 * @param params - 提交参数，包含作业数据
 * @returns Promise<void>
 */
export function dangerWorkSubmit(params) {
  return http.request({
    url: `/dangerWork/submit`,
    method: 'put',
    params
  });
}

/**
 * 管理端更新施工安全数据
 * @param params - 更新后的施工安全数据（需包含 ID）
 * @returns Promise<void>
 */
export function constructionSafetyUpdateConstruction(params) {
  return http.request({
    url: `/constructionSafety/updateConstruction`,
    method: 'put',
    params
  });
}


/**
 * 管理端查询施工安全详情
 * @param id - 施工安全申请 ID
 * @returns Promise<any> 施工安全申请详细信息
 */
export function constructionSafetyQueryDetailConstruction(id) {
  return http.request({
    url: `/constructionSafety/queryDetailConstruction?id=${id}`,
    method: 'get',
  });
}

/**
 * 管理端审批施工安全申请
 * @param params - 审批参数，包含申请 ID、审批结果、审批意见等
 * @returns Promise<void>
 */
export function constructionSafetySaveApproval(params) {
  return http.request({
    url: `/constructionSafety/saveApproval`,
    method: 'post',
    params
  });
}

/**
 * 管理端分页查询危险作业审批列表
 * @param params - 查询参数，包含分页参数（pageNum、pageSize）、申请人、申请时间、审批状态等
 * @returns Promise<QueryPageResponse> 危险作业审批分页结果
 */
export function dangerWorkQueryDangerWorkApprovalPage(params) {
  return http.request({
    url: `/dangerWork/queryDangerWorkApprovalPage`,
    method: 'post',
    params
  });
}

/**
 * 分页查询危险作业列表
 * @param params - 查询参数，包含分页参数（pageNum、pageSize）、作业类型、作业状态等
 * @returns Promise<QueryPageResponse> 危险作业分页结果
 */
export function dangerWorkQueryPage(params) {
  return http.request({
    url: `/dangerWork/queryPage`,
    method: 'post',
    params
  });
}

/**
 * 查询危险作业详情
 * @param id - 危险作业 ID
 * @returns Promise<any> 危险作业详细信息
 */
export function dangerWorkQueryDetail(id) {
  return http.request({
    url: `/dangerWork/queryDetail?id=${id}`,
    method: 'get',
  });
}

/**
 * 管理端保存危险作业
 * @param params - 危险作业数据
 * @returns Promise<void>
 */
export function dangerWorkSaveDangerWork(params) {
  return http.request({
    url: `/dangerWork/saveDangerWork`,
    method: 'post',
    params
  });
}

/**
 * 管理端更新危险作业
 * @param params - 更新后的危险作业数据（需包含 ID）
 * @returns Promise<void>
 */
export function dangerWorkUpdateDangerWork(params) {
  return http.request({
    url: `/dangerWork/updateDangerWork`,
    method: 'put',
    params
  });
}

/**
 * 管理端删除危险作业
 * @param id - 危险作业 ID  
 * @returns Promise<void>
 */
export function dangerWorkDeleteDangerWork(id) {
  return http.request({
    url: `/dangerWork/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 管理端审批危险作业
 * @param params - 审批参数，包含作业 ID、审批结果、审批意见等
 * @returns Promise<void>
 */
export function dangerWorkSaveApproval(params) {
  return http.request({
    url: `/dangerWork/saveApproval`,
    method: 'post',
    params
  });   
}

