| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- <!-- 老虎机 -->
 
- <template>
 
-   <view class="box" v-if="prizes?.length">
 
-     <SlotMachine
 
-       ref="myLucky"
 
-       width="300px"
 
-       :height="props.height + 'px'"
 
-       :prizes="prizes"
 
-       :blocks="blocks"
 
-       :slots="slots"
 
-       accelerationTime="1000"
 
-       decelerationTime="10000"
 
-       :default-config="defaultConfig"
 
-       class="prizeDraw"
 
-       @start="startCallback"
 
-       @end="endCallback"
 
-     />
 
-     
 
-     <image
 
-       v-if="!disabled"
 
-       src="https://img1.baidu.com/it/u=3949019928,2138080900&fm=253&fmt=auto&app=138&f=PNG?w=300&h=300"
 
-       style="margin: 0 auto; width: 180rpx; height: 180rpx;"
 
-       @click="startCallback"
 
-     />
 
-   </view>
 
- </template>
 
- <script setup>
 
- import PrizeApi from '@/sheep/api/prizeDraw'
 
- import SlotMachine from '@lucky-canvas/uni/slot-machine'
 
- // import { onLoad } from '@dcloudio/uni-app'
 
- import { ref } from 'vue'
 
- const emit = defineEmits(['start', 'end'])
 
- const props = defineProps({
 
-   height: {
 
-     type: String,
 
-     default: '300px'
 
-   },
 
-   disabled: Boolean,
 
-   lotteryId: String,
 
-   orderId: String,
 
- })
 
- const myLucky = ref()
 
- // 背景样式
 
- const blocks = [
 
-   { padding: '10px', background: '#00B760', borderRadius: 6 },
 
- ]
 
- // 转速与方向
 
- const slots = [
 
-     { speed: 15, direction: -1 },
 
-     { speed: 15, direction: 1 },
 
-     { speed: 15, direction: -1 },
 
-   ]
 
- const prizes = ref([])
 
- const defaultConfig = {
 
-   rowSpacing: '10px',
 
-   colSpacing: '10px',
 
-   accelerationTime: 1000, // 开始旋转时间
 
-   decelerationTime: 5000, // 缓慢停止时间
 
- }
 
- // 根据活动id获取奖品列表
 
- const getPrizeData = async () => {
 
-   const res = await PrizeApi.getPrizeByLotteryId(props.lotteryId)
 
-   prizes.value = []
 
-   const data = res?.data || []
 
-   data.forEach(item => {
 
-     prizes.value.push({
 
-       prize: item,
 
-       background: '#fe920200',
 
-       borderRadius: '10px',
 
-       imgs: [{
 
-         width: '100%',
 
-         top: '0%',
 
-         src: item.image
 
-       }]
 
-     })
 
-   })
 
- }
 
- getPrizeData()
 
- const startCallback = () => {
 
-   // if (props.disabled) return sheep.$helper.toast('抽奖次数已用完')
 
-   emit('start')
 
-   // 调用抽奖组件的play方法开始游戏
 
-   myLucky.value.play()
 
-   // 模拟调用接口异步抽奖
 
-   setTimeout(() => {
 
-     // 中奖索引
 
-     const index = 3
 
-     // 调用stop停止旋转并传递中奖索引
 
-     myLucky.value.stop(index)
 
-   }, 1500)
 
- }
 
- const endCallback  = (value) => {
 
-   emit('end', value)
 
- }
 
- </script>
 
- <style lang="scss" scoped>
 
- .box {
 
-   display: flex;
 
-   flex-direction: column;
 
-   align-items: center;
 
- }
 
- </style>
 
 
  |