import { http } from '@/utils/http/axios';
import type { QueryPageResponse } from '@/types/basic-query';
// import exp from 'node:constants';
import { DeptTree, addDeptProps, editDeptProps } from '@/types/dept/type';

/**
 * 安全文化基础接口
 */
export interface safetyCultureFile {
  materialName: string;
  description: string;
  categoryName: string;
  caseName: string;
  id?: number;
  bizType?: string;
  fileCode: string; // 文件编号
  fileName: string; // 文件名称
  classifyName: string; // 分类名称
  fileVersion: string; // 文件版本号
  fileFormat: number; // 文件格式：PDF/WORD
  releaseDate: string; // 发布日期（格式：yyyy-MM-dd）
  fileUrl?: string; // 文件存储路径
  content?: string; // 文档内容（富文本）
  status?: number; // 启用状态：1-启用，0-禁用
  createdAt?: string; // 创建时间
  updatedAt?: string; // 更新时间
  uploadTime?: string; // 上传时间
  publishDate?: string; // 发布日期（格式：yyyy-MM-dd）
  attachmentUrl?: string; // 文档上传（多个文件路径）
  imageUrls?: string; // 图片上传（多个图片路径）
}

/**
 * 查询参数
 */
export interface safetyCultureFileQuery {
  keyword?: string; // 文件名称/编号（模糊查询）
  status?: number; // 状态：1-启用，0-禁用
  classifyName?: string; // 分类名称
  startTime?: string; // 上传日期范围-开始日期
  endTime?: string; // 上传日期范围-结束日期
}

/**
 * 分页查询参数（Pageable<T> 格式）
 */
export interface safetyCultureFilePageQuery {
  pageNumber: number; // 页码，从1开始
  pageSize: number; // 每页数量
  queryParam?: safetyCultureFileQuery; // 查询条件对象
}

/**
 * 导出参数
 */
export interface safetyCultureFileExportQuery extends safetyCultureFileQuery { }
export interface ProductionSafetyFileExportQuery extends safetyCultureFileExportQuery { }

/**
 * 新增事故案例参数
 */
export interface newAccidentCases {
  id?: number; // 事故案例ID
  caseName: string; // 事故案例名称
  categoryName: string; // 分类名称
  description: string; // 案例描述
  attachmentUrl: string[] | string; // 文档上传（多个文件路径）
  status?: number; // 启用状态：1-启用，0-禁用
}


/**
 * 保存安全活动
 */

 export interface addSafetyCultureFilePageQuery {
  id?: number;
  planName: string;
  actionContent: string;
  categoryName: string;
  responsibleDeptId: number;
  responsiblePersonId: number;
  cooperateDeptIds: string;
  attachmentUrl: string[] | string; // 文档上传（多个文件路径）
}

/**
 * 导入响应
 */
export interface ImportRes {
  successCount: number; // 成功数量
  failCount: number; // 失败数量
  failMessages: string[]; // 失败信息列表
}

export interface ActivityRegistrationTargetItem {
  id?: number; // 活动注册目标项ID
  planName: string; // 计划名称
  createdByName: string; // 创建人姓名
  responsibleDeptName: string; // 负责部门名称
  startTime: string; // 开始时间（格式：yyyy-MM-dd HH:mm:ss）
  departmentName: string; // 部门名称
  isAdvancedGroup: boolean; // 是否先进集体
  departmentSort: number; // 部门排序
  departmentLeader: string; // 部门负责人
  baseScore: number; // 基础分
  totalScore: number; // 总分数
  addScore: number; // 加分项分数
  subtractScore: number; // 减分项分数
}


export interface IssueHiddenDangerRequest {
  id: number;
  specificDeptId: string;
  specificPersonId: string;
  startTime: string;
  endTime: string;
}

// =============================== 事故案例管理 ============================

/**
 * 分页查询事故案例管理
 */
export function accidentCaseManagementFilePage(query: safetyCultureFilePageQuery, classifyName?: string) {
  return http.request<QueryPageResponse<safetyCultureFile>>({
    url: '/accidentCase/queryPage',
    method: 'post',
    data: query,
    params: classifyName ? { classifyName } : undefined,
  });
}

/**
 * 查询事故案例详情
 */
export function queryAccidentCaseDetail(id: number) {
  return http.request<safetyCultureFile>({
    url: `/accidentCase/queryDetail?id=${id}`,
    method: 'get',
  });
}

/**
 * 新增事故案例
 */
export function saveAccidentCase(data: newAccidentCases) {
  return http.request({
    url: '/accidentCase/save',
    method: 'post',
    data,
  });
}

/**
 * 更新事故案例
 */
export function updateAccidentCase(data: newAccidentCases) {
  return http.request({
    url: '/accidentCase/update',
    method: 'put',
    data,
  });
}

/**
 * 删除事故案例
 */
export function deleteAccidentCase(id: number) {
  return http.request({
    url: `/accidentCase/delete?id=${id}`,
    method: 'delete',
  });
}


/**
 * 查询安全文化材料分页
 */
export function querySafetyCultureMaterialsPage(query: safetyCultureFilePageQuery, classifyName?: string) {
  return http.request({
    url: '/safety-culture/query-page',
    method: 'post',
    data: query,
    params: classifyName ? { classifyName } : undefined,
  });
}

/**
 * 删除安全文化材料
 */
