Преглед на файлове

站点联系方式,洗车指导改静态内容

skyline преди 1 ден
родител
ревизия
3084a7baf4
променени са 3 файла, в които са добавени 125 реда и са изтрити 56 реда
  1. 52 9
      car-wash-mp/src/components/station/index.vue
  2. 72 46
      car-wash-mp/src/pages-user/faq/index.vue
  3. 1 1
      car-wash-mp/src/pages-wash/station/index.vue

+ 52 - 9
car-wash-mp/src/components/station/index.vue

@@ -27,13 +27,18 @@
     </view>
 
     <view class="station_item-footer">
-      <view class="footer-row">
-        <uv-icon name="clock" size="14" color="#909399"></uv-icon>
-        <text class="business_hours">营业时间: {{ item.businessHours }}</text>
+      <view class="footer-info">
+        <view class="footer-row">
+          <uv-icon name="clock" size="14" color="#909399"></uv-icon>
+          <text class="business_hours">营业时间: {{ item.businessHours }}</text>
+        </view>
+        <view class="footer-row" v-if="item.parkingFee">
+          <text class="parking-icon">P</text>
+          <text class="parking-fee">{{ item.parkingFee }}</text>
+        </view>
       </view>
-      <view class="footer-row" v-if="item.parkingFee">
-        <text class="parking-icon">P</text>
-        <text class="parking-fee">{{ item.parkingFee }}</text>
+      <view class="footer-phone" v-if="showPhone && (item.serviceTel || item.stationTel)" @click.stop="handleCallStation">
+        <uv-icon name="phone" size="22" color="#C6171E"></uv-icon>
       </view>
     </view>
   </view>
@@ -46,7 +51,11 @@ import {fmtDictName} from "@/utils/common"
 const props = defineProps({
   item: {
     type: Object,
-  }
+  },
+  showPhone: {
+    type: Boolean,
+    default: false,
+  },
 })
 
 
@@ -61,6 +70,22 @@ const handleNavMap = (station: any) => {
   });
 }
 
+const handleCallStation = () => {
+  const phone = props.item.serviceTel || props.item.stationTel;
+  if (!phone) return;
+  uni.showModal({
+    title: "联系站点",
+    content: "是否拨打站点服务电话?",
+    confirmText: "拨打",
+    confirmColor: "#C6171E",
+    success: (res) => {
+      if (res.confirm) {
+        uni.makePhoneCall({ phoneNumber: phone });
+      }
+    },
+  });
+};
+
 const handleNavStation = (station: any) => {
   let currentPages = getCurrentPages();
   let currentPageRoute = currentPages[currentPages.length - 1].route;
@@ -224,11 +249,18 @@ defineExpose({
 
   &-footer {
     display: flex;
-    flex-direction: column;
-    gap: 10rpx;
+    justify-content: space-between;
+    align-items: center;
     padding-top: 16rpx;
     border-top: 1px solid $uni-border-color-light;
 
+    .footer-info {
+      display: flex;
+      flex-direction: column;
+      gap: 10rpx;
+      flex: 1;
+    }
+
     .footer-row {
       display: flex;
       align-items: center;
@@ -240,6 +272,17 @@ defineExpose({
       color: $uni-text-color-tertiary;
     }
 
+    .footer-phone {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: 68rpx;
+      height: 68rpx;
+      background: rgba($uni-color-primary, 0.08);
+      border-radius: 50%;
+      flex-shrink: 0;
+    }
+
     .parking-fee {
       font-size: $uni-font-size-sm;
       color: $uni-color-primary;

+ 72 - 46
car-wash-mp/src/pages-user/faq/index.vue

@@ -10,57 +10,52 @@
 </template>
 
 <script setup lang="ts">
-import {onHide, onShow} from "@dcloudio/uni-app";
 import {reactive} from "vue";
-import {body} from "@/utils/https"
-import {getServicePhone} from "@/utils/common";
 
+const guideContent = [
+  {
+    question: "如何使用自助洗车机?",
+    answer: "<p>使用Yeswash自助洗车非常简单,只需三步:</p><p><strong>1. 扫码启动</strong> — 打开小程序,扫描洗车机上的二维码,选择洗车套餐并支付。</p><p><strong>2. 开始洗车</strong> — 支付成功后,洗车机自动启动,按照设备屏幕提示将车辆驶入指定位置。</p><p><strong>3. 完成取车</strong> — 洗车结束后,设备会有语音和灯光提示,将车辆驶出即可。洗车记录会自动保存在「我的订单」中。</p>"
+  },
+  {
+    question: "洗车前需要做哪些准备?",
+    answer: "<p>为了确保洗车效果和车辆安全,请注意以下事项:</p><p>• 关闭所有车窗和天窗,确保完全密闭</p><p>• 收起外后视镜(如车辆支持电动折叠)</p><p>• 检查并收好车外天线(如有可拆卸天线请提前取下)</p><p>• 确认油箱盖已盖紧</p><p>• 车身如有明显大块泥沙、污物,建议先简单清理</p><p>• 车辆改装件(尾翼、行李架等)请确认安装牢固</p>"
+  },
+  {
+    question: "洗车过程中有哪些注意事项?",
+    answer: "<p>洗车过程中请务必注意:</p><p>• 车辆挂P挡、拉好手刹,发动机熄火</p><p>• 不要留在车内,在指定安全区域等候</p><p>• 不要在洗车机运行期间靠近或触摸设备</p><p>• 如遇设备异常或异响,请立即按下急停按钮</p><p>• 不要在雷雨天气使用洗车设备</p>"
+  },
+  {
+    question: "支持哪些支付方式?",
+    answer: "<p>目前Yeswash支持以下支付方式:</p><p>• <strong>账户余额</strong> — 充值后使用余额支付,方便快捷,推荐充值享受更多优惠</p><p>• <strong>微信支付</strong> — 直接调用微信支付完成付款</p><p>充值路径:进入「我的」→「我的钱包」→「充值」,选择金额完成充值即可。</p>"
+  },
+  {
+    question: "洗车后如何查看订单?",
+    answer: "<p>洗车完成后,订单会自动保存,您可以通过以下方式查看:</p><p>进入「我的」→「我的订单」,即可查看所有历史洗车记录。点击具体订单可查看详情,包括洗车时间、消费金额、洗车网点等信息。</p>"
+  },
+  {
+    question: "遇到问题如何联系客服?",
+    answer: "<p>如在使用过程中遇到任何问题,可通过以下方式联系我们:</p><p>• 进入「我的」→「联系我们」,直接拨打客服电话</p><p>• 如有设备故障或洗车质量问题,可通过「纠错上报」提交反馈,我们会尽快处理</p><p>客服工作时间:每日 7:00 - 22:00</p>"
+  },
+  {
+    question: "哪些车型不适合自助洗车?",
+    answer: "<p>以下类型的车辆可能不适合使用自助洗车机:</p><p>• 车身高度超过2.2米的车辆(如大型SUV、房车等)</p><p>• 车身宽度超过2.1米的车辆</p><p>• 装有非原厂大型改装件的车辆</p><p>• 车身存在严重破损或漆面大面积脱落的车辆</p><p>如不确定您的车辆是否适用,请先联系客服确认。</p>"
+  },
+  {
+    question: "洗车套餐有哪些选择?",
+    answer: "<p>不同网点提供的套餐可能略有差异,常见套餐包括:</p><p>• <strong>标准洗</strong> — 高压冲洗+泡沫洗+清水冲洗+风干,适合日常清洁</p><p>• <strong>精洗</strong> — 在标准洗基础上增加刷洗环节,清洁更彻底</p><p>• <strong>打蜡洗</strong> — 洗车同时进行水蜡护理,让车漆更亮丽</p><p>具体套餐和价格以扫码后显示的为准。</p>"
+  },
+];
+
+const state = reactive({
+  questions: guideContent,
+});
 
-const initState = () => ({
-  questions: [] as any[],
-  servicerPhone: "",
-})
-
-const state = reactive(initState())
-
-const handleChange = () => {
-
-}
-
-const close = () => {
-
-}
-
-const open = () => {
-
-}
-
-const call = () => {
-  uni.makePhoneCall({
-    phoneNumber: state.servicerPhone,
-  });
-};
-
-const toggle = (index: number) => {
-  state.questions = state.questions.map((item, i) => {
-    return {
-      ...item,
-      open: item.open ? false : i === index,
-    };
-  });
-};
+const handleChange = () => {};
 
-onShow(() => {
-  state.servicerPhone =getServicePhone();
-  // getApp<any>().globalData.config?.servicePhone;
-  body(`/faq/list`).then((res: any) => {
-    state.questions = res.list;
-  })
-});
+const close = () => {};
 
-onHide(() => {
-  Object.assign(state, initState());
-})
+const open = () => {};
 </script>
 
 <style lang="scss" scoped>
@@ -69,6 +64,37 @@ onHide(() => {
   background: $uni-bg-color-card;
   box-sizing: border-box;
   padding: 40rpx 32rpx;
+
+  // 折叠面板项间距
+  :deep(.uv-collapse-item) {
+    margin-bottom: 24rpx;
+  }
+
+  // 问题标题文字
+  :deep(.uv-cell__title-text) {
+    font-size: 30rpx !important;
+    font-weight: 500;
+    line-height: 1.6 !important;
+  }
+
+  // 答案内容容器
+  :deep(.uv-collapse-item__content__text) {
+    font-size: 28rpx !important;
+    line-height: 2 !important;
+    padding: 16rpx 15px 32rpx !important;
+  }
+
+  // uv-parse 富文本内的段落和文字
+  :deep(._p) {
+    font-size: 28rpx;
+    line-height: 2;
+    margin-bottom: 12rpx;
+  }
+
+  :deep(._strong) {
+    font-size: 28rpx;
+    line-height: 2;
+  }
 }
 
 </style>

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

@@ -22,7 +22,7 @@
 
       <!-- 站点信息 -->
       <view class="station-section">
-        <WashStation :item="state.station" ref="station_ref"></WashStation>
+        <WashStation :item="state.station" ref="station_ref" :showPhone="true"></WashStation>
       </view>
 
       <!-- 设备列表 -->