From 884fdb411b331ad2d4b254e38f7bb864499a7043 Mon Sep 17 00:00:00 2001
From: YOGO <1587218160@qq.com>
Date: Tue, 14 Apr 2026 17:05:57 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E6=89=8B=E6=8C=87?=
=?UTF-8?q?=E5=BC=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 10 ++-
package.json | 1 +
pages/index/index.vue | 185 +++++++++++++++++++++++++++++++++++++++++-
3 files changed, 191 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 608b7b0..ed48460 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,16 +1,17 @@
{
- "name": "elitesysclient",
+ "name": "城市迷你仓",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "金刚迷你仓",
+ "name": "城市迷你仓",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",
+ "driver.js": "^1.4.0",
"vconsole": "^3.15.1",
"vue3-google-map": "^0.20.0"
},
@@ -648,6 +649,11 @@
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.11.tgz",
"integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
},
+ "node_modules/driver.js": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/driver.js/-/driver.js-1.4.0.tgz",
+ "integrity": "sha512-Gm64jm6PmcU+si21sQhBrTAM1JvUrR0QhNmjkprNLxohOBzul9+pNHXgQaT9lW84gwg9GMLB3NZGuGolsz5uew=="
+ },
"node_modules/electron-to-chromium": {
"version": "1.4.819",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.819.tgz",
diff --git a/package.json b/package.json
index 1e0d5dc..842b0ee 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"dependencies": {
"crypto-js": "^4.2.0",
"dayjs": "^1.11.11",
+ "driver.js": "^1.4.0",
"vconsole": "^3.15.1",
"vue3-google-map": "^0.20.0"
},
diff --git a/pages/index/index.vue b/pages/index/index.vue
index be9b0a3..87e3b8e 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -87,7 +87,7 @@
-
+
租期
{{ state.month }}个月
@@ -116,7 +116,7 @@
-
+
租赁相关问题可联系客服咨询(电话:4008181813)
@@ -469,6 +469,8 @@ import { useLockApi } from '@/Apis/lock.js';
import { useOrderApi } from "@/Apis/order.js";
import { useI18n } from "vue-i18n";
import dayjs from 'dayjs';
+import { driver } from "driver.js";
+import "driver.js/dist/driver.css";
const getOrderApi = useOrderApi();
const getAuthApi = authInfoApi();
const getCouponApi = couponApi();
@@ -487,6 +489,9 @@ const unitPopupRef = ref(null);
const monthPopupRef = ref(null);
const payPopupRef = ref(null);
const calendars = ref(null);
+
+
+
// 导航栏高度
const navHeight = ref(0);
const language = ref("");
@@ -530,7 +535,110 @@ const state = ref({
tagStyle: {
p: 'margin: 0.8rem 0;',
},
+ startDriverTime: 0,
});
+
+const driverObj = driver({
+ showProgress: true,
+ doneBtnText: "完成",
+ closeBtnText: "跳过",
+ nextBtnText: "下一步",
+ prevBtnText: "上一步",
+ popoverClass: 'driverjs-theme',
+ // 关键:点击遮罩层不关闭
+ overlayClickBehavior: 'none',
+ // 结束后回到顶部
+ onDestroyStarted: () => {
+ window.scrollTo({
+ top: 0,
+ behavior: "smooth"
+ })
+ driverObj.destroy();
+ },
+
+ steps: [
+ {
+ element: '.selectSite',
+ popover: {
+ // title: '切换门店',
+ description: '可根据不同地区,切换对应门店'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ },
+ {
+ element: '.unitType',
+ popover: {
+ // title: '切换不同仓型',
+ description: '选择不同仓型,体积不同。'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ },
+ {
+ element: '.swiper .left',
+ popover: {
+ // title: '切换不同仓型',
+ description: '向左滑动。'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ },
+ {
+ element: '.swiper .right',
+ popover: {
+ // title: '切换不同仓型',
+ description: '向右滑动。'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ },
+ {
+ element: '.orderInfo',
+ popover: {
+ // title: '选择基本需求',
+ description: '选择仓型后,根据需求选择体积,租期。'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ },
+ {
+ element: '.zuqi',
+ popover: {
+ // title: '租期',
+ description: '租期越长,优惠越多。'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ },
+ {
+ element: '.kefu',
+ popover: {
+ // title: '联系客服',
+ description: '如有疑问,欢迎致电客服。'
+ },
+ onHighlighted: (el) => scrollToElement(el)
+ }
+ ]
+});
+
+// 滚动方法(单独写)
+function scrollToElement(element) {
+ if (!element) return
+
+ const top =
+ element.getBoundingClientRect().top +
+ window.pageYOffset -
+ 120; // 偏移量 可调
+
+ window.scrollTo({
+ top,
+ behavior: "smooth"
+ });
+}
+const startDriver = () => {
+ state.startDriverTime++;
+ if (state.startDriverTime > 1) {
+ return;
+ }
+ driverObj.drive();
+}
+
+
const showCalendar = () => {
calendars.value.open();
};
@@ -1008,6 +1116,9 @@ onLoad(async (params) => {
});
onUnload(() => {
uni.$off('homeSiteId');
+ if(driverObj){
+ driverObj.destroy();
+ }
})
onShow(() => {
@@ -1155,6 +1266,7 @@ const getUnitTypeBySiteId = () => {
// state.value.latitude = res.data[0]?.latitude;
// state.value.longitude = res.data[0]?.longitude;
// state.value.tags = res.data[0]?.tags ?? [];
+ startDriver();
}
}).finally(() => {
uni.hideLoading();
@@ -1184,9 +1296,76 @@ function changeMove(event) {
}
-