投票评选活动小程序
这是一个投票小程序的首页,用户可以在这里看到已经发布的投票列表,每个投票项包括标题、选项、投票截止时间等信息。用户可以通过投票的标题和投票截止时间来了解投票的相关信息,并可以点击该投票按钮进行投票操作。
下面是一个简单的投票小程序的界面设计和实现。
用户登录
这是用户登录页面,用户可以选择使用微信账号进行登录,获取用户的openid、头像、昵称等信息,提高投票的安全性。
获取活动信息
监听页面初次渲染完成时,获取活动信息,主要包含投票评选活动的浏览量、累计投票、参与人数、活动结束时间等信息,用于在页面展示信息。
通过异步请求,读取voteActivity数据表的投票评选活动信息,这里使用了Collection.doc(),获取集合中指定记录的引用。方法接受一个 id 参数,指定需引用的记录的 _id。
实现代码如下:
// 显示 loading 提示框
wx.showLoading({
title: '加载活动中'
});
// 数据库集合的聚合操作实例
voteActivity
.doc(id)
.get()
.then(res => {
// 获取集合数据,或获取根据查询条件筛选后的集合数据。
let data = res.data || {};
let activityInfo = data;
// 隐藏 loading 提示框
wx.hideLoading();
})
读取评选人物列表
在小程序端连接云数据库,读取评选人物列表;
关键代码如下:
// 连接云数据库
const db = wx.cloud.database();
// 获取集合的引用
const voteWorks = db.collection('voteWorks');
// 数据库操作符
const _ = db.command;
// 显示 loading 提示框
wx.showLoading({
title: '拼命加载中'
});
// 数据库集合的聚合操作实例
voteWorks
.where({
_id: _.exists(true)
})
.orderBy('name', 'desc')
.get()
.then(res => {
// 获取集合数据,或获取根据查询条件筛选后的集合数据。
let data = res.data || [];
// 将数据从逻辑层发送到视图层,通俗的说,也就是更新数据到页面展示
this.setData({
participantList:data
});
// 隐藏 loading 提示框
wx.hideLoading();
})
参与投票
这是投票页面,用户可以在此处选择自己支持的选项进行投票,如果已经投过票就可以查看此时的投票结果。
投票结果展示
投票截止后,用户可以在投票页面查看当前投票结果,并且结果会实时更新。管理员可以在后台排行榜页面中能够直观的看到当前投票的排名结果。
以上是一个简单的投票小程序的界面设计,具体还需要根据实际需求进行优化和调整。