uview-pro 0.3.0 → 0.3.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.
Files changed (249) hide show
  1. package/changelog.md +584 -574
  2. package/components/common/props.ts +22 -22
  3. package/components/u-action-sheet/types.ts +37 -37
  4. package/components/u-action-sheet/u-action-sheet.vue +178 -178
  5. package/components/u-alert-tips/types.ts +41 -41
  6. package/components/u-alert-tips/u-alert-tips.vue +238 -238
  7. package/components/u-avatar/types.ts +36 -36
  8. package/components/u-avatar/u-avatar.vue +217 -217
  9. package/components/u-avatar-cropper/types.ts +23 -23
  10. package/components/u-avatar-cropper/u-avatar-cropper.vue +297 -297
  11. package/components/u-avatar-cropper/weCropper.d.ts +62 -62
  12. package/components/u-avatar-cropper/weCropper.js +1281 -1281
  13. package/components/u-avatar-cropper/weCropper.ts +1276 -1276
  14. package/components/u-back-top/types.ts +36 -36
  15. package/components/u-back-top/u-back-top.vue +140 -140
  16. package/components/u-badge/types.ts +38 -38
  17. package/components/u-badge/u-badge.vue +183 -183
  18. package/components/u-button/types.ts +66 -66
  19. package/components/u-button/u-button.vue +579 -579
  20. package/components/u-calendar/types.ts +75 -75
  21. package/components/u-calendar/u-calendar.vue +793 -793
  22. package/components/u-car-keyboard/types.ts +14 -14
  23. package/components/u-car-keyboard/u-car-keyboard.vue +262 -262
  24. package/components/u-card/types.ts +61 -61
  25. package/components/u-card/u-card.vue +209 -209
  26. package/components/u-cell-group/types.ts +19 -19
  27. package/components/u-cell-group/u-cell-group.vue +60 -60
  28. package/components/u-cell-item/types.ts +56 -56
  29. package/components/u-cell-item/u-cell-item.vue +226 -226
  30. package/components/u-checkbox/types.ts +33 -33
  31. package/components/u-checkbox/u-checkbox.vue +282 -282
  32. package/components/u-checkbox-group/types.ts +34 -34
  33. package/components/u-checkbox-group/u-checkbox-group.vue +130 -130
  34. package/components/u-circle-progress/types.ts +54 -54
  35. package/components/u-circle-progress/u-circle-progress.vue +206 -206
  36. package/components/u-city-select/types.ts +22 -22
  37. package/components/u-city-select/u-city-select.vue +276 -276
  38. package/components/u-col/types.ts +32 -32
  39. package/components/u-col/u-col.vue +142 -142
  40. package/components/u-collapse/types.ts +33 -33
  41. package/components/u-collapse/u-collapse.vue +190 -190
  42. package/components/u-collapse-item/types.ts +27 -27
  43. package/components/u-collapse-item/u-collapse-item.vue +290 -290
  44. package/components/u-column-notice/types.ts +50 -50
  45. package/components/u-column-notice/u-column-notice.vue +222 -222
  46. package/components/u-count-down/types.ts +44 -44
  47. package/components/u-count-down/u-count-down.vue +286 -286
  48. package/components/u-count-to/types.ts +34 -34
  49. package/components/u-count-to/u-count-to.vue +266 -266
  50. package/components/u-divider/types.ts +33 -33
  51. package/components/u-divider/u-divider.vue +145 -145
  52. package/components/u-dropdown/types.ts +34 -34
  53. package/components/u-dropdown/u-dropdown.vue +330 -330
  54. package/components/u-dropdown-item/types.ts +29 -29
  55. package/components/u-dropdown-item/u-dropdown-item.vue +120 -120
  56. package/components/u-empty/types.ts +38 -38
  57. package/components/u-empty/u-empty.vue +103 -103
  58. package/components/u-field/types.ts +71 -71
  59. package/components/u-field/u-field.vue +388 -388
  60. package/components/u-form/types.ts +29 -29
  61. package/components/u-form/u-form.vue +130 -130
  62. package/components/u-form-item/types.ts +72 -72
  63. package/components/u-form-item/u-form-item.vue +447 -447
  64. package/components/u-full-screen/types.ts +16 -16
  65. package/components/u-full-screen/u-full-screen.vue +103 -103
  66. package/components/u-gap/types.ts +20 -20
  67. package/components/u-gap/u-gap.vue +50 -50
  68. package/components/u-grid/types.ts +21 -21
  69. package/components/u-grid/u-grid.vue +91 -91
  70. package/components/u-grid-item/types.ts +16 -16
  71. package/components/u-grid-item/u-grid-item.vue +130 -130
  72. package/components/u-icon/types.ts +61 -61
  73. package/components/u-icon/u-icon.vue +296 -296
  74. package/components/u-image/types.ts +51 -51
  75. package/components/u-image/u-image.vue +239 -239
  76. package/components/u-index-anchor/types.ts +16 -16
  77. package/components/u-index-anchor/u-index-anchor.vue +94 -94
  78. package/components/u-index-list/types.ts +43 -43
  79. package/components/u-index-list/u-index-list.vue +352 -352
  80. package/components/u-input/types.ts +137 -137
  81. package/components/u-input/u-input.vue +288 -288
  82. package/components/u-keyboard/types.ts +40 -40
  83. package/components/u-keyboard/u-keyboard.vue +178 -178
  84. package/components/u-lazy-load/types.ts +37 -37
  85. package/components/u-lazy-load/u-lazy-load.vue +246 -246
  86. package/components/u-line/types.ts +44 -44
  87. package/components/u-line/u-line.vue +68 -68
  88. package/components/u-line-progress/types.ts +58 -58
  89. package/components/u-line-progress/u-line-progress.vue +126 -126
  90. package/components/u-link/types.ts +43 -43
  91. package/components/u-link/u-link.vue +84 -84
  92. package/components/u-loading/types.ts +35 -35
  93. package/components/u-loading/u-loading.vue +105 -105
  94. package/components/u-loading-popup/types.ts +26 -26
  95. package/components/u-loading-popup/u-loading-popup.vue +253 -253
  96. package/components/u-loadmore/types.ts +79 -79
  97. package/components/u-loadmore/u-loadmore.vue +156 -156
  98. package/components/u-mask/types.ts +40 -40
  99. package/components/u-mask/u-mask.vue +113 -113
  100. package/components/u-message-input/types.ts +74 -74
  101. package/components/u-message-input/u-message-input.vue +281 -281
  102. package/components/u-modal/types.ts +118 -118
  103. package/components/u-modal/u-modal.vue +220 -220
  104. package/components/u-navbar/types.ts +103 -103
  105. package/components/u-navbar/u-navbar.vue +251 -251
  106. package/components/u-no-network/image.ts +2 -2
  107. package/components/u-no-network/types.ts +28 -28
  108. package/components/u-no-network/u-no-network.vue +303 -303
  109. package/components/u-notice-bar/types.ts +111 -111
  110. package/components/u-notice-bar/u-notice-bar.vue +189 -189
  111. package/components/u-number-box/types.ts +42 -42
  112. package/components/u-number-box/u-number-box.vue +321 -321
  113. package/components/u-number-keyboard/types.ts +26 -26
  114. package/components/u-number-keyboard/u-number-keyboard.vue +188 -188
  115. package/components/u-picker/types.ts +123 -123
  116. package/components/u-picker/u-picker.vue +685 -685
  117. package/components/u-popup/types.ts +59 -59
  118. package/components/u-popup/u-popup.vue +385 -385
  119. package/components/u-radio/types.ts +27 -27
  120. package/components/u-radio/u-radio.vue +279 -279
  121. package/components/u-radio-group/types.ts +31 -31
  122. package/components/u-radio-group/u-radio-group.vue +96 -96
  123. package/components/u-rate/types.ts +42 -42
  124. package/components/u-rate/u-rate.vue +249 -249
  125. package/components/u-read-more/types.ts +37 -37
  126. package/components/u-read-more/u-read-more.vue +172 -172
  127. package/components/u-root-portal/u-root-portal.vue +56 -56
  128. package/components/u-row/types.ts +22 -22
  129. package/components/u-row/u-row.vue +105 -105
  130. package/components/u-row-notice/types.ts +41 -41
  131. package/components/u-row-notice/u-row-notice.vue +256 -256
  132. package/components/u-safe-bottom/u-safe-bottom.vue +57 -57
  133. package/components/u-search/types.ts +55 -55
  134. package/components/u-search/u-search.vue +279 -279
  135. package/components/u-section/types.ts +34 -34
  136. package/components/u-section/u-section.vue +150 -150
  137. package/components/u-select/types.ts +45 -45
  138. package/components/u-select/u-select.vue +388 -388
  139. package/components/u-skeleton/types.ts +22 -22
  140. package/components/u-skeleton/u-skeleton.vue +231 -231
  141. package/components/u-slider/types.ts +34 -34
  142. package/components/u-slider/u-slider.vue +255 -255
  143. package/components/u-status-bar/u-status-bar.vue +74 -74
  144. package/components/u-steps/types.ts +30 -30
  145. package/components/u-steps/u-steps.vue +181 -181
  146. package/components/u-sticky/types.ts +24 -24
  147. package/components/u-sticky/u-sticky.vue +178 -178
  148. package/components/u-subsection/types.ts +38 -38
  149. package/components/u-subsection/u-subsection.vue +339 -339
  150. package/components/u-swipe-action/types.ts +52 -52
  151. package/components/u-swipe-action/u-swipe-action.vue +276 -276
  152. package/components/u-swiper/types.ts +49 -49
  153. package/components/u-swiper/u-swiper.vue +308 -308
  154. package/components/u-switch/types.ts +30 -30
  155. package/components/u-switch/u-switch.vue +150 -150
  156. package/components/u-tabbar/types.ts +38 -38
  157. package/components/u-tabbar/u-tabbar.vue +315 -315
  158. package/components/u-table/types.ts +27 -27
  159. package/components/u-table/u-table.vue +67 -67
  160. package/components/u-tabs/types.ts +53 -53
  161. package/components/u-tabs/u-tabs.vue +302 -302
  162. package/components/u-tabs-swiper/types.ts +55 -55
  163. package/components/u-tabs-swiper/u-tabs-swiper.vue +409 -409
  164. package/components/u-tag/types.ts +39 -39
  165. package/components/u-tag/u-tag.vue +268 -268
  166. package/components/u-td/types.ts +14 -14
  167. package/components/u-td/u-td.vue +98 -98
  168. package/components/u-text/types.ts +72 -72
  169. package/components/u-text/u-text.vue +343 -343
  170. package/components/u-th/types.ts +14 -14
  171. package/components/u-th/u-th.vue +92 -92
  172. package/components/u-time-line/u-time-line.vue +53 -53
  173. package/components/u-time-line-item/types.ts +16 -16
  174. package/components/u-time-line-item/u-time-line-item.vue +90 -90
  175. package/components/u-toast/types.ts +38 -38
  176. package/components/u-toast/u-toast.vue +240 -240
  177. package/components/u-top-tips/types.ts +16 -16
  178. package/components/u-top-tips/u-top-tips.vue +130 -130
  179. package/components/u-tr/types.ts +11 -11
  180. package/components/u-tr/u-tr.vue +39 -39
  181. package/components/u-upload/types.ts +82 -82
  182. package/components/u-upload/u-upload.vue +568 -568
  183. package/components/u-verification-code/types.ts +24 -24
  184. package/components/u-verification-code/u-verification-code.vue +176 -176
  185. package/components/u-waterfall/types.ts +18 -18
  186. package/components/u-waterfall/u-waterfall.vue +187 -187
  187. package/iconfont.css +913 -913
  188. package/index.scss +25 -25
  189. package/index.ts +38 -38
  190. package/libs/config/config.ts +26 -26
  191. package/libs/config/zIndex.ts +37 -37
  192. package/libs/css/color.scss +155 -155
  193. package/libs/css/common.scss +178 -178
  194. package/libs/css/style.components.scss +16 -16
  195. package/libs/css/style.h5.scss +8 -8
  196. package/libs/css/style.mp.scss +72 -72
  197. package/libs/css/style.nvue.scss +15 -15
  198. package/libs/css/style.vue.scss +188 -188
  199. package/libs/function/$parent.ts +24 -24
  200. package/libs/function/addUnit.ts +13 -13
  201. package/libs/function/color.ts +37 -37
  202. package/libs/function/colorGradient.ts +139 -139
  203. package/libs/function/debounce.ts +28 -28
  204. package/libs/function/deepClone.ts +39 -39
  205. package/libs/function/deepMerge.ts +35 -35
  206. package/libs/function/getParent.ts +63 -63
  207. package/libs/function/getRect.ts +26 -26
  208. package/libs/function/guid.ts +42 -42
  209. package/libs/function/md5.ts +403 -403
  210. package/libs/function/parent.ts +21 -21
  211. package/libs/function/queryParams.ts +64 -64
  212. package/libs/function/random.ts +16 -16
  213. package/libs/function/randomArray.ts +11 -11
  214. package/libs/function/route.ts +118 -118
  215. package/libs/function/styleUtils.ts +83 -83
  216. package/libs/function/sys.ts +15 -15
  217. package/libs/function/test.ts +289 -289
  218. package/libs/function/throttle.ts +31 -31
  219. package/libs/function/timeFormat.ts +55 -55
  220. package/libs/function/timeFrom.ts +48 -48
  221. package/libs/function/toast.ts +14 -14
  222. package/libs/function/trim.ts +21 -21
  223. package/libs/function/type2icon.ts +39 -39
  224. package/libs/hooks/index.ts +4 -4
  225. package/libs/hooks/useCompRelation.ts +364 -364
  226. package/libs/hooks/useComponent.ts +759 -759
  227. package/libs/hooks/useEmitter.ts +79 -79
  228. package/libs/hooks/useParent.ts +33 -33
  229. package/libs/hooks/useRect.ts +33 -33
  230. package/libs/index.ts +337 -337
  231. package/libs/request/auto-http.ts +76 -76
  232. package/libs/request/index.ts +242 -242
  233. package/libs/store/index.ts +88 -88
  234. package/libs/util/async-validator.d.ts +75 -75
  235. package/libs/util/async-validator.js +1 -1
  236. package/libs/util/calendar.d.ts +57 -57
  237. package/libs/util/emitter.ts +112 -112
  238. package/libs/util/eventBus.ts +86 -86
  239. package/libs/util/logger.ts +364 -364
  240. package/libs/util/mitt.ts +118 -118
  241. package/libs/util/parent.ts +20 -20
  242. package/package.json +4 -4
  243. package/readme.md +241 -241
  244. package/theme.scss +38 -38
  245. package/types/components.d.ts +97 -97
  246. package/types/global.d.ts +331 -331
  247. package/types/ignore-errors.d.ts +30 -30
  248. package/types/index.d.ts +19 -19
  249. package/types/uni-app.d.ts +63 -63
