@zfqh/uniapp 0.1.5 → 0.1.7

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 CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.1.7](http://10.10.10.16/caoben/front-end/compare/@zfqh/uniapp@0.1.6...@zfqh/uniapp@0.1.7) (2026-06-19)
7
+
8
+ **Note:** Version bump only for package @zfqh/uniapp
9
+
10
+
11
+
12
+
13
+
14
+ ## [0.1.6](http://10.10.10.16/caoben/front-end/compare/@zfqh/uniapp@0.1.5...@zfqh/uniapp@0.1.6) (2026-06-18)
15
+
16
+ **Note:** Version bump only for package @zfqh/uniapp
17
+
18
+
19
+
20
+
21
+
6
22
  ## [0.1.5](http://10.10.10.16/caoben/front-end/compare/@zfqh/uniapp@0.1.4...@zfqh/uniapp@0.1.5) (2026-06-15)
7
23
 
8
24
  **Note:** Version bump only for package @zfqh/uniapp
@@ -26,7 +26,7 @@ const request = uni.$uv.http;
26
26
 
27
27
  | Header | 来源 | 默认值 |
28
28
  | --- | --- | --- |
29
- | `Authorization` | `store.state.login.info.token` | 无 |
29
+ | `Authorization` | `store.state.login.info.accessToken` | 无 |
30
30
  | `Tenant-Id` | `store.state.login.info.tenantId` | `1` |
31
31
  | `X-Language` | `store.state.system.info.appLanguage` 映射到 `LANGUAGE` | 无 |
32
32
  | `Channel` | `query.channel` 或 `config.app.channel` | `config.app.channel` |
@@ -274,7 +274,7 @@ GET('/app-api/demo/check', {}, {
274
274
  | 阶段 | 行为 |
275
275
  | --- | --- |
276
276
  | request | 当 `log.request` 为 true 时打印请求 URL 和配置。 |
277
- | request | 如果存在 `store.state.login.info.token`,注入 `Authorization: Bearer <token>`。 |
277
+ | request | 如果存在 `store.state.login.info.accessToken`,注入 `Authorization: Bearer <accessToken>`。 |
278
278
  | response | 当 `log.response` 为 true 时打印响应数据。 |
279
279
  | response | 当 `data.code != 0` 时将其作为错误响应处理。 |
280
280
  | error | 补齐非标准错误的 `response`、`status`、`data.msg`。 |
@@ -283,7 +283,7 @@ GET('/app-api/demo/check', {}, {
283
283
  `401` 处理依赖:
284
284
 
285
285
  ```ts
286
- store.state.login.info.token
286
+ store.state.login.info.accessToken
287
287
  store.dispatch('logout')
288
288
  ```
289
289
 
@@ -293,7 +293,7 @@ store.dispatch('logout')
293
293
  import { useStore } from 'vuex';
294
294
 
295
295
  const store = useStore();
296
- const token = store.state.login.info.token;
296
+ const accessToken = store.state.login.info.accessToken;
297
297
  ```
298
298
 
299
299
  可通过请求自定义配置关闭:
@@ -4,19 +4,19 @@
4
4
 
5
5
  | 项 | 说明 |
6
6
  | --- | --- |
7
- | `state.info` | 登录信息,包含 token、refreshToken、expiresTime、phone、userId、tenantId、storeId 等。 |
8
- | `getter isLogin` | Boolean(state.info.token)。 |
9
- | `mutation setLoginInfo(data)` | 去掉 token 中 bearer 前缀后合并并缓存。 |
7
+ | `state.info` | 登录信息,包含 accessToken、refreshToken、expiresTime、phone、userId、tenantId、storeId 等。 |
8
+ | `getter isLogin` | Boolean(state.info.accessToken)。 |
9
+ | `mutation setLoginInfo(data)` | 去掉 accessToken 中 bearer 前缀后合并并缓存。 |
10
10
  | `mutation resetState()` | 重置登录信息并删除缓存。 |
11
11
  | `action logout(reLaunch)` | 节流退出;reLaunch 为 true 时重启到登录页,否则走 navigate 登录拦截。 |
12
12
 
13
13
  ## 基本使用
14
14
 
15
- 登录成功后写入 token、用户和租户信息;请求拦截器会从该模块注入请求头。
15
+ 登录成功后写入 accessToken、用户和租户信息;请求拦截器会从该模块注入请求头。
16
16
 
17
17
  ```ts
18
18
  store.commit('setLoginInfo', {
19
- token: loginResult.accessToken,
19
+ accessToken: loginResult.accessToken,
20
20
  refreshToken: loginResult.refreshToken,
21
21
  userId: loginResult.userId,
22
22
  tenantId: loginResult.tenantId,
@@ -26,7 +26,7 @@ store.commit('setLoginInfo', {
26
26
  const isLogin = store.getters.isLogin;
27
27
 
28
28
  // 读取登录信息
29
- const token = store.state.login.info.token;
29
+ const accessToken = store.state.login.info.accessToken;
30
30
  const userId = store.state.login.info.userId;
31
31
  const tenantId = store.state.login.info.tenantId;
32
32
 
@@ -30,7 +30,7 @@ import { TYPES } from '@zfqh/uniapp/lib/utils/message';
30
30
 
31
31
  | 名称 | 说明 |
32
32
  | --- | --- |
33
- | `TYPES.LOGIN` | 登录消息,payload 包含 `token` 和 `referrer` |
33
+ | `TYPES.LOGIN` | 登录消息,payload 包含 `accessToken` 和 `referrer` |
34
34
  | `TYPES.SHARE_PAGE` | 分享页面 |
35
35
  | `TYPES.GET_LOCATION` | 获取定位,宿主调用 `uni.getLocation` 后回传结果 |
36
36
  | `TYPES.OPEN_LOCATION` | 打开地图,宿主调用 `uni.openLocation` 后回传结果 |
@@ -28,7 +28,7 @@ import { query } from '@zfqh/uniapp';
28
28
  import { query } from '@zfqh/uniapp';
29
29
 
30
30
  // 访问 query 参数
31
- console.log(query.token); // URL 中的 token 参数
31
+ console.log(query.accessToken); // URL 中的 accessToken 参数(兼容 token
32
32
  console.log(query.channel); // 渠道参数
33
33
  console.log(query.platform); // 平台参数
34
34
  ```
@@ -38,7 +38,8 @@ console.log(query.platform); // 平台参数
38
38
  | 属性 | 类型 | 说明 |
39
39
  | --- | --- | --- |
40
40
  | `platform` | `string` | 平台标识 |
41
- | `token` | `string` | H5 端 URL 传入的 token |
41
+ | `token` | `string` | H5 端 URL 传入的 token(向后兼容) |
42
+ | `accessToken` | `string` | H5 端 URL 传入的 accessToken(优先于 token) |
42
43
  | `primary` | `string` | 主题色覆盖 |
43
44
  | `brand` | `string` | 品牌标识 |
44
45
  | `app` | `string` | 应用标识 |
@@ -67,9 +68,10 @@ parseQuery('name=%E5%BC%A0%E4%B8%89'); // { name: '张三' }
67
68
  ```ts
68
69
  import { query, navigate } from '@zfqh/uniapp';
69
70
 
70
- // H5 端通过 URL 传入 token 自动登录
71
- if (query.token) {
72
- store.commit('setLoginInfo', { token: query.token });
71
+ // H5 端通过 URL 传入 token 自动登录(accessToken 优先,兼容 token)
72
+ const queryToken = query.accessToken || query.token;
73
+ if (queryToken) {
74
+ store.commit('setLoginInfo', { accessToken: queryToken });
73
75
  }
74
76
 
75
77
  // 根据渠道参数决定跳转目标
@@ -4,7 +4,7 @@
4
4
  `@zfqh/uniapp/lib/utils/request`
5
5
  :::
6
6
 
7
- 创建请求方法并安装通用拦截器,处理动态 URL、token、错误、401 退出登录。
7
+ 创建请求方法并安装通用拦截器,处理动态 URL、accessToken、错误、401 退出登录。
8
8
 
9
9
  ## 平台兼容性
10
10
 
@@ -18,7 +18,7 @@
18
18
  import { formatURL, createInterceptors, createRequest } from '@zfqh/uniapp';
19
19
  ```
20
20
 
21
- 请求工具脱离组件 setup 上下文,拦截器内部会从 store 中读取 token 并处理 `401`。组件或 hooks 中读取 store 时请使用 `useStore()`。
21
+ 请求工具脱离组件 setup 上下文,拦截器内部会从 store 中读取 accessToken 并处理 `401`。组件或 hooks 中读取 store 时请使用 `useStore()`。
22
22
 
23
23
  具体方法、参数语义和返回值以发布包类型为准;下方表格按 `@zfqh/uniapp/lib/utils/request` 的导出整理。
24
24
 
@@ -29,6 +29,6 @@ import { formatURL, createInterceptors, createRequest } from '@zfqh/uniapp';
29
29
  | 名称 | 签名/声明 | 说明 |
30
30
  | --- | --- | --- |
31
31
  | `formatURL` | `export function formatURL(url, data) {` | 把 /:id 或 :id 动态片段替换为 data 中的值,并删除已消费字段。 |
32
- | `createInterceptors` | `export function createInterceptors(req) {` | 给请求实例安装统一请求/响应拦截器,注入 token 并处理 code/401/toast/logout。 |
32
+ | `createInterceptors` | `export function createInterceptors(req) {` | 给请求实例安装统一请求/响应拦截器,注入 accessToken 并处理 code/401/toast/logout。 |
33
33
  | `createRequest` | `export function createRequest(req, opts = {}) {` | 基于请求实例生成 GET、DELETE、POST、PUT 方法。 |
34
34
 
@@ -27,14 +27,14 @@ import { getStorageSync, setStorageSync, removeStorageSync, storageKeys } from '
27
27
  例如 `storage.prefix` 为 `'zfqh'`,当前环境为 `sit`:
28
28
 
29
29
  ```ts
30
- setStorageSync('login', { token: 'xxx' });
30
+ setStorageSync('login', { accessToken: 'xxx' });
31
31
  // 实际存储 key: 'ZFQH_SIT_LOGIN'
32
32
  ```
33
33
 
34
34
  生产环境不拼接环境名:
35
35
 
36
36
  ```ts
37
- setStorageSync('login', { token: 'xxx' });
37
+ setStorageSync('login', { accessToken: 'xxx' });
38
38
  // 实际存储 key: 'ZFQH_LOGIN'
39
39
  ```
40
40
 
@@ -47,7 +47,7 @@ import { storageKeys } from '@zfqh/uniapp';
47
47
  | 属性 | 值 | 用途 |
48
48
  | --- | --- | --- |
49
49
  | `query` | `'query'` | URL query 参数缓存 |
50
- | `login` | `'login'` | 登录信息(token、userId 等) |
50
+ | `login` | `'login'` | 登录信息(accessToken、userId 等) |
51
51
  | `user` | `'user'` | 用户信息 |
52
52
  | `open` | `'open'` | 第三方开放平台信息 |
53
53
  | `launch` | `'launch'` | 启动参数 |
@@ -55,7 +55,7 @@ import { storageKeys } from '@zfqh/uniapp';
55
55
 
56
56
  ```ts
57
57
  // 保存登录信息
58
- setStorageSync(storageKeys.login, { token: 'xxx', userId: 1, tenantId: 1 });
58
+ setStorageSync(storageKeys.login, { accessToken: 'xxx', userId: 1, tenantId: 1 });
59
59
 
60
60
  // 读取登录信息
61
61
  const loginInfo = getStorageSync(storageKeys.login);
package/docs/faq/index.md CHANGED
@@ -5,7 +5,7 @@
5
5
  检查:
6
6
 
7
7
  1. 是否先注册 store,再注册 `@zfqh/uniapp`。
8
- 2. token 是否位于 `store.state.login.info.token`。
8
+ 2. accessToken 是否位于 `store.state.login.info.accessToken`。
9
9
 
10
10
  请求拦截器属于普通 TS 模块,内部会从 store 中读取状态。组件或 hooks 内读取同一份状态时应使用 `useStore()`。
11
11
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  检查:
15
15
 
16
- 1. `store.state.login.info.token` 是否存在。
16
+ 1. `store.state.login.info.accessToken` 是否存在。
17
17
  2. store 是否实现 `dispatch('logout')`。
18
18
  3. 请求配置是否设置了 `custom.reLogin: false` 或 `custom.needLogin: false`。
19
19
 
@@ -196,7 +196,7 @@ export default defineConfig({
196
196
 
197
197
  | 路径 | 用途 |
198
198
  | --- | --- |
199
- | `store.state.login.info.token` | 请求拦截器注入 `Authorization`。 |
199
+ | `store.state.login.info.accessToken` | 请求拦截器注入 `Authorization`。 |
200
200
  | `store.state.login.info.tenantId` | 业务请求注入 `Tenant-Id`。 |
201
201
  | `store.state.system.info.appLanguage` | 业务请求注入 `X-Language`。 |
202
202
  | `store.state.system.info.appVersion` | 非 App 环境下读取版本名。 |
@@ -306,5 +306,5 @@ $uv-primary-disabled: #E8D8C9;
306
306
  4. 注册 `@zfqh/uniapp`。
307
307
  5. 初始化业务配置、路由守卫或业务模块。
308
308
 
309
- 顺序错误最常见的表现是请求不带 token、导航无法判断登录态、`401` 无法自动退出。
309
+ 顺序错误最常见的表现是请求不带 accessToken、导航无法判断登录态、`401` 无法自动退出。
310
310
 
package/docs/index.md CHANGED
@@ -74,7 +74,7 @@ export function createApp() {
74
74
 
75
75
  ## 使用约定
76
76
 
77
- - 项目需要提供符合约定的 Vuex store:请求读取 `store.state.login.info.token`,导航读取 `store.getters.isLogin`,`401` 会触发 `store.dispatch('logout')`。
77
+ - 项目需要提供符合约定的 Vuex store:请求读取 `store.state.login.info.accessToken`,导航读取 `store.getters.isLogin`,`401` 会触发 `store.dispatch('logout')`。
78
78
  - Store 入口按上下文区分:组件的 Composition API 中使用 `import { useStore } from 'vuex'`,Options API 组件中使用 `this.$store`,普通 TS 模块中使用 `uni.$store`。
79
79
  - 多环境配置推荐使用 `@env/.env.<env>.ts`,并通过 `defineEnvConfig` 输出配置。
80
80
  - 根入口未导出的 `apis`、`modules`、`mixins` 请按 [深度引用](./api/index.md#深度引用) 从构建产物路径引入。
@@ -12,7 +12,7 @@ export default {
12
12
  if (uni.showAppFromBackground) {
13
13
  // #ifdef H5
14
14
  // 防止登录后,返回webview页面再次跳转登录页面
15
- if (IS_WEBVIEW_ENV && this.$store.state.login?.info?.token == null) {
15
+ if (IS_WEBVIEW_ENV && this.$store.state.login?.info?.accessToken == null) {
16
16
  return;
17
17
  }
18
18
  // #endif
@@ -64,13 +64,13 @@ export default {
64
64
  }
65
65
  // #endif
66
66
  // #ifndef MP
67
- const { token = '' } = this.loginInfo;
67
+ const { accessToken = '' } = this.loginInfo;
68
68
  const [, path] = url.split('?');
69
69
  const { url: _url } = parse(path, { decoder: (str) => str });
70
70
  this.postMessage({
71
71
  type: TYPES.LOGIN,
72
72
  payload: {
73
- token,
73
+ accessToken,
74
74
  referrer: decodeURIComponent(_url),
75
75
  },
76
76
  });
@@ -32,7 +32,7 @@ export default {
32
32
  const { loginInfo, queryInfo, appInfo } = this;
33
33
  const query = {
34
34
  ...queryInfo,
35
- token: loginInfo.token || '',
35
+ token: loginInfo.accessToken || '',
36
36
  brand: appInfo.brand?.code || '',
37
37
  app: appInfo.app?.code || '',
38
38
  platform: PLATFORM_CODE,
@@ -5,17 +5,18 @@ import Throttle from '../utils/throttle';
5
5
  import { getPage } from '../utils/pages';
6
6
  const throttle = new Throttle();
7
7
  // #ifdef H5
8
- if (query.token != null) {
8
+ const queryToken = query.accessToken || query.token;
9
+ if (queryToken != null) {
9
10
  const store = getStorageSync(storageKeys.login) || {};
10
- if (query.token !== store.token) {
11
- store.token = query.token;
11
+ if (queryToken !== store.accessToken) {
12
+ store.accessToken = queryToken;
12
13
  setStorageSync(storageKeys.login, store);
13
14
  }
14
15
  }
15
16
  // #endif
16
17
  function getDefaultState() {
17
18
  return {
18
- token: null,
19
+ accessToken: null,
19
20
  refreshToken: '',
20
21
  expiresTime: 0,
21
22
  phone: '',
@@ -37,13 +38,13 @@ const store = {
37
38
  getters: {
38
39
  // 是否已登录
39
40
  isLogin(state) {
40
- return Boolean(state.info.token);
41
+ return Boolean(state.info.accessToken);
41
42
  },
42
43
  },
43
44
  mutations: {
44
45
  setLoginInfo(state, data) {
45
- if (data.token) {
46
- data.token = data.token.replace(/^bearer\s+/i, '');
46
+ if (data.accessToken) {
47
+ data.accessToken = data.accessToken.replace(/^bearer\s+/i, '');
47
48
  }
48
49
  state.info = { ...state.info, ...data };
49
50
  setStorage(storageKeys.login, state.info);
@@ -24,7 +24,8 @@ export declare enum MP_ENV_VERSION {
24
24
  export declare const LANGUAGE: {
25
25
  'zh-Hans': string;
26
26
  'zh-Hant': string;
27
- 'ja-JP': string;
27
+ ja: string;
28
28
  en: string;
29
29
  fr: string;
30
+ es: string;
30
31
  };
@@ -46,7 +46,8 @@ export var MP_ENV_VERSION;
46
46
  export const LANGUAGE = {
47
47
  'zh-Hans': 'zh-CN',
48
48
  'zh-Hant': 'zh-TW',
49
- 'ja-JP': 'ja-JP',
49
+ ja: 'ja-JP',
50
50
  en: 'en-US',
51
51
  fr: 'fr-FR',
52
+ es: 'es-ES',
52
53
  };
@@ -11,15 +11,15 @@ Object.keys(TYPES).forEach((key) => {
11
11
  TYPES[key] = key;
12
12
  });
13
13
  // #ifdef H5
14
- window.onmessage = (e) => {
14
+ window.addEventListener('message', (e) => {
15
15
  try {
16
16
  if (e.data.type === 'WEBVIEW_MESSAGE') {
17
17
  uni.$emit('WEBVIEW_MESSAGE', e.data.data);
18
18
  const { type, payload } = e.data.data;
19
19
  switch (type) {
20
20
  case TYPES.LOGIN: {
21
- const { token, referrer } = payload;
22
- uni.$store.commit('setLoginInfo', { token });
21
+ const { accessToken, referrer } = payload;
22
+ uni.$store.commit('setLoginInfo', { accessToken });
23
23
  uni.$store.dispatch('getInfo');
24
24
  if (referrer) {
25
25
  // 必须使用reLaunch,否则跳转可能无效
@@ -59,5 +59,5 @@ window.onmessage = (e) => {
59
59
  }
60
60
  }
61
61
  catch (e) { }
62
- };
62
+ });
63
63
  // #endif
@@ -1,6 +1,7 @@
1
1
  interface Query {
2
2
  platform?: string;
3
3
  token?: string;
4
+ accessToken?: string;
4
5
  primary?: string;
5
6
  brand?: string;
6
7
  app?: string;
@@ -29,7 +29,7 @@ function responseReject(response) {
29
29
  const { reLogin, needLogin } = config?.custom || {};
30
30
  if (reLogin !== false && needLogin !== false && uni.$store != null) {
31
31
  throttle.exec(() => {
32
- if (uni.$store.state.login?.info?.token != null) {
32
+ if (uni.$store.state.login?.info?.accessToken != null) {
33
33
  const { message, msg } = data;
34
34
  if (message || msg) {
35
35
  toast.message(message || msg);
@@ -58,9 +58,9 @@ export function createInterceptors(req) {
58
58
  const header = {};
59
59
  if (uni.$store) {
60
60
  const loginInfo = uni.$store.state.login?.info;
61
- const { token } = loginInfo || {};
62
- if (token) {
63
- header.Authorization = `Bearer ${token}`;
61
+ const { accessToken } = loginInfo || {};
62
+ if (accessToken) {
63
+ header.Authorization = `Bearer ${accessToken}`;
64
64
  }
65
65
  }
66
66
  config.header = {
package/lib/utils/uni.js CHANGED
@@ -6,7 +6,6 @@ import { brand } from '../configs/brand';
6
6
  import mp from '../configs/mp';
7
7
  import color from '../configs/color';
8
8
  import { IS_WEBVIEW_ENV, SYSTEM_INFO } from './consts';
9
- import { getPage } from './pages';
10
9
  import query from './query';
11
10
  // #ifndef H5
12
11
  uni.webView = uni;
@@ -50,13 +49,6 @@ uni.navigateBack = (options = {}) => {
50
49
  // webview内没有上页,则触发原生返回
51
50
  uni.webView?.navigateBack(options);
52
51
  }
53
- else if (!IS_WEBVIEW_ENV &&
54
- ((length > 1 && delta >= length) || (length === 1 && !getPage('index')?.includes(pages[0].route)))) {
55
- // 非首页返回则跳转到首页
56
- uni.reLaunch({
57
- url: getPage('index'),
58
- });
59
- }
60
52
  else {
61
53
  navigateBack(options);
62
54
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zfqh/uniapp",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "uniapp公共模块",
5
5
  "author": "yinjiazeng@163.com",
6
6
  "license": "MIT",