/**
 * 告警计划事件类型
 * @example
  1、2、3: { }
  4、5、8: { start_time: string; end_time: string }
   6、7: { start_time: string; end_time: string; count: number }
  9: { time_threshold: number }
  * @enum {string} 1 stay_detection 停留事件
  * @enum {string} 2 retention_detection 滞留事件
  * @enum {string} 3 toileting_detection 如厕事件
  * @enum {string} 4 toileting_frequency 如厕频次统计
  * @enum {string} 5 night_toileting_frequency 夜间如厕频次统计
  * @enum {string} 8 bathroom_stay_frequency 卫生间频次统计
  * @enum {string} 6 toileting_frequency_abnormal 如厕频次异常
  * @enum {string} 7 night_toileting_frequency_abnormal 起夜异常
  * @enum {string} 9 target_absence 异常消失
 */
export type EventValParam = {
  start_time?: string // 统计开始时间
  end_time?: string // 统计结束时间
  count?: number // 异常阈值
  time_threshold?: number // 异常消失时间阈值(单位：秒)
}

interface AlarmTimePlan {
  id?: number // 	主键ID
  startDate: string // 开始时间
  stopDate: string // 结束时间
  weekdays?: string // 每周的生效日期[1,2,3,6,7]
  monthDays?: string // 每月的生效日期[1,2,3,15,20,25,26,27]
  timeRange: string // 	每日生效时间[{"start_time": "00:00","end_time": "12:00"},{"start_time": "18:00","end_time": "23:59"}, ...]
  createId?: number // 创建人ID
  updateId?: number // 更新人ID
  createTime?: string // 创建时间
  updateTime?: string // 更新时间
  isDeleted?: 0 | 1 // 是否删除(number)  0: 否  1: 是
  remark?: string // 备注
}
/**
 * 保存告警计划请求参数
 */
export interface AlarmPlanParams {
  alarmPlanId?: number // 告警计划ID
  uuid?: string // 告警计划UUID
  name: string // 告警计划名称
  clientId: string // 设备ID
  region: string // 检测区域 '[left, top, width, height]'
  eventVal: number // 告警事件值
  param: string // 告警参数 需要根据 eventVal 传对应的参数
  linkagePushWechatService: SwitchType // 是否开启服务号消息推送 1:开启 0:关闭
  alarmTimePlan: AlarmTimePlan // 告警时间计划
  enable: 0 | 1 // 是否启用(number) 1: 启用 0: 禁用
}

/**
 * 保存告警计划响应数据
 */
export interface AlarmPlanResponseData extends Omit<AlarmPlanParams, 'eventVal'> {
  eventVal: string // 告警事件值
  id: number // 告警计划ID
  uuid: string // 告警计划UUID
  createTime: string // 创建时间
  updateTime: string // 更新时间
}

/**
 * 告警事件类型下拉列表响应数据
 */
export interface AlarmEventTypeListResponseData {
  id: number // 事件类型ID
  eventStr: string // 事件字符串
  eventVal: string // 事件值
  eventDesc: string // 事件描述
  remark: string // 备注
}

/**
 * 告警计划查询响应数据
 */
export interface AlarmPlanListResponseData {
  id: number // 告警计划ID
  uuid: string // 告警计划UUID
  name: string // 告警计划名称
  clientId: string // 设备ID
  region: string // 检测区域 '[left, top, width, height]'
  eventVal: string // 告警事件值
  param: string // 告警参数 需要根据 eventVal 传对应的参数
  linkagePushWechatService: SwitchType // 是否开启服务号消息推送 1:开启 0:关闭
  alarmTimePlan: AlarmTimePlan // 告警时间计划
  enable: 0 | 1 // 是否启用(number) 1: 启用 0: 禁用
  createTime: string // 创建时间
  updateTime: string // 更新时间
  remark: string // 备注
}

/**
 * 告警计划模板查询响应数据rows
 */
export interface AlarmPlanTemplateItem {
  id: number // 告警计划ID
  uuid: string // 告警计划UUID
  name: string // 告警计划名称
  enable: 0 | 1 // 是否启用(number) 1: 启用 0: 禁用
  region: string // 检测区域 '[left, top, width, height]'
  eventVal: string // 告警事件值
  clientId: string // 设备ID
  param: string // 告警参数 需要根据 eventVal 传对应的参数
  linkagePushWechatService: SwitchType // 是否开启服务号消息推送 1:开启 0:关闭
  alarmTimePlanTpl: AlarmTimePlan // 告警时间计划
  createTime: string // 创建时间
  updateTime: string // 更新时间
  remark: string // 备注
}

/**
 * 告警计划模板查询响应数据
 */
export interface AlarmPlanTemplateListResponseData {
  rows: AlarmPlanTemplateItem[]
  total: number
  pageNum: number
  pageSize: number
  outTotalPageNum: number
  totalPageNum: number
}

/**
 * 告警计划模板保存请求参数
 */
export interface AlarmPlanTemplateParams {
  id?: number // 告警表主键ID
  name: string // 告警计划名称
  enable: 0 | 1 // 是否启用(number) 1: 启用 0: 禁用
  region?: string // 检测区域 '[left, top, width, height]'
  eventVal: number // 告警事件值
  param: string // 告警参数 需要根据 eventVal 传对应的参数s
  thresholdTime?: number // 异常消失时间阈值(单位：秒)
  mergeTime?: number // 	归并时间（秒）
  linkagePushWechatService: SwitchType // 是否开启服务号消息推送 1:开启 0:关闭
  alarmTimePlanTpl: AlarmTimePlan // 告警时间计划
  remark?: string // 备注
}
