@zfqh/uniapp 0.3.22 → 0.3.24
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/README.md +0 -1
- package/docs/api/apis/core.md +2 -79
- package/docs/api/apis/index.md +1 -10
- package/docs/api/configs/index.md +8 -6
- package/docs/api/configs/upload.md +48 -39
- package/docs/api/configs/web.md +17 -3
- package/docs/api/index.md +4 -16
- package/docs/api/utils/cos.md +55 -42
- package/docs/api/utils/index.md +56 -56
- package/docs/api/utils/navigate.md +94 -23
- package/docs/guide/getting-started.md +7 -5
- package/docs/guide/project-frame.md +7 -5
- package/lib/apis/core.d.ts +0 -6
- package/lib/apis/core.js +0 -6
- package/lib/configs/upload.d.ts +2 -2
- package/lib/configs/upload.js +2 -14
- package/lib/utils/cos.d.ts +1 -1
- package/lib/utils/cos.js +182 -67
- package/lib/utils/navigate.d.ts +1 -0
- package/lib/utils/navigate.js +13 -0
- package/package.json +4 -5
- package/CHANGELOG.md +0 -592
- package/LICENSE +0 -21
package/docs/api/utils/index.md
CHANGED
|
@@ -4,28 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
## 文件清单
|
|
6
6
|
|
|
7
|
-
| 文件
|
|
8
|
-
|
|
|
9
|
-
| [index](./)
|
|
10
|
-
| [audio](./audio)
|
|
11
|
-
| [consts](./consts)
|
|
12
|
-
| [cos](./cos)
|
|
13
|
-
| [debounce](./debounce)
|
|
14
|
-
| [file](./file)
|
|
15
|
-
| [locale](./locale)
|
|
16
|
-
| [message](./message)
|
|
17
|
-
| [navigate](./navigate)
|
|
18
|
-
| [pages](./pages)
|
|
19
|
-
| [permission](./permission) | 平台运行时补丁或内部实现。
|
|
20
|
-
| [permit](./permit)
|
|
21
|
-
| [query](./query)
|
|
22
|
-
| [request](./request)
|
|
23
|
-
| [storage](./storage)
|
|
24
|
-
| [subscribe](./subscribe)
|
|
25
|
-
| [throttle](./throttle)
|
|
26
|
-
| [toast](./toast)
|
|
27
|
-
| [uni](./uni)
|
|
28
|
-
| [update](./update)
|
|
7
|
+
| 文件 | 说明 |
|
|
8
|
+
| -------------------------- | ---------------------------------------------------------------------------------- |
|
|
9
|
+
| [index](./) | 通用工具函数,包含图片路径、日期、路径拼接、webview 通信、脱敏、数值格式化等方法。 |
|
|
10
|
+
| [audio](./audio) | 封装互斥播放、停止和销毁逻辑。 |
|
|
11
|
+
| [consts](./consts) | 暴露系统信息、小程序胶囊、webview 环境、平台代码和语言常量。 |
|
|
12
|
+
| [cos](./cos) | 腾讯云 COS 上传与图片压缩 URL。 |
|
|
13
|
+
| [debounce](./debounce) | 防抖类和默认实例。 |
|
|
14
|
+
| [file](./file) | URL、dataURL、base64、File、本地路径互转。 |
|
|
15
|
+
| [locale](./locale) | 当前语言、回退语言、vue-i18n 实例创建和 nvue 文案读取。 |
|
|
16
|
+
| [message](./message) | webview 与宿主环境通信的消息类型常量。 |
|
|
17
|
+
| [navigate](./navigate) | 页面跳转、登录拦截、tabBar、webview、自定义协议、打开其他应用。 |
|
|
18
|
+
| [pages](./pages) | 根据页面配置生成页面集合。 |
|
|
19
|
+
| [permission](./permission) | 平台运行时补丁或内部实现。 |
|
|
20
|
+
| [permit](./permit) | App/小程序权限申请。 |
|
|
21
|
+
| [query](./query) | 当前页面或 H5 地址栏 query 解析。 |
|
|
22
|
+
| [request](./request) | 请求方法创建和通用拦截器。 |
|
|
23
|
+
| [storage](./storage) | uni storage 项目和环境命名空间。 |
|
|
24
|
+
| [subscribe](./subscribe) | 微信小程序订阅消息调用。 |
|
|
25
|
+
| [throttle](./throttle) | 节流类和默认实例。 |
|
|
26
|
+
| [toast](./toast) | loading、toast、success、error、fail、exception 和自定义提示适配。 |
|
|
27
|
+
| [uni](./uni) | 平台运行时补丁或内部实现。 |
|
|
28
|
+
| [update](./update) | 版本检查、应用安装和重启。 |
|
|
29
29
|
|
|
30
30
|
## 通用工具
|
|
31
31
|
|
|
@@ -104,22 +104,22 @@ toast.success('提交成功');
|
|
|
104
104
|
import { cutDate, dateStringToTime, timeFrom } from '@zfqh/uniapp';
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
| 方法
|
|
108
|
-
|
|
|
109
|
-
| `cutDate`
|
|
110
|
-
| `dateStringToTime` | `dateStringToTime(date: string \| number): number`
|
|
111
|
-
| `timeFrom`
|
|
107
|
+
| 方法 | 签名 | 说明 |
|
|
108
|
+
| ------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
109
|
+
| `cutDate` | `cutDate(date: string): string` | 截取日期部分,去掉时间。`'2024-01-15 10:30:00'` → `'2024-01-15'` |
|
|
110
|
+
| `dateStringToTime` | `dateStringToTime(date: string \| number): number` | 日期字符串转时间戳(毫秒)。传入数字直接返回,字符串兼容 `-` 和 `/` 分隔符 |
|
|
111
|
+
| `timeFrom` | `timeFrom(time: string \| number, separate?: string): string` | 相对时间描述 |
|
|
112
112
|
|
|
113
113
|
`timeFrom` 输出规则:
|
|
114
114
|
|
|
115
|
-
| 时间差
|
|
116
|
-
|
|
|
117
|
-
| < 1 分钟
|
|
118
|
-
| < 1 小时
|
|
119
|
-
| < 1 天
|
|
120
|
-
| 1 ~ 2 天
|
|
121
|
-
| 2 ~ 7 天
|
|
122
|
-
| > 7 天(同年) | `'MM-DD HH:MM'`
|
|
115
|
+
| 时间差 | 输出 |
|
|
116
|
+
| -------------- | -------------------- |
|
|
117
|
+
| < 1 分钟 | `'刚刚'` |
|
|
118
|
+
| < 1 小时 | `'N分钟前'` |
|
|
119
|
+
| < 1 天 | `'N小时前'` |
|
|
120
|
+
| 1 ~ 2 天 | `'昨天 HH:MM'` |
|
|
121
|
+
| 2 ~ 7 天 | `'N天前'` |
|
|
122
|
+
| > 7 天(同年) | `'MM-DD HH:MM'` |
|
|
123
123
|
| > 7 天(跨年) | `'YYYY-MM-DD HH:MM'` |
|
|
124
124
|
|
|
125
125
|
```ts
|
|
@@ -211,7 +211,7 @@ import { openLocation } from '@zfqh/uniapp';
|
|
|
211
211
|
```ts
|
|
212
212
|
openLocation({
|
|
213
213
|
latitude: 39.908823,
|
|
214
|
-
longitude: 116.
|
|
214
|
+
longitude: 116.39747,
|
|
215
215
|
name: '天安门广场',
|
|
216
216
|
address: '北京市东城区长安街',
|
|
217
217
|
});
|
|
@@ -303,11 +303,11 @@ navigateBack();
|
|
|
303
303
|
import { hiddenValue, hiddenPhone, formatPhone } from '@zfqh/uniapp';
|
|
304
304
|
```
|
|
305
305
|
|
|
306
|
-
| 方法
|
|
307
|
-
|
|
|
306
|
+
| 方法 | 签名 | 说明 |
|
|
307
|
+
| ------------- | ---------------------------------------------------------------- | -------------------------------- |
|
|
308
308
|
| `hiddenValue` | `hiddenValue(str: string, start?: number, end?: number): string` | 保留前后指定位数,中间替换为 `*` |
|
|
309
|
-
| `hiddenPhone` | `hiddenPhone(phone: string \| number): string`
|
|
310
|
-
| `formatPhone` | `formatPhone(phone: string \| number): string`
|
|
309
|
+
| `hiddenPhone` | `hiddenPhone(phone: string \| number): string` | 手机号脱敏,保留前 3 后 4 |
|
|
310
|
+
| `formatPhone` | `formatPhone(phone: string \| number): string` | 手机号格式化为 `188 8888 8888` |
|
|
311
311
|
|
|
312
312
|
```ts
|
|
313
313
|
hiddenValue('6222021234567890', 4, 4); // '6222********7890'
|
|
@@ -321,10 +321,10 @@ formatPhone('18888888888'); // '188 8888 8888'
|
|
|
321
321
|
import { toFixed, numberPlus } from '@zfqh/uniapp';
|
|
322
322
|
```
|
|
323
323
|
|
|
324
|
-
| 方法
|
|
325
|
-
|
|
|
326
|
-
| `toFixed`
|
|
327
|
-
| `numberPlus` | `numberPlus(num: number \| string, min?: number): string`
|
|
324
|
+
| 方法 | 签名 | 说明 |
|
|
325
|
+
| ------------ | ------------------------------------------------------------ | ------------------------------- |
|
|
326
|
+
| `toFixed` | `toFixed(value: string \| number, decimal?: number): string` | 小数位控制,默认 2 位 |
|
|
327
|
+
| `numberPlus` | `numberPlus(num: number \| string, min?: number): string` | 超过阈值显示 `N+`,默认阈值 100 |
|
|
328
328
|
|
|
329
329
|
```ts
|
|
330
330
|
toFixed('12.345', 2); // '12.35'
|
|
@@ -423,13 +423,13 @@ getRectById.call(instance.proxy, 'target').then(({ data }) => {
|
|
|
423
423
|
import { urlToBase64, dataUrlToBase64, base64ToFile, pathToBase64, base64ToPath } from '@zfqh/uniapp';
|
|
424
424
|
```
|
|
425
425
|
|
|
426
|
-
| 方法
|
|
427
|
-
|
|
|
428
|
-
| `urlToBase64(url, type?)`
|
|
429
|
-
| `dataUrlToBase64(url)`
|
|
430
|
-
| `base64ToFile(base64, filename)` | base64 转 File 对象(H5 端)
|
|
431
|
-
| `pathToBase64(path)`
|
|
432
|
-
| `base64ToPath(base64, filename)` | base64 写入本地临时路径,返回文件路径
|
|
426
|
+
| 方法 | 说明 |
|
|
427
|
+
| -------------------------------- | -------------------------------------------------------------- |
|
|
428
|
+
| `urlToBase64(url, type?)` | 网络图片转 base64。`type` 指定 MIME 类型(默认 `'image/png'`) |
|
|
429
|
+
| `dataUrlToBase64(url)` | 从 data URL 中提取 base64 数据部分 |
|
|
430
|
+
| `base64ToFile(base64, filename)` | base64 转 File 对象(H5 端) |
|
|
431
|
+
| `pathToBase64(path)` | 本地路径转 base64(App/小程序端) |
|
|
432
|
+
| `base64ToPath(base64, filename)` | base64 写入本地临时路径,返回文件路径 |
|
|
433
433
|
|
|
434
434
|
```ts
|
|
435
435
|
// H5 端:相机拍照后转 File 上传
|
|
@@ -500,11 +500,11 @@ clearStorageSync();
|
|
|
500
500
|
import { getPage, inPages, createPages } from '@zfqh/uniapp';
|
|
501
501
|
```
|
|
502
502
|
|
|
503
|
-
| 方法
|
|
504
|
-
|
|
|
505
|
-
| `getPage(name)`
|
|
506
|
-
| `inPages(pages, url)`
|
|
507
|
-
| `createPages(pagesJson)` | 从 pages.json 生成页面集合配置
|
|
503
|
+
| 方法 | 说明 |
|
|
504
|
+
| ------------------------ | --------------------------------------- |
|
|
505
|
+
| `getPage(name)` | 从 `config.path` 页面别名中获取页面路径 |
|
|
506
|
+
| `inPages(pages, url)` | 判断 URL 是否命中页面集合 |
|
|
507
|
+
| `createPages(pagesJson)` | 从 pages.json 生成页面集合配置 |
|
|
508
508
|
|
|
509
509
|
```ts
|
|
510
510
|
// 获取登录页路径
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
`@zfqh/uniapp/lib/utils/navigate`
|
|
5
5
|
:::
|
|
6
6
|
|
|
7
|
-
统一处理页面跳转、登录拦截、tabBar、webview
|
|
7
|
+
统一处理页面跳转、登录拦截、tabBar、webview、自定义协议、打开其他应用和重复点击节流。
|
|
8
8
|
|
|
9
9
|
## 平台兼容性
|
|
10
10
|
|
|
11
|
-
| App | H5
|
|
12
|
-
| --- | --- |
|
|
13
|
-
| √
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | ---------- | --------------- | -------------- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
> `appId` 打开其他应用依赖 App 端宿主能力;H5 构建不会包含 `sendHostEvent` 宿主事件代码,H5 传 `appId` 时只会走自定义协议 → webview 流程。
|
|
14
16
|
|
|
15
17
|
## 基本使用
|
|
16
18
|
|
|
@@ -50,13 +52,81 @@ navigate.back({ delta: 1 });
|
|
|
50
52
|
```ts
|
|
51
53
|
navigate.navigateTo({
|
|
52
54
|
url: '/pages/detail/detail',
|
|
53
|
-
params: { id: 1 },
|
|
55
|
+
params: { id: 1 }, // 拼接到 URL query
|
|
54
56
|
webviewParams: { title: '详情' }, // 传给 webview 页的参数
|
|
55
|
-
needLogin: true,
|
|
56
|
-
native: true,
|
|
57
|
+
needLogin: true, // 强制要求登录
|
|
58
|
+
native: true, // 作为原生页面跳转
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// 打开其他应用(appId 是 navigate 的扩展选项)
|
|
62
|
+
navigate({
|
|
63
|
+
url: '',
|
|
64
|
+
appId: 'zfqh.demo',
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`appId` 是 `navigate` 的扩展选项,不是 `uni.navigateTo` 的原生参数。
|
|
69
|
+
|
|
70
|
+
## 打开其他应用
|
|
71
|
+
|
|
72
|
+
通过 `appId` 打开其他应用。`url` 为目标应用内页面路径,留空表示目标应用首页;`params` 会先拼接到 `url`,最终进入宿主的 `path`。
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
// 打开目标应用首页
|
|
76
|
+
navigate({
|
|
77
|
+
url: '',
|
|
78
|
+
appId: 'zfqh.demo',
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// 打开目标应用内页面
|
|
82
|
+
navigate({
|
|
83
|
+
url: '/pages/order/detail',
|
|
84
|
+
params: { id: 1 },
|
|
85
|
+
appId: 'zfqh.demo',
|
|
57
86
|
});
|
|
58
87
|
```
|
|
59
88
|
|
|
89
|
+
| 运行环境 | 行为 |
|
|
90
|
+
| ------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
|
91
|
+
| App(uni 小程序容器内,存在 `uni.sendHostEvent`) | 调用 `uni.sendHostEvent('openUniMP', { appid: 'zfqh.demo', path })`,由宿主打开目标应用 |
|
|
92
|
+
| App(无 `uni.sendHostEvent`) | 转为 `zfqh.demo:/${url}` 自定义协议,走现有自定义协议 → webview 逻辑 |
|
|
93
|
+
| H5 | 不执行宿主事件;转为自定义协议 → webview 承载页 |
|
|
94
|
+
| 小程序 | 同样走自定义协议 → webview,实际能力视平台而定;不新增 `uni.navigateToMiniProgram` 特殊处理 |
|
|
95
|
+
|
|
96
|
+
### 宿主事件契约
|
|
97
|
+
|
|
98
|
+
App 端在 uni 小程序容器内会发送 `openUniMP` 宿主事件,宿主 App(uni-app)需要监听并调用 `mp.openUniMP`:
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
const mp = uni.requireNativePlugin('uniMP');
|
|
102
|
+
mp.onUniMPEventReceive(({ event, data }) => {
|
|
103
|
+
if (event === 'openUniMP') {
|
|
104
|
+
mp.openUniMP({ appid: data.appid, path: data.path });
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
事件为发送即返回。宿主未监听或未处理时不会自动报错,也不会打开目标应用。
|
|
110
|
+
|
|
111
|
+
### path 规则
|
|
112
|
+
|
|
113
|
+
- `url` 建议使用以 `/` 开头的绝对路径。
|
|
114
|
+
- 发送给宿主时会去掉路径开头的 `/`,并保留 query:`'/pages/order/detail?id=1'` → `'pages/order/detail?id=1'`。
|
|
115
|
+
- `params` 会先拼接到 `url`,因此最终也会进入宿主的 `path`。
|
|
116
|
+
- `url` 为空字符串时,`path` 为空,由宿主打开目标应用首页。
|
|
117
|
+
|
|
118
|
+
### H5 说明
|
|
119
|
+
|
|
120
|
+
- **不传 `appId` 时,H5 导航逻辑与旧版本完全一致。**
|
|
121
|
+
- 传 `appId` 时,H5 不会调用 `sendHostEvent`;只会按现有自定义协议 → webview 流程打开承载页。
|
|
122
|
+
- 需要在 `config.web` 中用 `appId` 配置目标应用 H5 入口,例如 `web['zfqh.demo']`;未配置时 webview 可能为空。
|
|
123
|
+
- H5 端不会拉起原生应用。
|
|
124
|
+
|
|
125
|
+
### 注意事项
|
|
126
|
+
|
|
127
|
+
- App 宿主事件分支在登录拦截和 `navigate.interceptor` 之前返回;需要登录态或拦截逻辑时,请在调用前自行判断。
|
|
128
|
+
- 宿主事件为发送即返回,宿主未监听或未处理时不会自动报错,也不会打开目标应用。
|
|
129
|
+
|
|
60
130
|
## 登录拦截
|
|
61
131
|
|
|
62
132
|
`navigate` 会自动检查目标页是否在 `config.page.needLoginPages` 中,如果未登录则跳转登录页。
|
|
@@ -129,6 +199,7 @@ navigateBack({ delta: 2 });
|
|
|
129
199
|
- `params` 拼接为 URL query
|
|
130
200
|
- tabBar 页面自动使用 `switchTab`
|
|
131
201
|
- HTTP URL 和自定义协议转 webview 页面
|
|
202
|
+
- 传入 `appId` 时按宿主事件或自定义协议打开其他应用
|
|
132
203
|
- webview 容器内使用 `uni.webView` 跳转
|
|
133
204
|
- 节流防止重复点击
|
|
134
205
|
|
|
@@ -136,15 +207,15 @@ navigateBack({ delta: 2 });
|
|
|
136
207
|
|
|
137
208
|
发布路径:`@zfqh/uniapp/lib/utils/navigate`
|
|
138
209
|
|
|
139
|
-
| 名称
|
|
140
|
-
|
|
|
141
|
-
| `navigate(urlOrOptions, type?)`
|
|
142
|
-
| `navigate.navigateTo(options)`
|
|
143
|
-
| `navigate.redirectTo(options)`
|
|
144
|
-
| `navigate.reLaunch(options)`
|
|
145
|
-
| `navigate.switchTab(options)`
|
|
146
|
-
| `navigate.back(options)`
|
|
147
|
-
| `navigate.interceptor(url, absoluteUrl)` | `default export member` | 可覆盖的跳转拦截器;返回非字符串可阻止跳转。
|
|
210
|
+
| 名称 | 签名/声明 | 说明 |
|
|
211
|
+
| ---------------------------------------- | ----------------------- | ------------------------------------------------------------- |
|
|
212
|
+
| `navigate(urlOrOptions, type?)` | `default export member` | 统一跳转入口;支持字符串或对象参数,默认 type 为 navigateTo。 |
|
|
213
|
+
| `navigate.navigateTo(options)` | `default export member` | 按 navigateTo 跳转。 |
|
|
214
|
+
| `navigate.redirectTo(options)` | `default export member` | 按 redirectTo 跳转。 |
|
|
215
|
+
| `navigate.reLaunch(options)` | `default export member` | 按 reLaunch 跳转。 |
|
|
216
|
+
| `navigate.switchTab(options)` | `default export member` | 按 switchTab 跳转。 |
|
|
217
|
+
| `navigate.back(options)` | `default export member` | 调用 uni.navigateBack。 |
|
|
218
|
+
| `navigate.interceptor(url, absoluteUrl)` | `default export member` | 可覆盖的跳转拦截器;返回非字符串可阻止跳转。 |
|
|
148
219
|
|
|
149
220
|
## navigate 使用指南
|
|
150
221
|
|
|
@@ -192,7 +263,7 @@ navigate.navigateTo({
|
|
|
192
263
|
登录判断依赖:
|
|
193
264
|
|
|
194
265
|
```ts
|
|
195
|
-
store.getters.isLogin
|
|
266
|
+
store.getters.isLogin;
|
|
196
267
|
```
|
|
197
268
|
|
|
198
269
|
`navigate` 是普通工具模块,脱离组件 setup 上下文,所以直接引入 store 实例。如果是在组件或 hooks 中判断登录态,请使用:
|
|
@@ -231,12 +302,12 @@ navigate.navigateTo({
|
|
|
231
302
|
|
|
232
303
|
`navigate.referrerType` 控制未登录跳转登录页时如何携带来源:
|
|
233
304
|
|
|
234
|
-
| 值
|
|
235
|
-
|
|
|
236
|
-
| `none`
|
|
237
|
-
| `target`
|
|
238
|
-
| `referrer` | 登录后回到来源页。
|
|
239
|
-
| `combine`
|
|
305
|
+
| 值 | 行为 |
|
|
306
|
+
| ---------- | ------------------------------------------------ |
|
|
307
|
+
| `none` | 不携带来源。 |
|
|
308
|
+
| `target` | 登录后跳转目标页。 |
|
|
309
|
+
| `referrer` | 登录后回到来源页。 |
|
|
310
|
+
| `combine` | 登录后先回来源页,再根据 `__navigate` 跳目标页。 |
|
|
240
311
|
|
|
241
312
|
配置:
|
|
242
313
|
|
|
@@ -84,7 +84,7 @@ import pages from 'virtual:remove-json-comments@/pages.json';
|
|
|
84
84
|
// #ifndef H5
|
|
85
85
|
import pages from '@/pages.json';
|
|
86
86
|
// #endif
|
|
87
|
-
import {
|
|
87
|
+
import { GET } from '@zfqh/uniapp/lib/apis';
|
|
88
88
|
|
|
89
89
|
defineConfig({
|
|
90
90
|
app: {
|
|
@@ -103,7 +103,8 @@ defineConfig({
|
|
|
103
103
|
},
|
|
104
104
|
upload: {
|
|
105
105
|
async request() {
|
|
106
|
-
|
|
106
|
+
// 替换为业务后端临时凭证接口
|
|
107
|
+
const { data } = await GET('/api/upload-token');
|
|
107
108
|
return {
|
|
108
109
|
secret_id: data.tmpSecretId,
|
|
109
110
|
secret_key: data.tmpSecretKey,
|
|
@@ -122,7 +123,7 @@ defineConfig({
|
|
|
122
123
|
|
|
123
124
|
```ts
|
|
124
125
|
import { defineConfig } from '@zfqh/uniapp';
|
|
125
|
-
import {
|
|
126
|
+
import { GET } from '@zfqh/uniapp/lib/apis';
|
|
126
127
|
|
|
127
128
|
defineConfig({
|
|
128
129
|
app: {
|
|
@@ -142,7 +143,8 @@ defineConfig({
|
|
|
142
143
|
},
|
|
143
144
|
upload: {
|
|
144
145
|
async request() {
|
|
145
|
-
|
|
146
|
+
// 替换为业务后端临时凭证接口
|
|
147
|
+
const { data } = await GET('/api/upload-token');
|
|
146
148
|
return {
|
|
147
149
|
secret_id: data.tmpSecretId,
|
|
148
150
|
secret_key: data.tmpSecretKey,
|
|
@@ -164,7 +166,7 @@ defineConfig({
|
|
|
164
166
|
- H5 端如果 `pages.json` 带注释,可通过 `virtual:remove-json-comments@/pages.json` 导入;其他端直接导入 `@/pages.json`。
|
|
165
167
|
- `path.index`、`path.login`、`path.webview` 是导航、登录拦截和 webview 承载页的核心别名。
|
|
166
168
|
- `upload.request` 需要把业务接口返回的腾讯云字段映射成 `secret_id`、`secret_key`、`session_token`、`bucket`、`region` 等字段。
|
|
167
|
-
- `
|
|
169
|
+
- 包内不再内置上传凭证接口,`upload.request` 必须由业务实现;示例中的 `/api/upload-token` 仅为占位,请替换为实际后端临时凭证接口。
|
|
168
170
|
|
|
169
171
|
多环境配置建议放到 `env/.env.dev.ts`、`env/.env.prod.ts`,详见 [环境配置](../api/configs/env.md)。
|
|
170
172
|
|
|
@@ -70,7 +70,7 @@ import pages from 'virtual:remove-json-comments@/pages.json';
|
|
|
70
70
|
// #ifndef H5
|
|
71
71
|
import pages from '@/pages.json';
|
|
72
72
|
// #endif
|
|
73
|
-
import {
|
|
73
|
+
import { GET } from '@zfqh/uniapp/lib/apis';
|
|
74
74
|
|
|
75
75
|
defineConfig({
|
|
76
76
|
app: {
|
|
@@ -89,7 +89,8 @@ defineConfig({
|
|
|
89
89
|
},
|
|
90
90
|
upload: {
|
|
91
91
|
async request() {
|
|
92
|
-
|
|
92
|
+
// 替换为业务后端临时凭证接口
|
|
93
|
+
const { data } = await GET('/api/upload-token');
|
|
93
94
|
return {
|
|
94
95
|
secret_id: data.tmpSecretId,
|
|
95
96
|
secret_key: data.tmpSecretKey,
|
|
@@ -108,7 +109,7 @@ defineConfig({
|
|
|
108
109
|
|
|
109
110
|
```ts
|
|
110
111
|
import { defineConfig } from '@zfqh/uniapp';
|
|
111
|
-
import {
|
|
112
|
+
import { GET } from '@zfqh/uniapp/lib/apis';
|
|
112
113
|
|
|
113
114
|
defineConfig({
|
|
114
115
|
app: {
|
|
@@ -128,7 +129,8 @@ defineConfig({
|
|
|
128
129
|
},
|
|
129
130
|
upload: {
|
|
130
131
|
async request() {
|
|
131
|
-
|
|
132
|
+
// 替换为业务后端临时凭证接口
|
|
133
|
+
const { data } = await GET('/api/upload-token');
|
|
132
134
|
return {
|
|
133
135
|
secret_id: data.tmpSecretId,
|
|
134
136
|
secret_key: data.tmpSecretKey,
|
|
@@ -149,7 +151,7 @@ defineConfig({
|
|
|
149
151
|
- 推荐用 `createPages(pages)` 从 `pages.json` 自动生成页面集合,减少手写 `needLoginPages`、`tabBarPages` 的维护成本。
|
|
150
152
|
- `path.index`、`path.login`、`path.webview` 分别影响首页、登录拦截和 webview 承载页。
|
|
151
153
|
- `upload.request` 需要把后端字段映射成 COS 上传工具需要的字段名。
|
|
152
|
-
-
|
|
154
|
+
- 包内不再内置上传凭证接口,`upload.request` 必须由业务实现;示例中的 `/api/upload-token` 仅为占位,请替换为实际后端临时凭证接口。
|
|
153
155
|
|
|
154
156
|
## Vite 配置
|
|
155
157
|
|
package/lib/apis/core.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
/** 发送短信验证码 */
|
|
2
|
-
export declare const sendSmsCode: (...args: any[]) => any;
|
|
3
|
-
/** 获取腾讯上传临时Token */
|
|
4
|
-
export declare const getTencentToken: (...args: any[]) => any;
|
|
5
1
|
/** 获取最新版本 */
|
|
6
2
|
export declare const getLastVersion: (...args: any[]) => any;
|
|
7
|
-
/** 获取cos签名后的地址 */
|
|
8
|
-
export declare const getCosUrls: (...args: any[]) => any;
|
|
9
3
|
/** 刷新token */
|
|
10
4
|
export declare const postRefreshToken: (...args: any[]) => any;
|
|
11
5
|
/** 获取字典数据 */
|
package/lib/apis/core.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { GET, POST } from './request';
|
|
2
|
-
/** 发送短信验证码 */
|
|
3
|
-
export const sendSmsCode = (...args) => POST('/admin-api/system/auth/send-checkCode', ...args);
|
|
4
|
-
/** 获取腾讯上传临时Token */
|
|
5
|
-
export const getTencentToken = (...args) => GET('/app-api/infra/file/getTencentToken', ...args);
|
|
6
2
|
/** 获取最新版本 */
|
|
7
3
|
export const getLastVersion = (...args) => POST('/app-api/system/app/version/get-last-version-v2', ...args);
|
|
8
|
-
/** 获取cos签名后的地址 */
|
|
9
|
-
export const getCosUrls = (...args) => POST('/app-api/infra/cos/getUrls', ...args);
|
|
10
4
|
/** 刷新token */
|
|
11
5
|
export const postRefreshToken = (...args) => POST('/app-api/robot/store/auth/refreshToken?refreshToken=:refreshToken', ...args);
|
|
12
6
|
/** 获取字典数据 */
|
package/lib/configs/upload.d.ts
CHANGED
|
@@ -22,9 +22,9 @@ type UploadParams = {
|
|
|
22
22
|
};
|
|
23
23
|
/** 上传配置 */
|
|
24
24
|
export type UploadConfig = {
|
|
25
|
-
/**
|
|
25
|
+
/** 上传请求(获取临时凭证等),需由业务通过 defineConfig({ upload: { request } }) 配置 */
|
|
26
26
|
request: (params?: UploadParams) => Promise<UploadResponceData>;
|
|
27
27
|
};
|
|
28
|
-
/**
|
|
28
|
+
/** 上传配置:内置凭证接口已移除,未配置时调用会抛错 */
|
|
29
29
|
declare const Upload: UploadConfig;
|
|
30
30
|
export default Upload;
|
package/lib/configs/upload.js
CHANGED
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import cdn from './cdn';
|
|
3
|
-
/** 上传配置 */
|
|
1
|
+
/** 上传配置:内置凭证接口已移除,未配置时调用会抛错 */
|
|
4
2
|
const Upload = {
|
|
5
|
-
/** 上传请求,默认调用 getTencentToken 获取腾讯云临时密钥 */
|
|
6
3
|
request: async () => {
|
|
7
|
-
|
|
8
|
-
return {
|
|
9
|
-
secret_id: data.tmpSecretId,
|
|
10
|
-
secret_key: data.tmpSecretKey,
|
|
11
|
-
session_token: data.sessionToken,
|
|
12
|
-
create_time: data.createTime,
|
|
13
|
-
expire_time: data.expirationTime,
|
|
14
|
-
bucket: data.bucket,
|
|
15
|
-
region: cdn.isAccelerate ? 'accelerate' : data.region,
|
|
16
|
-
};
|
|
4
|
+
throw new Error('未配置上传凭证请求:请通过 defineConfig({ upload: { request } }) 配置 upload.request');
|
|
17
5
|
},
|
|
18
6
|
};
|
|
19
7
|
export default Upload;
|
package/lib/utils/cos.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare function checkRefreshToken(): Promise<boolean>;
|
|
|
3
3
|
export interface UploadFileOptions {
|
|
4
4
|
key?: string;
|
|
5
5
|
path?: string;
|
|
6
|
-
/** 获取上传任务实例,可用于 task.abort() 取消上传;token 过期重试时会再次回调 */
|
|
6
|
+
/** 获取上传任务实例,可用于 task.abort() 取消上传;H5 宿主 webview 走 plus.uploader 时为含 abort / onProgressUpdate / offProgressUpdate 的适配对象;token 过期重试时会再次回调 */
|
|
7
7
|
getTask?: ((task: UniNamespace.UploadTask) => void) | ((task: any) => void);
|
|
8
8
|
}
|
|
9
9
|
export declare function uploadFile(file: any, opts?: UploadFileOptions): Promise<{
|