日历展示预约设置信息
前面已经完成了预约设置功能,现在就需要通过日历的方式展示出来每天设置的预约人数。
在页面中已经完成了日历的动态展示,我们只需要查询当前月份的预约设置信息并展示到日历中即可,同时在日历中还需要展示已经预约的人数,效果如下:
完善页面#
使用静态数据调试#
为了能够快速看到效果,我们可以先使用静态数据模拟,然后再改为发送ajax请求查询数据库。
实现步骤:
(1)预约设置数据对应的模型数据为leftobj,在initData方法最后为leftobj模型数据赋值:

this.leftobj = [ { date: 1, number: 120, reservations: 1 }, { date: 3, number: 120, reservations: 1 }, { date: 4, number: 120, reservations: 120 }, { date: 6, number: 120, reservations: 1 }, { date: 8, number: 120, reservations: 1 } ];
其中date表示日期,number表示可预约人数,reservations表示已预约人数
(2)使用VUE的v-for标签遍历上面的leftobj模型数据,展示到日历上:

<template> <template v-for="obj in leftobj"> <template v-if="obj.date == dayobject.day.getDate()"> <template v-if="obj.number > obj.reservations"> <div class="usual"> <p>可预约{{obj.number}}人</p> <p>已预约{{obj.reservations}}人</p> </div> </template> <template v-else> <div class="fulled"> <p>可预约{{obj.number}}人</p> <p>已预约{{obj.reservations}}人</p> <p>已满</p> </div> </template> </template> </template> <button v-if="dayobject.day > today" @click="handleOrderSet(dayobject.day)" class="orderbtn">设置</button> </template>
发送ajax获取动态数据#
将上面的静态模拟数据去掉,改为发送ajax请求,根据当前页面对应的月份查询数据库获取预约设置信息,将查询结果赋值给leftobj模型数据
//发送ajax请求,根据当前页面对应的月份查询预约设置信息 axios.post( "/ordersetting/getOrderSettingByMonth.do?date="+this.currentYear+'-'+this.currentMonth ).then((response)=>{ if(response.data.flag){ //为模型数据赋值,通过双向绑定展示到日历中 this.leftobj = response.data.data; }else{ this.$message.error(response.data.message); } });
后台代码#
Controller#
在OrderSettingController中提供getOrderSettingByMonth方法,根据月份查询预约设置信息

/** * 根据日期查询预约设置数据(获取指定日期所在月份的预约设置数据) * @param date * @return */ @RequestMapping("/getOrderSettingByMonth") public Result getOrderSettingByMonth(String date){//参数格式为:2019-03 try{ List<Map> list = orderSettingService.getOrderSettingByMonth(date); //获取预约设置数据成功 return new Result(true,MessageConstant.GET_ORDERSETTING_SUCCESS,list); }catch (Exception e){ e.printStackTrace(); //获取预约设置数据失败 return new Result(false,MessageConstant.GET_ORDERSETTING_FAIL); } }
服务接口#
在OrderSettingService服务接口中扩展方法getOrderSettingByMonth
public List<Map> getOrderSettingByMonth(String date);//参数格式为:2019-03
服务实现类#
在OrderSettingServiceImpl服务实现类中实现方法getOrderSettingByMonth

//根据日期查询预约设置数据 public List<Map> getOrderSettingByMonth(String date) {//2019-3 String dateBegin = date + "-1";//2019-3-1 String dateEnd = date + "-31";//2019-3-31 Map map = new HashMap(); map.put("dateBegin",dateBegin); map.put("dateEnd",dateEnd); List<OrderSetting> list = orderSettingDao.getOrderSettingByMonth(map); List<Map> data = new ArrayList<>(); for (OrderSetting orderSetting : list) { Map orderSettingMap = new HashMap(); orderSettingMap.put("date",orderSetting.getOrderDate().getDate());//获得日期(几号) orderSettingMap.put("number",orderSetting.getNumber());//可预约人数 orderSettingMap.put("reservations",orderSetting.getReservations());//已预约人数 data.add(orderSettingMap); } return data; }
Dao接口#
在OrderSettingDao接口中扩展方法getOrderSettingByMonth
public List<OrderSetting> getOrderSettingByMonth(Map date);
Mapper映射文件#
在OrderSettingDao.xml文件中扩展SQL
<!--根据月份查询预约设置信息--> <select id="getOrderSettingByMonth" parameterType="hashmap" resultType="com.itheima.pojo.OrderSetting"> select * from t_ordersetting where orderDate between #{dateBegin} and #{dateEnd} </select>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)