1 回复
针对您提出的uni-app酒店预订模板需求,以下是一个简化的代码案例,涵盖了酒店列表展示、酒店详情查看以及预订功能的基本框架。请注意,这只是一个基础示例,实际项目中可能需要根据具体需求进行扩展和优化。
1. 项目结构
假设项目结构如下:
- pages/
- hotel-list/
- hotel-list.vue
- hotel-detail/
- hotel-detail.vue
- store/
- index.js (Vuex状态管理,用于存储酒店数据等)
- main.js
- App.vue
2. main.js
import Vue from 'vue'
import App from './App'
import store from './store'
import uniViews from 'uni-ui'
Vue.use(uniViews)
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
store,
...App
})
app.$mount()
3. store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
hotels: [] // 存储酒店数据
},
mutations: {
SET_HOTELS(state, hotels) {
state.hotels = hotels
}
},
actions: {
fetchHotels({ commit }) {
// 模拟异步获取酒店数据
setTimeout(() => {
commit('SET_HOTELS', [
{ id: 1, name: 'Hotel A', price: 200 },
{ id: 2, name: 'Hotel B', price: 300 }
])
}, 1000)
}
}
})
4. pages/hotel-list/hotel-list.vue
<template>
<view>
<button @click="goToDetail(hotel)" v-for="hotel in hotels" :key="hotel.id">
{{ hotel.name }} - ${{ hotel.price }}
</button>
</view>
</template>
<script>
export default {
computed: {
hotels() {
return this.$store.state.hotels
}
},
methods: {
goToDetail(hotel) {
uni.navigateTo({
url: `/pages/hotel-detail/hotel-detail?id=${hotel.id}`
})
}
},
mounted() {
this.$store.dispatch('fetchHotels')
}
}
</script>
5. pages/hotel-detail/hotel-detail.vue
<template>
<view>
<text>Hotel Detail Page</text>
<!-- 根据传入的id展示具体酒店详情 -->
</view>
</template>
<script>
export default {
onLoad(options) {
// 根据options.id获取并展示酒店详情
}
}
</script>
以上代码提供了一个基本的酒店预订模板框架,包括酒店列表展示和详情查看的页面跳转逻辑。预订功能的具体实现需要结合实际业务逻辑,可能涉及表单提交、支付接口调用等步骤,这里不再展开。