在打车应用中,用户在完成行程后需要查看费用并支付。为了提供直观且易于使用的体验,可以创建一个打车费用结算卡片,其中包含行程摘要、评分、小费选项和支付按钮。
此代码片段展示了一个使用 Vue.js 构建的打车费用结算卡片。它具有以下基本功能:
1. 布局和样式
卡片的布局使用 flexbox,分为三个部分:头部、主体和底部。头部显示行程摘要和总费用,主体包含评分和打赏选项,底部包含支付按钮。
<div class="flex flex-col justify-between h-full bg-gray-100">
<div class="flex items-center justify-between px-4 py-2 border-b border-gray-200">
<div class="flex items-center">
<van-icon name="arrow-left" size="20px" color="#333" />
<div class="ml-2 text-lg font-semibold">Ride Summary</div>
</div>
<div class="text-lg font-semibold">
<span class="text-red-500">~</span>
$17
</div>
</div>
<div class="flex-1 px-4 py-6">...</div>
<div class="px-4 py-2 border-t border-gray-200">...</div>
</div>
2. 行程摘要
行程摘要包含起点、终点、距离和费用信息。它使用 Vue.js 的插槽功能从父组件接收数据。
<div class="flex items-center justify-between">
<div class="flex items-center">
<div class="w-10 h-10 rounded-full bg-gray-300"></div>
<div class="ml-2">
<div class="text-lg font-semibold">John Doe</div>
<div class="text-sm text-gray-500">5km</div>
</div>
</div>
<div class="text-lg font-semibold">$15</div>
</div>
3. 评分
评分功能使用 Vuetify 的 v-rate
组件。它允许用户从 1 到 5 评分行程。
<div class="mt-4">
<van-rate
v-model="rate"
max="5"
size="20px"
color="#FFC107"
inactive-color="#ccc"
/>
</div>
4. 小费选项
小费选项包括预设金额和自定义金额输入框。预设金额使用 Vue.js 的 v-for
指令从 tips
数组中循环生成。
<div class="mt-6">
<div class="text-lg font-semibold">ADD TIP</div>
<div class="flex items-center mt-2">
<van-button
v-for="item in tips"
:key="item"
:plain="true"
class="mr-2"
>{{ item }}</van-button
>
</div>
<div class="mt-2">
<van-field
v-model="customTip"
type="number"
placeholder="Enter tip"
class="w-full"
/>
</div>
</div>
5. 支付按钮
支付按钮使用 Vuetify 的 v-btn
组件。它是一个带有圆角和块状外观的按钮。
<div class="px-4 py-2 border-t border-gray-200">
<van-button round block type="danger" class="text-lg font-semibold"
>Pay $17</van-button
>
</div>
开发这段代码让我对 Vue.js 构建交互式 UI 组件有了更深入的了解。它还展示了如何将第三方库集成到 Vue.js 应用程序中。
未来,此卡片功能可以进一步扩展和优化,例如: