|
@@ -3,19 +3,23 @@
|
|
|
<TabbarSmall :tabList="['全部', '活动中', '未开始', '已结束']" @change="onTabbarChange"></TabbarSmall>
|
|
|
<div class="booking-list">
|
|
|
<article
|
|
|
- v-for="(item, index) in bookingList"
|
|
|
- :key="index"
|
|
|
+ v-for="(item, index) in bookingListShow"
|
|
|
+ :key="item.id"
|
|
|
:class="{
|
|
|
- disabled: !item.isActive,
|
|
|
+ disabled: item.status === 2,
|
|
|
}"
|
|
|
>
|
|
|
<div class="top-bar">
|
|
|
<div class="first-line">
|
|
|
<h2>{{item.name}}</h2>
|
|
|
- <button><span>查看</span><span>→</span></button>
|
|
|
+ <button
|
|
|
+ @click="onClickDetail(item)"
|
|
|
+ >
|
|
|
+ <span>查看</span><span>→</span>
|
|
|
+ </button>
|
|
|
</div>
|
|
|
<div class="time-line">
|
|
|
- 申请时间:{{item.date}} {{item.time}}
|
|
|
+ 申请时间:{{item.createTime}}
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="rest">
|
|
@@ -23,71 +27,116 @@
|
|
|
<img class="icon" src="@/assets/img/service/date.png" alt="" draggable="false">
|
|
|
<div class="text">
|
|
|
<span class="key">参观日期:</span>
|
|
|
- <span class="value">{{item.date}}</span>
|
|
|
+ <span class="value">{{item.day}}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="line">
|
|
|
<img class="icon" src="@/assets/img/service/time.png" alt="" draggable="false">
|
|
|
<div class="text">
|
|
|
<span class="key">参观时段:</span>
|
|
|
- <span class="value">{{item.time}}</span>
|
|
|
+ <span class="value">{{item.timeStr === 'AM' ? '8:30-12:00' : `12:00-18:30`}}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="line">
|
|
|
<img class="icon" src="@/assets/img/service/people.png" alt="" draggable="false">
|
|
|
<div class="text">
|
|
|
<span class="key">参观人数:</span>
|
|
|
- <span class="value">{{item.peopleNum}}人</span>
|
|
|
+ <span class="value">{{item.num}}人</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <button class="submit">
|
|
|
- {{item.isActive ? '取消预约' : '已结束'}}
|
|
|
+ <button class="cancel" @click="onClickCancel(item.id)">
|
|
|
+ {{item.status !== 2 ? '取消预约' : '已结束'}}
|
|
|
</button>
|
|
|
</div>
|
|
|
</article>
|
|
|
</div>
|
|
|
+
|
|
|
+ <BookingSuccess
|
|
|
+ v-if="isShowSuccess"
|
|
|
+ :bookingInfo="successDetail"
|
|
|
+ @close="isShowSuccess = false"
|
|
|
+ ></BookingSuccess>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import TabbarSmall from "@/components/TabbarSmall.vue";
|
|
|
+import { getBookingList, cancelBooking } from "@/api/serveAndMy.js";
|
|
|
+import {
|
|
|
+ Toast
|
|
|
+} from "vant";
|
|
|
+import BookingSuccess from "@/components/BookingSuccess.vue";
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
TabbarSmall,
|
|
|
+ BookingSuccess,
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
activeTabbarIdx: 0,
|
|
|
- bookingList: [
|
|
|
- {
|
|
|
- name: '赭山风景区',
|
|
|
- date: '2022-05-04 周六',
|
|
|
- time: '10:00-11:00',
|
|
|
- peopleNum: 1,
|
|
|
- isActive: true,
|
|
|
- },
|
|
|
- {
|
|
|
- name: '赭山风景区',
|
|
|
- date: '2022-05-04 周六',
|
|
|
- time: '10:00-11:00',
|
|
|
- peopleNum: 1,
|
|
|
- isActive: false,
|
|
|
- },
|
|
|
- {
|
|
|
- name: '赭山风景区',
|
|
|
- date: '2022-05-04 周六',
|
|
|
- time: '10:00-11:00',
|
|
|
- peopleNum: 1,
|
|
|
- isActive: true,
|
|
|
- },
|
|
|
- ],
|
|
|
+ bookingListRaw: [],
|
|
|
+ isShowSuccess: false,
|
|
|
+ successDetail: null,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ bookingListActive() {
|
|
|
+ return this.bookingListRaw.filter((item) => {
|
|
|
+ return item.status === 0
|
|
|
+ })
|
|
|
+ },
|
|
|
+ bookingListFuture() {
|
|
|
+ return this.bookingListRaw.filter((item) => {
|
|
|
+ return item.status === 1
|
|
|
+ })
|
|
|
+ },
|
|
|
+ bookingListOver() {
|
|
|
+ return this.bookingListRaw.filter((item) => {
|
|
|
+ return item.status === 2
|
|
|
+ })
|
|
|
+ },
|
|
|
+ bookingListShow() {
|
|
|
+ switch (this.activeTabbarIdx) {
|
|
|
+ case 0:
|
|
|
+ return this.bookingListRaw
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ return this.bookingListActive
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ return this.bookingListFuture
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ return this.bookingListOver
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
onTabbarChange(idx) {
|
|
|
this.activeTabbarIdx = idx
|
|
|
+ },
|
|
|
+ onClickDetail(item) {
|
|
|
+ this.successDetail = item
|
|
|
+ this.isShowSuccess = true
|
|
|
+ },
|
|
|
+ onClickCancel(id) {
|
|
|
+ cancelBooking(id).then(() => {
|
|
|
+ Toast('操作成功')
|
|
|
+ getBookingList().then((res) => {
|
|
|
+ this.bookingListRaw = res.data.data.records
|
|
|
+ })
|
|
|
+ })
|
|
|
}
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ globalUtils.loginOnNeed()
|
|
|
+ getBookingList().then((res) => {
|
|
|
+ this.bookingListRaw = res.data.data.records
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -111,7 +160,7 @@ export default {
|
|
|
background: #8E8E8E;
|
|
|
}
|
|
|
> .rest {
|
|
|
- > button.submit {
|
|
|
+ > button.cancel {
|
|
|
background: #8E8E8E;
|
|
|
}
|
|
|
}
|
|
@@ -190,7 +239,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- > button.submit {
|
|
|
+ > button.cancel {
|
|
|
position: absolute;
|
|
|
width: 21.6vw;
|
|
|
height: 6.4vw;
|