@zfqh/uniapp 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +39 -0
  4. package/docs/api/apis/core.md +189 -0
  5. package/docs/api/apis/index.md +82 -0
  6. package/docs/api/apis/request.md +369 -0
  7. package/docs/api/configs/api.md +32 -0
  8. package/docs/api/configs/app.md +43 -0
  9. package/docs/api/configs/brand.md +43 -0
  10. package/docs/api/configs/cdn.md +35 -0
  11. package/docs/api/configs/color.md +144 -0
  12. package/docs/api/configs/env.md +120 -0
  13. package/docs/api/configs/index.md +394 -0
  14. package/docs/api/configs/link.md +33 -0
  15. package/docs/api/configs/log.md +27 -0
  16. package/docs/api/configs/mp.md +34 -0
  17. package/docs/api/configs/navigate.md +27 -0
  18. package/docs/api/configs/page.md +32 -0
  19. package/docs/api/configs/path.md +27 -0
  20. package/docs/api/configs/storage.md +24 -0
  21. package/docs/api/configs/tabbar.md +29 -0
  22. package/docs/api/configs/toast.md +35 -0
  23. package/docs/api/configs/update.md +25 -0
  24. package/docs/api/configs/upload.md +45 -0
  25. package/docs/api/configs/ver.md +32 -0
  26. package/docs/api/configs/web.md +28 -0
  27. package/docs/api/hooks/index.md +182 -0
  28. package/docs/api/hooks/useI18n.md +27 -0
  29. package/docs/api/hooks/useOverlay.md +37 -0
  30. package/docs/api/hooks/usePopup.md +35 -0
  31. package/docs/api/hooks/useVersion.md +23 -0
  32. package/docs/api/index.md +269 -0
  33. package/docs/api/mixins/app.md +29 -0
  34. package/docs/api/mixins/badge.md +23 -0
  35. package/docs/api/mixins/debounce.md +32 -0
  36. package/docs/api/mixins/deep.md +29 -0
  37. package/docs/api/mixins/index.md +23 -0
  38. package/docs/api/mixins/login.md +22 -0
  39. package/docs/api/mixins/model.md +26 -0
  40. package/docs/api/mixins/redirect.md +26 -0
  41. package/docs/api/mixins/share.md +29 -0
  42. package/docs/api/mixins/show.md +27 -0
  43. package/docs/api/mixins/webview.md +27 -0
  44. package/docs/api/modules/app.md +30 -0
  45. package/docs/api/modules/dict.md +28 -0
  46. package/docs/api/modules/im.md +22 -0
  47. package/docs/api/modules/index.md +44 -0
  48. package/docs/api/modules/launch.md +26 -0
  49. package/docs/api/modules/location.md +25 -0
  50. package/docs/api/modules/login.md +35 -0
  51. package/docs/api/modules/network.md +26 -0
  52. package/docs/api/modules/system.md +29 -0
  53. package/docs/api/utils/audio.md +84 -0
  54. package/docs/api/utils/consts.md +201 -0
  55. package/docs/api/utils/cos.md +269 -0
  56. package/docs/api/utils/debounce.md +89 -0
  57. package/docs/api/utils/file.md +78 -0
  58. package/docs/api/utils/index.md +547 -0
  59. package/docs/api/utils/locale.md +32 -0
  60. package/docs/api/utils/message.md +81 -0
  61. package/docs/api/utils/navigate.md +267 -0
  62. package/docs/api/utils/pages.md +205 -0
  63. package/docs/api/utils/permission.md +28 -0
  64. package/docs/api/utils/permit.md +62 -0
  65. package/docs/api/utils/query.md +89 -0
  66. package/docs/api/utils/request.md +34 -0
  67. package/docs/api/utils/storage.md +145 -0
  68. package/docs/api/utils/subscribe.md +77 -0
  69. package/docs/api/utils/throttle.md +101 -0
  70. package/docs/api/utils/toast.md +164 -0
  71. package/docs/api/utils/uni.md +28 -0
  72. package/docs/api/utils/update.md +165 -0
  73. package/docs/components/g-back-button.md +76 -0
  74. package/docs/components/g-checkbox-list.md +101 -0
  75. package/docs/components/g-container.md +93 -0
  76. package/docs/components/g-data-list.md +106 -0
  77. package/docs/components/g-dot-text.md +79 -0
  78. package/docs/components/g-env.md +75 -0
  79. package/docs/components/g-float.md +83 -0
  80. package/docs/components/g-grid-image.md +91 -0
  81. package/docs/components/g-grid-swiper.md +99 -0
  82. package/docs/components/g-icon.md +106 -0
  83. package/docs/components/g-mask.md +82 -0
  84. package/docs/components/g-money.md +90 -0
  85. package/docs/components/g-more.md +78 -0
  86. package/docs/components/g-page-container.md +170 -0
  87. package/docs/components/g-permission-popup.md +117 -0
  88. package/docs/components/g-polyline-chat.md +102 -0
  89. package/docs/components/g-polyline-view.md +67 -0
  90. package/docs/components/g-popup.md +144 -0
  91. package/docs/components/g-refresh-view.md +118 -0
  92. package/docs/components/g-render-image.md +83 -0
  93. package/docs/components/g-search.md +120 -0
  94. package/docs/components/g-share-photo.md +77 -0
  95. package/docs/components/g-share-view.md +83 -0
  96. package/docs/components/g-share-weixin.md +81 -0
  97. package/docs/components/g-skeleton-view.md +71 -0
  98. package/docs/components/g-skeleton.md +64 -0
  99. package/docs/components/g-tag-editor.md +134 -0
  100. package/docs/components/g-timer.md +72 -0
  101. package/docs/components/g-trtc-room.md +116 -0
  102. package/docs/components/g-trtc-tui.md +84 -0
  103. package/docs/components/g-trtc.md +124 -0
  104. package/docs/components/g-upload.md +117 -0
  105. package/docs/components/g-waterfall.md +84 -0
  106. package/docs/components/index.md +109 -0
  107. package/docs/components/styles/base-styles.md +367 -0
  108. package/docs/components/styles/global-vars.md +150 -0
  109. package/docs/components/usage.md +112 -0
  110. package/docs/faq/index.md +78 -0
  111. package/docs/guide/getting-started.md +195 -0
  112. package/docs/guide/project-frame.md +297 -0
  113. package/docs/index.md +80 -0
  114. package/lib/apis/core.d.ts +12 -0
  115. package/lib/apis/core.js +13 -0
  116. package/lib/apis/index.d.ts +2 -0
  117. package/lib/apis/index.js +2 -0
  118. package/lib/apis/request.d.ts +4 -0
  119. package/lib/apis/request.js +27 -0
  120. package/lib/components/g-back-button/g-back-button.vue +141 -0
  121. package/lib/components/g-checkbox-list/g-checkbox-list.vue +156 -0
  122. package/lib/components/g-container/g-container.vue +159 -0
  123. package/lib/components/g-data-list/g-data-list.vue +192 -0
  124. package/lib/components/g-dot-text/g-dot-text.vue +114 -0
  125. package/lib/components/g-env/g-env.vue +123 -0
  126. package/lib/components/g-float/g-float.vue +131 -0
  127. package/lib/components/g-grid-image/g-grid-image.vue +84 -0
  128. package/lib/components/g-grid-swiper/g-grid-swiper.vue +224 -0
  129. package/lib/components/g-icon/g-icon.vue +72 -0
  130. package/lib/components/g-mask/g-mask.vue +126 -0
  131. package/lib/components/g-money/g-money.vue +174 -0
  132. package/lib/components/g-more/g-more.vue +68 -0
  133. package/lib/components/g-page-container/g-page-container.vue +470 -0
  134. package/lib/components/g-permission-popup/g-permission-popup.vue +80 -0
  135. package/lib/components/g-polyline-chat/g-polyline-chat.vue +255 -0
  136. package/lib/components/g-polyline-view/g-polyline-view.vue +104 -0
  137. package/lib/components/g-popup/g-popup.vue +449 -0
  138. package/lib/components/g-refresh-view/g-refresh-view.vue +213 -0
  139. package/lib/components/g-render-image/g-render-image.vue +222 -0
  140. package/lib/components/g-search/g-search.vue +274 -0
  141. package/lib/components/g-share-photo/g-share-photo.vue +75 -0
  142. package/lib/components/g-share-view/g-share-view.vue +157 -0
  143. package/lib/components/g-share-weixin/g-share-weixin.vue +106 -0
  144. package/lib/components/g-skeleton/g-skeleton.vue +55 -0
  145. package/lib/components/g-skeleton-view/g-skeleton-view.vue +78 -0
  146. package/lib/components/g-tag-editor/g-tag-editor.vue +482 -0
  147. package/lib/components/g-timer/g-timer.vue +61 -0
  148. package/lib/components/g-trtc/g-trtc.vue +347 -0
  149. package/lib/components/g-trtc-room/g-trtc-room.vue +524 -0
  150. package/lib/components/g-trtc-room/iconfont.scss +59 -0
  151. package/lib/components/g-trtc-tui/g-trtc-tui.vue +245 -0
  152. package/lib/components/g-upload/g-upload.vue +294 -0
  153. package/lib/components/g-waterfall/g-waterfall.vue +101 -0
  154. package/lib/configs/api.d.ts +7 -0
  155. package/lib/configs/api.js +6 -0
  156. package/lib/configs/app.d.ts +26 -0
  157. package/lib/configs/app.js +50 -0
  158. package/lib/configs/brand.d.ts +22 -0
  159. package/lib/configs/brand.js +26 -0
  160. package/lib/configs/cdn.d.ts +13 -0
  161. package/lib/configs/cdn.js +12 -0
  162. package/lib/configs/color.d.ts +62 -0
  163. package/lib/configs/color.js +66 -0
  164. package/lib/configs/env.d.ts +37 -0
  165. package/lib/configs/env.js +71 -0
  166. package/lib/configs/index.d.ts +170 -0
  167. package/lib/configs/index.js +82 -0
  168. package/lib/configs/link.d.ts +11 -0
  169. package/lib/configs/link.js +3 -0
  170. package/lib/configs/log.d.ts +9 -0
  171. package/lib/configs/log.js +8 -0
  172. package/lib/configs/mp.d.ts +15 -0
  173. package/lib/configs/mp.js +9 -0
  174. package/lib/configs/navigate.d.ts +17 -0
  175. package/lib/configs/navigate.js +5 -0
  176. package/lib/configs/page.d.ts +18 -0
  177. package/lib/configs/page.js +14 -0
  178. package/lib/configs/path.d.ts +11 -0
  179. package/lib/configs/path.js +10 -0
  180. package/lib/configs/storage.d.ts +7 -0
  181. package/lib/configs/storage.js +6 -0
  182. package/lib/configs/tabbar.d.ts +7 -0
  183. package/lib/configs/tabbar.js +6 -0
  184. package/lib/configs/toast.d.ts +18 -0
  185. package/lib/configs/toast.js +29 -0
  186. package/lib/configs/update.d.ts +45 -0
  187. package/lib/configs/update.js +6 -0
  188. package/lib/configs/upload.d.ts +30 -0
  189. package/lib/configs/upload.js +7 -0
  190. package/lib/configs/ver.d.ts +8 -0
  191. package/lib/configs/ver.js +28 -0
  192. package/lib/configs/web.d.ts +5 -0
  193. package/lib/configs/web.js +2 -0
  194. package/lib/hooks/index.d.ts +4 -0
  195. package/lib/hooks/index.js +4 -0
  196. package/lib/hooks/useI18n.d.ts +2 -0
  197. package/lib/hooks/useI18n.js +19 -0
  198. package/lib/hooks/useOverlay.d.ts +1 -0
  199. package/lib/hooks/useOverlay.js +17 -0
  200. package/lib/hooks/usePopup.d.ts +1 -0
  201. package/lib/hooks/usePopup.js +14 -0
  202. package/lib/hooks/useVersion.d.ts +6 -0
  203. package/lib/hooks/useVersion.js +21 -0
  204. package/lib/index.d.ts +26 -0
  205. package/lib/index.js +33 -0
  206. package/lib/mixins/app.d.ts +14 -0
  207. package/lib/mixins/app.js +105 -0
  208. package/lib/mixins/badge.d.ts +24 -0
  209. package/lib/mixins/badge.js +44 -0
  210. package/lib/mixins/debounce.d.ts +6 -0
  211. package/lib/mixins/debounce.js +11 -0
  212. package/lib/mixins/deep.d.ts +6 -0
  213. package/lib/mixins/deep.js +8 -0
  214. package/lib/mixins/index.d.ts +8 -0
  215. package/lib/mixins/index.js +8 -0
  216. package/lib/mixins/login.d.ts +4 -0
  217. package/lib/mixins/login.js +25 -0
  218. package/lib/mixins/model.d.ts +22 -0
  219. package/lib/mixins/model.js +29 -0
  220. package/lib/mixins/redirect.d.ts +8 -0
  221. package/lib/mixins/redirect.js +94 -0
  222. package/lib/mixins/share.d.ts +15 -0
  223. package/lib/mixins/share.js +55 -0
  224. package/lib/mixins/show.d.ts +9 -0
  225. package/lib/mixins/show.js +16 -0
  226. package/lib/mixins/webview.d.ts +26 -0
  227. package/lib/mixins/webview.js +225 -0
  228. package/lib/modules/app.d.ts +5 -0
  229. package/lib/modules/app.js +19 -0
  230. package/lib/modules/dict.d.ts +8 -0
  231. package/lib/modules/dict.js +43 -0
  232. package/lib/modules/im.d.ts +6 -0
  233. package/lib/modules/im.js +105 -0
  234. package/lib/modules/index.d.ts +8 -0
  235. package/lib/modules/index.js +8 -0
  236. package/lib/modules/launch.d.ts +5 -0
  237. package/lib/modules/launch.js +32 -0
  238. package/lib/modules/location.d.ts +5 -0
  239. package/lib/modules/location.js +57 -0
  240. package/lib/modules/login.d.ts +5 -0
  241. package/lib/modules/login.js +72 -0
  242. package/lib/modules/network.d.ts +5 -0
  243. package/lib/modules/network.js +39 -0
  244. package/lib/modules/system.d.ts +5 -0
  245. package/lib/modules/system.js +65 -0
  246. package/lib/styles/animate-vue.scss +3 -0
  247. package/lib/styles/animate.scss +27 -0
  248. package/lib/styles/bg-vue.scss +21 -0
  249. package/lib/styles/bg.scss +93 -0
  250. package/lib/styles/border.scss +218 -0
  251. package/lib/styles/flex-nvue.scss +64 -0
  252. package/lib/styles/flex-vue.scss +75 -0
  253. package/lib/styles/font.scss +59 -0
  254. package/lib/styles/index.scss +25 -0
  255. package/lib/styles/layout-nvue.scss +24 -0
  256. package/lib/styles/layout-vue.scss +30 -0
  257. package/lib/styles/layout.scss +76 -0
  258. package/lib/styles/opacity.scss +10 -0
  259. package/lib/styles/reset-vue.scss +46 -0
  260. package/lib/styles/shadow.scss +12 -0
  261. package/lib/styles/sizing-vue.scss +21 -0
  262. package/lib/styles/sizing.scss +21 -0
  263. package/lib/styles/spacing.scss +234 -0
  264. package/lib/styles/text-nvue.scss +21 -0
  265. package/lib/styles/text-vue.scss +70 -0
  266. package/lib/styles/text.scss +122 -0
  267. package/lib/styles/var.module.scss +29 -0
  268. package/lib/utils/audio.d.ts +14 -0
  269. package/lib/utils/audio.js +43 -0
  270. package/lib/utils/consts.d.ts +30 -0
  271. package/lib/utils/consts.js +52 -0
  272. package/lib/utils/cos.d.ts +15 -0
  273. package/lib/utils/cos.js +140 -0
  274. package/lib/utils/debounce.d.ts +2 -0
  275. package/lib/utils/debounce.js +30 -0
  276. package/lib/utils/file.d.ts +28 -0
  277. package/lib/utils/file.js +292 -0
  278. package/lib/utils/index.d.ts +166 -0
  279. package/lib/utils/index.js +485 -0
  280. package/lib/utils/locale.d.ts +6 -0
  281. package/lib/utils/locale.js +19 -0
  282. package/lib/utils/message.d.ts +9 -0
  283. package/lib/utils/message.js +63 -0
  284. package/lib/utils/navigate.d.ts +27 -0
  285. package/lib/utils/navigate.js +183 -0
  286. package/lib/utils/pages.d.ts +21 -0
  287. package/lib/utils/pages.js +79 -0
  288. package/lib/utils/permission.d.ts +16 -0
  289. package/lib/utils/permission.js +291 -0
  290. package/lib/utils/permit.d.ts +30 -0
  291. package/lib/utils/permit.js +181 -0
  292. package/lib/utils/query.d.ts +13 -0
  293. package/lib/utils/query.js +14 -0
  294. package/lib/utils/request.d.ts +8 -0
  295. package/lib/utils/request.js +126 -0
  296. package/lib/utils/storage.d.ts +53 -0
  297. package/lib/utils/storage.js +145 -0
  298. package/lib/utils/subscribe.d.ts +7 -0
  299. package/lib/utils/subscribe.js +94 -0
  300. package/lib/utils/throttle.d.ts +2 -0
  301. package/lib/utils/throttle.js +32 -0
  302. package/lib/utils/toast.d.ts +17 -0
  303. package/lib/utils/toast.js +66 -0
  304. package/lib/utils/uni.d.ts +1 -0
  305. package/lib/utils/uni.js +147 -0
  306. package/lib/utils/update.d.ts +9 -0
  307. package/lib/utils/update.js +376 -0
  308. package/package.json +49 -0
  309. package/types/index.d.ts +25 -0
  310. package/types/virtual.d.ts +1 -0