export function deleteSafetyCultureMaterials(id: number) {
  return http.request({
    url: `/safety-culture/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 根据ID查询院级文件详情
 */
export function queryAcademyFileById(id: number) {
  return http.request<safetyCultureFile>({
    url: `/safety-culture/detail?id=${id}`,
    method: 'get',
  });
}

/**
 *新增安全文化资料
 */
export function saveAcademyFile(data: safetyCultureFile) {
  return http.request({
    url: '/safety-culture/save',
    method: 'post',
    data,
  });
}

/**
 *更新安全文化资料
 */
export function updateAcademyFile(data: safetyCultureFile) {
  return http.request({
    url: '/safety-culture/update',
    method: 'put',
    data,
  });
}

/**
 * 安全文化活动列表
 */
export function safetyCultureActivityManagementFilePage(data: safetyCultureFilePageQuery) {
  return http.request({
    url: '/safetyCulture/activity/queryPage',
    method: 'post',
    data,
  });
}

/**
 * 安全文化活动执行人列表
 */
export function safetyCultureActivityManagementExecutorFilePage(data: safetyCultureFilePageQuery) {
  return http.request({
    url: '/safetyCulture/activity/queryPageIssue',
    method: 'post',
    data,
  });
}

/**
 * 删除安全文化活动
 */
export function deleteSafetyCultureActivityManagement(id: number) {
  return http.request({
    url: `/safetyCulture/activity/delete?id=${id}`,
    method: 'delete',
  });
}


/**
 * 新增安全文化活动
 */
export function addSafetyCultureActivityManagement(data: addSafetyCultureFilePageQuery) {
  return http.request({
    url: '/safetyCulture/activity/save',
    method: 'post',
    data,
  });
}

/**
 * 更新安全文化活动
 */
export function updateSafetyCultureActivity(data: addSafetyCultureFilePageQuery) {
  return http.request({
    url: '/safetyCulture/activity/update',
    method: 'put',
    data,
  });
}


/**
 * 查询安全文化活动详情
 */
export function querySafetyCultureActivityDetail(id: number) {
  return http.request({
    url: `/safetyCulture/activity/queryDetail?id=${id}`,
    method: 'get',
  });
}

/**
 * 查询安全文化活动报名分页
 */
export function saveSafetyCultureActivityManagement(data) {
  return http.request({
    url: '/safetyCulture/registration/queryPage',
    method: 'post',
    data,
  });
}

/**
 * 查询执行人安全文化活动报名分页
 */
export function saveSafetyCultureActivityExecutorManagement(data) {
  return http.request({
    url: '/safetyCulture/registration/queryPage',
    method: 'post',
    data,
  });
}

export function getAllDepartments(): Promise<DeptTree[]> {
  return http.request({
    url: '/admin/dept/queryAllDeptTree',
    method: 'post',
  });
}


/**
 * 添加安全文化活动报名
 */
export function addSafetyCultureActivityRegistration(data) {
  return http.request({
    url: '/safetyCulture/registration/save',
    method: 'post',
    data,
  });
}

/**
 * 删除安全文化活动报名
 */
export function deleteSafetyCultureActivityRegistration(id: number) {
  return http.request({
    url: `/safetyCulture/registration/delete?id=${id}`,
    method: 'post'
  });
}

/**
 * 更新安全文化活动
 */
export function updateSafetyCultureActivityManagement(data) {
  return http.request({
    url: '/safetyCulture/registration/update',
    method: 'post',
    data,
  });
}

/**
 * 安全宣传栏管理分页查询
 */
export function querySafetyPublicityBoardPage(data: safetyCultureFilePageQuery) {
  return http.request({
    url: '/safetypublicitybulletinboard/query-page',
    method: 'post',
    data,
  });
}


/**
 * 添加安全宣传栏管理分页查询
 */
export function saveSafetyPublicityBoardPage(data) {
  return http.request({
    url: '/safetypublicitybulletinboard/save',
    method: 'post',
    data,
  });
}

/**
 * 安全宣传栏管理详情
 */
export function querySafetyPublicityBoardDetail(id: number) {
  return http.request<safetyCultureFile>({
    url: `/safetypublicitybulletinboard/detail?id=${id}`,
    method: 'get',
  });
}

/**
 * 更新安全宣传栏管理
 */
export function updateSafetyPublicityBoardPage(data) {
  return http.request({
    url: '/safetypublicitybulletinboard/update',
    method: 'put',
    data,
  });
}

/**
 * 删除安全宣传栏管理
 */
export function deleteSafetyPublicityBoardPage(id: number) {
  return http.request({
    url: `/safetypublicitybulletinboard/delete?id=${id}`,
    method: 'delete',
  });
}

/**
 * 导出事故案例管理文件
 */
export function exportAccidentCaseManagementFile(params?: ProductionSafetyFileExportQuery, classifyName?: string) {
  return http.request({
    url: '/accidentCase/export',
    method: 'post',
    data: params,
    params: classifyName ? { classifyName } : undefined,
    responseType: 'blob',
  }, {
    isTransformResponse: false,
  });
}

/**
 * 安全文化活动下发
 * PUT /api/safetyCulture/activity/assign
 */

export function activityDistribution(data: IssueHiddenDangerRequest) {
  return http.request({
    url: '/safetyCulture/activity/assign',
    method: 'put',
    data,
  });
}


/**
 * 添加安全文化活动反馈
 */
export function feedbackSafetyCultureActivityManagement(data: addSafetyCultureFilePageQuery) {
  return http.request({
    url: '/safetyCulture/activity/feedback',
    method: 'put',
    data,
  });
}
