@gmcb/uv-ui 0.2.27 → 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.
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/README.md +95 -141
- package/docs/api/configs/color.md +52 -0
- package/docs/api/index.md +77 -0
- package/docs/api/mixins/mpShare.md +95 -0
- package/docs/api/request/apiManage.md +88 -0
- package/docs/api/request/http.md +451 -0
- package/docs/api/utils/colorSwitch.md +78 -0
- package/docs/api/utils/debounce.md +104 -0
- package/docs/api/utils/fastUse.md +246 -0
- package/docs/api/utils/getRect.md +238 -0
- package/docs/api/utils/guid.md +41 -0
- package/docs/api/utils/index.md +55 -0
- package/docs/api/utils/intro.md +25 -0
- package/docs/api/utils/object.md +171 -0
- package/docs/api/utils/queryParams.md +68 -0
- package/docs/api/utils/random.md +23 -0
- package/docs/api/utils/randomArray.md +28 -0
- package/docs/api/utils/route.md +121 -0
- package/docs/api/utils/test.md +237 -0
- package/docs/api/utils/time.md +81 -0
- package/docs/api/utils/trim.md +24 -0
- package/docs/components/actionSheet.md +236 -0
- package/docs/components/addQQGroup.md +5 -0
- package/docs/components/album.md +91 -0
- package/docs/components/alert.md +83 -0
- package/docs/components/avatar.md +152 -0
- package/docs/components/backTop.md +181 -0
- package/docs/components/badge.md +117 -0
- package/docs/components/button.md +196 -0
- package/docs/components/calendar.md +398 -0
- package/docs/components/calendars.md +294 -0
- package/docs/components/cell.md +185 -0
- package/docs/components/checkbox.md +281 -0
- package/docs/components/circleProgress.md +5 -0
- package/docs/components/code.md +162 -0
- package/docs/components/codeInput.md +175 -0
- package/docs/components/collapse.md +250 -0
- package/docs/components/color.md +324 -0
- package/docs/components/common.md +126 -0
- package/docs/components/countDown.md +166 -0
- package/docs/components/countTo.md +140 -0
- package/docs/components/datetimePicker.md +283 -0
- package/docs/components/diff1.x.md +190 -0
- package/docs/components/divider.md +88 -0
- package/docs/components/downloadSetting.md +54 -0
- package/docs/components/dropDown.md +375 -0
- package/docs/components/empty.md +99 -0
- package/docs/components/feature.md +261 -0
- package/docs/components/form.md +736 -0
- package/docs/components/gap.md +49 -0
- package/docs/components/grid.md +225 -0
- package/docs/components/icon.md +101 -0
- package/docs/components/image.md +182 -0
- package/docs/components/index.md +110 -0
- package/docs/components/indexList.md +133 -0
- package/docs/components/input.md +250 -0
- package/docs/components/install.md +59 -0
- package/docs/components/intro.md +32 -0
- package/docs/components/keyboard.md +226 -0
- package/docs/components/layout.md +310 -0
- package/docs/components/line.md +85 -0
- package/docs/components/lineProgress.md +141 -0
- package/docs/components/link.md +89 -0
- package/docs/components/list.md +223 -0
- package/docs/components/loadMore.md +140 -0
- package/docs/components/loadingIcon.md +144 -0
- package/docs/components/loadingPage.md +92 -0
- package/docs/components/modal.md +230 -0
- package/docs/components/more.md +13 -0
- package/docs/components/navbar.md +192 -0
- package/docs/components/noNetwork.md +116 -0
- package/docs/components/noticeBar.md +131 -0
- package/docs/components/notify.md +204 -0
- package/docs/components/npmSetting.md +64 -0
- package/docs/components/numberBox.md +257 -0
- package/docs/components/nvue.md +170 -0
- package/docs/components/overlay.md +117 -0
- package/docs/components/parse.md +204 -0
- package/docs/components/pickColor.md +112 -0
- package/docs/components/picker.md +357 -0
- package/docs/components/popup.md +221 -0
- package/docs/components/problem.md +300 -0
- package/docs/components/qrcode.md +169 -0
- package/docs/components/quickstart.md +33 -0
- package/docs/components/radio.md +256 -0
- package/docs/components/rate.md +128 -0
- package/docs/components/read.md +163 -0
- package/docs/components/readMore.md +227 -0
- package/docs/components/resource.md +17 -0
- package/docs/components/scrollList.md +218 -0
- package/docs/components/search.md +160 -0
- package/docs/components/setting.md +111 -0
- package/docs/components/settingDesc.md +66 -0
- package/docs/components/skeleton.md +105 -0
- package/docs/components/skeletons.md +323 -0
- package/docs/components/slider.md +157 -0
- package/docs/components/steps.md +189 -0
- package/docs/components/sticky.md +76 -0
- package/docs/components/subsection.md +183 -0
- package/docs/components/swipeAction.md +279 -0
- package/docs/components/swiper.md +352 -0
- package/docs/components/switch.md +216 -0
- package/docs/components/tabbar.md +263 -0
- package/docs/components/table.md +5 -0
- package/docs/components/tabs.md +364 -0
- package/docs/components/tag.md +227 -0
- package/docs/components/testPic.md +20 -0
- package/docs/components/text.md +157 -0
- package/docs/components/textarea.md +121 -0
- package/docs/components/toast.md +124 -0
- package/docs/components/tooltip.md +98 -0
- package/docs/components/transition.md +404 -0
- package/docs/components/upload.md +253 -0
- package/docs/components/vtabs.md +332 -0
- package/docs/components/vueUse.md +45 -0
- package/docs/components/vuexDetail.md +103 -0
- package/docs/components/waterfall.md +651 -0
- package/docs/faq/index.md +53 -0
- package/docs/guide/codeHint.md +44 -0
- package/docs/guide/customIcon.md +168 -0
- package/docs/guide/demo.md +92 -0
- package/docs/guide/design.md +56 -0
- package/docs/guide/globalVariable.md +239 -0
- package/docs/guide/i18n.md +194 -0
- package/docs/guide/index.md +28 -0
- package/docs/guide/note.md +74 -0
- package/docs/guide/safeAreaInset.md +64 -0
- package/docs/guide/theme.md +67 -0
- package/docs/index.md +88 -0
- package/libs/config/config.js +0 -10
- package/libs/css/color.scss +15 -14
- package/package.json +7 -2
- package/theme.scss +2 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
## 对象操作
|
|
2
|
+
|
|
3
|
+
### 按需引入
|
|
4
|
+
|
|
5
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
import { deepClone, deepMerge, getProperty } from '@gmcb/uv-ui/libs/function/index.js';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
:::tip 注意
|
|
12
|
+
由于JS对象包括的范围非常广,加上ES6又有众多的新特性,很难、也没必要做到囊括所有的类型和情况,这里说的"对象",指的是普通的对象,不包括修改对象原型链,
|
|
13
|
+
或者为"Function","Promise"等的情况,请留意。
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
<br>
|
|
17
|
+
|
|
18
|
+
### 对象深度克隆
|
|
19
|
+
|
|
20
|
+
场景:
|
|
21
|
+
|
|
22
|
+
- 我们平时可能会遇到需要通过`console.log`打印一个对象,至执行打印的时刻,此对象为空,后面的逻辑中对此对象进行了修改赋值,但是我们在控制台直接看到的打印结果
|
|
23
|
+
却是修改后的值,这让人匪夷所思,虽然我们可以通过`console.log(JSON.parse(JSON.stringify(object)))`的形式处理,但是需要写这长长的一串,难免让人心生抵触。
|
|
24
|
+
|
|
25
|
+
- 当我们将一个对象(变量A)赋值给另一个变量(变量B)时,修改变量B,因为对象引用的特性,导致A也同时被修改,所以有时候我们需要将A克隆给B,这样修改B的时候,就不会
|
|
26
|
+
导致A也被修改。
|
|
27
|
+
|
|
28
|
+
### deepClone(object = {})
|
|
29
|
+
|
|
30
|
+
- `object` <Object\> 需要被克隆的对象
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
let a = {
|
|
34
|
+
name: 'mary'
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// 直接赋值,为对象引用,即修改b等于修改a,因为a和b为同一个值
|
|
38
|
+
let b = a;
|
|
39
|
+
|
|
40
|
+
b.name = 'juli';
|
|
41
|
+
console.log(b); // 结果为 {name: 'juli'}
|
|
42
|
+
console.log(a); // 结果为 {name: 'juli'}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// 深度克隆
|
|
46
|
+
let b = uni.$uv.deepClone(a);
|
|
47
|
+
|
|
48
|
+
b.name = 'juli';
|
|
49
|
+
console.log(b); // 结果为 {name: 'juli'}
|
|
50
|
+
console.log(a); // 结果为 {name: 'mary'}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### 对象深度合并
|
|
55
|
+
|
|
56
|
+
在ES6中,我们可以很方便的使用`Object.assign`进行对象合并,但这只是浅层的合并,如果对象的属性为数组或者对象的时候,会导致属性内部的值丢失。
|
|
57
|
+
|
|
58
|
+
**注意:** 此处合并不同于`Object.assign`,因为`Object.assign(a, b)`会修改`a`的值为最终的结果(这往往不是我们所期望的),但是`deepMerge(a, b)`并不会修改`a`的值。
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
### deepMerge(target = {}, source = {})
|
|
62
|
+
|
|
63
|
+
- `target` <Object\> 目标对象
|
|
64
|
+
- `source` <Object\> 源对象
|
|
65
|
+
|
|
66
|
+
`Object.assign`浅合并示例:
|
|
67
|
+
|
|
68
|
+
```js
|
|
69
|
+
let a = {
|
|
70
|
+
info: {
|
|
71
|
+
name: 'mary'
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
let b = {
|
|
76
|
+
info: {
|
|
77
|
+
age: '22'
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// 使用Object.assign进行合并,注意此时a被修改了
|
|
82
|
+
let c = Object.assign(a, b);
|
|
83
|
+
|
|
84
|
+
// 我们期望的结果为:
|
|
85
|
+
c = {
|
|
86
|
+
info: {
|
|
87
|
+
name: 'mary',
|
|
88
|
+
age: '22'
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// 事实上,我们得到的结果却为:
|
|
93
|
+
c = {
|
|
94
|
+
info: {
|
|
95
|
+
age: '22'
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
深度合并示例:
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
let a = {
|
|
104
|
+
info: {
|
|
105
|
+
name: 'mary'
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
let b = {
|
|
110
|
+
info: {
|
|
111
|
+
age: '22'
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
let c = uni.$uv.deepMerge(a, b);
|
|
116
|
+
|
|
117
|
+
// c为我们期望的结果
|
|
118
|
+
c = {
|
|
119
|
+
info: {
|
|
120
|
+
age: '22',
|
|
121
|
+
name: 'mary'
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
### 链式读取对象属性
|
|
128
|
+
|
|
129
|
+
读取属性时,我们需要从一个`对象`中进行操作,否则就会引起报错,因此uv-ui提供了一个链式属性的读取方式。
|
|
130
|
+
当然,我们也可以使用`可选链操作符`的形式去获取;如果需要兼容模板编译限制,推荐使用本工具方法统一处理。
|
|
131
|
+
|
|
132
|
+
### getProperty(object, key)
|
|
133
|
+
|
|
134
|
+
```js
|
|
135
|
+
// 假设有如下一个对象
|
|
136
|
+
const object = {
|
|
137
|
+
userInfo: {
|
|
138
|
+
address: {
|
|
139
|
+
province: '深圳'
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// 可以通过如下写法获取province属性
|
|
145
|
+
uni.$uv.getProperty(object, 'userInfo.address.province')
|
|
146
|
+
|
|
147
|
+
// 可选链操作符形式
|
|
148
|
+
console.log(object?.userInfo?.address?.province)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
### 链式设置对象属性
|
|
153
|
+
|
|
154
|
+
设置属性时,我们需要从一个`对象`中进行操作,否则就会引起报错,因此uv-ui提供了一个链式属性的设置方式。
|
|
155
|
+
|
|
156
|
+
```js
|
|
157
|
+
// 设置一个空对象
|
|
158
|
+
const object = {}
|
|
159
|
+
|
|
160
|
+
// 链式设置属性
|
|
161
|
+
uni.$uv.setProperty(object, 'userInfo.address.province')
|
|
162
|
+
|
|
163
|
+
// object将会变成如下对象:
|
|
164
|
+
{
|
|
165
|
+
userInfo: {
|
|
166
|
+
address: {
|
|
167
|
+
province: '深圳'
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
## 对象转URL参数
|
|
2
|
+
|
|
3
|
+
该方法,可以将一个对象形式参数转换成`get`传参所需参数形式,如把`{name: 'uvui', age: 1}`转换成`?name=uvui&age=1`
|
|
4
|
+
用途:可以用于`uni.navigateTo`接口传参等场景,无需自己手动拼接`URL`参数
|
|
5
|
+
|
|
6
|
+
### 按需引入
|
|
7
|
+
|
|
8
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
// 引入
|
|
12
|
+
import { queryParams } from '@gmcb/uv-ui/libs/function/index.js';
|
|
13
|
+
// 调用
|
|
14
|
+
queryParams(...);
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### queryParams(data, isPrefix = true, arrayFormat = 'brackets')
|
|
18
|
+
|
|
19
|
+
- `data` <Object\> 对象值,如`{name: 'uvui', age: 1}`
|
|
20
|
+
- `isPrefix` <Boolean\> 是否在返回的字符串前加上"?",默认为`true`
|
|
21
|
+
- `arrayFormat` <Boolean\> 属性为数组的情况下的处理办法,默认为`brackets`,见后面[arrayFormat参数说明](/api/utils/queryParams.html#arrayformat参数说明)
|
|
22
|
+
|
|
23
|
+
```vue
|
|
24
|
+
<script setup>
|
|
25
|
+
import { onLoad } from '@dcloudio/uni-app';
|
|
26
|
+
|
|
27
|
+
const data = {
|
|
28
|
+
name: 'uvui',
|
|
29
|
+
age: 1
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
onLoad(() => {
|
|
33
|
+
console.log(uni.$uv.queryParams(data)); // 结果为:?name=uvui&age=1
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
</script>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
#### arrayFormat参数说明
|
|
40
|
+
|
|
41
|
+
如果您传入的`data`对象内部某些属性值为数组的情况下,您可能需要留意这个参数的配置:
|
|
42
|
+
该参数可选值有4个:`indices`,`brackets`,`repeat`,`comma`,具体效果请见下方的注释说明
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<script setup>
|
|
46
|
+
import { onLoad } from '@dcloudio/uni-app';
|
|
47
|
+
|
|
48
|
+
const data = {
|
|
49
|
+
name: '冷月夜',
|
|
50
|
+
fruits: ['apple', 'banana', 'orange']
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
onLoad(() => {
|
|
54
|
+
uni.$uv.queryParams(data, true, 'indices');
|
|
55
|
+
// 结果为:?name=冷月夜&fruits[0]=apple&fruits[1]=banana&fruits[2]=orange
|
|
56
|
+
|
|
57
|
+
uni.$uv.queryParams(data, true, 'brackets');
|
|
58
|
+
// 结果为:?name=冷月夜&fruits[]=apple&fruits[]=banana&fruits[]=orange
|
|
59
|
+
|
|
60
|
+
uni.$uv.queryParams(data, true, 'repeat');
|
|
61
|
+
// 结果为:?name=冷月夜&fruits=apple&fruits=banana&fruits=orange
|
|
62
|
+
|
|
63
|
+
uni.$uv.queryParams(data, true, 'comma');
|
|
64
|
+
// 结果为:?name=冷月夜&fruits=apple,banana,orange
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
</script>
|
|
68
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## 随机数值
|
|
2
|
+
|
|
3
|
+
### 按需引入
|
|
4
|
+
|
|
5
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
// 引入,实例中未写完,自己根据需求写
|
|
9
|
+
import { random } from '@gmcb/uv-ui/libs/function/test.js';
|
|
10
|
+
// 调用
|
|
11
|
+
random(1,100);
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### random(min, max)
|
|
15
|
+
|
|
16
|
+
该方法可以返回在 `min` 和 `max` 之间的数值,要求 `min` 和 `max` 都为数值,且 `max` 大于或等于 `min`,否则返回0.
|
|
17
|
+
|
|
18
|
+
- `min` <Number\> 最小值,最小值可以等于该值
|
|
19
|
+
- `max` <Number\> 最大值,最大值可以等于该值
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
console.log(uni.$uv.random(1, 3));
|
|
23
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## randomArray 数组乱序
|
|
2
|
+
|
|
3
|
+
### 按需引入
|
|
4
|
+
|
|
5
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
// 引入
|
|
9
|
+
import { randomArray } from '@gmcb/uv-ui/libs/function/index.js';
|
|
10
|
+
// 调用
|
|
11
|
+
randomArray(...);
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### randomArray(Array)
|
|
15
|
+
|
|
16
|
+
该函数可以打乱一维数组元素的顺序,这是随机过程:
|
|
17
|
+
|
|
18
|
+
- `array` <Array\> 一维数组
|
|
19
|
+
|
|
20
|
+
```vue
|
|
21
|
+
<script setup>
|
|
22
|
+
import { onLoad } from "@dcloudio/uni-app";
|
|
23
|
+
onLoad(() => {
|
|
24
|
+
console.log(uni.$uv.randomArray([1, 2, 3, 4, 5, 6, 7, 8, 9]));
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
</script>
|
|
28
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
## route 路由跳转
|
|
2
|
+
|
|
3
|
+
### 按需引入
|
|
4
|
+
|
|
5
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
// 引入
|
|
9
|
+
import route from '@gmcb/uv-ui/libs/utils/route.js';
|
|
10
|
+
// 调用
|
|
11
|
+
route(...);
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### route(OBJECT)
|
|
15
|
+
|
|
16
|
+
路由跳转方法,内部是对uni多个路由跳转api的封装,更方便使用。支持路由拦截等多功能。
|
|
17
|
+
|
|
18
|
+
**OBJECT参数说明:**
|
|
19
|
+
|
|
20
|
+
| 参数名 | 类型 | 默认值 | 是否必填 | 说明 |
|
|
21
|
+
| :- | :- | :- | :- | :- |
|
|
22
|
+
| type | String | navigateTo | false | 路由跳转方式,参考下面[Type Options](/api/utils/route.html#type-options) |
|
|
23
|
+
| url | String | - | false | `type`为`navigateBack`时不填,其他必填 |
|
|
24
|
+
| delta | Number | 1 | false | `type`为`navigateBack`时用到,表示返回的页面数 |
|
|
25
|
+
| params | Object | - | false | 传递的对象形式的参数,如 { name: 'lisa', age: 18 } |
|
|
26
|
+
| animationType | String | pop-in | false | 只在APP生效,详见[窗口动画](https://uniapp.dcloud.io/api/router?id=animation) |
|
|
27
|
+
| animationDuration | Number | 300 | false | 动画持续时间,单位ms |
|
|
28
|
+
| events | Object | - | false | 页面间通信接口,用于监听被打开页面发送到当前页面的数据。hbuilderX 2.8.9+ 开始支持。详情参考[uni.navigateTo](https://uniapp.dcloud.net.cn/api/router.html#navigateto) |
|
|
29
|
+
|
|
30
|
+
#### Type Options
|
|
31
|
+
|
|
32
|
+
| 属性名 | 说明 |
|
|
33
|
+
|:-|:-|
|
|
34
|
+
| `navigateTo` 或 `to` | 同 uni.navigateTo() |
|
|
35
|
+
| `redirect` 或 `redirectTo` | 同 uni.redirectTo() |
|
|
36
|
+
| `switchTab` 或 `tab` | 同 uni.switchTab() |
|
|
37
|
+
| `reLaunch` 或 `launch` | 同 uni.reLaunch() |
|
|
38
|
+
| `navigateBack`或`back` | 同 uni.navigateBack() |
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### 基本用法
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
uni.$uv.route({
|
|
45
|
+
url: '/subpages/demo/demo',
|
|
46
|
+
params: {
|
|
47
|
+
name: 'uvui'
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 路由拦截
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
uni.$uv.route({
|
|
56
|
+
url: '/subpages/demo/demo',
|
|
57
|
+
intercept(params, next) {
|
|
58
|
+
console.log(params, next)
|
|
59
|
+
uni.showLoading({
|
|
60
|
+
title: '等待中...'
|
|
61
|
+
})
|
|
62
|
+
// 模拟处理等待
|
|
63
|
+
setTimeout(() => {
|
|
64
|
+
uni.hideLoading();
|
|
65
|
+
next(true);
|
|
66
|
+
}, 1000)
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### navigateTo监听器
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
uni.$uv.route({
|
|
75
|
+
url: '/subpages/demo/demo',
|
|
76
|
+
events: {
|
|
77
|
+
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
|
|
78
|
+
acceptDataFromOpenedPage(data) {
|
|
79
|
+
console.log(data)
|
|
80
|
+
},
|
|
81
|
+
someEvent(data) {
|
|
82
|
+
console.log(data)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 简写用法
|
|
89
|
+
|
|
90
|
+
为了方便简写和调用,可以直接传递一个`url`地址替代`Object`,
|
|
91
|
+
|
|
92
|
+
注意:只能执行`uni.navigateTo`类型的地址,**不支持跳转到Tabbar页面**,如果有参数需要携带,以对象形式写到方法的第二个参数中。
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
// 无参数
|
|
96
|
+
uni.$uv.route('/subpages/demo/demo');
|
|
97
|
+
|
|
98
|
+
// 带参数
|
|
99
|
+
uni.$uv.route('/subpages/demo/demo', {
|
|
100
|
+
name: 'uvui',
|
|
101
|
+
age: 1
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
<style scoped>
|
|
106
|
+
h3[id=route-object] + p + p + table thead tr th:nth-child(5){
|
|
107
|
+
width: 45%;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
h3[id=route-object] + p + p + table thead tr th:nth-child(2){
|
|
111
|
+
width: 12%;
|
|
112
|
+
}
|
|
113
|
+
h4[id=type-options] + table {
|
|
114
|
+
width: 40%;
|
|
115
|
+
}
|
|
116
|
+
h4[id=type-options] + table thead tr th:nth-child(1),
|
|
117
|
+
h4[id=type-options] + table thead tr th:nth-child(2)
|
|
118
|
+
{
|
|
119
|
+
width: 50%;
|
|
120
|
+
}
|
|
121
|
+
</style>
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
## Test 规则校验
|
|
2
|
+
|
|
3
|
+
uv-ui内置了一些校验规则,如是否手机号,邮箱号,URL等
|
|
4
|
+
这些规则方法,挂载在`$uv.test`下面,如验证是否手机号:`$uv.test.mobile('13888889999')`,如果验证通过,返回`true`,否则返回`false`
|
|
5
|
+
|
|
6
|
+
### 按需引入
|
|
7
|
+
|
|
8
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
// 引入,实例中未写完,自己根据需求写
|
|
12
|
+
import { code, array, jsonString, object, email } from '@gmcb/uv-ui/libs/function/test.js';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### code(value, len = 6)
|
|
16
|
+
|
|
17
|
+
校验是否验证码(要求为数字),返回`true`或者`false`。
|
|
18
|
+
|
|
19
|
+
- `value` <String\> 验证码字符串
|
|
20
|
+
- `len` <Number\> 验证码长度,默认为6
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
console.log(uni.$uv.test.code('4567', 4));
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### array(array)
|
|
27
|
+
|
|
28
|
+
校验是否数组,返回`true`或者`false`。
|
|
29
|
+
|
|
30
|
+
- `array` <Array\> 数组
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
console.log(uni.$uv.test.array([1, 2, 3]));
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### jsonString(json)
|
|
37
|
+
|
|
38
|
+
校验是否是Json字符串,返回`true`或者`false`。
|
|
39
|
+
|
|
40
|
+
- `json` <Json\> Json字符串
|
|
41
|
+
|
|
42
|
+
注意:请留意json字符串的要求:
|
|
43
|
+
1. 整体为一个字符串
|
|
44
|
+
2. 字符串对象内的属性需要用`""`双引号包含
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
console.log(uni.$uv.test.jsonString('{"a": 1}'));
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### object(object)
|
|
51
|
+
|
|
52
|
+
校验是否是是对象,返回`true`或者`false`。
|
|
53
|
+
|
|
54
|
+
- `object` <Object\> 对象
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
console.log(uni.$uv.test.object({a: 1}));
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### email(email)
|
|
61
|
+
|
|
62
|
+
校验是否邮箱号,返回`true`或者`false`。
|
|
63
|
+
|
|
64
|
+
- `email` <String\> 字符串
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
console.log(uni.$uv.test.email('123465798@gmail.com'));
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### mobile(mobile)
|
|
71
|
+
|
|
72
|
+
校验是否手机号,返回`true`或者`false`。
|
|
73
|
+
|
|
74
|
+
- `mobile` <String\> 字符串
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
console.log(uni.$uv.test.mobile('13845678900'));
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### url(url)
|
|
81
|
+
|
|
82
|
+
校验是否URL链接,返回`true`或者`false`。
|
|
83
|
+
|
|
84
|
+
- `url` <String\> 字符串
|
|
85
|
+
|
|
86
|
+
```js
|
|
87
|
+
console.log(uni.$uv.test.url('http://www.uv-uiui.com'));
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### empty(value)
|
|
91
|
+
|
|
92
|
+
校验值是否为空,返回`true`或者`false`。
|
|
93
|
+
此方法等同于`empty`名称,但是为了更语义化,推荐用`empty`名称。
|
|
94
|
+
|
|
95
|
+
这里指的“空”,包含如下几种情况:
|
|
96
|
+
- 值为`undefined`(一种类型),非字符串`"undefined"`
|
|
97
|
+
- 字符串长度为0,也即空字符串
|
|
98
|
+
- 值为`false`(布尔类型),非字符串`"false"`
|
|
99
|
+
- 值为数值`0`(非字符串`"0"`),或者`NaN`
|
|
100
|
+
- 值为`null`,空对象`{}`,或者长度为0的数组
|
|
101
|
+
|
|
102
|
+
- `value` <any\> 字符串
|
|
103
|
+
|
|
104
|
+
```js
|
|
105
|
+
console.log(uni.$uv.test.empty(''));
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### date(date)
|
|
109
|
+
|
|
110
|
+
效验是否普通日期
|
|
111
|
+
|
|
112
|
+
验证一个字符串是否日期,返回`true`或者`false`,如下行为正确:
|
|
113
|
+
- `2020-02-10`、`2020-02-10 08:32:10`、`2020/02/10 3:10`、`2020/02/10 03:10`、`2020/02-10 3:10`
|
|
114
|
+
|
|
115
|
+
如下为错误:
|
|
116
|
+
- `2020年02月10日`、`2020-02-10 25:32`
|
|
117
|
+
|
|
118
|
+
总的来说,年月日之间可以用"/"或者"-"分隔(不能用中文分隔),时分秒之间用":"分隔,数值不能超出范围,如月份不能为13,则检验成功,否则失败。
|
|
119
|
+
|
|
120
|
+
- `date` <String\> 日期字符串
|
|
121
|
+
|
|
122
|
+
```js
|
|
123
|
+
console.log(uni.$uv.test.date('2020-02-10 08:32:10'));
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### number(number)
|
|
127
|
+
|
|
128
|
+
效验是否十进制数值,整数,小数,负数,带千分位数(2,359.08)等可以检验通过,返回`true`或者`false`。
|
|
129
|
+
|
|
130
|
+
- `number` <String\> 数字
|
|
131
|
+
|
|
132
|
+
```js
|
|
133
|
+
console.log(uni.$uv.test.number('2020'));
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### digits(number)
|
|
137
|
+
|
|
138
|
+
效验是否整数,所有字符都在`0-9`之间,才校验通过,结果返回`true`或者`false`。
|
|
139
|
+
|
|
140
|
+
- `number` <String\> 数字
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
console.log(uni.$uv.test.digits('2020'));
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### idCard(idCard)
|
|
147
|
+
|
|
148
|
+
效验是否身份证号,包括尾数为"X"的类型,可以校验通过,结果返回`true`或者`false`。
|
|
149
|
+
|
|
150
|
+
- `idCard` <String\> 身份证号
|
|
151
|
+
|
|
152
|
+
```js
|
|
153
|
+
console.log(uni.$uv.test.idCard('110101199003070134'));
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### carNo(carNo)
|
|
157
|
+
|
|
158
|
+
校验旧车牌号和新能源类型车牌号,结果返回`true`或者`false`。
|
|
159
|
+
|
|
160
|
+
- `carNo` <String\> 车牌号
|
|
161
|
+
|
|
162
|
+
```js
|
|
163
|
+
console.log(uni.$uv.test.carNo('京A88888'));
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### amount(amount)
|
|
167
|
+
|
|
168
|
+
效验是否金额,最多两位小数,可以带千分位,结果返回`true`或者`false`。
|
|
169
|
+
|
|
170
|
+
- `amount` <String\> 金额字符串
|
|
171
|
+
|
|
172
|
+
```js
|
|
173
|
+
console.log(uni.$uv.test.amount('3,233.08'));
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### chinese(zh)
|
|
177
|
+
|
|
178
|
+
效验是否汉字,可以为单个汉字,或者汉字组成的字符串,结果返回`true`或者`false`。
|
|
179
|
+
|
|
180
|
+
- `zh` <String\> 中文字符串
|
|
181
|
+
|
|
182
|
+
```js
|
|
183
|
+
console.log(uni.$uv.test.chinese('更上一层楼'));
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### letter(en)
|
|
187
|
+
|
|
188
|
+
效验是否字母,只能为"a-z"或者"A-Z"之间的字符,结果返回`true`或者`false`。
|
|
189
|
+
|
|
190
|
+
- `en` <String\> 字母串
|
|
191
|
+
|
|
192
|
+
```js
|
|
193
|
+
console.log(uni.$uv.test.letter('uv-ui'));
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### enOrNum(str)
|
|
197
|
+
|
|
198
|
+
效验是否字母或者数字,只能是字母或者数字,结果返回`true`或者`false`。
|
|
199
|
+
|
|
200
|
+
- `str` <String\> 字母或者数字字符串
|
|
201
|
+
|
|
202
|
+
```js
|
|
203
|
+
console.log(uni.$uv.test.enOrNum('uv-ui'));
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### contains(str, subStr)
|
|
207
|
+
|
|
208
|
+
效验是否包含某个值,字符串中是否包含某一个子字符串,区分大小写,结果返回`true`或者`false`。
|
|
209
|
+
|
|
210
|
+
- `str` <String\> 字符串
|
|
211
|
+
- `subStr` <String\> 子字符串
|
|
212
|
+
|
|
213
|
+
```js
|
|
214
|
+
console.log(uni.$uv.test.contains('uv-ui', 'View'));
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### range(number, range)
|
|
218
|
+
|
|
219
|
+
效验数值是否在某个范围内,如30在"29-35"这个范围内,不在"25-28"这个范围内,结果返回`true`或者`false`。
|
|
220
|
+
|
|
221
|
+
- `number` <Number\> 数值
|
|
222
|
+
- `range` <Array\> 如"[25-35]"
|
|
223
|
+
|
|
224
|
+
```js
|
|
225
|
+
console.log(uni.$uv.test.range(35, [30, 34]));
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### rangeLength(str, range)
|
|
229
|
+
|
|
230
|
+
效验字符串长度是否在某个范围内,如"abc"长度为3,范围在"2-5"这个区间,结果返回`true`或者`false`。
|
|
231
|
+
|
|
232
|
+
- `str` <String\> 数值
|
|
233
|
+
- `range` <Array\> 如"[25, 35]"
|
|
234
|
+
|
|
235
|
+
```js
|
|
236
|
+
console.log(uni.$uv.test.rangeLength('abc', [3, 10]));
|
|
237
|
+
```
|