@@ -0,0 +1,150 @@
1
+ # 全局变量
2
+
3
+ 全局变量指 `@gmcb/uv-ui/theme.scss` 提供的 `$uv-*` Sass 变量。业务项目建议在 `uni.scss` 中先引入默认变量,再按品牌主题覆盖;后续页面、组件和工具样式编写时优先使用这些变量,非必要不要硬编码颜色。
4
+
5
+ ## 默认值
6
+
7
+ | 变量 | 默认值 | 用途 |
8
+ | --- | --- | --- |
9
+ | `$uv-main-color` | `#303133` | 主要文字 |
10
+ | `$uv-content-color` | `#606266` | 正文文字 |
11
+ | `$uv-tips-color` | `#909193` | 提示文字 |
12
+ | `$uv-light-color` | `#c0c4cc` | 浅色文字 |
13
+ | `$uv-border-color` | `#dadbde` | 边框 |
14
+ | `$uv-bg-color` | `#f3f4f6` | 页面/区块背景 |
15
+ | `$uv-bg-light-color` | `#fffbf4` | 浅色提示背景 |
16
+ | `$uv-disabled-color` | `#c8c9cc` | 禁用态 |
17
+ | `$uv-primary` | `#3c9cff` | 主色 |
18
+ | `$uv-primary-dark` | `#398ade` | 主色深色态 |
19
+ | `$uv-primary-disabled` | `#9acafc` | 主色禁用态 |
20
+ | `$uv-primary-light` | `#ecf5ff` | 主色浅背景 |
21
+ | `$uv-warning` | `#f9ae3d` | 警告色 |
22
+ | `$uv-warning-dark` | `#f1a532` | 警告深色态 |
23
+ | `$uv-warning-disabled` | `#f9d39b` | 警告禁用态 |
24
+ | `$uv-warning-light` | `#fdf6ec` | 警告浅背景 |
25
+ | `$uv-success` | `#5ac725` | 成功色 |
26
+ | `$uv-success-dark` | `#53c21d` | 成功深色态 |
27
+ | `$uv-success-disabled` | `#a9e08f` | 成功禁用态 |
28
+ | `$uv-success-light` | `#f5fff0` | 成功浅背景 |
29
+ | `$uv-error` | `#f56c6c` | 错误色 |
30
+ | `$uv-error-dark` | `#e45656` | 错误深色态 |
31
+ | `$uv-error-disabled` | `#f7b2b2` | 错误禁用态 |
32
+ | `$uv-error-light` | `#fef0f0` | 错误浅背景 |
33
+ | `$uv-info` | `#909399` | 信息色 |
34
+ | `$uv-info-dark` | `#767a82` | 信息深色态 |
35
+ | `$uv-info-disabled` | `#c4c6c9` | 信息禁用态 |
36
+ | `$uv-info-light` | `#f4f4f5` | 信息浅背景 |
37
+
38
+ ## 覆盖方式
39
+
40
+ 在项目的 `uni.scss` 中先引入默认变量,再声明同名变量覆盖。这样后续导入的组件样式、工具样式和业务样式都可以读取统一主题。
41
+
42
+ ```scss
43
+ /* uni.scss */
44
+ @import '@gmcb/uv-ui/theme.scss';
45
+
46
+ // 覆盖主题变量,建议与 defineConfig({ color }) 保持一致
47
+ $uv-primary: #451709;
48
+ $uv-primary-dark: #451709;
49
+ $uv-primary-disabled: #d5b9b0;
50
+ $uv-primary-light: #e8d8c9;
51
+ $uv-bg-color: #f8f5f2;
52
+ $uv-main-color: #2b211d;
53
+ ```
54
+
55
+ ## 使用约定
56
+
57
+ - 文字、背景、边框和状态色优先使用 `$uv-*` 变量。
58
+ - 业务主题色优先覆盖 `$uv-primary` 及其衍生变量,而不是在组件内重复写品牌色。
59
+ - 没有对应语义变量时,才在局部样式中使用硬编码颜色,并保持注释说明来源或用途。
60
+ - `uni.scss` 会影响全局样式和每个页面样式,建议只放变量覆盖,不放大量实际样式规则。
61
+
62
+ ## 使用示例
63
+
64
+ ### 文字和提示
65
+
66
+ ```scss
67
+ .page-title {
68
+ color: $uv-main-color;
69
+ font-weight: 600;
70
+ }
71
+
72
+ .page-desc {
73
+ color: $uv-content-color;
74
+ }
75
+
76
+ .form-tip {
77
+ color: $uv-tips-color;
78
+ font-size: 24rpx;
79
+ }
80
+ ```
81
+
82
+ ### 主按钮
83
+
84
+ ```scss
85
+ .primary-button {
86
+ color: #fff;
87
+ background-color: $uv-primary;
88
+ }
89
+
90
+ .primary-button:active {
91
+ background-color: $uv-primary-dark;
92
+ }
93
+
94
+ .primary-button--disabled {
95
+ background-color: $uv-primary-disabled;
96
+ }
97
+ ```
98
+
99
+ ### 卡片和边框
100
+
101
+ ```scss
102
+ .info-card {
103
+ color: $uv-main-color;
104
+ background-color: #fff;
105
+ border: 1px solid $uv-border-color;
106
+ }
107
+
108
+ .page-section {
109
+ background-color: $uv-bg-color;
110
+ }
111
+ ```
112
+
113
+ ### 状态标签
114
+
115
+ ```scss
116
+ .status-tag--success {
117
+ color: $uv-success;
118
+ background-color: $uv-success-light;
119
+ }
120
+
121
+ .status-tag--warning {
122
+ color: $uv-warning;
123
+ background-color: $uv-warning-light;
124
+ }
125
+
126
+ .status-tag--error {
127
+ color: $uv-error;
128
+ background-color: $uv-error-light;
129
+ }
130
+
131
+ .status-tag--info {
132
+ color: $uv-info;
133
+ background-color: $uv-info-light;
134
+ }
135
+ ```
136
+
137
+ ### 提示块
138
+
139
+ ```scss
140
+ .notice {
141
+ color: $uv-warning-dark;
142
+ background-color: $uv-warning-light;
143
+ border-left: 6rpx solid $uv-warning;
144
+ }
145
+
146
+ .error-message {
147
+ color: $uv-error;
148
+ background-color: $uv-error-light;
149
+ }
150
+ ```
@@ -0,0 +1,112 @@
1
+ # 公共组件
2
+
3
+ `@zfqh/uniapp` 提供一组 `g-*` 公共组件,发布路径位于 `@zfqh/uniapp/lib/components`,可通过 easycom 或构建产物路径使用。本页保留接入方式和常用组合。
4
+
5
+ ## easycom
6
+
7
+ 推荐在 `pages.json` 配置:
8
+
9
+ ```json
10
+ {
11
+ "easycom": {
12
+ "autoscan": true,
13
+ "custom": {
14
+ "^g-(.*)": "@zfqh/uniapp/lib/components/g-$1/g-$1.vue"
15
+ }
16
+ }
17
+ }
18
+ ```
19
+
20
+ 如果项目同时使用 `@gmcb/uv-ui`:
21
+
22
+ ```json
23
+ {
24
+ "easycom": {
25
+ "autoscan": true,
26
+ "custom": {
27
+ "^g-(.*)": "@zfqh/uniapp/lib/components/g-$1/g-$1.vue",
28
+ "^uv-(.*)": "@gmcb/uv-ui/components/uv-$1/uv-$1.vue"
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ ## 组件分组
35
+
36
+ | 分组 | 组件 | 说明 |
37
+ | --- | --- | --- |
38
+ | 页面骨架 | `g-container`、`g-page-container`、`g-refresh-view`、`g-data-list` | 页面容器、导航栏、下拉刷新、分页加载。 |
39
+ | 基础展示 | `g-icon`、`g-dot-text`、`g-money`、`g-more`、`g-skeleton`、`g-skeleton-view` | 图标、状态文本、金额、查看更多、骨架屏。 |
40
+ | 表单输入 | `g-search`、`g-checkbox-list`、`g-tag-editor`、`g-upload` | 搜索、选择、标签编辑、文件上传。 |
41
+ | 图片布局 | `g-grid-image`、`g-grid-swiper`、`g-waterfall`、`g-render-image` | 图片网格、宫格轮播、瀑布流、海报渲染。 |
42
+ | 弹层反馈 | `g-mask`、`g-popup`、`g-permission-popup`、`g-float` | 遮罩、弹窗、权限提示、悬浮入口。 |
43
+ | 分享 | `g-share-view`、`g-share-photo`、`g-share-weixin` | 分享面板、保存图片、微信分享。 |
44
+ | 音视频/图表 | `g-trtc`、`g-trtc-room`、`g-trtc-tui`、`g-polyline-view`、`g-polyline-chat`、`g-timer` | TRTC、TUI 通话、折线展示、计时器。 |
45
+ | 调试 | `g-env`、`g-back-button` | 环境切换、自定义返回/首页按钮。 |
46
+
47
+ ## Store 用法
48
+
49
+ 业务组件中读取 Vuex store 时请优先使用 Vuex 的组件上下文入口:
50
+
51
+ ```vue
52
+ <script setup lang="ts">
53
+ import { computed } from 'vue';
54
+ import { useStore } from 'vuex';
55
+
56
+ const store = useStore();
57
+ const isLogin = computed(() => store.getters.isLogin);
58
+ </script>
59
+ ```
60
+
61
+ 如果组件仍使用 Options API,可使用 `this.$store`。`uni.$store` 只推荐在脱离组件上下文的普通 TS 模块中使用,例如请求拦截器、导航工具、权限工具和 webview 消息处理。
62
+
63
+ ## 页面骨架示例
64
+
65
+ ```vue
66
+ <template>
67
+ <g-page-container
68
+ title="订单列表"
69
+ refresh-enabled
70
+ show-footer
71
+ @refresh="reload"
72
+ @scrollbottom="loadMore"
73
+ >
74
+ <template #right>
75
+ <g-icon name="search" @click="openSearch" />
76
+ </template>
77
+
78
+ <g-data-list ref="listRef" :request="queryOrders" :page-size="20" init-load>
79
+ <template #default="{ item }">
80
+ <view class="order-row">{{ item.orderNo }}</view>
81
+ </template>
82
+ </g-data-list>
83
+
84
+ <template #footer>
85
+ <view class="footer-actions">...</view>
86
+ </template>
87
+ </g-page-container>
88
+ </template>
89
+ ```
90
+
91
+ ## 表单与上传示例
92
+
93
+ ```vue
94
+ <template>
95
+ <g-search v-model:keywords="keyword" placeholder="搜索商品" @search="search" @clear="clear" />
96
+
97
+ <g-checkbox-list
98
+ :list="options"
99
+ multiple
100
+ label-field="name"
101
+ value-field="id"
102
+ @change="handleChange"
103
+ />
104
+
105
+ <g-upload v-model:files="files" :count="9" action="cos" @choose="handleChoose" />
106
+ </template>
107
+ ```
108
+
109
+ ## 继续阅读
110
+
111
+ - [配置参考](./../api/configs/):组件依赖的 `color`、`page`、`path`、`upload` 等配置。
112
+ - [工具](./../api/utils/):`cosCompress`、`requestPermission`、`navigateBack` 等组件内部常用工具。
@@ -0,0 +1,78 @@
1
+ # 常见问题
2
+
3
+ ## 请求没有 Authorization
4
+
5
+ 检查:
6
+
7
+ 1. 是否先注册 store,再注册 `@zfqh/uniapp`。
8
+ 2. 是否设置了 `app.config.globalProperties.$store = store`。
9
+ 3. token 是否位于 `uni.$store.state.login.info.token`。
10
+
11
+ 这里检查 `uni.$store` 是因为请求拦截器属于普通 TS 模块。组件或 hooks 内读取同一份状态时应使用 `useStore()`。
12
+
13
+ ## 401 后没有退出登录
14
+
15
+ 检查:
16
+
17
+ 1. `uni.$store.state.login.info.token` 是否存在。
18
+ 2. store 是否实现 `dispatch('logout')`。
19
+ 3. 请求配置是否设置了 `custom.reLogin: false` 或 `custom.needLogin: false`。
20
+
21
+ ## 环境配置未生效
22
+
23
+ 检查:
24
+
25
+ 1. 环境文件是否位于 `@env` 指向的目录。
26
+ 2. 文件名是否匹配 `.env.&lt;env&gt;.ts` 或 `.env.&lt;env&gt;.js`。
27
+ 3. 生产构建是否设置了 `BUILD_ENV`。
28
+ 4. 非小程序端是否通过 `config.env.set()` 存储了其他环境名。
29
+
30
+ ## navigate 未跳到登录页
31
+
32
+ 检查:
33
+
34
+ 1. `uni.$store.getters.isLogin` 是否正确。
35
+ 2. `page.needLoginPages` 是否包含目标页。
36
+ 3. `getPage('login')` 是否能返回登录页路径。
37
+ 4. 当前跳转是否显式传入 `needLogin: false`。
38
+
39
+ `navigate` 内部读取 `uni.$store.getters.isLogin`。如果页面组件里自己判断登录态,请使用 `import { useStore } from 'vuex'`。
40
+
41
+ ## tabBar 页面 navigateTo 失败
42
+
43
+ `navigate` 会自动判断 `page.tabBarPages`。如果 tabBar 页面没有配置进去,可能仍然调用 `navigateTo`。
44
+
45
+ ```ts
46
+ defineConfig({
47
+ page: {
48
+ tabBarPages: ['/pages/index/index', '/pages/user/user'],
49
+ },
50
+ });
51
+ ```
52
+
53
+ ## COS 上传失败
54
+
55
+ 检查:
56
+
57
+ 1. `upload.request({ mode: 'cos' })` 是否返回临时凭证。
58
+ 2. 返回字段是否包含 `secret_id`、`secret_key`、`session_token`、`bucket`、`region`。
59
+ 3. 临时凭证是否过期。
60
+ 4. 小程序端是否配置了 COS 域名白名单。
61
+
62
+ ## useI18n 在 APP-NVUE 行为不同
63
+
64
+ APP-NVUE 下不会直接使用 `vue-i18n` 的 `useI18n`,而是通过 `inject('t')` 和内置 locale 逻辑适配。其他端透传 `vue-i18n`。
65
+
66
+ ## 深度引用找不到模块
67
+
68
+ 深度引用使用的是构建产物路径:
69
+
70
+ ```ts
71
+ import { GET } from '@zfqh/uniapp/lib/apis/request';
72
+ ```
73
+
74
+ 请确认:
75
+
76
+ 1. 包已执行编译,生成 `lib`。
77
+ 2. 发布包的 `files` 包含 `lib`。
78
+ 3. 本地 workspace 依赖已正确链接。
@@ -0,0 +1,195 @@
1
+ # 快速开始
2
+
3
+ ## 安装
4
+
5
+ ```bash
6
+ npm i @zfqh/uniapp
7
+ ```
8
+
9
+ 本包会使用 `@gmcb/uv-ui` 中的请求、时间、query 等基础能力,因此业务项目通常也会注册 `@gmcb/uv-ui`。
10
+
11
+ ```bash
12
+ npm i @gmcb/uv-ui
13
+ ```
14
+
15
+ ## 注册插件
16
+
17
+ 在 uni-app Vue 3 项目的 `src/main.ts` 注册:
18
+
19
+ ```ts
20
+ import { createSSRApp } from 'vue';
21
+ import uvUI from '@gmcb/uv-ui';
22
+ import uniapp from '@zfqh/uniapp';
23
+ import App from './App.vue';
24
+ import store from './store';
25
+
26
+ export function createApp() {
27
+ const app = createSSRApp(App);
28
+
29
+ app.use(store);
30
+ app.use(uvUI);
31
+ app.use(uniapp);
32
+
33
+ return { app };
34
+ }
35
+ ```
36
+
37
+ `@zfqh/uniapp` 插件安装时会把 `app.config.globalProperties.$store` 赋值给 `uni.$store`。请求、导航、权限、登录等能力会读取 `uni.$store`,所以请先挂载 store,再注册本插件。
38
+
39
+ Store 使用入口请按上下文区分:
40
+
41
+ - 组件的 Composition API 或 `<script setup>` 中使用 `import { useStore } from 'vuex'`。
42
+ - 自定义 hooks / composables 中也使用 `useStore()`。
43
+ - Options API 组件中可使用 `this.$store`。
44
+ - 请求、导航、权限、webview 消息等普通 TS 模块中使用 `uni.$store`。
45
+
46
+ 详见 [Store 使用位置](./project-frame.md#store-使用位置)。
47
+
48
+ ## 配置 easycom
49
+
50
+ `@zfqh/uniapp` 的公共组件位于 `lib/components/g-*`,建议通过 `pages.json` 配置:
51
+
52
+ ```json
53
+ {
54
+ "easycom": {
55
+ "autoscan": true,
56
+ "custom": {
57
+ "^g-(.*)": "@zfqh/uniapp/lib/components/g-$1/g-$1.vue",
58
+ "^uv-(.*)": "@gmcb/uv-ui/components/uv-$1/uv-$1.vue"
59
+ }
60
+ }
61
+ }
62
+ ```
63
+
64
+ 页面中即可直接使用:
65
+
66
+ ```vue
67
+ <template>
68
+ <g-container>
69
+ <g-search v-model="keyword" />
70
+ <g-data-list :list="list" />
71
+ </g-container>
72
+ </template>
73
+ ```
74
+
75
+ ## 配置文件
76
+
77
+ 新建项目配置文件,例如患者端项目的 `src/config.js`。真实项目通常直接调用 `defineConfig` 完成全局配置,不一定需要 `export default`:
78
+
79
+ ```ts
80
+ import { defineConfig, createPages } from '@zfqh/uniapp';
81
+ import { app } from '@zfqh/uniapp/lib/configs/app';
82
+ import { brand } from '@zfqh/uniapp/lib/configs/brand';
83
+ // #ifdef H5
84
+ import pages from 'virtual:remove-json-comments@/pages.json';
85
+ // #endif
86
+ // #ifndef H5
87
+ import pages from '@/pages.json';
88
+ // #endif
89
+ import { getTencentToken } from '@zfqh/uniapp/lib/apis';
90
+
91
+ defineConfig({
92
+ app: app.patient,
93
+ brand: brand.zfqh,
94
+ page: createPages(pages),
95
+ path: {
96
+ index: '/pages/index/index',
97
+ login: '/pages/public/login/login',
98
+ webview: '/pages/public/webview/webview',
99
+ },
100
+ tabbar: {
101
+ badgeIndex: 1,
102
+ },
103
+ upload: {
104
+ async request() {
105
+ const { data } = await getTencentToken();
106
+ return {
107
+ secret_id: data.tmpSecretId,
108
+ secret_key: data.tmpSecretKey,
109
+ session_token: data.sessionToken,
110
+ create_time: data.createTime,
111
+ expire_time: data.expirationTime,
112
+ bucket: data.bucket,
113
+ region: data.region,
114
+ };
115
+ },
116
+ },
117
+ });
118
+ ```
119
+
120
+ 门店端这类需要覆盖主题色或上传区域的项目,可以基于内置预设继续覆盖:
121
+
122
+ ```ts
123
+ import { defineConfig } from '@zfqh/uniapp';
124
+ import { app } from '@zfqh/uniapp/lib/configs/app';
125
+ import { brand } from '@zfqh/uniapp/lib/configs/brand';
126
+ import { getTencentToken } from '@zfqh/uniapp/lib/apis';
127
+ import store from '@/store';
128
+
129
+ defineConfig({
130
+ app: app.merchant,
131
+ brand: brand.zfqh,
132
+ path: {
133
+ index: '/pages/home/home',
134
+ webview: '/pages/webview/webview',
135
+ },
136
+ color: {
137
+ primary: '#451709',
138
+ primaryDark: '#451709',
139
+ primaryDisabled: '#D5B9B0',
140
+ primaryLight: '#E8D8C9',
141
+ },
142
+ upload: {
143
+ async request() {
144
+ const { data } = await getTencentToken();
145
+ return {
146
+ secret_id: data.tmpSecretId,
147
+ secret_key: data.tmpSecretKey,
148
+ session_token: data.sessionToken,
149
+ create_time: data.createTime,
150
+ expire_time: data.expirationTime,
151
+ bucket: data.bucket,
152
+ region: store.state.storeConfig.isGlobalAccelerate ? 'accelerate' : data.region,
153
+ };
154
+ },
155
+ },
156
+ });
157
+ ```
158
+
159
+ 关键点:
160
+
161
+ - `app.patient`、`app.merchant`、`brand.zfqh` 是内置预设,位于深度路径 `@zfqh/uniapp/lib/configs/app` 和 `@zfqh/uniapp/lib/configs/brand`。
162
+ - `page: createPages(pages)` 会从 `pages.json` 生成 `pages`、`tabBarPages`、`nativePages`、`needLoginPages`、`notRedirectPages`。
163
+ - 如项目暂不需要自动页面集合,也可以不配置 `page`,只配置 `path`,由业务自行维护登录拦截页面集合。
164
+ - H5 端如果 `pages.json` 带注释,可通过 `virtual:remove-json-comments@/pages.json` 导入;其他端直接导入 `@/pages.json`。
165
+ - `path.index`、`path.login`、`path.webview` 是导航、登录拦截和 webview 承载页的核心别名。
166
+ - `upload.request` 需要把业务接口返回的腾讯云字段映射成 `secret_id`、`secret_key`、`session_token`、`bucket`、`region` 等字段。
167
+ - `getTencentToken` 已内置在 `@zfqh/uniapp/lib/apis`,如果项目使用不同接口,可替换成自己的请求函数,但返回字段仍需映射成 COS 工具需要的字段名。
168
+
169
+ 多环境配置建议放到 `env/.env.dev.ts`、`env/.env.prod.ts`,详见 [环境配置](../api/configs/env.md)。
170
+
171
+ TypeScript 项目建议在 `tsconfig.json` 中添加 `"types": ["@zfqh/uniapp/types"]`,详见 [项目接入](./project-frame.md#typescript-配置)。
172
+
173
+ ## 常用导入
174
+
175
+ ```ts
176
+ import {
177
+ toast,
178
+ navigate,
179
+ cos,
180
+ color,
181
+ debounce,
182
+ throttle,
183
+ copyToClipboard,
184
+ defineConfig,
185
+ defineEnvConfig,
186
+ } from '@zfqh/uniapp';
187
+ ```
188
+
189
+ 业务请求优先使用内置的 `GET/POST`,详见 [请求封装](../api/apis/request.md):
190
+
191
+ ```ts
192
+ import { GET, POST } from '@zfqh/uniapp/lib/apis';
193
+ ```
194
+
195
+ 根入口导出清单见 [根入口导出](../api/)。