@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.
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +39 -0
- package/docs/api/apis/core.md +189 -0
- package/docs/api/apis/index.md +82 -0
- package/docs/api/apis/request.md +369 -0
- package/docs/api/configs/api.md +32 -0
- package/docs/api/configs/app.md +43 -0
- package/docs/api/configs/brand.md +43 -0
- package/docs/api/configs/cdn.md +35 -0
- package/docs/api/configs/color.md +144 -0
- package/docs/api/configs/env.md +120 -0
- package/docs/api/configs/index.md +394 -0
- package/docs/api/configs/link.md +33 -0
- package/docs/api/configs/log.md +27 -0
- package/docs/api/configs/mp.md +34 -0
- package/docs/api/configs/navigate.md +27 -0
- package/docs/api/configs/page.md +32 -0
- package/docs/api/configs/path.md +27 -0
- package/docs/api/configs/storage.md +24 -0
- package/docs/api/configs/tabbar.md +29 -0
- package/docs/api/configs/toast.md +35 -0
- package/docs/api/configs/update.md +25 -0
- package/docs/api/configs/upload.md +45 -0
- package/docs/api/configs/ver.md +32 -0
- package/docs/api/configs/web.md +28 -0
- package/docs/api/hooks/index.md +182 -0
- package/docs/api/hooks/useI18n.md +27 -0
- package/docs/api/hooks/useOverlay.md +37 -0
- package/docs/api/hooks/usePopup.md +35 -0
- package/docs/api/hooks/useVersion.md +23 -0
- package/docs/api/index.md +269 -0
- package/docs/api/mixins/app.md +29 -0
- package/docs/api/mixins/badge.md +23 -0
- package/docs/api/mixins/debounce.md +32 -0
- package/docs/api/mixins/deep.md +29 -0
- package/docs/api/mixins/index.md +23 -0
- package/docs/api/mixins/login.md +22 -0
- package/docs/api/mixins/model.md +26 -0
- package/docs/api/mixins/redirect.md +26 -0
- package/docs/api/mixins/share.md +29 -0
- package/docs/api/mixins/show.md +27 -0
- package/docs/api/mixins/webview.md +27 -0
- package/docs/api/modules/app.md +30 -0
- package/docs/api/modules/dict.md +28 -0
- package/docs/api/modules/im.md +22 -0
- package/docs/api/modules/index.md +44 -0
- package/docs/api/modules/launch.md +26 -0
- package/docs/api/modules/location.md +25 -0
- package/docs/api/modules/login.md +35 -0
- package/docs/api/modules/network.md +26 -0
- package/docs/api/modules/system.md +29 -0
- package/docs/api/utils/audio.md +84 -0
- package/docs/api/utils/consts.md +201 -0
- package/docs/api/utils/cos.md +269 -0
- package/docs/api/utils/debounce.md +89 -0
- package/docs/api/utils/file.md +78 -0
- package/docs/api/utils/index.md +547 -0
- package/docs/api/utils/locale.md +32 -0
- package/docs/api/utils/message.md +81 -0
- package/docs/api/utils/navigate.md +267 -0
- package/docs/api/utils/pages.md +205 -0
- package/docs/api/utils/permission.md +28 -0
- package/docs/api/utils/permit.md +62 -0
- package/docs/api/utils/query.md +89 -0
- package/docs/api/utils/request.md +34 -0
- package/docs/api/utils/storage.md +145 -0
- package/docs/api/utils/subscribe.md +77 -0
- package/docs/api/utils/throttle.md +101 -0
- package/docs/api/utils/toast.md +164 -0
- package/docs/api/utils/uni.md +28 -0
- package/docs/api/utils/update.md +165 -0
- package/docs/components/g-back-button.md +76 -0
- package/docs/components/g-checkbox-list.md +101 -0
- package/docs/components/g-container.md +93 -0
- package/docs/components/g-data-list.md +106 -0
- package/docs/components/g-dot-text.md +79 -0
- package/docs/components/g-env.md +75 -0
- package/docs/components/g-float.md +83 -0
- package/docs/components/g-grid-image.md +91 -0
- package/docs/components/g-grid-swiper.md +99 -0
- package/docs/components/g-icon.md +106 -0
- package/docs/components/g-mask.md +82 -0
- package/docs/components/g-money.md +90 -0
- package/docs/components/g-more.md +78 -0
- package/docs/components/g-page-container.md +170 -0
- package/docs/components/g-permission-popup.md +117 -0
- package/docs/components/g-polyline-chat.md +102 -0
- package/docs/components/g-polyline-view.md +67 -0
- package/docs/components/g-popup.md +144 -0
- package/docs/components/g-refresh-view.md +118 -0
- package/docs/components/g-render-image.md +83 -0
- package/docs/components/g-search.md +120 -0
- package/docs/components/g-share-photo.md +77 -0
- package/docs/components/g-share-view.md +83 -0
- package/docs/components/g-share-weixin.md +81 -0
- package/docs/components/g-skeleton-view.md +71 -0
- package/docs/components/g-skeleton.md +64 -0
- package/docs/components/g-tag-editor.md +134 -0
- package/docs/components/g-timer.md +72 -0
- package/docs/components/g-trtc-room.md +116 -0
- package/docs/components/g-trtc-tui.md +84 -0
- package/docs/components/g-trtc.md +124 -0
- package/docs/components/g-upload.md +117 -0
- package/docs/components/g-waterfall.md +84 -0
- package/docs/components/index.md +109 -0
- package/docs/components/styles/base-styles.md +367 -0
- package/docs/components/styles/global-vars.md +150 -0
- package/docs/components/usage.md +112 -0
- package/docs/faq/index.md +78 -0
- package/docs/guide/getting-started.md +195 -0
- package/docs/guide/project-frame.md +297 -0
- package/docs/index.md +80 -0
- package/lib/apis/core.d.ts +12 -0
- package/lib/apis/core.js +13 -0
- package/lib/apis/index.d.ts +2 -0
- package/lib/apis/index.js +2 -0
- package/lib/apis/request.d.ts +4 -0
- package/lib/apis/request.js +27 -0
- package/lib/components/g-back-button/g-back-button.vue +141 -0
- package/lib/components/g-checkbox-list/g-checkbox-list.vue +156 -0
- package/lib/components/g-container/g-container.vue +159 -0
- package/lib/components/g-data-list/g-data-list.vue +192 -0
- package/lib/components/g-dot-text/g-dot-text.vue +114 -0
- package/lib/components/g-env/g-env.vue +123 -0
- package/lib/components/g-float/g-float.vue +131 -0
- package/lib/components/g-grid-image/g-grid-image.vue +84 -0
- package/lib/components/g-grid-swiper/g-grid-swiper.vue +224 -0
- package/lib/components/g-icon/g-icon.vue +72 -0
- package/lib/components/g-mask/g-mask.vue +126 -0
- package/lib/components/g-money/g-money.vue +174 -0
- package/lib/components/g-more/g-more.vue +68 -0
- package/lib/components/g-page-container/g-page-container.vue +470 -0
- package/lib/components/g-permission-popup/g-permission-popup.vue +80 -0
- package/lib/components/g-polyline-chat/g-polyline-chat.vue +255 -0
- package/lib/components/g-polyline-view/g-polyline-view.vue +104 -0
- package/lib/components/g-popup/g-popup.vue +449 -0
- package/lib/components/g-refresh-view/g-refresh-view.vue +213 -0
- package/lib/components/g-render-image/g-render-image.vue +222 -0
- package/lib/components/g-search/g-search.vue +274 -0
- package/lib/components/g-share-photo/g-share-photo.vue +75 -0
- package/lib/components/g-share-view/g-share-view.vue +157 -0
- package/lib/components/g-share-weixin/g-share-weixin.vue +106 -0
- package/lib/components/g-skeleton/g-skeleton.vue +55 -0
- package/lib/components/g-skeleton-view/g-skeleton-view.vue +78 -0
- package/lib/components/g-tag-editor/g-tag-editor.vue +482 -0
- package/lib/components/g-timer/g-timer.vue +61 -0
- package/lib/components/g-trtc/g-trtc.vue +347 -0
- package/lib/components/g-trtc-room/g-trtc-room.vue +524 -0
- package/lib/components/g-trtc-room/iconfont.scss +59 -0
- package/lib/components/g-trtc-tui/g-trtc-tui.vue +245 -0
- package/lib/components/g-upload/g-upload.vue +294 -0
- package/lib/components/g-waterfall/g-waterfall.vue +101 -0
- package/lib/configs/api.d.ts +7 -0
- package/lib/configs/api.js +6 -0
- package/lib/configs/app.d.ts +26 -0
- package/lib/configs/app.js +50 -0
- package/lib/configs/brand.d.ts +22 -0
- package/lib/configs/brand.js +26 -0
- package/lib/configs/cdn.d.ts +13 -0
- package/lib/configs/cdn.js +12 -0
- package/lib/configs/color.d.ts +62 -0
- package/lib/configs/color.js +66 -0
- package/lib/configs/env.d.ts +37 -0
- package/lib/configs/env.js +71 -0
- package/lib/configs/index.d.ts +170 -0
- package/lib/configs/index.js +82 -0
- package/lib/configs/link.d.ts +11 -0
- package/lib/configs/link.js +3 -0
- package/lib/configs/log.d.ts +9 -0
- package/lib/configs/log.js +8 -0
- package/lib/configs/mp.d.ts +15 -0
- package/lib/configs/mp.js +9 -0
- package/lib/configs/navigate.d.ts +17 -0
- package/lib/configs/navigate.js +5 -0
- package/lib/configs/page.d.ts +18 -0
- package/lib/configs/page.js +14 -0
- package/lib/configs/path.d.ts +11 -0
- package/lib/configs/path.js +10 -0
- package/lib/configs/storage.d.ts +7 -0
- package/lib/configs/storage.js +6 -0
- package/lib/configs/tabbar.d.ts +7 -0
- package/lib/configs/tabbar.js +6 -0
- package/lib/configs/toast.d.ts +18 -0
- package/lib/configs/toast.js +29 -0
- package/lib/configs/update.d.ts +45 -0
- package/lib/configs/update.js +6 -0
- package/lib/configs/upload.d.ts +30 -0
- package/lib/configs/upload.js +7 -0
- package/lib/configs/ver.d.ts +8 -0
- package/lib/configs/ver.js +28 -0
- package/lib/configs/web.d.ts +5 -0
- package/lib/configs/web.js +2 -0
- package/lib/hooks/index.d.ts +4 -0
- package/lib/hooks/index.js +4 -0
- package/lib/hooks/useI18n.d.ts +2 -0
- package/lib/hooks/useI18n.js +19 -0
- package/lib/hooks/useOverlay.d.ts +1 -0
- package/lib/hooks/useOverlay.js +17 -0
- package/lib/hooks/usePopup.d.ts +1 -0
- package/lib/hooks/usePopup.js +14 -0
- package/lib/hooks/useVersion.d.ts +6 -0
- package/lib/hooks/useVersion.js +21 -0
- package/lib/index.d.ts +26 -0
- package/lib/index.js +33 -0
- package/lib/mixins/app.d.ts +14 -0
- package/lib/mixins/app.js +105 -0
- package/lib/mixins/badge.d.ts +24 -0
- package/lib/mixins/badge.js +44 -0
- package/lib/mixins/debounce.d.ts +6 -0
- package/lib/mixins/debounce.js +11 -0
- package/lib/mixins/deep.d.ts +6 -0
- package/lib/mixins/deep.js +8 -0
- package/lib/mixins/index.d.ts +8 -0
- package/lib/mixins/index.js +8 -0
- package/lib/mixins/login.d.ts +4 -0
- package/lib/mixins/login.js +25 -0
- package/lib/mixins/model.d.ts +22 -0
- package/lib/mixins/model.js +29 -0
- package/lib/mixins/redirect.d.ts +8 -0
- package/lib/mixins/redirect.js +94 -0
- package/lib/mixins/share.d.ts +15 -0
- package/lib/mixins/share.js +55 -0
- package/lib/mixins/show.d.ts +9 -0
- package/lib/mixins/show.js +16 -0
- package/lib/mixins/webview.d.ts +26 -0
- package/lib/mixins/webview.js +225 -0
- package/lib/modules/app.d.ts +5 -0
- package/lib/modules/app.js +19 -0
- package/lib/modules/dict.d.ts +8 -0
- package/lib/modules/dict.js +43 -0
- package/lib/modules/im.d.ts +6 -0
- package/lib/modules/im.js +105 -0
- package/lib/modules/index.d.ts +8 -0
- package/lib/modules/index.js +8 -0
- package/lib/modules/launch.d.ts +5 -0
- package/lib/modules/launch.js +32 -0
- package/lib/modules/location.d.ts +5 -0
- package/lib/modules/location.js +57 -0
- package/lib/modules/login.d.ts +5 -0
- package/lib/modules/login.js +72 -0
- package/lib/modules/network.d.ts +5 -0
- package/lib/modules/network.js +39 -0
- package/lib/modules/system.d.ts +5 -0
- package/lib/modules/system.js +65 -0
- package/lib/styles/animate-vue.scss +3 -0
- package/lib/styles/animate.scss +27 -0
- package/lib/styles/bg-vue.scss +21 -0
- package/lib/styles/bg.scss +93 -0
- package/lib/styles/border.scss +218 -0
- package/lib/styles/flex-nvue.scss +64 -0
- package/lib/styles/flex-vue.scss +75 -0
- package/lib/styles/font.scss +59 -0
- package/lib/styles/index.scss +25 -0
- package/lib/styles/layout-nvue.scss +24 -0
- package/lib/styles/layout-vue.scss +30 -0
- package/lib/styles/layout.scss +76 -0
- package/lib/styles/opacity.scss +10 -0
- package/lib/styles/reset-vue.scss +46 -0
- package/lib/styles/shadow.scss +12 -0
- package/lib/styles/sizing-vue.scss +21 -0
- package/lib/styles/sizing.scss +21 -0
- package/lib/styles/spacing.scss +234 -0
- package/lib/styles/text-nvue.scss +21 -0
- package/lib/styles/text-vue.scss +70 -0
- package/lib/styles/text.scss +122 -0
- package/lib/styles/var.module.scss +29 -0
- package/lib/utils/audio.d.ts +14 -0
- package/lib/utils/audio.js +43 -0
- package/lib/utils/consts.d.ts +30 -0
- package/lib/utils/consts.js +52 -0
- package/lib/utils/cos.d.ts +15 -0
- package/lib/utils/cos.js +140 -0
- package/lib/utils/debounce.d.ts +2 -0
- package/lib/utils/debounce.js +30 -0
- package/lib/utils/file.d.ts +28 -0
- package/lib/utils/file.js +292 -0
- package/lib/utils/index.d.ts +166 -0
- package/lib/utils/index.js +485 -0
- package/lib/utils/locale.d.ts +6 -0
- package/lib/utils/locale.js +19 -0
- package/lib/utils/message.d.ts +9 -0
- package/lib/utils/message.js +63 -0
- package/lib/utils/navigate.d.ts +27 -0
- package/lib/utils/navigate.js +183 -0
- package/lib/utils/pages.d.ts +21 -0
- package/lib/utils/pages.js +79 -0
- package/lib/utils/permission.d.ts +16 -0
- package/lib/utils/permission.js +291 -0
- package/lib/utils/permit.d.ts +30 -0
- package/lib/utils/permit.js +181 -0
- package/lib/utils/query.d.ts +13 -0
- package/lib/utils/query.js +14 -0
- package/lib/utils/request.d.ts +8 -0
- package/lib/utils/request.js +126 -0
- package/lib/utils/storage.d.ts +53 -0
- package/lib/utils/storage.js +145 -0
- package/lib/utils/subscribe.d.ts +7 -0
- package/lib/utils/subscribe.js +94 -0
- package/lib/utils/throttle.d.ts +2 -0
- package/lib/utils/throttle.js +32 -0
- package/lib/utils/toast.d.ts +17 -0
- package/lib/utils/toast.js +66 -0
- package/lib/utils/uni.d.ts +1 -0
- package/lib/utils/uni.js +147 -0
- package/lib/utils/update.d.ts +9 -0
- package/lib/utils/update.js +376 -0
- package/package.json +49 -0
- package/types/index.d.ts +25 -0
- 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.<env>.ts` 或 `.env.<env>.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/)。
|