From 758198ec7157ae0bd0187a5ef529dfea5b477204 Mon Sep 17 00:00:00 2001 From: zpc Date: Thu, 15 May 2025 20:47:39 +0800 Subject: [PATCH] 222 --- components/detail-lucky/README.md | 164 ++++++ components/detail-lucky/detail-lucky.vue | 575 ++++++++++++++++++++- components/detail-lucky/detail-lucky_1.vue | 489 ++++++++++++++++++ components/detail-lucky/detail-lucky_3.vue | 493 ++++++++++++++++++ components/detail-lucky/detail-lucky_5.vue | 485 +++++++++++++++++ pages/shouye/detail_wuxian.vue | 22 +- pages/shouye/slots.vue | 416 +++++---------- 7 files changed, 2346 insertions(+), 298 deletions(-) create mode 100644 components/detail-lucky/README.md create mode 100644 components/detail-lucky/detail-lucky_1.vue create mode 100644 components/detail-lucky/detail-lucky_3.vue create mode 100644 components/detail-lucky/detail-lucky_5.vue diff --git a/components/detail-lucky/README.md b/components/detail-lucky/README.md new file mode 100644 index 0000000..6d63036 --- /dev/null +++ b/components/detail-lucky/README.md @@ -0,0 +1,164 @@ +# 老虎机抽奖组件使用指南 + +## 组件简介 + +本组件是一个整合了1列、3列和5列老虎机功能的抽奖组件,可根据传入的参数动态切换不同列数的老虎机模式。 + +## 使用方法 + +### 1. 引入组件 + +```vue +import DetailLucky from "@/components/detail-lucky/detail-lucky.vue"; + +export default { + components: { + DetailLucky + } +} +``` + +### 2. 在模板中使用 + +```vue + +``` + +### 3. 组件属性 + +| 属性名 | 类型 | 默认值 | 说明 | +|-------|------|-------|------| +| mode | Number/String | 1 | 老虎机模式,可选值:1, 3, 5 | + +### 4. 组件方法 + +#### 初始化老虎机 + +```js +// 初始化老虎机,传入奖品列表和模式 +this.$refs.luckySlot.init(prizeList, mode); + +// 例如:初始化3列老虎机 +this.$refs.luckySlot.init(myPrizes, 3); + +// 也可以仅传入奖品列表,使用组件默认的模式 +this.$refs.luckySlot.init(myPrizes); +``` + +#### 开始抽奖 + +```js +// 开始抽奖,可选传入回调函数 +this.$refs.luckySlot.startDraw(() => { + console.log('老虎机开始旋转'); +}); +``` + +#### 停止抽奖并指定中奖结果 + +```js +// 停止抽奖,传入中奖索引数组 +// 对于1列老虎机,传入1个索引 +this.$refs.luckySlot.stopDraw([5]); + +// 对于3列老虎机,传入3个索引 +this.$refs.luckySlot.stopDraw([3, 2, 8]); + +// 对于5列老虎机,传入5个索引 +this.$refs.luckySlot.stopDraw([1, 2, 3, 4, 5]); + +// 也可以不传入索引,组件会随机生成 +this.$refs.luckySlot.stopDraw(); +``` + +#### 其他方法 + +```js +// 强制结束抽奖 +this.$refs.luckySlot.forceEndDraw(); + +// 隐藏老虎机 +this.$refs.luckySlot.hide(); + +// 显示老虎机 +this.$refs.luckySlot.show(); + +// 重置组件状态 +this.$refs.luckySlot.reset(); +``` + +### 5. 组件事件 + +| 事件名 | 说明 | 返回值 | +|-------|------|-------| +| start | 开始抽奖时触发 | - | +| end | 结束抽奖时触发 | 中奖信息对象 | + +### 使用示例 + +```vue + + + +``` + +## 注意事项 + +1. 使用前必须先调用`init`方法初始化组件 +2. 中奖索引数组的长度应与当前模式的列数匹配,如果不匹配会自动补足或截取 +3. 组件高度会根据模式自动调整 +4. 如果不传入奖品列表,将使用默认的奖品列表 \ No newline at end of file diff --git a/components/detail-lucky/detail-lucky.vue b/components/detail-lucky/detail-lucky.vue index a61fc56..ce6df87 100644 --- a/components/detail-lucky/detail-lucky.vue +++ b/components/detail-lucky/detail-lucky.vue @@ -1,7 +1,570 @@ - - - - - \ No newline at end of file + + diff --git a/components/detail-lucky/detail-lucky_1.vue b/components/detail-lucky/detail-lucky_1.vue new file mode 100644 index 0000000..a11dd56 --- /dev/null +++ b/components/detail-lucky/detail-lucky_1.vue @@ -0,0 +1,489 @@ + + + + + diff --git a/components/detail-lucky/detail-lucky_3.vue b/components/detail-lucky/detail-lucky_3.vue new file mode 100644 index 0000000..a5b6d26 --- /dev/null +++ b/components/detail-lucky/detail-lucky_3.vue @@ -0,0 +1,493 @@ + + + + + diff --git a/components/detail-lucky/detail-lucky_5.vue b/components/detail-lucky/detail-lucky_5.vue new file mode 100644 index 0000000..627ae8c --- /dev/null +++ b/components/detail-lucky/detail-lucky_5.vue @@ -0,0 +1,485 @@ + + + + + diff --git a/pages/shouye/detail_wuxian.vue b/pages/shouye/detail_wuxian.vue index 8373f34..d3455ed 100644 --- a/pages/shouye/detail_wuxian.vue +++ b/pages/shouye/detail_wuxian.vue @@ -264,7 +264,8 @@ - + + @@ -278,7 +279,8 @@ import DetailPreviewPopup from '@/components/detail-preview-popup/detail-preview import preview from '@/components/detail-preview-popup/index.js' import DetailWuxianLingzhu from '@/components/detail-wuxian-lingzhu/detail-wuxian-lingzhu.vue' import DetailWuxianRage from '@/components/detail-wuxian-rage/detail-wuxian-rage.vue' - +// 导入抽取的老虎机组件 +import DetailLucky from "@/components/detail-lucky/detail-lucky.vue"; export default { components: { PageContainer, @@ -287,7 +289,8 @@ export default { DetailButton, DetailPreviewPopup, DetailWuxianLingzhu, - DetailWuxianRage // 注册新组件 + DetailWuxianRage, // 注册新组件 + DetailLucky }, data() { return { @@ -415,6 +418,14 @@ export default { }, methods: { + // 老虎机结束抽奖回调 + onLuckyEnd(data) { + console.log("抽奖结束", data); + + // 获取所有中奖奖品 + console.log("所有中奖奖品:", data.allPrizes); + this.$refs.detailLucky.hide(); + }, previewDetail(item, a) { const obj = { @@ -545,7 +556,7 @@ export default { return } // console.log(' res.data.prize_num', res.data.prize_num); - + if (that.buyNum == 0 || that.buyNum == null) { if (res.data.prize_num != null) { that.buyNum = res.data.prize_num; @@ -657,8 +668,9 @@ export default { }) if (status == 'success') { - this.getPrize(res.data.order_num) + this.getPrize(res.data.order_num); this.doRefresh() + // this.$refs.detailLucky.init([], this.buyNum); } } else { this.$c.toast({ diff --git a/pages/shouye/slots.vue b/pages/shouye/slots.vue index 1ea95ab..5a40b5f 100644 --- a/pages/shouye/slots.vue +++ b/pages/shouye/slots.vue @@ -1,312 +1,154 @@ \ No newline at end of file