vue 日期面板_vue+element展示时间面板,显示可选和禁用的时间

vue+element实现时间选择

最近有个需求,客户A在预约18号技师时,要根据18号技师的服务时间,自动展示哪些时间段可以预约,哪些时间段18号技师正在服务,而正在服务的时间段,客户A是不能预约的,页面效果如下:(灰色为禁选,白色为可选择,蓝色为选中)

在网上找了半天,也没有找到合适的日期插件,但又要实现这个效果,只能自己造一个了。

我的实现思路:

先将时间段(我的是从8点到夜里0点,每半个小时一个值)放入数组,页面使用button按钮,通过vue的v-for循环显示和赋值,根据条件对每个按钮设置颜色,是否禁用。

HTML部分

{{item.time}}

数据格式

type:控制按钮样式(element按钮样式,info为禁用状态,primary为选中状态," "为可选状态)

time:按钮显示的时间

flag:判断按钮是否禁用

timeList= [

{'type': '', "time": "8:00", 'flag': false},

{'type': '', "time": "8:30", 'flag': false},

{'type': '', "time": "9:00", 'flag': false},

{'type': 'primary', "time": "9:30", 'flag': false},

{'type': 'info', "time": "10:00", 'flag': true},

]

按钮选择事件

参数为索引,和时间值

selectTime(index, time) {

//先查询是否有已经选则的时间,有的话先取消原来的,再赋值新选中的

let oldIndex;

//没有时返回-1

oldIndex = this.timeList.findIndex((item) => {

return item.type === 'primary';

});

//有已经选中的值,取消

if (oldIndex > -1) {

this.timeList[oldIndex].type = '';

}

//根据索引和时间对选择的时间修改样式

let obj = {};

obj = this.timeList.find((item) => {

return item.time === time;

});

this.timeList[index].type = 'primary';

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值