Commit Graph

1051 Commits (master)

Author SHA1 Message Date
Council 75703a12f4 [票务] 票务页面主题适配与样式优化 2026-07-06 12:05:32 +08:00
Council 80ea6bfdef refactor(iconfont): 主包精简 Phase 4B — u-icon 全量替换为 iconfont
【背景】
VR 扩展引入的 u-icon 组件通过 easycom 全局注册,导致主包引入:
- u-icon.wxss base64 副本 224.7 KB
- iconfont.json 元数据 85.8 KB
- u-icon.vue 1.7 KB
合计 ≈312 KB 冗余。

原版项目已有 <iconfont> 全局组件,功能等价。直接用 iconfont 替换可彻底消除冗余。

【变更】

1) components/iconfont/iconfont.vue 增强
   - 新增 #ifdef APP-NVUE 分支(合并 u-icon.vue 的 NVUE 逻辑)
   - iconfontCode computed:剥离 'icon-' 前缀后查 glyphs
   - iconSizeNvue computed:NVUE 单位补全
   - mounted 中调用 domModule.addRule('fontFace') 注册字体
   - 保留全部 iOS 修复注释

2) 替换 31 处 <u-icon> → <iconfont>
   - 属性映射:propName→name(+icon-前缀)、propColor→color、propSize→size
   - 动态 :propName 改写为 :name="'icon-'+var"

3) 删除
   - components/u-icon/u-icon.vue
   - components/u-icon/ 空目录

4) 修改的 11 个文件
   - pages/plugins/video/detail/detail.nvue (14 处)
   - pages/plugins/video/components/{loading,comment-info,comment-more,search}.vue (5 处)
   - pages/plugins/live/pull/pull.vue + pull.nvue (3 处)
   - pages/plugins/live/pull/components/{goods,live-content}/*.vue (7 处)
   - components/u-popup/u-popup.vue (1 处)
   - components/u-share-popup/u-share-popup.vue (1 处)

【效果】
- 用户实测:主包 2347.6 KB → 1997.9 KB(与原版 6.8 持平)
- 进一步在 HBuilder 中将 iconfont.json 加入自动排除列表后 → 1919.7 KB
- 比原版 6.8(1997 KB)小 77 KB

【风险】
- LOW(gitnexus detect_changes: 0 affected processes)
- NVUE 兼容性:iconfont.vue 已继承 u-icon.vue 全部 NVUE 逻辑(用户实测视频详情页正常)
- 直播场景:因项目无直播环境,未在生产 NVUE 验证(待启用时手动测试)

【验证】
- 用户实测:视频详情页、商品页图标显示正常
- 弹窗关闭图标(u-popup / u-share-popup)显示正常
2026-07-01 18:12:21 +08:00
Council f696450bf9 refactor(subpackage): 主包精简 Phase A1 — diy 移回主包 + 子包独立化 + manifest 优化
【背景】
ShopXO 原版 6.8 主包 ≈1997 KB,但 VR 扩展接入后膨胀至 2347 KB。
本次为 Phase A1,主包减小约 200~400 KB(视未引用文件而定)。

【变更】

1) manifest.json 优化配置
   - 开启 ignoreDevUnusedFiles: true(开发模式剔除未引用文件)
   - 开启 ignoreUploadUnusedFiles: true(生产模式剔除未引用文件)
   - 风险:低(uni-app 官方推荐生产配置)

2) pages.json 调整
   - pages/diy 从 subPackages 移回主包(修复 iOS 微信真机 evaluate 时机问题)

3) 子包独立化
   - ticket-qr-popup 从主包 components/ 移到 pages/plugins/vr-ticket-wallet/components/
   - wallet_bg.png 从主包 static/images/other/ 移到 vr-ticket-wallet 子包
   - pages/user-order-detail 内置独立 ticket-qr-popup 副本(避免跨页面引用)

4) gitignore 补充
   - vr-shopxo-uniapp-6.8-origin/(基准对比目录)
   - docs/analyse-mp/(HBuilder 编译分析产物,2.3MB)

5) 工作记录
   - docs/vr-ticket-uniapp-analysis.md(VR vs 原版差异分析报告)
   - docs/main-package-size-optimization-20260701.md(本次精简工作记录)

【验证】
- gitnexus detect_changes:low risk
- iOS 真机 evaluate 白屏已修复(前置 commit e11e2d3a)
- 票夹子包现可独立编译加载
2026-07-01 18:12:03 +08:00
Council e11e2d3a6e fix(iOS): Move ticket-qr-popup to main package to resolve subpackage evaluate race condition
Root cause: user-order-detail referenced ticket-qr-popup inside vr-ticket-wallet
subpackage. On iOS batchInjectSubPackages, all subpackage JS modules were
evaluated, triggering componentCommon -> common.vue top-level getApp() crash
when globalData hadn't been populated yet. This was an intermittent race
condition (not 100% reproducible).

Fix: Moved ticket-qr-popup from vr-ticket-wallet/components/ to
components/ticket-qr-popup/ (main package). Updated all import paths and
pages.json declarations. Now user-order-detail never triggers subpackage
loading, eliminating the race condition entirely.

Changes:
- NEW: components/ticket-qr-popup/index.vue (copied from subpackage)
- DELETE: pages/plugins/vr-ticket-wallet/components/ticket-qr-popup/
- MODIFY: pages/user-order-detail/user-order-detail.vue (import path)
- MODIFY: pages/plugins/vr-ticket-wallet/ticket-wallet.vue (import path)
- MODIFY: pages.json (usingComponents path)
2026-07-01 03:29:13 +08:00
Council 21ba9b7c42 fix(vr-ticket-wallet): 修复 iOS 真机 evaluate 白屏 + Swiper 回弹
1. ticket-wallet.vue:移除顶层 getApp() 调用,修复 iOS 独立分包
   evaluate 早于 App.vue#onLaunch 导致的 'o.functions' 错误
   (与 verify/index.vue、records/index.vue 同病同治)

2. ticket-qr-popup:swiper 改用内部 internalIndex 状态,
   避免父组件倒计时 re-render 时 prop 重设导致 iOS 回弹
   (订单详情页弹出有此问题,票夹页面无此问题)
2026-06-30 18:37:10 +08:00
Council 7db0b8707c fix(vr-ticket-wallet): limit qr-popup max-height to 80vh to avoid being covered by WeChat global floating menu on iPad 2026-06-30 17:57:41 +08:00
Council 4438a84056 fix(iOS微信真机): 修复核销记录页高度塌陷+header点击穿透+iconfont裁剪
1. records/index.css: .records-page 加 height:100vh (同 verify 修复)
   - 原先只有 min-height:100vh,iOS flex:1 scroll-view 高度塌陷

2. records/index.css + verify/index.css: header pointer-events 修复
   - backdrop-filter 在 iOS 创建合成层会拦截下方点击
   - header 容器 pointer-events:none,header-inner pointer-events:auto
   - 修复 header 半透明区域无法点击、返回按钮无响应

3. records/index.vue: getApp() 从顶层移到 onLoad() (同 verify 修复)
   - 消除 subpackage evaluate 时机隐患
   - 5 处 app.globalData 改为 getApp().globalData

4. iconfont.vue: 修复 iOS 大尺寸 icon 裁剪/样式残缺
   - 移除 max-width/max-height:100px 限制
   - 移除 width/height:1em 硬约束
   - display:flex → inline-block,让 font-size 驱动尺寸

gitnexus detect_changes: risk_level=low, 0 affected_processes
2026-06-30 16:16:07 +08:00
Council 388a80e035 fix(iOS微信真机): 修复扫码核销页 scroll-view 高度塌陷
根因:.verify-page 只有 min-height:100vh,没有明确 height。
iOS 微信真机的 flex 引擎需要父容器有明确高度才能计算
flex:1 子元素的剩余空间。min-height 不作为 flex 高度基准,
导致 .verify-scroll (flex:1; height:0) 高度塌陷为 0,
内容不可见。header 是 position:fixed 脱离 flex 流所以正常。

修复:给 .verify-page 加 height:100vh,min-height 保留兜底。
2026-06-30 16:06:29 +08:00
Council 0a42be5df6 fix(iOS微信真机): 修复扫码核销页空白页
根因:verify/index.vue 在 <script> 顶层调用 getApp().globalData,
与 diy 组件白屏问题相同——iOS 微信真机 subpackage evaluate
阶段早于 App.vue#onLaunch,globalData 未就绪导致 evaluation 失败。

修复:
1. 移除顶层 const app = getApp() 和 var bar_height = ...
2. data() 中 status_bar_height 初始值改为 0
3. onLoad() 中延迟调用 getApp() 读取 statusBarHeight
4. 所有方法内 app.globalData.xxx 改为 getApp().globalData.xxx
5. 加留痕注释

gitnexus detect_changes: risk_level=low, 0 affected_processes
2026-06-30 15:57:46 +08:00
Council 06ad365482 feat(vr-ticket-wallet): 隐藏票据卡片的电话和地图导航按钮
当前 vr_ticket/list 接口未把 venue 经纬度传给前端,若做真实
uni.openLocation 导航需要后端先补 venue_address/venue_lat/venue_lng
字段,动静过大。先把两个圆形按钮(📞 + 🗺️)注释下线,
callService/openNavigation 两个 mock handler 保留不删,
待后端数据就绪后再恢复。

Refs: 客户需求 - 票夹按钮改造
2026-06-29 23:54:47 +08:00
Council efe6227f06 feat(order-ticket): 订单详情页核销码与票务卡片优化
1. 核销码弹窗 (ticket-qr-popup)
   - canvas 加 pointer-events:none 修复 swiper 滑动被拦截的问题
   - 新增 verify_status 遮罩,已核销/已退款的票显示"已核销/已退款 此码不可用"
   - 遮罩加 backdrop-filter 模糊,文字放大并上移居中

2. 订单详情页票务卡片 (user-order-detail)
   - 注释隐藏底部"查看票码 ›"链接(功能与顶部按钮重叠)
   - 票卡右上角加核销/退款状态印章动画
   - ticket_detail_list 传递 verify_status,API 图片路径加 resolveImageUrl 拼接
   - 新增 resolveImageUrl 方法,与票夹保持一致
   - 订单信息面板精简:删除重复条目,仅保留订单编号/总价/支付金额/支付方式/创建时间/支付时间/发货时间
2026-06-29 22:33:01 +08:00
Council e1b100fc62 feat(vr-ticket-wallet): 重构核销页面和核销记录页面的头部导航
- 替换不可靠的 component-nav-back 组件为自实现的固定头部
- 使用 position: fixed + max-width: 750px 确保在宽屏 (PC) 下头部不会凸出
- 为核销记录页面添加 header 占位元素,防止统计概览被头部遮罩
- 移除未使用的 componentNavBack 导入
- 动态计算 status_bar_height + 44px 的头部高度间距
2026-06-28 23:47:10 +08:00
Council e1082141d0 style: 全局应用方案二,将页面淡入渐变动画推广到所有核心 TabBar 页面 2026-06-27 21:47:24 +08:00
Council bb2502997c style: 优化页面切换体验,稳定底部菜单 Key 减少重绘,新增页面淡入渐变动画与商品搜索页骨架屏 2026-06-27 21:29:24 +08:00
Council 9a8a3e59bc feat: 优化自定义底部导航并隐藏小程序的返回/返回首页按钮;实现票据钱包下拉刷新生命周期函数 2026-06-27 21:11:10 +08:00
Council 07b369a302 feat: 放开身份证字段限制 & 票夹 UI 优化
- 移除 goods-vr-ticket-order 身份证字段的 DEVELOPMENT 条件编译
- verify 页面增加扫码覆盖层动画,H5 手动核销 UI 重构
- ticket-wallet Banner 从 SVG 动画改为静态背景图
- 修复 v-for key 警告,优化空状态图标
2026-06-27 16:49:40 +08:00
Council 3567bea792 feat: 商品列表/分类/购物车/魔法列表增加 VR 票务直跳逻辑
- 在 goods_event 中检测 vr_goods_config 标志
- 若为票务商品则直接跳转到 goods-vr-ticket 页面
- 减少票务商品从普通商品页跳转的中间环节
- 避免影响 realstore 相关页面的返回体验
2026-06-27 16:46:53 +08:00
Council 6e80f6e9a6 fix: 修复票据页面实机滚动卡死问题
问题描述:
- iOS/Android 实机测试时,票据页面下滑后无法上滑
- 必须切换 Tab Bar 才能恢复

根本原因:
- 页面容器未限制高度,Webview 弹性滚动与 scroll-view 手势冲突
- 页面级下拉刷新与 scroll-view 刷新机制并存,增加手势复杂度

修复方案:
- pages.json: 禁用页面级下拉刷新,开启 disableScroll
- ticket-wallet.css: 容器高度改为 100vh + overflow:hidden,滚动区高度简化为 100%

关联文档:
- docs/troubleshoot-ticket-wallet-scroll.md
2026-06-26 08:12:54 +08:00
Council c52adc7a4a feat(vr-ticket): 新增票务订单确认页 + 观影人选择功能 2026-06-25 17:11:36 +08:00
Council e014a94441 feat: VR ticket order page + wallet plugin pages (goods-vr-ticket-order, vr-ticket-wallet)
- Add goods-vr-ticket-order page (order confirmation flow)
- Add vr-ticket-wallet plugin with ticket-qr-popup, records, verify components
- Update ticket-header/ticket-popup/goods-vr-ticket with enhanced seat selection UI
- Update integration plan docs
- Update pages.json with new page registrations
- Update user.vue to include wallet link
2026-06-03 13:32:06 +08:00
于肖磊 37c7beca17 修改上传触发参数 2026-03-19 15:32:40 +08:00
于肖磊 41f412ddd4 删除打印的内容 2026-03-19 15:07:21 +08:00
于肖磊 f2726e5183 修改loading组件显示 2026-03-19 15:06:46 +08:00
于肖磊 f7e25449b2 修改组件引入 2026-03-19 15:05:16 +08:00
于肖磊 1196ac3e68 修改页面显示 2026-03-19 15:02:24 +08:00
于肖磊 f254070882 关闭键盘显示 2026-03-19 14:37:33 +08:00
于肖磊 4a08899e27 修改图片显示处理 2026-03-19 12:03:15 +08:00
于肖磊 45ba0da9ba 修改按钮文字颜色 2026-03-18 19:05:03 +08:00
于肖磊 be65bbe0fd 修改按钮文字颜色 2026-03-18 18:42:24 +08:00
于肖磊 da9e528427 修改回复内容为主 2026-03-18 18:39:02 +08:00
于肖磊 c0f9c2f72f 修改按钮颜色 2026-03-18 18:20:12 +08:00
于肖磊 ccac3bcd0c 修改输入框处理逻辑 2026-03-18 17:52:21 +08:00
gongfuxiang 69ade80697 merge 2026-03-18 15:15:04 +08:00
于肖磊 4746681087 修改页面显示数据 2026-03-16 16:13:59 +08:00
于肖磊 b5a1b17881 修改输入框颜色 2026-03-13 18:14:28 +08:00
于肖磊 e8d647c28d 修改nvue输入框的处理 2026-03-13 18:13:53 +08:00
于肖磊 27fcf755de 修改数据提示 2026-03-13 16:51:27 +08:00
于肖磊 c34de3be62 修改页面显示 2026-03-13 16:43:16 +08:00
于肖磊 47adfa1816 修改数据显示 2026-03-13 16:42:13 +08:00
于肖磊 f7b997e55c 修改数据显示 2026-03-13 16:34:25 +08:00
于肖磊 c2da7e5f41 修改图片上传 2026-03-13 15:42:39 +08:00
于肖磊 ddfb967c72 使输入框失去焦点 2026-03-13 15:10:23 +08:00
于肖磊 3ce6f61448 关闭信息 2026-03-13 15:01:02 +08:00
于肖磊 0de2f27018 关闭输入框内容 2026-03-13 14:58:48 +08:00
于肖磊 2abbfe9b9f 修改输入框处理 2026-03-13 14:52:58 +08:00
于肖磊 cdf956c98a 修改页面显示处理 2026-03-13 14:46:28 +08:00
于肖磊 f5168b8cc5 修改显示 2026-03-13 14:19:28 +08:00
于肖磊 e4f6d1ddd2 修改内容信息 2026-03-13 14:08:36 +08:00
于肖磊 fb159220ef 增加引入组件名称 2026-03-13 11:08:38 +08:00
于肖磊 067e46e065 增加nvue多余代码 2026-03-13 10:57:17 +08:00