更新记录
1.0.4(2024-03-26) 下载此版本
- 支持支付宝小程序云
1.0.3(2023-08-11) 下载此版本
- 问题单选时支持输入框选项
1.0.2(2023-07-19) 下载此版本
- 更新云对象uni-vote-co
平台兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | √ | √ |
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.8.5 app-vue | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | × | √ | √ | √ |
uni-admin插件通用教程:
uni-admin
是一套基于uniCloud的开源应用管理端系统。详见:uni-admin 基础框架
本插件是uni-admin
系统的扩展插件,为开发者的admin系统添加功能。
需先确保本机有uni-admin
项目,然后将此插件导入到uni-admin
项目下。
如本机没有uni-admin
项目,需要先在HBuilderX中新建项目 -> uni-app项目 -> 选择uni-admin
模板。
如本机的uni-admin
项目版本过老,可能无法使用新插件,需及时升级本机的uni-admin
项目。详见uni-admin
项目更新日志
uni-vote-admin是全端的、开源的、云端一体的问卷投票项目模板管理端。
介绍
uni-vote:用户端,包含问卷列表和问题列表。插件地址
uni-vote-admin:管理端,属于uni-admin插件,包含问卷管理、问题管理、问题选项管理、问卷结果统计等。
- 开源免费,支持多端,包括小程序、Web、App等,自动兼容pc宽屏。
- 基于uniCloud,serverless,无需复杂的服务器部署,无需关心服务器运维。
- 问卷:可以设置有效期,默认是不限制,在admin端发布问卷时可以选择。
- 问卷问题:支持发布单选或多选问题(多选可包含【其他】项,用户输入内容),应用场景:问卷、投票等。
- 问卷规则:统一在
uniCloud/cloudfunctions/uni-vote-co/checkRule.js
,目前默认包含的规则:可根据自己应用场景开启/关闭对应规则、添加自定义规则
- 新用户投票时间限制,比如:禁止注册时间在4小时内的新用户投票
- 投票时间段限制,比如:晚上8点后到早上8点,期间不能投票
- 多问题问卷投票次数限制,比如:每个问卷每个用户只能投票1次
- 单问题问卷投票次数限制,比如:每个问卷每个用户,1个月内,最多投票2次
- 问卷结果统计图在admin端查看。
案例体验
DCloud的产品投票,都是基于uni-vote开发的,体验地址:https://vote.dcloud.net.cn/
管理端界面
问卷列表
创建问卷
创建问题和选项
问卷问题
问卷问题选项
问卷结果
使用指南
说明:本插件依赖于uni-id-pages用户注册登录。
- 安装
uni-vote-admin
管理端插件- 在插件市场打开本插件页面,在右侧点击
使用 HBuilderX 导入插件
,选择你的uni-admin
管理端项目点击确定导入。
- 在插件市场打开本插件页面,在右侧点击
- 在uniCloud目录上右键,点击关联云服务空间或项目,注意管理端和用户端是两个项目,但是连接同一个服务空间。
- 初始化数据库、上传云函数
- 如果是导入新项目,在uniCloud右键
云服务空间初始化向导
- 如果是导入已有项目
- 在项目uniCloud--》cloudfunctions目录,上传云对象
uni-vote-co
。 - 在项目uniCloud--》database目录,上传
uni-vote.schema.json
、uni-vote-questions.schema.json
、uni-vote-questions-options.schema.json
、uni-vote-records.schema.json
、uni-vote-questions-records.schema.json
。
- 在项目uniCloud--》cloudfunctions目录,上传云对象
- 如果是导入新项目,在uniCloud右键
- 运行启动
uni-admin
,在web管理后台,点击左侧菜单栏的菜单管理,添加“投票管理”菜单,注意开启菜单。导入后刷新页面,在uni-admin
左侧菜单,可看到投票管理的菜单项,点击即可进入相关页面添加问卷问题。 - 在插件市场中找到
uni-vote
用户端插件https://ext.dcloud.net.cn/plugin?name=uni-vote,将插件导入至uni-app
用户端项目中,用户端关联管理端项目,共用一个服务空间。 - 在admin端添加完问卷和问题后,在用户端运行至相应平台即可体验。
- 问卷规则限制,在
uniCloud/cloudfunctions/uni-vote-co/checkRule.js
根据自己应用场景开启对应规则或者添加规则,配置完成后在uni-vote-co
右键上传部署。
架构说明和二次开发
uni-vote,有问卷、问卷问题和问卷问题选项这3个概念。问卷问题下的选项可以是单选,也可以是多选。
- 每个问卷下只有单个问题时,应用场景:需求投票等。
- 每个问卷下多个问题时,所有问题组成一个问卷,回答所有问题后提交答案,应用场景:问卷调查等。
uni-vote目前没有的功能:
- 投票结果打分。目前只支持统计票数,不支持答案正确对比,不支持计分。
- 投票问题发起只能在admin端,不支持用户自己发起投票问题。
如果目前的 uni-vote 不能满足你的需求,你可以基于 uni-vote 进行二次开发。
- 问卷查询投票等逻辑在
uniCloud/cloudfunctions/uni-vote-co/index.obj.js
中,可结合自己业务场景在_before添加自定义前置规则。 - 问卷的所有规则在
uniCloud/cloudfunctions/uni-vote-co/checkRule.js
中,可根据自己业务场景开启/关闭已有规则或者添加自定义规则。
目录结构
uni-vote 用户端插件
uni-vote // uni-vote 插件
├── pages // 页面
│ ├── vote
│ │ └── vote.vue // 投票问题页面
│ └── vote-items
│ └── vote-items.vue // 投票项页面
├── pages_init.json // 页面初始化配置
├── package.json // 插件配置
├── changelog.md // 插件更新日志
├── readme.md // 插件文档
└── uniCloud
├── cloudfunctions // 云函数
│ └── uni-vote-co // uni-vote云对象
│ │ ├── checkRule.js // 问卷规则
│ │ ├── index.js // 云对象入口
│ │ └── package.json
└── database // 数据库
├── uni-vote.schema.json // 问卷表
├── uni-vote-questions.schema.json // 问题表
├── uni-vote-questions-options.schema.json // 问题选项表
├── uni-vote-records.schema.json // 问卷记录表
└── uni-vote-questions-records.schema.json // 问题回答记录表
uni-vote-admin 管理端插件
uni-vote-admin // uni-vote-admin 管理端插件
├── menu.json // 菜单初始化配置,通过menu.json注册动态菜单
├── package.json // 插件配置
├── changelog.md // 插件更新日志
├── readme.md // 插件文档
├── pages // 页面
│ ├── uni-vote // 问卷管理
│ │ ├── add.vue // 添加问卷
│ │ ├── edit.vue // 编辑问卷
│ │ └── list.vue // 问卷列表
│ ├── uni-vote-questions // 问题管理
│ │ ├── add.vue // 添加问题
│ │ ├── edit.vue // 编辑问题
│ │ └── list.vue // 问题列表
│ ├── uni-vote-questions-options // 问题项管理
│ │ ├── add.vue // 添加问题项
│ │ ├── edit.vue // 编辑问题项
│ │ └── list.vue // 问题项列表
│ └── uni-vote-records // 问卷记录管理
│ ├── detail.vue // 其他选项内容
│ └── list.vue // 问卷结果统计
└── uniCloud // 云函数
├── cloudfunctions
│ ├── uni-vote-co // uni-vote云对象
│ │ ├── checkRule.js // 问卷规则
│ │ ├── index.obj.js // 云对象入口
│ │ └── package.json
│ │── common // 公共模块
│ │ ├── uni-config-center // 服务端配置中心
│ │ │ └── uni-id //uni-id模块配置目录
│ │ │ └── config.json // uni-id对应的配置数据
│ │ ├── index.js // config-center入口文件
│ │ └── package.json
└── database // 数据库
├── uni-vote.schema.json // 问卷表
├── uni-vote-questions.schema.json // 问题表
├── uni-vote-questions-options.schema.json // 问题选项表
├── uni-vote-records.schema.json // 问卷记录表
└── uni-vote-questions-records.schema.json // 问题回答记录表