前端组件开发文档

微吼组件开发及使用规范


抽奖

<p>[TOC]</p> <h4>使用</h4> <p>使用思路: 操作权限端打开抽奖的创建面板,然后有业务层监听消息,打开对应的弹窗 中间涉及到的 props 参数和方法请参照下面的 vhLottery 文档</p> <p>基础功能中包括</p> <ul> <li> <p>发起抽奖</p> <p>中奖规则: 虚拟的抽奖规则,用于观看端端展示;如果没填写,观看端将不展示中奖规则(非必填) 参与抽奖人员: 抽奖的范围(必填) 中奖人数: 预设总共有多少人中奖(必填) 预设抽奖: 预先设定中奖的人员(非必填)</p> </li> <li> <p>抽奖中</p> <p>抽奖规则: 如果发起抽奖时,设置了抽奖规则观看端将显示该规则,否则不显示 抽奖中有以展位图,业务层可根据自己需求,对插槽(lotteryDoing)进行设置 结束抽奖按钮: 只有发起端会显示</p> </li> <li> <p>抽奖结束</p> <p>观看端将看到中奖的昵称列表 发起端: 如果中奖了,面板头部显示'恭喜您中奖了!',以及填写相关信息</p> </li> <li> <p>显示隐私政策 privacyPolicyUrl 为条款链接 privacyPolicy=&quot;privacyPolicy&quot; 如果不传,或者 privacyPolicy.privacyPolicyUrl 为空,则隐私条款不显示</p> <pre><code class="language-html">&lt;vhLottery ref="lottery" :roomId="roomInfo.room_id" :accountId="userInfo.accountId" :optionType="['all', 'que', 'sign', 'exam', 'vote']" :isPrivacy = "true" :editPermission="roomInfo.role_name==1" &gt;&lt;/vhLottery&gt;</code></pre> <h4>props</h4> </li> </ul> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> <th style="text-align: left;">类型</th> <th style="text-align: left;">可选值</th> <th style="text-align: left;">默认值</th> <th style="text-align: left;">必填</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">roomId</td> <td style="text-align: left;">房间 id</td> <td style="text-align: left;">object</td> <td style="text-align: left;">-</td> <td style="text-align: left;">-</td> <td style="text-align: left;">是</td> </tr> <tr> <td style="text-align: left;">editPermission</td> <td style="text-align: left;">是否操作权限</td> <td style="text-align: left;">boolean</td> <td style="text-align: left;">-</td> <td style="text-align: left;">-</td> <td style="text-align: left;">是</td> </tr> <tr> <td style="text-align: left;">accountId</td> <td style="text-align: left;">用户 id</td> <td style="text-align: left;">string</td> <td style="text-align: left;">-</td> <td style="text-align: left;">-</td> <td style="text-align: left;">是</td> </tr> <tr> <td style="text-align: left;">optionType</td> <td style="text-align: left;">抽奖的类型</td> <td style="text-align: left;">Array</td> <td style="text-align: left;">-</td> <td style="text-align: left;">['all', 'que', 'sign', 'exam', 'vote']</td> <td style="text-align: left;">否</td> </tr> <tr> <td style="text-align: left;">isPrivacy</td> <td style="text-align: left;">是否展示隐私协议</td> <td style="text-align: left;">boolean</td> <td style="text-align: left;">true/false</td> <td style="text-align: left;">false</td> <td style="text-align: left;">否</td> </tr> <tr> <td style="text-align: left;">isCheckRequired</td> <td style="text-align: left;">隐私协议是否必选</td> <td style="text-align: left;">boolean</td> <td style="text-align: left;">true/false</td> <td style="text-align: left;">false</td> <td style="text-align: left;">否</td> </tr> <tr> <td style="text-align: left;">check</td> <td style="text-align: left;">是否勾选隐私政策</td> <td style="text-align: left;">boolean</td> <td style="text-align: left;">true/false</td> <td style="text-align: left;">false</td> <td style="text-align: left;">否</td> </tr> <tr> <td style="text-align: left;">reciveInfo</td> <td style="text-align: left;">传入自定义中奖人信息</td> <td style="text-align: left;">object</td> <td style="text-align: left;">-</td> <td style="text-align: left;">-</td> <td style="text-align: left;">否</td> </tr> </tbody> </table> <h4>主持端打开抽奖控制面板</h4> <pre><code class="language-javascript">this.$refs.lottery.lotteryShow()</code></pre> <p><img src="http://t-static01-open.e.vhall.com/vss/06/a1/06a1d820ec4214b3a7207b6ebfb2bec8.png" alt="" /></p> <h4>关键消息</h4> <p>消息都使用组件提供的 EventBus 进行监听 以下均为示例,业务层可根据需求进行调整</p> <ul> <li> <p>发起抽奖消息 触发时机,在发起端使用创建接口(/v1/lottery/add)后触发,上图的 开始抽奖 按钮</p> <pre><code class="language-javascript">this.$vhallEvent.$on('lottery_push', msg =&gt; { this.$refs.lottery.startLottery(msg.data.lottery_id, msg.data.lottery_rule_text) // 打开抽奖的 })</code></pre> </li> <li> <p>中奖后信息填写,隐私声明没有勾选 触发时机,隐私声明没有勾选</p> <pre><code class="language-javascript">this.$vhallEvent.$on('component_lottery_un_checked', msg =&gt; { alert("请勾选隐私声明") })</code></pre> </li> </ul> <p>打开抽奖的样式</p> <p><img src="http://t-static01-open.e.vhall.com/vss/c4/ac/c4ace5087e83b31a5d8b4f03633bc1b4.png" alt="" /></p> <p>操作权限端:</p> <p><img src="http://t-static01-open.e.vhall.com/vss/18/69/1869329702e6956436606c83cbd1223e.png" alt="" /></p> <p>非操作权限端:</p> <ul> <li> <p>结束抽奖的消息</p> <pre><code class="language-javascript">this.$vhallEvent.$on('lottery_result_notice', msg =&gt; { this.$refs.lottery.endResult(msg.data.lottery_id, msg.lottery_winners) // 打开抽奖的结果 })</code></pre> </li> </ul> <p>操作权限端:</p> <p><img src="http://t-static01-open.e.vhall.com/vss/d1/6b/d16b00984704fb3ba8ab1de35d8d805e.png" alt="" /></p> <p>未中奖:</p> <p><img src="http://t-static01-open.e.vhall.com/vss/d1/6b/d16b00984704fb3ba8ab1de35d8d805e.png" alt="" /></p> <ul> <li> <p>从聊天中打开抽奖</p> <pre><code class="language-javascript">this.$vhallEvent.$on('component_check_lottery', msg =&gt; { this.$refs.lottery.endResult(msg.lottery_id, msg.lottery_winners) // 打开抽奖接口 })</code></pre> </li> </ul> <h4>方法</h4> <ul> <li> <p>startLottery(id, rule) 参数: id: 抽奖 id,消息体中 lottery_id,必传 rule:虚拟的抽奖规则,消息体中 lottery_rule_text,非必传 说明:调用该函数可打开抽奖中的面板,并显示抽奖的结果。常用使用场景:收到消息打开抽奖中的面板</p> </li> <li> <p>endResult(id, list) 参数: id: 抽奖 id,消息体中 lottery_id,必传 list:中奖人员列表,消息体中 lottery_winners,必传 说明:调用该函数可打开抽奖的结果面板,并显示抽奖的结果。常用使用场景:收到消息打开抽奖结果页面,或从聊天中打开抽奖结果页面</p> </li> <li>endRecive(id) 参数: id: 抽奖 id,必传 说明:根据抽奖 id,获取本次抽奖的接口。常用使用场景:用户关闭了抽奖的结果面板,根据抽奖 id 再次打开结果面板</li> </ul> <h4>slot</h4> <ul> <li> <p>lotteryEdit 说明:编辑页顶部插槽</p> <pre><code class="language-html">&lt;slot name="lotteryEdit"&gt;&lt;/slot&gt;</code></pre> </li> <li> <p>lotteryDoing 说明:业务层可根据需求配置抽奖中的面板中间的动图</p> <pre><code class="language-html">&lt;slot name="lotteryDoing"&gt; &lt;img src="../../assets/lottery-loading.gif" alt /&gt; &lt;p&gt;{{ t('正在进行抽奖') }}...&lt;/p&gt; &lt;/slot&gt;</code></pre> </li> <li> <p>lotteryResult 说明:编辑页顶部插槽</p> <pre><code class="language-html">&lt;slot name="lotteryResult"&gt;&lt;/slot&gt;</code></pre> </li> </ul>

页面列表

ITEM_HTML