<template>
<div class="select-time-wrapper">
<h5 class="titie">选择自提时间</h5>
<div class="select-time-content flex">
<ul class="days">
<li
v-for="(item, i) in days"
:key="i"
class="select-day"
:class="{ current: currentDay === i }"
@click="currentDay = i"
>
{{ item }}
</li>
</ul>
<ul class="time-range">
<li
v-for="(item, i) in displayTimeRange"
:key="i"
class="select-time"
@click="handleTimeClick(i)"
>
<span class="txt">{{ item }}</span>
<i class="icon"></i>
</li>
</ul>
</div>
</div>
</template> <script>
import dayjs from 'dayjs'; const checkNum = num => (num < 10 ? `0${num}` : String(num));
const suffixZero = str => `${str}:00`;
const translateToDays = {
0: '周日',
1: '周一',
2: '周二',
3: '周三',
4: '周四',
5: '周五',
6: '周六'
};
const defaultSelectedDay = 0; export default {
name: 'SelectTime',
data() {
const date = dayjs();
const tomorrow = date.add(1, 'day');
const theDayAfterTomorrow = date.add(2, 'day');
const days = [
`今日(${translateToDays[date.day()]})`,
`明日(${translateToDays[tomorrow.day()]})`,
`${theDayAfterTomorrow.format('M-DD')}(${
translateToDays[theDayAfterTomorrow.day()]
})`
]; return {
days,
currentDay: defaultSelectedDay,
initialArr: [],
maxHour: 22,
minHour: 9,
selectedTime: ''
};
},
computed: {
displayTimeRange() {
const { currentDay, initialArr, minHour, maxHour } = this;
const currentHour = new Date().getHours();
const sliceStart =
currentHour < minHour || currentHour + 1 > maxHour
? 0
: currentHour + 1 - minHour; return currentDay === defaultSelectedDay
? initialArr.slice(sliceStart)
: [...initialArr];
}
},
created() {
this.initialArr = this.generateArr();
},
methods: {
generateArr() {
const { minHour, maxHour } = this;
var arr = [];
for (let i = minHour; i < maxHour; i++) {
arr.push(
[suffixZero(checkNum(i)), '-', suffixZero(checkNum(i + 1))].join('')
);
}
return arr;
},
handleTimeClick(i) {
this.selectedTime = this.displayTimeRange[i];
}
}
};
</script> <style lang="scss" scoped>
.select-time-wrapper {
.titie {
padding: 10px;
text-align: center;
}
.select-time-content {
display: flex; .days {
width: 120px;
background-color: #ddd;
text-align: center;
}
.time-range {
flex: 1;
height: 200px;
overflow-y: scroll;
-webkit-overflow-scrolling: smooth;
}
.select-day,
.select-time {
cursor: pointer;
}
.select-day {
&.current {
background-color: #fff;
}
}
}
}
</style>

  

最新文章

  1. JavaScript的个人学习随手记(一)
  2. Hibernate大福利 下载链接
  3. abstract 与 interface
  4. DSP280x的数模转换使用
  5. 利用ICSharpCode.SharpZipLib.Zip进行文件压缩
  6. poj 3980 取模运算
  7. Css3动态伪类
  8. Example013操作样式
  9. gunicorn 信号处理(SIGHUP,SIGUSR2)
  10. Android Studio 如何打JAR包
  11. android开发学习 ------- 关于getSupportFragmentManager()不可用的问题
  12. Introduction to Parallel Computing
  13. VBA读写ini 配置文件
  14. Hbuilder护眼主题分享
  15. python读取配置文件的方式
  16. 简单修改文件名python脚本
  17. Hbase 学习(五) 调优
  18. Kotlin 资料
  19. Spring源码分析(二十三)BeanFactory的后处理
  20. 再起航,我的学习笔记之JavaScript设计模式05(简单工厂模式)

热门文章

  1. RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭
  2. windows下ch340 usb转串口芯片的驱动从哪里下载?
  3. TensorFlow 学习(3)——MNIST机器学习入门
  4. 数据库开源框架之sqlcipher加密数据库
  5. (转)MongoDB 分片集群技术
  6. IntelliJ IDEA 2019 注册码 (激活码) 有效期至2100年
  7. Access access中,查询字段是否存
  8. Xcode里如何修改类的名字
  9. SQL优化手段
  10. 【转载】深度学习中softmax交叉熵损失函数的理解