该卡片组件旨在为用户提供一种直观且用户友好的方式来查找附近的药店。用户可以通过字母或数字选项卡筛选药店,并查看每个药店的基本信息,包括地址、联系方式和营业时间。
import { ref } from "vue";
const data = ref([
{
name: "Pharmacy 01",
address: "123 Main Street",
...
},
...
]);
使用 ref
钩子初始化药店数据。
<div class="grid grid-cols-3 gap-4">
<van-card
v-for="pharmacy in data"
:key="pharmacy.name"
:thumb="`https://source.unsplash.com/random/100x100`"
>
...
</van-card>
</div>
使用 v-for
指令遍历药店数据并创建药店列表。
<van-card
:thumb="`https://source.unsplash.com/random/100x100`"
>
<div class="flex justify-between items-center">
<div class="flex items-center">
<van-icon name="location-o" class="text-blue-500 text-2xl mr-2" />
<h3 class="text-gray-700 text-base font-semibold">
{{ pharmacy.name }}
</h3>
</div>
<van-icon name="arrow-right" class="text-gray-500 text-2xl" />
</div>
<div class="mt-2">
<p class="text-gray-500 text-sm">
{{ pharmacy.address }}
</p>
</div>
</van-card>
在药店卡中,添加了药店名称、地址、联系方式和营业时间等详细信息。
<van-tabs>
<van-tab>A-Z</van-tab>
<van-tab>0-9</van-tab>
</van-tabs>
使用 van-tabs
组件创建字母和数字选项卡。
import { computed } from "vue";
const filteredData = computed(() => {
if (activeTab === "A-Z") {
return data.value.sort((a, b) => a.name.localeCompare(b.name));
} else {
return data.value.sort((a, b) => parseInt(a.name.split(" ")[1]) - parseInt(b.name.split(" ")[1]));
}
});
使用 computed
钩子根据当前选定的选项卡对药店数据进行筛选。
通过结合 Vue.js 和 ECharts,我们成功地开发了一个功能强大且用户友好的药店查找卡片。该卡片提供了一种直观的方式来查找附近的药店,并提供了有关每个药店的重要信息。
未来,该卡片可以进一步扩展和优化,例如: