Chad 2 週間 前
コミット
f3caacf638
100 ファイル変更2433 行追加0 行削除
  1. 17 0
      .env
  2. 14 0
      .env.dev
  3. 8 0
      .env.prod
  4. 133 0
      .eslintrc-auto-import.json
  5. 4 0
      .gitignore
  6. 4 0
      .npmrc
  7. 1 0
      .nvmdrc
  8. 307 0
      CHANGELOG.md
  9. BIN
      F1BET-APP.zip
  10. 21 0
      LICENSE
  11. 296 0
      README.md
  12. 11 0
      dist/build/.nvue/app.css.js
  13. 1205 0
      dist/build/.nvue/app.js
  14. 15 0
      dist/build/app-plus/__uniappautomator.js
  15. 31 0
      dist/build/app-plus/__uniappchooselocation.js
  16. BIN
      dist/build/app-plus/__uniapperror.png
  17. 31 0
      dist/build/app-plus/__uniappopenlocation.js
  18. 31 0
      dist/build/app-plus/__uniapppicker.js
  19. 6 0
      dist/build/app-plus/__uniappquill.js
  20. 0 0
      dist/build/app-plus/__uniappquillimageresize.js
  21. 31 0
      dist/build/app-plus/__uniappscan.js
  22. BIN
      dist/build/app-plus/__uniappsuccess.png
  23. 24 0
      dist/build/app-plus/__uniappview.html
  24. 4 0
      dist/build/app-plus/app-config-service.js
  25. 1 0
      dist/build/app-plus/app-config.js
  26. 3 0
      dist/build/app-plus/app-renderjs.js
  27. 0 0
      dist/build/app-plus/app-service.js
  28. 3 0
      dist/build/app-plus/app-wxs.js
  29. 0 0
      dist/build/app-plus/app.css
  30. BIN
      dist/build/app-plus/assets/avatar-default.d890a8c4.png
  31. BIN
      dist/build/app-plus/assets/avatar.0ad11987.gif
  32. BIN
      dist/build/app-plus/assets/image-banner.11e6c99c.jpg
  33. BIN
      dist/build/app-plus/assets/image-wechat.067dc3d4.png
  34. 213 0
      dist/build/app-plus/manifest.json
  35. 0 0
      dist/build/app-plus/pages/Tabbar/BettingHistory/index.css
  36. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/components/Digital/detail.css
  37. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/index.css
  38. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/Digital/index.css
  39. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/ExtremeSpeed28/index.css
  40. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/HKDigital/index.css
  41. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/NewDigital/index.css
  42. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/PC28/index.css
  43. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/Pc28BettingHistory/index.css
  44. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/SpeedDigital/index.css
  45. 0 0
      dist/build/app-plus/pages/Tabbar/Entertainment/view/history/index.css
  46. 0 0
      dist/build/app-plus/pages/Tabbar/Home/index.css
  47. 0 0
      dist/build/app-plus/pages/Tabbar/My/index.css
  48. 0 0
      dist/build/app-plus/pages/Tabbar/RollingBall/index.css
  49. 0 0
      dist/build/app-plus/pages/Tabbar/SportsBetting/index.css
  50. 0 0
      dist/build/app-plus/pages/Tabbar/WorldCup/index.css
  51. 0 0
      dist/build/app-plus/pages/WorkModule/AppFooterViews/index.css
  52. 0 0
      dist/build/app-plus/pages/WorkModule/Entertainment/Detail/index.css
  53. 0 0
      dist/build/app-plus/pages/WorkModule/bettingHistory/bettingDetail/index.css
  54. 0 0
      dist/build/app-plus/pages/WorkModule/my/WalletManagement/index.css
  55. 0 0
      dist/build/app-plus/pages/WorkModule/my/Yuebao/index.css
  56. 0 0
      dist/build/app-plus/pages/WorkModule/my/Yuebao/itemList.css
  57. 0 0
      dist/build/app-plus/pages/WorkModule/my/changeFundPassword/index.css
  58. 0 0
      dist/build/app-plus/pages/WorkModule/my/changePassword/index.css
  59. 0 0
      dist/build/app-plus/pages/WorkModule/my/fundRecord/index.css
  60. 0 0
      dist/build/app-plus/pages/WorkModule/my/promotion/detail/index.css
  61. 0 0
      dist/build/app-plus/pages/WorkModule/my/promotion/index.css
  62. 0 0
      dist/build/app-plus/pages/WorkModule/my/rechargeRecord/index.css
  63. 0 0
      dist/build/app-plus/pages/WorkModule/my/safety/index.css
  64. 0 0
      dist/build/app-plus/pages/WorkModule/my/topUp/index.css
  65. 0 0
      dist/build/app-plus/pages/WorkModule/my/userInfo/index.css
  66. 0 0
      dist/build/app-plus/pages/WorkModule/my/withdraw/index.css
  67. 0 0
      dist/build/app-plus/pages/WorkModule/my/withdrawalHistory/index.css
  68. 0 0
      dist/build/app-plus/pages/common/AllHistory/index.css
  69. 0 0
      dist/build/app-plus/pages/common/PC28Rule/index.css
  70. 0 0
      dist/build/app-plus/pages/common/betSlip/index.css
  71. 0 0
      dist/build/app-plus/pages/common/customerService/index.css
  72. 0 0
      dist/build/app-plus/pages/common/rich-view/index.css
  73. 0 0
      dist/build/app-plus/pages/common/sportDetail/index.css
  74. 0 0
      dist/build/app-plus/pages/common/web-view/index.css
  75. 0 0
      dist/build/app-plus/pages/index/example/index.css
  76. 0 0
      dist/build/app-plus/pages/index/user/index.css
  77. 0 0
      dist/build/app-plus/pages/login/index.css
  78. 0 0
      dist/build/app-plus/pages/oldPage/contact/index.css
  79. 1 0
      dist/build/app-plus/pages/oldPage/feedback/index.css
  80. 1 0
      dist/build/app-plus/pages/oldPage/personal/index.css
  81. 1 0
      dist/build/app-plus/pages/oldPage/preference/index.css
  82. 0 0
      dist/build/app-plus/pages/register/index.css
  83. 0 0
      dist/build/app-plus/pages/setAccount/index.css
  84. 0 0
      dist/build/app-plus/pages/template/paging/index.css
  85. 1 0
      dist/build/app-plus/pages/tips/middleware/index.css
  86. 15 0
      dist/build/app-plus/static/config.js
  87. BIN
      dist/build/app-plus/static/favicon.ico
  88. BIN
      dist/build/app-plus/static/icon/lang.png
  89. BIN
      dist/build/app-plus/static/icon/lang1.png
  90. BIN
      dist/build/app-plus/static/images/DM_20260507140713_001.gif
  91. BIN
      dist/build/app-plus/static/images/ExtremeSpeed28.png
  92. BIN
      dist/build/app-plus/static/images/ExtremeSpeed28_en.png
  93. BIN
      dist/build/app-plus/static/images/ExtremeSpeed28_vi.png
  94. BIN
      dist/build/app-plus/static/images/ExtremeSpeedMarkSix.png
  95. BIN
      dist/build/app-plus/static/images/ExtremeSpeedMarkSix_en.png
  96. BIN
      dist/build/app-plus/static/images/ExtremeSpeedMarkSix_vi.png
  97. BIN
      dist/build/app-plus/static/images/HongKongMarkSix.png
  98. BIN
      dist/build/app-plus/static/images/HongKongMarkSix_en.png
  99. BIN
      dist/build/app-plus/static/images/HongKongMarkSix_vi.png
  100. BIN
      dist/build/app-plus/static/images/MacauMarkSix.png

+ 17 - 0
.env

@@ -0,0 +1,17 @@
+# 应用的基础路径(部署子路径时使用)
+VITE_APP_BASE=/
+
+# 静态资源加载模式:local(本地)或 remote(CDN)
+VITE_ASSETS_MODE=local
+
+# 当 VITE_ASSETS_MODE 为 remote 时,静态资源的 CDN 根地址
+VITE_ASSETS_CDN=https://cdn.example.com
+
+# 接口请求中用于携带 Token 的 Header 键名
+VITE_API_TOKEN_KEY=Authorization
+
+# 接口请求成功时的响应码
+VITE_API_SUCCESS_CODE=200
+
+# 是否启用接口 Mock 模式:1 启用,0 关闭
+VITE_API_MOCK=1

+ 14 - 0
.env.dev

@@ -0,0 +1,14 @@
+# 当前环境:dev(开发环境)、prod(生产环境)等
+VITE_NODE_ENV=dev
+
+# API 根地址
+VITE_API_ORIGIN=https://dev.example.com
+
+# API 路径前缀
+VITE_API_PATH=/api
+
+# 是否启用开发代理:1 启用,0 关闭 (注意该配置仅在 H5 环境中生效)
+VITE_PROXY_USE=0
+
+# 代理请求的前缀路径
+VITE_PROXY_PATH=/proxy

+ 8 - 0
.env.prod

@@ -0,0 +1,8 @@
+# 当前环境:dev(开发环境)、prod(生产环境)等
+VITE_NODE_ENV=prod
+
+# API 根地址
+VITE_API_ORIGIN=https://dev.example.com
+
+# API 路径前缀
+VITE_API_PATH=/api

+ 133 - 0
.eslintrc-auto-import.json

@@ -0,0 +1,133 @@
+{
+  "globals": {
+    "Component": true,
+    "ComponentPublicInstance": true,
+    "ComputedRef": true,
+    "DirectiveBinding": true,
+    "EffectScope": true,
+    "ExtractDefaultPropTypes": true,
+    "ExtractPropTypes": true,
+    "ExtractPublicPropTypes": true,
+    "InjectionKey": true,
+    "MaybeRef": true,
+    "MaybeRefOrGetter": true,
+    "PropType": true,
+    "Ref": true,
+    "Slot": true,
+    "Slots": true,
+    "VNode": true,
+    "WritableComputedRef": true,
+    "acceptHMRUpdate": true,
+    "addRouterMethodAlias": true,
+    "computed": true,
+    "createApp": true,
+    "createPinia": true,
+    "createRouter": true,
+    "customRef": true,
+    "defineAsyncComponent": true,
+    "defineComponent": true,
+    "defineMiddleware": true,
+    "defineStore": true,
+    "effectScope": true,
+    "formatRange": true,
+    "getActivePinia": true,
+    "getCurrentInstance": true,
+    "getCurrentScope": true,
+    "h": true,
+    "inject": true,
+    "isProxy": true,
+    "isReactive": true,
+    "isReadonly": true,
+    "isRef": true,
+    "mapActions": true,
+    "mapGetters": true,
+    "mapState": true,
+    "mapStores": true,
+    "mapWritableState": true,
+    "markRaw": true,
+    "nextTick": true,
+    "onActivated": true,
+    "onAddToFavorites": true,
+    "onBackPress": true,
+    "onBeforeMount": true,
+    "onBeforeUnmount": true,
+    "onBeforeUpdate": true,
+    "onDeactivated": true,
+    "onError": true,
+    "onErrorCaptured": true,
+    "onHide": true,
+    "onLaunch": true,
+    "onLoad": true,
+    "onMounted": true,
+    "onNavigationBarButtonTap": true,
+    "onNavigationBarSearchInputChanged": true,
+    "onNavigationBarSearchInputClicked": true,
+    "onNavigationBarSearchInputConfirmed": true,
+    "onNavigationBarSearchInputFocusChanged": true,
+    "onPageNotFound": true,
+    "onPageScroll": true,
+    "onPullDownRefresh": true,
+    "onReachBottom": true,
+    "onReady": true,
+    "onRenderTracked": true,
+    "onRenderTriggered": true,
+    "onResize": true,
+    "onScopeDispose": true,
+    "onServerPrefetch": true,
+    "onShareAppMessage": true,
+    "onShareTimeline": true,
+    "onShow": true,
+    "onTabItemTap": true,
+    "onThemeChange": true,
+    "onUnhandledRejection": true,
+    "onUnload": true,
+    "onUnmounted": true,
+    "onUpdated": true,
+    "onWatcherCleanup": true,
+    "provide": true,
+    "reactive": true,
+    "readonly": true,
+    "ref": true,
+    "resolveComponent": true,
+    "setActivePinia": true,
+    "setMapStoreSuffix": true,
+    "shallowReactive": true,
+    "shallowReadonly": true,
+    "shallowRef": true,
+    "sleep": true,
+    "store": true,
+    "storeToRefs": true,
+    "themes": true,
+    "toRaw": true,
+    "toRef": true,
+    "toRefs": true,
+    "toValue": true,
+    "triggerRef": true,
+    "unref": true,
+    "useAppStore": true,
+    "useAttrs": true,
+    "useCssModule": true,
+    "useCssVars": true,
+    "useId": true,
+    "useModel": true,
+    "useOrderStore": true,
+    "useRechargeStore": true,
+    "useRichView": true,
+    "useRichViewStore": true,
+    "useRoute": true,
+    "useRouter": true,
+    "useSlots": true,
+    "useTemplateRef": true,
+    "useUserStore": true,
+    "useWebView": true,
+    "useWebsocketDataStore": true,
+    "useWebview": true,
+    "utf8ArrayToString": true,
+    "watch": true,
+    "watchEffect": true,
+    "watchPostEffect": true,
+    "watchSyncEffect": true,
+    "websocket": true,
+    "wsURL": true
+  }
+}

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+node_modules
+*.ts
+*.local
+.hbuilderx

+ 4 - 0
.npmrc

@@ -0,0 +1,4 @@
+registry=https://registry.npmmirror.com/
+shamefully-hoist=true
+strict-peer-dependencies=false
+auto-install-peers=true

+ 1 - 0
.nvmdrc

@@ -0,0 +1 @@
+22.15.0

+ 307 - 0
CHANGELOG.md

@@ -0,0 +1,307 @@
+# Changelog
+
+## [3.1.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.1.0...v3.1.1) (2025-10-23)
+
+
+### Bug Fixes
+
+* 🐛 修复用户存储导出缺失及持久化工具使用问题 ([2d75012](https://github.com/viarotel-org/vite-uniapp-template/commit/2d750127322c53ceb795f4cef15676c88265fcf3))
+
+## [3.1.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.0.5...v3.1.0) (2025-09-09)
+
+
+### Features
+
+* 🚀 新增意见反馈模板 ([69f9440](https://github.com/viarotel-org/vite-uniapp-template/commit/69f94404c3e02a75199c0f32af15701fbe8e39dc))
+
+
+### Bug Fixes
+
+* 🐛 修复微信小程序部分样式展示异常的问题 ([643e8e6](https://github.com/viarotel-org/vite-uniapp-template/commit/643e8e65f71dca56410cd84e99d712afc63ea57b))
+
+## [3.0.5](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.0.4...v3.0.5) (2025-09-02)
+
+
+### Bug Fixes
+
+* 🐛 解决 Windows 下云打包编译阶段卡死的问题 ([1b57707](https://github.com/viarotel-org/vite-uniapp-template/commit/1b57707dca3727b2c72ba948d9e6caf4712e08a4))
+
+## [3.0.4](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.0.3...v3.0.4) (2025-07-10)
+
+
+### Bug Fixes
+
+* 🐛 修复 windows 下静态资源插件路径转换异常的问题 ([ac3059f](https://github.com/viarotel-org/vite-uniapp-template/commit/ac3059f464d0fe82005d75c9e2cb27ca7556eeca))
+
+
+### Performance Improvements
+
+* 🔍️ 调整依赖项以解决 APP 端兼容性问题 ([d001f74](https://github.com/viarotel-org/vite-uniapp-template/commit/d001f747e8620e3965506110d3629121b79fd790))
+* 🚀 优化样式加载逻辑 ([6679418](https://github.com/viarotel-org/vite-uniapp-template/commit/667941827ca0c367a8982b733e6cc9706c4db635))
+
+## [3.0.3](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.0.2...v3.0.3) (2025-05-30)
+
+
+### Bug Fixes
+
+* 🐛 修复 APP 环境下依赖不兼容白屏问题 ([b892d59](https://github.com/viarotel-org/vite-uniapp-template/commit/b892d59bcde6d3f0e1bb7fc9f14596993d8958bd))
+
+## [3.0.2](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.0.1...v3.0.2) (2025-05-29)
+
+
+### Performance Improvements
+
+* 🚀 规范变量及目录结构命名 ([a636a67](https://github.com/viarotel-org/vite-uniapp-template/commit/a636a67c34325421a7a139b38cd7974a9a219b43))
+
+## [3.0.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v3.0.0...v3.0.1) (2025-05-29)
+
+
+### Performance Improvements
+
+* 🌐 专注于使用 pnpm 包管理器 ([07679c8](https://github.com/viarotel-org/vite-uniapp-template/commit/07679c8716692cb09571a05855edec1bddb5210e))
+
+## [3.0.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.7.3...v3.0.0) (2025-05-28)
+
+
+### Features
+
+* 🚀 对演示页面进行重新设计 ([8b07348](https://github.com/viarotel-org/vite-uniapp-template/commit/8b07348a6bc2f858a450249cbf4b3bcc09dec6b2))
+* 🚀 更新主页 ([5fcf0fe](https://github.com/viarotel-org/vite-uniapp-template/commit/5fcf0fe53820799e6d70aba78c845fc652aa4fc9))
+* 🚀 添加通用列表页面演示 ([a7ff94b](https://github.com/viarotel-org/vite-uniapp-template/commit/a7ff94badba52211507ff7faa8ade7e40c64b7ec))
+
+
+### Bug Fixes
+
+* 🚀 修复小程序使用 Unocss 不支持渐变的问题 ([c001a05](https://github.com/viarotel-org/vite-uniapp-template/commit/c001a05d7a73b3d7b02e5f01c5615adf3252d0bb))
+
+
+### Performance Improvements
+
+* 💄 对登录页面进行重新设计 ([84b77f4](https://github.com/viarotel-org/vite-uniapp-template/commit/84b77f45f31032bf9f9a02b7136d45d67d284160))
+* 🚀 Update ([527e84d](https://github.com/viarotel-org/vite-uniapp-template/commit/527e84d7604fbbb4fba7c9bc6264bd4379ae9a5e))
+* 🚀 优化分包目录架构 ([06ca08f](https://github.com/viarotel-org/vite-uniapp-template/commit/06ca08fb5c630b4f3b35964626ab6e92e7d473cd))
+* 🚀 优化生产环境细节 ([d7870d4](https://github.com/viarotel-org/vite-uniapp-template/commit/d7870d4403730f479d34c18e1c3e213a356836b5))
+* 🚀 固定依赖包版本 ([c2d3535](https://github.com/viarotel-org/vite-uniapp-template/commit/c2d35357679bc861aacc6e222f90eb32fc3b4899))
+* 🚀 对小程序进行兼容性适配 ([1514898](https://github.com/viarotel-org/vite-uniapp-template/commit/1514898af9270fc9e1022d06a00cc8f02a1aa9c6))
+* 🚀 重构路由方法 ([739b68e](https://github.com/viarotel-org/vite-uniapp-template/commit/739b68e8391ecdaf407a957a1e9636c8d7268996))
+* 🚀 重构项目结构 ([54549de](https://github.com/viarotel-org/vite-uniapp-template/commit/54549de63da96703f28f3c3d66e078a38548e978))
+
+
+### Miscellaneous Chores
+
+* release 3.0.0 ([51d7e50](https://github.com/viarotel-org/vite-uniapp-template/commit/51d7e500c9f70051627d16ab520f1c8b75bf3f98))
+
+## [2.7.3](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.7.2...v2.7.3) (2024-03-06)
+
+
+### Bug Fixes
+
+* 🐛 去除阶段模式环境变量 ([00e71c8](https://github.com/viarotel-org/vite-uniapp-template/commit/00e71c8731053a568b01c507950da51cb5c1f10e))
+
+## [2.7.2](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.7.1...v2.7.2) (2024-03-06)
+
+
+### Performance Improvements
+
+* ♻️ 使用环境变量实现接口域名切换 ([b571d42](https://github.com/viarotel-org/vite-uniapp-template/commit/b571d422e431f905872c65c27e72228613f0546c))
+* ♻️ 更新用户目录名称 ([c2b7f5e](https://github.com/viarotel-org/vite-uniapp-template/commit/c2b7f5ee57d1717408434f07f1f9fadd504a4f3b))
+
+## [2.7.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.7.0...v2.7.1) (2024-03-05)
+
+
+### Bug Fixes
+
+* 🐛 修复 app 端登录问题 ([b5b03b1](https://github.com/viarotel-org/vite-uniapp-template/commit/b5b03b172f3e64a24aba18f86b605d08edb7ca6a))
+
+## [2.7.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.6.1...v2.7.0) (2024-02-20)
+
+
+### Features
+
+* ✨ 启用新的 Eslint 配置 ([8dfeef3](https://github.com/viarotel-org/vite-uniapp-template/commit/8dfeef3095f7b8b01e5c867ab471239ec7990692))
+
+
+### Bug Fixes
+
+* 🐛 修复插件导致的编译错误 ([8b37bce](https://github.com/viarotel-org/vite-uniapp-template/commit/8b37bce8f66900c5c2ee6923ae0362aeb495cb4f))
+
+
+### Performance Improvements
+
+* ♻️ 启用 query-string  减小构建大小 并更新依赖版本 ([74de17a](https://github.com/viarotel-org/vite-uniapp-template/commit/74de17a256cd153fe4cd92687329bd850e2dfe85))
+* ♻️ 性能优化及依赖更新 ([1eccb37](https://github.com/viarotel-org/vite-uniapp-template/commit/1eccb3771205695d73c9add6f7a2377bd88ba74f))
+* ♻️ 文件结构及代码逻辑优化 ([3b66faf](https://github.com/viarotel-org/vite-uniapp-template/commit/3b66faf7fa49b5bce4855db07591dc87f2f4c62f))
+* ✨ 使用 @uni-helper/unocss-preset-uni ([705c794](https://github.com/viarotel-org/vite-uniapp-template/commit/705c794dd8daa74814e7614ad1c6d56847e392be))
+* 💄 更新属性名称 ([8698f52](https://github.com/viarotel-org/vite-uniapp-template/commit/8698f5233835d12ba3af09d24bb1295224c5def3))
+* 💄 更新服务器配置文件名 ([07500b5](https://github.com/viarotel-org/vite-uniapp-template/commit/07500b5d862364f57973ba997f25896b313c1629))
+* 📦️ 更新 unocss 版本 ([6839026](https://github.com/viarotel-org/vite-uniapp-template/commit/68390269e1c570debdf9e8810c8c6b9958cd38a2))
+
+## [2.6.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.6.0...v2.6.1) (2023-12-20)
+
+
+### Bug Fixes
+
+* 🐛 修复打包完成后无法自动停止终端的问题 ([e19b491](https://github.com/viarotel-org/vite-uniapp-template/commit/e19b491fa34baee4796df787681698c7676eac7c))
+
+## [2.6.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.5.5...v2.6.0) (2023-12-19)
+
+
+### Features
+
+* ✨ 采用新的 uv-ui 作为UI框架并更新依赖版本 ([44f5e98](https://github.com/viarotel-org/vite-uniapp-template/commit/44f5e988dec3bb31e124b643f7e500c60dffa111))
+
+
+### Performance Improvements
+
+* 📝 更新 Eslint 配置 ([5a2a92a](https://github.com/viarotel-org/vite-uniapp-template/commit/5a2a92a8f03fe4daae60b9a1ef9c2dca60fe0608))
+
+## [2.5.5](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.5.4...v2.5.5) (2023-10-18)
+
+
+### Bug Fixes
+
+* 🚀 修复在 app 端环境下路由插件系统使用异常的问题 ([894ca30](https://github.com/viarotel-org/vite-uniapp-template/commit/894ca308d236fce5846e8348590cfbe1c01838c6))
+
+## [2.5.4](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.5.3...v2.5.4) (2023-09-21)
+
+
+### Bug Fixes
+
+* 🔧 修复小程序端某些样式不生效的问题 ([e532395](https://github.com/viarotel-org/vite-uniapp-template/commit/e5323955809cf57d733064dfa2ebc14cc6f8f37f))
+
+## [2.5.3](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.5.2...v2.5.3) (2023-09-14)
+
+
+### Bug Fixes
+
+* 🐛 修复小程序环境打包失败的问题 ([14c9645](https://github.com/viarotel-org/vite-uniapp-template/commit/14c9645d3c4b3abd248816087b3edd16e9973fc1))
+
+## [2.5.2](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.5.1...v2.5.2) (2023-09-09)
+
+
+### Bug Fixes
+
+* 🔧 修复 uni-network 格式化参数的行为与 axios不一致的问题 ([00af3bf](https://github.com/viarotel-org/vite-uniapp-template/commit/00af3bfc50844ae45d5e860d86bf9aeabf3791d1))
+* 🔧 修复打包后由于方法名混淆导致路由中间件无法匹配触发的问题 ([37515aa](https://github.com/viarotel-org/vite-uniapp-template/commit/37515aa0f526ae3810a979a347cc997443061fe4))
+* 🔧 固定 qs 版本以解决不兼容微信小程序的问题 ([95f733e](https://github.com/viarotel-org/vite-uniapp-template/commit/95f733e8492e13688054739e6144b4fb39544696))
+
+## [2.5.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.5.0...v2.5.1) (2023-09-09)
+
+
+### Bug Fixes
+
+* 🗑️ 去除登录页面冗余的空白顶栏 ([25bc3bd](https://github.com/viarotel-org/vite-uniapp-template/commit/25bc3bda88e8da69f8122e7b3e75422560f0b23e))
+
+## [2.5.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.4.0...v2.5.0) (2023-09-09)
+
+
+### Features
+
+* 🚀 添加跳转外部网页功能 ([8d062a9](https://github.com/viarotel-org/vite-uniapp-template/commit/8d062a9d86126980181fb6e9ab0ca289f93b8c66))
+
+## [2.4.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.3.3...v2.4.0) (2023-09-08)
+
+
+### Features
+
+* 🚀 对部分页面样式进行改进并去除冗余的控制台输出 ([e73ba19](https://github.com/viarotel-org/vite-uniapp-template/commit/e73ba1933c594ecc5e8ad0317d6d35345f9e972f))
+
+## [2.3.3](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.3.2...v2.3.3) (2023-09-08)
+
+
+### Bug Fixes
+
+* 📈 修复入口页面模块引用格式不统一的问题 ([bd72731](https://github.com/viarotel-org/vite-uniapp-template/commit/bd72731cf866940aa4a4e1d84795bc035be05b8c))
+
+## [2.3.2](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.3.1...v2.3.2) (2023-09-08)
+
+
+### Bug Fixes
+
+* 🔧 修复同步脚本错误的问题 ([73d802a](https://github.com/viarotel-org/vite-uniapp-template/commit/73d802abf100f853ae1c1f41a650090a483bfa3c))
+
+## [2.3.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.3.0...v2.3.1) (2023-09-07)
+
+
+### Bug Fixes
+
+* 📝 修复文档描述错误 ([3325235](https://github.com/viarotel-org/vite-uniapp-template/commit/3325235dac5f0dac5301cbbafff111c1509548de))
+
+## [2.3.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.2.1...v2.3.0) (2023-09-05)
+
+
+### Features
+
+* 🎨 主题色定制相关配置功能更新 ([bcadbfa](https://github.com/viarotel-org/vite-uniapp-template/commit/bcadbfaf583a283804bd1ebdd6b5846ae11f0fb0))
+
+## [2.2.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.2.0...v2.2.1) (2023-09-01)
+
+
+### Bug Fixes
+
+* 🔧 修复使用 yarn 作为包管理器时启动项目报错的问题 ([1778bb9](https://github.com/viarotel-org/vite-uniapp-template/commit/1778bb9c4b56e097ba5cadc1ae6e37fd89357ca8))
+
+## [2.2.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.1.1...v2.2.0) (2023-08-29)
+
+
+### Features
+
+* 🚀 登录示例页面调整 ([a0c1688](https://github.com/viarotel-org/vite-uniapp-template/commit/a0c16881e36e836ee7d9215dfec4615e1984a2bb))
+
+## [2.1.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.1.0...v2.1.1) (2023-08-29)
+
+
+### Bug Fixes
+
+* bugfix ([9757722](https://github.com/viarotel-org/vite-uniapp-template/commit/97577229d7999f10a9efdcb3ef08efa8a3328cde))
+
+
+### Performance Improvements
+
+* 🚀 去除冗余的默认导出以降低生产包大小 ([88a529a](https://github.com/viarotel-org/vite-uniapp-template/commit/88a529a51541210c6a030fbb56ebc044173c0c28))
+
+## [2.1.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.0.1...v2.1.0) (2023-08-28)
+
+
+### Miscellaneous Chores
+
+* release 2.1.0 ([ccc4cb1](https://github.com/viarotel-org/vite-uniapp-template/commit/ccc4cb19295420b632f61ae4e5424809e55dc7b8))
+
+## [2.0.1](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.0.0...v2.0.1) (2023-08-14)
+
+
+### Performance Improvements
+
+* 🔧 调整路由导出方式以简化路由中间件定义方式 ([d0f9015](https://github.com/viarotel-org/vite-uniapp-template/commit/d0f901526adeed8ab60898a18d5ade046f14ceeb))
+
+## [2.0.0](https://github.com/viarotel-org/vite-uniapp-template/compare/v2.0.0...v2.0.0) (2023-08-09)
+
+
+### Features
+
+* ✨ 样式优化及调整 ([c3d4a56](https://github.com/viarotel-org/vite-uniapp-template/commit/c3d4a56e836f4af4cc1d929d16f9b46319c69617))
+* feat ([19894dc](https://github.com/viarotel-org/vite-uniapp-template/commit/19894dcbd075ba5181372df19c4e6c2387afa120))
+
+
+### Bug Fixes
+
+* :bug: bugfix ([2bf4391](https://github.com/viarotel-org/vite-uniapp-template/commit/2bf4391b96bd0b2e94acfcf7ee36a757d02808aa))
+* :bug: 修复 uni-vite-plugin-h5-prod-effect 导致 h5 打包后无法正常运行的问题 ([cfe09f6](https://github.com/viarotel-org/vite-uniapp-template/commit/cfe09f65eecc4d9e1f7867a4280e2a54feb10158))
+* 🐛 bugfix ([deaa1ec](https://github.com/viarotel-org/vite-uniapp-template/commit/deaa1ec2f283d9d54eb63e852ae1e30edb454dc1))
+* 📝 bugfix ([91ed0eb](https://github.com/viarotel-org/vite-uniapp-template/commit/91ed0eb09ee84dd62769a00293667ea9d6ce5622))
+* 📝 修复路由文件缺失导致报错的问题 ([4d51094](https://github.com/viarotel-org/vite-uniapp-template/commit/4d5109473f16c24530b797cd9aa6e48f36d862e9))
+
+### Performance Improvements
+
+* :ambulance: 减少生产环境下包大小 ([e1b67c6](https://github.com/viarotel-org/vite-uniapp-template/commit/e1b67c6fff1a2add11f498a0eba7bff70f794e4c))
+* :memo: ([dd8dcf5](https://github.com/viarotel-org/vite-uniapp-template/commit/dd8dcf598dec5721e27c3e953535f33af1a627c1))
+* 🎉 路由相关代码逻辑优化 ([101f828](https://github.com/viarotel-org/vite-uniapp-template/commit/101f828fcfdc8cdb04e29f6320d775fe84a2bfac))
+* 📝 去除冗余代码 ([6cc02e9](https://github.com/viarotel-org/vite-uniapp-template/commit/6cc02e9baa3933695215a11457253b9cdcf2e2bd))
+* 📝 去除冗余依赖 ([c98f33e](https://github.com/viarotel-org/vite-uniapp-template/commit/c98f33ef7e897640fa0b08fd1fda9dc9d5ed61e1))
+* perf ([a48a7fc](https://github.com/viarotel-org/vite-uniapp-template/commit/a48a7fc7875f81a1e4d299004c69b7dafde29b99))
+* 图标组件性能优化 ([1d2d89d](https://github.com/viarotel-org/vite-uniapp-template/commit/1d2d89d3708a72989a7fb4795a7c10d4ea076987))
+
+
+### Miscellaneous Chores
+
+* release 2.0.0 ([9990344](https://github.com/viarotel-org/vite-uniapp-template/commit/9990344751ab75dc77d2a1d7b00873b02148e656))

BIN
F1BET-APP.zip


+ 21 - 0
LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 viarotel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 296 - 0
README.md

@@ -0,0 +1,296 @@
+# Vite Uniapp Template
+
+[![Gitee](https://gitee.com/viarotel-org/vite-uniapp-template/badge/star.svg?theme=dark)](https://gitee.com/viarotel-org/vite-uniapp-template)
+[![GitHub](https://img.shields.io/github/stars/viarotel-org/vite-uniapp-template?label=Github%20Stars)](https://github.com/viarotel-org/vite-uniapp-template)
+[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/viarotel-org/vite-uniapp-template)
+
+🚀 **以实用为先的 uni-app 起手模板。** [查看演示](https://vite-uniapp-template.netlify.app/)
+
+该模板为您的 uniapp 项目提供了一个强大的起点,集成了现代化工具和精心设计的约定,以简化开发流程。
+
+## 核心特性
+
+- 💪 优化的资源管理: 无缝切换本地与远程静态资源。这对于克服小程序包大小限制至关重要。
+- 📦 智能分包: 清晰直观的 pages 目录结构,结合便捷的配置,轻松实现基于功能的分包。
+- 🛣 类 VueRouter 路由: 使用 [uniapp-router-next](https://www.npmjs.com/package/uniapp-router-next) 并进行了增强,如拦截器、中间件和路由别名,提供熟悉的 API 体验。
+- 📊 Pinia 状态管理: 借助 [Pinia](https://pinia.vuejs.org/) 实现强大且直观的应用状态管理。
+- ⚡️ 现代化请求工作流: 采用 [Alova](https://alova.js.org/),一个下一代请求库,简化数据获取流程。
+- 👇 内置 Z-Paging: 集成了高性能、易用的下拉分页组件,轻松实现下拉刷新和上拉加载更多等功能。
+- 💅 Unocss 原子化 CSS: 使用原子化 CSS 类名书写规范,即使在小程序环境下也完美支持。
+- 🎨 轻量级 UI 与主题化: 集成 [wot-design-uni](https://netlify.wot-design-uni.cn/),提供更轻量的 UI,满足绝大多数业务场景,并支持主题定制。
+- 📝 专注 JavaScript: 使用 JavaScript 构建,在常规业务场景或团队技能水平差异较大时,确保更平滑的开发体验。
+
+## 快速上手
+
+### 1. 克隆项目
+
+```shell
+git clone https://github.com/viarotel-org/vite-uniapp-template.git
+cd vite-uniapp-template
+```
+
+### 2. 安装依赖
+
+> 请使用 node@20.0 及以上版本。
+
+推荐使用 `pnpm` 安装依赖。当前未在 `npm` 或 `yarn` 环境下进行充分测试,可能存在依赖不兼容或版本对齐问题。
+
+```shell
+pnpm install
+```
+
+### 3. 运行项目
+
+#### 使用代码编辑器 (例如 VS Code)
+
+在项目根目录下执行以下命令:
+
+```shell
+# H5 平台
+pnpm dev:h5
+
+# 微信小程序
+pnpm dev:mp-weixin
+
+# Android App
+pnpm dev:app-android
+
+# 更多平台请参阅 package.json 中的 `scripts` 部分。
+```
+
+#### 使用 HBuilderX
+
+- 将项目文件夹拖拽到 HBuilderX 中。
+- 确保已安装依赖 (如果尚未安装,请在项目根目录运行 `pnpm install`)。
+- 点击项目 `/src` 目录下的任意文件。
+- 在 HBuilderX 菜单中,导航至“运行”并选择您的目标运行环境。
+
+## 功能示例
+
+### 创新的分包结构
+
+传统分包结构:
+
+```
+src/
+├── pages/           # 主包页面
+│   └── index.vue
+├── pages-user/      # 用户相关分包
+│   ├── profile.vue
+│   └── settings.vue
+└── pages-shop/      # 商城相关分包
+    ├── list.vue
+    └── detail.vue
+```
+
+vite-uniapp-template 的分包结构:
+
+```
+src/
+└── pages/
+    ├── index/           # 主包页面(必需)
+    │   ├── index.vue    # 首页(必需)
+    │   ├── category.vue # Tab页面
+    │   └── mine.vue     # Tab页面
+    ├── user/            # 用户分包
+    │   ├── login.vue
+    │   └── profile.vue
+    └── shop/            # 商城分包
+        ├── list.vue
+        └── detail.vue
+```
+
+分包配置示例:
+
+```javascript
+// pages.config.js
+export default {
+  // 主包配置
+  pages: [
+    {
+      path: 'pages/index/index',
+      style: {
+        navigationBarTitleText: '首页'
+      }
+    },
+    {
+      path: 'pages/index/category',
+      style: {
+        navigationBarTitleText: '分类'
+      }
+    }
+  ],
+
+  // 分包配置
+  subPackages: [
+    {
+      root: 'pages/user',
+      pages: [
+        {
+          path: 'login',
+          style: { navigationBarTitleText: '登录' }
+        }
+      ]
+    }
+  ]
+}
+```
+
+### 静态资源处理
+
+```bash
+# 本地开发模式 (.env.development)
+VITE_ASSETS_MODE=local
+
+# 生产环境 (.env.production)
+VITE_ASSETS_MODE=remote
+VITE_ASSETS_CDN=https://your-cdn.com/assets
+```
+
+使用示例:
+
+```html
+<image src="~@assets/images/logo.png" />
+<!-- 开发环境: /src/assets/images/logo.png -->
+<!-- 生产环境: https://your-cdn.com/assets/images/logo.png -->
+```
+
+更多配置请参考 `vite.config.plugins.js` 中的 `useAssetPathResolver` 插件
+
+### 全局主题定制
+
+由 `unocss-preset-shades` 提供支持。轻松应用您的主题颜色:
+
+```html
+<div class="text-primary-500"></div>
+
+<div class="bg-primary-500"></div>
+
+<!-- 仅在小程序中生效,具体使用方法请参考 [unocss-preset-uni](https://github.com/uni-helper/unocss-preset-uni)  -->
+<div class="uni-mp:border uni-mp:border-primary-500"></div>
+```
+
+### 页面导航
+
+与 Vue Router 类似,您可以通过编程方式进行导航:
+
+#### 在模板中:
+
+```javascript
+// 跳转到登录页并携带查询参数
+this.$Router.push({
+  path: '/login',
+  query: {
+    id: 'someId',
+  },
+})
+
+// 获取路由参数
+const userId = this.$Route.query.id
+
+// 替换当前页面
+this.$Router.replace('/dashboard')
+
+// 关闭所有页面并跳转
+this.$Router.replaceAll('/home')
+```
+
+#### 在脚本中 (支持自动导入):
+
+```javascript
+// 已预置自动导入该部分可省略
+// import { useRoute, useRouter } from '$uni-router'
+
+const router = useRouter()
+const route = useRoute()
+
+router.push('/settings')
+console.log(route.query)
+```
+
+#### 路由别名 (`pages.config.js`):
+
+```javascript
+const aliasConfig = {
+  path: 'pages/login/index', // 实际路径
+  aliasPath: '/login', // 别名
+}
+```
+
+### 路由守卫
+
+实现导航守卫以处理权限验证等逻辑:
+
+```javascript
+// 示例: src/permission/login/index.js
+router.beforeEach((to, from, next) => {
+  // 在此编写你的逻辑 (例如:检查用户是否已认证)
+  // if (to.path === '/profile' && !isAuthenticated) {
+  //   next('/login');
+  // } else {
+  //   next();
+  // }
+  next() // 默认继续导航
+})
+
+router.afterEach((to, from) => {
+  // 导航后逻辑
+})
+```
+
+> 具体实现请参阅 `src/permission` 目录。
+
+### 路由中间件
+
+对特定路由应用中间件以实现精细化控制。
+
+#### 使用中间件 (`pages.config.js`):
+
+```javascript
+// 对用户页面应用 'test' 中间件
+const pageConfig = {
+  path: '/pages/user/index',
+  aliasPath: '/user',
+  meta: {
+    middleware: ['test'],
+  },
+}
+```
+
+#### 定义中间件:
+
+中间件代码结构与路由守卫基本一致,但仅拦截在其声明的路由中配置的中间件。
+
+```javascript
+// 示例: src/permission/test/index.js
+import { defineMiddleware } from '$uni-router'
+import testMiddlewareLogic from './test/index.js'
+
+export default (app, router) => {
+  defineMiddleware('test', testMiddlewareLogic, { router, app })
+}
+```
+
+## 常见问题
+
+- **依赖安装/启动失败**:
+  如果遇到问题,尝试删除 `pnpm-lock.yaml`、`yarn.lock` 或 `package-lock.json` 文件,然后重新运行安装命令 (例如 `pnpm install`)。
+- **路由守卫陷入循环**:
+  路由守卫中页面跳转不支持路径别名,请使用实际路径,避免使用别名(aliasPath)。
+
+## 获取支持
+
+这是一个依靠热爱驱动的开源项目,因此支持会根据时间情况提供,更新节奏可能不固定。
+
+- **项目问题与反馈**: [在 GitHub 上提交 Issue](https://github.com/viarotel-org/vite-uniapp-template/issues)
+- **联系方式**: viarotel@qq.com
+
+## 支持本项目
+
+如果该项目帮到你的话,可以请我喝杯咖啡,让我更有精神完善该项目 😛
+
+<div style="display:flex;">
+  <img src="https://cdn.jsdelivr.net/gh/viarotel-org/escrcpy@main/src/assets/sponsor/viarotel-wepay.png" alt="viarotel-wepay" width="30%">
+  <img src="https://cdn.jsdelivr.net/gh/viarotel-org/escrcpy@main/src/assets/sponsor/viarotel-alipay.png" alt="viarotel-alipay" width="30%">
+  <img src="https://cdn.jsdelivr.net/gh/viarotel-org/escrcpy@main/src/assets/sponsor/viarotel-paypal.png" alt="viarotel-paypal" width="30%">
+</div>

+ 11 - 0
dist/build/.nvue/app.css.js

@@ -0,0 +1,11 @@
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __commonJS = (cb, mod) => function __require() {
+  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var require_app_css = __commonJS({
+  "app.css.js"(exports) {
+    const _style_0 = {};
+    exports.styles = [_style_0];
+  }
+});
+export default require_app_css();

+ 1205 - 0
dist/build/.nvue/app.js

@@ -0,0 +1,1205 @@
+var _a, _b;
+import { reactive, ref } from "vue";
+class Router {
+  // route: (options?: string | RouterConfig, params?: Record<string, any>) => Promise<void>;
+  constructor() {
+    this.config = {
+      type: "navigateTo",
+      url: "",
+      delta: 1,
+      // navigateBack页面后退时,回退的层数
+      params: {},
+      // 传递的参数
+      animationType: "pop-in",
+      // 窗口动画,只在APP有效
+      animationDuration: 300,
+      // 窗口动画持续时间,单位毫秒,只在APP有效
+      intercept: false
+      // 是否需要拦截
+    };
+    this.route = this.route.bind(this);
+  }
+  // 判断url前面是否有"/",如果没有则加上,否则无法跳转
+  addRootPath(url) {
+    return url[0] === "/" ? url : `/${url}`;
+  }
+  // 整合路由参数
+  mixinParam(url, params) {
+    url = url && this.addRootPath(url);
+    let query = "";
+    if (/.*\/.*\?.*=.*/.test(url)) {
+      query = uni.$u.queryParams(params, false);
+      return url + "&" + query;
+    } else {
+      query = uni.$u.queryParams(params);
+      return url + query;
+    }
+  }
+  /**
+   * 路由跳转主方法
+   * @param options 跳转配置或url字符串
+   * @param params 跳转参数
+   */
+  async route(options = {}, params = {}) {
+    let mergeConfig = {};
+    if (typeof options === "string") {
+      mergeConfig.url = this.mixinParam(options, params);
+      mergeConfig.type = "navigateTo";
+    } else {
+      mergeConfig = uni.$u.deepMerge(this.config, options);
+      mergeConfig.url = this.mixinParam(options.url || "", options.params || {});
+    }
+    if (params.intercept) {
+      this.config.intercept = params.intercept;
+    }
+    mergeConfig.params = params;
+    mergeConfig = uni.$u.deepMerge(this.config, mergeConfig);
+    if (uni.$u.routeIntercept && typeof uni.$u.routeIntercept === "function") {
+      const isNext = await new Promise((resolve) => {
+        uni.$u.routeIntercept(mergeConfig, resolve);
+      });
+      isNext && this.openPage(mergeConfig);
+    } else {
+      this.openPage(mergeConfig);
+    }
+  }
+  // 执行路由跳转
+  openPage(config2) {
+    const { url = "", type = "", delta = 1, animationDuration = 300 } = config2;
+    if (type == "navigateTo" || type == "to") {
+      uni.navigateTo({ url, animationDuration });
+    }
+    if (type == "redirectTo" || type == "redirect") {
+      uni.redirectTo({ url });
+    }
+    if (type == "switchTab" || type == "tab") {
+      uni.switchTab({ url });
+    }
+    if (type == "reLaunch" || type == "launch") {
+      uni.reLaunch({ url });
+    }
+    if (type == "navigateBack" || type == "back") {
+      uni.navigateBack({ delta });
+    }
+  }
+}
+new Router().route;
+if (!String.prototype.padStart) {
+  String.prototype.padStart = function(maxLength, fillString = " ") {
+    if (Object.prototype.toString.call(fillString) !== "[object String]")
+      throw new TypeError("fillString must be String");
+    let str = this;
+    if (str.length >= maxLength)
+      return String(str);
+    let fillLength = maxLength - str.length, times = Math.ceil(fillLength / fillString.length);
+    while (times >>= 1) {
+      fillString += fillString;
+      if (times === 1) {
+        fillString += fillString;
+      }
+    }
+    return fillString.slice(0, fillLength) + str;
+  };
+}
+const version = "0.5.7";
+const config = reactive({
+  v: version,
+  version,
+  // 主题名称
+  type: ["primary", "success", "info", "error", "warning"],
+  // 默认为官方主题名称
+  defaultTheme: "uviewpro",
+  // 默认为亮色模式
+  defaultDarkMode: "light",
+  // 默认为中文
+  defaultLocale: "zh-CN"
+});
+const lightPalette = {
+  primary: "#2979ff",
+  primaryDark: "#2b85e4",
+  primaryDisabled: "#a0cfff",
+  primaryLight: "#ecf5ff",
+  success: "#19be6b",
+  successDark: "#18b566",
+  successDisabled: "#71d5a1",
+  successLight: "#dbf1e1",
+  warning: "#ff9900",
+  warningDark: "#f29100",
+  warningDisabled: "#fcbd71",
+  warningLight: "#fdf6ec",
+  error: "#fa3534",
+  errorDark: "#dd6161",
+  errorDisabled: "#fab6b6",
+  errorLight: "#fef0f0",
+  info: "#909399",
+  infoDark: "#82848a",
+  infoDisabled: "#c8c9cc",
+  infoLight: "#f4f4f5",
+  whiteColor: "#ffffff",
+  blackColor: "#000000",
+  mainColor: "#303133",
+  contentColor: "#606266",
+  tipsColor: "#909399",
+  lightColor: "#c0c4cc",
+  borderColor: "#dcdfe6",
+  dividerColor: "#e4e7ed",
+  maskColor: "rgba(0, 0, 0, 0.4)",
+  shadowColor: "rgba(0, 0, 0, 0.1)",
+  bgColor: "#f3f4f6",
+  bgWhite: "#ffffff",
+  bgGrayLight: "#f1f1f1",
+  bgGrayDark: "#2f343c",
+  bgBlack: "#000000"
+};
+const darkPalette = {
+  primary: "#8ab4ff",
+  primaryDark: "#5f8dff",
+  primaryDisabled: "#3d4f74",
+  primaryLight: "#1d273f",
+  success: "#4ade80",
+  successDark: "#1f9d57",
+  successDisabled: "#2f4d3d",
+  successLight: "#10291f",
+  warning: "#fbbf24",
+  warningDark: "#c88f00",
+  warningDisabled: "#4a3b17",
+  warningLight: "#2b1f05",
+  error: "#ff6b6b",
+  errorDark: "#d83a3a",
+  errorDisabled: "#4f2323",
+  errorLight: "#2d1414",
+  info: "#a0a7b8",
+  infoDark: "#7c8394",
+  infoDisabled: "#3b3f4c",
+  infoLight: "#1d2029",
+  whiteColor: "#f5f6f7",
+  blackColor: "#f5f6f7",
+  mainColor: "#f5f6f7",
+  contentColor: "#cfd3dc",
+  tipsColor: "#9aa1af",
+  lightColor: "#6b7082",
+  borderColor: "#3a4251",
+  dividerColor: "#3a4251",
+  maskColor: "rgba(0, 0, 0, 0.6)",
+  shadowColor: "rgba(0, 0, 0, 0.3)",
+  bgColor: "#111827",
+  bgWhite: "#000000",
+  bgGrayLight: "#1a1a1a",
+  bgGrayDark: "#f5f7fa",
+  bgBlack: "#ffffff"
+};
+const lightCss = {
+  "--u-background": "#ffffff",
+  "--u-surface": "#f7f8fa",
+  "--u-text": "#303133"
+};
+const darkCss = {
+  "--u-background": "#0f1115",
+  "--u-surface": "#1c2233",
+  "--u-text": "#f5f6f7"
+};
+const defaultThemes = [
+  {
+    name: config.defaultTheme,
+    label: "默认蓝",
+    description: "uView Pro 默认主题,支持亮色与暗黑模式",
+    color: lightPalette,
+    darkColor: darkPalette,
+    css: lightCss,
+    darkCss
+  }
+];
+const color = reactive({ ...lightPalette });
+function getSystemDarkMode() {
+  try {
+    if (typeof uni !== "undefined" && typeof uni.getSystemInfoSync === "function") {
+      const systemInfo = uni.getSystemInfoSync();
+      const theme = systemInfo.osTheme || systemInfo.theme || "light";
+      if (theme === "dark") {
+        return "dark";
+      }
+      if (theme === "light") {
+        return "light";
+      }
+    }
+  } catch (e) {
+    console.warn("[system-theme] getSystemDarkMode failed", e);
+  }
+  return "light";
+}
+const zhCN = {
+  name: "zh-CN",
+  label: "简体中文",
+  locale: "zh-Hans",
+  uActionSheet: {
+    cancelText: "取消"
+  },
+  uUpload: {
+    uploadText: "选择图片",
+    retry: "点击重试",
+    overSize: "超出允许的文件大小",
+    overMaxCount: "超出最大允许的文件个数",
+    reUpload: "重新上传",
+    uploadFailed: "上传失败,请重试",
+    modalTitle: "提示",
+    deleteConfirm: "您确定要删除此项吗?",
+    terminatedRemove: "已终止移除",
+    removeSuccess: "移除成功",
+    previewFailed: "预览图片失败",
+    notAllowedExt: "不允许选择{ext}格式的文件",
+    noAction: "请配置上传地址"
+  },
+  uVerificationCode: {
+    startText: "获取验证码",
+    changeText: "X秒重新获取",
+    endText: "重新获取"
+  },
+  uSection: {
+    subTitle: "更多"
+  },
+  uSelect: {
+    cancelText: "取消",
+    confirmText: "确认"
+  },
+  uSearch: {
+    placeholder: "请输入关键字",
+    actionText: "搜索"
+  },
+  uNoNetwork: {
+    tips: "哎呀,网络信号丢失",
+    checkNetwork: "请检查网络,或前往",
+    setting: "设置",
+    retry: "重试",
+    noConnection: "无网络连接",
+    connected: "网络已连接"
+  },
+  uReadMore: {
+    closeText: "展开阅读全文",
+    openText: "收起"
+  },
+  uPagination: {
+    prevText: "上一页",
+    nextText: "下一页"
+  },
+  uPicker: {
+    cancelText: "取消",
+    confirmText: "确认"
+  },
+  uModal: {
+    title: "提示",
+    content: "内容",
+    confirmText: "确认",
+    cancelText: "取消"
+  },
+  uLoadmore: {
+    loadmore: "加载更多",
+    loading: "正在加载...",
+    nomore: "没有更多了"
+  },
+  uLink: {
+    mpTips: "链接已复制,请在浏览器打开"
+  },
+  uKeyboard: {
+    cancelText: "取消",
+    confirmText: "确认",
+    number: "数字键盘",
+    idCard: "身份证键盘",
+    plate: "车牌号键盘"
+  },
+  uInput: {
+    placeholder: "请输入内容"
+  },
+  uCalendar: {
+    startText: "开始",
+    endText: "结束",
+    toolTip: "选择日期",
+    outOfRange: "日期超出范围啦~",
+    year: "年",
+    month: "月",
+    sun: "日",
+    mon: "一",
+    tue: "二",
+    wed: "三",
+    thu: "四",
+    fri: "五",
+    sat: "六",
+    confirmText: "确定",
+    to: "至"
+  },
+  uEmpty: {
+    car: "购物车为空",
+    page: "页面不存在",
+    search: "没有搜索结果",
+    address: "没有收货地址",
+    wifi: "没有WiFi",
+    order: "订单为空",
+    coupon: "没有优惠券",
+    favor: "暂无收藏",
+    permission: "无权限",
+    history: "无历史记录",
+    news: "无新闻列表",
+    message: "消息列表为空",
+    list: "列表为空",
+    data: "数据为空"
+  },
+  uCountDown: {
+    day: "天",
+    hour: "时",
+    minute: "分",
+    second: "秒"
+  },
+  uFullScreen: {
+    title: "发现新版本",
+    upgrade: "升级"
+  }
+};
+const enUS = {
+  name: "en-US",
+  label: "English",
+  locale: "en",
+  uActionSheet: {
+    cancelText: "Cancel"
+  },
+  uUpload: {
+    uploadText: "Select Image",
+    retry: "Retry",
+    overSize: "File size exceeds allowed limit",
+    overMaxCount: "Exceeds maximum allowed number of files",
+    reUpload: "Re-upload",
+    uploadFailed: "Upload failed, please try again",
+    modalTitle: "Notice",
+    deleteConfirm: "Are you sure you want to delete this item?",
+    terminatedRemove: "Removal cancelled",
+    removeSuccess: "Removed successfully",
+    previewFailed: "Failed to preview image",
+    notAllowedExt: "Files with {ext} format are not allowed",
+    noAction: "Please configure upload address"
+  },
+  uVerificationCode: {
+    startText: "Get Code",
+    changeText: "Retry in Xs",
+    endText: "Retry"
+  },
+  uSection: {
+    subTitle: "More"
+  },
+  uSelect: {
+    cancelText: "Cancel",
+    confirmText: "Confirm"
+  },
+  uSearch: {
+    placeholder: "Please enter keywords",
+    actionText: "Search"
+  },
+  uNoNetwork: {
+    tips: "Ooops, network disconnected",
+    checkNetwork: "Please check network or go to",
+    setting: "Settings",
+    retry: "Retry",
+    noConnection: "No network connection",
+    connected: "Network connected"
+  },
+  uReadMore: {
+    closeText: "Read More",
+    openText: "Collapse"
+  },
+  uPagination: {
+    prevText: "Prev",
+    nextText: "Next"
+  },
+  uPicker: {
+    cancelText: "Cancel",
+    confirmText: "Confirm"
+  },
+  uModal: {
+    title: "Notice",
+    content: "Content",
+    confirmText: "Confirm",
+    cancelText: "Cancel"
+  },
+  uLoadmore: {
+    loadmore: "Load more",
+    loading: "Loading...",
+    nomore: "No more"
+  },
+  uLink: {
+    mpTips: "Link copied, please open it in browser"
+  },
+  uKeyboard: {
+    cancelText: "Cancel",
+    confirmText: "Confirm",
+    number: "Number Keyboard",
+    idCard: "ID Card Keyboard",
+    plate: "Plate Keyboard"
+  },
+  uInput: {
+    placeholder: "Please enter"
+  },
+  uCalendar: {
+    startText: "Start",
+    endText: "End",
+    toolTip: "Select date",
+    outOfRange: "Date out of range",
+    year: "",
+    month: "",
+    sun: "Sun",
+    mon: "Mon",
+    tue: "Tue",
+    wed: "Wed",
+    thu: "Thu",
+    fri: "Fri",
+    sat: "Sat",
+    confirmText: "Confirm",
+    to: " to "
+  },
+  uEmpty: {
+    car: "Shopping cart is empty",
+    page: "Page not found",
+    search: "No search results",
+    address: "No shipping address",
+    wifi: "No WiFi",
+    order: "No orders",
+    coupon: "No coupons",
+    favor: "No favorites",
+    permission: "No permission",
+    history: "No history",
+    news: "No news",
+    message: "No messages",
+    list: "No list",
+    data: "No data"
+  },
+  uCountDown: {
+    day: "days",
+    hour: "hours",
+    minute: "minutes",
+    second: "Second"
+  },
+  uFullScreen: {
+    title: "New Version Available",
+    upgrade: "Upgrade"
+  }
+};
+const localePack = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+  __proto__: null,
+  enUS,
+  zhCN
+}, Symbol.toStringTag, { value: "Module" }));
+const THEME_STORAGE_KEY = "uview-pro-theme";
+const DARK_MODE_STORAGE_KEY = "uview-pro-dark-mode";
+const LOCALE_STORAGE_KEY = "uview-pro-locale";
+const DEFAULT_LIGHT_TOKENS = ((_a = defaultThemes[0]) == null ? void 0 : _a.color) || {};
+const DEFAULT_DARK_TOKENS = ((_b = defaultThemes[0]) == null ? void 0 : _b.darkColor) || {};
+const STRUCTURAL_TOKENS = /* @__PURE__ */ new Set([
+  "bgColor",
+  "bgWhite",
+  "bgGrayLight",
+  "bgGrayDark",
+  "bgBlack",
+  "borderColor",
+  "lightColor",
+  "mainColor",
+  "contentColor",
+  "tipsColor",
+  "whiteColor",
+  "blackColor",
+  "dividerColor",
+  "maskColor",
+  "shadowColor"
+]);
+class ConfigProvider {
+  constructor() {
+    this.themesRef = ref([]);
+    this.currentThemeRef = ref(null);
+    this.darkModeRef = ref(config.defaultDarkMode);
+    this.cssVarsRef = ref({});
+    this.localesRef = ref([]);
+    this.currentLocaleRef = ref(null);
+    this.baseColorTokens = DEFAULT_LIGHT_TOKENS;
+    this.baseDarkColorTokens = DEFAULT_DARK_TOKENS;
+    this.debug = false;
+    this.systemDarkModeMediaQuery = null;
+    this.lastAppliedCssKeys = [];
+    this.interval = 0;
+    this.initSystemDarkModeListener();
+  }
+  /**
+   * 初始化系统暗黑模式监听器
+   * 支持 H5、App、小程序等平台
+   */
+  initSystemDarkModeListener() {
+    try {
+      if (typeof window !== "undefined" && window.matchMedia) {
+        this.systemDarkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
+        const listener = () => {
+          if (this.darkModeRef.value === "auto") {
+            this.applyTheme(this.currentThemeRef.value);
+          }
+        };
+        if (this.systemDarkModeMediaQuery.addEventListener) {
+          this.systemDarkModeMediaQuery.addEventListener("change", listener);
+        } else if (this.systemDarkModeMediaQuery.addListener) {
+          this.systemDarkModeMediaQuery.addListener(listener);
+        }
+      }
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] H5 system dark mode listener failed", e);
+    }
+    try {
+      if (typeof uni !== "undefined" && typeof uni.onThemeChange === "function") {
+        uni.onThemeChange((res) => {
+          console.log("[ConfigProvider] system theme changed", res);
+          if (this.darkModeRef.value === "auto") {
+            this.applyTheme(this.currentThemeRef.value);
+          }
+        });
+      }
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] uni-app system dark mode listener failed", e);
+    }
+    this.initAppEvent();
+  }
+  /**
+   * App 平台事件监听
+   * 经测试 uni.onThemeChange 在 App 平台目前没生效,暂时只能通过定时检查
+   */
+  initAppEvent() {
+    try {
+      if (this.interval)
+        clearInterval(this.interval);
+      this.interval = setInterval(() => {
+        if (this.darkModeRef.value === "auto") {
+          this.applyTheme(this.currentThemeRef.value);
+        }
+      }, 5e3);
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] setInterval failed", e);
+    }
+  }
+  /**
+   * 检测当前是否应该使用暗黑模式
+   */
+  isSystemDarkMode() {
+    try {
+      if (this.systemDarkModeMediaQuery) {
+        return this.systemDarkModeMediaQuery.matches;
+      }
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] matchMedia check failed", e);
+    }
+    try {
+      return getSystemDarkMode() === "dark";
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] native system theme check failed", e);
+      return false;
+    }
+  }
+  /**
+   * 初始化主题系统
+   * @param themes 可用主题数组
+   * @param defaultTheme 可选默认主题名
+   */
+  initTheme(themes, defaultConfig, isForce) {
+    const normalizedThemes = this.normalizeThemes(themes);
+    if (!normalizedThemes.length) {
+      console.warn("[ConfigProvider] init called with empty themes");
+      return;
+    }
+    if (defaultConfig) {
+      if (typeof defaultConfig === "string") {
+        config.defaultTheme = defaultConfig || config.defaultTheme;
+      } else if (typeof defaultConfig === "object") {
+        const { defaultTheme, defaultDarkMode } = defaultConfig;
+        config.defaultTheme = defaultTheme || config.defaultTheme;
+        config.defaultDarkMode = defaultDarkMode || config.defaultDarkMode;
+      }
+    }
+    this.themesRef.value = normalizedThemes.slice();
+    const saved = this.readStorage(THEME_STORAGE_KEY);
+    let initialName = saved || config.defaultTheme || this.themesRef.value[0].name;
+    if (isForce && config.defaultTheme)
+      initialName = config.defaultTheme;
+    let found = this.themesRef.value.find((t) => t.name === initialName);
+    if (!found)
+      found = this.themesRef.value.find((t) => t.name === config.defaultTheme);
+    if (!found)
+      found = this.themesRef.value[0];
+    this.currentThemeRef.value = found;
+    this.initDarkMode(config.defaultDarkMode, isForce);
+    this.applyTheme(found);
+    if (this.debug)
+      console.log("[ConfigProvider] initialized, theme=", found.name, "darkMode=", this.darkModeRef.value);
+    return this;
+  }
+  /**
+   * 初始化暗黑模式设置
+   * @param darkMode
+   */
+  initDarkMode(darkMode, isForce) {
+    const savedDarkMode = this.readStorage(DARK_MODE_STORAGE_KEY);
+    let darkModeValue = savedDarkMode || darkMode || config.defaultDarkMode;
+    if (isForce && darkMode)
+      darkModeValue = darkMode;
+    this.darkModeRef.value = darkModeValue;
+  }
+  /**
+   * 初始化国际化数据
+   * @param locales 可选的 locale 列表(对象数组,包含 name 字段)
+   * @param defaultLocaleName 可选默认 locale 名称
+   */
+  initLocales(locales, defaultLocaleName, isForce) {
+    const normalized = this.normalizeLocales(locales);
+    if (!normalized.length) {
+      if (this.debug)
+        console.warn("[ConfigProvider] initLocales called with empty locales");
+      return;
+    }
+    this.localesRef.value = normalized.slice();
+    const saved = this.readStorage(LOCALE_STORAGE_KEY);
+    let initialName = saved || defaultLocaleName || config.defaultLocale;
+    if (isForce && defaultLocaleName)
+      initialName = defaultLocaleName;
+    let found = this.localesRef.value.find((l) => l.name === initialName);
+    if (!found)
+      found = this.localesRef.value.find((l) => l.name === config.defaultLocale);
+    if (!found)
+      found = this.localesRef.value[0];
+    this.currentLocaleRef.value = found;
+    if (this.debug)
+      console.log("[ConfigProvider] locales initialized, locale=", found == null ? void 0 : found.name);
+    return this;
+  }
+  /**
+   * 归一化 locale 配置,保证始终至少有一个默认 locale
+   */
+  normalizeLocales(locales) {
+    let builtinList = [];
+    try {
+      builtinList = Object.values(localePack || {}).filter((v) => v && typeof v === "object");
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] normalizeLocales read builtin failed", e);
+    }
+    if (!Array.isArray(locales) || !locales.length) {
+      return builtinList.slice();
+    }
+    const map = /* @__PURE__ */ new Map();
+    builtinList.forEach((item) => {
+      if (item && item.name) {
+        map.set(item.name, { ...item || {} });
+      }
+    });
+    locales.forEach((loc) => {
+      if (!loc || !loc.name)
+        return;
+      const existing = map.get(loc.name);
+      if (!existing) {
+        map.set(loc.name, { ...loc || {} });
+        return;
+      }
+      const merged = { ...existing };
+      Object.keys(loc).forEach((k) => {
+        const v = loc[k];
+        if (v != null && typeof v === "object" && !Array.isArray(v) && typeof merged[k] === "object") {
+          merged[k] = { ...merged[k] || {}, ...v || {} };
+        } else {
+          merged[k] = v;
+        }
+      });
+      map.set(loc.name, merged);
+    });
+    return Array.from(map.values());
+  }
+  /**
+   * 获取所有可用 locale
+   */
+  getLocales() {
+    return this.localesRef.value.slice();
+  }
+  /**
+   * 获取当前 locale 对象
+   */
+  getCurrentLocale() {
+    return this.currentLocaleRef.value;
+  }
+  /**
+   * 切换 locale 并持久化
+   */
+  setLocale(localeName) {
+    if (!this.localesRef.value || this.localesRef.value.length === 0) {
+      console.warn("[ConfigProvider] setLocale called but locales list empty");
+      return;
+    }
+    const locale = this.localesRef.value.find((l) => l.name === localeName);
+    if (!locale) {
+      console.warn("[ConfigProvider] locale not found:", localeName);
+      return;
+    }
+    this.currentLocaleRef.value = locale;
+    this.writeStorage(LOCALE_STORAGE_KEY, localeName);
+    if (this.debug)
+      console.log("[ConfigProvider] setLocale ->", localeName);
+  }
+  /**
+   * 翻译函数
+   * 支持 key 路径,例如 'calendar.placeholder'
+   * replacements 支持数组或对象替换占位符 {0} 或 {name}
+   */
+  t(key, replacements, localeName) {
+    try {
+      if (!Array.isArray(this.localesRef.value) || this.localesRef.value.length === 0) {
+        this.initLocales();
+      }
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] lazy initLocales failed", e);
+    }
+    const localeObj = localeName && this.localesRef.value.find((l) => l.name === localeName) || this.currentLocaleRef.value;
+    if (!localeObj)
+      return key;
+    const parts = key.split(".");
+    let cur = localeObj;
+    for (let i = 0; i < parts.length; i++) {
+      if (cur == null)
+        break;
+      cur = cur[parts[i]];
+    }
+    let text = typeof cur === "string" ? cur : key;
+    if (replacements != null) {
+      if (Array.isArray(replacements)) {
+        replacements.forEach((val, idx) => {
+          text = text.split(`{${idx}}`).join(String(val));
+        });
+      } else if (typeof replacements === "object") {
+        Object.keys(replacements).forEach((k) => {
+          text = text.split(`{${k}}`).join(String(replacements[k]));
+        });
+      }
+    }
+    return text;
+  }
+  /**
+   * 获取所有可用主题
+   */
+  getThemes() {
+    return this.themesRef.value.slice();
+  }
+  /**
+   * 获取当前主题
+   */
+  getCurrentTheme() {
+    return this.currentThemeRef.value;
+  }
+  /**
+   * 切换主题并持久化
+   */
+  setTheme(themeName) {
+    if (!this.themesRef.value || this.themesRef.value.length === 0) {
+      console.warn("[ConfigProvider] setTheme called but themes list empty");
+      return;
+    }
+    const theme = this.themesRef.value.find((t) => t.name === themeName);
+    if (!theme) {
+      console.warn("[ConfigProvider] theme not found:", themeName);
+      return;
+    }
+    this.currentThemeRef.value = theme;
+    this.applyTheme(theme);
+    this.writeStorage(THEME_STORAGE_KEY, themeName);
+    if (this.debug)
+      console.log("[ConfigProvider] setTheme ->", themeName);
+  }
+  /**
+   * 运行时更新当前主题颜色并应用(不持久化)
+   * @param colors 主题颜色键值,支持部分更新
+   */
+  setThemeColor(colors) {
+    if (!colors || Object.keys(colors).length === 0)
+      return;
+    if (!this.currentThemeRef.value) {
+      console.warn("[ConfigProvider] setThemeColor called but no current theme");
+      return;
+    }
+    const mode = this.getActiveMode();
+    if (mode === "dark") {
+      const existing = this.currentThemeRef.value.darkColor || {};
+      this.currentThemeRef.value.darkColor = {
+        ...existing,
+        ...colors
+      };
+    } else {
+      const existing = this.currentThemeRef.value.color || {};
+      this.currentThemeRef.value.color = {
+        ...existing,
+        ...colors
+      };
+    }
+    this.applyTheme(this.currentThemeRef.value);
+    if (this.debug)
+      console.log("[ConfigProvider] setThemeColor ->", colors);
+  }
+  /**
+   * 获取当前暗黑模式设置
+   */
+  getDarkMode() {
+    return this.darkModeRef.value;
+  }
+  /**
+   * 设置暗黑模式
+   * @param mode 'auto' (跟随系统) | 'light' (强制亮色) | 'dark' (强制暗黑)
+   */
+  setDarkMode(mode) {
+    this.darkModeRef.value = mode;
+    this.writeStorage(DARK_MODE_STORAGE_KEY, mode);
+    this.applyTheme(this.currentThemeRef.value);
+    if (this.debug)
+      console.log("[ConfigProvider] setDarkMode ->", mode);
+  }
+  /**
+   * 检查当前是否处于暗黑模式
+   */
+  isInDarkMode() {
+    const mode = this.darkModeRef.value;
+    if (mode === "dark")
+      return true;
+    if (mode === "light")
+      return false;
+    return this.isSystemDarkMode();
+  }
+  /**
+   * 归一化主题配置,保证始终至少有一个默认主题
+   */
+  normalizeThemes(themes) {
+    if (Array.isArray(themes) && themes.length) {
+      return this.mergeThemes(defaultThemes, themes);
+    }
+    return defaultThemes.slice();
+  }
+  mergeThemes(...lists) {
+    const map = /* @__PURE__ */ new Map();
+    lists.filter((list) => Array.isArray(list) && list.length > 0).forEach((list) => {
+      list.forEach((theme) => {
+        const normalized = this.ensureDarkVariant({
+          ...theme,
+          color: this.applyColorFallbacks(theme.color),
+          darkColor: theme.darkColor ? { ...theme.darkColor } : void 0,
+          css: theme.css ? { ...theme.css } : void 0,
+          darkCss: theme.darkCss ? { ...theme.darkCss } : void 0
+        });
+        map.set(normalized.name, normalized);
+      });
+    });
+    return Array.from(map.values());
+  }
+  ensureDarkVariant(theme) {
+    const finalDark = this.buildDarkPalette(theme);
+    return {
+      ...theme,
+      darkColor: this.applyDarkFallbacks(finalDark)
+    };
+  }
+  buildDarkPalette(theme) {
+    const provided = theme.darkColor || {};
+    const generated = this.generateDarkFromLight(theme.color || {}, provided);
+    return {
+      ...generated,
+      ...provided
+    };
+  }
+  /**
+   * 应用亮色主题
+   */
+  applyColorFallbacks(color2) {
+    return {
+      ...this.baseColorTokens || {},
+      ...color2 || {}
+    };
+  }
+  /**
+   * 应用暗黑主题
+   */
+  applyDarkFallbacks(color2) {
+    return {
+      ...this.baseDarkColorTokens || {},
+      ...color2 || {}
+    };
+  }
+  filterNonStructuralTokens(palette) {
+    const result = {};
+    Object.entries(palette || {}).forEach(([key, value]) => {
+      if (!this.isStructuralToken(key)) {
+        result[key] = value;
+      }
+    });
+    return result;
+  }
+  generateDarkFromLight(palette, provided) {
+    const result = {};
+    const nonStructural = this.filterNonStructuralTokens(palette);
+    Object.entries(nonStructural).forEach(([key, value]) => {
+      var _a2;
+      if (typeof value !== "string")
+        return;
+      if (provided && Object.prototype.hasOwnProperty.call(provided, key)) {
+        return;
+      }
+      const fallback = (_a2 = this.baseDarkColorTokens) == null ? void 0 : _a2[key];
+      result[key] = this.createDarkVariantFromLight(value, fallback);
+    });
+    return result;
+  }
+  createDarkVariantFromLight(color2, fallback) {
+    const normalized = this.normalizeHex(color2);
+    const fallbackHex = fallback ? this.normalizeHex(fallback) : null;
+    if (normalized && fallbackHex) {
+      return this.mixHex(normalized, fallbackHex, 0.6);
+    }
+    if (fallbackHex)
+      return fallbackHex;
+    return normalized || color2;
+  }
+  normalizeHex(color2) {
+    if (!color2)
+      return null;
+    const hex = color2.trim();
+    if (/^#([0-9a-fA-F]{6})$/.test(hex))
+      return hex.toLowerCase();
+    return null;
+  }
+  mixHex(fromHex, toHex, ratio) {
+    const from = this.hexToRgb(fromHex);
+    const to = this.hexToRgb(toHex);
+    if (!from || !to)
+      return toHex;
+    const clamp = (val) => Math.min(255, Math.max(0, Math.round(val)));
+    const r = clamp(from.r * (1 - ratio) + to.r * ratio);
+    const g = clamp(from.g * (1 - ratio) + to.g * ratio);
+    const b = clamp(from.b * (1 - ratio) + to.b * ratio);
+    return this.rgbToHex(r, g, b);
+  }
+  hexToRgb(hex) {
+    const match = /^#([0-9a-fA-F]{6})$/.exec(hex);
+    if (!match)
+      return null;
+    return {
+      r: parseInt(match[1].slice(0, 2), 16),
+      g: parseInt(match[1].slice(2, 4), 16),
+      b: parseInt(match[1].slice(4, 6), 16)
+    };
+  }
+  rgbToHex(r, g, b) {
+    const toHex = (val) => val.toString(16).padStart(2, "0");
+    return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
+  }
+  isStructuralToken(token) {
+    return STRUCTURAL_TOKENS.has(token);
+  }
+  /**
+   * 运行时同步主题颜色($u.color)
+   * 更新响应式 color 对象,确保所有使用 $u.color 的地方都能响应式更新
+   */
+  syncRuntimeTheme(palette) {
+    var _a2;
+    try {
+      const defaultPalette = this.getActiveMode() === "dark" ? this.baseDarkColorTokens : this.baseColorTokens;
+      const mergedPalette = {
+        ...defaultPalette,
+        ...palette
+      };
+      Object.keys(mergedPalette).forEach((key) => {
+        const value = mergedPalette[key];
+        if (value != null) {
+          color[key] = value;
+        }
+      });
+      if (typeof uni !== "undefined" && ((_a2 = uni == null ? void 0 : uni.$u) == null ? void 0 : _a2.color)) {
+        uni.$u.color = color;
+      }
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] sync runtime theme failed", e);
+    }
+  }
+  /**
+   * 获取当前激活的模式
+   */
+  getActiveMode() {
+    return this.isInDarkMode() ? "dark" : "light";
+  }
+  /**
+   * 获取当前主题的配色方案
+   */
+  getPaletteForMode(theme, mode) {
+    if (mode === "dark") {
+      return theme.darkColor && Object.keys(theme.darkColor).length ? theme.darkColor : theme.color || {};
+    }
+    return theme.color || {};
+  }
+  /**
+   * 获取当前主题的CSS变量覆盖
+   */
+  getCssOverrides(theme, mode) {
+    if (mode === "dark") {
+      return (theme.darkCss && Object.keys(theme.darkCss).length ? theme.darkCss : theme.css) || {};
+    }
+    return theme.css || {};
+  }
+  /**
+   * 读取Storage key
+   */
+  readStorage(key) {
+    try {
+      if (typeof uni === "undefined" || typeof uni.getStorageSync !== "function")
+        return null;
+      const value = uni.getStorageSync(key);
+      return value ?? null;
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] failed to read storage", e);
+      return null;
+    }
+  }
+  /**
+   * 写入Storage key value
+   */
+  writeStorage(key, value) {
+    try {
+      if (typeof uni === "undefined" || typeof uni.setStorageSync !== "function")
+        return;
+      uni.setStorageSync(key, value);
+    } catch (e) {
+      if (this.debug)
+        console.warn("[ConfigProvider] failed to write storage", e);
+    }
+  }
+  /**
+   * 更新文档主题模式 H5
+   */
+  updateDocumentMode(mode) {
+    if (typeof document === "undefined" || !document.documentElement)
+      return;
+    const root = document.documentElement;
+    root.dataset.uThemeMode = mode;
+    root.classList.remove("u-theme-light", "u-theme-dark");
+    root.classList.add(`u-theme-${mode}`);
+  }
+  /**
+   * 转换为 CSS 变量名称
+   */
+  toCssVarName(key, prefix = "--u") {
+    const types = config.type;
+    if (types.some((type) => key.startsWith(type))) {
+      prefix += "-type";
+    }
+    const kebab = key.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
+    return `${prefix}-${kebab}`;
+  }
+  /**
+   * 添加 RGB 值
+   */
+  attachRgbVar(target, varName, value) {
+    if (typeof value !== "string")
+      return;
+    const hex = value.startsWith("#") ? value.slice(1) : "";
+    if (!/^[0-9a-fA-F]{6}$/.test(hex))
+      return;
+    const r = parseInt(hex.slice(0, 2), 16);
+    const g = parseInt(hex.slice(2, 4), 16);
+    const b = parseInt(hex.slice(4, 6), 16);
+    target[`${varName}-rgb`] = `${r}, ${g}, ${b}`;
+  }
+  /**
+   * 构建 CSS 变量映射表
+   * 生成格式:
+   */
+  buildCssVarMap(theme, mode) {
+    const map = {
+      "--u-theme-mode": mode
+    };
+    const palette = this.getPaletteForMode(theme, mode);
+    const cssOverrides = this.getCssOverrides(theme, mode);
+    const applyEntry = (key, value) => {
+      if (value == null)
+        return;
+      const strValue = String(value);
+      if (key.startsWith("--")) {
+        map[key] = strValue;
+        this.attachRgbVar(map, key, strValue);
+        return;
+      }
+      const cssVarName = this.toCssVarName(key);
+      map[cssVarName] = strValue;
+      this.attachRgbVar(map, cssVarName, strValue);
+    };
+    Object.entries(palette || {}).forEach(([key, value]) => applyEntry(key, value));
+    Object.entries(cssOverrides || {}).forEach(([key, value]) => applyEntry(key, value));
+    return map;
+  }
+  /**
+   * 刷新 CSS 变量 H5
+   */
+  flushCssVars(vars) {
+    if (typeof document === "undefined" || !document.documentElement)
+      return;
+    const root = document.documentElement;
+    this.lastAppliedCssKeys.forEach((key) => {
+      root.style.removeProperty(key);
+    });
+    Object.entries(vars).forEach(([key, value]) => {
+      root.style.setProperty(key, value);
+    });
+    this.lastAppliedCssKeys = Object.keys(vars);
+  }
+  /**
+   * 将主题应用到运行时:
+   * - 1) 调用 uni.$u.setColor(theme.color) 如果存在
+   * - 2) 在 H5 环境中,将 css map 注入到 document.documentElement 的 CSS 变量中
+   * - 3) 支持暗黑模式:根据 darkColor 或 color 应用相应的颜色
+   */
+  applyTheme(theme) {
+    if (!theme)
+      return;
+    const mode = this.getActiveMode();
+    const palette = this.getPaletteForMode(theme, mode);
+    this.syncRuntimeTheme(palette);
+    const cssVarMap = this.buildCssVarMap(theme, mode);
+    this.cssVarsRef.value = cssVarMap;
+    this.flushCssVars(cssVarMap);
+    this.updateDocumentMode(mode);
+  }
+}
+const configProvider = new ConfigProvider();
+const originalConsole = {
+  log: console.log,
+  info: console.info,
+  warn: console.warn,
+  error: console.error,
+  debug: console.debug,
+  trace: console.trace,
+  table: console.table,
+  time: console.time,
+  timeEnd: console.timeEnd,
+  group: console.group,
+  groupEnd: console.groupEnd,
+  groupCollapsed: console.groupCollapsed,
+  assert: console.assert,
+  clear: console.clear,
+  count: console.count,
+  countReset: console.countReset
+};
+Object.keys(originalConsole).forEach((key) => {
+  const methodKey = key;
+  if (!originalConsole[methodKey]) {
+    originalConsole[methodKey] = () => {
+    };
+  }
+});
+configProvider.themesRef;
+configProvider.currentThemeRef;
+configProvider.darkModeRef;
+Promise.resolve("./app.css.js").then(() => {
+});

ファイルの差分が大きいため隠しています
+ 15 - 0
dist/build/app-plus/__uniappautomator.js


ファイルの差分が大きいため隠しています
+ 31 - 0
dist/build/app-plus/__uniappchooselocation.js


BIN
dist/build/app-plus/__uniapperror.png


ファイルの差分が大きいため隠しています
+ 31 - 0
dist/build/app-plus/__uniappopenlocation.js


ファイルの差分が大きいため隠しています
+ 31 - 0
dist/build/app-plus/__uniapppicker.js


ファイルの差分が大きいため隠しています
+ 6 - 0
dist/build/app-plus/__uniappquill.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/__uniappquillimageresize.js


ファイルの差分が大きいため隠しています
+ 31 - 0
dist/build/app-plus/__uniappscan.js


BIN
dist/build/app-plus/__uniappsuccess.png


+ 24 - 0
dist/build/app-plus/__uniappview.html

@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <title>View</title>
+    <link rel="icon" href="data:,">
+    <link rel="stylesheet" href="app.css" />
+    <script>var __uniConfig = {"globalStyle":{},"darkmode":false}</script>
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script src="uni-app-view.umd.js"></script>
+    <script src="app-wxs.js"></script>
+    <script src="app-renderjs.js"></script>
+    
+  </body>
+</html>

ファイルの差分が大きいため隠しています
+ 4 - 0
dist/build/app-plus/app-config-service.js


+ 1 - 0
dist/build/app-plus/app-config.js

@@ -0,0 +1 @@
+(function(){})();

ファイルの差分が大きいため隠しています
+ 3 - 0
dist/build/app-plus/app-renderjs.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/app-service.js


ファイルの差分が大きいため隠しています
+ 3 - 0
dist/build/app-plus/app-wxs.js


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/app.css


BIN
dist/build/app-plus/assets/avatar-default.d890a8c4.png


BIN
dist/build/app-plus/assets/avatar.0ad11987.gif


BIN
dist/build/app-plus/assets/image-banner.11e6c99c.jpg


BIN
dist/build/app-plus/assets/image-wechat.067dc3d4.png


+ 213 - 0
dist/build/app-plus/manifest.json

@@ -0,0 +1,213 @@
+{
+  "@platforms": [
+    "android",
+    "iPhone",
+    "iPad"
+  ],
+  "id": "__UNI__11DC28C",
+  "name": "F1BET",
+  "version": {
+    "name": "4.1.2",
+    "code": 412
+  },
+  "description": "",
+  "developer": {
+    "name": "",
+    "email": "",
+    "url": ""
+  },
+  "permissions": {
+    "VideoPlayer": {},
+    "Camera": {},
+    "UniNView": {
+      "description": "UniNView原生渲染"
+    }
+  },
+  "plus": {
+    "useragent": {
+      "value": "uni-app",
+      "concatenate": true
+    },
+    "splashscreen": {
+      "target": "id:1",
+      "autoclose": true,
+      "waiting": true,
+      "delay": 0
+    },
+    "popGesture": "close",
+    "launchwebview": {
+      "id": "1",
+      "kernel": "WKWebview"
+    },
+    "compatible": {
+      "ignoreVersion": true
+    },
+    "usingComponents": true,
+    "nvueStyleCompiler": "uni-app",
+    "compilerVersion": 3,
+    "distribute": {
+      "icons": {
+        "android": {
+          "hdpi": "unpackage/res/icons/72x72.png",
+          "xhdpi": "unpackage/res/icons/96x96.png",
+          "xxhdpi": "unpackage/res/icons/144x144.png",
+          "xxxhdpi": "unpackage/res/icons/192x192.png"
+        },
+        "ios": {
+          "appstore": "unpackage/res/icons/1024x1024.png",
+          "ipad": {
+            "app": "unpackage/res/icons/76x76.png",
+            "app@2x": "unpackage/res/icons/152x152.png",
+            "notification": "unpackage/res/icons/20x20.png",
+            "notification@2x": "unpackage/res/icons/40x40.png",
+            "proapp@2x": "unpackage/res/icons/167x167.png",
+            "settings": "unpackage/res/icons/29x29.png",
+            "settings@2x": "unpackage/res/icons/58x58.png",
+            "spotlight": "unpackage/res/icons/40x40.png",
+            "spotlight@2x": "unpackage/res/icons/80x80.png"
+          },
+          "iphone": {
+            "app@2x": "unpackage/res/icons/120x120.png",
+            "app@3x": "unpackage/res/icons/180x180.png",
+            "notification@2x": "unpackage/res/icons/40x40.png",
+            "notification@3x": "unpackage/res/icons/60x60.png",
+            "settings@2x": "unpackage/res/icons/58x58.png",
+            "settings@3x": "unpackage/res/icons/87x87.png",
+            "spotlight@2x": "unpackage/res/icons/80x80.png",
+            "spotlight@3x": "unpackage/res/icons/120x120.png"
+          }
+        }
+      },
+      "google": {
+        "permissions": [
+          "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+          "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+          "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+          "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+          "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+          "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+          "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+          "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+          "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+          "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+          "<uses-feature android:name=\"android.hardware.camera\"/>",
+          "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+        ]
+      },
+      "apple": {
+        "dSYMs": false
+      },
+      "plugins": {
+        "audio": {
+          "mp3": {
+            "description": "Android平台录音支持MP3格式文件"
+          }
+        }
+      }
+    },
+    "statusbar": {
+      "immersed": "supportedDevice",
+      "style": "dark",
+      "background": "#FFFFFF"
+    },
+    "uniStatistics": {
+      "enable": false
+    },
+    "allowsInlineMediaPlayback": true,
+    "safearea": {
+      "background": "#FFFFFF",
+      "bottom": {
+        "offset": "auto"
+      }
+    },
+    "uni-app": {
+      "control": "uni-v3",
+      "vueVersion": "3",
+      "compilerVersion": "4.66",
+      "nvueCompiler": "uni-app",
+      "renderer": "auto",
+      "nvue": {
+        "flex-direction": "column"
+      },
+      "nvueLaunchMode": "normal",
+      "webView": {
+        "minUserAgentVersion": "49.0"
+      }
+    },
+    "tabBar": {
+      "position": "bottom",
+      "color": "#999999",
+      "selectedColor": "#f8b932",
+      "borderStyle": "rgba(0,0,0,0.4)",
+      "blurEffect": "none",
+      "fontSize": "10px",
+      "iconWidth": "20px",
+      "spacing": "3px",
+      "height": "50px",
+      "list": [
+        {
+          "iconPath": "/static/images/tabbar/g1.png",
+          "selectedIconPath": "/static/images/tabbar/g.png",
+          "pagePath": "pages/Tabbar/Home/index",
+          "text": "首页"
+        },
+        {
+          "iconPath": "/static/images/tabbar/b.png",
+          "selectedIconPath": "/static/images/tabbar/b1.png",
+          "pagePath": "pages/Tabbar/SportsBetting/index",
+          "text": "体育博彩"
+        },
+        {
+          "iconPath": "/static/images/tabbar/j.png",
+          "selectedIconPath": "/static/images/tabbar/j1.png",
+          "pagePath": "pages/Tabbar/WorldCup/index",
+          "text": "世界杯"
+        },
+        {
+          "iconPath": "/static/images/tabbar/j.png",
+          "selectedIconPath": "/static/images/tabbar/j1.png",
+          "pagePath": "pages/Tabbar/Entertainment/index",
+          "text": "彩票"
+        },
+        {
+          "iconPath": "/static/images/tabbar/h1.png",
+          "selectedIconPath": "/static/images/tabbar/h.png",
+          "pagePath": "pages/Tabbar/My/index",
+          "text": "我的"
+        }
+      ],
+      "backgroundColor": "#FFFFFF",
+      "midButton": {
+        "width": "70px",
+        "height": "70px",
+        "iconPath": "/static/images/image.png",
+        "iconWidth": "70px"
+      },
+      "selectedIndex": 0,
+      "shown": true,
+      "child": [
+        "lauchwebview"
+      ],
+      "selected": 0
+    }
+  },
+  "app-harmony": {
+    "useragent": {
+      "value": "uni-app",
+      "concatenate": true
+    },
+    "uniStatistics": {
+      "enable": false
+    },
+    "safearea": {
+      "background": "#FFFFFF",
+      "bottom": {
+        "offset": "auto"
+      }
+    }
+  },
+  "launch_path": "__uniappview.html"
+}

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/BettingHistory/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/components/Digital/detail.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/Digital/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/ExtremeSpeed28/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/HKDigital/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/NewDigital/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/PC28/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/Pc28BettingHistory/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/SpeedDigital/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Entertainment/view/history/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/Home/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/My/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/RollingBall/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/SportsBetting/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/Tabbar/WorldCup/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/AppFooterViews/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/Entertainment/Detail/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/bettingHistory/bettingDetail/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/WalletManagement/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/Yuebao/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/Yuebao/itemList.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/changeFundPassword/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/changePassword/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/fundRecord/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/promotion/detail/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/promotion/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/rechargeRecord/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/safety/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/topUp/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/userInfo/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/withdraw/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/WorkModule/my/withdrawalHistory/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/common/AllHistory/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/common/PC28Rule/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/common/betSlip/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/common/customerService/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/common/rich-view/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/common/sportDetail/index.css


+ 0 - 0
dist/build/app-plus/pages/common/web-view/index.css


+ 0 - 0
dist/build/app-plus/pages/index/example/index.css


+ 0 - 0
dist/build/app-plus/pages/index/user/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/login/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/oldPage/contact/index.css


+ 1 - 0
dist/build/app-plus/pages/oldPage/feedback/index.css

@@ -0,0 +1 @@
+.feedback-page[data-v-c0005f97]{min-height:100vh}uni-textarea[data-v-c0005f97]:focus,uni-input[data-v-c0005f97]:focus{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.1)}uni-button[data-v-c0005f97]:active{transform:scale(.98)}@keyframes spin-c0005f97{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-c0005f97]{animation:spin-c0005f97 1s linear infinite}

+ 1 - 0
dist/build/app-plus/pages/oldPage/personal/index.css

@@ -0,0 +1 @@
+.info-card[data-v-7884c118]{overflow:hidden;border-radius:.75rem;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.card-header[data-v-7884c118]{display:flex;align-items:center;border-bottom-width:1px;--un-border-opacity:1;border-color:rgb(243 244 246 / var(--un-border-opacity));padding:1rem 1.25rem}.card-title[data-v-7884c118]{margin-left:.75rem;font-size:1.125rem;line-height:1.75rem;--un-text-opacity:1;color:rgb(31 41 55 / var(--un-text-opacity));font-weight:700}.info-item[data-v-7884c118]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:.2s}.info-item[data-v-7884c118]:active{--un-bg-opacity:1;background-color:rgb(249 250 251 / var(--un-bg-opacity))}.info-label[data-v-7884c118]{display:flex;align-items:center;--un-text-opacity:1;color:rgb(55 65 81 / var(--un-text-opacity));font-weight:500}.info-label uni-text[data-v-7884c118]{margin-left:.75rem}.info-value[data-v-7884c118]{display:flex;align-items:center;--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity))}.info-value uni-text[data-v-7884c118]{margin-right:.5rem}@media (max-width: 375px){.info-item[data-v-7884c118],.card-header[data-v-7884c118]{padding:.75rem 1rem}}

+ 1 - 0
dist/build/app-plus/pages/oldPage/preference/index.css

@@ -0,0 +1 @@
+.settings-card[data-v-89e5acfa]{margin-bottom:1rem;overflow:hidden;border-radius:.75rem;--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));--un-shadow:var(--un-shadow-inset) 0 1px 2px 0 var(--un-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}.card-header[data-v-89e5acfa]{display:flex;align-items:center;border-bottom-width:1px;--un-border-opacity:1;border-color:rgb(243 244 246 / var(--un-border-opacity));padding:1rem 1.25rem}.card-title[data-v-89e5acfa]{margin-left:.75rem;font-size:1.125rem;line-height:1.75rem;--un-text-opacity:1;color:rgb(31 41 55 / var(--un-text-opacity));font-weight:700}.setting-item[data-v-89e5acfa]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:.2s}.setting-item[data-v-89e5acfa]:active{--un-bg-opacity:1;background-color:rgb(249 250 251 / var(--un-bg-opacity))}.setting-label[data-v-89e5acfa]{min-width:0;display:flex;flex:1 1 0%;align-items:flex-start}.setting-info[data-v-89e5acfa]{margin-left:.75rem;min-width:0;flex:1 1 0%}.setting-title[data-v-89e5acfa]{display:block;--un-text-opacity:1;color:rgb(31 41 55 / var(--un-text-opacity));font-weight:500}.setting-desc[data-v-89e5acfa]{margin-top:.125rem;display:block;font-size:.875rem;line-height:1.25rem;--un-text-opacity:1;color:rgb(107 114 128 / var(--un-text-opacity))}.setting-control[data-v-89e5acfa]{margin-left:1rem;display:flex;flex:none;align-items:center}@media (max-width: 375px){.setting-item[data-v-89e5acfa],.card-header[data-v-89e5acfa]{padding:.75rem 1rem}.setting-info[data-v-89e5acfa],.setting-control[data-v-89e5acfa]{margin-left:.5rem}}

ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/register/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/setAccount/index.css


ファイルの差分が大きいため隠しています
+ 0 - 0
dist/build/app-plus/pages/template/paging/index.css


+ 1 - 0
dist/build/app-plus/pages/tips/middleware/index.css

@@ -0,0 +1 @@
+@keyframes bounce-c4406ca8{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-8px,0)}70%{transform:translate3d(0,-4px,0)}90%{transform:translate3d(0,-2px,0)}}@keyframes ping-c4406ca8{75%,to{transform:scale(1.1);opacity:0}}.animate-bounce[data-v-c4406ca8]{animation:bounce-c4406ca8 2s infinite}.animate-ping[data-v-c4406ca8]{animation:ping-c4406ca8 2s cubic-bezier(0,0,.2,1) infinite}@media (max-width: 375px){.success-icon-container[data-v-c4406ca8],.success-info[data-v-c4406ca8],.details-card[data-v-c4406ca8],.recommended-actions[data-v-c4406ca8]{margin-bottom:6px}}

+ 15 - 0
dist/build/app-plus/static/config.js

@@ -0,0 +1,15 @@
+// #ifdef H5
+window.global = {
+  // baseURL: 'https://api.f1bet888.com/api',
+  baseURL: 'https://sportapi.sp2509.cc/api',
+  // wsURL: 'wss://api.f1bet888.com:8443',
+  wsURL: 'wss://sportapi.sp2509.cc:9501',
+  // botURL: 'https://api.f1bet.bet/api/',
+  botURL: 'https://bot28api.sp2509.cc/api/',
+  openPCUrl: 'https://www.f1bet888.com',
+  landingPageURL: 'https://land.f1bet888.com/',
+  // serviceURL: 'https://service.8xbet001.com',
+  serviceURL: 'https://bot28webkefu.sp2509.cc',
+  PermanentURL: 'F1bet.cc',
+}
+// #endif

BIN
dist/build/app-plus/static/favicon.ico


BIN
dist/build/app-plus/static/icon/lang.png


BIN
dist/build/app-plus/static/icon/lang1.png


BIN
dist/build/app-plus/static/images/DM_20260507140713_001.gif


BIN
dist/build/app-plus/static/images/ExtremeSpeed28.png


BIN
dist/build/app-plus/static/images/ExtremeSpeed28_en.png


BIN
dist/build/app-plus/static/images/ExtremeSpeed28_vi.png


BIN
dist/build/app-plus/static/images/ExtremeSpeedMarkSix.png


BIN
dist/build/app-plus/static/images/ExtremeSpeedMarkSix_en.png


BIN
dist/build/app-plus/static/images/ExtremeSpeedMarkSix_vi.png


BIN
dist/build/app-plus/static/images/HongKongMarkSix.png


BIN
dist/build/app-plus/static/images/HongKongMarkSix_en.png


BIN
dist/build/app-plus/static/images/HongKongMarkSix_vi.png


BIN
dist/build/app-plus/static/images/MacauMarkSix.png


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません