admin管理员组文章数量:1566998
2023年12月14日发(作者:)
vue移动端h5项目使用vue-luck-draw插件实现大转盘抽奖
实现效果如下:
使用:
1.安装插件:npm install --save vue-luck-draw。
2.引入插件:在 文件中全局加载插件;或者在组件中按需引入插件。
// 完整加载
import LuckDraw from 'vue-luck-draw'
(LuckDraw)
// 按需引入
import { LuckyWheel, LuckyGrid } from 'vue-luck-draw'
ents('LuckyWheel', LuckyWheel)
ents('LuckyGrid', LuckyGrid)
3.使用插件:将转盘抽奖封装成一个子组件,在父组件页面中引用该子组件,并监听抽奖成功函数。
子组件代码如下:
ref="LuckyWheel" width="320px" height="320px" :prizes="prizes" :default-style="defaultStyle" :blocks="blocks" :buttons="buttons" @start="startCallBack" @end="endCallBack" style="margin:0 auto; transform: scale(1.04)" />
import { LuckyWheel, LuckyGrid } from "vue-luck-draw";
import { luckyDraw } from "../../api";
export default {
name: "Index",
components: {
LuckyWheel,
LuckyGrid,
},
},
data() {
return {
defaultStyle: {
fontSize: "14px",
},
blocks: [
{
padding: "20px",
imgs: [
{
src: require("../../images/"), // 转盘底图
width: "98%",
rotate: true,
},
],
},
],
buttons: [
{
radius: "45px",
fonts: [
{
text: "点击n抽奖",
top: "-22px",
fontColor: "#fff",
fontSize: "14px",
lineHeight: "18px",
},
],
imgs: [
{
src: require("../../images/"), // 转盘圆心指针图片
width: "100%",
top: "-100%",
},
],
},
],
currentIndex: null,
toastMsg: null,
};
},
props: {
times: {
type: [Number, String],
default: 0,
},
prizes: {
type: Array, // 转盘奖品数组
},
drawList: {
type: Array, // 获取中奖索引数组
},
activityId: {
type: [Number, String],
},
shareUserId: {
type: [Number, String],
},
},
mounted() {},
methods: {
startCallBack() {
let token = m("token");
if (!token) {
if (!token) {
this.$({
name: "login",
});
return;
}
this.$();
raw();
setTimeout(() => {
this.$(tIndex); // currentIndex 索引代表抽中奖品数组中第几个奖品
}, 3000);
},
endCallBack(prize) {
if (!tIndex && tIndex != 0) {
this.$toast(sg || "服务器开小差了~");
return;
}
this.$emit("getPrize", prize); // 父组件中监听 getPrize 函数,获取抽中奖品
(prize, "抽中奖品");
},
async luckyDraw() {
sg = null;
tIndex = null;
const data = {
activityId: tyId,
};
(data, "抽奖传参");
try {
const resp = await luckyDraw(data);
if ( == 0) {
sg = ;
(, "", st);
if () {
h((item, index) => {
if ( == ) {
tIndex = index;
(tIndex, "抽中第几个了");
}
});
}
} else {
this.$toast( || "服务器开小差了~");
}
} catch (e) {
this.$toast( || "服务器开小差了~");
}
},
},
};
.luck-box {
position: relative;
.time {
position: absolute;
top: 55%;
left: 50%;
margin-left: -70px;
color: #fff;
font-size: 16px;
// transform: scale(0.72); // 浏览器预览字体大小跟部署后实际字体大小有出入
width: 140px!important;
text-align: center;
}
}
父组件中获取奖品数组,代码如下:
async getInfo() {
const data = {
activityId: tyId,
};
(data, "getInfo 传参");
const resp = await getDetailInfo(data);
if (resp && == 0) {
const prizes = [];
st = st;
h((item) => {
({
title: me,
imgs: [
{
src: ctureUrl,
width: "34px",
top: "55%",
},
],
fonts: [
{
text: me,
top: "30%",
fontColor: "#642D33",
fontSize: "12px",
fontWeight: "bold",
},
],
});
});
= prizes;
(, st);
}
},
版权声明:本文标题:vue移动端h5项目使用vue-luck-draw插件实现大转盘抽奖 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1702484521a9422.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论