@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.
@@ -4,28 +4,28 @@
4
4
 
5
5
  ## 文件清单
6
6
 
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) | 版本检查、应用安装和重启。 |
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` | `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` | 相对时间描述 |
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 小时 | `'N分钟前'` |
119
- | < 1 天 | `'N小时前'` |
120
- | 1 ~ 2 天 | `'昨天 HH:MM'` |
121
- | 2 ~ 7 天 | `'N天前'` |
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.397470,
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` | 手机号脱敏,保留前 3 后 4 |
310
- | `formatPhone` | `formatPhone(phone: string \| number): string` | 手机号格式化为 `188 8888 8888` |
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` | `toFixed(value: string \| number, decimal?: number): string` | 小数位控制,默认 2 位 |
327
- | `numberPlus` | `numberPlus(num: number \| string, min?: number): string` | 超过阈值显示 `N+`,默认阈值 100 |
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?)` | 网络图片转 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 写入本地临时路径,返回文件路径 |
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)` | 从 `config.path` 页面别名中获取页面路径 |
506
- | `inPages(pages, url)` | 判断 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 | 微信小程序 | 其他小程序 | WebView |
12
- | --- | --- | --- | --- | --- |
13
- | √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
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 }, // 拼接到 URL query
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?)` | `default export member` | 统一跳转入口;支持字符串或对象参数,默认 type 为 navigateTo。 |
142
- | `navigate.navigateTo(options)` | `default export member` | 按 navigateTo 跳转。 |
143
- | `navigate.redirectTo(options)` | `default export member` | 按 redirectTo 跳转。 |
144
- | `navigate.reLaunch(options)` | `default export member` | 按 reLaunch 跳转。 |
145
- | `navigate.switchTab(options)` | `default export member` | 按 switchTab 跳转。 |
146
- | `navigate.back(options)` | `default export member` | 调用 uni.navigateBack。 |
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` | 登录后先回来源页,再根据 `__navigate` 跳目标页。 |
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 { getTencentToken } from '@zfqh/uniapp/lib/apis';
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
- const { data } = await getTencentToken();
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 { getTencentToken } from '@zfqh/uniapp/lib/apis';
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
- const { data } = await getTencentToken();
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
- - `getTencentToken` 已内置在 `@zfqh/uniapp/lib/apis`,如果项目使用不同接口,可替换成自己的请求函数,但返回字段仍需映射成 COS 工具需要的字段名。
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 { getTencentToken } from '@zfqh/uniapp/lib/apis';
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
- const { data } = await getTencentToken();
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 { getTencentToken } from '@zfqh/uniapp/lib/apis';
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
- const { data } = await getTencentToken();
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
- - 内置 COS 临时密钥接口为 `@zfqh/uniapp/lib/apis` 的 `getTencentToken`;如后端接口不同,可以替换请求函数,但返回给 `upload.request` 的字段名需要保持一致。
154
+ - 包内不再内置上传凭证接口,`upload.request` 必须由业务实现;示例中的 `/api/upload-token` 仅为占位,请替换为实际后端临时凭证接口。
153
155
 
154
156
  ## Vite 配置
155
157
 
@@ -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
  /** 获取字典数据 */
@@ -22,9 +22,9 @@ type UploadParams = {
22
22
  };
23
23
  /** 上传配置 */
24
24
  export type UploadConfig = {
25
- /** 上传请求,例如获取Token */
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;
@@ -1,19 +1,7 @@
1
- import { getTencentToken } from '../apis/core';
2
- import cdn from './cdn';
3
- /** 上传配置 */
1
+ /** 上传配置:内置凭证接口已移除,未配置时调用会抛错 */
4
2
  const Upload = {
5
- /** 上传请求,默认调用 getTencentToken 获取腾讯云临时密钥 */
6
3
  request: async () => {
7
- const { data } = await getTencentToken();
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;
@@ -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<{