package/libs/index.ts CHANGED
@@ -1,337 +1,337 @@
1
- // post类型对象参数转为get类型url参数
2
- import queryParams from './function/queryParams';
3
- // 路由封装
4
- import route from './function/route';
5
- // 时间格式化
6
- import timeFormat from './function/timeFormat';
7
- // 时间戳格式化,返回多久之前
8
- import timeFrom from './function/timeFrom';
9
- // 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
10
- import colorGradients from './function/colorGradient';
11
- // 生成全局唯一guid字符串
12
- import guid from './function/guid';
13
- // 主题相关颜色,info|success|warning|primary|default|error,此颜色已在uview.scss中定义,但是为js中也能使用,故也定义一份
14
- import color from './function/color';
15
- // 根据type获取图标名称
16
- import type2icon from './function/type2icon';
17
- // 打乱数组的顺序
18
- import randomArray from './function/randomArray';
19
- // 对象和数组的深度克隆
20
- import deepClone from './function/deepClone';
21
- // 对象深度拷贝
22
- import deepMerge from './function/deepMerge';
23
- // 添加单位
24
- import addUnit from './function/addUnit';
25
- // 规则检验
26
- import test from './function/test';
27
- // 随机数
28
- import random from './function/random';
29
- // 去除空格
30
- import trim from './function/trim';
31
- // toast提示,对uni.showToast的封装
32
- import toast from './function/toast';
33
- // 获取父组件参数
34
- import getParent from './function/getParent';
35
- // 获取整个父组件
36
- import $parent from './function/$parent';
37
- // 获取sys()和os()工具方法
38
- // 获取设备信息,挂载到$u的sys()(system的缩写)属性中,
39
- // 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os()中,方便取用
40
- import { sys, os } from './function/sys';
41
- // 防抖方法
42
- import debounce from './function/debounce';
43
- // 节流方法
44
- import throttle from './function/throttle';
45
- // 获取元素的位置信息
46
- import getRect from './function/getRect';
47
- // 获取父组件
48
- import { parentData, parent } from './function/parent';
49
- // 配置信息
50
- import config from './config/config';
51
- // 各个需要fixed的地方的z-index配置文件
52
- import zIndex from './config/zIndex';
53
- import { dispatch, broadcast } from './util/emitter';
54
- import { mitt } from './util/mitt';
55
- // http相关
56
- import httpPlugin, {
57
- Request,
58
- http,
59
- type RequestOptions,
60
- type RequestConfig,
61
- type RequestInterceptor,
62
- type RequestMeta
63
- } from './request/index';
64
-
65
- /**
66
- * @description 数字格式化
67
- * @param number 要格式化的数字
68
- * @param decimals 保留几位小数
69
- * @param decimalPoint 小数点符号
70
- * @param thousandsSeparator 千分位符号
71
- * @returns 格式化后的数字
72
- */
73
- export function formatPrice(
74
- number: number | string,
75
- decimals: number = 0,
76
- decimalPoint: string = '.',
77
- thousandsSeparator: string = ','
78
- ): string {
79
- // 辅助函数:四舍五入到指定小数位
80
- function round(num: number, precision: number): string {
81
- const factor = Math.pow(10, precision);
82
- return (Math.round(num * factor) / factor).toFixed(precision);
83
- }
84
-
85
- let numStr = String(number).replace(/[^0-9+\-Ee.]/g, '');
86
- const n = !isFinite(+numStr) ? 0 : +numStr;
87
- const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);
88
- const sep = thousandsSeparator ?? ',';
89
- const dec = decimalPoint ?? '.';
90
- let s: string[] = [];
91
-
92
- s = (prec ? round(n, prec) : Math.round(n).toString()).split('.');
93
- const re = /(-?\d+)(\d{3})/;
94
- while (re.test(s[0])) {
95
- s[0] = s[0].replace(re, `$1${sep}$2`);
96
- }
97
-
98
- if ((s[1] || '').length < prec) {
99
- s[1] = s[1] || '';
100
- s[1] += '0'.repeat(prec - s[1].length);
101
- }
102
- return s.join(dec);
103
- }
104
-
105
- // 默认的姓名脱敏规则
106
- export function formatName(name: string): string {
107
- if (name.length === 2) {
108
- return name.charAt(0) + '*';
109
- } else if (name.length > 2) {
110
- const masked = '*'.repeat(name.length - 2);
111
- return name.charAt(0) + masked + name.charAt(name.length - 1);
112
- } else {
113
- return name;
114
- }
115
- }
116
-
117
- /**
118
- * @description 样式转换
119
- * 对象转字符串,或者字符串转对象
120
- * @param {object | string} customStyle 需要转换的目标
121
- * @param {String} target 转换的目的,object-转为对象,string-转为字符串
122
- * @returns {object|string}
123
- */
124
- export function addStyle(
125
- customStyle: Record<string, string> | string,
126
- target: 'object' | 'string' = 'object'
127
- ): Record<string, string> | string {
128
- // 字符串转字符串,对象转对象情形,直接返回
129
- if (
130
- test.empty(customStyle) ||
131
- (typeof customStyle === 'object' && target === 'object') ||
132
- (target === 'string' && typeof customStyle === 'string')
133
- ) {
134
- return customStyle;
135
- }
136
- // 字符串转对象
137
- if (target === 'object') {
138
- // 去除字符串样式中的两端空格
139
- const trimmedStyle = trim(customStyle as string);
140
- const styleArray = trimmedStyle.split(';');
141
- const style: Record<string, string> = {};
142
- for (let i = 0; i < styleArray.length; i++) {
143
- if (styleArray[i]) {
144
- const item = styleArray[i].split(':');
145
- if (item.length === 2) {
146
- style[trim(item[0])] = trim(item[1]);
147
- }
148
- }
149
- }
150
- return style;
151
- }
152
- // 对象转字符串
153
- let string = '';
154
- for (const i in customStyle as Record<string, string>) {
155
- if (Object.prototype.hasOwnProperty.call(customStyle, i)) {
156
- const key = i.replace(/([A-Z])/g, '-$1').toLowerCase();
157
- string += `${key}:${(customStyle as Record<string, string>)[i]};`;
158
- }
159
- }
160
- return trim(string);
161
- }
162
-
163
- /**
164
- * 将外部传入的样式格式化为可读的 CSS 样式。
165
- * @param {object | object[]} styles 外部传入的样式对象或数组
166
- * @returns {string} 格式化后的 CSS 样式字符串
167
- */
168
- export function toStyle(...styles: Array<Record<string, any> | string | null | undefined>): string {
169
- // 支持多参数:每个参数可以是 object 或 string,后面的参数优先级更高,会覆盖同名样式
170
- // 如果传入单个数组(兼容旧调用),解构展开
171
- if (styles.length === 1 && Array.isArray(styles[0])) {
172
- styles = (styles[0] as any[]).slice();
173
- }
174
-
175
- // 用于合并样式的 Map,key 使用 kebab-case
176
- const map = new Map<string, any>();
177
-
178
- const processString = (str: string) => {
179
- if (!str) return;
180
- // 移除可能的末尾分号,再按分号分割
181
- const parts = str.split(';');
182
- for (let part of parts) {
183
- part = part.trim();
184
- if (!part) continue;
185
- const idx = part.indexOf(':');
186
- if (idx === -1) continue;
187
- const key = trim(part.slice(0, idx));
188
- const val = trim(part.slice(idx + 1));
189
- if (key === '' || val === '') continue;
190
- const k = kebabCase(key);
191
- map.set(k, val);
192
- }
193
- };
194
-
195
- const processObject = (obj: Record<string, any>) => {
196
- if (!obj) return;
197
- Object.keys(obj).forEach(key => {
198
- const val = obj[key];
199
- if (val == null || val === '') return;
200
- const k = kebabCase(key);
201
- map.set(k, val);
202
- });
203
- };
204
-
205
- for (const item of styles) {
206
- if (item == null || item === '') continue;
207
- if (test.string(item)) {
208
- processString(item as string);
209
- } else if (test.array(item)) {
210
- // 若传入数组作为参数,递归处理数组元素
211
- (item as any[]).forEach(el => {
212
- if (test.string(el)) processString(el as string);
213
- else if (test.object(el)) processObject(el as Record<string, any>);
214
- });
215
- } else if (test.object(item)) {
216
- processObject(item as Record<string, any>);
217
- }
218
- }
219
-
220
- if (map.size === 0) return '';
221
-
222
- // 按插入顺序构造样式字符串,值转成字符串
223
- const result = Array.from(map.entries())
224
- .map(([k, v]) => `${k}:${String(v)}`)
225
- .join(';');
226
-
227
- return result ? (result.endsWith(';') ? result : result + ';') : '';
228
- }
229
-
230
- /**
231
- * 将驼峰命名转换为短横线命名。
232
- * @param {string} word 待转换的词条
233
- * @returns {string} 转换后的结果
234
- */
235
- export function kebabCase(word: string): string {
236
- // 使用正则表达式匹配所有大写字母,并在前面加上短横线,然后转换为小写
237
- const newWord: string = word
238
- .replace(/[A-Z]/g, function (match) {
239
- return '-' + match;
240
- })
241
- .toLowerCase();
242
-
243
- return newWord;
244
- }
245
-
246
- export {
247
- queryParams,
248
- route,
249
- timeFormat,
250
- timeFrom,
251
- guid,
252
- color,
253
- sys,
254
- os,
255
- type2icon,
256
- randomArray,
257
- deepClone,
258
- deepMerge,
259
- addUnit,
260
- test,
261
- random,
262
- trim,
263
- toast,
264
- debounce,
265
- throttle,
266
- getRect,
267
- getParent,
268
- $parent,
269
- parent,
270
- parentData,
271
- dispatch,
272
- broadcast,
273
- config,
274
- zIndex,
275
- mitt
276
- };
277
-
278
- export const $u = {
279
- queryParams: queryParams,
280
- route: route,
281
- timeFormat: timeFormat,
282
- date: timeFormat, // 另名date
283
- timeFrom,
284
- colorGradient: colorGradients.colorGradient,
285
- colorToRgba: colorGradients.colorToRgba,
286
- guid,
287
- color,
288
- sys,
289
- os,
290
- type2icon,
291
- randomArray,
292
- dispatch,
293
- broadcast,
294
- hexToRgb: colorGradients.hexToRgb,
295
- rgbToHex: colorGradients.rgbToHex,
296
- test,
297
- random,
298
- deepClone,
299
- deepMerge,
300
- getParent,
301
- $parent,
302
- parent,
303
- parentData,
304
- addUnit,
305
- trim,
306
- type: ['primary', 'success', 'error', 'warning', 'info'],
307
- http,
308
- toast,
309
- config, // uView配置信息相关,比如版本号
310
- zIndex,
311
- debounce,
312
- throttle,
313
- mitt: mitt(),
314
- getRect,
315
- formatPrice,
316
- formatName,
317
- addStyle,
318
- toStyle,
319
- kebabCase
320
- };
321
-
322
- // 颜色相关方法单独导出
323
- export const { colorGradient, colorToRgba, hexToRgb, rgbToHex } = colorGradients;
324
- // http相关导出
325
- export {
326
- Request,
327
- httpPlugin,
328
- http,
329
- type RequestOptions,
330
- type RequestConfig,
331
- type RequestInterceptor,
332
- type RequestMeta
333
- };
334
-
335
- export * from './hooks';
336
-
337
- export * from './util/logger';
1
+ // post类型对象参数转为get类型url参数
2
+ import queryParams from './function/queryParams';
3
+ // 路由封装
4
+ import route from './function/route';
5
+ // 时间格式化
6
+ import timeFormat from './function/timeFormat';
7
+ // 时间戳格式化,返回多久之前
8
+ import timeFrom from './function/timeFrom';
9
+ // 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
10
+ import colorGradients from './function/colorGradient';
11
+ // 生成全局唯一guid字符串
12
+ import guid from './function/guid';
13
+ // 主题相关颜色,info|success|warning|primary|default|error,此颜色已在uview.scss中定义,但是为js中也能使用,故也定义一份
14
+ import color from './function/color';
15
+ // 根据type获取图标名称
16
+ import type2icon from './function/type2icon';
17
+ // 打乱数组的顺序
18
+ import randomArray from './function/randomArray';
19
+ // 对象和数组的深度克隆
20
+ import deepClone from './function/deepClone';
21
+ // 对象深度拷贝
22
+ import deepMerge from './function/deepMerge';
23
+ // 添加单位
24
+ import addUnit from './function/addUnit';
25
+ // 规则检验
26
+ import test from './function/test';
27
+ // 随机数
28
+ import random from './function/random';
29
+ // 去除空格
30
+ import trim from './function/trim';
31
+ // toast提示,对uni.showToast的封装
32
+ import toast from './function/toast';
33
+ // 获取父组件参数
34
+ import getParent from './function/getParent';
35
+ // 获取整个父组件
36
+ import $parent from './function/$parent';
37
+ // 获取sys()和os()工具方法
38
+ // 获取设备信息,挂载到$u的sys()(system的缩写)属性中,
39
+ // 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os()中,方便取用
40
+ import { sys, os } from './function/sys';
41
+ // 防抖方法
42
+ import debounce from './function/debounce';
43
+ // 节流方法
44
+ import throttle from './function/throttle';
45
+ // 获取元素的位置信息
46
+ import getRect from './function/getRect';
47
+ // 获取父组件
48
+ import { parentData, parent } from './function/parent';
49
+ // 配置信息
50
+ import config from './config/config';
51
+ // 各个需要fixed的地方的z-index配置文件
52
+ import zIndex from './config/zIndex';
53
+ import { dispatch, broadcast } from './util/emitter';
54
+ import { mitt } from './util/mitt';
55
+ // http相关
56
+ import httpPlugin, {
57
+ Request,
58
+ http,
59
+ type RequestOptions,
60
+ type RequestConfig,
61
+ type RequestInterceptor,
62
+ type RequestMeta
63
+ } from './request/index';
64
+
65
+ /**
66
+ * @description 数字格式化
67
+ * @param number 要格式化的数字
68
+ * @param decimals 保留几位小数
69
+ * @param decimalPoint 小数点符号
70
+ * @param thousandsSeparator 千分位符号
71
+ * @returns 格式化后的数字
72
+ */
73
+ export function formatPrice(
74
+ number: number | string,
75
+ decimals: number = 0,
76
+ decimalPoint: string = '.',
77
+ thousandsSeparator: string = ','
78
+ ): string {
79
+ // 辅助函数:四舍五入到指定小数位
80
+ function round(num: number, precision: number): string {
81
+ const factor = Math.pow(10, precision);
82
+ return (Math.round(num * factor) / factor).toFixed(precision);
83
+ }
84
+
85
+ let numStr = String(number).replace(/[^0-9+\-Ee.]/g, '');
86
+ const n = !isFinite(+numStr) ? 0 : +numStr;
87
+ const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals);
88
+ const sep = thousandsSeparator ?? ',';
89
+ const dec = decimalPoint ?? '.';
90
+ let s: string[] = [];
91
+
92
+ s = (prec ? round(n, prec) : Math.round(n).toString()).split('.');
93
+ const re = /(-?\d+)(\d{3})/;
94
+ while (re.test(s[0])) {
95
+ s[0] = s[0].replace(re, `$1${sep}$2`);
96
+ }
97
+
98
+ if ((s[1] || '').length < prec) {
99
+ s[1] = s[1] || '';
100
+ s[1] += '0'.repeat(prec - s[1].length);
101
+ }
102
+ return s.join(dec);
103
+ }
104
+
105
+ // 默认的姓名脱敏规则
106
+ export function formatName(name: string): string {
107
+ if (name.length === 2) {
108
+ return name.charAt(0) + '*';
109
+ } else if (name.length > 2) {
110
+ const masked = '*'.repeat(name.length - 2);
111
+ return name.charAt(0) + masked + name.charAt(name.length - 1);
112
+ } else {
113
+ return name;
114
+ }
115
+ }
116
+
117
+ /**
118
+ * @description 样式转换
119
+ * 对象转字符串,或者字符串转对象
120
+ * @param {object | string} customStyle 需要转换的目标
121
+ * @param {String} target 转换的目的,object-转为对象,string-转为字符串
122
+ * @returns {object|string}
123
+ */
124
+ export function addStyle(
125
+ customStyle: Record<string, string> | string,
126
+ target: 'object' | 'string' = 'object'
127
+ ): Record<string, string> | string {
128
+ // 字符串转字符串,对象转对象情形,直接返回
129
+ if (
130
+ test.empty(customStyle) ||
131
+ (typeof customStyle === 'object' && target === 'object') ||
132
+ (target === 'string' && typeof customStyle === 'string')
133
+ ) {
134
+ return customStyle;
135
+ }
136
+ // 字符串转对象
137
+ if (target === 'object') {
138
+ // 去除字符串样式中的两端空格
139
+ const trimmedStyle = trim(customStyle as string);
140
+ const styleArray = trimmedStyle.split(';');
141
+ const style: Record<string, string> = {};
142
+ for (let i = 0; i < styleArray.length; i++) {
143
+ if (styleArray[i]) {
144
+ const item = styleArray[i].split(':');
145
+ if (item.length === 2) {
146
+ style[trim(item[0])] = trim(item[1]);
147
+ }
148
+ }
149
+ }
150
+ return style;
151
+ }
152
+ // 对象转字符串
153
+ let string = '';
154
+ for (const i in customStyle as Record<string, string>) {
155
+ if (Object.prototype.hasOwnProperty.call(customStyle, i)) {
156
+ const key = i.replace(/([A-Z])/g, '-$1').toLowerCase();
157
+ string += `${key}:${(customStyle as Record<string, string>)[i]};`;
158
+ }
159
+ }
160
+ return trim(string);
161
+ }
162
+
163
+ /**
164
+ * 将外部传入的样式格式化为可读的 CSS 样式。
165
+ * @param {object | object[]} styles 外部传入的样式对象或数组
166
+ * @returns {string} 格式化后的 CSS 样式字符串
167
+ */
168
+ export function toStyle(...styles: Array<Record<string, any> | string | null | undefined>): string {
169
+ // 支持多参数:每个参数可以是 object 或 string,后面的参数优先级更高,会覆盖同名样式
170
+ // 如果传入单个数组(兼容旧调用),解构展开
171
+ if (styles.length === 1 && Array.isArray(styles[0])) {
172
+ styles = (styles[0] as any[]).slice();
173
+ }
174
+
175
+ // 用于合并样式的 Map,key 使用 kebab-case
176
+ const map = new Map<string, any>();
177
+
178
+ const processString = (str: string) => {
179
+ if (!str) return;
180
+ // 移除可能的末尾分号,再按分号分割
181
+ const parts = str.split(';');
182
+ for (let part of parts) {
183
+ part = part.trim();
184
+ if (!part) continue;
185
+ const idx = part.indexOf(':');
186
+ if (idx === -1) continue;
187
+ const key = trim(part.slice(0, idx));
188
+ const val = trim(part.slice(idx + 1));
189
+ if (key === '' || val === '') continue;
190
+ const k = kebabCase(key);
191
+ map.set(k, val);
192
+ }
193
+ };
194
+
195
+ const processObject = (obj: Record<string, any>) => {
196
+ if (!obj) return;
197
+ Object.keys(obj).forEach(key => {
198
+ const val = obj[key];
199
+ if (val == null || val === '') return;
200
+ const k = kebabCase(key);
201
+ map.set(k, val);
202
+ });
203
+ };
204
+
205
+ for (const item of styles) {
206
+ if (item == null || item === '') continue;
207
+ if (test.string(item)) {
208
+ processString(item as string);
209
+ } else if (test.array(item)) {
210
+ // 若传入数组作为参数,递归处理数组元素
211
+ (item as any[]).forEach(el => {
212
+ if (test.string(el)) processString(el as string);
213
+ else if (test.object(el)) processObject(el as Record<string, any>);
214
+ });
215
+ } else if (test.object(item)) {
216
+ processObject(item as Record<string, any>);
217
+ }
218
+ }
219
+
220
+ if (map.size === 0) return '';
221
+
222
+ // 按插入顺序构造样式字符串,值转成字符串
223
+ const result = Array.from(map.entries())
224
+ .map(([k, v]) => `${k}:${String(v)}`)
225
+ .join(';');
226
+
227
+ return result ? (result.endsWith(';') ? result : result + ';') : '';
228
+ }
229
+
230
+ /**
231
+ * 将驼峰命名转换为短横线命名。
232
+ * @param {string} word 待转换的词条
233
+ * @returns {string} 转换后的结果
234
+ */
235
+ export function kebabCase(word: string): string {
236
+ // 使用正则表达式匹配所有大写字母,并在前面加上短横线,然后转换为小写
237
+ const newWord: string = word
238
+ .replace(/[A-Z]/g, function (match) {
239
+ return '-' + match;
240
+ })
241
+ .toLowerCase();
242
+
243
+ return newWord;
244
+ }
245
+
246
+ export {
247
+ queryParams,
248
+ route,
249
+ timeFormat,
250
+ timeFrom,
251
+ guid,
252
+ color,
253
+ sys,
254
+ os,
255
+ type2icon,
256
+ randomArray,
257
+ deepClone,
258
+ deepMerge,
259
+ addUnit,
260
+ test,
261
+ random,
262
+ trim,
263
+ toast,
264
+ debounce,
265
+ throttle,
266
+ getRect,
267
+ getParent,
268
+ $parent,
269
+ parent,
270
+ parentData,
271
+ dispatch,
272
+ broadcast,
273
+ config,
274
+ zIndex,
275
+ mitt
276
+ };
277
+
278
+ export const $u = {
279
+ queryParams: queryParams,
280
+ route: route,
281
+ timeFormat: timeFormat,
282
+ date: timeFormat, // 另名date
283
+ timeFrom,
284
+ colorGradient: colorGradients.colorGradient,
285
+ colorToRgba: colorGradients.colorToRgba,
286
+ guid,
287
+ color,
288
+ sys,
289
+ os,
290
+ type2icon,
291
+ randomArray,
292
+ dispatch,
293
+ broadcast,
294
+ hexToRgb: colorGradients.hexToRgb,
295
+ rgbToHex: colorGradients.rgbToHex,
296
+ test,
297
+ random,
298
+ deepClone,
299
+ deepMerge,
300
+ getParent,
301
+ $parent,
302
+ parent,
303
+ parentData,
304
+ addUnit,
305
+ trim,
306
+ type: ['primary', 'success', 'error', 'warning', 'info'],
307
+ http,
308
+ toast,
309
+ config, // uView配置信息相关,比如版本号
310
+ zIndex,
311
+ debounce,
312
+ throttle,
313
+ mitt: mitt(),
314
+ getRect,
315
+ formatPrice,
316
+ formatName,
317
+ addStyle,
318
+ toStyle,
319
+ kebabCase
320
+ };
321
+
322
+ // 颜色相关方法单独导出
323
+ export const { colorGradient, colorToRgba, hexToRgb, rgbToHex } = colorGradients;
324
+ // http相关导出
325
+ export {
326
+ Request,
327
+ httpPlugin,
328
+ http,
329
+ type RequestOptions,
330
+ type RequestConfig,
331
+ type RequestInterceptor,
332
+ type RequestMeta
333
+ };
334
+
335
+ export * from './hooks';
336
+
337
+ export * from './util/logger';