Bladeren bron

用户端小程序页面优化

skyline 1 week geleden
bovenliggende
commit
08106a5cab

+ 6 - 2
car-wash-mp/package.json

@@ -2,8 +2,12 @@
   "name": "uni-preset-vue",
   "version": "0.0.0",
   "scripts": {
-    "dev": "uni -p mp-weixin --force",
-    "build": "uni build -p mp-weixin",
+    "dev": "npx uni -p mp-weixin --force",
+    "build": "npx uni build -p mp-weixin",
+    "dev:mp-weixin": "npx uni -p mp-weixin",
+    "build:mp-weixin": "npx uni build -p mp-weixin",
+    "dev:h5": "npx uni -p h5",
+    "build:h5": "npx uni build -p h5",
     "type-check": "vue-tsc --noEmit"
   },
   "dependencies": {

+ 7 - 8
car-wash-mp/src/pages-order/detail/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="page-container">
+    <uv-navbar title="订单详情" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <scroll-view class="content-scroll" scroll-y="true">
       <!-- 金额头部 -->
       <view class="amount-header">
@@ -29,7 +30,7 @@
             <view class="info-value-wrap">
               <text class="info-value">{{ state.detail.orderId }}</text>
               <view class="copy-btn" @click.stop="handleCopy">
-                <uv-icon name="copy" size="14" color="#C6171E"></uv-icon>
+                <text>复制</text>
               </view>
             </view>
           </view>
@@ -343,14 +344,12 @@ const fallbackCopy = (orderId: string) => {
       }
 
       .copy-btn {
-        display: inline-flex;
-        align-items: center;
-        justify-content: center;
+        font-size: 22rpx;
+        color: $uni-color-primary;
+        padding: 4rpx 12rpx;
+        border-radius: 6rpx;
         background: rgba($uni-color-primary, 0.06);
-        padding: 12rpx;
-        border-radius: 12rpx;
-        min-width: 64rpx;
-        min-height: 64rpx;
+        flex-shrink: 0;
 
         &:active {
           background: rgba($uni-color-primary, 0.12);

+ 12 - 18
car-wash-mp/src/pages-order/list/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="page-container">
+    <uv-navbar title="洗车订单" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <!-- 空状态 -->
     <view class="empty-wrapper" v-if="!loading && (!state.orderList || state.orderList.length === 0)">
       <uv-empty mode="order" text="暂无订单记录" :marginTop="200"></uv-empty>
@@ -23,6 +24,7 @@
             <view class="order-number">
               <uv-icon name="order" size="16" color="#C6171E"></uv-icon>
               <text class="number-text">{{ item.orderId }}</text>
+              <text class="copy-btn" @click.stop="handleCopy(item.orderId)">复制</text>
             </view>
             <view
               class="order-status"
@@ -51,9 +53,6 @@
           </view>
 
           <view class="order-footer">
-            <view class="footer-copy" @click.stop="handleCopy(item.orderId)">
-              <uv-icon name="copy" size="18" color="#C6171E"></uv-icon>
-            </view>
             <view class="footer-detail">
               <text>查看详情</text>
               <uv-icon name="arrow-right" size="12" color="#C0C4CC"></uv-icon>
@@ -94,7 +93,6 @@ const state = reactive(initState());
 const loading = ref(false);
 
 onShow(() => {
-  uni.setNavigationBarTitle({ title: '洗车订单' });
   const gd = getApp<any>().globalData;
   if (!gd.token) return;
   loadOrderList(true);
@@ -232,6 +230,15 @@ const handleCopy = (orderId: string) => {
       gap: 8rpx;
       flex: 1;
 
+      .copy-btn {
+        font-size: 22rpx;
+        color: $uni-color-primary;
+        padding: 4rpx 12rpx;
+        border-radius: 6rpx;
+        background: rgba($uni-color-primary, 0.06);
+        flex-shrink: 0;
+      }
+
       .number-text {
         font-size: 26rpx;
         color: $uni-text-color-dark;
@@ -326,22 +333,9 @@ const handleCopy = (orderId: string) => {
     padding: 16rpx 28rpx;
     border-top: 1rpx solid $uni-border-color-light;
     display: flex;
-    justify-content: space-between;
+    justify-content: flex-end;
     align-items: center;
 
-    .footer-copy {
-      display: flex;
-      align-items: center;
-      gap: 6rpx;
-      font-size: 24rpx;
-      color: $uni-color-primary;
-      padding: 8rpx 0;
-
-      &:active {
-        opacity: 0.7;
-      }
-    }
-
     .footer-detail {
       display: flex;
       align-items: center;

+ 1 - 0
car-wash-mp/src/pages-order/pay/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="pt-60 pb-20 flex-center">
+    <uv-navbar title="支付详情" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <button
         class="avatar"
         open-type="chooseAvatar"

+ 1 - 0
car-wash-mp/src/pages-user/agreement/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="user-agreement">
+    <uv-navbar title="用户协议" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <div class="agreement-container">
       <div class="agreement-content">
         <view style="text-indent: 20px">

+ 1 - 0
car-wash-mp/src/pages-user/contact/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="pt-60 pb-20 flex-center">
+    <uv-navbar title="联系我们" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <button
         class="avatar"
         open-type="chooseAvatar"

+ 1 - 0
car-wash-mp/src/pages-user/faq/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="page">
+    <uv-navbar title="洗车指导" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <uv-collapse @change="handleChange" @close="close" @open="open">
       <uv-collapse-item :title="(index+1)+'.'+item.question" :name="item.question"  v-for="(item, index) in state.questions" :key="index">
         <uv-parse :content="item.answer" :selectable="true"></uv-parse>

+ 1 - 0
car-wash-mp/src/pages-user/fav/index.vue

@@ -1,4 +1,5 @@
 <template>
+  <uv-navbar title="我的收藏" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
   <view class="pl-20 pr-20" v-if="list && list.length">
     <view class="mt-20" v-for="(item, index) in list" :key="index">
 

+ 1 - 0
car-wash-mp/src/pages-user/feedback/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="page">
+    <uv-navbar title="纠错上报" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <view class="sheet">
       <uv-list border>
         <uv-list-item

+ 1 - 0
car-wash-mp/src/pages-user/login/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="login-container">
+    <uv-navbar title="登录" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <!-- Logo区域 -->
     <div class="logo-box">
       <img src="@/static/logo.png" alt="logo" class="logo">

+ 1 - 0
car-wash-mp/src/pages-user/policy/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="user-agreement">
+    <uv-navbar title="隐私政策" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <div class="agreement-container">
       <div class="agreement-content">
         <view style="text-indent: 20px">

+ 1 - 0
car-wash-mp/src/pages-user/profile/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="plate-page">
+    <uv-navbar title="我的车辆" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <!-- 车牌输入区域 -->
     <view class="plate-input-section">
       <view class="plate-input-header">

+ 9 - 12
car-wash-mp/src/pages-user/wallet/index.vue

@@ -1,12 +1,9 @@
 <template>
   <view class="page">
+    <uv-navbar title="我的钱包" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <!-- 钱包头部 -->
     <view class="wallet-header">
       <view class="wallet-header_top">
-        <view class="wallet-header_title">
-          <uv-icon name="bag" color="#FFFFFF" size="24"></uv-icon>
-          <text class="wallet-title-text">我的钱包</text>
-        </view>
         <view class="wallet-header_refund" @click="handleRefund">
           <uv-icon name="kefu-ermai" color="#C6171E" size="16"></uv-icon>
           <text>退款</text>
@@ -246,7 +243,7 @@ const handleClickDetail = (walletDetail: any) => {
 
 // 钱包头部
 .wallet-header {
-  background: linear-gradient(135deg, $uni-color-primary 0%, $uni-color-primary-light 100%);
+  background: $uni-bg-color-card;
   margin: 20rpx;
   border-radius: 24rpx;
   padding: 32rpx 28rpx;
@@ -260,7 +257,7 @@ const handleClickDetail = (walletDetail: any) => {
     right: -50rpx;
     width: 200rpx;
     height: 200rpx;
-    background: rgba(255, 255, 255, 0.1);
+    background: rgba($uni-color-primary, 0.03);
     border-radius: 50%;
   }
 
@@ -271,13 +268,13 @@ const handleClickDetail = (walletDetail: any) => {
     left: -80rpx;
     width: 260rpx;
     height: 260rpx;
-    background: rgba(255, 255, 255, 0.06);
+    background: rgba($uni-color-primary, 0.02);
     border-radius: 50%;
   }
 
   &_top {
     display: flex;
-    justify-content: space-between;
+    justify-content: flex-end;
     align-items: center;
     margin-bottom: 32rpx;
     position: relative;
@@ -301,7 +298,7 @@ const handleClickDetail = (walletDetail: any) => {
     display: flex;
     align-items: center;
     gap: 6rpx;
-    background-color: $uni-text-color-inverse;
+    background-color: rgba($uni-color-primary, 0.08);
     color: $uni-color-primary;
     padding: 10rpx 24rpx;
     border-radius: 32rpx;
@@ -323,7 +320,7 @@ const handleClickDetail = (walletDetail: any) => {
     z-index: 1;
 
     .balance-label {
-      color: rgba(255, 255, 255, 0.85);
+      color: $uni-text-color-hint;
       font-size: 24rpx;
       margin-bottom: 12rpx;
       letter-spacing: 1rpx;
@@ -334,14 +331,14 @@ const handleClickDetail = (walletDetail: any) => {
       align-items: baseline;
 
       .balance-symbol {
-        color: $uni-text-color-inverse;
+        color: $uni-text-color-dark;
         font-size: 36rpx;
         font-weight: $uni-font-weight-semibold;
         margin-right: 8rpx;
       }
 
       .balance-number {
-        color: $uni-text-color-inverse;
+        color: $uni-text-color-dark;
         font-size: 72rpx;
         font-weight: $uni-font-weight-bold;
         line-height: 1;

+ 3 - 12
car-wash-mp/src/pages-user/wallet/recharge.vue

@@ -1,6 +1,6 @@
 <template>
-  <uv-navbar leftIcon="arrow-left" @leftClick="handleLeftClick" title="充值" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }"></uv-navbar>
-  <view class="container" :style="{marginTop: containerMarginTop}">
+  <uv-navbar title="充值" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
+  <view class="container">
     <view class="title">选择充值金额</view>
 
     <view class="amount-list">
@@ -61,16 +61,9 @@ const initState = () => ({
 });
 
 const state = reactive(initState());
-const statusBarHeight = ref(0);
 const paying = ref(false);
 
-const containerMarginTop = computed(() => {
-  return `${statusBarHeight.value + 44}px`;
-});
-
 onLoad((options: any) => {
-  const systemInfo = uni.getSystemInfoSync();
-  statusBarHeight.value = systemInfo.statusBarHeight || 0;
   if (options.stationId) {
     state.stationId = options.stationId;
   }
@@ -86,9 +79,7 @@ onHide(() => {
   state.rechargeItem = { grantsAmount: 0 };
 });
 
-const handleLeftClick = () => {
-  uni.navigateBack();
-};
+
 
 const handleRechargeClick = (recharge: any, idx: number) => {
   state.chosenIdx = idx;

+ 1 - 0
car-wash-mp/src/pages-user/wallet/refund.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="page">
+    <uv-navbar title="我的退款" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <view class="block">
       <view class="fs-28 color-000 fw-500">退款金额</view>
       <view

+ 46 - 16
car-wash-mp/src/pages-wash/device/index.vue

@@ -1,5 +1,6 @@
 <template>
   <view class="page-container">
+    <uv-navbar title="洗车机" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
     <scroll-view class="content-scroll" scroll-y="true">
       <!-- 设备信息卡片 -->
       <view class="device-info-card">
@@ -35,10 +36,10 @@
           >
             <view class="button-icon">
               <view v-if="state.device?.state==='idle'" class="icon-play">
-                <uv-icon name="play-circle-fill" size="48" color="#FFFFFF"></uv-icon>
+                <uv-icon name="play-circle-fill" size="56" color="#FFFFFF"></uv-icon>
               </view>
               <view v-else class="icon-stop">
-                <uv-icon name="pause-circle-fill" size="48" color="#FFFFFF"></uv-icon>
+                <uv-icon name="pause-circle-fill" size="56" color="#FFFFFF"></uv-icon>
               </view>
             </view>
             <text class="button-text" v-if="state.device?.state==='idle'">启动设备</text>
@@ -418,11 +419,22 @@ const handleGotoRechage = () => {
   }
 }
 
+@keyframes idle-glow {
+  0%, 100% {
+    opacity: 0;
+    transform: scale(1);
+  }
+  50% {
+    opacity: 1;
+    transform: scale(1.04);
+  }
+}
+
 // 控制按钮卡片
 .control-card {
   margin: 0 30rpx 24rpx;
   @include card-interactive(24rpx);
-  padding: 60rpx 32rpx;
+  padding: 48rpx 32rpx;
 
   .control-wrapper {
     display: flex;
@@ -430,17 +442,17 @@ const handleGotoRechage = () => {
     align-items: center;
 
     .control-button {
-      width: 240rpx;
-      height: 240rpx;
+      width: 300rpx;
+      height: 300rpx;
       border-radius: 50%;
       background: linear-gradient(135deg, $uni-color-primary 0%, $uni-color-primary-light 100%);
       display: flex;
       flex-direction: column;
       justify-content: center;
       align-items: center;
-      gap: 8rpx;
-      box-shadow: 0 12rpx 32rpx rgba(198, 23, 30, 0.3);
-      transition: all 0.15s ease;
+      gap: 6rpx;
+      box-shadow: 0 16rpx 40rpx rgba(198, 23, 30, 0.35);
+      transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);
       position: relative;
       overflow: hidden;
 
@@ -454,12 +466,29 @@ const handleGotoRechage = () => {
         background: rgba(255, 255, 255, 0.1);
         border-radius: 50%;
         transform: scale(0);
-        transition: transform 0.3s ease;
+        transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
+      }
+
+      &::after {
+        content: '';
+        position: absolute;
+        top: -8rpx;
+        left: -8rpx;
+        right: -8rpx;
+        bottom: -8rpx;
+        border-radius: 50%;
+        border: 2rpx solid rgba(198, 23, 30, 0.15);
+        opacity: 0;
+        transition: opacity 2s ease;
+      }
+
+      &:not(.control-button--active)::after {
+        animation: idle-glow 2.5s ease-in-out infinite;
       }
 
       &:active {
         transform: scale(0.95);
-        box-shadow: 0 6rpx 20rpx rgba(198, 23, 30, 0.3);
+        box-shadow: 0 8rpx 24rpx rgba(198, 23, 30, 0.35);
 
         &::before {
           transform: scale(1);
@@ -467,7 +496,7 @@ const handleGotoRechage = () => {
       }
 
       .button-icon {
-        margin-bottom: 4rpx;
+        margin-bottom: 2rpx;
         display: flex;
         align-items: center;
         justify-content: center;
@@ -482,22 +511,23 @@ const handleGotoRechage = () => {
       }
 
       .button-text {
-        font-size: 32rpx;
+        font-size: 34rpx;
         font-weight: $uni-font-weight-semibold;
         color: $uni-text-color-inverse;
+        letter-spacing: 0.5rpx;
       }
 
       .button-tip {
-        font-size: 20rpx;
-        color: rgba(255, 255, 255, 0.85);
+        font-size: 22rpx;
+        color: rgba(255, 255, 255, 0.75);
       }
 
       &.control-button--active {
         background: linear-gradient(135deg, $uni-color-primary-light 0%, #FF6B6B 100%);
-        box-shadow: 0 12rpx 32rpx rgba(232, 69, 69, 0.3);
+        box-shadow: 0 16rpx 40rpx rgba(232, 69, 69, 0.35);
 
         &:active {
-          box-shadow: 0 6rpx 20rpx rgba(232, 69, 69, 0.3);
+          box-shadow: 0 8rpx 24rpx rgba(232, 69, 69, 0.35);
         }
       }
     }

+ 2 - 35
car-wash-mp/src/pages-wash/station/index.vue

@@ -1,21 +1,9 @@
 <template>
   <view class="page-container">
-    <!-- 自定义导航栏 -->
-    <view class="navbar-fixed">
-      <uv-navbar
-        leftIcon="arrow-left"
-        @leftClick="handleLeftClick"
-        title="门店详情"
-        bgColor="#C6171E"
-        leftIconColor="#FFFFFF"
-        :titleStyle="{ color: '#FFFFFF' }"
-        :autoBack="true"
-        height="88rpx"
-      ></uv-navbar>
-    </view>
+    <uv-navbar title="门店详情" bgColor="#C6171E" leftIconColor="#FFFFFF" :titleStyle="{ color: '#FFFFFF' }" :autoBack="true" :placeholder="true"></uv-navbar>
 
     <!-- 内容区域 -->
-    <scroll-view class="content-scroll" scroll-y="true" :style="scrollStyle">
+    <scroll-view class="content-scroll" scroll-y="true">
       <!-- 轮播图 -->
       <view class="swiper-wrapper" v-if="swiperImages.length">
         <swiper
@@ -141,15 +129,6 @@ const initState = () => ({
 
 const state = reactive(initState());
 
-// 同步计算内容区顶部偏移,避免依赖未设置的 CSS 自定义属性
-const scrollStyle = computed(() => {
-  const systemInfo = uni.getSystemInfoSync();
-  const statusBarH = systemInfo.statusBarHeight || 0;
-  return {
-    paddingTop: `${statusBarH + 44 + 8}px`,
-  };
-});
-
 // 安全解析轮播图片列表
 const swiperImages = computed(() => {
   const pictures = state.station.pictures;
@@ -157,10 +136,6 @@ const swiperImages = computed(() => {
   return pictures.split("|").filter(Boolean);
 });
 
-const handleLeftClick = () => {
-  uni.navigateBack();
-};
-
 onLoad((options: any) => {
   const id = options?.id;
   const cached = getApp<any>().globalData.last?.station;
@@ -241,14 +216,6 @@ const getDeviceStatusClass = (stateVal: string) => {
   position: relative;
 }
 
-.navbar-fixed {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  z-index: 999;
-}
-
 .content-scroll {
   flex: 1;
   width: 100%;

+ 28 - 44
car-wash-mp/src/pages.json

@@ -39,49 +39,43 @@
         {
           "path": "profile/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "我的车辆",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "我的车辆"
           }
         },
         {
           "path": "contact/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "联系我们",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "联系我们"
           }
         },
         {
           "path": "faq/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "洗车指导",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "洗车指导"
           }
         },
         {
           "path": "fav/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "我的收藏",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "我的收藏"
           }
         },
         {
           "path": "feedback/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "纠错上报",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "纠错上报"
           }
         },
         {
           "path": "wallet/index",
           "style": {
-            "navigationStyle": "default",
+            "navigationStyle": "custom",
             "navigationBarTitleText": "我的钱包",
-            "navigationBarBackgroundColor": "#ffffff",
             "enablePullDownRefresh": true
           }
         },
@@ -89,40 +83,35 @@
           "path": "wallet/recharge",
           "style": {
             "navigationStyle": "custom",
-            "navigationBarTitleText": "充值",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationBarTitleText": "充值"
           }
         },
         {
           "path": "wallet/refund",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "我的退款",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "我的退款"
           }
         },
         {
           "path": "login/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "登录",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "登录"
           }
         },
         {
           "path": "agreement/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "用户协议",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "用户协议"
           }
         },
         {
           "path": "policy/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "隐私政策",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "隐私政策"
           }
         }
       ]
@@ -134,16 +123,14 @@
           "path": "station/index",
           "style": {
             "navigationStyle": "custom",
-            "navigationBarTitleText": "网点",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationBarTitleText": "网点"
           }
         },
         {
           "path": "device/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "洗车机",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "洗车机"
           }
         },
         {
@@ -162,9 +149,8 @@
         {
           "path": "list/index",
           "style": {
-            "navigationStyle": "default",
+            "navigationStyle": "custom",
             "navigationBarTitleText": "订单列表",
-            "navigationBarBackgroundColor": "#ffffff",
             "enablePullDownRefresh": true,
             "onReachBottomDistance": 100
           }
@@ -172,17 +158,15 @@
         {
           "path": "detail/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "订单详情",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "订单详情"
           }
         },
         {
           "path": "pay/index",
           "style": {
-            "navigationStyle": "default",
-            "navigationBarTitleText": "支付详情",
-            "navigationBarBackgroundColor": "#ffffff"
+            "navigationStyle": "custom",
+            "navigationBarTitleText": "支付详情"
           }
         }
       ]

+ 8 - 0
car-wash-mp/src/pages/index/index.vue

@@ -115,6 +115,7 @@
         <view class="popup-title">停车优惠</view>
         <view class="popup-content">
           <text class="popup-desc">长按识别二维码获取停车优惠</text>
+          <text class="popup-warning">未满最低消费无法领取停车优惠</text>
           <image 
             class="qrcode-image" 
             show-menu-by-longpress 
@@ -650,6 +651,13 @@ page {
       line-height: 1.6;
     }
 
+    .popup-warning {
+      font-size: 28rpx;
+      color: #e53e3e;
+      text-align: center;
+      font-weight: 700;
+    }
+
     .qrcode-image {
       width: 480rpx;
       height: 480rpx;