Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
db332865
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3216
Star
106
Fork
815
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
94
列表
看板
标记
里程碑
合并请求
70
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
94
Issue
94
列表
看板
标记
里程碑
合并请求
70
合并请求
70
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
db332865
编写于
5月 09, 2022
作者:
JiaRongPing
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://gitee.com/dcloud/unidocs-zh
上级
c009aa03
fc495dbb
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
836 addition
and
76 deletion
+836
-76
docs/.vuepress/theme/components/AlgoliaSearchBox.vue
docs/.vuepress/theme/components/AlgoliaSearchBox.vue
+2
-2
docs/.vuepress/theme/components/Navbar.vue
docs/.vuepress/theme/components/Navbar.vue
+31
-6
docs/.vuepress/theme/components/SidebarLinks.vue
docs/.vuepress/theme/components/SidebarLinks.vue
+106
-0
docs/.vuepress/theme/config/navbar.js
docs/.vuepress/theme/config/navbar.js
+1
-0
docs/.vuepress/theme/styles/navbar.styl
docs/.vuepress/theme/styles/navbar.styl
+15
-0
docs/case.md
docs/case.md
+54
-4
docs/component/_sidebar.md
docs/component/_sidebar.md
+3
-0
docs/component/uniui/quickstart.md
docs/component/uniui/quickstart.md
+0
-1
docs/component/uniui/uni-breadcrumb.md
docs/component/uniui/uni-breadcrumb.md
+128
-0
docs/component/uniui/uni-data-select.md
docs/component/uniui/uni-data-select.md
+210
-0
docs/component/uniui/uni-tooltip.md
docs/component/uniui/uni-tooltip.md
+82
-0
docs/plugin/sell.md
docs/plugin/sell.md
+15
-4
docs/select.md
docs/select.md
+14
-11
docs/uni-stat-v2.md
docs/uni-stat-v2.md
+2
-0
docs/uniCloud/cf-functions.md
docs/uniCloud/cf-functions.md
+8
-6
docs/uniCloud/cloud-obj.md
docs/uniCloud/cloud-obj.md
+5
-1
docs/uniCloud/faq.md
docs/uniCloud/faq.md
+1
-1
docs/uniCloud/uni-id.md
docs/uniCloud/uni-id.md
+159
-40
未找到文件。
docs/.vuepress/theme/components/AlgoliaSearchBox.vue
浏览文件 @
db332865
...
...
@@ -61,11 +61,11 @@
flex-direction column
justify-content center
#docsearch span
@media (min-width:
$MQMobile
)
@media (min-width:
1200px
)
&
display flex
@media (max-width:
$MQMobile
)
@media (max-width:
1200px
)
:root
--docsearch-spacing 10px
--docsearch-footer-height 40px
...
...
docs/.vuepress/theme/components/Navbar.vue
浏览文件 @
db332865
...
...
@@ -30,9 +30,7 @@
<div
class=
"links"
:style=
"linksWrapMaxWidth ? {
'max-width': linksWrapMaxWidth + 'px'
} : {}"
:style=
"SearchBoxStyle"
>
<!-- <a class="switch-version" href="javascript:void(0)">回到旧版</a> -->
<DcloudSearchPage
v-if=
"isAlgoliaSearch"
ref=
"dcloudSearchPage"
:options=
"algolia"
/>
...
...
@@ -42,6 +40,14 @@
</div>
<div
class=
"sub-navbar"
>
<DropdownLink
class=
"custom-main-navbar can-hide"
v-if=
"showSubNavBar && fixedNavbar"
:item=
"{
text: customNavBarKeys[navConfig.userNavIndex],
items: customNavBar
}"
/>
<NavLinks
class=
"can-hide"
/>
<div
class=
"mobile-sub-navbar"
>
<div
class=
"subnavbar__item"
@
click=
"$emit('toggle-sidebar')"
>
...
...
@@ -61,6 +67,7 @@ import MainNavbarLink from './MainNavbarLink.vue';
import
NavbarLogo
from
'
./NavbarLogo.vue
'
;
import
DcloudSearchPage
from
'
./DcloudSearchPage
'
;
import
navInject
from
'
../mixin/navInject
'
;
import
DropdownLink
from
'
@theme/components/DropdownLink.vue
'
import
{
forbidScroll
,
os
}
from
'
../util
'
;
export
default
{
...
...
@@ -75,14 +82,16 @@ export default {
SearchBox
,
AlgoliaSearchBox
,
NavbarLogo
,
DcloudSearchPage
DcloudSearchPage
,
DropdownLink
},
data
()
{
return
{
linksWrapMaxWidth
:
null
,
showMobilePanel
:
false
,
fixedNavbar
:
false
fixedNavbar
:
false
,
SearchBoxTop
:
0
}
},
...
...
@@ -93,6 +102,18 @@ export default {
isAlgoliaSearch
()
{
return
this
.
algolia
&&
this
.
algolia
.
apiKey
&&
this
.
algolia
.
indexName
},
SearchBoxStyle
()
{
const
initStyle
=
{
top
:
`
${
this
.
SearchBoxTop
}
px`
,
zIndex
:
100
};
return
this
.
linksWrapMaxWidth
?
Object
.
assign
({},
initStyle
,
{
'
max-width
'
:
this
.
linksWrapMaxWidth
+
'
px
'
,
})
:
initStyle
;
}
},
...
...
@@ -134,6 +155,7 @@ export default {
this
.
addWindowScroll
()
}
else
{
this
.
fixedNavbar
=
true
this
.
SearchBoxTop
=
0
}
},
addWindowScroll
()
{
...
...
@@ -148,7 +170,7 @@ export default {
this
.
vuepressToc
&&
this
.
vuepressToc
.
removeAttribute
(
'
style
'
)
this
.
navbar
&&
this
.
navbar
.
removeAttribute
(
'
style
'
)
if
(
this
.
pageContainer
)
{
this
.
pageContainer
.
style
.
marginTop
=
this
.
showSubNavBar
?
'
auto
'
:
`
${
this
.
navbarHeight
}
px`
this
.
pageContainer
.
style
.
marginTop
=
this
.
showSubNavBar
||
!
os
.
pc
?
'
auto
'
:
`
${
this
.
navbarHeight
}
px`
}
},
onWindowScroll
()
{
...
...
@@ -165,6 +187,7 @@ export default {
if
(
!
this
.
fixedNavbar
)
{
this
.
fixedNavbar
=
true
this
.
navbar
.
style
.
top
=
`-
${
this
.
mainNavBarHeight
}
px`
this
.
SearchBoxTop
=
this
.
mainNavBarHeight
+
(
this
.
subNavBarHeight
-
this
.
mainNavBarHeight
)
/
2
this
.
$nextTick
(()
=>
{
this
.
pageContainer
&&
(
this
.
pageContainer
.
style
.
marginTop
=
`
${
this
.
navbarHeight
}
px`
)
})
...
...
@@ -173,6 +196,7 @@ export default {
if
(
this
.
fixedNavbar
)
{
this
.
fixedNavbar
=
false
this
.
pageContainer
&&
(
this
.
pageContainer
.
style
.
marginTop
=
'
auto
'
)
this
.
SearchBoxTop
=
0
}
}
},
...
...
@@ -264,6 +288,7 @@ $navbar-horizontal-padding = 1.5rem
display none !important
.links
padding-left 0rem // 1.5rem
top 0 !important
.site-name
width calc(100vw - 9.4rem)
overflow hidden
...
...
docs/.vuepress/theme/components/SidebarLinks.vue
0 → 100644
浏览文件 @
db332865
<
template
>
<ul
v-if=
"items.length"
class=
"sidebar-links"
>
<li
v-for=
"(item, i) in items"
:key=
"i"
>
<SidebarGroup
v-if=
"item.type === 'group'"
:item=
"item"
:open=
"i === openGroupIndex"
:collapsable=
"item.collapsable || item.collapsible"
:depth=
"depth"
@
toggle=
"toggleGroup(i)"
/>
<SidebarLink
v-else
:sidebar-depth=
"sidebarDepth"
:item=
"item"
/>
</li>
</ul>
</
template
>
<
script
>
import
SidebarGroup
from
'
@theme/components/SidebarGroup.vue
'
import
SidebarLink
from
'
@theme/components/SidebarLink.vue
'
import
{
isActive
,
debounce
}
from
'
../util
'
export
default
{
name
:
'
SidebarLinks
'
,
components
:
{
SidebarGroup
,
SidebarLink
},
props
:
[
'
items
'
,
'
depth
'
,
// depth of current sidebar links
'
sidebarDepth
'
,
// depth of headers to be extracted
'
initialOpenGroupIndex
'
],
data
()
{
return
{
openGroupIndex
:
this
.
initialOpenGroupIndex
||
0
}
},
watch
:
{
'
$route
'
:
debounce
(
function
()
{
this
.
refreshIndex
()
})
},
created
()
{
this
.
refreshIndex
()
},
methods
:
{
refreshIndex
()
{
const
index
=
resolveOpenGroupIndex
(
this
.
$route
,
this
.
items
)
if
(
index
>
-
1
)
{
this
.
openGroupIndex
=
index
}
},
toggleGroup
(
index
)
{
this
.
openGroupIndex
=
index
===
this
.
openGroupIndex
?
-
1
:
index
},
isActive
(
page
)
{
return
isActive
(
this
.
$route
,
page
.
regularPath
)
}
}
}
function
resolveOpenGroupIndex
(
route
,
items
)
{
for
(
let
i
=
0
;
i
<
items
.
length
;
i
++
)
{
const
item
=
items
[
i
]
if
(
descendantIsActive
(
route
,
item
))
{
return
i
}
}
return
-
1
}
function
descendantIsActive
(
route
,
item
)
{
if
(
item
.
type
===
'
group
'
)
{
const
childIsActive
=
item
.
path
&&
isActive
(
route
,
item
.
path
)
const
grandChildIsActive
=
item
.
children
.
some
(
child
=>
{
if
(
child
.
type
===
'
group
'
)
{
return
descendantIsActive
(
route
,
child
)
}
else
{
return
child
.
type
===
'
page
'
&&
isActive
(
route
,
child
.
path
)
}
})
return
childIsActive
||
grandChildIsActive
}
return
false
}
</
script
>
docs/.vuepress/theme/config/navbar.js
浏览文件 @
db332865
...
...
@@ -10,6 +10,7 @@
export
const
navbar
=
[
{
text
:
'
uni-app
'
,
link
:
'
/
'
,
items
:
[
{
text
:
'
介绍
'
,
...
...
docs/.vuepress/theme/styles/navbar.styl
浏览文件 @
db332865
...
...
@@ -20,6 +20,7 @@ $navbar-logo-height = $navbar-main-navbar-height - 2rem
&
display none
.sub-navbar
position relative
line-height $navbar-sub-navbar-height
border-top-width 1px
.mobile-main-navbar
...
...
@@ -76,6 +77,20 @@ $navbar-logo-height = $navbar-main-navbar-height - 2rem
color inherit
&:hover
color $accentColor
.custom-main-navbar
position absolute
height 30px
top calc(50% - 15px)
left 2rem
@media (max-width: 1200px)
display none
a
color inherit
.nav-dropdown
right auto
left 0
z-index 12
@media (max-width: $MQMobile)
$navbar-a-color = #222;
...
...
docs/case.md
浏览文件 @
db332865
...
...
@@ -2,10 +2,6 @@ DCloud有**900万**开发者,[uni统计](https://tongji.dcloud.net.cn/)手机
欢迎知名开发商
[
提交案例
](
https://github.com/dcloudio/uni-app/issues/6
)
或接入
[
uni统计
](
https://tongji.dcloud.net.cn/
)
。
### 新冠抗疫专区案例
uni-app助力数百家单位快速上线
**抗疫系统**
,开源众多项目,详见专题:
[
xinguan2020.dcloud.net.cn
](
https://dcloud.io/ncp.html
)
### 官方示例
<a
href=
"//m3w.cn/uniapp"
target=
"_blank"
class=
"clear-style"
><b>
Hello uni-app:
</b></a>
演示uni-app框架的组件、接口、模板。本项目源码可在HBuilderX中新建项目获得,也可从
[
github
](
https://github.com/dcloudio/hello-uniapp
)
上获取。
...
...
@@ -41,6 +37,60 @@ uni-app助力数百家单位快速上线**抗疫系统**,开源众多项目,
### 第三方开发者案例
#### 新冠抗疫专区案例
uni-app助力数百家单位快速上线
**抗疫系统**
,开源众多项目。
-
首都疫苗服务
[
App
](
https://a.app.qq.com/o/simple.jsp?pkgname=io.dcloud.H5AC4580F
)
-
广东 粤核酸 微信小程序
-
广东 粤健通 微信小程序
-
广州市 穗康生活 微信小程序
-
海南 海易办 微信小程序
-
陕西一码通 微信小程序
-
健康陕西公众服务 微信小程序
-
健康西安公众服务 微信小程序
-
河南疾控 微信小程序
-
平顶山 鹰城官微 微信小程序
-
开封市 汴易检 微信小程序
-
三门峡市 灵宝一码通 微信小程序
-
湖北健康码 微信小程序
-
山西 晋快检 微信小程序
-
云南省居民电子健康卡 微信小程序
-
西双版纳 平安版纳 微信小程序
-
黑龙江 健康龙江服务平台 微信小程序
-
黑龙江 密山疫情防控 微信小程序
-
贵州健康码 微信小程序
-
贵州 黔康码 微信小程序
-
河北新冠疫苗预约 懂苗服务 微信小程序
-
蒙速办 微信小程序
-
蒙健康 微信小程序
-
包头市 鹿城健康服务 微信小程序
-
江西 赣通码 微信小程序
-
南昌 昌通码 微信小程序
-
藏易通健康码 微信小程序
-
江苏核酸检测信息系统 cydj.weiynet.cn
-
扬州 扬城扫码通 微信小程序
-
遵义市 实名登记码 微信小程序
-
乐清市 乐行通 微信小程序
-
南昌市 i南昌-官方 微信小程序
-
鄂尔多斯健康宝 微信小程序
-
新疆伊犁阿勒泰 满意雪都 微信小程序
-
南宁市电子健康卡 微信小程序
-
吕梁健康防疫核酸检测平台 微信小程序
-
曲靖防疫出行 微信小程序
-
镇江市通行码 镇合意 微信小程序
-
灌南县 惠泽行 微信小程序
-
新疆伊犁哈萨克自治州塔城地区 健康塔城 微信小程序
-
喀什和易行 微信小程序
-
巴州和易行 微信小程序
-
绥化防疫 微信小程序
-
青城医疗 微信小程序
-
温州健康码扫码工具 微信小程序
-
临沂 沂码通 微信小程序
-
鞍山 易鞍码 微信小程序
2020年新冠疫情爆发初期的抗疫项目专题另见:
[
xinguan2020.dcloud.net.cn
](
https://dcloud.io/ncp.html
)
#### 典型案例
<a
href=
"https://m.qinxuan.hihonor.com/"
target=
"_blank"
class=
"clear-style"
><b>
华为荣耀亲选商城:
</b></a>
华为公司旗下荣耀品牌精品电商平台。
...
...
docs/component/_sidebar.md
浏览文件 @
db332865
...
...
@@ -74,6 +74,7 @@
*
[
色彩说明
](
component/uniui/color.md
)
*
[
uni-sass 辅助样式
](
component/uniui/uni-sass.md
)
*
[
uni-badge 数字角标
](
component/uniui/uni-badge.md
)
*
[
uni-breadcrumb 数字角标
](
component/uniui/uni-breadcrumb.md
)
*
[
uni-calendar 日历
](
component/uniui/uni-calendar.md
)
*
[
uni-card 卡片
](
component/uniui/uni-card.md
)
*
[
uni-collapse 折叠面板
](
component/uniui/uni-collapse.md
)
...
...
@@ -81,6 +82,7 @@
*
[
uni-countdown 倒计时
](
component/uniui/uni-countdown.md
)
*
[
uni-data-checkbox 数据选择器
](
component/uniui/uni-data-checkbox.md
)
*
[
uni-data-picker 级联选择器
](
component/uniui/uni-data-picker.md
)
*
[
uni-data-select 级联选择器
](
component/uniui/uni-data-select.md
)
*
[
uni-dateformat 日期格式化
](
component/uniui/uni-dateformat.md
)
*
[
uni-datetime-picker 日期选择器
](
component/uniui/uni-datetime-picker.md
)
*
[
uni-drawer 抽屉
](
component/uniui/uni-drawer.md
)
...
...
@@ -112,6 +114,7 @@
*
[
uni-table 表格
](
component/uniui/uni-table.md
)
*
[
uni-tag 标签
](
component/uniui/uni-tag.md
)
*
[
uni-title 章节标题
](
component/uniui/uni-title.md
)
*
[
uni-tooltip 章节标题
](
component/uniui/uni-tooltip.md
)
*
[
uni-transition 过渡动画
](
component/uniui/uni-transition.md
)
*
[
更新日志
](
https://ext.dcloud.net.cn/plugin?id=55&update_log
)
*
[
更多插件市场的组件
](
https://ext.dcloud.net.cn/?cat1=2
)
...
...
docs/component/uniui/quickstart.md
浏览文件 @
db332865
...
...
@@ -49,7 +49,6 @@ uni-ui支持 HBuilderX直接新建项目模板、npm安装和单独导入个别
|uni-rate|
[
评分
](
https://ext.dcloud.net.cn/plugin?name=uni-rate
)
|
|uni-row|
[
布局-行
](
https://ext.dcloud.net.cn/plugin?name=uni-row
)
|
|uni-search-bar|
[
搜索栏
](
https://ext.dcloud.net.cn/plugin?name=uni-search-bar
)
|
|Section|
[
标题栏
](
https://ext.dcloud.net.cn/plugin?name=uni-section
)
|
|uni-segmented-control|
[
分段器
](
https://ext.dcloud.net.cn/plugin?name=uni-segmented-control
)
|
|uni-steps|
[
步骤条
](
https://ext.dcloud.net.cn/plugin?name=uni-steps
)
|
|uni-swipe-action|
[
滑动操作
](
https://ext.dcloud.net.cn/plugin?name=uni-swipe-action
)
|
...
...
docs/component/uniui/uni-breadcrumb.md
0 → 100644
浏览文件 @
db332865
::: tip 组件名:uni-breadcrumb
> 代码块: `uBreadcrumb`
[
点击下载&安装
](
https://ext.dcloud.net.cn/plugin?name=uni-breadcrumb
)
:::
显示当前页面的路径,快速返回之前的任意页面。
### 安装方式
本组件符合
[
easycom
](
https://uniapp.dcloud.io/collocation/pages?id=easycom
)
规范,
`HBuilderX 2.5.5`
起,只需将本组件导入项目,在页面
`template`
中即可直接使用,无需在页面中
`import`
和注册
`components`
。
如需通过
`npm`
方式使用
`uni-ui`
组件,另见文档:
[
https://ext.dcloud.net.cn/plugin?id=55
](
https://ext.dcloud.net.cn/plugin?id=55
)
### 基本用法
在
`template`
中使用组件
```
html
<uni-breadcrumb
separator=
"/"
>
<uni-breadcrumb-item
v-for=
"route in routes"
:to=
"route.to"
>
{{route.name}}
</uni-breadcrumb-item
>
</uni-breadcrumb>
```
```
js
export
default
{
name
:
"
uni-stat-breadcrumb
"
,
data
()
{
return
{
routes
:
[
{
to
:
"
/A
"
,
name
:
"
A页面
"
,
},
{
to
:
"
/B
"
,
name
:
"
B页面
"
,
},
{
to
:
"
/C
"
,
name
:
"
C页面
"
,
},
],
};
},
};
```
## API
### Breadcrumb Props
| 属性名 | 类型 | 默认值 | 说明 |
| :------------: | :----: | :-----: | :--------------: |
| separator | String | 斜杠'/' | 分隔符 |
| separatorClass | String | | 图标分隔符 class |
### Breadcrumb Item Props
| 属性名 | 类型 | 默认值 | 说明 |
| :-----: | :-----------: | :----: | :-----------------------------------------------------------------------------: |
| to | String/Object | | 路由跳转页面路径/对象 |
| replace | Boolean | | 在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) |
## 组件示例
::: warning 注意
直接拷贝示例代码,无法运行 ,示例依赖了
`uni-card`
`uni-section`
`uni-scss`
等多个组件。
请到
[
组件下载页面
](
https://ext.dcloud.net.cn/plugin?name=uni-breadcrumb
)
,在页面右侧选择
`使用 HBuilderX导入示例项目`
,体验完整组件示例。
:::
:::preview https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb
```
html
<template>
<view
class=
"container"
>
<uni-card
is-full
:is-shadow=
"false"
>
<text
class=
"uni-h6"
>
面包屑导航显示当前页面的路径,快速返回之前的任意可跳转页面
</text
>
</uni-card>
<uni-section
title=
"基础用法"
type=
"line"
padding
>
<uni-breadcrumb
separator=
"/"
>
<uni-breadcrumb-item
v-for=
"route in routes"
:to=
"route.to"
>
{{route.name}}
</uni-breadcrumb-item
>
</uni-breadcrumb>
</uni-section>
<uni-section
title=
"自定义分隔符"
type=
"line"
padding
>
<uni-breadcrumb
separator=
">"
>
<uni-breadcrumb-item
v-for=
"route in routes"
:to=
"route.to"
>
{{route.name}}
</uni-breadcrumb-item
>
</uni-breadcrumb>
</uni-section>
</view>
</template>
<script>
export
default
{
components
:
{},
data
()
{
return
{
routes
:
[
{
to
:
"
/
"
,
name
:
"
首页
"
,
},
{
to
:
""
,
name
:
"
菜单 A
"
,
},
{
to
:
""
,
name
:
"
菜单 B
"
,
},
],
};
},
};
</script>
<style
lang=
"scss"
></style>
```
docs/component/uniui/uni-data-select.md
0 → 100644
浏览文件 @
db332865
::: tip 组件名:uni-data-select
> 代码块: `uDataSelect`
[
点击下载&安装
](
https://ext.dcloud.net.cn/plugin?name=uni-data-select
)
:::
当选项过多时,使用下拉菜单展示并选择内容
本组件要解决问题包括:
1.
数据绑定型组件:给本组件绑定一个 data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能
2.
自动的表单校验:组件绑定了 data,且符合
[
uni-forms
](
https://ext.dcloud.net.cn/plugin?id=2773
)
组件的表单校验规范,搭配使用会自动实现表单校验
在 uniCloud 开发中,
`DB Schema`
中配置了 enum 枚举等类型后,在 web 控制台的
[
自动生成表单
](
https://uniapp.dcloud.io/uniCloud/schema?id=autocode
)
功能中,会自动生成
`uni-data-select`
组件并绑定好 data
> **注意事项**
> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。
>
> - 组件需要依赖 `sass` 插件 ,请自行手动安装
> - 本组件为数据驱动,目的是快速投入使用,只可通过 style 覆盖有限样式,不支持自定义更多样式
> - 如使用过程中有任何问题,或者您对 uni-ui 有一些好的建议,欢迎加入 uni-ui 交流群:871950839
> - 组件支持 nvue ,需要在 `manifest.json > app-plus` 节点下配置 `"nvueStyleCompiler" : "uni-app"`
> - 如组件显示有问题 ,请升级 `HBuilderX` 为 `v3.1.0` 以上
### 安装方式
本组件符合
[
easycom
](
https://uniapp.dcloud.io/collocation/pages?id=easycom
)
规范,
`HBuilderX 2.5.5`
起,只需将本组件导入项目,在页面
`template`
中即可直接使用,无需在页面中
`import`
和注册
`components`
。
如需通过
`npm`
方式使用
`uni-ui`
组件,另行文档:
[
https://ext.dcloud.net.cn/plugin?id=55
](
https://ext.dcloud.net.cn/plugin?id=55
)
### 基本用法
设置
`localdata`
属性后,组件会通过数据渲染出对应的内容
```
html
<template>
<view>
<uni-data-select
v-model=
"value"
:localdata=
"range"
@
change=
"change"
></uni-data-select>
</view>
</template>
```
```
javascript
export
default
{
data
()
{
return
{
value
:
0
,
range
:
[
{
value
:
0
,
text
:
"
篮球
"
},
{
value
:
1
,
text
:
"
足球
"
},
{
value
:
2
,
text
:
"
游泳
"
},
],
};
},
methods
:
{
change
(
e
)
{
console
.
log
(
"
e:
"
,
e
);
},
},
};
```
### 云端数据示例
```
html
<template>
<view>
<!-- 云端数据 -->
<uni-data-select
collection=
"opendb-app-list"
field=
"appid as value, name as text"
label=
"应用选择"
v-model=
"appid"
:clear=
"false"
/>
</view>
</template>
```
## API
### DataSelect Props
| 属性名 | 类型 | 可选值 | 默认值 | 说明 |
| :-----------: | :-----------: | :----: | :------: | :-----------------------------------------------------------------: |
| value/v-model | String/Number | - | - | 默认值,multiple=true 时为 Array 类型,否则为 String 或 Number 类型 |
| localdata | Array | - | - | 本地渲染数据, |
| clear | Boolean | - | - | 是否可以清空已选项 |
| label | String | | | 左侧标题 |
| placeholder | String | - | 请选择 | 输入框的提示文字 |
| emptyText | String | - | 暂无数据 | 没有数据时显示的文字 ,本地数据无效 |
#### DataCom Props
更多 DataCom 支持的属性参考
[
更多
](
https://uniapp.dcloud.net.cn/component/datacom.html#%E8%AF%AD%E6%B3%95%E6%89%8B%E5%86%8C
)
#### Localdata Options
`localdata`
属性的格式为数组,数组内每项是对象,需要严格遵循如下格式
| 属性名 | 说明 |
| :-----: | :--------: |
| text | 显示文本 |
| value | 选中后的值 |
| disable | 是否禁用 |
### DataSelect Events
| 事件名 | 事件说明 | 返回参数 |
| :-----: | :--------------------: | :------: |
| @change | 选中状态改变时触发事件 | - |
## 组件示例
::: warning 注意
直接拷贝示例代码,无法运行 ,示例依赖了
`uni-card`
`uni-section`
`uni-scss`
等多个组件。
请到
[
组件下载页面
](
https://ext.dcloud.net.cn/plugin?name=uni-data-select
)
,在页面右侧选择
`使用 HBuilderX导入示例项目`
,体验完整组件示例。
:::
:::preview https://hellouniapp.dcloud.net.cn/pages/extUI/data-select/data-select
```
html
<template>
<view>
<uni-card
is-full
>
<text
class=
"uni-h6"
>
通过数据驱动的单选框和复选框,可直接通过连接 uniCloud
获取数据,同时可以配合表单组件 uni-forms 使用
</text
>
</uni-card>
<uni-section
title=
"本地数据"
type=
"line"
>
<uni-data-select
v-model=
"value"
:localdata=
"range"
@
change=
"change"
></uni-data-select>
</uni-section>
<uni-section
title=
"云端数据"
subTitle=
"连接云服务空间, 且存在相关的数据表才能生效(此处演示, 未连接云服务空间, 故不生效, 且有报错)"
type=
"line"
>
<uni-data-select
collection=
"opendb-app-list"
field=
"appid as value, name as text"
v-mode=
"value"
/>
</uni-section>
<uni-section
title=
"是否可清除已选项"
type=
"line"
>
<uni-data-select
v-model=
"value"
:localdata=
"range"
@
change=
"change"
:clear=
"false"
></uni-data-select>
</uni-section>
<uni-section
title=
"配置左侧标题"
type=
"line"
>
<uni-data-select
v-model=
"value"
:localdata=
"range"
@
change=
"change"
label=
"应用选择"
></uni-data-select>
</uni-section>
</view>
</template>
<script>
export
default
{
data
()
{
return
{
value
:
0
,
range
:
[
{
value
:
0
,
text
:
"
篮球
"
},
{
value
:
1
,
text
:
"
足球
"
},
{
value
:
2
,
text
:
"
游泳
"
},
],
};
},
methods
:
{
change
(
e
)
{
console
.
log
(
"
e:
"
,
e
);
},
},
};
</script>
<style
lang=
"scss"
>
.text
{
font-size
:
12px
;
color
:
#666
;
margin-top
:
5px
;
}
.uni-px-5
{
padding-left
:
10px
;
padding-right
:
10px
;
}
.uni-pb-5
{
padding-bottom
:
10px
;
}
</style>
```
docs/component/uniui/uni-tooltip.md
0 → 100644
浏览文件 @
db332865
::: tip 组件名:uni-tooltip
> 代码块: `utooltip`
[
点击下载&安装
](
https://ext.dcloud.net.cn/plugin?name=uni-tooltip
)
:::
常用于展示鼠标 hover 时的提示信息。
> 遮挡不住原生组件
### 安装方式
本组件符合
[
easycom
](
https://uniapp.dcloud.io/collocation/pages?id=easycom
)
规范,
`HBuilderX 2.5.5`
起,只需将本组件导入项目,在页面
`template`
中即可直接使用,无需在页面中
`import`
和注册
`components`
。
如需通过
`npm`
方式使用
`uni-ui`
组件,另见文档:
[
https://ext.dcloud.net.cn/plugin?id=55
](
https://ext.dcloud.net.cn/plugin?id=55
)
### 基本用法
在
`template`
中使用组件
```
html
<uni-tooltip
:content=
"tooltip显示的内容"
>
<button>
被包裹的组件
</button>
</uni-tooltip>
```
## API
### Tooltip Props
| 属性名 | 类型 | 默认值 | 说明 |
| :-------: | :----: | :----: | :---------------------------------: |
| content | String | | 弹出层显示的内容 |
| placement | String | left | Tooltip 的出现位置, 目前只支持 left |
### Tooltip Slots
| 名称 | 说明 |
| :-----: | :-------------------: |
| default | 被 Tooltip 包裹的组件 |
| content | 弹出层插槽 |
## 组件示例
::: warning 注意
直接拷贝示例代码,无法运行 ,示例依赖了
`uni-card`
`uni-section`
`uni-scss`
等多个组件。
请到
[
组件下载页面
](
https://ext.dcloud.net.cn/plugin?name=uni-tooltip
)
,在页面右侧选择
`使用 HBuilderX导入示例项目`
,体验完整组件示例。
:::
:::preview https://hellouniapp.dcloud.net.cn/pages/extUI/tooltip/tooltip
```
html
<template>
<view
class=
"container"
>
<uni-card
is-full
:is-shadow=
"false"
>
<text
class=
"uni-h6"
>
常用于展示鼠标 hover 时的提示信息,注意:无法覆盖原生组件
</text>
</uni-card>
<uni-section
title=
"基础用法"
type=
"line"
padding
>
<uni-tooltip
content=
"提示文字"
/>
</uni-section>
<uni-section
title=
"插槽用法"
type=
"line"
padding
>
<uni-tooltip
content=
"提示文字"
>
一段文字
</uni-tooltip>
</uni-section>
<uni-section
title=
"自定义弹层宽度"
type=
"line"
padding
>
<uni-tooltip
content=
"提示文字"
>
一段文字
</uni-tooltip>
</uni-section>
</view>
</template>
<script>
export
default
{
components
:
{},
data
()
{
return
{};
},
};
</script>
<style
lang=
"scss"
></style>
```
docs/plugin/sell.md
浏览文件 @
db332865
...
...
@@ -3,7 +3,9 @@
DCloud插件市场支持对uniCloud插件、原生插件设置付费销售,帮助插件作者进行技术变现;其中:
-
uniCloud插件支持普通授权版、源码授权版两种形式进行售卖;
[
uniCloud付费插件的“源码授权版”和“普通授权版”的区别
](
https://ask.dcloud.net.cn/article/38040
)
;
-
App原生插件仅支持普通授权版;
-
App原生插件仅支持购买授权版,不提供源码;
其他类型插件不支持计费。
插件作者在发布uniCloud插件、原生插件时,可自定义售卖价格及形式(uniCloud分类),见下图:
...
...
@@ -11,11 +13,20 @@ DCloud插件市场支持对uniCloud插件、原生插件设置付费销售,帮
如未设置价格,则默认为免费插件,所有用户均可下载使用;
如果设置了价格,则用户需付费后才能使用;为保护插件作者的权益最大化,DCloud对购买插件的使用场景做了限制,具体如下:
-
uniCloud插件:购买时需绑定服务空间,该付费插件仅支持部署到绑定的服务空间。
-
App原生插件:购买时需绑定appid,该付费插件仅可用于该appid对应的云打包,不支持其他appid云打包,不支持离线打包。
## 版权保护和试用机制
普通前端插件因其源码开放问题,无法支持计费。
uniCloud插件的云函数部分支持源码保护,未购买源码版的用户无法获取到源码。如果是云端一体插件,其前端部分的js也支持加密混淆。但由于前端js必须运行在前端设备上,仍然存在被破解的可能性,DCloud无法承诺这种前端加密混淆无法破解。
uniCloud插件的销售和服务空间绑定。购买者购买时绑定好自己的服务空间spaceid,未经授权的服务空间无法上传加密的云函数。
app原生插件由于插件作者提交的是编译后的二进制文件,且该app插件的二进制文件在设计上不会单独被三方获取,所以可以保护安全。(也因此,本地打包不支持使用插件市场的付费app原生插件)
app原生插件的销售和客户端appid、包名绑定。购买者购买时绑定好自己的appid和包名。未经授权的appid和包名无法运行需要付费购买的app原生插件。
但DCloud为所有销售插件提供了试用机制,允许购买者先试用后付费。uniCloud插件提供了7天的试用,试用到期后会自动销毁加密云函数;app原生插件仅支持在app自定义运行基座上试用,该运行基座无法脱离HBuilder独立安装,且每次启动均有会弹出测试toast字样。
## 查看收益
...
...
docs/select.md
浏览文件 @
db332865
...
...
@@ -55,7 +55,7 @@ DCloud的盈利方式在帮助开发者进行流量变现(uni-AD)和提供
6. 微信原生开发对webpack、预编译语言、工程流程管理很多功能都不支持,大公司很少用微信原生开发,都是在用框架来提升开发效率
7. uni-app支持双向数据绑定、vuex状态管理,比小程序原生开发方便的多
8. 迟早会有多端需求,使用`uni-app`再无后续顾虑
9. uni-app并非仅用于做跨端的,只用uni-app做小程序、只做
H5
、只做App的,案例是一样多的,详见:[https://uniapp.dcloud.io/case](https://uniapp.dcloud.io/case)
9. uni-app并非仅用于做跨端的,只用uni-app做小程序、只做
web
、只做App的,案例是一样多的,详见:[https://uniapp.dcloud.io/case](https://uniapp.dcloud.io/case)
关于uni-app和微信开发的详细比较评测,参考:[https://ask.dcloud.net.cn/article/36484](https://ask.dcloud.net.cn/article/36484)
- 评测1、uni-app和原生wxml开发、wepy、mpvue、taro的对比,[https://ask.dcloud.net.cn/article/35867](https://ask.dcloud.net.cn/article/35867)
...
...
@@ -107,12 +107,13 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
```
uni-app
``` 积极拥抱社区现有的现代开发流程,包括但不限于:
- 内置了webpack
- 内置了webpack
/vite
- NPM 包管理系统,详见[参考](http://uniapp.dcloud.io/tutorial/page-script#npm支持)
- es6+ 语法(发布时会自动编译为es5),详见[参考](http://uniapp.dcloud.io/tutorial/syntax-js#es6-支持)
- 各种预处理器(less、scss、stylus、typescript)
- uni-app的官方ide:HBuilderX,在vue、json、markdown、代码提示、操作效率上,有非常明显的优势,可帮助开发者大幅提高工作效率
- uni-app同时也提供了cli方式,可使用其他开发工具如vscode开发,当然开发效率不如HBuilderX。对比详见[https://ask.dcloud.net.cn/article/35451](https://ask.dcloud.net.cn/article/35451)
- HBuilder也提供了cli,[参考](https://hx.dcloud.net.cn/cli/README)
**uni-app 生态开放性如何?能否直接利用现有前端社区资源?**
...
...
@@ -121,8 +122,8 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
- 丰富的插件市场为开发者提供数千款现成的轮子,[https://ext.dcloud.net.cn](https://ext.dcloud.net.cn)
- 兼容微信小程序 JS SDK,丰富的小程序生态内容可直接引入uni-app,并且在App侧通用,[参考](http://ask.dcloud.net.cn/article/35070)
- 兼容微信小程序自定义组件,并且App、
H5
侧通用,[参考](http://uniapp.dcloud.io/tutorial/miniprogram-subject#小程序自定义组件支持)
- App和
H5提供了renderjs,使得浏览器专用的库也可以在App和H5
里使用,[参考](https://uniapp.dcloud.io/tutorial/renderjs)
- 兼容微信小程序自定义组件,并且App、
web
侧通用,[参考](http://uniapp.dcloud.io/tutorial/miniprogram-subject#小程序自定义组件支持)
- App和
web提供了renderjs,使得浏览器专用的库也可以在App和web
里使用,[参考](https://uniapp.dcloud.io/tutorial/renderjs)
- 支持 NPM 包管理系统,[参考](http://uniapp.dcloud.io/tutorial/page-script#npm支持)
- 支持 mpvue 项目及组件,[参考](http://ask.dcloud.net.cn/article/34945)
- 支持原生插件,见插件市场:[https://ext.dcloud.net.cn](https://ext.dcloud.net.cn)
...
...
@@ -130,9 +131,11 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
**uni-app 支持的手机版本最低到多少?**
- Vue2: Android4.4、iOS9是官方会保障兼容的。要知道Android4.4已经是2013年发布的手机了,正常用户不会还在用这么久远的手机。
- Vue3: 支持的范围是:Android > 4.4, ios >= 10
1. Web端:uni-app没有限制,同vue2和vue3自身能支持的浏览器版本
2. 小程序端:uni-app没有限制,同该小程序自身能支持的最低平台
3. App端:
- Vue2: Android4.4+、iOS9+。Android4.4已经是2013年发布的手机了。
- Vue3: 支持的范围是:Android >=5 (使用nvue和vue有区别。某些老国产Android5的rom无法动态升级Android system webview,此时如果使用vue页面需搭配x5内核) , iOS >= 10
**uni-app成熟度高吗?**
...
...
@@ -150,9 +153,9 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
**DCloud是家什么公司,是否可信赖**
```
DCloud
```从2013年开始做HBuilder,目前
8
00万前端开发者在使用```
DCloud
```的开发工具,HBuilder百度指数超过sublime、webstorm等全球知名工具。是中国唯一一家成功的开发工具厂商。
```
DCloud
```从2013年开始做HBuilder,目前
9
00万前端开发者在使用```
DCloud
```的开发工具,HBuilder百度指数超过sublime、webstorm等全球知名工具。是中国唯一一家成功的开发工具厂商。
```
DCloud
```是明星创业公司,融资已经过了
B2
轮,且均为知名VC或战略投资人。
```
DCloud
```是明星创业公司,融资已经过了
C
轮,且均为知名VC或战略投资人。
```
DCloud
```是HTML5中国产业联盟的发起单位和秘书单位。该联盟隶属于工信部信通院标准所。
...
...
@@ -164,7 +167,7 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
**App打包必须上传DCloud云端吗?代码会泄露吗?**
代码可以云打包,也可以
离线
打包。
代码可以云打包,也可以
本地
打包。
使用云打包时有两种模式:
1. 安心打包
...
...
@@ -172,7 +175,7 @@ uni-app提供了大量的扩展api解决了这个问题,并且发展了成熟
2. 传统云打包
传统云打包仅适合没有mac电脑但需要打iOS包的开发者。在这种情况下,代码和证书会上传到DCloud的mac打包服务器,但打包后立即删除,DCloud不会持久化保存。
DCloud是一家
遵纪守法的公司,不会做损害自己名誉的事情
。之所以提供云打包,是方便不熟悉原生的前端工程师直接生成App安装包。包括让没有mac电脑的工程师也可以打出iOS的包。
DCloud是一家
正规公司,已通过等保三级认证(证书编号:11010813802-20001),珍惜自己的名誉
。之所以提供云打包,是方便不熟悉原生的前端工程师直接生成App安装包。包括让没有mac电脑的工程师也可以打出iOS的包。
**DCloud提供哪些技术支持?碰到框架bug影响业务怎么办?**
...
...
docs/uni-stat-v2.md
浏览文件 @
db332865
...
...
@@ -206,6 +206,8 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。
#### 开启redis缓存
开启redis缓存后可以降低数据库查询压力,提升uni统计性能,可按需决定是否开启。
::: warning 注意
开启redis缓存前,需要先确认是否已在布署uni统计的服务空间内购买redis服务,如果没有购买则需要先购买redis服务。
:::
...
...
docs/uniCloud/cf-functions.md
浏览文件 @
db332865
...
...
@@ -49,9 +49,9 @@ HBuilderX中uniCloud项目的云函数均为项目的uniCloud/cloudfunctions目
| | └──package.json 公用模块package.json
| │───uni-clientDB-actions
| │ └──new_action.js clientDB action代码
<a
target=
"_blank"
href=
"https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=action"
>
详情
</a>
|
└
───function-name 云函数目录
|
│──index.js 云函数代码
|
└──package.json 包含云函数的配置信息,如url化、定时设置、可用内存等内容
<a
target=
"_blank"
href=
"https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=packagejson"
>
详情
</a>
|
│
───function-name 云函数目录
|
│
│──index.js 云函数代码
|
│
└──package.json 包含云函数的配置信息,如url化、定时设置、可用内存等内容
<a
target=
"_blank"
href=
"https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=packagejson"
>
详情
</a>
| └───object-name 云对象目录
| │──index.obj.js 云对象代码
| └──package.json 包含云对象的配置信息,可用内存等内容
<a
target=
"_blank"
href=
"https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=packagejson"
>
详情
</a>
...
...
@@ -227,7 +227,9 @@ exports.main = async (event, context) => {
##### 其他客户端信息@client-info
-
以下四个属性只有使用uni-app以callFunction方式调用才能获取,由客户端传递到云函数
> HBuilderX 3.4.9起,可以获取所有客户端`getSystemInfo`返回的客户端信息,详细字段列表参考:[getSystemInfo](https://uniapp.dcloud.net.cn/api/system/info.html#getsysteminfo)
-
客户端信息只有使用uni-app客户端以callFunction方式调用才能获取,由客户端传递到云函数
-
实际业务中务必验证一下前端传来的数据的合法性
```
js
...
...
@@ -242,8 +244,8 @@ exports.main = async (event, context) => {
**注意事项**
-
event大小不可超过100kb
-
云函数url化的场景下无法获取
`context.OS`
、
`context.PLATFORM`
、
`context.APPID`
、
`context.DEVICEID`
-
阿里云event大小不可超过1MB,腾讯云event大小不可超过6MB
-
云函数url化的场景下无法获取
客户端信息,
`context.OS`
、
`context.PLATFORM`
、
`context.APPID`
、
`context.DEVICEID`
等
>在云函数URL化的场景无法获取客户端平台信息,可以在调用依赖客户端平台的接口接口之前(推荐在云函数入口)通过修改context.PLATFORM手动传入客户端平台信息供其他插件(如:uni-id)使用
...
...
docs/uniCloud/cloud-obj.md
浏览文件 @
db332865
...
...
@@ -216,6 +216,8 @@ uniCloud有众多API,另见:[uniCloud的API清单](uniCloud/cf-functions.htm
### 获取客户端信息@get-client-info
> HBuilderX 3.4.9起此接口可获取所有客户端`getSystemInfo`返回的客户端信息,完整字段列表参考:[getSystemInfo](https://uniapp.dcloud.net.cn/api/system/info.html#getsysteminfo)
**接口形式**
`this.getClientInfo()`
...
...
@@ -253,6 +255,8 @@ module.exports = {
|deviceId |string |是 |客户端deviceId,目前同getSystemInfo内的deviceId|
|uniIdToken |string |是 |客户端用户token |
**注意**
-
与云函数内获取客户端platform稍有不同,云函数未拉齐vue2、vue3版本app平台的platform值,vue2为
`app-plus`
,vue3为
`app`
。云对象无论客户端是vue2还是vue3,在app平台获取的platform均为
`app`
。这一点在使用uni-id时需要特别注意,详情见:
[
uni-id文档 preferedAppPlatform
](
uniCloud/uni-id.md?id=prefered-app-platform
)
...
...
@@ -518,7 +522,7 @@ uniCloud.importObject('todo', {
uniCloud
.
importObject
(
'
todo
'
,
{
customUI
:
false
,
// 是否取消自动展示的交互界面。默认为false,配置为true时取消自动展示的交互提示界面,以下配置均不再生效
loadingOptions
:
{
// loading相关配置
t
ext
:
'
加载中...
'
,
// 显示的loading内的提示文字。默认值为:加载中...
t
itle
:
'
加载中...
'
,
// 显示的loading内的提示文字。默认值为:加载中...
mask
:
true
// 是否使用透明遮罩,配置为true时不可点击页面其他内容。默认值为:true
},
errorOptions
:
{
// 错误界面相关配置
...
...
docs/uniCloud/faq.md
浏览文件 @
db332865
...
...
@@ -232,7 +232,7 @@ uniCloud的每个云函数是一个独立进程,不存在云函数级别的多
### 高并发下简单的防止超卖
> uniCloud阿里云现已支持redis,开通并使用redis请参考:[redis开通和使用](uniCloud/redis.md),如何使用redis防止超卖请参考:[redis高并发抢购](uniCloud/redis.md?id=snap-over-sell)
> uniCloud阿里云现已支持redis,开通并使用redis请参考:[redis开通和使用](uniCloud/redis.md),如何使用redis防止超卖请参考:[redis高并发抢购](uniCloud/redis.md?id=snap-over-sell)
(推荐使用)。如下方式针对无redis场景比较不灵活(不推荐使用)
高并发时很多用户同时对一条数据读写,很容易造成数据混乱,表现在秒杀抢购等场景就是超卖。以秒杀为例,开发者可以从扣除库存这步入手对超卖进行很大程度的限制,下面是一个简单的示例(
**注意以下代码未使用事务**
)
...
...
docs/uniCloud/uni-id.md
浏览文件 @
db332865
...
...
@@ -250,7 +250,7 @@ const userInfo = atob(userSegment) // '{"uid":"61a593ba91a750000166f78d","role":
**前提介绍:**
uni-app vue2版本app端对应的platform为
`app-plus`
,uni-app vue3版本app端对应的platform为
`app`
。此改动引发了一些问题,比如在uni-id内使微信登录会无法匹配对应的平台导致登录报错。
uni-app vue2版本app端对应的platform为
`app-plus`
(HBuilderX 3.4.9起 vue2版本app端对应的platform值也调整为
`app`
)
,uni-app vue3版本app端对应的platform为
`app`
。此改动引发了一些问题,比如在uni-id内使微信登录会无法匹配对应的平台导致登录报错。
由于uni-id将客户端平台存储在了数据库内(例如:app端微信登录的openid被存储为
`wx_openid['app-plus']`
),此问题无法平滑升级,因此对于新老项目建议分别处理。
...
...
@@ -787,6 +787,32 @@ uniCloud.callFunction({
```
### 主动刷新token@refresh-token
> 新增于uni-id 3.3.14
用法:
`uniID.refreshToken(Object RefreshTokenParams);`
**参数说明**
| 字段| 类型 | 必填| 说明 |
| --- | --- | --- | --- |
| token | String| 是 |用户token|
**示例**
```
js
const
{
token
,
tokenExpired
}
=
await
uniID
.
refreshToken
({
token
:
'
xxx
'
})
```
**注意**
-
刷新token后会在再次触发查库校验token时使token失效
### 登出@logout
...
...
@@ -937,15 +963,37 @@ exports.main = async function(event,context) {
}
```
### 使用短信验证码重置密码@reset-pwd-by-sms
> 新增于 uni-id 3.3.14
用法:
`uniID.resetPwdBySms(Object ResetPwdBySmsParams)`
**参数说明**
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| mobile | String| 是 |手机号码 |
| code | String| 是 |验证码 |
| password | String| 是 |重置后的密码 |
**响应参数**
无
**注意**
-
对应发送短信验证码接口
`type`
为
`reset-pwd`
### 加密密码 @encrypt-password
用法:
`uniID.encryptPwd(String password)`
**参数说明**
| 字段
| 类型 | 必填| 说明
|
| ---
| --- | --- | ---
|
| password
| String| 是 |要加密的字符串
|
| 字段
| 类型 | 必填 | 说明
|
| ---
| --- | --- | ---
|
| password
| String| 是 |要加密的字符串
|
**响应参数**
...
...
@@ -1132,6 +1180,36 @@ exports.main = async function(event,context) {
-
此接口仅校验token是否合法,从token中获取用户信息。不查库校验token,也不会查库获取用户信息。适用于不想使用checkToken获取用户信息的场景(checkToken内包含其他逻辑,比如自动刷新token等)
### 添加用户(非注册)@add-user
> 新增于 uni-id 3.3.14
用法:
`uniID.addUser(Object AddUserParams);`
**BanAccountParams参数说明**
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| username | String| username、email、mobile至少有一个 |用户名 |
| mobile | String| username、email、mobile至少有一个 |手机号 |
| email | String| username、email、mobile至少有一个 |邮箱 |
| password | String| 否 |密码 |
| role | Array | 否 |角色列表 |
| authorizedApp | Array | 否 |此用户能登录的app对应的appId列表 |
**响应参数**
| 字段 | 类型 | 必备 | 说明 |
| --- | --- | --- | --- |
| uid | String| 是 |添加用户返回的用户id |
**注意**
-
authorizedApp不传时创建的用户无法登录任一端,后续可以调用授权登录接口再次授权登录
-
传入email、mobile时,自动会将对用的email_confirmed、mobile_confirmed设置为1
### 封禁账户@ban-account
-
由于客户端存在token缓存,执行封禁操作并不会实时生效。用户下次获取token(包括刷新token)时才会出现错误信息
...
...
@@ -1148,9 +1226,9 @@ exports.main = async function(event,context) {
**响应参数**
| 字段
| 类型 | 必填| 说明
|
| ---
| --- | --- | ---
|
|
code| Number| 是 |错误码,0表示成功
|
| 字段
| 类型 | 必填 | 说明
|
| ---
| --- | --- | ---
|
|
errCode | Number
|
String | 是 |错误码,0表示成功
|
### 解禁账户@unban-account
...
...
@@ -1285,12 +1363,12 @@ uni.removeStorageSync('uni_id_token_expired')
**参数说明**
| 字段
| 类型 | 必填| 说明
|
| ---
| --- | --- | ---
|
| mobile
| String| 是 |用户手机号
|
| templateId| String| 是 |
`uni-id 1.1.8+`
用户自定义模板Id,
不传则使用uniID_code(请注意目前此模板已经不再开放使用,请传入自定义模板Id,已经报备使用的用户不受影响),请使用类似下面模板示例的参数申请模板
|
| code
| String| 否 |验证码字符串
|
| type
| String| 是 |类型,用于防止不同功能的验证码混用,目前支持的类型
`login`
登录、
`register`
注册、
`bind`
绑定手机、
`unbind`
解绑手机|
| 字段
| 类型 | 必填 | 说明
|
| ---
| --- | --- | ---
|
| mobile
| String| 是 |用户手机号
|
| templateId| String| 是 |
`uni-id 1.1.8+`
用户自定义模板Id,
请使用类似下面模板示例的参数申请模板
|
| code
| String| 否 |验证码字符串
|
| type | String| 是 |类型,用于防止不同功能的验证码混用,目前支持的类型
`login`
登录、
`register`
注册、
`bind`
绑定手机、
`unbind`
解绑手机|
```
// 短信模板示例,请在https://dev.dcloud.net.cn/uniSms申请签名(短信开头中括号内部分)及模板
...
...
@@ -2021,6 +2099,27 @@ exports.main = async function(event,context) {
}
```
### 获取App平台微信登录用户信息@get-weixin-user-info
> 新增于 uni-id 3.3.14
用法:
`uniID.getWeixinUserInfo(Object GetWeixinUserInfoParams);`
**参数说明**
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| accessToken | String| 是 |用户登录时返回的accessToken|
| openid | String| 是 |用户登录时返回的openid |
**响应参数**
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| nickname | String|用户昵称 |
| avatar | String|用户头像 |
## QQ@qq
> 新增于3.3.0版本
...
...
@@ -3035,36 +3134,41 @@ const res = await uniID.forbidAppLogin({
在unicloud
[
web控制台
](
https://unicloud.dcloud.net.cn/
)
新建数据表时,可以从
`uni-id`
的模板分类里找到下面的表,并一键创建这些表。
## 用户表
## 用户表
@user-table
表名:
`uni-id-users`
| 字段 | 类型 | 必填| 描述 |
| ----------------| --------- | ----| ------------------------------------------- |
|
\_
id | Object ID | 是 | 存储文档 ID(用户 ID),系统自动生成 |
| username | String | 否 | 用户名,不允许重复 |
| password | String | 否 | 密码。加密存储 |
| nickname | String | 否 | 用户昵称 |
| gender | Integer | 否 | 用户性别:0 未知 1 男性 2 女性 |
| status | Integer | 是 | 用户状态:0 正常,1 禁用,2 审核中,3 审核拒绝,4 已注销 |
| mobile | String | 否 | 手机号码 |
| mobile_confirmed| Integer | 否 | 手机号验证状态:0 未验证 1 已验证,未验证用户不可登录 |
| email | String | 否 | 邮箱地址 |
| email_confirmed | Integer | 否 | 邮箱验证状态:0 未验证 1 已验证,未验证用户不可登录 |
| avatar | String | 否 | 头像地址 |
| wx_unionid | String | 否 | 微信unionid |
| wx_openid | Object | 否 | 微信各个平台openid |
| ali_openid | String | 否 | 支付宝平台openid |
| comment | String | 否 | 备注 |
| realname_auth | Object | 否 | 实名认证信息 |
| register_date | Timestamp | 否 | 注册时间 |
| register_ip | String | 否 | 注册时 IP 地址 |
| last_login_date | Timestamp | 否 | 最后登录时间(注意并非只有登录操作会修改此值,token刷新时也会修改最后登录时间。应用启动时若token有效则不会触发登录行为,也不会更新本值。最后登录IP同理)|
| last_login_ip | String | 否 | 最后登录时 IP 地址 |
| login_ip_limit | Array | 否 | 登录 IP 限制 |
| inviter_uid | Array | 否 | 邀请人uid,按层级从下往上排列的uid数组,即第一个是直接上级|
| my_invite_code | String | 否 | 用户自己的邀请码 |
| role | Array | 否 | 用户角色列表,由role_id组成的数组 |
| 字段 | 类型 | 必填 | 描述 |
| ---------------- | --------- | ---- | ------------------------------------------- |
|
\_
id | Object ID | 是 | 存储文档 ID(用户 ID),系统自动生成 |
| username | String | 否 | 用户名,不允许重复 |
| password | String | 否 | 密码。加密存储 |
| nickname | String | 否 | 用户昵称 |
| gender | Integer | 否 | 用户性别:0 未知 1 男性 2 女性 |
| status | Integer | 是 | 用户状态:0 正常,1 禁用,2 审核中,3 审核拒绝,4 已注销 |
| mobile | String | 否 | 手机号码 |
| mobile_confirmed | Integer | 否 | 手机号验证状态:0 未验证 1 已验证,未验证用户不可登录 |
| email | String | 否 | 邮箱地址 |
| email_confirmed | Integer | 否 | 邮箱验证状态:0 未验证 1 已验证,未验证用户不可登录 |
| avatar | String | 否 | 头像地址 |
| wx_unionid | String | 否 | 微信unionid |
| wx_openid | Object | 否 | 微信各个平台openid |
| ali_openid | String | 否 | 支付宝平台openid |
| comment | String | 否 | 备注 |
| realname_auth | Object | 否 | 实名认证信息 |
| register_date | Timestamp | 否 | 注册时间 |
| register_ip | String | 否 | 注册时 IP 地址,
`uni-id 3.3.14`
起移至register_env内 |
| last_login_date | Timestamp | 否 | 最后登录时间 |
| last_login_ip | String | 否 | 最后登录时 IP 地址 |
| login_ip_limit | Array | 否 | 登录 IP 限制 |
| inviter_uid | Array | 否 | 邀请人uid,按层级从下往上排列的uid数组,即第一个是直接上级|
| my_invite_code | String | 否 | 用户自己的邀请码 |
| role | Array | 否 | 用户角色列表,由role_id组成的数组 |
| register_env | Object | 否 | 用户注册时的环境信息,新增于
`uni-id 3.3.14`
|
**注意**
-
最后登录时间、IP,并非只有登录操作会修改,token刷新时也会修改最后登录时间、ip。应用启动时若token有效则不会触发登录行为,也不会更新本值。
**wx_openid字段定义**
...
...
@@ -3100,6 +3204,21 @@ const res = await uniID.forbidAppLogin({
| company | String | 否 | 公司名称 |
| title | String | 否 | 职位 |
**register_env字段定义**
**注意:调用addUser添加的用户无此字段**
| 字段 | 类型 | 必填 | 描述 |
|-- |-- |-- |-- |
|appid | String|否 |注册时的客户端appId |
|uni_platform |String |否 |注册时的客户端平台,如h5、app、mp-weixin等 |
|app_name |String |否 |注册时的客户端名称 |
|app_version |String |否 |注册时的客户版本 |
|app_version_code |String |否 |注册时的客户版本号 |
|channel |String |否 |注册时的客户端启动场景(小程序)或应用渠道(app) |
|client_ip |String |否 |注册时的客户端IP |
用户集合示例:
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录