@uxda/appkit 4.3.8 → 4.3.11

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.
Files changed (131) hide show
  1. package/.eslintrc.mjs +7 -7
  2. package/COMPONENT_USAGE.md +1523 -1523
  3. package/PROJECT_DOCS.md +142 -142
  4. package/README.md +187 -187
  5. package/babel.config.js +12 -12
  6. package/dist/appkit.css +3 -48
  7. package/dist/index.js +84 -152
  8. package/package.json +82 -79
  9. package/project.config.json +15 -15
  10. package/project.tt.json +13 -13
  11. package/rollup.config.mjs +78 -78
  12. package/src/Appkit.ts +72 -72
  13. package/src/balance/api/endpoints.ts +133 -133
  14. package/src/balance/api/index.ts +118 -118
  15. package/src/balance/components/AccountView.vue +770 -770
  16. package/src/balance/components/BalanceCard.vue +210 -210
  17. package/src/balance/components/BalanceReminder.vue +84 -84
  18. package/src/balance/components/ConsumptionFilter.vue +218 -218
  19. package/src/balance/components/ConsumptionRules.vue +68 -68
  20. package/src/balance/components/DateFilter.vue +259 -259
  21. package/src/balance/components/DateRange.vue +111 -111
  22. package/src/balance/components/ListFilter.vue +62 -62
  23. package/src/balance/components/ListFilterPicker.vue +191 -191
  24. package/src/balance/components/PromoterCard.vue +307 -307
  25. package/src/balance/components/SecondBalance.vue +77 -77
  26. package/src/balance/components/Tip.vue +45 -45
  27. package/src/balance/components/index.ts +8 -8
  28. package/src/balance/types.ts +99 -99
  29. package/src/components/bt-cropper/index.vue +730 -730
  30. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  31. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  32. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  33. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  34. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  35. package/src/components/bt-cropper/utils/ratio.js +3 -3
  36. package/src/components/bt-cropper/utils/tools.js +25 -25
  37. package/src/components/dd-area/index.vue +225 -225
  38. package/src/components/dd-icon/doc.md +21 -21
  39. package/src/components/dd-icon/index.vue +23 -23
  40. package/src/components/dd-notice-bar/index.vue +78 -78
  41. package/src/components/dd-search/doc.md +34 -34
  42. package/src/components/dd-search/index.vue +168 -168
  43. package/src/components/dd-selector/index.vue +124 -124
  44. package/src/components/dd-skeleton/doc.md +19 -19
  45. package/src/components/dd-skeleton/index.vue +36 -36
  46. package/src/global.ts +6 -6
  47. package/src/index.ts +101 -101
  48. package/src/main.scss +1 -1
  49. package/src/notice/api/endpoints.ts +54 -54
  50. package/src/notice/api/index.ts +121 -121
  51. package/src/notice/components/NoticeBanner.vue +247 -247
  52. package/src/notice/components/NoticeEntry.vue +99 -99
  53. package/src/notice/components/NoticeList.vue +311 -311
  54. package/src/notice/components/NoticeList2.vue +240 -400
  55. package/src/notice/components/NoticePopup.vue +163 -163
  56. package/src/notice/components/index.ts +6 -6
  57. package/src/notice/components/useCommonList.ts +86 -86
  58. package/src/notice/components/useNotice.ts +35 -35
  59. package/src/notice/index.ts +1 -1
  60. package/src/notice/types.ts +25 -25
  61. package/src/payment/api/config.ts +7 -7
  62. package/src/payment/api/endpoints.ts +96 -96
  63. package/src/payment/api/index.ts +107 -107
  64. package/src/payment/components/AmountPicker.vue +90 -90
  65. package/src/payment/components/RechargeResult.vue +69 -69
  66. package/src/payment/components/RechargeView.vue +195 -191
  67. package/src/payment/components/RightsPicker.vue +105 -105
  68. package/src/payment/components/TradeView.vue +365 -363
  69. package/src/payment/components/UserAgreement.vue +234 -234
  70. package/src/payment/components/index.ts +22 -22
  71. package/src/payment/index.ts +5 -5
  72. package/src/payment/services/index.ts +16 -16
  73. package/src/payment/services/invoke-recharge.ts +25 -25
  74. package/src/payment/services/request-payment.ts +130 -130
  75. package/src/payment/types.ts +33 -33
  76. package/src/register/components/SelfRegistration.vue +233 -233
  77. package/src/register/components/index.ts +2 -2
  78. package/src/scenarios/components/SharePoster.vue +364 -364
  79. package/src/scenarios/components/index.ts +2 -2
  80. package/src/scenarios/components/poster-paste.vue +93 -93
  81. package/src/scenarios/components/share-poster.md +273 -273
  82. package/src/shared/components/AppDrawer.vue +53 -53
  83. package/src/shared/components/AppVerify.vue +128 -128
  84. package/src/shared/components/DeviceVersion.vue +78 -78
  85. package/src/shared/components/EmptyView.vue +33 -33
  86. package/src/shared/components/OcrBusinessLicense.vue +137 -137
  87. package/src/shared/components/OcrIcon.vue +229 -229
  88. package/src/shared/components/PageHeader.vue +84 -84
  89. package/src/shared/components/index.ts +8 -8
  90. package/src/shared/composables/index.ts +9 -9
  91. package/src/shared/composables/useAmount.ts +46 -46
  92. package/src/shared/composables/useCountdown.ts +46 -46
  93. package/src/shared/composables/useCrypto.ts +76 -76
  94. package/src/shared/composables/useDeviceEnv.ts +26 -26
  95. package/src/shared/composables/useDragBox.ts +97 -97
  96. package/src/shared/composables/useEncode.ts +43 -43
  97. package/src/shared/composables/useLogger.ts +144 -144
  98. package/src/shared/composables/useSafeArea.ts +46 -46
  99. package/src/shared/composables/useTabbar.ts +24 -24
  100. package/src/shared/composables/useUpload.ts +61 -61
  101. package/src/shared/composables/useValidator.ts +32 -32
  102. package/src/shared/composables/useWxAuth.ts +48 -48
  103. package/src/shared/http/Http.ts +148 -148
  104. package/src/shared/http/index.ts +1 -1
  105. package/src/shared/http/types.ts +163 -163
  106. package/src/shared/index.ts +9 -9
  107. package/src/shared/tracking/directives/index.ts +40 -40
  108. package/src/shared/tracking/examples/page-tracking-template.vue +27 -27
  109. package/src/shared/weixin/index.ts +9 -9
  110. package/src/shared/weixin/jssdk.ts +103 -103
  111. package/src/shared/weixin/payment.ts +38 -38
  112. package/src/styles/vars.scss +3 -3
  113. package/src/user/api/endpoints.ts +17 -17
  114. package/src/user/api/index.ts +123 -123
  115. package/src/user/components/LoginSetting.vue +114 -114
  116. package/src/user/components/UserAuth.vue +218 -218
  117. package/src/user/components/UserBinding.vue +277 -277
  118. package/src/user/components/UserBindingSuccess.vue +80 -80
  119. package/src/user/components/UserEntry.vue +139 -139
  120. package/src/user/components/UserFeedback.vue +427 -427
  121. package/src/user/components/UserFeedbackEntry.vue +175 -175
  122. package/src/user/components/UserHeadCrop.vue +65 -65
  123. package/src/user/components/UserInfo.vue +709 -709
  124. package/src/user/components/UserResourceEmpty.vue +75 -75
  125. package/src/user/components/index.ts +23 -23
  126. package/src/user/index.ts +1 -1
  127. package/src/utils/utils.ts +33 -33
  128. package/tsconfig.json +30 -30
  129. package/types/global.d.ts +22 -22
  130. package/types/vue.d.ts +10 -10
  131. package/dist/assets/asset-DcH8Kg-2 +0 -1
