Commit Graph
89 Commits
Author SHA1 Message Date
jacobxu666andClaude Fable 5 e1801f1026 fix: 主包孤儿文件 api/order.ts 迁入分包(pingxiang-order),消除真机代码质量告警
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 16:00:00 +08:00
jacobxu666andClaude Fable 5 64ac69db93 feat: 移除预约记录/详情页防截屏限制,预约日期条支持置灰显示已过预约时间
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-04 11:42:21 +08:00
jacobxu666andClaude Opus 4.8 08e2f6888b feat: 客服热线弹窗、取消预约文案与旅游卡页布局优化
- 客服热线改为弹窗拉取 mpContent/queryList 客服信息(SERVICE_INFO),富文本电话可点击拨号
- 取消预约确认弹窗展示具体预约日期与景区名称,取消后隐藏取消按钮
- makePhoneCall 用户取消时静默处理,不再上报异常
- 景区列表搜索图标改为 OSS 图片
- 旅游卡页:人脸头像方形竖版、信息单行靠右、入园提示移至持卡人信息下方等布局优化
- project.config.json appid 同步为 wxae3b39ac443fedc3

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-07 18:29:12 +08:00
lcj f0911c67a0 feat: 抖音核销接入小泥人API、公告详情页、景区预约人选人等多处优化
抖音核销(douyin-verify):
- 对接小泥人 OAuth2 token 与 voucher-list 券码接口,按 code 分组展示订单券号及可激活次数
- 支持手动输入券码验证券码;核销流程改为先调后端 sendAndBind 发卡绑定,再验证券码
- 购卡须知改为富文本渲染,新增无可核销订单提示弹窗、客服电话拨打
- 增加 product_id 过滤与 per-page=100,验证券码命中后仅展示不弹提示

公告模块:
- 首页/公告列表点击跳转到新增公告详情页(notice-detail),展示标题、发布时间、富文本内容及视频
- 公告列表卡片改为标题+发布时间+查看详情按钮,时间与按钮同排
- 富文本支持内嵌 video 解析播放;content 为空不显示分隔线;标题取公告 title 而非类型

首页与价格:
- 首页大卡价格/划线价/立省改为商品详情接口动态获取
- 热门景区列表扩展至8条,支持优惠/折扣标签与默认占位图

预约/景区:
- 预约页改为选择预约人(可选/已预约置灰),预约参数改用预约人信息
- 景区列表与详情支持优惠类型、折扣、特惠价展示,富文本图片防溢出
- 景区列表移除自定义导航改用原生导航

订单/绑卡:
- 订单列表/详情增加抖音核销单号(thirdOrderNo)展示,核销订单隐藏金额与退款入口
- 绑卡页移除人脸可选开关,照片必传改为拍照
- 其他:图片域名统一为 hn12301,tabBar'旅游卡'改名,登录页支持 redirect 回跳
2026-08-07 10:45:53 +08:00
jacobxu666 40cebaa3a5 Merge branch 'xuchao' 2026-07-30 11:17:59 +08:00
jacobxu666andClaude Opus 4.8 d1bff755d9 feat: 新增抖音核销功能(首页入口+核销页+购卡须知弹窗)
- 首页金刚区新增「抖音核销」入口,未登录拦截跳转登录页
- 新增核销页:按手机号查券(有券单选 / 无券手输券号并校验纯数字)、绑卡信息、人脸上传、证件类型选择
- 购卡须知弹窗(单图 aspx.png),确认核销后模拟成功并跳转旅游卡页
- 核销页背景对齐设计稿改为白底,原生窗口底色同步置白
- 接口层 DOUYIN_BACKEND_READY 开关,后端未就绪时返回模拟数据
- 修正金刚区图标域名 hntgov.net -> hn12301.net

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 11:12:16 +08:00
jacobxu666 8cc76dec6c Update CLAUDE.md 2026-07-29 13:54:13 +08:00
lcj cdb23eea01 7月29号 2026-07-29 13:53:24 +08:00
lcj ee0825c1e6 1232 2026-07-13 11:15:59 +08:00
jacobxu666 45a74578fc fix:优化入园码的显示和无预约时去预约的调整 2026-07-07 11:47:29 +08:00
lcj 6d89d1049f 123 2026-07-07 09:00:53 +08:00
lcj 203d129ffb 第一个版本 2026-07-06 09:17:41 +08:00
jacobxu666 1b4dcabad2 fix:icon 调整
旅游卡头像出的放大镜 icon 大小调整
2026-06-26 15:02:39 +08:00
jacobxu666andClaude Haiku 4.5 f10a1896e7 fix: comply with F2E Spec — filename naming, any types, JSDoc
- Rename PascalCase component files to kebab-case (AnnouncementModal →
  announcement-modal, McGlass → mc-glass)
