Skip to content

BizVote 投票评选 ​

轻量通用投票 / 评选容器,纯零依赖:单选 / 多选(限票数)、匿名与实名名单、截止倒计时到点自动止投、实时进度条与占比、结果定格降序排序、截止前撤销重投。本地统计零接口即可用,request / submitRequest 注入切换服务端统计口径。适合内部评选、征名、方案表决、活动选期等场景。

基础用法 ​

团建活动形式投票

每人一票,得票最高的方案将进入预算评审。

城市定向赛(户外)
7 票 · 22%
剧本杀 + 晚宴
12 票 · 38%领先
周边民宿两日游
9 票 · 28%
电竞馆包场
4 票 · 13%
单选投票;投票后进度条、占比与「领先」标记实时更新。

多选限票 ​

年度最受欢迎培训课程评选 多选 · 最多 2 项

请为本年度最有收获的课程投票(最多 2 门)。

高效能人士的七个习惯
15 票 · 25%
结构化写作与表达
11 票 · 19%
数据分析实战营
18 票 · 31%领先
非暴力沟通工作坊
9 票 · 15%
管理者情景教练
6 票 · 10%
multiple + max-changes,超出可选数即时拦截提示。

实名投票 ​

值班代表推选(实名)

实名公示,投票记录可追溯。

张伟
3 票 · 50%领先
李娜刘洋周敏
陈静
2 票 · 33%
王强赵磊
杨帆
1 票 · 17%
孙悦
anonymous=false 展示各选项投票人名单,页脚汇总参与人数;voter-name 记名。

截止倒计时 ​

接口命名方案表决

距截止 00:02:00

倒计时归零自动止投;演示截止时间为 2 分钟后。

按资源复数命名(/api/users)
5 票 · 63%领先
按动作命名(/api/getUserList)
3 票 · 38%

每秒刷新倒计时;最后 1 分钟转红加急提示;归零后投票按钮消失、显示「投票已截止」。

每秒刷新;最后 1 分钟转红;归零自动止投定格。

实时结果(服务端拉取) ​

新版本默认主题公投

点击刷新拉取最新票数(演示为随机增长)。

request 拉取最新票数,进度条宽度动画过渡,可配合轮询做投票墙。

结果定格排序 ​

中秋礼盒口味评选(已截止)

投票已截止
流心奶黄
46 票 · 44%领先
鲜肉椒盐
28 票 · 27%
低糖枣泥
19 票 · 18%
五仁(经典派)
12 票 · 11%
deadline 为过去时间即「已截止」;sort-results 按票数降序、领先项置顶。

图片选项(作品评选) ​

司庆海报设计评选 多选 · 最多 2 项

从 4 幅入围作品中选出 2 幅进入终审。

作品 1 · 拾光
作品 1 · 拾光
21 票 · 28%
作品 2 · 同行
作品 2 · 同行
17 票 · 22%
作品 3 · 启航
作品 3 · 启航
25 票 · 33%领先
作品 4 · 星河
作品 4 · 星河
13 票 · 17%
image 缩略图随选项展示,常配多选限票。

服务端统计 ​

部门聚餐场次投票(服务端统计)

首次进入经 request 拉取票数;提交经 submitRequest 确认(第二次提交会演示失败停留);远程模式下撤销仅复位本地状态,票数以服务端为准。

request + submitRequest:票数与提交均以服务端返回为准;提交失败停留可重试。

撤销重投 ​

会议室命名投票

距截止 00:30:00
群星厅
5 票 · 33%
远航厅
6 票 · 40%领先
拾光厅
4 票 · 27%

投票后出现「撤销重投」:票数回退、选择清空,可改投其他选项;截止后撤销入口自动消失。

allow-revoke 截止前可撤销回退票数并改投;截止后入口自动消失。

插槽扩展 ​

季度技术之星提名表决

候补导师制候选张工 · 平台组 8 票 / 32%
候补导师制候选李敏 · 应用组 10 票 / 40%
候补导师制候选王运维 · 基础设施组 7 票 / 28%

option 作用域含 option / selected / myVoted / votes / percent;footer 作用域含 total / closed。最近状态:(未选择)

option 接管选项内容区(option / selected / myVoted / votes / percent),footer 注入说明(total / closed)。

Props ​

属性名类型默认值说明
titlestring'投票'标题(多选时自动追加限票标签)
descriptionstring''说明文案
optionsBizVoteOption[][]选项(label / image / votes 初始票数 / voters 实名名单)
multiplebooleanfalse多选模式
max-choicesnumber3多选最多可选数
anonymousbooleantrue匿名投票;false 展示投票人名单
voter-namestring'我'实名模式本次投票人名称
deadlinestring | number—截止时间(时间戳或可解析字符串);到点自动止投
show-results'always' | 'after-vote' | 'after-deadline''always'进度条展示时机
sort-resultsbooleanfalse结果按票数降序(常配截止定格)
allow-revokebooleanfalse截止前允许撤销重投
request() => Promise<BizVoteOption[]>—票数拉取(远程统计模式,返回最新 options 含 votes)
submit-request(optionIds: string[]) => Promise<BizVoteOption[]>—投票提交(resolve 返回更新后的 options)

Events ​

事件名参数说明
vote(payload: BizVoteSubmitPayload)投票提交(optionIds + 投后总票数,先于 submitRequest 抛出)
revoke()撤销重投

Slots ​

插槽名说明
option选项内容区(作用域:option / selected / myVoted / votes / percent)
footer底部扩展(作用域:total / closed)

Expose ​

属性/方法说明
refresh() => Promise<void> 重新拉取票数(request 注入时)
get-result() => { total; items: { id; label; votes; percent }[] } 当前统计快照
reset重置为初始票数与未投状态

口径说明 ​

  • 防重投:组件内已投票即锁定(显示「我的票」徽标),撤销需显式开启 allow-revoke;同一页面多实例各自独立。
  • 占比:percent = 选项票数 / 总票数(四舍五入),总票数为 0 时全部显示 0%。
  • 远程模式撤销:无 revokeRequest 契约时,撤销仅复位本地投票状态,票数以服务端为准(可在 revoke 事件中自行回退服务端票数)。
  • 倒计时:仅设置 deadline 时启动每秒计时器,组件卸载自动清理。