更新记录

1.0.0(2026-03-05) 下载此版本

  1. 数据结构设计:定义投票主题、选项和票数等核心数据
  2. 页面布局:分为投票展示区和结果展示区
  3. 交互逻辑:实现投票操作、防止重复投票、实时更新票数
  4. 样式美化:让界面更直观美观

平台兼容性

其他

多语言 暗黑模式 宽屏模式
× ×

# 通用投票小程序系统

1. 核心适配说明

UniApp 中实现投票小程序

  1. 数据结构设计:定义投票主题、选项和票数等核心数据
  2. 页面布局:分为投票展示区和结果展示区
  3. 交互逻辑:实现投票操作、防止重复投票、实时更新票数
  4. 样式美化:让界面更直观美观

2. 核心功能说明

  1. 核心功能
  2. 展示投票标题和选项列表
  3. 选择投票选项并提交
  4. 防止重复投票
  5. 实时展示投票结果(含百分比和进度条)
  6. 重置投票(演示用)

3. 对接后端接口

  • 后端集成:实际项目中需要将投票数据存储到后端(如 Node.js/Java/PHP),可通过 uni.request 接口调用
  • 用户验证:添加登录验证,确保每个用户只能投票一次(可通过用户 ID 或 openid 记录)
  • 多投票主题:支持创建和切换不同的投票主题
  • 数据持久化:使用 uni.setStorage 缓存投票状态,防止页面刷新后数据丢失
  • 分享功能:添加分享按钮,支持将投票分享给好友

4. 后端接口示例

// 获取投票数据
getVoteData() {
  uni.request({
    url: 'https://your-domain.com/api/vote/get',
    method: 'GET',
    success: (res) => {
      this.voteData = res.data;
      this.calcTotalVotes();
    }
  });
},

// 提交投票到后端
submitVoteToServer() {
  uni.request({
    url: 'https://your-domain.com/api/vote/submit',
    method: 'POST',
    data: {
      voteId: this.voteData.id,
      optionIndex: this.selectedIndex,
      userId: this.$store.state.userId // 用户ID
    },
    success: (res) => {
      if (res.data.code === 200) {
        // 更新本地数据
        this.submitVote();
      }
    }
  });
}

5. 总结

  • 本示例实现了 uniapp 投票系统的核心功能,包含投票选择、提交、结果展示和防重复投票
  • 页面采用响应式布局,适配多端显示,进度条动画提升用户体验
  • 实际项目中需结合后端接口实现数据持久化和用户唯一性验证,可根据需求扩展多主题、分享等功能

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议