You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

261 lines
5.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="reservation-page">
<view class="fixed-nav">
<NavBar title="过闸预约" />
</view>
<!-- 船舶信息卡片1水位等 -->
<view class="card">
<view class="card-title">船舶信息</view>
<view class="water-info-row">
<view class="water-info-col">
<text class="label">今日水位</text>
<text class="value blue">4.2m</text>
</view>
<view class="water-info-col">
<text class="label">水深</text>
<text class="value blue">3.8m</text>
</view>
<view class="water-info-col">
<text class="label">限高</text>
<text class="value blue">7.5m</text>
</view>
</view>
</view>
<!-- 船舶信息卡片2详细信息 -->
<view class="card">
<view class="card-title">船舶信息</view>
<view class="info-list">
<view class="info-row">
<text class="info-label">总长度</text>
<view class="info-value">45 <text class="arrow"></text></view>
</view>
<view class="info-row">
<text class="info-label">型宽</text>
<view class="info-value">8 <text class="arrow"></text></view>
</view>
<view class="info-row">
<text class="info-label">型深</text>
<view class="info-value">3.5 <text class="arrow"></text></view>
</view>
<view class="info-row">
<text class="info-label">编号</text>
<view class="info-value">ZJ12345 <text class="arrow"></text></view>
</view>
<view class="info-row">
<text class="info-label">载重</text>
<view class="info-value">500 <text class="arrow"></text></view>
</view>
<view class="info-row">
<text class="info-label">类型</text>
<view class="info-value">货船 <text class="arrow"></text></view>
</view>
</view>
</view>
<!-- 航行方向选择 -->
<view class="card">
<view class="card-title">航行方向</view>
<view class="direction-row">
<button class="direction-btn" :class="{ active: direction === 'north' }" @click="setDirection('north')"> </button>
<button class="direction-btn" :class="{ active: direction === 'south' }" @click="setDirection('south')"> </button>
</view>
</view>
<!-- -->
<view class="notice-row">
<text class="notice-title">预约须知</text>
<view class="notice-check">
<checkbox />
<text>我已阅读并同意过闸预约服务协议</text>
</view>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
export default {
name: 'ReservationPage',
components: { NavBar },
data() {
return {
direction: 'north'
}
},
methods: {
setDirection(dir) {
this.direction = dir
}
}
}
</script>
<style scoped>
.reservation-page {
background: linear-gradient(180deg, #cbe6ff 0%, #f6faff 100%);
min-height: 100vh;
padding-bottom: 80px;
padding-top: 90px;
font-family: 'SourceHanSansCN', 'PingFang SC', 'Microsoft YaHei', sans-serif;
}
.fixed-nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
background: linear-gradient(180deg, #cbe6ff 0%, #f6faff 100%);
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 16px 10px 16px;
background: linear-gradient(180deg, #cbe6ff 0%, #f6faff 100%);
padding-top: 7vh;
}
.back-btn, .more-btn {
font-size: 24px;
color: #333;
}
.title {
font-size: 22px;
font-weight: bold;
color: #222;
}
.card {
background: #fff;
border-radius: 18px;
margin: 0 16px 16px 16px;
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
padding: 18px 18px 12px 18px;
margin-top: 20px;
}
.card-title {
font-size: 16px;
font-weight: 600;
margin-bottom: 12px;
color: #222;
}
.water-info-row {
display: flex;
justify-content: center;
align-items: flex-start;
width: fit-content;
margin: 0 auto;
gap: 150rpx;
}
.water-info-col {
display: flex;
flex-direction: column;
align-items: flex-start;
text-align: left;
}
.label {
color: #888;
font-size: 15px;
margin-bottom: 2px;
text-align: left;
}
.value.blue {
color: #217aff;
font-size: 14px;
text-align: left;
}
.info-list {
border-top: 1px solid #f0f0f0;
}
.info-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 0;
border-bottom: 1px solid #f0f0f0;
}
.info-row:last-child {
border-bottom: none;
}
.info-label {
color: #222;
font-size: 16px;
}
.info-value {
color: #222;
font-size: 16px;
display: flex;
align-items: center;
}
.arrow {
color: #bdbdbd;
font-size: 18px;
margin-left: 4px;
}
.direction-row, .batch-row {
display: flex;
margin-bottom: 8px;
justify-content: center;
}
.direction-btn, .batch-btn {
border: none;
border-radius: 24px;
padding: 0;
font-size: 14px;
background: #f2f6fa;
color: #888;
height: 24px;
width: 110px;
display: flex;
align-items: center;
justify-content: center;
margin: 0 20rpx;
}
.direction-btn.active, .batch-btn.active {
background: #217aff;
color: #fff;
}
.notice-row {
margin: 24px 16px 0 16px;
}
.notice-title {
font-size: 14px;
font-weight: 600;
margin-bottom: 8px;
color: #222;
}
.notice-check {
display: flex;
align-items: center;
margin-top: 8px;
font-size: 13px;
color: #888;
}
.tabbar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
height: 60px;
background: #fff;
display: flex;
border-top: 1px solid #eaeaea;
z-index: 10;
}
.tab-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: #888;
font-size: 14px;
}
.tab-item.active {
color: #217aff;
}
.icon {
font-size: 22px;
margin-bottom: 2px;
}
</style>