使用场景:时间默认值可选用 指定默认值 或 时间快捷选项。指定默认值是用户选定的某个固定时间,时间快捷选项是相对于打开应用的时间,并非固定时间,如选中了昨天,在8月20日打开应用时,时间回显8月19日,在9月30日打开应用时,时间回显9月29日。且这两种默认值的可用状态是互斥的,只可二选一。
此处只列举格式为YYYYMMDD(年月日)的情况


单个时间点的配置场景
微信截图_20200820181401.png
选择固定默认值
微信截图_20200820173048.png
选择快捷选项
微信截图_20200820173059.png
时间区间的配置场景
微信截图_20200820181312.png
固定默认值
微信截图_20200820173122.png
选择快捷选项
微信截图_20200820173142.png


回显实现方式:

// isRange 是否是时间区间
// timeSize 时间粒度(精确度) Y-年 M-月 w-周 D-日
// previousNumber 时间区间 近*天(周/月/年)
// hasThisYear 时间区间 是否包含当天(本周/本月/本年)
let defaultValue    // 要回填的最终值
let date1   // 时间区间 包含当天(本周/本月/本年)
let date2   // 时间区间 不包含当天(本周/本月/本年)

if (!isRange) {
  switch (timeSize) {
    case 'Y':
      defaultValue = moment().year(moment().year() - 1).startOf('year') // 去年
      break
    case 'M':
      defaultValue = moment().month(moment().month() - 1).startOf('month') // 上月
      break
    case 'w':
      defaultValue = moment().week(moment().week() - 1).startOf('week') // 上周
      break
    case 'D':
      defaultValue = moment().subtract(1, 'days') // 昨天
      break
    default:
      defaultValue = moment().subtract(1, 'days')
      break
  }
} else {
  switch (timeSize) {
    case 'Y':
      date1 = [moment().year(moment().year() - previousNumber + 1).startOf('year'), moment().endOf('year')]
      date2 = [moment().year(moment().year() - previousNumber).startOf('year'), moment().year(moment().year() - 1).endOf('year')]
      break
    case 'M':
      date1 = [moment().month(moment().month() - previousNumber + 1).startOf('month'), moment().endOf('month')]
      date2 = [moment().month(moment().month() - previousNumber).startOf('month'), moment().month(moment().month() - 1).endOf('month')]
      break
    case 'w':
      date1 = [moment().week(moment().week() - previousNumber + 1).startOf('week'), moment().endOf('week')]
      date2 = [moment().week(moment().week() - previousNumber).startOf('week'), moment().week(moment().week() - 1).endOf('week')] 
      break
    case 'D':
      date1 = [moment().subtract(previousNumber - 1, 'days'), moment()]
      date2 = [moment().subtract(previousNumber, 'days'), moment().subtract(1, 'days')]
      break
    default:
      date1 = [moment().subtract(previousNumber - 1, 'days'), moment()]
      date2 = [moment().subtract(previousNumber, 'days'), moment().subtract(1, 'days')]
      break
  }
  // 包含当天,取date1;不包含当天,取date2
  defaultValue = hasThisYear ? date1 : date2
}

之后回填defaultValue到时间组件中便可


坂田银八
24 声望2 粉丝

前端底层打工仔