本代码用于开发一个电影票购买页面,用户可以在此页面浏览影片信息、选择影院、座位和购买数量,并完成订单确认。
该页面主要包括以下功能:
<template>
<div class="bg-gray-900 h-screen">
...
</div>
</template>
页面采用 Flex 布局,整体分为头部导航栏、选项卡、订单预览区和底部导航栏。
<van-tabs v-model="activeTab">
<van-tab title="Description">Description</van-tab>
<van-tab title="Showtime">Showtime</van-tab>
<van-tab title="Buy Tickets">Buy Tickets</van-tab>
</van-tabs>
使用 Vuetify 的 VanTabs 组件实现选项卡切换,通过 v-model
绑定 activeTab
变量控制当前激活的选项卡。
<div class="bg-gray-800 h-full">
...
</div>
订单预览区包含影片海报、标题、评分、时长和类型等信息,通过 CSS 样式控制其布局和外观。
<van-datetime-picker
v-model="selectedDate"
type="date"
:min-date="minDate"
:max-date="maxDate"
class="text-white"
/>
使用 VanDatetimePicker 组件实现日期选择,通过 v-model
绑定 selectedDate
变量控制选中的日期,并通过 min-date
和 max-date
属性设置可选日期范围。
<van-radio-group v-model="selectedCinema" class="text-white">
<van-radio
v-for="cinema in cinemas"
:key="cinema.id"
:label="cinema.name"
/>
</van-radio-group>
使用 VanRadioGroup 组件实现影院选择,通过 v-model
绑定 selectedCinema
变量控制选中的影院,并通过 v-for
循环遍历可选择的影院列表。
<van-checkbox-group v-model="selectedSeats" class="text-white">
<van-checkbox
v-for="seat in seats"
:key="seat.id"
:label="seat.name"
/>
</van-checkbox-group>
使用 VanCheckboxGroup 组件实现座位选择,通过 v-model
绑定 selectedSeats
变量控制选中的座位,并通过 v-for
循环遍历可选择的座位列表。
<van-stepper
v-model="selectedTickets"
:min="1"
:max="5"
class="text-white"
/>
使用 VanStepper 组件实现票数选择,通过 v-model
绑定 selectedTickets
变量控制选中的票数,并通过 min
和 max
属性设置可选票数范围。
<div class="flex justify-between items-center">
<div class="text-white text-lg font-bold">Standard - 1x</div>
<div class="text-white text-lg font-bold">18$</div>
</div>
根据选择的影院、座位和票数计算总价,并使用 CSS 样式控制其布局和外观。
<van-button
round
block
type="primary"
class="text-white"
@click="confirmOrder"
>
Confirm Order
</van-button>
使用 VanButton 组件实现确认订单按钮,通过 @click
事件监听器触发 confirmOrder
方法。
<van-tabbar v-model="activeTab" class="bg-gray-900 text-white fixed bottom-0">
...
</van-tabbar>
使用 VanTabbar 组件实现底部导航栏,通过 v-model
绑定 activeTab
变量控制当前激活的选项卡,并通过 fixed
和 bottom-0
属性将其固定在页面底部。