@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,369 @@
|
|
|
1
|
+
# request
|
|
2
|
+
|
|
3
|
+
业务请求实例,封装 baseURL、header 注入和统一拦截器。发布路径:`@zfqh/uniapp/lib/apis/request`
|
|
4
|
+
|
|
5
|
+
### 导出
|
|
6
|
+
|
|
7
|
+
| 导出 | 说明 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `GET` | 使用业务请求实例发起 GET 请求。 |
|
|
10
|
+
| `POST` | 使用业务请求实例发起 POST 请求。 |
|
|
11
|
+
| `PUT` | 使用业务请求实例发起 PUT 请求。 |
|
|
12
|
+
| `DELETE` | 使用业务请求实例发起 DELETE 请求。 |
|
|
13
|
+
| `default` | `uni.$uv.http` 请求实例。 |
|
|
14
|
+
|
|
15
|
+
### 请求实例
|
|
16
|
+
|
|
17
|
+
`@zfqh/uniapp/lib/apis/request` 直接复用 `uni.$uv.http`,不再内部创建新的 `Request` 实例:
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
const request = uni.$uv.http;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
因此业务项目需要先安装并初始化 `@gmcb/uv-ui`,确保 `uni.$uv.http` 可用。
|
|
24
|
+
|
|
25
|
+
### Header 注入
|
|
26
|
+
|
|
27
|
+
| Header | 来源 | 默认值 |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `Authorization` | `uni.$store.state.login.info.token` | 无 |
|
|
30
|
+
| `Tenant-Id` | `uni.$store.state.login.info.tenantId` | `1` |
|
|
31
|
+
| `X-Language` | `uni.$store.state.system.info.appLanguage` 映射到 `LANGUAGE` | 无 |
|
|
32
|
+
| `Channel` | `query.channel` 或 `config.app.channel` | `config.app.channel` |
|
|
33
|
+
|
|
34
|
+
业务请求的 `baseURL` 来自 `config.api.baseUrl`。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 请求封装指南
|
|
39
|
+
|
|
40
|
+
请求能力由两层组成:
|
|
41
|
+
|
|
42
|
+
1. `@zfqh/uniapp/lib/utils/request`:通用请求工厂和通用拦截器。
|
|
43
|
+
2. `@zfqh/uniapp/lib/apis/request`:业务请求实例,使用 `@gmcb/uv-ui/libs/luch-request` 创建,并注入业务 header。
|
|
44
|
+
|
|
45
|
+
## 请求方式选择
|
|
46
|
+
|
|
47
|
+
| 方式 | 适用场景 |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| **`@zfqh/uniapp/lib/apis` 的 GET/POST(推荐)** | 绝大多数业务接口调用,已内置 token 注入、401 退出、日志、header 注入 |
|
|
50
|
+
| `createRequest` 自定义实例 | 需要对接不同后端地址、独立拦截器逻辑、或隔离的请求配置 |
|
|
51
|
+
|
|
52
|
+
优先使用内置的 `GET/POST/PUT/DELETE`,仅在以下场景考虑 `createRequest`:
|
|
53
|
+
|
|
54
|
+
- 项目需要对接不同的后端地址(不同 baseURL)
|
|
55
|
+
- 需要独立的拦截器逻辑(例如第三方 API)
|
|
56
|
+
- 需要隔离的请求配置
|
|
57
|
+
|
|
58
|
+
## 直接使用业务请求
|
|
59
|
+
|
|
60
|
+
`@zfqh/uniapp/lib/apis` 会导出业务 `GET/POST/PUT/DELETE`,推荐从聚合入口引用:
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import { GET, POST, PUT, DELETE } from '@zfqh/uniapp/lib/apis';
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
也可以从请求实例文件深度引用:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
import { GET, POST, PUT, DELETE } from '@zfqh/uniapp/lib/apis/request';
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 基本使用
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { GET, POST, PUT, DELETE } from '@zfqh/uniapp/lib/apis';
|
|
76
|
+
|
|
77
|
+
export const getFamilyList = (data) => GET('/app-api/robot/user-family/getUserFamily', data);
|
|
78
|
+
export const createFamily = (data) => POST('/app-api/robot/user-family/create', data);
|
|
79
|
+
export const updateFamily = (data) => PUT('/app-api/robot/user-family/update', data);
|
|
80
|
+
export const deleteFamily = (id: number) => DELETE('/app-api/robot/user-family/delete?id=:id', { id });
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 接口用法
|
|
84
|
+
|
|
85
|
+
### GET
|
|
86
|
+
|
|
87
|
+
发起 GET 请求,`data` 会作为 query 参数传入。
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
import { GET } from '@zfqh/uniapp/lib/apis';
|
|
91
|
+
|
|
92
|
+
export const getFamilyList = (data: { userId?: string }) =>
|
|
93
|
+
GET('/app-api/robot/user-family/getUserFamily', data);
|
|
94
|
+
|
|
95
|
+
const { data } = await getFamilyList({ userId: '10001' });
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
99
|
+
| --- | --- | --- | --- |
|
|
100
|
+
| `url` | `string` | 是 | 接口路径,支持 `:id`、`/:id` 动态占位。 |
|
|
101
|
+
| `data` | `Record<string, any>` | 否 | query 参数;动态占位字段会先写入 URL,并从 `data` 中删除。 |
|
|
102
|
+
| `options` | `Record<string, any>` | 否 | 透传给底层 `uni.$uv.http.get` 的请求配置,可包含 `custom`。 |
|
|
103
|
+
|
|
104
|
+
| 返回值 | 说明 |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `Promise<ApiResponse<T>>` | 成功时 resolve 后端响应对象;响应拦截器要求 `code == 0`。 |
|
|
107
|
+
|
|
108
|
+
### POST
|
|
109
|
+
|
|
110
|
+
发起 POST 请求,`data` 会作为请求体传入。
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
import { POST } from '@zfqh/uniapp/lib/apis';
|
|
114
|
+
|
|
115
|
+
export const submitConsult = (data: {
|
|
116
|
+
familyId: string;
|
|
117
|
+
symptomDesc: string;
|
|
118
|
+
}) => POST('/app-api/robot/api/medical/inquirySubmitV2', data);
|
|
119
|
+
|
|
120
|
+
const res = await submitConsult({
|
|
121
|
+
familyId: '10001',
|
|
122
|
+
symptomDesc: '头痛两天',
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
127
|
+
| --- | --- | --- | --- |
|
|
128
|
+
| `url` | `string` | 是 | 接口路径,支持动态占位。 |
|
|
129
|
+
| `data` | `Record<string, any>` | 否 | 请求体数据;动态占位字段会先写入 URL。 |
|
|
130
|
+
| `options` | `Record<string, any>` | 否 | 透传给底层 `uni.$uv.http.post` 的请求配置。 |
|
|
131
|
+
|
|
132
|
+
| 返回值 | 说明 |
|
|
133
|
+
| --- | --- |
|
|
134
|
+
| `Promise<ApiResponse<T>>` | 成功时 resolve 后端响应对象;失败时 reject 统一错误响应。 |
|
|
135
|
+
|
|
136
|
+
### PUT
|
|
137
|
+
|
|
138
|
+
发起 PUT 请求,常用于更新业务数据。
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
import { PUT } from '@zfqh/uniapp/lib/apis';
|
|
142
|
+
|
|
143
|
+
export const updateFamily = (data: {
|
|
144
|
+
id: number;
|
|
145
|
+
name: string;
|
|
146
|
+
relation: string;
|
|
147
|
+
}) => PUT('/app-api/robot/user-family/update', data);
|
|
148
|
+
|
|
149
|
+
await updateFamily({
|
|
150
|
+
id: 1,
|
|
151
|
+
name: '张三',
|
|
152
|
+
relation: 'father',
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
157
|
+
| --- | --- | --- | --- |
|
|
158
|
+
| `url` | `string` | 是 | 接口路径,支持动态占位。 |
|
|
159
|
+
| `data` | `Record<string, any>` | 否 | 请求体数据。 |
|
|
160
|
+
| `options` | `Record<string, any>` | 否 | 透传给底层 `uni.$uv.http.put` 的请求配置。 |
|
|
161
|
+
|
|
162
|
+
| 返回值 | 说明 |
|
|
163
|
+
| --- | --- |
|
|
164
|
+
| `Promise<ApiResponse<T>>` | 成功时 resolve 后端响应对象。 |
|
|
165
|
+
|
|
166
|
+
### DELETE
|
|
167
|
+
|
|
168
|
+
发起 DELETE 请求,常用于删除业务数据。
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
import { DELETE } from '@zfqh/uniapp/lib/apis';
|
|
172
|
+
|
|
173
|
+
export const deleteFamily = (id: number) =>
|
|
174
|
+
DELETE('/app-api/robot/user-family/delete?id=:id', { id });
|
|
175
|
+
|
|
176
|
+
await deleteFamily(1);
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
180
|
+
| --- | --- | --- | --- |
|
|
181
|
+
| `url` | `string` | 是 | 接口路径,支持动态占位。 |
|
|
182
|
+
| `data` | `Record<string, any>` | 否 | 删除参数;动态占位字段会先写入 URL。 |
|
|
183
|
+
| `options` | `Record<string, any>` | 否 | 透传给底层 `uni.$uv.http.delete` 的请求配置。 |
|
|
184
|
+
|
|
185
|
+
| 返回值 | 说明 |
|
|
186
|
+
| --- | --- |
|
|
187
|
+
| `Promise<ApiResponse<T>>` | 成功时 resolve 后端响应对象。 |
|
|
188
|
+
|
|
189
|
+
### request
|
|
190
|
+
|
|
191
|
+
默认导出底层业务请求实例,来自 `uni.$uv.http`。通常页面和业务接口不需要直接使用,只有需要访问底层拦截器、默认配置或 uv-ui 原生请求能力时才引用。
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
import request from '@zfqh/uniapp/lib/apis/request';
|
|
195
|
+
|
|
196
|
+
request.setConfig((config) => {
|
|
197
|
+
config.timeout = 30000;
|
|
198
|
+
return config;
|
|
199
|
+
});
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
203
|
+
| --- | --- | --- | --- |
|
|
204
|
+
| 无 | - | - | 默认导出为请求实例对象,不是函数。 |
|
|
205
|
+
|
|
206
|
+
| 返回值 | 说明 |
|
|
207
|
+
| --- | --- |
|
|
208
|
+
| `uni.$uv.http` | uv-ui/luch-request 请求实例。 |
|
|
209
|
+
|
|
210
|
+
## 返回值结构
|
|
211
|
+
|
|
212
|
+
`GET`、`POST`、`PUT`、`DELETE` 经过响应拦截器后,成功时返回后端响应体:
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
type ApiResponse<T = any> = {
|
|
216
|
+
code: number;
|
|
217
|
+
data: T;
|
|
218
|
+
msg?: string;
|
|
219
|
+
message?: string;
|
|
220
|
+
};
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
请求失败、网络异常或响应 `code != 0` 时会 reject。错误对象会包含 `status`、`data.code`、`data.msg`、`config` 等字段,便于业务侧按需处理。
|
|
224
|
+
|
|
225
|
+
## 动态 URL
|
|
226
|
+
|
|
227
|
+
`formatURL(url, data)` 支持 `:key` 和 `/:key` 占位:
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
GET('/app-api/order/:id/detail', { id: 100, tab: 'pay' });
|
|
231
|
+
// 实际请求: GET /app-api/order/100/detail?tab=pay
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
会将 `id` 写入路径,并从 `data` 中删除。剩余字段继续作为 query 或 body。
|
|
235
|
+
|
|
236
|
+
支持的占位格式:
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
// :key 格式
|
|
240
|
+
GET('/app-api/member/address/delete?id=:id', { id: 1 });
|
|
241
|
+
// → /app-api/member/address/delete?id=1
|
|
242
|
+
|
|
243
|
+
// /:key 格式
|
|
244
|
+
GET('/app-api/order/:id/detail', { id: 100 });
|
|
245
|
+
// → /app-api/order/100/detail
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## 自定义请求配置
|
|
249
|
+
|
|
250
|
+
每次请求可以传入 `custom` 配置控制拦截器行为:
|
|
251
|
+
|
|
252
|
+
```ts
|
|
253
|
+
GET('/app-api/demo/check', {}, {
|
|
254
|
+
custom: {
|
|
255
|
+
needLogin: false, // 401 时不自动退出登录
|
|
256
|
+
message: false, // 不弹错误提示
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
| 配置 | 默认值 | 说明 |
|
|
262
|
+
| --- | --- | --- |
|
|
263
|
+
| `needLogin` | `true` | `401` 时是否触发退出登录。设为 `false` 可跳过自动退出 |
|
|
264
|
+
| `message` | `true` | 响应错误时是否弹 toast 提示 |
|
|
265
|
+
|
|
266
|
+
::: warning 注意
|
|
267
|
+
`reLogin` 已废弃,请使用 `needLogin` 代替。
|
|
268
|
+
:::
|
|
269
|
+
|
|
270
|
+
## 通用拦截器
|
|
271
|
+
|
|
272
|
+
`createInterceptors(req)` 会做这些事:
|
|
273
|
+
|
|
274
|
+
| 阶段 | 行为 |
|
|
275
|
+
| --- | --- |
|
|
276
|
+
| request | 当 `log.request` 为 true 时打印请求 URL 和配置。 |
|
|
277
|
+
| request | 如果存在 `uni.$store.state.login.info.token`,注入 `Authorization: Bearer <token>`。 |
|
|
278
|
+
| response | 当 `log.response` 为 true 时打印响应数据。 |
|
|
279
|
+
| response | 当 `data.code != 0` 时将其作为错误响应处理。 |
|
|
280
|
+
| error | 补齐非标准错误的 `response`、`status`、`data.msg`。 |
|
|
281
|
+
| error | `401` 时触发退出登录逻辑。 |
|
|
282
|
+
|
|
283
|
+
`401` 处理依赖:
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
uni.$store.state.login.info.token
|
|
287
|
+
uni.$store.dispatch('logout')
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
请求拦截器属于普通 TS 模块,不在 Vue 组件 setup 上下文中,因此这里使用 `uni.$store`。如果是在组件或 hooks 中读取同一份登录态,请使用:
|
|
291
|
+
|
|
292
|
+
```ts
|
|
293
|
+
import { useStore } from 'vuex';
|
|
294
|
+
|
|
295
|
+
const store = useStore();
|
|
296
|
+
const token = store.state.login.info.token;
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
可通过请求自定义配置关闭:
|
|
300
|
+
|
|
301
|
+
```ts
|
|
302
|
+
GET('/app-api/demo/check', {}, {
|
|
303
|
+
custom: {
|
|
304
|
+
reLogin: false,
|
|
305
|
+
needLogin: false,
|
|
306
|
+
message: false,
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## 业务请求实例
|
|
312
|
+
|
|
313
|
+
`@zfqh/uniapp/lib/apis/request` 直接复用 `uni.$uv.http`:
|
|
314
|
+
|
|
315
|
+
```ts
|
|
316
|
+
const request = uni.$uv.http;
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
业务项目需要先安装并初始化 `@gmcb/uv-ui`,确保 `uni.$uv.http` 可用。
|
|
320
|
+
|
|
321
|
+
`@zfqh/uniapp/lib/apis/request` 会额外注入:
|
|
322
|
+
|
|
323
|
+
| Header | 来源 |
|
|
324
|
+
| --- | --- |
|
|
325
|
+
| `Tenant-Id` | `uni.$store.state.login.info.tenantId`,默认 `1`。 |
|
|
326
|
+
| `X-Language` | `uni.$store.state.system.info.appLanguage` 映射到 `LANGUAGE`。 |
|
|
327
|
+
| `Channel` | `query.channel`,没有 query 渠道时回退到 `config.app.channel`。 |
|
|
328
|
+
|
|
329
|
+
业务请求的 `baseURL` 来自:
|
|
330
|
+
|
|
331
|
+
```ts
|
|
332
|
+
config.api.baseUrl
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## 自定义请求实例(备选)
|
|
336
|
+
|
|
337
|
+
仅在需要不同 baseURL 或独立拦截器时才需要创建自定义请求实例。大多数业务场景直接使用上方的 `GET/POST` 即可。
|
|
338
|
+
|
|
339
|
+
```ts
|
|
340
|
+
import Request from '@gmcb/uv-ui/libs/luch-request/index';
|
|
341
|
+
import { config, createRequest, createInterceptors } from '@zfqh/uniapp';
|
|
342
|
+
|
|
343
|
+
const request = new Request();
|
|
344
|
+
|
|
345
|
+
createInterceptors(request);
|
|
346
|
+
|
|
347
|
+
// 复用内置 api.baseUrl,也可替换为其他地址
|
|
348
|
+
export const { GET, POST, PUT, DELETE } = createRequest(request, {
|
|
349
|
+
baseURL: config.api.baseUrl,
|
|
350
|
+
});
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## 编写 API 模块
|
|
354
|
+
|
|
355
|
+
推荐业务 API 模块只声明接口函数,不写页面逻辑:
|
|
356
|
+
|
|
357
|
+
```ts
|
|
358
|
+
import { GET, POST } from '@zfqh/uniapp/lib/apis';
|
|
359
|
+
|
|
360
|
+
export const getUserInfo = (...args) => GET('/admin-api/system/user/getSimple', ...args);
|
|
361
|
+
export const updateUserInfo = (...args) => POST('/admin-api/system/user/updateInfo', ...args);
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
页面中使用:
|
|
365
|
+
|
|
366
|
+
```ts
|
|
367
|
+
const info = await getUserInfo();
|
|
368
|
+
await updateUserInfo(form);
|
|
369
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# api
|
|
2
|
+
|
|
3
|
+
接口配置。发布路径:`@zfqh/uniapp/lib/configs/api`
|
|
4
|
+
|
|
5
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `baseUrl` | `string` | `''` | 接口请求基础地址。 |
|
|
8
|
+
|
|
9
|
+
## 基本使用
|
|
10
|
+
|
|
11
|
+
在业务项目的环境文件中配置接口域名,`@zfqh/uniapp/lib/apis` 的 `GET/POST` 会自动读取 `config.api.baseUrl` 作为请求基础地址。
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// env/.env.dev.ts
|
|
15
|
+
import { defineEnvConfig } from '@zfqh/uniapp';
|
|
16
|
+
|
|
17
|
+
export default defineEnvConfig({
|
|
18
|
+
env: {
|
|
19
|
+
name: 'dev',
|
|
20
|
+
},
|
|
21
|
+
api: {
|
|
22
|
+
baseUrl: 'https://dev-api.example.com',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
// apis/member.ts
|
|
29
|
+
import { GET } from '@zfqh/uniapp/lib/apis';
|
|
30
|
+
|
|
31
|
+
export const getMemberDetail = (id: string) => GET('/app-api/member/get?id=:id', { id });
|
|
32
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# app
|
|
2
|
+
|
|
3
|
+
应用配置。发布路径:`@zfqh/uniapp/lib/configs/app`
|
|
4
|
+
|
|
5
|
+
内置预设:
|
|
6
|
+
|
|
7
|
+
| 预设 | 说明 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `app.patient` | 智赋岐黄互联网医院,`channel: 1`。 |
|
|
10
|
+
| `app.doctor` | 智赋岐黄医生端,`channel: 2`。 |
|
|
11
|
+
| `app.merchant` | 智赋岐黄门店端,`channel: 3`。 |
|
|
12
|
+
|
|
13
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| --- | --- | --- | --- |
|
|
15
|
+
| `code` | `string` | `''` | 应用标识,也是自定义协议跳转的协议名前缀。 |
|
|
16
|
+
| `name` | `string` | `''` | 应用显示名称。 |
|
|
17
|
+
| `primary` | `string` | `''` | 应用主题色。 |
|
|
18
|
+
| `appId` | `string` | `''` | App 包名或应用 ID。 |
|
|
19
|
+
| `weappId` | `string` | `''` | 微信小程序 appId。 |
|
|
20
|
+
| `weappOrigId` | `string` | `''` | 微信小程序原始 ID。 |
|
|
21
|
+
| `channel` | `number` | `0` | 业务渠道标识。 |
|
|
22
|
+
|
|
23
|
+
## 基本使用
|
|
24
|
+
|
|
25
|
+
患者端和商户端项目通常在根配置中选择内置应用预设,业务请求会用 `channel` 注入请求头。
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
// config.ts
|
|
29
|
+
import { defineConfig } from '@zfqh/uniapp';
|
|
30
|
+
import { app } from '@zfqh/uniapp/lib/configs/app';
|
|
31
|
+
|
|
32
|
+
defineConfig({
|
|
33
|
+
// 患者端使用 app.patient,商户端使用 app.merchant
|
|
34
|
+
app: app.patient,
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { config } from '@zfqh/uniapp';
|
|
40
|
+
|
|
41
|
+
console.log(config.app.name);
|
|
42
|
+
console.log(config.app.channel);
|
|
43
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# brand
|
|
2
|
+
|
|
3
|
+
品牌配置。发布路径:`@zfqh/uniapp/lib/configs/brand`
|
|
4
|
+
|
|
5
|
+
内置预设:
|
|
6
|
+
|
|
7
|
+
| 预设 | 说明 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `brand.zfqh` | 智赋岐黄品牌配置。 |
|
|
10
|
+
|
|
11
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| `code` | `string` | `''` | 品牌标识。 |
|
|
14
|
+
| `name` | `string` | `''` | 品牌名称。 |
|
|
15
|
+
| `telephone` | `string` | `''` | 企业联系电话。 |
|
|
16
|
+
| `company` | `string` | `''` | 所属公司。 |
|
|
17
|
+
| `primary` | `string` | `''` | 品牌主题色。 |
|
|
18
|
+
|
|
19
|
+
## 基本使用
|
|
20
|
+
|
|
21
|
+
业务项目在全局配置中注入品牌预设,页面和 WebView 承载页可以通过 `config.brand` 读取品牌名、主题色和客服电话。
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
// config.ts
|
|
25
|
+
import { defineConfig } from '@zfqh/uniapp';
|
|
26
|
+
import { brand } from '@zfqh/uniapp/lib/configs/brand';
|
|
27
|
+
|
|
28
|
+
defineConfig({
|
|
29
|
+
brand: brand.zfqh,
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```vue
|
|
34
|
+
<template>
|
|
35
|
+
<view :style="{ color: config.brand.primary }">
|
|
36
|
+
{{ config.brand.name }}
|
|
37
|
+
</view>
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<script setup>
|
|
41
|
+
import { config } from '@zfqh/uniapp';
|
|
42
|
+
</script>
|
|
43
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# cdn
|
|
2
|
+
|
|
3
|
+
CDN 静态资源配置。发布路径:`@zfqh/uniapp/lib/configs/cdn`
|
|
4
|
+
|
|
5
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `baseUrl` | `string` | `''` | 静态资源基础路径。 |
|
|
8
|
+
| `staticUrl` | `string` | `''` | 静态站点路径。 |
|
|
9
|
+
| `ossUrl` | `string` | `''` | 阿里 OSS 资源路径。 |
|
|
10
|
+
| `cosUrl` | `string` | `''` | 腾讯 COS 资源路径。 |
|
|
11
|
+
|
|
12
|
+
## 基本使用
|
|
13
|
+
|
|
14
|
+
患者端页面常用 `config.cdn.baseUrl` 拼接后端返回的相对资源路径。
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
// env/.env.prod.ts
|
|
18
|
+
import { defineEnvConfig } from '@zfqh/uniapp';
|
|
19
|
+
|
|
20
|
+
export default defineEnvConfig({
|
|
21
|
+
cdn: {
|
|
22
|
+
baseUrl: 'https://static.example.com',
|
|
23
|
+
cosUrl: 'https://cos.example.com',
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { config } from '@zfqh/uniapp';
|
|
30
|
+
|
|
31
|
+
export function normalizeArticleImage(path: string) {
|
|
32
|
+
if (/^https?:\/\//.test(path)) return path;
|
|
33
|
+
return `${config.cdn.baseUrl}/${path.replace(/^\/+/, '')}`;
|
|
34
|
+
}
|
|
35
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# color
|
|
2
|
+
|
|
3
|
+
颜色配置。发布路径:`@zfqh/uniapp/lib/configs/color`
|
|
4
|
+
|
|
5
|
+
| 字段 | 类型 | 默认值 | 说明 |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `primary` | `string` | `#00b4c3` | 主题色。 |
|
|
8
|
+
| `success/warning/error/info` | `string` | `-` | 语义色组。 |
|
|
9
|
+
| `bgColor` | `string` | `#f5f5f5` | 页面背景色。 |
|
|
10
|
+
| `mainColor/contentColor/tipsColor/lightColor/disabledColor/borderColor` | `string` | `-` | 文字、占位、禁用和边框颜色。 |
|
|
11
|
+
|
|
12
|
+
## 基本使用
|
|
13
|
+
|
|
14
|
+
`@zfqh/uniapp` 导出一个运行时 `color` 对象,供组件在 JS 中动态引用主题色。它同时作为工具样式类(`.text-primary`、`.bg-primary` 等)的底层数据源。
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { color } from '@zfqh/uniapp';
|
|
18
|
+
|
|
19
|
+
export function getPrimaryButtonStyle() {
|
|
20
|
+
return {
|
|
21
|
+
background: color.primary,
|
|
22
|
+
color: '#fff',
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 属性一览
|
|
28
|
+
|
|
29
|
+
### 语义色
|
|
30
|
+
|
|
31
|
+
每组语义色包含四个变体:基础色、深色(Dark)、高亮色(Light)、禁用色(Disabled)。
|
|
32
|
+
|
|
33
|
+
| 属性 | 默认值 | 说明 |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `primary` | `#00b4c3` | 主题色 |
|
|
36
|
+
| `primaryDark` | `#157572` | 主题色(深) |
|
|
37
|
+
| `primaryDisabled` | `#b4e3d9` | 主题色(禁用) |
|
|
38
|
+
| `primaryLight` | `#dff3f9` | 主题色(高亮) |
|
|
39
|
+
| `success` | `#5ac725` | 成功色 |
|
|
40
|
+
| `successDark` | `#53c21d` | 成功色(深) |
|
|
41
|
+
| `successDisabled` | `#a9e08f` | 成功色(禁用) |
|
|
42
|
+
| `successLight` | `#f5fff0` | 成功色(高亮) |
|
|
43
|
+
| `warning` | `#ff9a05` | 警告色 |
|
|
44
|
+
| `warningDark` | `#ed6c04` | 警告色(深) |
|
|
45
|
+
| `warningDisabled` | `#f9d39b` | 警告色(禁用) |
|
|
46
|
+
| `warningLight` | `#fdf6ec` | 警告色(高亮) |
|
|
47
|
+
| `error` | `#ff4d4f` | 错误色 |
|
|
48
|
+
| `errorDark` | `#e45656` | 错误色(深) |
|
|
49
|
+
| `errorDisabled` | `#f7b2b2` | 错误色(禁用) |
|
|
50
|
+
| `errorLight` | `#fef0f0` | 错误色(高亮) |
|
|
51
|
+
| `info` | `#909399` | 信息色 |
|
|
52
|
+
| `infoDark` | `#767a82` | 信息色(深) |
|
|
53
|
+
| `infoDisabled` | `#c4c6c9` | 信息色(禁用) |
|
|
54
|
+
| `infoLight` | `#f4f4f5` | 信息色(高亮) |
|
|
55
|
+
|
|
56
|
+
### UI 色
|
|
57
|
+
|
|
58
|
+
| 属性 | 默认值 | 说明 |
|
|
59
|
+
| --- | --- | --- |
|
|
60
|
+
| `bgColor` | `#f5f5f5` | 页面背景色 |
|
|
61
|
+
| `mainColor` | `#333333` | 主要文字色 |
|
|
62
|
+
| `contentColor` | `#7a7a7a` | 常规文字色 |
|
|
63
|
+
| `tipsColor` | `#9a9a9a` | 次要文字色 |
|
|
64
|
+
| `lightColor` | `#c0c4cc` | 占位文字色 |
|
|
65
|
+
| `disabledColor` | `#eeeeee` | 禁用文字色 |
|
|
66
|
+
| `borderColor` | `#c8c9cc` | 边框色 |
|
|
67
|
+
|
|
68
|
+
## 与 defineConfig 的关系
|
|
69
|
+
|
|
70
|
+
项目通过 `defineConfig` 覆盖主题色后,`color` 对象会自动更新:
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
import { defineConfig } from '@zfqh/uniapp';
|
|
74
|
+
|
|
75
|
+
defineConfig({
|
|
76
|
+
color: {
|
|
77
|
+
primary: '#451709',
|
|
78
|
+
primaryDark: '#451709',
|
|
79
|
+
primaryDisabled: '#D5B9B0',
|
|
80
|
+
primaryLight: '#E8D8C9',
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
此后读取 `color.primary` 返回 `'#451709'`,`.text-primary` 和 `.bg-primary` 等工具类也会使用覆盖后的值(通过 SCSS 变量同步)。
|
|
86
|
+
|
|
87
|
+
## 与工具样式类的关系
|
|
88
|
+
|
|
89
|
+
工具样式类和 `color` 对象共享同一套颜色值:
|
|
90
|
+
|
|
91
|
+
| 工具类 | 对应属性 |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| `.text-primary` | `color.primary` |
|
|
94
|
+
| `.bg-primary` | `color.primary` |
|
|
95
|
+
| `.border-primary` | `color.primary` |
|
|
96
|
+
| `.text-main` | `color.mainColor` |
|
|
97
|
+
| `.bg-white` | 固定 `#ffffff` |
|
|
98
|
+
|
|
99
|
+
工具类适用于模板中的静态样式;`color` 对象适用于 JS 中的动态样式计算。
|
|
100
|
+
|
|
101
|
+
## 用法示例
|
|
102
|
+
|
|
103
|
+
动态 style 绑定:
|
|
104
|
+
|
|
105
|
+
```vue
|
|
106
|
+
<template>
|
|
107
|
+
<view :style="{ color: color.primary }">主题文字</view>
|
|
108
|
+
<view :style="{ backgroundColor: color.bgColor }">背景区域</view>
|
|
109
|
+
</template>
|
|
110
|
+
|
|
111
|
+
<script setup>
|
|
112
|
+
import { color } from '@zfqh/uniapp';
|
|
113
|
+
</script>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
计算属性样式:
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
import { computed } from 'vue';
|
|
120
|
+
import { color } from '@zfqh/uniapp';
|
|
121
|
+
|
|
122
|
+
const headerStyle = computed(() => ({
|
|
123
|
+
backgroundColor: color.primaryLight,
|
|
124
|
+
color: color.primaryDark,
|
|
125
|
+
borderBottom: `1px solid ${color.borderColor}`,
|
|
126
|
+
}));
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
传递给第三方组件:
|
|
130
|
+
|
|
131
|
+
```vue
|
|
132
|
+
<template>
|
|
133
|
+
<uv-button :color="color.primary" :plain-color="color.primaryLight">按钮</uv-button>
|
|
134
|
+
</template>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Canvas / 图表绘制:
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
import { color } from '@zfqh/uniapp';
|
|
141
|
+
|
|
142
|
+
ctx.fillStyle = color.primary;
|
|
143
|
+
ctx.strokeStyle = color.borderColor;
|
|
144
|
+
```
|