package/PROJECT_DOCS.md CHANGED
@@ -1,142 +1,142 @@
1
- # Appkit 项目说明文档
2
-
3
- ## 1. 项目概述
4
-
5
- **Appkit** 是一个专为小程序/H5设计的业务组件包,采用 **Vue 3 + Taro** 技术栈。它封装了通用的业务逻辑和 UI 组件,支持多租户配置,旨在通过统一的接口快速接入到不同的小程序应用中。
6
-
7
- - **核心框架**: Vue 3, Taro 4.x
8
- - **UI 库**: NutUI (Taro版)
9
- - **主要功能**: 支付、用户中心、账户余额、消息通知、全埋点统计。
10
- - **构建工具**: Rollup
11
-
12
- ## 2. 核心架构 (`src/Appkit.ts`)
13
-
14
- `Appkit` 通过 `useAppKitOptions` 提供全局配置注入,充当宿主应用与 SDK 之间的桥梁。
15
-
16
- - **AppKitOptions**: 定义了 SDK 运行所需的外部依赖,包括:
17
- - `app()`, `tenant()`: 获取应用 ID 和租户 ID。
18
- - `token()`, `tempToken()`: 获取认证 Token。
19
- - `baseUrl()`: API 请求的基础地址。
20
- - `requestPayment`, `invokeRecharge`: 调起宿主环境的支付能力。
21
- - `directives`: 允许注入自定义指令。
22
-
23
- ## 3. 功能模块详解
24
-
25
- 项目按业务领域在 `src/` 下划分为多个独立模块,每个模块包含其专属的 API、组件和逻辑。
26
-
27
- ### 3.1 余额模块 (`src/balance`)
28
- 负责用户账户余额的展示、查询和消费规则说明。
29
-
30
- | 组件名 | 功能描述 |
31
- | :--- | :--- |
32
- | `AccountView.vue` | **账户总览**,展示用户当前余额及账户状态。 |
33
- | `BalanceCard.vue` | **余额卡片**,用于在首页或个人中心展示余额的卡片组件。 |
34
- | `BalanceReminder.vue` | **余额提醒**,当余额不足时的提示组件。 |
35
- | `ConsumptionFilter.vue` | **消费筛选**,用于消费记录列表的筛选条件(时间、类型等)。 |
36
- | `ConsumptionRules.vue` | **消费规则**,展示账户资金的使用规则说明。 |
37
- | `DateFilter.vue` / `DateRange.vue` | **日期选择**,辅助消费记录的时间范围筛选。 |
38
- | `PromoterCard.vue` | **推广员卡片**,可能涉及分销或推广收益的展示。 |
39
- | `SecondBalance.vue` | **二级余额**,用于展示积分、赠送金等次级资产。 |
40
- | `Tip.vue` | **提示组件**,余额模块通用的提示信息封装。 |
41
-
42
- ### 3.2 支付模块 (`src/payment`)
43
- 处理充值、交易记录及支付协议。
44
-
45
- | 组件名 | 功能描述 |
46
- | :--- | :--- |
47
- | `RechargeView.vue` | **充值主页**,提供充值金额选择面板和支付按钮。 |
48
- | `RechargeResult.vue` | **充值结果页**,展示支付成功或失败的状态。 |
49
- | `TradeView.vue` | **权益充值**,提供权益充值金额选择面板和支付按钮。 |
50
- | `AmountPicker.vue` | **金额选择器**,用于充值时选择固定金额或输入自定义金额。 |
51
- | `RightsPicker.vue` | **权益选择**,可能涉及购买会员权益或套餐的选择。 |
52
- | `UserAgreement.vue` | **用户协议**,支付前的服务协议展示与确认。 |
53
-
54
- ### 3.3 消息通知模块 (`src/notice`)
55
- 负责应用内的消息触达。
56
-
57
- | 组件名 | 功能描述 |
58
- | :--- | :--- |
59
- | `NoticeBanner.vue` | **通知横幅**,页面顶部或嵌入式的通告栏。 |
60
- | `NoticePopup.vue` | **通知弹窗**,强提醒类型的消息弹窗。 |
61
- | `NoticeList.vue` | **消息列表**,展示历史消息记录。 |
62
- | `NoticeList2.vue` | **新版消息列表**,展示历史消息记录。 |
63
- | `NoticeEntry.vue` | **消息入口**,通常带红点或未读数的消息中心入口图标。 |
64
-
65
- ### 3.4 用户模块 (`src/user`)
66
- 管理用户身份、登录及个人信息。
67
-
68
- | 组件名 | 功能描述 |
69
- | :--- | :--- |
70
- | `UserAuth.vue` | **用户授权**,处理微信登录授权逻辑。 |
71
- | `LoginSetting.vue` | **登录设置**,管理登录方式或账号安全设置。 |
72
- | `UserInfo.vue` | **用户信息**,展示头像、昵称等基础资料。 |
73
- | `UserHeadCrop.vue` | **头像裁剪**,用户上传头像时的图片裁剪功能。 |
74
- | `UserBinding.vue` | **账号绑定**,绑定手机号或第三方账号。 |
75
- | `UserFeedback.vue` | **用户反馈**,提交意见反馈的表单。 |
76
-
77
- ### 3.5 注册模块 (`src/register`)
78
- | 组件名 | 功能描述 |
79
- | :--- | :--- |
80
- | `SelfRegistration.vue` | **自助注册**,引导新用户完成注册流程的组件。 |
81
-
82
- ### 3.6 业务场景 (`src/scenarios`)
83
- 特定业务逻辑的复合组件。
84
- | 组件名 | 功能描述 |
85
- | :--- | :--- |
86
- | `SharePoster.vue` | **分享海报**,生成包含二维码和营销信息的图片,用于朋友圈分享。 |
87
- | `poster-paste.vue` | **海报粘贴**,处理海报生成的底层绘制或粘贴逻辑。 |
88
-
89
- ## 4. 通用基础组件 (`src/components`)
90
- 项目内封装的通用 UI 组件,不依赖具体业务。
91
-
92
- | 组件目录 | 组件说明 |
93
- | :--- | :--- |
94
- | `dd-search` | **搜索框**,支持导航栏模式,带有搜索回调和防抖功能。 |
95
- | `dd-notice-bar` | **滚动通告栏**,用于显示简短的滚动消息。 |
96
- | `dd-skeleton` | **骨架屏**,数据加载过程中的占位显示,提升体验。 |
97
- | `bt-cropper` | **图片裁剪器**,基于 canvas 的高性能图片裁剪工具。 |
98
- | `dd-area` | **地区选择器**,省市区三级联动选择。 |
99
- | `dd-selector` | **通用选择器**,下拉或弹窗式的单选/多选组件。 |
100
- | `dd-icon` | **图标组件**,项目统一的图标封装。 |
101
-
102
- ## 5. 基础设施与工具 (`src/shared`)
103
-
104
- ### 5.1 全埋点系统 (`src/shared/tracking`)
105
- 一个功能强大的埋点 SDK,支持自动和手动埋点。
106
- - **自动埋点**:
107
- - `usePageTracking`: 自动记录页面访问、停留时间、性能数据。
108
- - `useAutoTracking`: 组合式函数,用于组件级自动跟踪。
109
- - **指令**: `v-track-click` (点击), `v-track-page` (页面), `v-track-scroll` (滚动), `v-track-search` (搜索)。
110
- - **数据发送**: 支持 H5 `sendBeacon` 和小程序异步请求,具备断网重试和页面关闭前自动发送(Flush)机制。
111
-
112
- ### 5.2 常用 Hooks (`src/shared/composables`)
113
- 提供 Vue Composition API 风格的复用逻辑:
114
- - `useWxAuth`: 微信授权逻辑封装。
115
- - `useUpload`: 文件上传逻辑。
116
- - `useCrypto`: 加密解密工具。
117
- - `useDeviceEnv`: 设备环境判断 (H5/Weapp)。
118
- - `useValidator`: 表单验证逻辑。
119
-
120
- ### 5.3 微信能力 (`src/shared/weixin`)
121
- - `jssdk.ts`: 微信 JS-SDK 的封装。
122
- - `payment.ts`: 微信支付能力的底层调用封装。
123
-
124
- ### 5.4 网络请求 (`src/shared/http`)
125
- - 基于配置的 HTTP 客户端,集成了 Token 注入、拦截器和错误处理。
126
-
127
- ## 6. 使用示例
128
-
129
- 在宿主项目中初始化 Appkit:
130
-
131
- ```typescript
132
- // 宿主应用的入口文件
133
- import { useAppKitOptions } from '@uxda/appkit';
134
-
135
- const options = useAppKitOptions();
136
-
137
- // 配置 SDK
138
- options.baseUrl = () => 'https://api.example.com';
139
- options.token = () => getUserToken();
140
- options.app = () => 'app_id_123';
141
- ```
142
-
1
+ # Appkit 项目说明文档
2
+
3
+ ## 1. 项目概述
4
+
5
+ **Appkit** 是一个专为小程序/H5设计的业务组件包,采用 **Vue 3 + Taro** 技术栈。它封装了通用的业务逻辑和 UI 组件,支持多租户配置,旨在通过统一的接口快速接入到不同的小程序应用中。
6
+
7
+ - **核心框架**: Vue 3, Taro 4.x
8
+ - **UI 库**: NutUI (Taro版)
9
+ - **主要功能**: 支付、用户中心、账户余额、消息通知、全埋点统计。
10
+ - **构建工具**: Rollup
11
+
12
+ ## 2. 核心架构 (`src/Appkit.ts`)
13
+
14
+ `Appkit` 通过 `useAppKitOptions` 提供全局配置注入,充当宿主应用与 SDK 之间的桥梁。
15
+
16
+ - **AppKitOptions**: 定义了 SDK 运行所需的外部依赖,包括:
17
+ - `app()`, `tenant()`: 获取应用 ID 和租户 ID。
18
+ - `token()`, `tempToken()`: 获取认证 Token。
19
+ - `baseUrl()`: API 请求的基础地址。
20
+ - `requestPayment`, `invokeRecharge`: 调起宿主环境的支付能力。
21
+ - `directives`: 允许注入自定义指令。
22
+
23
+ ## 3. 功能模块详解
24
+
25
+ 项目按业务领域在 `src/` 下划分为多个独立模块,每个模块包含其专属的 API、组件和逻辑。
26
+
27
+ ### 3.1 余额模块 (`src/balance`)
28
+ 负责用户账户余额的展示、查询和消费规则说明。
29
+
30
+ | 组件名 | 功能描述 |
31
+ | :--- | :--- |
32
+ | `AccountView.vue` | **账户总览**,展示用户当前余额及账户状态。 |
33
+ | `BalanceCard.vue` | **余额卡片**,用于在首页或个人中心展示余额的卡片组件。 |
34
+ | `BalanceReminder.vue` | **余额提醒**,当余额不足时的提示组件。 |
35
+ | `ConsumptionFilter.vue` | **消费筛选**,用于消费记录列表的筛选条件(时间、类型等)。 |
36
+ | `ConsumptionRules.vue` | **消费规则**,展示账户资金的使用规则说明。 |
37
+ | `DateFilter.vue` / `DateRange.vue` | **日期选择**,辅助消费记录的时间范围筛选。 |
38
+ | `PromoterCard.vue` | **推广员卡片**,可能涉及分销或推广收益的展示。 |
39
+ | `SecondBalance.vue` | **二级余额**,用于展示积分、赠送金等次级资产。 |
40
+ | `Tip.vue` | **提示组件**,余额模块通用的提示信息封装。 |
41
+
42
+ ### 3.2 支付模块 (`src/payment`)
43
+ 处理充值、交易记录及支付协议。
44
+
45
+ | 组件名 | 功能描述 |
46
+ | :--- | :--- |
47
+ | `RechargeView.vue` | **充值主页**,提供充值金额选择面板和支付按钮。 |
48
+ | `RechargeResult.vue` | **充值结果页**,展示支付成功或失败的状态。 |
49
+ | `TradeView.vue` | **权益充值**,提供权益充值金额选择面板和支付按钮。 |
50
+ | `AmountPicker.vue` | **金额选择器**,用于充值时选择固定金额或输入自定义金额。 |
51
+ | `RightsPicker.vue` | **权益选择**,可能涉及购买会员权益或套餐的选择。 |
52
+ | `UserAgreement.vue` | **用户协议**,支付前的服务协议展示与确认。 |
53
+
54
+ ### 3.3 消息通知模块 (`src/notice`)
55
+ 负责应用内的消息触达。
56
+
57
+ | 组件名 | 功能描述 |
58
+ | :--- | :--- |
59
+ | `NoticeBanner.vue` | **通知横幅**,页面顶部或嵌入式的通告栏。 |
60
+ | `NoticePopup.vue` | **通知弹窗**,强提醒类型的消息弹窗。 |
61
+ | `NoticeList.vue` | **消息列表**,展示历史消息记录。 |
62
+ | `NoticeList2.vue` | **新版消息列表**,展示历史消息记录。 |
63
+ | `NoticeEntry.vue` | **消息入口**,通常带红点或未读数的消息中心入口图标。 |
64
+
65
+ ### 3.4 用户模块 (`src/user`)
66
+ 管理用户身份、登录及个人信息。
67
+
68
+ | 组件名 | 功能描述 |
69
+ | :--- | :--- |
70
+ | `UserAuth.vue` | **用户授权**,处理微信登录授权逻辑。 |
71
+ | `LoginSetting.vue` | **登录设置**,管理登录方式或账号安全设置。 |
72
+ | `UserInfo.vue` | **用户信息**,展示头像、昵称等基础资料。 |
73
+ | `UserHeadCrop.vue` | **头像裁剪**,用户上传头像时的图片裁剪功能。 |
74
+ | `UserBinding.vue` | **账号绑定**,绑定手机号或第三方账号。 |
75
+ | `UserFeedback.vue` | **用户反馈**,提交意见反馈的表单。 |
76
+
77
+ ### 3.5 注册模块 (`src/register`)
78
+ | 组件名 | 功能描述 |
79
+ | :--- | :--- |
80
+ | `SelfRegistration.vue` | **自助注册**,引导新用户完成注册流程的组件。 |
81
+
82
+ ### 3.6 业务场景 (`src/scenarios`)
83
+ 特定业务逻辑的复合组件。
84
+ | 组件名 | 功能描述 |
85
+ | :--- | :--- |
86
+ | `SharePoster.vue` | **分享海报**,生成包含二维码和营销信息的图片,用于朋友圈分享。 |
87
+ | `poster-paste.vue` | **海报粘贴**,处理海报生成的底层绘制或粘贴逻辑。 |
88
+
89
+ ## 4. 通用基础组件 (`src/components`)
90
+ 项目内封装的通用 UI 组件,不依赖具体业务。
91
+
92
+ | 组件目录 | 组件说明 |
93
+ | :--- | :--- |
94
+ | `dd-search` | **搜索框**,支持导航栏模式,带有搜索回调和防抖功能。 |
95
+ | `dd-notice-bar` | **滚动通告栏**,用于显示简短的滚动消息。 |
96
+ | `dd-skeleton` | **骨架屏**,数据加载过程中的占位显示,提升体验。 |
97
+ | `bt-cropper` | **图片裁剪器**,基于 canvas 的高性能图片裁剪工具。 |
98
+ | `dd-area` | **地区选择器**,省市区三级联动选择。 |
99
+ | `dd-selector` | **通用选择器**,下拉或弹窗式的单选/多选组件。 |
100
+ | `dd-icon` | **图标组件**,项目统一的图标封装。 |
101
+
102
+ ## 5. 基础设施与工具 (`src/shared`)
103
+
104
+ ### 5.1 全埋点系统 (`src/shared/tracking`)
105
+ 一个功能强大的埋点 SDK,支持自动和手动埋点。
106
+ - **自动埋点**:
107
+ - `usePageTracking`: 自动记录页面访问、停留时间、性能数据。
108
+ - `useAutoTracking`: 组合式函数,用于组件级自动跟踪。
109
+ - **指令**: `v-track-click` (点击), `v-track-page` (页面), `v-track-scroll` (滚动), `v-track-search` (搜索)。
110
+ - **数据发送**: 支持 H5 `sendBeacon` 和小程序异步请求,具备断网重试和页面关闭前自动发送(Flush)机制。
111
+
112
+ ### 5.2 常用 Hooks (`src/shared/composables`)
113
+ 提供 Vue Composition API 风格的复用逻辑:
114
+ - `useWxAuth`: 微信授权逻辑封装。
115
+ - `useUpload`: 文件上传逻辑。
116
+ - `useCrypto`: 加密解密工具。
117
+ - `useDeviceEnv`: 设备环境判断 (H5/Weapp)。
118
+ - `useValidator`: 表单验证逻辑。
119
+
120
+ ### 5.3 微信能力 (`src/shared/weixin`)
121
+ - `jssdk.ts`: 微信 JS-SDK 的封装。
122
+ - `payment.ts`: 微信支付能力的底层调用封装。
123
+
124
+ ### 5.4 网络请求 (`src/shared/http`)
125
+ - 基于配置的 HTTP 客户端,集成了 Token 注入、拦截器和错误处理。
126
+
127
+ ## 6. 使用示例
128
+
129
+ 在宿主项目中初始化 Appkit:
130
+
131
+ ```typescript
132
+ // 宿主应用的入口文件
133
+ import { useAppKitOptions } from '@uxda/appkit';
134
+
135
+ const options = useAppKitOptions();
136
+
137
+ // 配置 SDK
138
+ options.baseUrl = () => 'https://api.example.com';
139
+ options.token = () => getUserToken();
140
+ options.app = () => 'app_id_123';
141
+ ```
142
+
package/README.md CHANGED
@@ -1,188 +1,188 @@
1
- # AppKit
2
-
3
- 小程序应用开发包
4
-
5
- 向诸小程序提供供用的组件及基础设施
6
-
7
- 模块:
8
- * payment 支付
9
- * balance 账户、代币(云豆)余额
10
- * auth 登录及会话状态 (待定)
11
-
12
- ## 将 AppKit 加入应用项目
13
-
14
- ```bash
15
- git clone git@10.1.108.137:fed/appkit.git
16
- cd appkit
17
- yarn link
18
- ```
19
-
20
- 然后 cd 到(周转)小程序根目录执行:
21
- ```bash
22
- yarn link @uxda/appkit
23
- ```
24
- 完成 npm link
25
-
26
-
27
- ## 用法
28
- ```typescript
29
- import AppKit from '@uxda/appkit'
30
- import '@uxda/appkit/appkit.css'
31
- ```
32
- ## AppKit 初始化
33
-
34
- 在应用入口页调用(示例)
35
- ```typescript
36
- const App = createApp({})
37
- App.use(AppKit, {
38
- app: () => 'cloudkitPro',
39
- tenant: () => '1',
40
- token: () => localStorage.getItem('token'),
41
- baseUrl: () => process.env.TARO_APP_BASE_URL,
42
- 401: () => {
43
- // 登录态丢失时的处理
44
- }
45
- })
46
- ```
47
- 为 AppKit 的运行提供必需的 API 参数
48
- * app: 当前的 app code (嵌入接口调用的 header 参数)
49
- * tenant: 租户ID 需要提供以便调用接口
50
- * token: 用户登录态 token
51
- * baseUrl: 调用 API 的URL域名
52
- * 401: 登录态丢失异常处理 (通常要跳转登录页)
53
-
54
-
55
- ## UI组件
56
- ### 1️⃣ 充值用户界面 <recharge-view>
57
-
58
- ```typescript
59
- import { RechargeView } from '@uxda/appkit'
60
- ```
61
-
62
- ```html
63
- <template>
64
- <recharge-view
65
- app="crm"
66
- tenant="1"
67
- @complete="onRechargeComplete" />
68
- </template>
69
- ```
70
-
71
- #### 属性 props
72
-
73
- #### 事件 emits
74
-
75
- * @complete: 充值完成时发生
76
-
77
- ### 2️⃣ 账户页 &lt;account-view&gt;
78
- ```
79
- import { AccountView } from '@uxda/appkit'
80
- ```
81
- ```html
82
- <template>
83
- <account-view app="crm" @recharge=onAccountViewRecharge />
84
- <template>
85
- ```
86
-
87
- #### 事件 emits
88
- * @recharge 点击充值按钮时发生
89
-
90
- ### 3️⃣ 账户卡片 &lt;balance-card&gt;
91
-
92
- ```typescript
93
- import { BalanceCard } from '@uxda/appkit'
94
- ```
95
-
96
- ```html
97
- <template>
98
- <balance-card app="crm" @drill="onBalanceCardDrill" @recharge="onBalanceCardRecharge" />
99
- <template>
100
- ```
101
-
102
- #### 事件 emits
103
- * app 配置到组件上的 app code
104
- * @drill 点击账户详情时发生
105
- * @recharge 点击充值按钮时发生
106
-
107
- 场景端需定义以上跳转逻辑:
108
-
109
- ```typescript
110
- function onBalanceCardDrill () {
111
- //...
112
- }
113
-
114
- function onBalanceCardRecharge () {
115
- //...
116
- }
117
- ```
118
-
119
- ### 方法 methods
120
- * reload() 刷新数据
121
-
122
-
123
-
124
- ### 4️⃣ 余额不足提示框 &lt;balance-reminder&gt;
125
-
126
- ```typescript
127
- import { BalanceReminder } from '@uxda/appkit'
128
- ```
129
-
130
- ```html
131
- <balance-reminder v-model="balanceReminderOpen"
132
- @recharge="onBalanceReminderRecharge" />
133
- ```
134
-
135
- #### 事件 emits
136
- * @recharge 点击充值按钮时发生
137
-
138
-
139
- ## 公共API
140
- ### 1️⃣ 唤起充值(跳支付中心小程序) $app.invokeRecharge()
141
-
142
- ```typescript
143
- import { useAppKit } from '@uxda/appkit'
144
- const $app = useAppKit()
145
- $app.invokeRecharge({
146
- app: 'crm',
147
- tenant: '1',
148
- })
149
- ```
150
-
151
- ### 2️⃣ 唤起充值(小程序内直接支付、不跳) $app.requestPayment()
152
-
153
- ```typescript
154
- import { useAppKit } from '@uxda/appkit'
155
- const $app = useAppKit()
156
- $app.requestPayment({
157
- app: 'crm',
158
- tenant: '1',
159
- amount: 100,
160
- user: '' // wx.login 之后得到的用户临时凭证
161
- })
162
- ```
163
-
164
- ## Hooks (Vue Composables)
165
-
166
- ### useTabbar
167
- 用于获取或设置 custom tab bar
168
-
169
- ```typescript
170
- import { useTabbar } from '@uxda/appkit-next'
171
-
172
- onMounted(() => {
173
- const { setTab } = useTabbar()
174
- setTab('home')
175
- })
176
- ```
177
- 以上代码用于切换到 /pages/home/index 时, 设置 tab bar 选中项为 'home'
178
- 在 custom-tab-bar/index.vue 需要做以下设置
179
-
180
- ```typescript
181
- import { useSafeArea, useTabbar } from '@uxda/appkit-next'
182
-
183
- const { onTabChange } = useTabbar()
184
- onTabChange((value: string) => {
185
- selected.value = value
186
- })
187
- ```
1
+ # AppKit
2
+
3
+ 小程序应用开发包
4
+
5
+ 向诸小程序提供供用的组件及基础设施
6
+
7
+ 模块:
8
+ * payment 支付
9
+ * balance 账户、代币(云豆)余额
10
+ * auth 登录及会话状态 (待定)
11
+
12
+ ## 将 AppKit 加入应用项目
13
+
14
+ ```bash
15
+ git clone git@10.1.108.137:fed/appkit.git
16
+ cd appkit
17
+ yarn link
18
+ ```
19
+
20
+ 然后 cd 到(周转)小程序根目录执行:
21
+ ```bash
22
+ yarn link @uxda/appkit
23
+ ```
24
+ 完成 npm link
25
+
26
+
27
+ ## 用法
28
+ ```typescript
29
+ import AppKit from '@uxda/appkit'
30
+ import '@uxda/appkit/appkit.css'
31
+ ```
32
+ ## AppKit 初始化
33
+
34
+ 在应用入口页调用(示例)
35
+ ```typescript
36
+ const App = createApp({})
37
+ App.use(AppKit, {
38
+ app: () => 'cloudkitPro',
39
+ tenant: () => '1',
40
+ token: () => localStorage.getItem('token'),
41
+ baseUrl: () => process.env.TARO_APP_BASE_URL,
42
+ 401: () => {
43
+ // 登录态丢失时的处理
44
+ }
45
+ })
46
+ ```
47
+ 为 AppKit 的运行提供必需的 API 参数
48
+ * app: 当前的 app code (嵌入接口调用的 header 参数)
49
+ * tenant: 租户ID 需要提供以便调用接口
50
+ * token: 用户登录态 token
51
+ * baseUrl: 调用 API 的URL域名
52
+ * 401: 登录态丢失异常处理 (通常要跳转登录页)
53
+
54
+
55
+ ## UI组件
56
+ ### 1️⃣ 充值用户界面 &lt;recharge-view&gt;
57
+
58
+ ```typescript
59
+ import { RechargeView } from '@uxda/appkit'
60
+ ```
61
+
62
+ ```html
63
+ <template>
64
+ <recharge-view
65
+ app="crm"
66
+ tenant="1"
67
+ @complete="onRechargeComplete" />
68
+ </template>
69
+ ```
70
+
71
+ #### 属性 props
72
+
73
+ #### 事件 emits
74
+
75
+ * @complete: 充值完成时发生
76
+
77
+ ### 2️⃣ 账户页 &lt;account-view&gt;
78
+ ```
79
+ import { AccountView } from '@uxda/appkit'
80
+ ```
81
+ ```html
82
+ <template>
83
+ <account-view app="crm" @recharge=onAccountViewRecharge />
84
+ <template>
85
+ ```
86
+
87
+ #### 事件 emits
88
+ * @recharge 点击充值按钮时发生
89
+
90
+ ### 3️⃣ 账户卡片 &lt;balance-card&gt;
91
+
92
+ ```typescript
93
+ import { BalanceCard } from '@uxda/appkit'
94
+ ```
95
+
96
+ ```html
97
+ <template>
98
+ <balance-card app="crm" @drill="onBalanceCardDrill" @recharge="onBalanceCardRecharge" />
99
+ <template>
100
+ ```
101
+
102
+ #### 事件 emits
103
+ * app 配置到组件上的 app code
104
+ * @drill 点击账户详情时发生
105
+ * @recharge 点击充值按钮时发生
106
+
107
+ 场景端需定义以上跳转逻辑:
108
+
109
+ ```typescript
110
+ function onBalanceCardDrill () {
111
+ //...
112
+ }
113
+
114
+ function onBalanceCardRecharge () {
115
+ //...
116
+ }
117
+ ```
118
+
119
+ ### 方法 methods
120
+ * reload() 刷新数据
121
+
122
+
123
+
124
+ ### 4️⃣ 余额不足提示框 &lt;balance-reminder&gt;
125
+
126
+ ```typescript
127
+ import { BalanceReminder } from '@uxda/appkit'
128
+ ```
129
+
130
+ ```html
131
+ <balance-reminder v-model="balanceReminderOpen"
132
+ @recharge="onBalanceReminderRecharge" />
133
+ ```
134
+
135
+ #### 事件 emits
136
+ * @recharge 点击充值按钮时发生
137
+
138
+
139
+ ## 公共API
140
+ ### 1️⃣ 唤起充值(跳支付中心小程序) $app.invokeRecharge()
141
+
142
+ ```typescript
143
+ import { useAppKit } from '@uxda/appkit'
144
+ const $app = useAppKit()
145
+ $app.invokeRecharge({
146
+ app: 'crm',
147
+ tenant: '1',
148
+ })
149
+ ```
150
+
151
+ ### 2️⃣ 唤起充值(小程序内直接支付、不跳) $app.requestPayment()
152
+
153
+ ```typescript
154
+ import { useAppKit } from '@uxda/appkit'
155
+ const $app = useAppKit()
156
+ $app.requestPayment({
157
+ app: 'crm',
158
+ tenant: '1',
159
+ amount: 100,
160
+ user: '' // wx.login 之后得到的用户临时凭证
161
+ })
162
+ ```
163
+
164
+ ## Hooks (Vue Composables)
165
+
166
+ ### useTabbar
167
+ 用于获取或设置 custom tab bar
168
+
169
+ ```typescript
170
+ import { useTabbar } from '@uxda/appkit-next'
171
+
172
+ onMounted(() => {
173
+ const { setTab } = useTabbar()
174
+ setTab('home')
175
+ })
176
+ ```
177
+ 以上代码用于切换到 /pages/home/index 时, 设置 tab bar 选中项为 'home'
178
+ 在 custom-tab-bar/index.vue 需要做以下设置
179
+
180
+ ```typescript
181
+ import { useSafeArea, useTabbar } from '@uxda/appkit-next'
182
+
183
+ const { onTabChange } = useTabbar()
184
+ onTabChange((value: string) => {
185
+ selected.value = value
186
+ })
187
+ ```
188
188
  以上代码设置响应页面内的 setTab() 动作