// 开始时间禁用范围(日期)
// data 是表单数据 time 是当前时间 endTime 结束时间
function startDisabledDate(data, endTime, time) {
  const end = data[endTime];
  if (!end) return false; // 无结束时间，不禁用
  // 将结束时间和当前时间都转换为“当天0点”，仅比较年月日
  const endDay = new Date(end);
  endDay.setHours(0, 0, 0, 0);
  const currentDay = new Date(time);
  currentDay.setHours(0, 0, 0, 0);
  return currentDay > endDay; // 仅当天0点更晚时禁用
}

// 结束时间禁用范围(日期)
// data 是表单数据 time 是当前时间 startTime 开始时间
function endDisabledDate(data, startTime, time) {
  const start = data[startTime];
  if (!start) return false; // 无开始时间，不禁用
  // 将开始时间和当前时间都转换为“当天0点”，仅比较年月日
  const startDay = new Date(start);
  startDay.setHours(0, 0, 0, 0);
  const currentDay = new Date(time);
  currentDay.setHours(0, 0, 0, 0);
  return currentDay < startDay; // 仅当天0点更早时禁用
}

// 新增：限制同一天内的时间必须晚于开始时间
function endDisabledTime(data, startTime, date) {
  const start = data[startTime];
  if (!start) {
    return {
      disabledHours: () => [],
      disabledMinutes: () => [],
      disabledSeconds: () => []
    };
  }
  const startDate = new Date(start);
  const currentDate = new Date(date);

  // 判断是否是同一天
  if (
    currentDate.getFullYear() === startDate.getFullYear() &&
    currentDate.getMonth() === startDate.getMonth() &&
    currentDate.getDate() === startDate.getDate()
  ) {
    const startHour = startDate.getHours();
    const startMinute = startDate.getMinutes();
    const startSecond = startDate.getSeconds();
    return {
      // 禁用比 startHour 早的小时
      disabledHours: () => Array.from({ length: startHour }, (_, i) => i),
      // 若小时相同，禁用比 startMinute 早的分钟
      disabledMinutes: (hour) =>
        hour === startHour
          ? Array.from({ length: startMinute }, (_, i) => i)
          : [],
      // 若小时和分钟都相同，禁用比 startSecond 早的秒
      disabledSeconds: (hour, minute) =>
        hour === startHour && minute === startMinute
          ? Array.from({ length: startSecond }, (_, i) => i)
          : []
    };
  } else {
    // 不同天，时间无限制
    return {
      disabledHours: () => [],
      disabledMinutes: () => [],
      disabledSeconds: () => []
    };
  }
}

export default {
  startDisabledDate,
  endDisabledDate,
  endDisabledTime
}