From 16caad1c40cb126e362f5e893f3d3677f0b50a41 Mon Sep 17 00:00:00 2001 From: duanshuwen Date: Tue, 11 Aug 2026 22:05:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(mini-app):=20=E5=AE=9E=E7=8E=B0=E7=8E=A9?= =?UTF-8?q?=E6=B3=95=E3=80=81=E7=AE=A1=E5=AE=B6=E9=A1=B5=E9=9D=A2=E4=B8=8E?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=BB=84=E4=BB=B6=E5=8C=96=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增管家服务全套页面、组件与模拟数据 - 新增玩法分类页面与线路展示组件 - 重构首页为可复用组件模块 - 更新路由配置替换旧目的地页面路由 - 移除废弃页面与客服弹窗冗余逻辑 - 更新项目文档与gitignore配置 --- .gitignore | 1 + AGENTS.md | 2 + README.md | 156 ++++++- .../assets/concierge/wonderq-concierge-qr.png | Bin 0 -> 633 bytes WonderQ-MiniAPP/src/components/BottomNav.vue | 50 +-- .../src/components/SupportSheet.vue | 395 ------------------ WonderQ-MiniAPP/src/components/TopHeader.vue | 8 +- WonderQ-MiniAPP/src/lib/support.ts | 52 --- WonderQ-MiniAPP/src/pages.json | 43 +- WonderQ-MiniAPP/src/pages/benefits/index.vue | 56 --- WonderQ-MiniAPP/src/pages/booking/index.vue | 195 --------- WonderQ-MiniAPP/src/pages/campaign/index.vue | 68 --- .../concierge/components/ConciergeAdvisor.vue | 47 +++ .../components/ConciergeContactSheet.vue | 94 +++++ .../concierge/components/ConciergeHero.vue | 10 + .../components/ConciergePrinciples.vue | 29 ++ .../concierge/components/conciergeTypes.ts | 10 + WonderQ-MiniAPP/src/pages/concierge/index.vue | 80 ++++ WonderQ-MiniAPP/src/pages/demand/index.vue | 180 -------- .../src/pages/destination-picker/index.vue | 85 ---- .../src/pages/destination/index.vue | 103 ----- WonderQ-MiniAPP/src/pages/detail/index.vue | 9 +- .../home/components/HomeExperienceCard.vue | 35 ++ .../home/components/HomeExperienceList.vue | 23 + .../home/components/HomeHeroCarousel.vue | 49 +++ .../home/components/HomeTeamBuilding.vue | 43 ++ .../pages/home/components/HomeVehicleGrid.vue | 39 ++ .../home/components/HomeWildArchives.vue | 48 +++ .../home/components/homeExperienceData.ts | 30 ++ .../home/components/homeTeamBuildingData.ts | 35 ++ .../home/components/homeWildArchivesData.ts | 33 ++ WonderQ-MiniAPP/src/pages/home/index.vue | 99 ++--- WonderQ-MiniAPP/src/pages/login/index.vue | 5 +- WonderQ-MiniAPP/src/pages/mine/index.vue | 6 +- .../play/components/PlayCategorySidebar.vue | 26 ++ .../pages/play/components/PlayRouteCard.vue | 26 ++ .../src/pages/play/components/PlayTopBar.vue | 14 + .../src/pages/play/components/playData.ts | 87 ++++ WonderQ-MiniAPP/src/pages/play/index.vue | 44 ++ WonderQ-MiniAPP/src/pages/search/index.vue | 71 ---- docs/public-api.md | 2 +- 41 files changed, 1016 insertions(+), 1372 deletions(-) create mode 100644 WonderQ-MiniAPP/public/assets/concierge/wonderq-concierge-qr.png delete mode 100644 WonderQ-MiniAPP/src/components/SupportSheet.vue delete mode 100644 WonderQ-MiniAPP/src/lib/support.ts delete mode 100644 WonderQ-MiniAPP/src/pages/benefits/index.vue delete mode 100644 WonderQ-MiniAPP/src/pages/booking/index.vue delete mode 100644 WonderQ-MiniAPP/src/pages/campaign/index.vue create mode 100644 WonderQ-MiniAPP/src/pages/concierge/components/ConciergeAdvisor.vue create mode 100644 WonderQ-MiniAPP/src/pages/concierge/components/ConciergeContactSheet.vue create mode 100644 WonderQ-MiniAPP/src/pages/concierge/components/ConciergeHero.vue create mode 100644 WonderQ-MiniAPP/src/pages/concierge/components/ConciergePrinciples.vue create mode 100644 WonderQ-MiniAPP/src/pages/concierge/components/conciergeTypes.ts create mode 100644 WonderQ-MiniAPP/src/pages/concierge/index.vue delete mode 100644 WonderQ-MiniAPP/src/pages/demand/index.vue delete mode 100644 WonderQ-MiniAPP/src/pages/destination-picker/index.vue delete mode 100644 WonderQ-MiniAPP/src/pages/destination/index.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/HomeExperienceCard.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/HomeExperienceList.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/HomeHeroCarousel.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/HomeTeamBuilding.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/HomeVehicleGrid.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/HomeWildArchives.vue create mode 100644 WonderQ-MiniAPP/src/pages/home/components/homeExperienceData.ts create mode 100644 WonderQ-MiniAPP/src/pages/home/components/homeTeamBuildingData.ts create mode 100644 WonderQ-MiniAPP/src/pages/home/components/homeWildArchivesData.ts create mode 100644 WonderQ-MiniAPP/src/pages/play/components/PlayCategorySidebar.vue create mode 100644 WonderQ-MiniAPP/src/pages/play/components/PlayRouteCard.vue create mode 100644 WonderQ-MiniAPP/src/pages/play/components/PlayTopBar.vue create mode 100644 WonderQ-MiniAPP/src/pages/play/components/playData.ts create mode 100644 WonderQ-MiniAPP/src/pages/play/index.vue delete mode 100644 WonderQ-MiniAPP/src/pages/search/index.vue diff --git a/.gitignore b/.gitignore index 3d379e0..2b3446a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules/ dist/ +docs/ apps/*/dist/ .env .env.local diff --git a/AGENTS.md b/AGENTS.md index 1dfc082..e7348ab 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -271,6 +271,8 @@ yarn dev:mp-weixin - `WonderQ-MiniAPP` 使用 Vue 3 SFC、` - - diff --git a/WonderQ-MiniAPP/src/components/TopHeader.vue b/WonderQ-MiniAPP/src/components/TopHeader.vue index b0b6c1e..5facdc4 100644 --- a/WonderQ-MiniAPP/src/components/TopHeader.vue +++ b/WonderQ-MiniAPP/src/components/TopHeader.vue @@ -9,7 +9,7 @@ + :class="search ? 'w-[calc(100%-136px)]' : 'w-[calc(100%-88px)]'"> {{ title }} {{ subtitle }} @@ -20,11 +20,6 @@ aria-label="搜索" @click="$emit('search')"> - - - @@ -40,7 +35,6 @@ defineProps<{ defineEmits<{ back: []; search: []; - support: []; }>(); diff --git a/WonderQ-MiniAPP/src/lib/support.ts b/WonderQ-MiniAPP/src/lib/support.ts deleted file mode 100644 index 4c0f569..0000000 --- a/WonderQ-MiniAPP/src/lib/support.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { SUPPORT_PHONE } from "./types"; - -const WECOM_CUSTOMER_SERVICE_URL = String(import.meta.env.VITE_WECOM_CUSTOMER_SERVICE_URL ?? ""); -const WECOM_CORP_ID = String(import.meta.env.VITE_WECOM_CORP_ID ?? ""); - -type CustomerServiceOptions = { - extInfo: { url: string }; - corpId: string; - success?: (result: unknown) => void; - fail?: (error: unknown) => void; - complete?: (result: unknown) => void; -}; - -type WechatRuntime = { - openCustomerServiceChat?: (options: CustomerServiceOptions) => void; -}; - -export function openOnlineSupport() { - const runtime = (uni as unknown as WechatRuntime).openCustomerServiceChat - ? (uni as unknown as WechatRuntime) - : ((globalThis as { wx?: WechatRuntime }).wx ?? {}); - - if (!runtime.openCustomerServiceChat) { - uni.showToast({ title: "请在微信内联系服务管家", icon: "none" }); - return false; - } - - if (!WECOM_CUSTOMER_SERVICE_URL || !WECOM_CORP_ID) { - console.info("Missing WeCom customer service env: VITE_WECOM_CUSTOMER_SERVICE_URL or VITE_WECOM_CORP_ID."); - uni.showToast({ title: "客服配置待完善", icon: "none" }); - return false; - } - - runtime.openCustomerServiceChat({ - extInfo: { url: WECOM_CUSTOMER_SERVICE_URL }, - corpId: WECOM_CORP_ID, - fail(error) { - console.warn("Failed to open WeCom customer service.", error); - uni.showToast({ title: "暂未打开客服", icon: "none" }); - }, - }); - return true; -} - -export function callSupport() { - uni.makePhoneCall({ - phoneNumber: SUPPORT_PHONE, - fail() { - uni.showToast({ title: `可拨打 ${SUPPORT_PHONE}`, icon: "none" }); - }, - }); -} diff --git a/WonderQ-MiniAPP/src/pages.json b/WonderQ-MiniAPP/src/pages.json index c5d7164..1745d97 100644 --- a/WonderQ-MiniAPP/src/pages.json +++ b/WonderQ-MiniAPP/src/pages.json @@ -8,51 +8,16 @@ } }, { - "path": "pages/destination/index", + "path": "pages/play/index", "style": { - "navigationBarTitleText": "目的地", + "navigationBarTitleText": "玩法", "navigationStyle": "custom" } }, { - "path": "pages/destination-picker/index", + "path": "pages/concierge/index", "style": { - "navigationBarTitleText": "选择目的地", - "navigationStyle": "custom" - } - }, - { - "path": "pages/search/index", - "style": { - "navigationBarTitleText": "搜索结果", - "navigationStyle": "custom" - } - }, - { - "path": "pages/campaign/index", - "style": { - "navigationBarTitleText": "活动", - "navigationStyle": "custom" - } - }, - { - "path": "pages/demand/index", - "style": { - "navigationBarTitleText": "提交需求", - "navigationStyle": "custom" - } - }, - { - "path": "pages/benefits/index", - "style": { - "navigationBarTitleText": "万趣权益", - "navigationStyle": "custom" - } - }, - { - "path": "pages/booking/index", - "style": { - "navigationBarTitleText": "预订咨询", + "navigationBarTitleText": "管家", "navigationStyle": "custom" } }, diff --git a/WonderQ-MiniAPP/src/pages/benefits/index.vue b/WonderQ-MiniAPP/src/pages/benefits/index.vue deleted file mode 100644 index 3fc5166..0000000 --- a/WonderQ-MiniAPP/src/pages/benefits/index.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - diff --git a/WonderQ-MiniAPP/src/pages/booking/index.vue b/WonderQ-MiniAPP/src/pages/booking/index.vue deleted file mode 100644 index 231b5ba..0000000 --- a/WonderQ-MiniAPP/src/pages/booking/index.vue +++ /dev/null @@ -1,195 +0,0 @@ -