- Replace any types with proper uni-app/WeChat callback types
  (RequestSuccessCallbackResult, LoginRes, ShowModalRes, etc.)
- Add JSDoc documentation comments to all exported/important functions

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-26 14:45:49 +08:00
jacobxu666andClaude Sonnet 4.6 77c177bfa9 fix(scenic-detail): 自定义轮播圆点修复层叠遮挡问题
微信原生 swiper 组件为独立渲染层,内置 indicator-dots 无法通过
z-index 突破到外部元素上方。改为在 swiper 外渲染自定义圆点:
- hero-container z-index:4(低于 info-card)
- info-card z-index:5(遮住 swiper 底部)
- hero-dots z-index:6(显示在 info-card 上方 12px)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 13:52:41 +08:00
jacobxu666andClaude 03a72825bb fix(scenic-detail): swiper dots covered by info-card
Add position:relative + z-index:6 to hero-swiper so it sits above
the info-card (z-index:5) which overlaps the bottom 40rpx via
negative margin. Dots are now visible above the overlap zone.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 13:12:07 +08:00
jacobxu666andClaude 2c165bf69d fix: compress all images to meet 200KB resource limit
- logo.png: 320x320 83KB → 160x160 25KB
- icon/*.png: 128x128 → 64x64 (6 files, 101KB → 36KB)
- qr-demo.png: 250x250 → 128x128
- tabbar icons: kept at 81x81 (WeChat standard)
- Total: 230KB → 113KB (under 200KB limit)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 12:53:53 +08:00
jacobxu666andClaude 289291f195 fix: remove mock/order.js from main package
- Move mock/order.ts to packages/user/mock/ (subpackage-relative import)
- Delete unused api/order.ts, api/reserve.ts, api/scenic.ts (no page imports them)
- Delete unused mock/store.ts, mock/reserve.ts (dead code)
- order-list.vue now uses relative import ../../mock/order

Main package mock/ now only contains: images.js, notice.js, scenic.js
(all used by main package pages)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 12:43:02 +08:00
jacobxu666andClaude f89e26cc57 fix(order-detail): restore divider between pay amount and bind/refund time
Remove detail-row--last from pay amount row so the border appears
when activatedTime or refundedTime rows are conditionally shown.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 12:22:42 +08:00
jacobxu666 4acb2e6a9c refactor: move pages to subpackages to reduce main package size 2026-06-26 11:59:59 +08:00
jacobxu666andClaude 4b7c540343 fix(order-detail): add top padding to bottom bar buttons
Buttons now have 24rpx gap from the top edge of the bottom bar.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 11:52:22 +08:00
jacobxu666andClaude b85196fa2e fix: bottom bar safe-area adaptation (height → min-height)
Affected pages:
- order-detail: bottom action bar
- card-buy: bottom price/pay bar
- reserve-index: bottom submit bar

Root cause: box-sizing:border-box + fixed height + padding-bottom:safe-area
caused buttons to overflow when safe area inset is large (iPhone X+).
Changed to min-height so bar expands naturally.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 11:49:40 +08:00
jacobxu666andClaude 6eb4ab05ae feat(reserve): add session/场次 info to success page and usage detail
- reserve-index: pass selected session time to success page via query param
- reserve-success: receive and display session conditionally
- reserve-list: add session field to ReserveRecord model and detail sheet
- 4 of 6 mock records now include session data

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 11:42:20 +08:00
jacobxu666andClaude 455b865931 fix: cleanup remaining font-weight:bold, remove stale scenic-spots.ts
- Replace font-weight: bold with 700 (plain CSS) or $font-weight-bold (SCSS)
  in qrcode.vue, card-item.vue, bind.vue, activate.vue
- Remove src/data/scenic-spots.ts (replaced by mock/scenic.ts)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 11:15:08 +08:00
jacobxu666 d92875c86d refactor: migrate additional hardcoded colors to design tokens 2026-06-26 11:11:27 +08:00
jacobxu666 26b89e8132 refactor(components): migrate public components to design tokens 2026-06-26 11:09:08 +08:00
jacobxu666 e4ce6b4703 refactor(pages): migrate remaining pages to design tokens 2026-06-26 11:07:22 +08:00
jacobxu666 c78f97301d refactor(reserve): migrate hardcoded colors, font sizes, and weights to design tokens 2026-06-26 11:05:22 +08:00
jacobxu666 824bb3b808 refactor(order): migrate hardcoded colors, spacing, and mock data to design tokens 2026-06-26 11:00:46 +08:00
jacobxu666 72f435f7b3 refactor(buy-flow): migrate hardcoded colors and spacing to design tokens 2026-06-26 10:54:45 +08:00
jacobxu666 f2b8ad9604 refactor(card/detail): migrate hardcoded colors and spacing to design tokens 2026-06-26 10:51:54 +08:00
jacobxu666 d9a7aad499 refactor(index): migrate hardcoded values to design tokens and mock data 2026-06-26 10:48:59 +08:00
jacobxu666andClaude cfb9a4ce26 refactor: remove local SCSS variables from 9 pages
Replace with global uni.scss tokens:
$font → $font-family-body
$primary → $uv-primary
$text-* → $uv-main-color/$uv-content-color/$uv-tips-color/$uv-placeholder-color
$divider → $uv-border-color
$card-radius → $radius-lg
$accent → $uv-primary

Kept $bar-height: 120rpx as component-specific local var.
Removed dead $primary-dark: #e89a2a from card-bind.vue (never used).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 10:34:54 +08:00
jacobxu666 25a1cc4eb3 feat(api): add scenic, order, reserve API functions with mock fallback 2026-06-26 10:26:35 +08:00
jacobxu666 a1307fa148 feat(mock): extract all hardcoded data into mock/ modules
- scenic.ts: 42 items from scenic-list.vue + filter options
- scenic-detail.ts: 8 items from scenic-detail.vue
- order.ts: 6 items from order-list.vue (replaces placeholder)
- reserve.ts: 6 items from reserve-list.vue (replaces placeholder)
- notice.ts: 5 items from notice-list.vue
- store.ts: updated to use new local types

All image URLs replaced with constants from images.ts
2026-06-26 10:16:24 +08:00
jacobxu666andClaude 7d4d61af81 style(index): update promo card price styling (¥98 yellow, larger font)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 10:06:45 +08:00
jacobxu666andClaude 36a367b2a5 fix: add VITE_USE_MOCK to env.d.ts type declarations
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 10:06:36 +08:00
jacobxu666 ce729704f8 feat(mock): create mock infrastructure with USE_MOCK switch 2026-06-26 09:58:09 +08:00
jacobxu666andClaude e739c061c4 feat(types): add ScenicSession, ReserveRecord, Notice, FaqItem, PageResult types
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 09:48:20 +08:00
jacobxu666 72d1c16f6d refactor(tokens): align _tokens.scss with uni.scss values
All color, typography, and spacing values now match uni.scss.
Added semantic colors and $font-size-xxs/$font-size-4xl.
2026-06-26 09:42:54 +08:00
jacobxu666 dcba287aeb feat(tokens): add missing variables to uni.scss
- $font-size-xxs (18rpx), $font-size-4xl (64rpx)
- $uv-placeholder-color (#999999)
- Semantic colors: $color-price, $color-status-*
- Change $font-family-body to system fonts
2026-06-26 09:38:10 +08:00
jacobxu666andClaude e03ac06e02 docs: add UI/UX standardization implementation plan
17 tasks across 3 phases:
- Phase 1 (Tasks 1-8): Infrastructure (tokens, types, mock, cleanup)
- Phase 2 (Tasks 9-12): Core pages (index, card list/detail, buy)
- Phase 3 (Tasks 13-17): Remaining pages and components

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 09:32:56 +08:00
jacobxu666andClaude 1b12c1a6b7 docs: final spec refinements per second review
- Fix type import syntax in mock example (Scenic[] → Scenic)
- Add pagination example to mock mechanism
- Clarify $uv-placeholder-color placement in uni.scss
- Separate $color-price vs $uv-error in migration table
- Split task 1.1 into 1.1a/1.1b/1.1c sub-tasks
- Add App.vue global style example
- Add SCSS import rules

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 09:19:09 +08:00
jacobxu666andClaude 6e27b449bb docs: update UI/UX spec per review feedback
- Add $font-size-4xl (64rpx) to font scale
- Fix line-height-tight to match uni.scss (1.2)
- Use existing $uv-* naming for neutral colors, add $uv-placeholder-color
- Clarify $font-family-body change (serif → system fonts for body)
- Split spacing into recommended vs reserved tiers
- Fix $radius-md → $radius-base, add $radius-xl
- Fix shadow values to match uni.scss rgba(15,23,42,...) base
- Add PageResult<T> pagination type
- Add MockStore for interactive mock data
- Add image resource specs (sizes, formats)
- Add accessibility guidelines
- Fix page count (27 → 21)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 09:12:16 +08:00
jacobxu666andClaude e328177067 docs: add UI/UX standardization design spec
Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 09:05:59 +08:00
jacobxu666andClaude 4ad874adf9 refactor: 全项目 UI/UX 标准化修复
- P0: uni.scss 全局 Token 修正(字体SourceHanSerifCN、色彩#111/#333/#666/#999/#eeeeee、删除600字重)
- P0: 分包6页面色彩迁移(#4A90D9→#3c9cff、#E74C3C→#e53935、圆角统一24rpx)
- P1: qrcode页面全量SCSS迁移(12个硬编码色值替换、emoji图标替换、圆角统一)
- P1: index页面价格色修正(#f9ae3d→#e53935、按钮主色统一、硬编码字号对齐)
- P2: 10个页面字号/圆角/字体统一(notice-list/scenic/login/profile/faq/card-bind等)
- P3: 全局 font-weight:600 替换为500/700(5处),删除semibold变量和工具类
- 新增 -size-title: 38rpx Token
- 构建验证通过

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 02:50:21 +08:00
jacobxu666andClaude f67dd63972 feat: 新增预约系统三页面 + 订单/使用记录优化
- 新增 pages/reserve/reserve-index 景区预约页(日期选择/场次/库存/实名信息)
- 新增 pages/reserve/reserve-success 预约成功页(二维码/规则/返回拦截)
- 新增 pages/reserve/reserve-list 预约使用记录页(Tab筛选/取消/详情弹窗)
- 预约日期仅展示明天起3天,支持已约满/无场次状态
- 使用详情增加卡种/卡号/核销照片/时间字段,照片可放大预览
- 订单列表/详情全部激活改绑定,卡号CJ格式,Tab均分布局
- 景区详情立即预约跳转预约页,使用说明跳转独立页面
- 统一景区信息区字号间距规范

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 01:33:32 +08:00
jacobxu666andClaude 5ac924a76c feat: 新增绑卡激活、旅游卡购买、工会购买、使用说明、常见问题、订单管理页面
- 新增 pages/card-bind 绑卡激活页(证件类型下拉、照片上传、表单校验)
- 新增 pages/card-buy 超级玩家卡购买页(微信支付)
- 新增 pages/union-buy 工会购买页
- 新增 pages/usage-guide 使用说明页
- 新增 pages/faq 常见问题页(购买类/预约类/绑定类折叠问答)
- 新增 pages/order 订单列表页(Tab筛选/下拉刷新/状态标签)
- 新增 pages/order 订单详情页(状态差异化展示/卡号复制)
- 登录页背景改为白色、按钮统一主色、协议未同意提示
- 首页金刚区跳转对接(绑卡/预约/入园/FAQ)
- 旅游卡页使用说明跳转、景区权益改为使用说明
- 我的页面菜单跳转对接(订单/使用说明/FAQ)
- 景区列表新增卡种筛选、吸顶区动态高度适配
- 全局统一思源宋体、主色#3c9cff、rpx单位

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 00:32:21 +08:00
jacobxu666andClaude ff524ac973 feat: 公告弹窗组件 + 公告列表页 + 旅游卡功能区调整
- 新增 AnnouncementModal 公告弹窗组件(v-model 控制,居中白色面板+圆形关闭按钮+动画)
- 新增通知公告列表页(pages/notice-list),微信原生导航,卡片式布局
- 首页公告栏去掉类型标签(重要/景区/福利),公告条目可点击打开弹窗
- 首页'更多'按钮跳转公告列表页
- 旅游卡页面'我要入园'改为'我要绑定',icon 与首页绑卡一致
- 公告列表页极简风格:标题+摘要+日期+右箭头,无图标无分割线

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 19:56:41 +08:00
jacobxu666andClaude 5524d78229 feat: 景区详情页优化 + 代码质量修复 + 首页适配
- 详情页:地图按钮改为复制地址,电话点击直接拨号
- 详情页:移除免X次/年徽章,增加信息卡片与卡种卡片间距
- 详情页:运营状态实时判断(根据营业时间自动显示营业中/已闭园)
- 详情页:轮播圆点仅多图时显示,加大尺寸+投影,z-index置顶
- 详情页:景区电话箭头靠右对齐
- 首页:热门景点两列布局改用padding方案,修复小屏手机单列显示
- 代码质量:card/order API移入分包,消除主包未使用JS文件
- 代码质量:manifest启用minified和lazyCodeLoading
- 构建:vite配置静默Sass弃用警告

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-25 19:19:40 +08:00