admin.md 41.9 KB
Newer Older
D
DCloud_LXH 已提交
1
## uni-admin 框架(原名 uniCloud admin)
Q
qiang 已提交
2

VK1688's avatar
VK1688 已提交
3
## 简介
Q
qiang 已提交
4

F
fasttian 已提交
5
uni-admin 框架,是基于 uni-app 和 uniCloud 的应用后台管理的开源框架。
Q
qiang 已提交
6 7 8

对于uniCloud的开发者而言,其后台管理系统应该使用本框架。

F
fasttian 已提交
9 10
- 它基于 uni-app 的宽屏适配,可自动适配 PC 宽屏和手机各端。了解[宽屏适配](https://uniapp.dcloud.io/adapt)
- 它基于 uniCloud,是 serverless 的云开发。了解[uniCloud](https://uniapp.dcloud.io/uniCloud/README)
C
chenruilong 已提交
11
- 它基于 uni-id,使用 uni-id 的用户账户、角色、权限系统。了解[uni-id](https://uniapp.dcloud.io/uniCloud/uni-id-summary)
F
fasttian 已提交
12

hbcui1984's avatar
hbcui1984 已提交
13
官方搭建了[uni-admin演示站点](http://hellouniadmin.dcloud.net.cn/admin/),你登录后即可快速体验uni-admin。
Q
qiang 已提交
14

hbcui1984's avatar
hbcui1984 已提交
15
uni-admin 是开源的,遵循 MIT 协议,你可以从[Github](https://github.com/dcloudio/uni-admin)[码云](https://gitee.com/dcloud/uni-admin)获取源码,也可以从[DCloud插件市场](https://ext.dcloud.net.cn/plugin?id=3268)快捷下载。
Q
qiang 已提交
16

VK1688's avatar
VK1688 已提交
17
## 看视频,15分钟掌握uni-admin
hbcui1984's avatar
hbcui1984 已提交
18 19

<a target="_blank" href="https://www.bilibili.com/video/BV17p4y1a71x?p=13">
D
DCloud_LXH 已提交
20
    <img src="https://web-assets.dcloud.net.cn/unidoc/zh/20210826112813.jpg" alt="uni-admin视频教程" style="width: 60%;">
hbcui1984's avatar
hbcui1984 已提交
21 22 23
</a>


VK1688's avatar
VK1688 已提交
24
## uni-admin 功能
hbcui1984's avatar
hbcui1984 已提交
25

F
fasttian 已提交
26
uni-admin有预置功能、插件生态和数据表管理的代码生成工具。
Q
qiang 已提交
27 28 29 30 31 32

有这套组合,管理端系统的开发变的前所未有的简单、高效、低成本。

1. 预置功能

- 管理员账户初始化、登录、修改密码
hbcui1984's avatar
hbcui1984 已提交
33
- 基于[uni-id](uni-id-summary.md)的用户管理(注册、修改信息、停用启用、删除)、角色管理、权限管理
Q
qiang 已提交
34 35 36 37 38
- 顶部 topWindow 的设置:比如 logo 更换、右上角部分链接更换。详见项目根目录的`admin.config.js`文件
- 左侧 leftWindow 的菜单设置:菜单包括两类,一类是动态菜单,具备业务和权限功能;另一类是静态菜单,不会根据登录用户角色变化
- 动态菜单的数据存储在数据库表opendb-admin-menus中,基于uni-id角色权限,在菜单管理中可以对菜单进行增删改查
- 开发模式下的 debug 功能,帮助开发者及时发现报错和搜索错误信息,可在`admin.config.js`文件中配置

inkwalk's avatar
inkwalk 已提交
39 40 41 42 43 44
2. 内置 uni统计2.0

- uni统计2.0 是开源、全端、云端一体、更适合uni-app的统计平台,详见[统计文档](https://uniapp.dcloud.net.cn/uni-stat-v2.html)
- 无需开发,在manifest的 uni统计 中打勾并发行,在uniCloud服务空间部署uni-admin,即可查看报表,见下文介绍
- 开发者也可以自定义打点数据、自定义展现报表

hbcui1984's avatar
hbcui1984 已提交
45
3. 支持响应式布局
Q
qiang 已提交
46

F
fasttian 已提交
47
uni-admin 同时支持 PC 端 和移动端。基础模块是全端可用的,但注意有的插件不是全端的。
Q
qiang 已提交
48 49 50

PC 端如下图:

VK1688's avatar
VK1688 已提交
51
![pc](https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin/uni-admin-2.png)
Q
qiang 已提交
52 53 54

移动端如下图:

VK1688's avatar
VK1688 已提交
55
<img src="https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin/uni-admin-3.png" width="375"/>
Q
qiang 已提交
56

hbcui1984's avatar
hbcui1984 已提交
57 58 59 60 61 62 63 64 65 66

4. 扩展插件

- uni-admin支持插件生态,包括cms插件、banner管理插件、日志管理插件、图表示例等,详见[插件市场](https://ext.dcloud.net.cn/?cat1=7&cat2=74&orderBy=UpdatedDate)

5. 数据表管理的代码生成工具

- 对于数据表的管理,如列表浏览、分页搜索、详情修改、新增删除,这些代码都无需自己开发。建好数据表的schema表结构,利用schema2code工具,即可自动生成该表的管理页面的代码。详见[schema2code](https://uniapp.dcloud.net.cn/uniCloud/schema?id=autocode)

uni-admin是完整开源的一个uni-app项目,任何熟悉uni-app的工程师都可以自行开发扩展功能。
Q
qiang 已提交
67

D
DCloud_LXH 已提交
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
6. 换肤功能 <Badge text="uni-admin 2.1.7+" />

- uni-admin 自带两套皮肤:
  - 默认蓝色皮肤

    <img src="https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin-default-theme.jpg" width="400">

  - 可切换绿柔皮肤:

    <img src="https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin-green-theme.jpg" width="400">

- 如果需要修改皮肤颜色,可以在 uni-admin 项目根目录的 `uni.scss` 文件中进行修改:

  <img src="https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin-theme-config.jpg" height="400">

- 如果需要增加皮肤,以下步骤为示例:
  1.`uni.scss` 文件的 `$themes` 属性中新增一个键值 **`blue`** 的配置:
    <img src="https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin-theme-config-edit.jpg" height="400">

  2. 修改项目根目录的 `admin.config.js` 文件,添加以下内容,**注意:`value` 的值需要与 `$themes` 中新增主题的键值保持一致**
    <img src="https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin-admin-theme-config-edit.jpg" height="400">
  3. 重新运行到 web 端查看效果

VK1688's avatar
VK1688 已提交
91 92 93 94 95 96 97 98
## 使用说明

### 一键部署@fast-install

uni-admin的`一键部署`,会自动上传云函数、创建数据库,并将前端页面编译上传到前端网页托管中,帮你一键生成网站并自动部署uni统计;如果你需要在HBuilderX中修改定制代码,后续可再选择[手动部署](#install)方式导入项目源码到HBuilderX。

1. 在插件市场点击一键部署插件到uniCloud

D
DCloud_LXH 已提交
99
![](https://web-assets.dcloud.net.cn/unidoc/zh/admin%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2-0.png)
VK1688's avatar
VK1688 已提交
100 101 102 103 104

2. 选择服务空间(目前只支持选择腾讯云服务空间,且不可以是协作者身份,需空间创建者的账号登录)

如需要部署在阿里云空间,则请使用[手动部署](#install)方式

D
DCloud_LXH 已提交
105
![](https://web-assets.dcloud.net.cn/unidoc/zh/admin%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2-1.png)
VK1688's avatar
VK1688 已提交
106 107 108

3. 在此页面隔几分钟刷新点击一下刷新,直到提示部署完成。

D
DCloud_LXH 已提交
109
![](https://web-assets.dcloud.net.cn/unidoc/zh/admin%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2-2.png)
VK1688's avatar
VK1688 已提交
110 111 112

4. 部署完成后,点击前端网页默认访问链接即可访问uni-admin

D
DCloud_LXH 已提交
113
![](https://web-assets.dcloud.net.cn/unidoc/zh/admin%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2-3.png)
VK1688's avatar
VK1688 已提交
114 115 116 117

### 手动部署@install

当你需要使用`uni-admin`来开发时,需要使用`手动部署`方式导入源码到HBX中进行开发。
Q
qiang 已提交
118 119 120

#### 创建

F
fasttian 已提交
121
[HBuilderX](https://www.dcloud.io/hbuilderx.html) 3.0+版本新建 uni-app 项目,选择 uni-admin 项目模板,如下图
Q
qiang 已提交
122

D
DCloud_LXH 已提交
123
![download-admin](https://web-assets.dcloud.net.cn/unidoc/zh/create-admin.png)
Q
qiang 已提交
124 125 126

创建完成后,可以跟随`云服务空间初始化向导`初始化项目,创建并绑定云服务空间

D
DCloud_LXH 已提交
127
![download-admin](https://web-assets.dcloud.net.cn/unidoc/zh/cloud-init.png)
Q
qiang 已提交
128

F
fasttian 已提交
129
<!-- 除了可视化向导外,也可以从[https://github.com/dcloudio/uni-admin](https://github.com/dcloudio/uni-admin)获取代码。 -->
Q
qiang 已提交
130 131 132 133

#### 运行

1. 进入 admin 项目
134
2.`uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json` 文件中填写自己的 `passwordSecret` 字段 (用于加密密码入库的密钥) 和 `tokenSecret` 字段 (为生成 token 需要的密钥,测试期间跳过本条也可以)
Q
qiang 已提交
135
3. 右键 uniCloud目录 运行云服务空间初始化向导,初始化数据库和上传部署云函数(如已创建并绑定云服务空间,则跳过此步)
F
fasttian 已提交
136
4. 点击HBuilderX工具栏的运行【Ctrl+r / cmd+r】 -> 运行到浏览器。如果是连接本地云函数调试环境,上一步可以不上传云函数,但数据库仍需初始化。
Q
qiang 已提交
137 138 139 140 141
5. 从启动后的登录页面的底部,进入创建管理员页面(仅允许注册一次管理员账号)

**注意**

- 浏览器联网失败,报 `request:fail`,需要去云服务空间的`跨域配置`配置跨域域名,需带端口。[详见](https://uniapp.dcloud.net.cn/uniCloud/quickstart?id=useinh5)
F
fasttian 已提交
142
- 如从未接触过uniCloud,是无法直接上手uni-admin的,建议先通读下uniCloud文档的概念介绍和快速上手章节。[详见](https://uniapp.dcloud.net.cn/uniCloud/README)
Q
qiang 已提交
143

VK1688's avatar
VK1688 已提交
144
## 目录结构
Q
qiang 已提交
145 146

```bash
D
DCloud_LXH 已提交
147
┌── cloudfunctions                      # 云函数
inkwalk's avatar
inkwalk 已提交
148
├── common        
D
DCloud_LXH 已提交
149 150
│   │── admin-icons.css                 # admin-icons 图标样式
│   │── theme.scss                      # 换肤功能样式
inkwalk's avatar
inkwalk 已提交
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
│   │── uni.css                         # 公共样式
│   └── uni-icons.css                   # icon样式
├── components                          # 自定义组件
├── js_sdk                              # js sdk
│   └── uni-stat                               
│       └── util.js                     # uni统计相关工具方法       
├── pages                               # 页面
│   │── index                           # 首页
│   │── login                           # 登录页
│   │── system                          # 系统管理
│   │   │── app                         # 应用管理
│   │   │── menu                        # 菜单管理
│   │   │── permission                  # 权限管理
│   │   │── role                        # 角色管理
│   │   │── tag                         # 标签管理
│   │   └── user                        # 用户管理
│   └── uni-stat                        # uni统计
│       │── channel                     # 渠道(app)
│       │   │── channel.vue             # 页面(下同)
│       │   └── fieldsMap.js            # 字段配置(下同)
│       │── device                      # 设备统计
│       │   │── activity                # 渠道/场景分析
│       │   │   │── activity.vue       
│       │   │   └── fieldsMap.js     
│       │   │── comparison              # 平台对比
│       │   │   │── comparison.vue       
│       │   │   └── fieldsMap.js     
│       │   │── overview                # 今日概览
│       │   │   │── overview.vue       
│       │   │   └── fieldsMap.js     
│       │   │── retention               # 留存
│       │   │   │── retention.vue       
│       │   │   └── fieldsMap.js     
│       │   │── stickiness              # 粘性
│       │   │   │── stickiness.vue       
│       │   │   └── fieldsMap.js     
│       │   └── trend                   # 趋势分析
│       │       │── trend.vue            
│       │       └── fieldsMap.js         
│       │── error                       # 错误分析
│       │   │── error.vue             
│       │   └── fieldsMap.js            
│       │── event                       # 事件分析
│       │   │── event.vue             
│       │   └── fieldsMap.js            
│       │── index                       # 统计首页
│       │   │── index.vue             
│       │   └── fieldsMap.js            
│       │── page-ent                    # 入口页
│       │   │── page-ent.vue             
│       │   └── fieldsMap.js            
│       │── page-res                    # 受访页
│       │   │── page-res.vue             
│       │   └── fieldsMap.js            
│       │── scene                       # 场景值(小程序)
│       │   │── scene.vue             
│       │   └── fieldsMap.js            
│       └── user                        # 用户统计
│           │── activity                # 渠道/场景分析
│           │   │── activity.vue      
│           │   └── fieldsMap.js    
│           │── comparison              # 平台对比
│           │   │── comparison.vue      
│           │   └── fieldsMap.js    
│           │── overview                # 今日概览
│           │   │── overview.vue      
│           │   └── fieldsMap.js    
│           │── retention               # 留存
│           │   │── retention.vue      
│           │   └── fieldsMap.js    
│           │── stickiness              # 粘性
│           │   │── stickiness.vue      
│           │   └── fieldsMap.js    
│           └── trend                   # 趋势分析
│               │── trend.vue           
│               └── fieldsMap.js    
Q
qiang 已提交
227
├── static
inkwalk's avatar
inkwalk 已提交
228 229 230 231 232 233 234 235 236 237 238
├── store                               # vuex
├── windows       
│   │── component                       # 项目中使用的组件
│   │── leftWindow.vue                  # 左侧窗口(菜单栏)
│   └── topWindow.vue                   # 顶部窗口(导航栏)
├── admin.config.js                     # 系统配置(配置导航,菜单等)
├── App.vue       
├── main.js       
├── mainfest.json       
├── pages.json        
├── postcss.config.js                   # postcss 配置(浏览器兼容性)
Q
qiang 已提交
239 240 241
└── uni.scss
```

VK1688's avatar
VK1688 已提交
242
## 登录页
Q
qiang 已提交
243 244 245 246 247

首次使用,可以通过登录页面底部链接创建一个超级管理员(仅允许创建一次),该接口会判断系统里如果有 admin 角色的用户,就不再允许添加新的超级管理员。

> 注意:注册完毕后,建议从登录页面移除该链接

VK1688's avatar
VK1688 已提交
248
![login](https://web-assets.dcloud.net.cn/unidoc/zh/uni-admin/uni-admin-1.png)
Q
qiang 已提交
249

VK1688's avatar
VK1688 已提交
250
## 分栏窗体介绍
Q
qiang 已提交
251 252 253

登录后我们会看到如下窗体, 窗体分为三个部分,topWindow 顶部窗口(导航栏),leftwindow 左侧窗口(菜单栏),右侧的内容主窗体

D
DCloud_LXH 已提交
254
![index](https://web-assets.dcloud.net.cn/unidoc/zh/pc-admin%E5%89%AF%E6%9C%AC.png)
Q
qiang 已提交
255

VK1688's avatar
VK1688 已提交
256
### 顶部窗口(导航栏)
Q
qiang 已提交
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285

顶部窗口默认在左侧展示系统 Logo、右侧显示导航链接,效果如上图。展示内容可通过项目根目录下的`admin.config.js`文件进行配置,如下为示例:

```js
# admin.config.js
export default {
  navBar: {// 顶部导航
    logo:"https://www.example.com/logo.png",//左侧 Logo
    links: [ // 右侧链接
      {
        text: "Admin框架文档",
        url: "https://uniapp.dcloud.net.cn/uniCloud/admin",
      },
      {
        text: "浏览更多Admin插件",
        url: "https://ext.dcloud.net.cn/?cat1=7&cat2=74",
      }
    ],
  },
};
```

顶部导航栏的样式,可通过项目根目录下的`uni.scss`进行自定义,如下:

```css
#uni.scss $top-window-bg-color: #fff; /* 背景色 */
$top-window-text-color: #999; /* 文字颜色 */
```

VK1688's avatar
VK1688 已提交
286
### 左侧窗口(菜单栏)
Q
qiang 已提交
287 288 289 290 291 292 293 294

左侧窗口内主要是菜单,菜单包含静态菜单和动态菜单,支持无限层级嵌套,但建议层级不要超过三级

- 静态菜单: 所有登录用户角色都能看到
- 动态菜单: 根据角色的权限自动生成

  > 用户登录时,会根据用户的 _角色_ 去查找其拥有的 _权限_ ,再根据 _权限_ 去查找对应的 _菜单_

VK1688's avatar
VK1688 已提交
295
#### 管理静态菜单
Q
qiang 已提交
296

F
fasttian 已提交
297
通过 [admin.config.js](https://github.com/dcloudio/uni-admin/blob/master/admin.config.js) 配置侧边栏内容,所有用户都能看到静态菜单。
Q
qiang 已提交
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326

```js
export default {
  // 侧边栏
  sideBar: {
    // 配置静态菜单列表(放置在用户被授权的菜单列表下边)
    staticMenu: [
      {
        menu_id: "demo",
        name: "静态功能演示",
        icon: "uni-icons-list",
        children: [
          {
            menu_id: "icons",
            name: "图标",
            url: "/pages/demo/icons/icons"
          },
          {
            menu_id: "table",
            name: "表格",
            url: "/pages/demo/table/table"
          }
        ]
      }
    ]
  }
};
```

VK1688's avatar
VK1688 已提交
327
#### 管理动态菜单
Q
qiang 已提交
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354

在左侧导航菜单中,找到`系统管理 -> 菜单管理`,可视化的维护菜单。

菜单数据存储在云数据库的 `opendb-admin-menus` 表中。该表字段说明如下:

_菜单表字段解释:_

| 字段        | 类型      | 必填 | 描述                                                 |
| :---------- | :-------- | :--- | :--------------------------------------------------- |
| menu_id     | Object ID | 是   | 菜单 Id                                              |
| name        | String    | 是   | 菜单文字                                             |
| icon        | String    | 否   | 菜单图标                                             |
| url         | String    | 否   | 菜单对应的页面链接(只有没有子菜单的菜单项可以配置) |
| sort        | Integer   | 否   | 在同级菜单中的排序,数组越大越靠后                   |
| parent_id   | String    | 否   | 父级菜单 Id                                          |
| permission  | Array     | 否   | 菜单权限(只有没有子菜单的菜单项可以配置)           |
| enable      | Boolean   | 是   | 菜单状态:false 禁用 true 启用                       |
| create_date | Timestamp | 是   | 创建时间                                             |

_添加菜单记录需要注意:_

菜单项分目录菜单和页面菜单。

- 目录菜单项:非叶子节点,点击后展开子菜单,自身没有 `URL` 。需至少一个子菜单的 `url` 字段不能为空,该菜单才能在页面显示
- 页面菜单项:叶子节点,无子菜单,且 `url` 字段不能为空,点击该菜单项会转到`url`页面。如果 `url` 为空则该菜单无法显示。


VK1688's avatar
VK1688 已提交
355
#### 侧边栏样式管理
Q
qiang 已提交
356

F
fasttian 已提交
357
通过 [uni.scss](https://github.com/dcloudio/uni-admin/blob/master/uni.scss) 配置侧边栏样式
Q
qiang 已提交
358 359 360 361 362 363 364 365 366 367 368 369

> 调整菜单颜色时,只需设置菜单背景色 `$menu-bg-color`,自行搭配文字前景色即可

```css
$left-window-bg-color: #fff; /* 左侧窗口背景色 */
$menu-bg-color: #fff; /* 一级菜单背景色 */
$sub-menu-bg-color: darken($menu-bg-color, 8%); /* 二级以下菜单背景色 */
$menu-bg-color-hover: darken($menu-bg-color, 15%); /* 菜单 hover 背景颜色 */
$menu-text-color: #333; /* 菜单前景色 */
$menu-text-color-actived: #409eff; /* 菜单激活前景色 */
```

VK1688's avatar
VK1688 已提交
370
### 右侧窗口(内容主窗体)
Q
qiang 已提交
371 372 373 374 375 376

右侧窗口是内容主窗体,和 uni-app 保持一致,用户登录后看到的第一个页面,默认是 pages 数组中第一项表示应用启动页。

如果想将自己开发的页面调到登录后首页,可在 page.json 调整。


VK1688's avatar
VK1688 已提交
377
## 应用管理 <Badge text="uni-admin 1.9.3+" />@app-manager
D
DCloud_LXH 已提交
378

D
DCloud_LXH 已提交
379
在进入应用管理后可看到如下界面,点击右上角 `新增` 按钮可新增一个应用
D
DCloud_LXH 已提交
380
![新增应用](https://web-assets.dcloud.net.cn/unidoc/zh/create_app(1).png)
D
DCloud_LXH 已提交
381 382 383 384

**整体界面布局**
  > 本页面信息,在应用发布、app升级模块中,都会关联使用,请认真填写

D
DCloud_LXH 已提交
385
  ![新增页面](https://web-assets.dcloud.net.cn/unidoc/zh/create_app_page.jpg)
D
DCloud_LXH 已提交
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407

**各项信息说明**

- 基础信息

	1. `AppID`:所要发布的 app 的 id。唯一
	2. `应用名称`:应用的名称,填写后不可更改
	3. `应用简介`:生成发布页时,会在应用名称下方显示

- 图片素材

	1. `应用图标`:该应用的图标信息
	2. `应用截图`:该应用的实际截图信息

- App 信息

	1. 勾选代表填写此类信息,不勾选默认折叠
	2. Android 平台:可以选择手动填写还是上传安装包到云存储自动填写下载链接
	3. `自动填充`:仅在编辑页面有。会自动从`App 升级中心`同步 App 当前已上线的安装包信息。

- 小程序/快应用信息

408 409
	1. 勾选代表需要发布该类信息,不勾选会默认折叠
	2. `快应用`:只有上传了`快应用码`,才会在统一发布页展示
D
DCloud_LXH 已提交
410 411 412 413 414 415 416 417 418 419 420 421 422 423

- H5

	1. `H5`:当你填写了链接,才会在统一发布页显示

**Tips**
1.`manifest.json -> 源码视图`中添加以下配置:

   ```js
   "networkTimeout":{
   	"uploadFile":1200000	// 单位:ms。 如果不配置,上传大文件可能会超时
   }
   ```

VK1688's avatar
VK1688 已提交
424
## uni-portal:统一发布页 <Badge text="uni-admin 1.9.3+" />@uni-portal
hbcui1984's avatar
hbcui1984 已提交
425

hbcui1984's avatar
hbcui1984 已提交
426
`uni-admin 1.9.3+`版本开始,`uni-portal`作为`uni-admin`的内置插件,内置在`uni-admin`项目中。
D
DCloud_LXH 已提交
427

hbcui1984's avatar
hbcui1984 已提交
428
`uni-admin`管理员通过“应用管理”模块中填写的应用信息(如apk下载地址、小程序二维码)后,可快捷生成应用发布页。
D
DCloud_LXH 已提交
429

hbcui1984's avatar
hbcui1984 已提交
430
更多uni-portal的介绍,详见:[uni-portal](uni-portal.md)
D
DCloud_LXH 已提交
431

VK1688's avatar
VK1688 已提交
432
## uni-upgrade-center:App升级中心 <Badge text="uni-admin 1.9.3+" />@uni-upgrade-center
D
DCloud_LXH 已提交
433

434
`uni-admin 1.9.3+`版本开始,`uni-upgrade-center`作为`uni-admin`的内置插件,内置在`uni-admin`项目中。
D
DCloud_LXH 已提交
435

436
`uni-admin`管理员通过“应用管理”模块中填写的应用信息(如apk下载地址、小程序二维码)后,可通过列操作进入升级中心进行版本管理。
D
DCloud_LXH 已提交
437

438
更多uni-portal的介绍,详见:[uni-upgrade-center](upgrade-center.md)
hbcui1984's avatar
hbcui1984 已提交
439

VK1688's avatar
VK1688 已提交
440
## uni统计2.0
hbcui1984's avatar
hbcui1984 已提交
441 442 443

uni统计2.0 是开源、全端、云端一体、更适合uni-app的统计平台,下图为概览图和简介,详见[统计文档](https://uniapp.dcloud.net.cn/uni-stat-v2.html)

D
DCloud_LXH 已提交
444
![统计-概况页](https://web-assets.dcloud.net.cn/unidoc/zh/admin3.png)
hbcui1984's avatar
hbcui1984 已提交
445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466

**1. 全端**

全端流量统计,一张报表可查看所有端(iOS、Android、Web 及各家小程序)的运营数据。

无需在各端接不同的sdk、无需在不同报表看数据。目前市面已知唯一一个一张报表看遍业务全景的方案。

**2. 开源、免费、自由定制**

无论前端采集数据的SDK、云端接收数据的云函数、云端跑批统计的云函数、展示统计结果的报表,所有这些代码全部开源。

前端自定义打点,后端自定义统计维度,自由定制报表,一切都可以灵活定制。

**3. 私有部署、数据自控**

使用传统saas类统计产品,所有数据都上报给统计服务厂商。

`uni统计2.0`基于`uniCloud`实现,云函数、统计数据全部托管在开发者自己的服务空间(阿里云或腾讯云自选)中,开发者对自己的统计数据拥有完整的控制权。

**4. 默认功能丰富**

- 设备统计
C
chenruilong 已提交
467
- 注册用户统计(基于[uni-id](https://uniapp.dcloud.io/uniCloud/uni-id-summary)
hbcui1984's avatar
hbcui1984 已提交
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493
- 页面统计
- 新增、活跃、留存、跳出率分析
- 渠道分析:辅助渠道推广
- 错误统计和上报:辅助产品质量提升
- 自定义打点、开源可扩展的报表

**5. 有效的错误分析**

传统统计平台,都没有js错误统计。开发者无法了解到自己的js代码在哪些设备上会报错。

uni统计的错误信息更全面,包括 js前端错误和 App 原生层的崩溃。辅助开发者把应用做的更好。

**6. 更适合uni-app和uniCloud**

uni统计深入uni-app和uniCloud框架底层,提供了众多其他统计平台无法提供的功能:
- uni-app全端识别,无需对接不同sdk、无需在不同报表中切换和自己累加数据
- 自动识别uni-app路由,自动采集页面标题(基于navigationBar或uni-title组件)
- 自动捕获js错误,上报app端原生崩溃日志
- 兼容uni-app渠道包打包体系,自动识别渠道包
- 基于uni-id账户体系,自动出具注册用户(不是设备)的新增、活跃、留存报表
- 兼容uniCloud [opendb规范](/uniCloud/opendb),从服务器端统计各项数据

**7. 开放生态**

uni统计开源且基于[uni-admin](/uniCloud/admin)的插件规范提供了插件机制,会有更多插件作者提供各种丰富的统计插件(如电商统计、内容统计等)。见[插件市场](https://ext.dcloud.net.cn/?cat1=7&cat2=74&type=HotList)

C
chenruilong 已提交
494

C
chenruilong 已提交
495
## 群发短信@batch-sms <Badge text="uni-admin 2.1.0+" />
C
chenruilong 已提交
496 497 498 499 500

如有客户关怀、会员服务、电商活动、新品上线等场景需要给用户发送短信时,无需开发,在uni-admin控制台选择用户/标签即可向用户群发短信,省时高效。
同时支持动态替换短信模板变量,使短信更加个性化。

### 功能介绍
C
chenruilong 已提交
501
- 支持 给指定用户、全部用户、指定标签用户群发短信
C
chenruilong 已提交
502 503 504
- 指定用户:在用户列表中勾选要接收短信的用户(必须有手机号)后,点击“群发信息”创建短信任务。
- 全部用户:在用户列表界面直接点击“群发短信”创建短信任务。
- 指定标签用户:在用户标签列表中勾选标签(如标签关联的用户没有手机号将不会发送短信)后,点击“群发短信”创建短信任务。
C
chenruilong 已提交
505
- 支持 短信模板中的变量替换为“固定文本”与“数据库字段”
C
chenruilong 已提交
506 507
- 固定文本:固定字符串,所有用户会接收同样的内容,例如:```DCloud```
- 数据库字段:可以关联数据库中指定字段,内容较为个性化。格式为 ```{数据库表名.字段}```,例如: ```{uni-id-users.username}``` 目前仅支持```uni-id-users```
C
chenruilong 已提交
508 509
- 支持 发送前预览前5人短信内容,用于检测模板变量是否配置正确,提高发送成功率。

C
chenruilong 已提交
510
![群发短信](https://web-assets.dcloud.net.cn/unidoc/zh/86928cf2-2f69-4c0f-a46f-a617e3fc1c83.png)
C
chenruilong 已提交
511

C
chenruilong 已提交
512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577
### 使用方式

**步骤一:开通短信服务**

如您首次使用请登录[DCloud开发者中心](https://dev.dcloud.net.cn/)开通短信服务

**步骤二:添加签名与模板**

[签名配置页面](https://dev.dcloud.net.cn/pages/sms/sign)添加短信签名

[模板配置页面](https://dev.dcloud.net.cn/pages/sms/template)中添加短信模板

例如:`【测试】亲爱的${username}, 祝您生日快乐!感谢您长期以来对xx商城的信任与支持,会员生日月畅享购物双倍积分,期待您的光临!`

**步骤三:导出短信模板**

在短信模板页面-点击”导出模板“按钮,导出短信模板。
![导出短信模板](https://web-assets.dcloud.net.cn/unidoc/zh/20230107203307.png)

**步骤四:通过uni-admin控制台发送短信**

如您未部署过uni-admin,请在插件市场中安装[uni-admin](https://ext.dcloud.net.cn/plugin?id=3268)

首次使用,在 ```uni-config-center/uni-sms-co/config.json```中配置短信 API 密钥
```json
{
    "smsKey": "your smsKey",
    "smsSecret": "your smsSecret"
}
```

配置完成后,登录uni-admin控制台,打开用户管理页面,请按照图示步骤上传短信模板(步骤三导出的短信模板):
![上传短信模板](https://web-assets.dcloud.net.cn/unidoc/zh/20230107201145.png)
短信模板上传成功后,短信模板即可显示,如下:
![短信模板上传成功](https://web-assets.dcloud.net.cn/unidoc/zh/20230107202329.png)

选择要接收短信的用户,如下:
![群发用户](https://web-assets.dcloud.net.cn/unidoc/zh/20230107202752.png)
或者如果已经对用户进行了分组,可以在标签管理中选择标签后发送短信,如下:
![群发用户标签](https://web-assets.dcloud.net.cn/unidoc/zh/20230107203019.png)

目前短信支持固定文本发送与关联数据表字段发送,以下介绍两种方式如何发送

**固定文本发送**

选择短信模板,如果没有出现变量模板配置就是固定文本模式,如下:
![](https://web-assets.dcloud.net.cn/unidoc/zh/20230107204518.png)
可以在发送前点击预览,可以预览发送的第一条短信,用来检查短信内容是否正确,如下:
![](https://web-assets.dcloud.net.cn/unidoc/zh/20230107204807.png)
确认短信内容无误后,点击提交即可发送短信,发送短信之后可以在[DCloud开发者中心](https://dev.dcloud.net.cn/)-查看[短信发送记录](https://dev.dcloud.net.cn/pages/sms/sendLog)

**使用数据表字段作为模板变量发送**

选择短信模板,如果出现变量模板配置就是数据表查询模式,如下:
![](https://web-assets.dcloud.net.cn/unidoc/zh/20230107205208.png)
如上,短信变量字段为”username“,配置替换字段为uni-id-users表中username字段,在发送短信时会替换掉短信变量。

短信变量支持固定值和数据表查询两种方式;固定值如:各位同事,数据表查询如:{uni-id-users.username};请注意,若使用数据表查询方式,目前仅支持查询 uni-id-users 表;并注意确保数据库中查询字段值不为空,否则短信将发送失败。

在发送之前可以点击预览,查看第一条短信的内容,确保变量模板配置正确,如下,username将替换为“张三”:
![](https://web-assets.dcloud.net.cn/unidoc/zh/20230107205823.png)

确认短信内容无误后,点击提交即可发送短信,发送短信之后可以在[DCloud开发者中心](https://dev.dcloud.net.cn/)-查看[短信发送记录](https://dev.dcloud.net.cn/pages/sms/sendLog)
![](https://web-assets.dcloud.net.cn/unidoc/zh/20230107210406.png)

如有任何问题可在[论坛发帖](https://ask.dcloud.net.cn)咨询或加uniCloud短信服务交流QQ群(695645208)咨询
C
chenruilong 已提交
578

VK1688's avatar
VK1688 已提交
579
## 用户-角色-权限
hbcui1984's avatar
hbcui1984 已提交
580

C
chenruilong 已提交
581
uni-admin 框架基于 uni-id,复用 uni-id 的用户、角色、权限系统,详见[uni-id](https://uniapp.dcloud.io/uniCloud/uni-id-summary)
hbcui1984's avatar
hbcui1984 已提交
582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616

需要注意的是,admin 框架的动态菜单同样依赖 uni-id 的权限表(uni-id-permissions)。

菜单表(opendb-admin-menus)定义如下:

| 字段        | 类型      | 必填 | 描述                                                 |
| :---------- | :-------- | :--- | :--------------------------------------------------- |
| menu_id     | Object ID | 是   | 菜单 Id                                              |
| name        | String    | 是   | 菜单文字                                             |
| icon        | String    | 否   | 菜单图标                                             |
| url         | String    | 否   | 菜单对应的页面链接(只有没有子菜单的菜单项可以配置) |
| sort        | Integer   | 否   | 在同级菜单中的排序,数组越大越靠后                   |
| parent_id   | String    | 否   | 父级菜单 Id                                          |
| permission  | Array     | 否   | 菜单权限(只有没有子菜单的菜单项可以配置)           |
| enable      | Boolean   | 是   | 菜单状态:false 禁用 true 启用                       |
| create_date | Timestamp | 是   | 创建时间                                             |

admin 提供了两个内置方法,方便在页面中鉴定登录用户权限和角色:

| 方法             | 作用                       | 入参   | 返回值  |
| :--------------- | :------------------------- | :----- | :------ |
| `$hasPermission` | 鉴定登录用户是否具有某权限 | String | Boolean |
| `$hasRole`       | 鉴定登录用户是否具有某角色 | String | Boolean |

```html
<template>
  <view>
    <!-- 包含 user/add 权限的用户可以看到新增按钮 -->
    <button v-if="$hasPermission('USER_ADD')">新增</button>
    <!-- 包含 admin 角色的用户可以看到删除按钮 -->
    <button v-if="$hasRole('admin')">删除</button>
  </view>
</template>
```

VK1688's avatar
VK1688 已提交
617
### 给系统创建多个登录账户并设置不同的权限@mutiladmin
hbcui1984's avatar
hbcui1984 已提交
618
下面以增加一个普通成员的角色为例,该角色的用户登录admin系统后只能看用户表数据,不能改动数据。
VK1688's avatar
VK1688 已提交
619
1. 先用admin账户登录admin系统。
hbcui1984's avatar
hbcui1984 已提交
620 621 622
- admin示例项目地址:[https://unicloudadmindemo.dcloud.net.cn/#/pages/login/login](https://unicloudadmindemo.dcloud.net.cn/#/pages/login/login)
- 体验账号:admin      密码:123456

VK1688's avatar
VK1688 已提交
623
2. 创建权限。在uni-admin左侧菜单的权限管理,新增权限“查询信息”,标识为“read”
D
DCloud_LXH 已提交
624
![](https://web-assets.dcloud.net.cn/unidoc/zh/admin-permision.jpg)
VK1688's avatar
VK1688 已提交
625
3. 创建角色。在左侧菜单的角色管理里,新增角色“普通成员”,标识为“member”,绑定上面的“查询信息”权限
D
DCloud_LXH 已提交
626
![](https://web-assets.dcloud.net.cn/unidoc/zh/4mutiladmin.jpg)
VK1688's avatar
VK1688 已提交
627
4. 创建账户并赋予角色。在左侧菜单的用户管理里,添加用户“张三”,然后给用户赋予角色“普通成员”
D
DCloud_LXH 已提交
628
![](https://web-assets.dcloud.net.cn/unidoc/zh/16f173a2-e889-404b-b509-346d3b929a0d.jpg)
VK1688's avatar
VK1688 已提交
629
5. 如果你退出账户,登录刚刚创建的账户张三。我们发现会提示:该账户没有被赋予登录admin系统的权限, 请联系系统管理员绑定角色赋权限。因为:你登录的账户没有访问任何admin系统菜单的权限,所以不能访问admin系统。
D
DCloud_LXH 已提交
630
![](https://web-assets.dcloud.net.cn/unidoc/zh/9mutiladmin.jpg)
VK1688's avatar
VK1688 已提交
631
6. 设置有查询信息权限的人,拥有访问admin系统菜单"用户管理"的权限。在左侧菜单的菜单管理里,找到菜单“用户管理”,点修改,在权限列表里勾选“查询信息”,也就是有查询信息权限的人,可以看到本菜单
D
DCloud_LXH 已提交
632
![](https://web-assets.dcloud.net.cn/unidoc/zh/11mutiladmin.jpg)
VK1688's avatar
VK1688 已提交
633
7. 这时你用账户“张三”登录,就能进入到admin系统。但你会看到如下图提示“权限校验未通过”。因为刚刚仅为该用户赋予了访问菜单的权限。还未赋予访问uni-id-users表的阅读权限
D
DCloud_LXH 已提交
634
![](https://web-assets.dcloud.net.cn/unidoc/zh/12mutiladmin.jpg)
VK1688's avatar
VK1688 已提交
635
8. 需要在hbuilderx中将表uni-id-users的schema文件中设置新角色的权限,将permission下的read节点配置为`"read": "'read' in auth.permission"`,并上传到云端。当然这在示例项目不能实现,需要你自己搭建admin系统,重复以上步骤,[点此下载uni-admin](https://ext.dcloud.net.cn/plugin?id=3268)
D
DCloud_LXH 已提交
636
![](https://web-assets.dcloud.net.cn/unidoc/zh/d92e3738-f25a-4c46-9ab4-2edbdf92518a.png)
VK1688's avatar
VK1688 已提交
637
9. 此时你再刷新页面即可访问用户管理的数据列表
hbcui1984's avatar
hbcui1984 已提交
638

VK1688's avatar
VK1688 已提交
639
## icon 图标
hbcui1984's avatar
hbcui1984 已提交
640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655

admin 框架内置了一套 icon 图标,在`静态功能演示-图标`菜单中,点击图标即可复制图标的 class 定义。

选中样式后,在新建菜单页面的表单中输入样式名称。没有样式的菜单项将没有图标。

当然,你也可以使用三方 icon 库。以使用 `elementUI` 的图标为例,在 `app.vue` 中导入图标库的样式文件:

```javascript
<style>
  /* 注意此处仅为 icon 使用示例,建议引入纯净图标库,避免增加不必要的 css */
  @import 'https://unpkg.com/element-ui/lib/theme-chalk/index.css';
</style>
```

在标签上使用图标的 class 名称即可:``el-icon-s-tools``

VK1688's avatar
VK1688 已提交
656
## 新增页面
hbcui1984's avatar
hbcui1984 已提交
657 658 659 660 661 662 663 664 665 666 667 668

新增页面可以自己开发页面,也可以从插件市场下载插件。页面如需添加菜单,参见上文的[菜单管理](#静态菜单和动态菜单)

开发页面不局限开发方式:

- 可以新增普通的页面,在前端 callfunction,后台搭配云函数操作
- 可以使用云函数单文件路由,在项目中默认包含了一个[uni-cloud-router](https://uniapp.dcloud.io/uniCloud/uni-cloud-router) 的单文件路由,也可以使用插件市场的其他单文件路由
- 可以使用 clientdb,在前端直接操作数据库,后台配置 db schema 进行权限和格式校验
- 可以使用schema2code生成uni-admin页面。这是最为常用、最高效的页面开发模式。[详见](https://uniapp.dcloud.net.cn/uniCloud/schema?id=autocode)

> 注意:在使用 uni-cloud-router 时,controller 下的文件夹和文件,不要命名相同,例如:app/room 这个写法目前分辨不了 `app` 是文件 `app.js`,还是文件夹 `app`

VK1688's avatar
VK1688 已提交
669
### 自己开发页面
hbcui1984's avatar
hbcui1984 已提交
670 671 672

admin 中开发页面,和 uni-app 开发 vue 页面是一致的。

VK1688's avatar
VK1688 已提交
673
### 从插件市场下载插件,并注册到 admin 的左侧动态菜单中
hbcui1984's avatar
hbcui1984 已提交
674 675 676 677 678 679 680 681 682 683 684 685

_使用步骤:_

1.[插件市场](https://ext.dcloud.net.cn/)导入插件
2. 在 HBuilder X 3.1+ 中选择添加插件的项目
3. 在插件的 db_init.json 文件上右键,点击“初始化云数据库”
4. 在菜单管理中的添加【待添加菜单】
5. 刷新 admin 即可在菜单栏看到新增的菜单

---------------------------------- 分割线 ----------------------------------------


VK1688's avatar
VK1688 已提交
686
## admin 插件开发
Q
qiang 已提交
687

F
fasttian 已提交
688
我们不仅是插件的使用者,也可以是插件的开发者,那么如何开发一款 uni-admin 插件呢?
Q
qiang 已提交
689 690 691

对于 admin 插件来说,可以项目中开发完成功能,再将这项功能剥离成一个插件。其他开发者使用插件的过程,就是将插件还原成项目中的一项功能。

DCloud_JSON's avatar
DCloud_JSON 已提交
692
admin 插件包含云函数、前端页面,它必须基于 uni-id 的账户和权限体系,它不限制云函数的开发方式,可以自己写普通云函数、可以用任何单路由云函数框架、也可以用 clientDB。
Q
qiang 已提交
693

DCloud_JSON's avatar
DCloud_JSON 已提交
694
admin插件不能是整体工程,不能包含manifest。它更类似于页面模板。
Q
qiang 已提交
695 696 697 698 699 700 701 702 703 704 705 706

_admin 插件的目录结构:_

```bash
├── uniCloud
│   ├── cloudfunctions          # 云函数
│   └── database
│       ├── xxx.schema.json     # 数据库schema文件
│       └── db_init.json        # 数据库初始化文件
├── js_sdk                      # js sdk
├── pages                       # 页面
│   └── your-page               # 你的页面
F
fasttian 已提交
707
└── %pluginId%-menu.json        # 向uni-admin左侧菜单注册新菜单的声明文件。pluginId 为你上传插件市场时填的插件id。uni_module下不需要pluginId,直接就是menu.json
Q
qiang 已提交
708 709 710 711
```

**%pluginId%-menu.json 配置**

F
fasttian 已提交
712
本文件用于插件注册 uni-admin左侧的动态菜单。
Q
qiang 已提交
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735

pluginId 为你上传插件市场时填的插件id(插件市场每个插件都有一个唯一id)。

假使你的插件id为“xxx-yyy”,那么在插件的根目录放置 xxx-yyy-menu.json ,按下文格式配置内容。(uni_module下不需要pluginId,直接就是menu.json)

```json
[
  {
    "menu_id": "xxx-yyy",
    "name": "显示名称",
    "icon": "",
    "url": "/pages/system/permission/list",
    "sort": 1,
    "parent_id": "system_management",
    "permission": []
  }
]
```

上述示例中:
- `menu_id` 与之前的admin系统中的menu_id不重复即可。一个admin插件可以注册多个menu
- `icon` 是uni-ui里的[uni-icons](https://ext.dcloud.net.cn/plugin?id=28)的class名称
- `sort` 菜单的排序,数字越小排序越靠前
F
fasttian 已提交
736
- `parent_id` 该菜单的父级菜单的`menu_id`。如不需要父菜单,即注册到根菜单中,请删除`parent_id`。示例中的"system_management"是uni-admin自带的系统管理菜单的`menu_id`
Q
qiang 已提交
737 738
- `permission`是权限管理,一般情况下插件作者不配置此项,而是由插件的使用者在其具体项目上决定如何控制权限。

F
fasttian 已提交
739
包含%pluginId%-menu.json的插件导入项目后,运行起来uni-admin,菜单管理模块会自动读取这个json文件中的菜单配置,生成【待添加菜单】,配置与 admin【管理动态菜单】同理。插件作者可以在界面上可视化的点击确认添加,即可把菜单加入到他的项目下。
Q
qiang 已提交
740 741 742 743

虽然也可以通过`db_init.json`来进行菜单初始化,但不建议这么操作。很容易发生和用户的数据库的冲突。仍然推荐使用%pluginId%-menu.json方式。

**关于uni-admin和uni-cloud-router公共模块**
F
fasttian 已提交
744
uni-admin自带了一个单路由框架,uni-cloud-router,然后自带了一个uni-admin云函数使用了这个uni-cloud-router。但插件作者的插件,不能写在uni-admin的目录下。插件的云函数,要有插件id前缀,如果你想把你的插件的所有云函数合并成一个云函数,可以新建一个你自己的云函数,在里面引用uni-cloud-router公共模块。
Q
qiang 已提交
745 746 747

**使用schema2code生成admin页面**

F
fasttian 已提交
748
大多数的 admin 插件的表单页面是可以用uniCloud自带的schema2code工具自动生成的,可以直接生成数据库的增删改查的完整页面。所以在 uni-admin 中制作一个插件非常简单。
Q
qiang 已提交
749 750 751 752 753

首先在数据库中配好[DB Schema](https://uniapp.dcloud.io/uniCloud/schema),然后使用 uniCloud web 控制台提供的schema2code生成代码工具,即可快速的生成数据的展示、新建、修改、删除的页面代码,并且自带表单校验。详见:[schema2code](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)

为防止和用户工程的文件冲突,插件的页面应该有插件的前缀,比如 pages/xxx-page。自带的数据库schema文件也推荐带上前缀。

F
fasttian 已提交
754
以下为已存在的 uni-admin 插件列表,可以参考:[https://ext.dcloud.net.cn/?cat1=7&cat2=74&orderBy=UpdatedDate](https://ext.dcloud.net.cn/?cat1=7&cat2=74&orderBy=UpdatedDate)
Q
qiang 已提交
755 756 757

**插件开发后如何上传插件市场**

DCloud_Heavensoft's avatar
DCloud_Heavensoft 已提交
758
插件上传等更多信息,参考 [DCloud 插件开发指南汇总](https://uniapp.dcloud.io/plugin/publish.html) 及其中的 `admin 插件`部分,插件作者可以按此文档提交插件,在插件市场的上传发布页面选择`uniCloud` 分类的 `Admin 插件`
Q
qiang 已提交
759

VK1688's avatar
VK1688 已提交
760
## uni-admin中使用三方组件库
Q
qiang 已提交
761

F
fasttian 已提交
762
uni-admin 支持所有三方的 Vue UI 库,包括 elementUI 等非 uni-app 的 UI 库,但注意这些 for h5 的 ui 库只能在浏览器中使用,无法适配 App 和小程序,按如下操作。
Q
qiang 已提交
763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780

以使用 element-ui 框架为例:

1. 安装 UI 框架

   > npm i element-ui -S

2. 在 main.js 中引用

   ```javascript
   import elementUI from "element-ui";
   import "element-ui/lib/theme-chalk/index.css";

   Vue.use(elementUI);
   ```

注意:
1. uni-app的button、input等组件,是在html的button、input等标签的外面包了一层,做法与微信小程序相同。如果使用for html的库,其css元素选择器可能需要调整后才能符合预期。
F
fasttian 已提交
781
2. 为避免,开发者直接将`用户端项目``管理员端项目`部署到同一个云服务空间的“前端网页托管”导致的文件覆盖问题。
F
fasttian 已提交
782
uni-admin框架运行的基础路径默认为`/admin/`,部署到前端网页托管之后,你需要通过`https://你的域名/admin/`来访问,且路由模式必须为hash。
DCloud_JSON's avatar
DCloud_JSON 已提交
783
如果你希望自定义项目的运行的基础路径,修改`manifest.json`文件的`h5 -> router -> base`的值即可。
Q
qiang 已提交
784

VK1688's avatar
VK1688 已提交
785 786 787
## 常见问题

### 使用uni-admin新建用户无法登录,会提示“该账号暂无权限登录” ?
Q
qiang 已提交
788

VK1688's avatar
VK1688 已提交
789
用户登录逻辑:登录时系统检测没有菜单会提示“暂无权限登录”,需要给新账号绑定角色,角色有菜单方可登录
VK1688's avatar
VK1688 已提交
790

VK1688's avatar
VK1688 已提交
791
### admin账号密码忘记了,如何重置admin账号密码?@resetpassword
VK1688's avatar
VK1688 已提交
792

VK1688's avatar
VK1688 已提交
793 794 795 796 797 798 799 800 801 802
有两个方案

**方案一:**

1. 去数据库把原来的admin账号的role角色改成空数组(这样你就可以再次注册admin2账号)
2. 注册admin2账号,并用admin2账号登录,去用户管理把原先的admin账号的密码重置成123456。
3. 此时就可以登录原来的admin账号了,最后去数据库把admin2账号删了。

**方案二:**

VK1688's avatar
VK1688 已提交
803 804 805 806 807 808 809 810
1. 使用uni-id或uni-id-co注册一个普通的账号,比如账户名:test 密码:123456
2. 前往uniCloud web控制台 - 云数据库 - 打开uni-id-users表 - 找到刚注册的test账号,复制其password字段的值,修改admin账号的password跟test账号的password一致。
3. 此时admin账号的密码就已经重置为123456了