// 导入通用基础类型
import type { BaseQuery } from '../dashboard/types';

// 用户信息接口
export interface UserInfo {
  userId: number;
  userName: string;
  nickName: string;
  deptName?: string;
  isRead?: string;
  readTime?: string;
}

// 与后端VO保持完全一致的接口
export interface NoticeVO extends BaseEntity {
  notificationId: number;
  templateId?: number;
  type?: string;
  title: string;
  content: string;
  sourceType?: string;
  sourceId?: string;
  priority?: string;
  messageSubtype?: string;
  expirationDate?: string;
  actions?: string;
  attachments?: string;
  receiverType?: 'all' | 'specific'; // 接收人类型：all-全部人员, specific-指定人员
  status: string;
  createByName?: string;
  remark?: string;

  // 扩展字段（业务使用）
  userIds?: number[]; // 接收用户ID列表
  receiverUsers?: UserInfo[]; // 接收用户详细信息列表
  totalUsers?: number; // 总接收人数
  readUsers?: number; // 已读人数
  validDays?: number; // 有效天数
  channels?: string; // 通知渠道
}

/**
 * 公告查询参数
 */
export interface NoticeQuery extends BaseQuery {
  title?: string; // 改为title
  createByName?: string;
  status?: string;
}

// 表单接口 - 与后端BO保持一致
export interface NoticeForm {
  notificationId: number | string | undefined;
  templateId?: number;
  type?: string;
  title: string;
  content: string;
  sourceType?: string;
  sourceId?: string;
  priority?: string;
  messageSubtype?: string;
  expirationDate?: string;
  actions?: string;
  attachments?: string;
  receiverType: 'all' | 'specific'; // 接收人类型：all-全部人员, specific-指定人员
  status: string;
  remark: string;

  // 业务扩展字段
  userIds: number[]; // 接收用户ID列表
  validDays: number; // 有效天数
  createByName: string; // 创建人名称
  channels: string[]; // 通知渠道（数组形式，提交时转为JSON）
}

// 接收人类型选项
export interface ReceiverTypeOption {
  value: 'all' | 'specific';
  label: string;
  description: string;
}

// 用户选项接口（用于下拉选择）
export interface UserOption {
  userId: number;
  userName: string;
  nickName: string;
  deptName?: string;
  email?: string;
  phonenumber?: string;
  status?: string;
}
