Initial commit

This commit is contained in:
2026-04-23 16:58:11 +08:00
commit 267eba1eca
2582 changed files with 273338 additions and 0 deletions
+365
View File
@@ -0,0 +1,365 @@
<template>
<div class="home">
<div class="header_top">
<handleback></handleback>
<div>账户修改</div>
<div>玩法说明</div>
</div>
<div class="main">
<div
class="space_between mian_i"
@click="
handlechange(1);
playAudio();
"
>
<div>修改头像</div>
<div>
去修改
<i class="el-icon-arrow-right"></i>
</div>
</div>
<div
class="space_between mian_i"
@click="
handlechange(2);
playAudio();
"
>
<div>修改昵称</div>
<div>
去修改
<i class="el-icon-arrow-right"></i>
</div>
</div>
<!-- <div class="space_between mian_i" @click="handlechange(3);playAudio()">
<div>修改手机号</div>
<div>
去修改
<i class="el-icon-arrow-right"></i>
</div>
</div> -->
</div>
<div class="out" v-if="onchange">
<div class="column out_top">
<div class="out_title">{{ title }}</div>
<div class="out_nickname" v-if="title == '修改头像'">
<input type="file" @change="uploadImage" />
<!-- <div size="small" type="primary" style="font-size: 12px" @click="uploadImage">点击更换头像</div> -->
</div>
<div class="out_nickname" v-if="title == '修改昵称'">
<input type="text" placeholder="请输入昵称" v-model="as" />
</div>
<div class="out_nickname" v-if="title == '修改手机号'">
<input type="text" placeholder="请输入手机号" v-model="phoneNumber" />
</div>
<div class="out_nickname space_between" v-if="title == '修改手机号'">
<input type="text" placeholder="请输入验证码" v-model="code" />
<div
@click="
handlesend();
playAudio();
"
style="width: 30%"
>
{{ buttonText }}
</div>
</div>
<div class="out_btn space_between">
<div
class="btn_q center btn_click"
@click="
onchange = false;
playAudio();
"
>
取消
</div>
<div
class="btn_a center btn_click"
@click="
handlesubmit();
playAudio();
"
>
确定
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { updateUserDetails, getcode, updataavatar } from "@/api/index";
export default {
data() {
return {
onchange: false,
counting: false,
buttonText: "发送验证码",
countdownTime: 60,
code: "",
as: "",
phoneNumber: "",
title: "修改手机号",
};
},
methods: {
playAudio() {
this.$store.commit("playAudio");
},
uploadImage(event) {
const file = event.target.files[0];
const formData = new FormData();
formData.append("file", file);
updataavatar(formData).then((res) => {
if (res.data.code) {
console.log("成功");
}
});
},
throttle(func, limit) {
let inThrottle;
return function () {
const args = arguments;
const context = this;
if (!inThrottle) {
func.apply(context, args);
inThrottle = true;
setTimeout(() => (inThrottle = false), limit);
}
};
},
handlesend() {
const phoneRegex = /^1[3456789]\d{9}$/;
if (phoneRegex.test(this.phoneNumber)) {
if (this.counting) {
return;
}
getcode({
phoneNumber: this.phoneNumber,
type: "3",
}).then((res) => {
if (res.data.code) {
console.log("成功");
}
});
this.counting = true;
this.buttonText = `${this.countdownTime}s`;
const interval = setInterval(() => {
this.countdownTime--;
if (this.countdownTime === 0) {
clearInterval(interval);
this.counting = false;
this.buttonText = "发送验证码";
this.countdownTime = 60;
} else {
this.buttonText = `${this.countdownTime}s`;
}
}, 1000);
} else if (this.phoneNumber == "") {
this.$message({
message: "请输入手机号",
type: "warning",
customClass: "log_warning",
});
} else {
this.$message({
message: "请输入正确的手机号",
type: "warning",
customClass: "log_warning",
});
}
},
handlechange(res) {
if (res == 1) {
this.title = "修改头像";
} else if (res == 2) {
this.title = "修改昵称";
} else if (res == 3) {
this.title = "修改手机号";
}
this.onchange = true;
},
handlesend1() {
getcode({
phoneNumber: this.phoneNumber,
type: "3",
}).then((res) => {
if (res.data.code) {
console.log("成功");
}
});
},
handlesubmit() {
if (this.title == "修改昵称") {
let nickName = { nickName: this.as };
updateUserDetails(nickName).then((res) => {
if (res.data.code == 200) {
this.$message({
message: "修改成功",
type: "success",
customClass: "log_success",
});
this.onchange = false;
} else {
this.onchange = false;
}
});
} else if (this.title == "修改手机号") {
let phoneNumber = { phoneNumber: this.as, code: 6627 };
updateUserDetails(phoneNumber).then((res) => {
if (res.data.code == 200) {
this.$message({
message: "修改成功",
type: "success",
customClass: "log_success",
});
this.onchange = false;
} else {
this.onchange = false;
}
});
} else if (this.title == "修改头像") {
this.onchange = false;
}
},
},
};
</script>
<style lang="scss" scoped>
.home {
width: 95%;
margin: 0 auto;
.header_top {
width: 100%;
height: 56px;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
div:first-child {
}
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
opacity: 0;
}
}
}
.main {
width: 100%;
height: 175px;
background: #000000a3;
border-radius: 6px;
opacity: 1;
margin: 0 auto;
overflow: hidden;
.mian_i {
width: 100%;
margin: 0 auto;
padding: 0 5%;
height: 59px;
border-bottom: 1px solid #323436;
font-size: 15px;
font-weight: 400;
color: #727477;
}
}
.out {
width: 525px;
height: 100vh;
transform: translateX(-50%);
position: fixed;
left: 50%;
top: 0;
background: rgba(0, 0, 0, 0.85);
z-index: 2;
text-align: left;
.out_top {
width: 95%;
margin: 0 auto;
position: relative;
height: 245px;
background: #101115;
border-radius: 23px 23px 23px 23px;
margin-top: 211px;
overflow: hidden;
justify-content: space-around;
padding: 0 32px;
.out_title {
font-size: 28px;
}
.out_nickname {
width: 100%;
height: 56px;
padding: 0 2% 0 5%;
background: #323436;
border-radius: 70px 70px 70px 70px;
position: relative;
z-index: 1;
input {
width: 100%;
height: 100%;
border-radius: 35px;
border: 1px solid #323436;
color: #fff;
font-size: 21px;
background-color: #323436;
text-indent: 10px;
outline: none;
text-align: center;
}
}
.out_btn {
width: 100%;
font-size: 21px;
position: relative;
.btn_q {
width: 47%;
height: 42px;
background: linear-gradient(
360deg,
rgba(114, 116, 119, 0.5) 0%,
rgba(114, 116, 119, 0.25) 100%
);
opacity: 1;
border: 1px solid #727477;
}
.btn_a {
width: 47%;
height: 42px;
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
}
}
}
.out_top::before {
content: ""; /*必须设置content属性*/
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(
-215deg,
#1f3a58 0%,
rgba(32, 29, 48, 0) 41%,
rgba(248, 125, 81, 0) 100%
);
position: absolute;
left: 0;
top: 0;
}
}
</style>
@@ -0,0 +1,75 @@
<template>
<div class="main">
<svg @click="handleClose" t="1705470289990" class="icon close" viewBox="0 0 1024 1024" version="1.1" p-id="3432"
width="28" height="28">
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477" p-id="3433" />
</svg>
<div class="advert" @click="goLogin">
<img :src="img|fullPath" alt="" class="advert-img" />
</div>
</div>
</template>
<script>
// import browser from "@/utils/brouser";
// getToken
// import { setToken } from "../../../api/cookie";
// import { mapState } from "vuex";
export default {
// 接收传值
props: {
img: {
type: String,
default: "",
},
},
data() {
return {};
},
methods: {
// 关闭广告
handleClose() {
this.$bus.$emit("closeAdvert", false);
},
// 注册
goLogin() {
this.$bus.$emit("goLogin", 'zc');
},
},
};
</script>
<style lang="scss" scoped>
.main {
width: 100%;
background: rgba(0, 0, 0, 0.85);
height: 100vh;
position: absolute;
top: 0;
left: 0;
z-index: 999;
.close {
position: absolute;
right: 77px;
top: 25vh;
}
.advert {
width: 80%;
height: 80vh;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
align-items: center;
.advert-img {
width: 100%;
height: auto;
}
}
}
</style>
+393
View File
@@ -0,0 +1,393 @@
<template>
<div class="home">
<div class="header_top space_between">
<handleback></handleback>
<div>{{ title }}</div>
<div>玩法说明</div>
</div>
<div class="main" v-if="type == 'yhxy'">
<div class="main_tab space_around">
<div class="btn center" :class="key == 1 ? 'active' : ''" @click.stop="handlechange(1); playAudio()">
<div class="ic">隐私协议</div>
</div>
<div class="btn center" :class="key == 2 ? 'active' : ''" @click.stop="handlechange(2); playAudio()">
<div class="ic">用户协议</div>
</div>
<div @mousedown="startDrag" class="slider" ref="slider" :style="{ left: left + 'px' }"></div>
</div>
<div class="main_content" ref="content" v-html="contents"></div>
</div>
<div class="main" v-if="type == 'bzzx'">
<div class="space_between main_ii_top">
<div class="center main_ii_top_left" @click="isselect = true">
{{ titleqqq }}
<i class="el-icon-arrow-right"></i>
<div class="main_ii_top_left_xl" v-if="isselect">
<div @click.stop="handlehelptype(item.value)" class="main_ii_top_left_xl_btn center"
v-for="(item, index) in helptype" :key="index">
{{ item.type }}
</div>
</div>
</div>
</div>
<div class="main_ii_center">
<div ref="bangzhuzhongxin" v-html="contents"></div>
</div>
</div>
<div class="main" v-if="type == 'gywm'">
<div class="main_iii">
<div class=" mian_iii_center">
<div v-for="(item, index) in articleList" :key="index">
<div v-if="item.id != 2 && item.id != 5" class="mian_iii_center-name" @click="dianji(item.id)"><span>{{
item.title }}</span>
<svg t="1720492291090" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="4257" width="26" height="26">
<path
d="M917.284001 297.722752c-5.406127-5.437849-13.06762-8.396227-21.479197-8.396227-9.611915 0-18.953677 3.844561-25.713638 10.543124L511.980046 659.992589 153.873018 299.91672c-6.729262-6.745634-16.072047-10.619872-25.654286-10.619872-8.470929 0-16.131399 2.989077-21.598924 8.457626-12.301164 12.435217-11.32493 33.69031 2.192945 47.312562l376.764969 378.821815c6.758937 6.788613 15.860223 10.723226 25.052582 10.8143l3.425006 0c8.981559-0.301875 17.814738-4.205788 24.423249-10.8143l376.733247-378.852514C928.728658 331.382363 929.690566 310.113967 917.284001 297.722752"
fill="#bfbfbf" p-id="4258"></path>
</svg>
</div>
<transition name="el-zoom-in-top">
<div v-if="item.id === isshow" class="main_content" v-html="item.content"></div>
</transition>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { getagreement, getArticle } from "@/api/index";
export default {
data() {
return {
contents: "",
isselect: false,
helptype: [
{
type: "取回教程",
value: 1,
}
],
titleqqq: "网站充值教程",
dragging: false,
startX: 0,
left: 4,
key: 2,
title: "",
type: null,
data: {
about: {
qr: [
// {
// url: "https://img2.baidu.com/it/u=3169331048,4117927422&fm=253&fmt=auto&app=138&f=GIF?w=200&h=200",
// name: "QQ客服",
// },
// {
// url: "https://img1.baidu.com/it/u=2426361314,145551708&fm=253&fmt=auto&app=138&f=GIF?w=200&h=200",
// name: "QQ2群",
// },
{
url: "123.png",
name: "QQ1群",
},
],
// service: [
// {
// type: "客服热线:",
// value: "12345456",
// },
// {
// type: "客服热线:",
// value: "12345456",
// },
// {
// type: "客服热线:",
// value: "12345456",
// },
// {
// type: "客服热线:",
// value: "12345456",
// },
// ],
},
},
articleList: [],
isshow: -1,
queryId:''
};
},
mounted() {
this.gettype();
this.getArticle()
},
methods: {
dianji(e) {
if(e==this.isshow){
this.isshow=-1
}else{
this.isshow = e
}
},
getArticle() {
getArticle("sydb").then((res) => {
this.articleList = res.data.data.contentList;
});
},
playAudio() {
this.$store.commit("playAudio");
},
handlehelptype(res) {
this.titleqqq = this.helptype[res - 1].type;
this.isselect = false;
this.getlist(4);
},
handlechange(res) {
this.key = res;
// document.getElementsByClassName('main_content').
const width = this.$refs.slider.offsetWidth;
this.left = width * (res - 1);
if (res == 1) {
this.getlist(2);
} else if (res == 2) {
this.getlist(5);
}
},
getlist(stat) {
getagreement(stat).then((resa) => {
if (resa.data.code == 200) {
this.contents = resa.data.data.content;
}
});
},
startDrag(event) {
const element = this.$refs.slider;
element.className = " slider";
this.dragging = true;
this.startX = event.clientX - this.left;
document.addEventListener("mousemove", this.drag);
document.addEventListener("mouseup", this.endDrag);
},
drag(event) {
if (this.dragging) {
let newLeft = event.clientX - this.startX;
if (newLeft < 0) {
this.left = 4;
} else if (
newLeft >
this.$refs.slider.parentElement.offsetWidth -
this.$refs.slider.offsetWidth
) {
this.left =
this.$refs.slider.parentElement.offsetWidth -
this.$refs.slider.offsetWidth;
} else {
this.left = newLeft;
}
}
},
endDrag() {
this.dragging = false;
const width = this.$refs.slider.offsetWidth;
if (this.left < width * 0.75) {
this.left = 4;
this.key = 1;
} else {
this.left = width;
this.key = 2;
}
const element = this.$refs.slider;
element.classList += " tr";
document.removeEventListener("mousemove", this.drag);
document.removeEventListener("mouseup", this.endDrag);
},
gettype() {
this.type = localStorage.getItem("help-type");
if (this.type == "yhxy") {
this.title = "隐私协议&用户协议";
this.getlist(2);
} else if (this.type == "bzzx") {
this.title = "帮助中心";
this.getlist(4);
} else if (this.type == "gywm") {
this.title = "关于我们";
this.getlist(3);
}
},
},
};
</script>
<style lang="scss" scoped>
.home {
width: 95%;
margin: 0 auto;
text-align: left !important;
}
.header_top {
width: 100%;
height: 56px;
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
opacity: 0;
}
}
.main {
margin-top: 14px;
width: 100%;
}
.main_tab {
margin: 0 auto;
width: 203px;
height: 42px;
background: #323436;
border-radius: 70px 70px 70px 70px;
opacity: 1;
font-size: 14px;
color: #727477;
position: relative;
}
.btn {
width: 49%;
height: 35px;
opacity: 1;
.ic {
position: relative;
z-index: 2;
}
}
.active {
color: #fff;
}
.slider {
width: 49%;
height: 35px;
position: absolute;
background: linear-gradient(-90deg, #3a97e4 0%, #3fa2c7 100%);
border-radius: 70px 70px 70px 70px;
z-index: 1;
}
.slider::before {
content: "";
/*必须设置content属性*/
width: 100%;
display: block;
height: 100%;
background: transparent;
z-index: 3;
}
.tr {
transition: left 0.2s ease-in-out;
}
.main_content {
margin-top: 20px;
padding: 21px;
width: 100%;
}
.main_ii_top {
width: 100%;
margin: 0 auto;
}
.main_ii_center {
margin-top: 21px;
position: relative;
}
.main_iii {
width: 100%;
height: 350px;
background: #101115;
border-radius: 14px 14px 14px 14px;
opacity: 1;
padding: 15px;
}
.mian_iii_top {
width: 100%;
}
.mian_iii_top_qr {
width: 98px;
// background-image: url("???");
height: 98px;
}
.mian_iii_center {
.mian_iii_center-name {
display: flex;
align-items: center;
justify-content: space-between;
background: #585a60;
opacity: 1;
box-sizing: border-box;
padding: 10px 10px;
margin: 10px 0;
svg {
margin: 0;
}
}
}
.main_ii_top_left {
width: 224px;
height: 42px;
background: #323436;
border-radius: 70px;
position: relative;
z-index: 5;
}
.main_ii_top_left_xl {
position: absolute;
width: 100%;
left: 0;
top: 45px;
background: #101115;
}
.main_ii_top_left_xl_btn {
width: 100%;
height: 42px;
opacity: 1;
&:hover {
background: #1f3a58;
border: 1px solid #3fa2c7;
}
}
</style>
@@ -0,0 +1,844 @@
<template>
<div class="home" @click.stop="selectlist = fasle">
<div class="header_top">
<handleback></handleback>
<div>我的背包</div>
<div>玩法说明</div>
</div>
<div class="header column">
<div class="header_I left">
<div class="header_I_I">饰品总数 : {{ totalOrnamentNumber }}</div>
<div class="header_I_I">饰品总价值 : {{ totalOrnamentPrice }}</div>
</div>
<div class="header_II left" v-if="false">
<div class="header_II_I">
已选饰品总数 : {{ isAll ? totalOrnamentNumber : recyleMoney.index }}
</div>
<div class="header_II_I">
已选饰品总价值 : {{ isAll ? totalOrnamentPrice : recyleMoney.money }}
</div>
</div>
</div>
<div class="main column">
<div class="main_I space_between">
<div class="main_I_I center" @click.stop="selectlist = !selectlist">
{{ selected }}
<div class="main_I_I_I" v-if="selectlist">
<div
class="main_I_I_I_I center"
@click.stop="
handlesort(0);
playAudio();
"
>
默认排序
</div>
<div
class="main_I_I_I_I center"
@click.stop="
handlesort(1);
playAudio();
"
>
按价格从低到高排序
</div>
<div
class="main_I_I_I_I center"
@click.stop="
handlesort(2);
playAudio();
"
>
按价格从高到低排序
</div>
</div>
</div>
<div class="main_I_II">
<div class="main_I_II_I">
<input
type="text"
v-model="page.name"
name
id
style="serch"
placeholder="请输入饰品名称"
/>
<svg
@click="handlesearch"
t="1705982070098"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3285"
width="30"
height="30"
>
<path
d="M512.034281 76.882018c-240.202711 0-435.165054 194.83136-435.165054 435.124122 0 240.268202 194.96132 435.100586 435.165054 435.100586 59.585073 0 116.371404-12.05557 168.096463-33.743522-13.106506-5.012154-24.790616-14.037714-32.602535-26.979468L544.87013 714.613604c-111.893416 33.626865-236.425687-10.772344-299.55447-115.499547-74.789357-123.859959-34.93465-285.041942 88.921215-359.814925 124.066667-74.738192 285.119713-34.814923 359.861998 89.102341 63.10627 104.58701 44.26311 235.499595-37.545104 318.843792l102.704127 171.745573c8.442276 13.96813 10.727319 29.801746 8.185426 44.703131 108.698654-79.121012 179.662893-206.981075 179.662893-351.687828C947.106214 271.713378 752.261551 76.882018 512.034281 76.882018"
fill="#3A97E4"
p-id="3286"
/>
<path
d="M385.72862 324.729849c-76.770478 46.324048-101.538581 146.152684-55.153134 223.013213 46.385447 76.905554 146.222269 101.531418 223.180012 55.149041 76.842109-46.310745 101.538581-146.233526 55.153134-223.01219C562.546721 302.902728 462.687386 278.230816 385.72862 324.729849"
fill="#3A97E4"
p-id="3287"
/>
</svg>
</div>
</div>
</div>
<div class="main_II space_between">
<div class="main_II_I space_between">
<!-- <div
class="main_II_I_I center btn_click"
@click="
openConfirmDelivery();
playAudio();
"
>
提取
</div> -->
<div
v-if="false"
class="main_II_I_I center btn_click"
@click="
openConfirm();
playAudio();
"
>
分解
</div>
</div>
<div class="main_II_II space_between" v-if="false">
<div
class="main_II_II_I space_between"
@click="
handleSelectAll();
playAudio();
"
:class="isAll ? 'active' : ''"
>
<svg
t="1707113229515"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3034"
>
<path
d="M673.858 151.948H198.194C88.903 151.948 0 240.852 0 350.142v475.665C0 935.097 88.903 1024 198.194 1024h475.665c109.29 0 198.194-88.903 198.194-198.194V350.142c-0.001-109.29-88.905-198.194-198.195-198.194z m21.419 320.917l-286.283 286.27c-7.742 7.742-17.884 11.613-28.026 11.613s-20.284-3.871-28.026-11.613L176.774 582.968c-15.484-15.471-15.484-40.581 0-56.052 15.484-15.484 40.568-15.484 56.052 0l148.142 148.142 258.258-258.245c15.484-15.484 40.568-15.484 56.052 0 15.483 15.484 15.483 40.581-0.001 56.052z"
fill="#727277"
p-id="3035"
/>
<path
d="M825.806 0H350.142c-73.597 0-137.813 40.405-171.997 100.113 6.634-0.529 13.281-1.016 20.048-1.016h475.665c138.426 0 251.045 112.619 251.045 251.045v475.665c0 6.768-0.487 13.414-1.016 20.048C983.595 811.671 1024 747.455 1024 673.858V198.194C1024 88.903 935.097 0 825.806 0z"
fill="#727277"
p-id="3036"
/>
</svg>
全选
</div>
<div class="main_II_II_II">
已选{{ isAll ? totalOrnamentNumber : recyleMoney.index }}
</div>
</div>
</div>
</div>
<div class="bottom grade3" @scroll="scroll">
<div
@click="
handleSelect(item);
playAudio();
"
class="bottom_I"
:class="item.isselect ? 'selectbg' : ''"
:style="{ 'background-image': `url(${item.levelImg})` }"
v-for="(item, index) in arr"
:key="index"
>
<div class="bottom_I_I center">
<img :src="item.imageUrl|fullPath" alt width="100%" />
</div>
<div class="textover-f">{{ item.shortName || item.name }}</div>
<div>
<div class="money-money">
<money class="money"></money>
{{ item.ornamentsPrice }}
</div>
</div>
</div>
</div>
<div class="out" v-if="Confirm">
<div class="out_I animate__animated animate__slideInDown" ref="confirmel">
{{ isAll ? "确定清空背包吗" : "确定要分解吗?" }}
<div class="out_I_I space_between">
<div
class="out_I_I_I center btn_click"
@click="
cancelConfirm();
playAudio();
"
>
取消
</div>
<div
class="out_I_I_II center btn_click"
@click="
handledecompose();
playAudio();
"
>
<div v-if="onsubmit">确认</div>
<div v-else>
<i class="el-icon-loading"></i>
</div>
</div>
</div>
</div>
</div>
<div class="out" v-if="confirmDelivery">
<div class="out_I animate__animated animate__slideInDown" ref="confirmel">
{{
isAll
? "确定提取背包内所有物品吗"
: `确定要提取${selectarr.length}件物品吗?`
}}
<div class="out_I_I space_between">
<div
class="out_I_I_I center btn_click"
@click="
cancelConfirm();
playAudio();
"
>
取消
</div>
<div
class="out_I_I_II center btn_click"
@click="
handledelivery();
playAudio();
"
>
<div v-if="onsubmit">确认</div>
<div v-else>
<i class="el-icon-loading"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {
getPackSack,
decompose,
delivery,
getUserInfo,
packSackGlobalData,
} from "@/api/index";
export default {
data() {
return {
onsubmit: true,
Confirm: false,
confirmDelivery: false,
isok: false,
isselectall: false,
number: 20,
selectlist: false,
searchTerm: "",
selected: "默认排序",
arr: [],
isAll: false,
selectarr: [],
page: {
page: 1,
size: 12,
orderByFie: 1,
orderByType: 2,
name: "",
},
isOver: "加载中",
totalOrnamentNumber: 0,
totalOrnamentPrice: 0,
};
},
computed: {
recyleMoney() {
let money = 0;
let index = 0;
this.arr.forEach((item) => {
if (item.isselect == true) {
money += item.ornamentsPrice * 1;
index++;
}
});
return { money: money.toFixed(2), index };
},
},
mounted() {
this.getlist();
},
methods: {
playAudio() {
this.$store.commit("playAudio");
},
scroll(e) {
this.event = e;
if (
e.srcElement.scrollTop + e.srcElement.clientHeight >=
e.srcElement.scrollHeight
) {
// console.log(11);
if (this.isOver == "加载中") {
this.page.page++;
setTimeout(() => {
this.getlist();
}, 5);
}
}
},
openConfirm() {
if (this.selectarr.length == 0) {
this.$message({
message: "请先选择饰品再操作",
type: "warning",
customClass: "log_warning",
});
} else {
this.Confirm = true;
}
},
openConfirmDelivery() {
if (this.selectarr.length == 0) {
this.$message({
message: "请先选择饰品再操作",
type: "warning",
customClass: "log_warning",
});
} else {
this.confirmDelivery = true;
}
},
handledelivery() {
if (this.selectarr.length == 0) {
this.$message({
message: "请先选择饰品再操作",
type: "warning",
customClass: "log_warning",
});
} else {
const selectedItems = this.arr.filter((item) => item.isselect === true);
this.selectarr = selectedItems.map((item) => item.id);
delivery({ isAll: this.isAll, packSackIds: this.selectarr }).then(
(res) => {
if (res.data.code == 200) {
if (this.isAll) {
this.isAll = false;
}
this.$message({
message: res.data.msg,
type: "success",
customClass: "log_success",
});
// this.getlist();
this.confirmDelivery = false;
this.arr = this.arr.filter((item) => {
return !this.selectarr.includes(item.id);
});
this.getGlobalData();
} else {
this.$message({
message: res.data.msg,
type: "warning",
customClass: "log_warning",
});
}
}
);
}
},
cancelConfirm() {
const element = this.$refs.confirmel;
element.className += " animate__slideOutDown";
setTimeout(() => {
this.Confirm = false;
this.confirmDelivery = false;
}, 400);
},
handleSelectAll() {
if (this.isAll == true) {
// 取消全选
for (let i = 0; i < this.arr.length; i++) {
this.arr[i].isselect = false;
}
const selectedItems = this.arr.filter((item) => item.isselect === true);
this.selectarr = selectedItems.map((item) => item.id);
// if (this.selectarr.length == this.arr.length) {
this.isAll = false;
// }
} else if (this.isAll == false) {
// 全选
for (let i = 0; i < this.arr.length; i++) {
this.arr[i].isselect = true;
}
const selectedItems = this.arr.filter((item) => item.isselect === true);
this.selectarr = selectedItems.map((item) => item.id);
if (this.selectarr.length == this.arr.length) {
this.isAll = true;
}
}
},
handlesort(res) {
this.page.page = 1;
this.arr = [];
if (res === 1) {
this.selected = "按价格从低到高排序";
this.page.orderByFie = 2;
this.page.orderByType = 1;
this.getlist();
// this.arr.sort((a, b) => a.ornamentsPrice - b.ornamentsPrice);
} else if (res === 2) {
this.selected = "按价格从高到低排序";
this.page.orderByFie = 2;
this.page.orderByType = 2;
this.getlist();
// this.arr.sort((a, b) => b.ornamentsPrice - a.ornamentsPrice);
} else if (res === 0) {
this.selected = "默认排序";
this.page.orderByFie = 1;
this.page.orderByType = 2;
this.getlist();
}
this.selectlist = false;
},
handlesearch() {
this.page.page = 1;
this.arr = [];
this.page.orderByFie = 1;
this.page.orderByType = 2;
this.getlist();
// if (this.searchTerm == "") {
// this.getlist();
// } else {
// let aa = this.arr.filter((item) => {
// return item.itemName.includes(this.searchTerm);
// });
// this.arr = aa;
// }
},
handleSelect(res) {
res.isselect = !res.isselect;
const selectedItems = this.arr.filter((item) => item.isselect === true);
this.selectarr = selectedItems.map((item) => item.id);
if (this.selectarr.length == this.totalOrnamentNumber) {
this.isAll = true;
} else {
this.isAll = false;
}
},
handledecompose() {
this.onsubmit = false;
const selectedItems = this.arr.filter((item) => item.isselect === true);
this.selectarr = selectedItems.map((item) => item.id);
decompose({ isAll: this.isAll, packSackIds: this.selectarr }).then(
(res) => {
if (res.data.code === 200) {
const element = this.$refs.confirmel;
element.className += " animate__slideOutUp";
if (this.isAll) {
this.isAll = false;
}
setTimeout(() => {
this.Confirm = false;
this.$message({
message: "分解成功",
type: "success",
customClass: "log_success",
});
getUserInfo().then((res) => {
this.user = res.data.data;
this.$store.commit("USER_INFO", res.data.data);
});
this.onsubmit = true;
}, 400);
this.arr = this.arr.filter((item) => {
return !this.selectarr.includes(item.id);
});
this.getGlobalData();
} else {
this.Confirm = false;
}
}
);
},
getGlobalData() {
packSackGlobalData().then((res) => {
console.log("背包统计", res.data);
this.totalOrnamentPrice = res.data.data.totalOrnamentPrice;
this.totalOrnamentNumber = res.data.data.totalOrnamentNumber;
});
},
getlist() {
this.getGlobalData();
getPackSack(this.page).then((res) => {
console.log("getPackSack", res);
let arr = [];
arr = res.data.data;
if (this.isAll == true) {
arr = arr.map((item) => ({ ...item, isselect: true }));
} else {
arr = arr.map((item) => ({ ...item, isselect: false }));
}
this.arr.push(...arr);
this.isok = true;
if (res.data.data.length < this.page.size) {
this.isOver = "暂无更多";
}
});
},
},
};
</script>
<style lang="scss" scoped>
.bottom {
height: 362px;
overflow-y: auto;
&::-webkit-scrollbar {
width: 2px;
}
&::-webkit-scrollbar-thumb {
background: #3fa2c7;
border-radius: 5px;
}
@media (max-width: 550px) {
&::-webkit-scrollbar {
width: 2px;
}
}
}
.home {
width: 95%;
margin: 0 auto;
}
.header_top {
width: 100%;
height: 56px;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
div:first-child {
}
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
opacity: 0;
}
}
.header {
width: 100%;
height: 140px;
background: #000000a3;
border-radius: 6px;
opacity: 1;
overflow: hidden;
@media (max-width: 550px) {
height: 100px;
font-size: 13px;
}
.header_II {
height: 70px;
width: 100%;
@media (max-width: 550px) {
height: 50px;
}
.header_II_I {
width: 49%;
}
}
.header_I {
height: 70px;
border-bottom: 1px solid #323436;
width: 100%;
@media (max-width: 550px) {
height: 50px;
}
.header_I_I {
width: 49%;
}
}
}
.main {
margin-top: 14px;
.main_I {
width: 100%;
.main_I_I {
width: 224px;
height: 42px;
border-radius: 1px;
border: 1px solid #3fa2c7;
background: #10253cb5;
opacity: 1;
position: relative;
@media (max-width: 550px) {
width: 160px;
height: 30px;
font-size: 11px;
}
.main_I_I_I {
width: 100%;
position: absolute;
top: 44px;
background:#10253cb5;
color: #fff;
@media (max-width: 550px) {
top: 34px;
}
.main_I_I_I_I {
width: 100%;
height: 42px;
opacity: 1;
@media (max-width: 550px) {
font-size: 11px;
height: 30px;
}
font-size: 15px;
color: #fff;
&:hover {
color: #fff;
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
}
}
.active {
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
}
}
}
.main_I_II {
.main_I_II_I {
width: 100%;
height: 42px;
padding: 0 2% 0 5%;
border-radius: 1px;
background: url('../../../assets/roll_serch.png') no-repeat center center;
background-size: 100% 100%;
border-radius: 8px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
@media (max-width: 550px) {
width: 185px;
height: 30px;
}
input {
width: 100%;
height: 100%;
border-radius: 35px;
border: none;
color: #fff;
font-size: 15px;
background-color: transparent;
text-indent: 10px;
outline: none;
}
}
}
}
.main_II {
width: 100%;
margin-top: 14px;
.main_II_I {
width: 227px;
@media (max-width: 550px) {
width: 160px;
}
.main_II_I_I {
width: 98px;
height: 35px;
border-radius: 1px;
border: 1px solid #3fa2c7;
background: #10253cb5;
font-size: 18px;
font-weight: bold;
color: #fff;
@media (max-width: 550px) {
width: 70px;
height: 25px;
font-size: 13px;
}
}
}
.main_II_II {
width: 45%;
justify-content: right;
font-size: 18px;
@media (max-width: 550px) {
font-size: 13px;
}
.main_II_II_I {
width: 44%;
.icon {
width: 24px;
height: 24px;
@media (max-width: 550px) {
width: 17px;
height: 17px;
}
}
}
.active {
svg {
path {
fill: #3a97e4;
}
}
}
.main_II_II_II {
// width: 44%;
padding: 0 10px;
}
}
}
}
.bottom {
margin-top: 14px;
.bottom_I {
// border: 2px solid #727277;
width: 100%;
height: 175px;
background-color: rgba(50, 52, 54, 0.25);
background-size: 100% 100%;
border-radius: 14px;
transition: all 0.3s ease;
font-size: 13px;
@media (max-width: 550px) {
height: 125px;
font-size: 9px;
}
.bottom_I_I {
margin: 0 auto;
width: 65%;
height: 112px;
@media (max-width: 550px) {
height: 80px;
}
}
}
}
.out {
width: 525px;
height: 100vh;
transform: translateX(-50%);
position: fixed;
left: 50%;
top: 0;
background: rgba(0, 0, 0, 0.85);
z-index: 2;
@media (max-width: 550px) {
width: 100%;
}
.out_I {
width: 95%;
margin: 0 auto;
height: 168px;
margin-top: 210px;
background: hsla(0, 0%, 100%, 0.1);
border-radius: 21px;
opacity: 1;
text-align: center;
font-size: 21px;
font-weight: 400;
color: #ffffff;
padding-top: 35px;
position: relative;
overflow: hidden;
@media (max-width: 550px) {
height: 120px;
font-size: 15px;
padding-top: 25px;
}
.out_I_I {
width: 87%;
margin: 0 auto;
margin-top: 35px;
position: relative;
z-index: 2;
.out_I_I_I {
width: 196px;
height: 42px;
background: linear-gradient(
360deg,
rgba(114, 116, 119, 0.5) 0%,
rgba(114, 116, 119, 0.25) 100%
);
opacity: 1;
border: 1px solid #727477;
@media (max-width: 550px) {
font-size: 15px;
width: 140px;
height: 30px;
}
}
.out_I_I_II {
width: 196px;
height: 42px;
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
@media (max-width: 550px) {
font-size: 15px;
width: 140px;
height: 30px;
}
}
}
}
.out_I::before {
content: ""; /*必须设置content属性*/
width: 100%;
height: 100%;
background: linear-gradient(
-219deg,
#1f3a58 0%,
rgba(32, 29, 48, 0) 40%,
rgba(248, 125, 81, 0) 100%
);
position: absolute;
left: 0;
top: 0;
}
}
.selectbg {
border: 2px solid #3fa2c7 !important;
}
</style>
+665
View File
@@ -0,0 +1,665 @@
<template>
<div class="main">
<div class="logo">
<img src="@/assets/logo/logo.png" alt />
</div>
<svg v-if="false" @click="handleClose" t="1705470289990" class="icon close" viewBox="0 0 1024 1024" version="1.1" p-id="3432"
width="28" height="28">
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477" p-id="3433" />
</svg>
<!-- 登录 -->
<div class="main_center" v-if="status == 'dl'">
<div class="main_top">登录</div>
<div class="main_input">
<input type="text" v-model="form.phoneNumber" placeholder="请输入账号" />
</div>
<div class="main_input">
<input type="password" placeholder="请输入密码" v-model="form.password" @keyup.enter="handleLogin" />
</div>
<div class="main_pwd" v-if="false">
<div class="main_input_right" @click="
handleGo('wjmm');
playAudio();
">
忘记密码
</div>
</div>
<div class="main_center_bottom">
<div :class="select ? 'select' : ''" @click="handleAgree"></div>
<div>
18
</div>
</div>
<div class="main_bottom" @click="
handleLogin();
playAudio();
">
立即登录
</div>
</div>
<div class="main_center" v-if="status == 'wjmm'" v-show="false">
<div class="main_top">忘记密码</div>
<div class="main_input">
<input type="text" v-model="forgetform.phoneNumber" placeholder="请输入手机号" />
</div>
<div class="main_input">
<input type="text" placeholder="请输入验证码" v-model="forgetform.code" />
<div @click="
getyzm();
playAudio();
" class="yzm">
获取验证码
</div>
</div>
<div class="main_input">
<input type="password" placeholder="请输入新的密码" v-model="forgetform.password" />
</div>
<div class="main_input">
<input type="password" placeholder="请输入确认密码" v-model="forgetform.confirmPassword" />
</div>
<div class="main_bottom" @click="
handleForget();
playAudio();
">
确认
</div>
<div class="main_bottom_no">
已有账号?
<span @click="
handleGo('dl');
playAudio();
">去登录</span>
</div>
</div>
<div class="main_center" v-if="status == 'zc'" v-show="false">
<div class="main_top">注册</div>
<div class="main_input">
<input type="text" v-model="registerform.phoneNumber" placeholder="请输入手机号" />
</div>
<div class="main_input">
<input type="text" v-model="registerform.nickName" placeholder="请输入昵称" />
</div>
<div class="main_input">
<input type="password" placeholder="请输入新的密码" v-model="registerform.password" />
</div>
<div class="main_input">
<input type="password" placeholder="请输入确认密码" v-model="registerform.confirmPassword" />
</div>
<div class="main_input">
<input type="text" placeholder="请输入验证码" v-model="registerform.code" />
<div @click="
getyzm();
playAudio();
" class="yzm">
{{ title }}
</div>
</div>
<div class="main_input">
<input type="text" placeholder="请输入邀请码" v-model="registerform.parentInvitationCode" />
</div>
<div class="main_center_bottom">
<div :class="select ? 'select' : ''" @click="
handleAgree();
playAudio();
"></div>
<div>
18
</div>
</div>
<div class="main_bottom" @click="
handleRegister();
playAudio();
">
注册
</div>
<div class="main_bottom_no">
已有账号?
<span @click="
handleGo('dl');
playAudio();
">去登录</span>
</div>
</div>
</div>
</template>
<script>
import { getLogin, getRegister, getcode, changePass } from "../../../api/index";
import browser from "@/utils/brouser";
// getToken
import { setToken } from "../../../api/cookie";
import { getUserInfo } from "../../../api/index";
// import { mapState } from "vuex";
export default {
data() {
return {
disabled: false,
timer: null,
second: '',
registerform: {
code: "",
nickName: "",
parentInvitationCode: "",
password: "",
phoneNumber: "",
confirmPassword: "",
},
forgetform: {
code: "",
nickName: "",
parentInvitationCode: "",
password: "",
phoneNumber: "",
confirmPassword: "",
},
status: this.$route.params.type || 'dl',
select: false,
form: {
code: "",
nickName: "",
parentInvitationCode: "",
password: "",
phoneNumber: "",
},
};
},
computed: {
title() {
return this.disabled ? `重新获取 ( ${this.second} ) s` : "获取验证码";
},
},
methods: {
playAudio() {
this.$store.commit("playAudio");
},
handleForget() {
if (this.forgetform.phoneNumber == "") {
this.$message({
message: "请输入新密码或手机号",
type: "warning",
customClass: "log_warning",
});
return;
} else if (this.forgetform.password == "") {
this.$message({
message: "请输入密码!",
type: "warning",
customClass: "log_warning",
});
} else if (this.forgetform.password != this.forgetform.confirmPassword) {
this.$message({
message: "密码输入不一致,请重新输入!",
type: "warning",
customClass: "log_warning",
});
} else {
let data = {
code: this.forgetform.code,
confirmPassword: this.forgetform.confirmPassword,
password: this.forgetform.password,
phoneNumber: this.forgetform.phoneNumber,
};
changePass(data).then((res) => {
if (res.data.code == 200) {
this.$message({
message: "密码重置成功",
type: "success",
customClass: "log_success",
});
this.status == "dl";
} else {
this.$message({
message: "验证码错误,请重试",
type: "warning",
customClass: "log_warning",
});
}
});
}
},
getyzm() {
let dataform = {};
if (this.disabled) {
return false
}
if (this.status == "zc") {
if (this.registerform.phoneNumber == "") {
this.$message({
message: "请输入用户名或手机号",
type: "warning",
customClass: "log_warning",
});
return;
}
dataform.type = 1;
dataform.phoneNumber = this.registerform.phoneNumber;
} else if (this.status == "wjmm") {
if (this.forgetform.phoneNumber == "") {
this.$message({
message: "请输入用户名或手机号",
type: "warning",
customClass: "log_warning",
});
return;
}
dataform.phoneNumber = this.forgetform.phoneNumber;
dataform.type = 4;
}
getcode(dataform).then((res) => {
if (res.data.code == 200) {
let that = this;
let s = 60; //倒计时间
if (!that.timer) {
that.second = s;
that.disabled = true;
that.timer = setInterval(() => {
if (that.second > 0 && this.second <= s) {
that.second--;
} else {
that.disabled = false;
clearInterval(that.timer);
this.timer = null;
}
}, 1000);
}
this.$message({
message: `${res.data.msg}`,
type: "success",
customClass: "log_success",
});
}
if (res.data.code == 500) {
this.$message({
message: `${res.data.msg}`,
type: "warning",
customClass: "log_warning",
});
}
});
},
handle() { },
handleGo(res) {
this.status = res;
},
handleRegister() {
if (this.select == false) {
this.$message({
message: "请点击同意用户协议",
type: "warning",
customClass: "log_warning",
});
} else {
if (
this.registerform.phoneNumber == "" &&
this.registerform.nickName == ""
) {
this.$message({
message: "请输入用户名或手机号",
type: "warning",
customClass: "log_warning",
});
return;
} else if (this.registerform.password == "") {
this.$message({
message: "请输入密码",
type: "warning",
customClass: "log_warning",
});
} else if (
this.registerform.confirmPassword != this.registerform.password
) {
this.$message({
message: "两次密码不一致",
type: "warning",
customClass: "log_warning",
});
} else if (this.registerform.code == "") {
this.$message({
message: "请获取验证码",
type: "warning",
customClass: "log_warning",
});
} else {
if (this.registerform.parentInvitationCode == "f2cs2") {
this.registerform.parentInvitationCode = "";
}
getRegister(this.registerform).then((res) => {
if (res.data.code == 200) {
this.$message({
message: "注册成功",
type: "success",
customClass: "info_success",
});
this.status = "dl";
} else {
this.$message({
message: `${res.data.msg}`,
type: "warning",
customClass: "warning",
});
}
});
}
}
},
handleLogin() {
if (this.select == false) {
this.$message({
message: "请先勾选以下协议",
type: "warning",
customClass: "log_warning",
});
} else if (this.select == true) {
if (this.form.phoneNumber == "" && this.form.password == "") {
this.$message({
message: "请输入用户名或密码",
type: "warning",
customClass: "log_warning",
});
return;
}
let data = {
username: this.form.phoneNumber,
password: this.form.password,
equipment: '1'
};
if (!browser().mobile) {
// data.equipment='1'
} else if (browser.webapp) {
data.equipment = '2'
} else {
data.equipment = '1'
}
getLogin(data)
.then((res) => {
let code = res.data.code;
if (code == "200") {
this.handleClose();
this.exist = 2;
setToken(res.data.token);
this.$store.commit("LOGIN_IS_SHOW", false);
// this.$router.back()
// window.history.back()
this.$message({
message: "登录成功",
type: "success",
customClass: "log_success",
});
// this.close();
//获取用户信息
getUserInfo().then((res) => {
if (res.data.code == 200) {
this.$store.commit("USER_INFO", res.data.data);
this.$bus.$emit("islogin", false);
this.$router.push("/");
try {
this.$socket.send("login_userId_" + res.data.data.userId);
this.$socket.close();
} catch (e) {
console.log("socket error", e);
}
}
});
} else {
this.$message({
message: res.data.msg,
type: "warning",
customClass: "log_warning",
});
}
})
.catch((err) => {
throw new Error(err.message);
});
}
},
handleClose() {
this.$bus.$emit("close", false);
},
handleAgree() {
this.select = !this.select;
},
},
};
</script>
<style lang="scss" scoped>
.main {
width: 100%;
background: rgba(0, 0, 0, 0.85);
height: 100vh;
// display: flex;
// justify-content: center;
// flex-direction: column;
position: absolute;
top: 0;
left: 0;
z-index: 999;
.close {
position: absolute;
right: 14px;
top: 21px;
}
.logo {
img {
width: 238px;
height: 110px;
margin-top: 70px;
@media (max-width: 550px) {
width: 170px;
height: 60px;
margin-top: 70px;
}
}
}
}
.main_top {
width: 100%;
line-height: 1;
text-align: center;
color: #ffffff;
font-size: 28px;
margin-top: 7px;
@media (max-width: 550px) {
font-size: 20px;
}
}
.main_center {
width: 80%;
margin: 0 auto;
.main_input {
width: 100%;
position: relative;
input {
margin-top: 21px;
width: 100%;
height: 56px;
background: hsla(0,0%,100%,.05);
padding: 0 15px;
border-radius: .08rem;
opacity: 1;
border: none;
outline: none;
color: #bbb;
@media (max-width: 550px) {
height: 40px;
}
}
.yzm {
position: absolute;
color: #3a97e4;
right: 20px;
top: 50%;
transform: rotateY("50%");
font-weight: 500;
}
}
.main_pwd {
width: 100%;
margin-top: 10px;
height: 31.5px;
}
.main_input_right {
width: 140px;
height: 42px;
background: #101115;
box-shadow: 0px 0 12px 0px rgba(0, 0, 0, 0.25);
border-radius: 50px;
opacity: 1;
color: #ffffff;
line-height: 42px;
text-align: center;
font-size: 13.3px;
float: right;
@media (max-width: 550px) {
width: 100px;
height: 30px;
line-height: 30px;
}
}
.main_center_bottom {
margin-top: 21px;
display: flex;
justify-content: space-between;
@media (max-width: 550px) {
margin-top: 15px;
}
.select {
background: #3a97e4 !important;
border: 2px solid #3a97e4 !important;
}
div:first-child {
width: 12px;
height: 12px;
border-radius: 50%;
border: 2px solid #727477;
box-sizing: border-box;
margin-top: 5px;
@media (max-width: 550px) {
margin-top: 3px;
width: 8px;
height: 8px;
border: 1px solid #727477;
}
}
div:last-child {
width: 95%;
color: #ffffff;
font-size: 16.8px;
text-align: left;
word-spacing: -2px;
@media (max-width: 550px) {
font-size: 12px;
}
}
}
}
.main_center1 {
margin: 0 auto;
width: 90%;
.main_czcg {
width: 100%;
height: 182px;
background: #323436;
border-radius: 21px 21px 21px 21px;
opacity: 1;
padding: 32px;
margin: 0 auto;
p {
font-size: 28px;
}
.main_czcg_btn {
justify-content: space-between;
margin-top: 35px;
div:first-child {
width: 45%;
height: 50px;
border-radius: 35px 35px 35px 35px;
opacity: 1;
border: 3px solid #727477;
font-size: 21px;
display: flex;
align-items: center;
justify-content: center;
}
div:last-child {
font-size: 21px;
width: 45%;
height: 50px;
background: #1f3a58;
border-radius: 35px 35px 35px 35px;
opacity: 1;
border: 3px solid #3fa2c7;
display: flex;
align-items: center;
justify-content: center;
}
}
}
}
.main_bottom {
width: 100%;
margin: 0 auto;
font-size: 25px;
height: 63px;
background: url("../../../assets/loginBtn.png") no-repeat center center;
background-size: contain;
color: #ffffff;
line-height: 63px;
margin-top: 28px;
@media (max-width: 550px) {
height: 60px;
font-size: 18px;
line-height: 60px;
margin-top: 20px;
}
}
.main_bottom_no {
margin-top: 16px;
@media (max-width: 550px) {
font-size: 13px;
}
span {
color: #3a97e4;
}
}
</style>
@@ -0,0 +1,343 @@
<template>
<div class="home">
<div class="header_top">
<handleback></handleback>
<div>站内信</div>
<div>玩法说明</div>
</div>
<div class="head center">
<div class="center" @click="handleoperation(1)">全部已读</div>
<div class="center" @click="handleoperation(2)">全部删除</div>
</div>
<div class="main">
<div
@click="handleopenmessage(item.id)"
v-for="(item,index) in messageList"
:key="index"
class="main_top space_between"
>
<div>
<div v-if="item.status==='1'">
<svg
t="1707123532951"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3582"
>
<path
d="M931.2 281.6c-9.6-9.6-22.4-9.6-35.2-6.4V224c0-54.4-41.6-96-96-96H224C169.6 128 128 169.6 128 224v54.4c-12.8-6.4-25.6-3.2-35.2 6.4-19.2 16-28.8 41.6-28.8 67.2v448c0 54.4 41.6 96 96 96h704c54.4 0 96-41.6 96-96V352c0-25.6-9.6-51.2-28.8-70.4zM441.6 678.4c38.4 38.4 99.2 38.4 134.4 0l57.6-57.6 217.6 208H172.8l211.2-211.2 57.6 60.8z m240-102.4l214.4-214.4v422.4L681.6 576zM224 192h576c19.2 0 32 12.8 32 32v112l-297.6 297.6c-12.8 12.8-32 12.8-44.8 0L384 531.2l-192-192V224c0-19.2 12.8-32 32-32z m115.2 384L128 787.2V364.8l211.2 211.2z"
fill="#727477"
p-id="3583"
/>
</svg>
</div>
<div v-if="item.status==='0'">
<svg
t="1707123406935"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3230"
>
<path
d="M890.256587 198.330044c-9.406616-4.568039-21.888393-7.721869-38.638555-7.721869L170.276942 190.608176c-16.749139 0-29.229893 3.154853-38.637532 7.721869-38.692793 15.714913-66.18197 54.079686-66.18197 98.996688l0 426.930509c0 44.617174 27.080861 82.818217 65.365338 98.724489 9.326795 4.675486 21.970261 7.995091 39.454164 7.995091l681.34109 0c17.484926 0 30.127369-3.318582 39.454164-7.995091 38.25787-15.906272 65.367385-54.107315 65.367385-98.724489L956.43958 297.325709C956.43958 252.40973 928.948356 214.044958 890.256587 198.330044zM904.015502 297.325709l0 426.930509c0 6.90527-1.38766 13.486152-3.752618 19.549242-3.371932-3.997034-7.206418-8.074909-11.936333-12.290931L670.393311 537.327852l225.03016-243.454778c2.745643-2.963495 4.920258-5.819542 7.095896-8.673543C903.445497 289.088094 904.015502 293.139364 904.015502 297.325709zM851.618031 243.980757c4.81383 0 9.381032 0.870834 13.813153 2.121314-1.277138 2.582825-3.669726 6.360871-8.156085 11.174504L545.751556 594.316797c-18.652566 20.174482-50.95455 20.174482-69.60814 0L164.62192 257.276574c-4.486358-4.813632-6.878946-8.591679-8.157108-11.174504 4.432121-1.251503 9.000347-2.121314 13.813153-2.121314L851.618031 243.980757zM121.633112 743.804437c-2.365981-6.063089-3.752618-12.642948-3.752618-19.549242L117.880494 297.325709c0-4.186346 0.571028-8.238638 1.468505-12.126178 2.201222 2.855024 4.350253 5.710049 7.123526 8.673543l225.029136 243.454778-217.932217 194.186677C128.838506 735.730551 125.005044 739.807403 121.633112 743.804437zM170.276942 777.60117c-2.556324 0-5.029756-0.379647-7.477605-0.760317 1.413244-1.52268 3.099721-3.235694 5.274336-5.194302l219.374115-195.436134 50.547257 54.677297c19.333093 20.909216 45.244267 32.43676 72.952441 32.43676 27.707151 0 53.619348-11.528568 72.952441-32.43676l50.548281-54.677297 219.346484 195.436134c2.201222 1.958608 3.8877 3.671623 5.301967 5.194302-2.473432 0.38067-4.920258 0.760317-7.478628 0.760317L170.276942 777.60117z"
fill="#3a97e4"
p-id="3231"
/>
</svg>
</div>
</div>
<div class="main_top_center textover-f">{{ item.message }}</div>
<div>{{ item.sendTime }}</div>
</div>
</div>
<div class="out" v-if="onView">
<div class="out_main animate__animated" ref="viewel">
<div class="out_main_close" @click="handleClose">
<svg
t="1707125075609"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3781"
>
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477"
p-id="3782"
/>
</svg>
</div>
<div v-if="Object.keys(viewList).length === 0" class="out_main_ref center">
<i class="el-icon-refresh-right"></i>
</div>
<div v-else>
<div class="out_main_title">站内信</div>
<div class="out_main_time">{{ viewList.sendTime }}</div>
<div class="out_main_content">{{ viewList.message }}</div>
</div>
</div>
</div>
<div class="out" v-if="onOperation">
<div class="column owa">
<div class="owa_i">温馨提示</div>
<div>确定进行操作吗</div>
<div class="space_between owa_iii">
<div class="btn_c center btn_click" @click="onOperation=false">取消</div>
<div class="btn_q center btn_click" @click="handlesubmit">确定</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {
getMessageList,
getMessageView,
getMessageOperation
} from "@/api/index";
export default {
data() {
return {
loading: true,
messageList: [],
onView: false,
onOperation: false,
viewList: {}
};
},
mounted() {
this.getlist();
},
methods: {
handlesubmit() {
let status = localStorage.getItem("status");
let arr = this.messageList.map(item => item.id);
let obj = {
ids: arr,
status: status
};
getMessageOperation(obj).then(res => {
this.getlist();
if(res.data.code){
console.log("成功")
}
this.onOperation = false;
});
},
handleoperation(res) {
localStorage.setItem("status", res);
this.onOperation = true;
},
handleClose() {
const element = this.$refs.viewel;
element.classList += " animate__fadeOut";
setTimeout(() => {
this.onView = false;
this.viewList = {};
}, 500);
},
handleopenmessage(res) {
this.onView = true;
getMessageView(res).then(res => {
setTimeout(() => {
this.viewList = res.data.data;
}, 500);
});
},
getlist() {
getMessageList().then(res => {
this.messageList = res.data.rows;
});
}
}
};
</script>
<style lang="scss" scoped>
.main {
width: 100%;
margin-top: 14px;
.main_top {
width: 100%;
margin-top: 4px;
height: 49px;
background: #101115;
border-radius: 7px 7px 7px 7px;
font-size: 17px;
padding: 0 17px 0 23px;
.icon {
width: 24px;
height: 24px;
}
.main_top_center {
width: 40%;
}
}
}
.home {
width: 95%;
margin: 0 auto;
.header_top {
width: 100%;
height: 56px;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
div:first-child {
}
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
opacity: 0;
}
}
}
.out {
width: 525px;
height: 100vh;
transform: translateX(-50%);
position: fixed;
left: 50%;
top: 0;
background: rgba(0, 0, 0, 0.85);
z-index: 2;
text-align: left;
.out_main {
width: 95%;
margin: 0 auto;
position: relative;
height: 420px;
background: #101115;
border-radius: 14px 14px 14px 14px;
margin-top: 211px;
padding: 27px;
overflow: hidden;
justify-content: space-around;
.out_main_close {
position: absolute;
right: 10px;
top: 10px;
cursor: grab;
.icon {
width: 25px;
height: 25px;
}
}
.out_main_ref {
width: 100%;
height: 100%;
font-size: 25px;
animation: xz1 2s infinite linear;
}
@keyframes xz1 {
0% {
transform: rotate(0);
}
100% {
transform: rotate(720deg);
}
}
.out_main_title {
width: 100%;
font-size: 18px;
text-align: center;
}
.out_main_time {
width: 100%;
margin: 14px 0 0 0;
font-size: 18px;
text-align: right;
}
.out_main_content {
margin: 14px 0 0 0;
text-align: center;
}
}
.owa {
width: 95%;
height: 245px;
margin: 0 auto;
margin-top: 210px;
background: #101115;
border-radius: 21px;
overflow: hidden;
opacity: 1;
justify-content: space-between;
padding: 35px;
position: relative;
.owa_i {
font-size: 28px;
font-weight: 500;
color: #ffffff;
}
.owa_iii {
width: 95%;
margin: 0 auto;
font-size: 21px;
position: relative;
.btn_c {
width: 47%;
height: 42px;
background: linear-gradient(
360deg,
rgba(114, 116, 119, 0.5) 0%,
rgba(114, 116, 119, 0.25) 100%
);
opacity: 1;
border: 1px solid #727477;
}
.btn_q {
width: 47%;
height: 42px;
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
}
}
}
.owa::before {
content: ""; /*必须设置content属性*/
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(
-204deg,
#1f3a58 0%,
rgba(32, 29, 48, 0) 40%,
rgba(248, 125, 81, 0) 100%
);
position: absolute;
left: 0;
top: 0;
}
}
.head {
justify-content: end;
div {
margin-left: 10px;
width: 98px;
height: 35px;
border-radius: 35px 35px 35px 35px;
opacity: 1;
border: 2px solid #727477;
font-size: 18px;
font-weight: bold;
color: #727477;
}
}
</style>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+366
View File
@@ -0,0 +1,366 @@
<template>
<div class="home">
<swiper></swiper>
<banner></banner>
<div class="body_title">
<div>Games</div>
<!-- <button @click="playAudio">音频测试</button> -->
<div class="body_btn" >
<div class="btn openBox" @click="$router.push('/open');playAudio()">
<div class="btns">
<div class="btns_icon">
<svg
t="1705642348773"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3012"
width="100%"
height="100%"
>
<path
d="M544 18.496l375.04 216.512-76.352 44.16a56.832 56.832 0 0 0-24 71.168l3.2 6.4a56.832 56.832 0 0 0 71.168 24l6.4-3.2 55.936-32.32v385.856a64 64 0 0 1-32 55.424L576 987.008V896a64 64 0 0 0-56.512-63.552L512 832a64 64 0 0 0-63.552 56.512L448 896v91.008L100.608 786.496a64 64 0 0 1-32-55.424V328.128l85.44 49.408a56.832 56.832 0 0 0 73.6-14.848l3.968-5.952a56.832 56.832 0 0 0-14.848-73.6l-5.952-3.968L119.68 226.496 480 18.496a64 64 0 0 1 64 0zM511.744 678.4a40.768 40.768 0 0 0-30.272 12.48 43.328 43.328 0 0 0-12.16 32c0 13.056 3.84 23.744 12.16 32.064 8.256 8.32 18.112 13.056 30.272 13.056 12.096 0 22.016-4.16 30.272-12.48a45.12 45.12 0 0 0 12.672-32.64 45.632 45.632 0 0 0-12.16-32 41.984 41.984 0 0 0-30.784-12.48z m6.4-358.4c-41.344 0-73.792 12.48-97.792 37.44-24.64 24.96-36.352 59.392-36.352 103.296h63.744c0-24.96 4.48-44.544 13.952-58.176 10.624-16.64 27.968-24.32 52.48-24.32 19.072 0 34.176 5.312 44.8 16.64 10.048 11.264 15.616 26.688 15.616 46.272 0 14.848-4.992 29.12-15.104 42.24l-6.656 8.256c-36.352 34.432-58.176 59.392-65.408 75.456-7.872 16-11.2 35.584-11.2 58.24V633.6h64.256v-8.32c0-14.272 2.816-26.752 8.384-38.592 5.056-10.688 12.352-20.8 22.4-29.696 26.816-24.96 43.008-40.96 48-46.912 13.44-19.008 20.736-43.392 20.736-73.088 0-36.224-11.2-64.704-33.536-85.504C584.064 330.112 554.496 320 518.144 320z"
fill="#25F484"
p-id="3013"
/>
</svg>
<!-- <img src="Group 5.png" alt=""> -->
</div>
<div>玩转盲盒</div>
</div>
<div class="hudong anima"></div>
</div>
<div class="btn jsjj" @click="$router.push('/pk');playAudio()">
<div class="btns">
<div class="btns_icon">
<svg
t="1705642835111"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3146"
width="100%"
height="100%"
>
<path
d="M128 1024H0v-128c16.1792-9.728 34.304-17.2544 48.128-29.6448 37.2736-33.28 72.7552-68.608 108.288-102.4-22.272-28.2624-41.4208-50.1248-57.7536-73.8816-14.3872-20.992-9.2672-43.7248 9.216-56.32 20.48-14.0288 41.6768-9.728 57.7024 11.776 4.4032 5.9392 8.7552 11.9296 14.1824 19.3536 7.424-8.3968 13.6704-15.36 19.5584-22.1696q247.1936-296.96 493.9776-593.92c15.36-18.432 32.1536-29.44 55.808-30.72 34.9184-2.7136 69.7856-4.9152 104.5504-7.8336 32.9216-2.9184 65.792-6.8096 98.6624-10.24h71.68v71.68c-1.7408 10.8032-4.1984 21.504-5.12 32.3584-4.8128 59.4432-7.936 119.0912-14.7968 178.2784a72.1408 72.1408 0 0 1-23.3472 42.6496c-144.128 121.4464-289.3312 241.664-434.2272 362.24-62.0544 51.6608-124.0576 103.424-187.4944 156.3648 5.632 4.7104 9.216 8.1408 13.1584 11.008 28.672 20.7872 34.2528 41.9328 16.6912 63.8464-15.9744 19.968-42.3424 19.5072-67.584-1.1776-18.944-15.36-37.7856-31.232-60.6208-50.1248-33.3312 35.0208-65.792 68.864-97.792 103.168-5.12 5.12-7.3216 12.8512-11.4176 19.0464-7.5776 11.6736-15.5648 23.1424-23.4496 34.6624zM732.16 158.72l-3.9424-3.2768L332.8 506.88l2.2016 5.4784h176.2816l-217.7536 348.9792 442.4704-442.2656h-176.9472zM61.44 0c54.0672 5.12 108.1344 13.6704 162.2528 14.1824 57.088 0.512 100.096 16.9472 133.5296 66.56 31.2832 46.336 70.912 87.04 107.8272 131.3792L237.4144 485.376c-12.0832-9.728-23.296-18.5856-34.2528-27.7504C150.6816 414.0544 97.28 371.456 46.5408 326.0928A85.0432 85.0432 0 0 1 20.48 277.0432C12.9536 213.6576 9.7792 149.7088 4.6592 86.016A222.1056 222.1056 0 0 0 0 61.44V0zM896 1024c-27.8528-55.2448-74.0864-94.72-117.4528-136.6528-6.0416-5.8368-12.288-11.52-18.7904-17.6128-24.1664 18.9952-46.08 39.7824-71.68 54.528-11.3152 6.5536-33.6896 6.5536-43.6736-0.7168s-13.3632-26.9824-15.0016-41.728c-0.768-6.7072 8.9088-15.36 15.36-21.76a170.24 170.24 0 0 1 21.9136-16.0768L568.32 761.8048l208.7936-174.08 66.816 78.3872c6.1952-8.2944 11.0592-15.0016 16.128-21.5552 15.36-19.712 37.0688-23.6544 55.8592-10.24a39.8336 39.8336 0 0 1 8.9088 56.8832c-17.2544 23.0912-36.352 44.8-59.9552 73.6256 36.864 34.4576 72.7552 69.5808 110.4896 102.4 13.9264 12.1344 32.3072 19.2 48.64 28.6208v128z"
fill="#3A97E4"
p-id="3147"
/>
</svg>
</div>
<div>急速竞技</div>
</div>
</div>
<div class="btn roll" @click="$router.push('/roll');playAudio()">
<div class="btns">
<div class="btns_icon">
<svg
t="1705642864204"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3280"
width="100%"
height="100%"
>
<path
d="M512 1024a512 512 0 1 1 512-512 512.8192 512.8192 0 0 1-512 512z m0-921.6a409.6 409.6 0 1 0 409.6 409.6 410.112 410.112 0 0 0-409.6-409.6z m0 102.4a49.7664 49.7664 0 0 1 51.2 51.2v102.4a51.2 51.2 0 0 1-102.4 0V256a49.7664 49.7664 0 0 1 51.2-51.2z m51.2 460.8a51.2 51.2 0 0 0-102.4 0v102.4a51.2 51.2 0 0 0 102.4 0z m-358.4-153.6a49.7664 49.7664 0 0 1 51.2-51.2h102.4a51.2 51.2 0 0 1 0 102.4H256a49.7664 49.7664 0 0 1-51.2-51.2z m460.8-51.2a51.2 51.2 0 0 0 0 102.4h102.4a51.2 51.2 0 0 0 0-102.4z"
fill="#DBAB55"
p-id="3281"
/>
</svg>
</div>
<div>ROLL房</div>
</div>
</div>
<div class="btn zmqx" @click="$router.push('/dream');playAudio()">
<div class="btns">
<div class="btns_icon">
<svg
t="1705642886759"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3414"
width="100%"
height="100%"
>
<path
d="M0 549.523l390 345.002V984l-72.262-79.788-223.655-94.955L0 549.523z m1024 0l-94.083 259.734-223.655 94.955L634 984v-89.475l390-345.002zM518.5 217l81.85 165.844 183.02 26.595L650.934 538.53l31.263 182.28L518.5 634.75l-163.698 86.061 31.263-182.28-132.434-129.092 183.02-26.595L518.5 217zM59.1 292.055L195.7 540.46l15.55 105.615-195-199.241L59.1 292.055z m905.8 0l42.85 154.778-195 199.24L828.3 540.46l136.6-248.404zM299.928 39l-13.489 93.154-110.342 122.76v145.371l-67.275-160.63L299.928 39z m424.144 0l191.106 200.656-67.275 160.63V254.913L737.56 132.154 724.072 39z"
fill="#6F4FFF"
p-id="3415"
/>
</svg>
</div>
<div>逐梦前行</div>
</div>
</div>
</div>
</div>
<div class="body_bottom">
<div class="body_bottom_top">
<div
class="title"
v-for="(item,index) in articleList"
:key="index"
@click="handleTo(item);playAudio()"
>{{ item }}</div>
</div>
<!-- <div class="body_bottom_bottom">
<p>
<img src="@/assets/image/gongan.png" alt width="13px" height="13px" /> 鲁公网安备37160202000848
</p>
<p>鲁ICP备2023012216号-2</p>
<p style="margin-top: 21px; font-size:11px;">Monkey CSGO 版权所有</p>
</div> -->
</div>
</div>
</template>
<script>
// @ is an alias to /src
import swiper from "@/components/swiperUser.vue";
import banner from "@/components/bannerUser.vue";
export default {
data() {
return {
articleList: ['隐私协议&用户协议','关于我们','帮助中心'],
show: true
};
},
components: { swiper, banner },
mounted() {
// this.getArticle();
},
methods: {
playAudio(){
this.$store.commit("playAudio");
},
handleTo(item) {
this.playAudio()
console.log('标题',item);
if(item=='隐私协议&用户协议'){
localStorage.setItem("help-type", 'yhxy');
}else if(item=='关于我们'){
localStorage.setItem("help-type", 'gywm');
}
else if(item=='帮助中心'){
localStorage.setItem("help-type", 'bzzx');
}
this.$router.push({
path: "/help"
});
},
// getArticle() {
// getArticle("sydb").then(res => {
// this.articleList = res.data.data.contentList;
// });
// }
}
};
</script>
<style scoped lang="scss">
.anima {
animation-name: likes; // 动画名称
animation-direction: alternate; // 动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。
animation-timing-function: linear; // 动画执行方式,linear:匀速;ease:先慢再快后慢;ease-in:由慢速开始;ease-out:由慢速结束;ease-in-out:由慢速开始和结束;
animation-delay: 0s; // 动画延迟时间
animation-iteration-count: infinite; // 动画播放次数,infinite:一直播放
animation-duration: 1s; // 动画完成时间
}
@keyframes likes {
0% {
transform: scale(1);
}
25% {
transform: scale(0.9);
}
50% {
transform: scale(0.85);
}
75% {
transform: scale(0.9);
}
100% {
transform: scale(1);
}
}
@media (max-width: 550px) {
.hudong {
width: 172px !important;
height: 123px !important;
}
.body_bottom {
margin-top: 55px !important;
}
.btn {
height: 100px !important ;
// background: red !important;
.btns {
width: 100px !important;
height: 25px !important;
font-size: 12px !important;
border-radius: 10px !important;
left: 10px !important;
bottom: 10px !important;
.btns_icon {
width: 14px !important;
height: 14px !important;
}
}
}
.openBox {
width: 100% !important;
height: 100px !important;
}
}
.hudong {
width: 241px;
height: 172px;
position: absolute;
right: 0;
bottom: 0;
// background-image: url("../assets/hudong.png");
background-size: 100% 100%;
// transform: rotateX(50deg);
}
.jsjj {
position: absolute;
right: 0;
bottom: 0;
background-image: url("../../public/Group 16.png");
background-size: 100% 100%;
// transform: rotateX(50deg);
}
.roll {
position: absolute;
right: 0;
bottom: 0;
background-image: url("../../public/Group 5.png");
background-size: 100% 100%;
// transform: rotateX(50deg);
}
.zmqx {
position: absolute;
right: 0;
bottom: 0;
background-image: url("../../public/Group 1.png");
background-size: 100% 100%;
// transform: rotateX(50deg);
}
.body_title {
margin: 0 auto;
width: 90%;
text-align: left;
margin-top: 10px;
}
.body_title .body_btn .openBox {
position: relative;
height: 125px;
background-image: url("../../public/Group 6.png");
background-position: bottom;
background-repeat: no-repeat;
background-size: 100% 100%;
}
.body_btn {
.btn {
margin: 0 auto;
width: 100%;
height: 125px;
margin-top: 12px;
position: relative;
// border: 1px solid red;
border-radius: 10px;
// box-shadow: 0px 0px 5px 10px rgba(0, 0, 0, 0.1);
box-shadow: 4px 4px 11px 1px rgba(0, 0, 0, 0.7);
// opacity: 0.7;
&:hover {
transition: all 0.3s ease-in-out;
opacity: 1;
}
&:not(:hover) {
transition: all 0.3s ease-in-out;
}
// /* 第一个阴影 */ 4px 4px 6px rgba(0, 0, 0, 0.7);
// box-shadow: 20px 20px 60px #141618, -20px -20px 60px #1c1e20;
.btns {
position: absolute;
left: 14px;
bottom: 14px;
width: 140px;
height: 35px;
background: rgba(16, 17, 21, 0.5);
box-shadow: 0px 0 11px 0px rgba(0, 0, 0, 0.25);
border-radius: 70px 70px 70px 70px;
font-size: 17px;
display: flex;
align-items: center;
justify-content: center;
.btns_icon {
width: 18px;
height: 18px;
margin-right: 8px;
}
}
}
}
.body_bottom {
margin-top: 77px;
border-top: 1px solid #323436;
.body_bottom_top {
width: 70%;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 14px;
color: #ffffff;
line-height: 4;
@media (max-width: 550px) {
font-size: 10px;
}
.title {
position: relative;
}
.title::after {
border-right: 1px solid #323436;
content: "";
display: block;
width: 1px;
height: 20px;
position: absolute;
top: 50%;
margin-top: -10px;
right: -18px;
color: #323436;
line-height: 1;
@media (max-width: 550px) {
right: -13px;
height: 15px;
margin-top: -7.5px;
}
}
.title:last-child::after {
display: none;
}
.shu {
color: #323436;
}
}
.body_bottom_bottom {
text-align: center;
font-size: 13px;
@media (max-width: 550px) {
font-size: 10px;
}
}
}
</style>
@@ -0,0 +1,298 @@
<template>
<div class="creat_bg">
<div class="animate__animated animate__fadeInDown" ref="slider">
<div
class="creat_close"
@click="
handleclose();
playAudio();
"
>
<svg
t="1708678106448"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2989"
>
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477"
p-id="2990"
/>
</svg>
</div>
<div class="title">下载APP</div>
<div class="kami">
<div class="box">
<img src="and.png" alt="" />
<div
class="cerate_btn center"
@click="
playAudio();
downloadAnd();
"
>
安卓
</div>
</div>
<div class="box">
<img src="apple.png" alt="" />
<div
class="cerate_btn center"
@click="
playAudio();
downloadIos();
"
>
ios
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {} from "@/api/index";
export default {
data() {
return {};
},
mounted() {},
computed: {},
methods: {
playAudio() {
this.$store.commit("playAudio");
},
downloadAnd() {
// const blob = new Blob(['http://www.f2cs2.com/download/f2cs2.apk'],{ type: 'application/zip' })
// const fileName = 'f2cs2'
// const link = document.createElement('a')
// link.download = fileName
// link.style.display = 'none'
// link.href = URL.createObjectURL(blob)
// document.body.appendChild(link)
// link.click()
// URL.revokeObjectURL(link.href)
// document.body.removeChild(link)
window.open("http://www.f2cs2.com/download/f2cs2.apk");
},
downloadIos() {
window.open("http://www.f2cs2.com/download/f2cs2APPLE.mobileconfig");
},
handleclose() {
const element = this.$refs.slider;
element.classList += " animate__fadeOutDown";
setTimeout(() => {
this.$router.back();
}, 350);
},
},
};
</script>
<style lang="scss" scoped>
.box {
width: 80%;
margin: 0 auto;
margin-bottom: 20px;
img {
width: 200px;
height: 200px;
}
}
.title {
font-size: 25px;
font-weight: bold;
margin-top: 100px;
}
.kami {
margin-top: 14px;
width: 100%;
background: #101115;
border-radius: 20px;
// margin-top: 100px;
overflow: hidden;
// @media (max-width: 550px) {
// height: 40px;
// }
}
.kami_input {
width: 100%;
font-size: 21px;
height: 100%;
background-color: rgba(0, 0, 0, 0.26);
color: #fff;
text-align: center;
outline: none;
// @media (max-width: 550px) {
// height: 40px;
// font-size: 15px;
// }
}
.kami_input::-webkit-input-placeholder {
color: #fff;
}
.creat_bg {
position: fixed;
top: 0;
left: 50%;
// margin-left: -262.5px;
width: 525px;
transform: translateX(-50%);
height: 100vh;
z-index: 20;
background: rgba(0, 0, 0, 0.85);
padding: 2% 20px;
@media (max-width: 550px) {
width: 100%;
}
.creat_close {
width: 100%;
text-align: right;
position: relative;
height: 25px;
.icon {
position: absolute;
right: 10px;
margin: 0;
width: 22px;
height: 22px;
@media (max-width: 550px) {
width: 16px;
height: 16px;
}
}
}
.fjrs {
@media (max-width: 550px) {
font-size: 15px;
}
}
.cerate_btn {
width: 93.5%;
height: 56px;
margin: 0 auto;
margin-top: 14px;
background: linear-gradient(
360deg,
rgba(37, 244, 132, 0.2) 0%,
rgba(37, 244, 132, 0.1) 100%
);
opacity: 1;
border: 1px solid #25f484;
font-size: 25px;
@media (max-width: 550px) {
font-size: 18px;
height: 40px;
}
}
}
.result {
margin: 0 auto;
width: 476px;
padding: 32px 0;
background: #101115;
border-radius: 23px 23px 23px 23px;
opacity: 1;
position: fixed;
top: 30%;
left: 50%;
margin-left: -238px;
z-index: 31;
@media (max-width: 550px) {
width: 340px;
margin-left: -170px;
padding: 25px 0;
}
.lvbu {
width: 100%;
position: absolute;
left: 0;
top: 0;
@media (max-width: 550px) {
height: 110px;
}
border-radius: 23px 23px 23px 23px;
height: 130px;
background: linear-gradient(
-218deg,
rgba(37, 244, 132, 0.2) 0%,
rgba(32, 29, 48, 0) 38%,
rgba(248, 125, 81, 0) 100%
);
}
.result_title {
width: 100%;
text-align: center;
font-size: 28px;
color: #ffff;
@media (max-width: 550px) {
font-size: 20px;
}
}
.result_center {
width: 100%;
margin: 0 auto;
margin-top: 30px;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.result_money {
width: 90%;
height: 56px;
// background: #323436;
border-radius: 35px 35px 35px 35px;
opacity: 1;
margin: 0 auto;
margin-top: 14px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
// color: #25f484;
@media (max-width: 550px) {
height: 40px;
}
}
.result_btn {
width: 100%;
margin: 14px 0 0 0;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 21px;
.result_btn_B {
width: 196px;
height: 56px;
background: linear-gradient(
360deg,
rgba(37, 244, 132, 0.5) 0%,
rgba(37, 244, 132, 0.25) 100%
);
opacity: 1;
border: 2px solid #25f484;
display: flex;
align-items: center;
justify-content: center;
@media (max-width: 550px) {
width: 140px;
height: 30px;
font-size: 15px;
}
}
}
}
</style>
File diff suppressed because it is too large Load Diff
+338
View File
@@ -0,0 +1,338 @@
<template>
<!-- 创建房间 -->
<div class="creat_bg">
<div class="animate__animated animate__fadeInDown" ref="slider">
<div
class="creat_close"
@click="
handleclose();
playAudio();
"
>
<svg
t="1708678106448"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2989"
>
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477"
p-id="2990"
/>
</svg>
</div>
<div class="title">兑换红包</div>
<div class="kami">
<input
type="text"
class="kami_input"
v-model="kami"
placeholder="请输入CDK"
/>
</div>
<div
class="cerate_btn center"
@click="
getRedPacket();
playAudio();
"
>
兑换红包
</div>
</div>
<!-- <div
class="result animate__animated animate__fadeInDown"
ref="result"
v-if="true"
> -->
<div
class="result animate__animated animate__fadeInDown"
ref="result"
v-if="isResult"
>
<div class="lvbu"></div>
<div class="result_title">领取成功</div>
<div class="result_money">
恭喜获得
<money class="money"></money>
<div style="color: #25f484">111</div>
</div>
<div class="result_btn">
<div
class="result_btn_B btn_click"
@click="
handleOk();
playAudio();
"
>
确定
</div>
</div>
</div>
</div>
</template>
<script>
import { receiveRedPacket, getUserInfo } from "@/api/index";
export default {
data() {
return {
kami: "",
isResult: false,
};
},
mounted() {
window.addEventListener("popstate", () => {
this.isResult=false
});
},
computed: {},
methods: {
playAudio(){
this.$store.commit("playAudio");
},
getRedPacket() {
receiveRedPacket(this.kami).then((res) => {
console.log("领取红包", res);
if (res.data.code == 200) {
this.kami = "";
this.isResult = true;
const state = { title: "title", url: "#" };
// console.log('window.histroy',window);
window.history.pushState(state, state.title, state.url);
getUserInfo().then((res) => {
if (res.data.code == 200) {
this.$store.commit("USER_INFO", res.data.data);
}
});
// this.handleclose();
this.$message({
type: "success",
message: "领取成功",
customClass: "log_success",
});
} else {
this.$message({
message: res.data.msg,
type: "warning",
customClass: "log_warning",
});
}
});
},
handleOk() {
console.log(1);
const element = this.$refs.result;
element.classList += " animate__fadeOutDown";
setTimeout(() => {
this.$router.back();
this.isResult = false;
}, 350);
},
handleclose() {
const element = this.$refs.slider;
element.classList += " animate__fadeOutDown";
setTimeout(() => {
this.$router.back();
}, 350);
},
},
};
</script>
<style lang="scss" scoped>
.title {
font-size: 25px;
font-weight: bold;
margin-top: 200px;
}
.kami {
margin-top: 14px;
width: 100%;
height: 56px;
background: #101115;
border: 2px solid #3fa2c7;
border-radius: 20px;
// margin-top: 100px;
overflow: hidden;
@media (max-width: 550px) {
height: 40px;
}
}
.kami_input {
width: 100%;
font-size: 21px;
height: 100%;
background-color: rgba(0, 0, 0, 0.26);
color: #fff;
text-align: center;
outline: none;
@media (max-width: 550px) {
height: 40px;
font-size: 15px;
}
}
.kami_input::-webkit-input-placeholder {
color: #fff;
}
.creat_bg {
position: fixed;
top: 0;
left: 50%;
// margin-left: -262.5px;
width: 525px;
transform: translateX(-50%);
height: 100vh;
z-index: 20;
background: rgba(0, 0, 0, 0.85);
padding: 2% 20px;
@media (max-width: 550px) {
width: 100%;
}
.creat_close {
width: 100%;
text-align: right;
position: relative;
height: 25px;
.icon {
position: absolute;
right: 10px;
margin: 0;
width: 22px;
height: 22px;
@media (max-width: 550px) {
width: 16px;
height: 16px;
}
}
}
.fjrs {
@media (max-width: 550px) {
font-size: 15px;
}
}
.cerate_btn {
width: 93.5%;
height: 56px;
margin: 0 auto;
margin-top: 14px;
background: linear-gradient(
360deg,
#1f3a58 0%,
rgba(37, 244, 132, 0.1) 100%
);
opacity: 1;
border: 1px solid #3fa2c7;
font-size: 25px;
@media (max-width: 550px) {
font-size: 18px;
height: 40px;
}
}
}
.result {
margin: 0 auto;
width: 476px;
padding: 32px 0;
background: #101115;
border-radius: 23px 23px 23px 23px;
opacity: 1;
position: fixed;
top: 30%;
left: 50%;
margin-left: -238px;
z-index: 31;
@media (max-width: 550px) {
width: 340px;
margin-left: -170px;
padding: 25px 0;
}
.lvbu {
width: 100%;
position: absolute;
left: 0;
top: 0;
@media (max-width: 550px) {
height: 110px;
}
border-radius: 23px 23px 23px 23px;
height: 130px;
background: linear-gradient(
-218deg,
#1f3a58 0%,
rgba(32, 29, 48, 0) 38%,
rgba(248, 125, 81, 0) 100%
);
}
.result_title {
width: 100%;
text-align: center;
font-size: 28px;
color: #ffff;
@media (max-width: 550px) {
font-size: 20px;
}
}
.result_center {
width: 100%;
margin: 0 auto;
margin-top: 30px;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.result_money {
width: 90%;
height: 56px;
// background: #323436;
border-radius: 35px 35px 35px 35px;
opacity: 1;
margin: 0 auto;
margin-top: 14px;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
// color: #3fa2c7;
@media (max-width: 550px) {
height: 40px;
}
}
.result_btn {
width: 100%;
margin: 14px 0 0 0;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 21px;
.result_btn_B {
width: 196px;
height: 56px;
background: #1f3a58;
opacity: 1;
border: 2px solid #3fa2c7;
display: flex;
align-items: center;
justify-content: center;
@media (max-width: 550px) {
width: 140px;
height: 30px;
font-size: 15px;
}
}
}
}
</style>
+347
View File
@@ -0,0 +1,347 @@
<template>
<div class="home">
<!-- 轮播图区域 -->
<div class="banner-section">
<!-- 左侧轮播图 -->
<div class="banner-left">
<img
src="@/assets/index/图层 82@2x.webp"
alt="banner"
class="banner-img"
/>
</div>
<!-- 右侧功能按钮 -->
<div class="banner-right">
<div class="banner-btn" @click="handleWelfare">
<img src="@/assets/index/fuli.webp" alt="福利" class="btn-icon" />
<span class="btn-text">福利</span>
</div>
<div class="banner-btn" @click="handleRanking">
<img src="@/assets/index/paihang.webp" alt="排行" class="btn-icon" />
<span class="btn-text">排行</span>
</div>
<div class="banner-btn" @click="customerService">
<img src="@/assets/index/kefu.webp" alt="客服" class="btn-icon" />
<span class="btn-text">客服</span>
</div>
<div class="banner-btn" @click="handleMessage">
<img src="@/assets/index/xinxi.webp" alt="消息" class="btn-icon" />
<span class="btn-text">消息</span>
</div>
</div>
</div>
<!-- 游戏模式区域 -->
<div class="game-section">
<!-- 经典盲盒 -->
<router-link to="/open" tag="div" class="game-item game-jingdian">
<img src="@/assets/index/jingdian.webp" alt="经典盲盒" />
</router-link>
<!-- 盲盒对战 -->
<router-link to="/pk" tag="div" class="game-item game-duizhan">
<img src="@/assets/index/duizhan.webp" alt="盲盒对战" />
</router-link>
<!-- 幸运饰品 -->
<router-link to="/dream" tag="div" class="game-item game-xingyun">
<img src="@/assets/index/xingyun.webp" alt="幸运饰品" />
</router-link>
<!-- ROLL房 -->
<router-link to="/roll" tag="div" class="game-item game-roll">
<img src="@/assets/index/roll.webp" alt="ROLL房" />
</router-link>
</div>
<!-- 客服按钮 -->
<!-- <div class="kf-item" @click="customerService">在线客服</div> -->
<!-- <div class="body_bottom">
<div class="body_bottom_top">
<div
class="title"
v-for="(item, index) in articleList"
:key="index"
@click="handleTo(item.id)"
>
{{ item.title }}
</div>
</div>
<div class="body_bottom_bottom">
</div>
</div> -->
</div>
</template>
<script>
// @ is an alias to /src
import swiper from "@/components/swiperUser.vue";
import banner from "@/components/bannerUser.vue";
import customer from "../../public/config.json";
import { getArticle } from "@/api/index";
export default {
data() {
return {
articleList: [],
show: true,
};
},
components: { swiper, banner },
mounted() {
this.getArticle();
},
methods: {
handleTo(e) {
if (e == 2 || e == 5) {
localStorage.setItem("help-type", "yhxy");
} else if (e == 9) {
localStorage.setItem("help-type", "bzzx");
} else {
localStorage.setItem("help-type", "gywm");
}
this.$router.push({
path: "/help",
});
},
getArticle() {
getArticle("sydb").then((res) => {
this.articleList = res.data.data.contentList;
});
},
customerService() {
const userInfo = JSON.parse(localStorage.getItem("userInfo"));
const customerServiceAddress = customer.customerServiceAddress;
const url = customerServiceAddress.url;
const noCanClose = customerServiceAddress.noCanClose;
const kefu_id = customerServiceAddress.kefu_id;
const token = customerServiceAddress.token;
if (userInfo) {
window.location.href = `${url}?noCanClose=${noCanClose}&token=${token}&kefu_id=${kefu_id}&phone=${userInfo.mobile}&nickName=${userInfo.name}`;
} else {
window.location.href = `${url}?noCanClose=${noCanClose}&token=${token}&kefu_id=${kefu_id}`;
}
},
handleWelfare() {
// 跳转到福利页面
this.$router.push('/welfare');
},
handleRanking() {
// 跳转到排行榜页面
this.$router.push('/welfare');
console.log('排行榜');
},
handleMessage() {
this.$router.push('/notifications');
// 跳转到消息页面
console.log('消息');
},
},
};
</script>
<style scoped lang="scss">
.home {
padding-bottom: 80px;
min-height: 100vh;
overflow-x: hidden;
}
// 轮播图区域
.banner-section {
width: 100%;
padding: 0.5rem 0.75rem;
box-sizing: border-box;
display: flex;
gap: 0.375rem;
height: 5.625rem;
margin-top: 1.25rem;
// 左侧轮播图
.banner-left {
flex: 1;
min-width: 0;
.banner-img {
width: 100%;
height: 100%;
border-radius: 0.375rem;
display: block;
object-fit: cover;
}
}
// 右侧功能按钮
.banner-right {
flex: 1;
// width: 160px;
display: flex;
flex-wrap: wrap;
gap: 0.3125rem;
align-content: flex-start;
.banner-btn {
width: calc(50% - 0.15625rem);
// height: 40px;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
display: flex;
align-items: center;
justify-content: center;
gap: 0.25rem;
background: url('../assets/index/icon-bg.webp') no-repeat right center;
background-size: 70% 80%;
// background: rgba(255, 255, 255, 0.1);
// backdrop-filter: blur(10px);
// border-radius: 6px;
// border: 1px solid rgba(255, 255, 255, 0.2);
.btn-icon {
width: 2rem;
height: 2rem;
flex-shrink: 0;
// margin-left: -2rem;
}
.btn-text {
font-size: 0.75rem;
color: #37414F;
font-weight: 500;
white-space: nowrap;
}
&:active {
transform: scale(0.96);
}
}
}
}
// 游戏模式区域
.game-section {
width: 100%;
padding: 0 0.75rem;
box-sizing: border-box;
position: relative;
height: 25rem;
.game-item {
cursor: pointer;
transition: all 0.3s ease;
position: absolute;
width: 60%;
img {
width: 100%;
height: auto;
display: block;
border-radius: 0.5rem;
}
&:active {
transform: scale(0.98);
}
}
// 经典盲盒 - 最上面,横向占满
.game-jingdian {
top: 4rem;
right:4rem;
// right: 0;
}
// 盲盒对战 - 在经典盲盒下面,偏右
.game-duizhan {
top: 9rem;
right: 1rem;
}
// 幸运饰品 - 在盲盒对战下面,偏左
.game-xingyun {
top: 15rem;
right: 2rem;
}
// ROLL房 - 在幸运饰品下面,偏左
.game-roll {
top: 21rem;
right: 3.5rem;
}
}
// 客服按钮
.kf-item {
position: fixed;
bottom: 7.5rem;
right: 1.25rem;
width: 3.75rem;
height: 3.75rem;
line-height: 3.75rem;
background-size: 100% 100%;
background-image: url("../assets/kf_bg.png");
font-size: 0.75rem;
color: #fff;
text-align: center;
cursor: pointer;
z-index: 998;
transition: all 0.3s ease;
&:active {
transform: scale(0.95);
}
}
.body_bottom {
margin-top: 77px;
border-top: 1px solid #323436;
.body_bottom_top {
width: 70%;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-around;
font-size: 14px;
color: #ffffff;
line-height: 4;
flex-wrap: wrap;
@media (max-width: 550px) {
font-size: 10px;
}
.title {
position: relative;
}
.title::after {
border-right: 1px solid #323436;
content: "";
display: block;
width: 1px;
height: 20px;
position: absolute;
top: 50%;
margin-top: -10px;
right: -18px;
color: #323436;
line-height: 1;
@media (max-width: 550px) {
right: -13px;
height: 15px;
margin-top: -7.5px;
}
}
.title:last-child::after {
display: none;
}
.shu {
color: #323436;
}
}
.body_bottom_bottom {
text-align: center;
font-size: 13px;
@media (max-width: 550px) {
font-size: 10px;
}
}
}
</style>
File diff suppressed because it is too large Load Diff
+471
View File
@@ -0,0 +1,471 @@
<template>
<div class="home" @click.stop="istypeshow = false">
<swiper></swiper>
<div class="header_top">
<handleback>返回</handleback>
<div>玩转盲盒</div>
<div class="speac"></div>
</div>
<div class="box_fenlei">
<div class="box_type_low">
<!-- <div @click.stop="
handleChangeType('', '盲盒类别');
playAudio();
" class="type_btn center" :class="boxPage.boxTypeId == '' ? 'active' : ''">
全部
</div> -->
<div class="type_btn center" :class="item.boxTypeId == currentId ? 'active' : ''"
v-for="(item, index) in headernava" :key="index" @click.stop="
handleChangeType(item.boxTypeId, item.boxTypeName, index);
playAudio();
">
{{ item.boxTypeName }}
</div>
</div>
</div>
<div class="box" @scroll="handleScroll">
<div class="box_type">
<div class="boxs grade2">
<div v-for="(v, index) in www" :key="index" class="boxs_list btn_click" @click.stop="
handleGo(v.boxId);
playAudio();
">
<div class="hot" v-if="false">
<div class="hots">最新</div>
</div>
<div class="box_list_img center">
<img :src="v.boxImg01 | fullPath" alt width="100%" class="bg1" />
<img v-if="v.boxImg02 " :src="v.boxImg02| fullPath" alt width="100%" class="bg2" />
</div>
<div class="box_list_name">{{ v.boxName }}</div>
<div class="box_list_const">
<money class="money"></money>
{{ v.price }}
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import swiper from "@/components/swiperUser.vue";
import { getArticle, getBoxList, getBoxTypeList } from "@/api/index";
export default {
data() {
return {
istypeshow: false,
boxTypeList: [],
typePage: {
page: 1,
size: 10,
},
boxList: [],
tableList: [],
boxPage: {
boxTypeId: "",
boxTypeName: "盲盒类别",
gameMouldId: 1,
page: 1,
size: 10,
orderByFie: 2,
},
getAll: false,
isOver: "加载中",
scroll: "",
headernava: [],
www: [],
currentId:0
};
},
components: { swiper },
mounted() {
//this.getTypeList();
this.getList();
},
activated() {
let box = document.getElementsByClassName('box')
console.log(box);
if (this.scroll > 0) {
box[0].scrollTo(0, this.scroll);
this.scroll = 0;
}
},
methods: {
handleChangeType(res, name, index) {
this.currentId = res
console.log(res, name)
this.www = this.boxList[index].boxList;
},
handleScroll(e) {
this.event = e;
this.scroll = e.srcElement.scrollTop;
if (
e.srcElement.scrollTop + e.srcElement.clientHeight >=
e.srcElement.scrollHeight
) {
if (this.isOver == "加载中") {
this.boxPage.page++;
setTimeout(() => {
this.getList();
}, 5);
}
}
},
playAudio() {
this.$store.commit("playAudio");
},
handleilltate() {
this.$bus.$emit("is_illustrate", true);
setTimeout(() => {
getArticle("wzmh").then((res) => {
let dream = res.data.data.contentList[0].content;
this.$bus.$emit("nr_illustrate", dream);
});
}, 500);
},
handleGo(res) {
this.$router.push({
path: "/openbox",
query: {
id: res,
},
});
},
getTypeList() {
if (this.boxTypeList.length == 0) {
getBoxTypeList(this.typePage).then((res) => {
if (res.data.code == 200) {
console.log(res.data, 'woyao de shuju')
this.boxTypeList.push(...res.data.data.records);
if (res.data.data.records.length == this.typePage.size) {
this.typePage.page++;
this.getTypeList();
} else {
this.getAll = true;
}
}
console.log("玩法列表", this.boxTypeList);
});
}
},
getList() {
let data={
boxType:1
}
getBoxList(data).then((res) => {
if (res.data.code == 200) {
this.headernava = res.data.data
this.currentId = this.headernava[0].boxTypeId
// this.boxTypelist = res.data.data;
/* let arr = res.data.data; */
/* arr.map((item) => {
return (item.boxNum = 0);
}); */
this.boxList = res.data.data;
console.log(this.boxList, 'woyaode shuju ');
this.www = res.data.data[0].boxList;
if (res.data.data.length < this.boxPage.size) {
this.isOver = "暂无更多";
}
}
});
// getBoxList(this.boxPage).then((res) => {
// // console.log("箱子列表", res.data.data);
// if (res.data.code == 200) {
// let arr = res.data.data;
// arr.forEach((item) => {
// if (this.boxList.get(item.boxTypeId)) {
// this.boxList.get(item.boxTypeId).push(item);
// } else {
// this.boxList.set(item.boxTypeId, [item]);
// }
// });
// console.log("箱子列表map", this.boxList);
// if (res.data.data.length < this.boxPage.size) {
// this.isOver = "暂无更多";
// }
// this.boxTypeList.map((item) => {
// return (item.children = this.boxList.get(item.id));
// });
// this.tableList = this.boxTypeList.filter((item) => {
// return item.children;
// });
// console.log("处理后的分类", this.tableList);
// }
// });
},
},
watch: {
getAll(newValue) {
if (newValue) {
this.getList();
}
},
},
};
</script>
<style lang="scss" scoped>
.box_fenlei {
z-index: 99;
width: 100%;
// height: 42px;
// background: url('../../assets/pinxiangBottom_top.png') no-repeat center center;
// background-size: 100% 100%;
// opacity: 1;
position: absolute;
@media (max-width: 550px) {
// height: 30px;
font-size: 11px;
// top: 126px;
}
.box_type_low {
overflow-x: auto;
width: 100%;
top: 45px;
// background: #323436;
opacity: 1;
display: flex;
@media (max-width: 550px) {
top: 35px;
// height: 30px;
}
&::-webkit-scrollbar {
width: 2px;
height: 6px;
}
&::-webkit-scrollbar-thumb {
background: #3fa2c7;
border-radius: 5px;
}
@media (max-width: 550px) {
&::-webkit-scrollbar {
width: 2px;
height: 6px;
}
}
.active {
// background: linear-gradient(360deg,
// rgba(37, 244, 132, 0.5) 0%,
// rgba(37, 244, 132, 0.25) 100%);
// opacity: 1;
// border: 1px solid #3fa2c7;
background: url('../../assets/pinxiangBottom_text_bg.png') no-repeat center center;
background-size: contain;
}
.type_btn {
height: 42px;
width: 100px;
flex-shrink: 0;
float: left;
overflow: hidden;
// border-radius: 21px;
// padding: 10px 20px;
@media (max-width: 550px) {
height: 30px;
}
}
}
}
.speac {
width: 54px;
@media (max-width: 550px) {
width: 35px;
}
}
.box {
margin: 0 auto;
width: 98%;
height: 500px;
margin-top: 44px;
&::-webkit-scrollbar {
width: 2px;
}
&::-webkit-scrollbar-thumb {
background: #3fa2c7;
border-radius: 5px;
}
@media (max-width: 550px) {
height: 535px;
&::-webkit-scrollbar {
width: 2px;
}
}
overflow-y: auto;
.box_name {
background-size: 100% 100%;
font-size: 25px;
@media (max-width: 550px) {
font-size: 18px;
}
}
}
.boxs {
width: 100%;
// display: flex;
align-items: center;
justify-content: space-around;
flex-wrap: wrap;
margin: 0 auto;
margin-top: 37px;
}
.box_type {
margin-top: 35px;
}
.boxs_list {
width: 100%;
margin-top: 14px;
position: relative;
padding-top: 1px;
background: url('../../assets/gen-box-bg-C9N-vsd0.png') no-repeat center center;
background-size: contain;
@media (max-width: 550px) {
margin-top: 14px;
margin-top: 0;
}
.hot {
width: 56px;
height: 42px;
position: absolute;
right: 0;
top: 0;
overflow: hidden;
.hots {
position: absolute;
right: -5px;
top: 8px;
width: 69px;
height: 21px;
background: linear-gradient(90deg, #3a97e4 0%, #3fa2c7 100%);
box-shadow: 0px 3px 7px 0px rgba(37, 244, 132, 0.5);
opacity: 1;
transform: rotate(-14deg);
font-size: 16px;
color: #181a1c;
line-height: 21px;
}
}
}
.boxs {
.boxs_list:last-child {
// margin-right: auto;
}
}
.box_list_img {
width: 88%;
// height: 181px;
margin: 0 auto;
position: relative;
top: 20px;
.bg1 {}
.bg2 {
width: 151px;
// height: 151px;
position: absolute;
// left: 50%;
// left: 0;
// transform: translateX(-50%);
transition: all 0.3s ease-in-out;
}
&:hover {
.bg2 {
// animation: boxscola 2s ease infinite;
transition: all 0.2s ease;
transform: scale(1.2);
}
}
}
.box_list_name {
margin-top: 22px;
font-size: 17px;
color: #fff;
@media (max-width: 550px) {
font-size: 12px;
}
}
.box_list_const {
margin: 0 auto;
margin-top: 14px;
width: 89%;
// height: 42px;
// background: url('../../assets/box_moeny_bg.png') no-repeat center center;
background-size: contain;
display: flex;
align-items: center;
justify-content: center;
color: #ffffff;
line-height: 1;
padding-bottom:30px;
@media (max-width: 550px) {
// height: 30px;
}
}
.header_top {
width: 98%;
height: 56px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
div:first-child {}
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
}
}
.home {
width: 100%;
margin: 0 auto;
// height: 100vh;
// background: #0e1227c4;
}
</style>
+390
View File
@@ -0,0 +1,390 @@
getDetial() {
getFightData(this.id).then(res => { ///////////获取对战数据
this.detialList = res.data.data;///////初始化数据
this.roomstatus = res.data.data.status;/////房间的状态0为等待
this.detialList.boxData = JSON.parse(res.data.data.boxData);////所有宝箱
this.detialList.userData = JSON.parse(res.data.data.userData);///所有用户
this.detialList.currentPeople = res.data.data.userData.length;///人数
this.detialList.boxData = res.data.data.boxData.flatMap(item =>
Array.from({ length: item.boxNum }, () => item)
);//////////////////处理宝箱数据
this.totalround = this.detialList.boxData.length; /////几个宝箱就是几个回合
this.waitpeople = { people: [] };/////等待的人
for (let index = 0; index < this.detialList.playerNum; index++) {
const obj = (this.joinSeatNumV2.people[index] = { realget: [] });
obj.joinSeatNum = index + 1;
if (this.detialList.userData[index]) {
this.waitpeople.people.push(this.detialList.userData[index]);
this.waitpeople.people[index].status = "1";
this.waitpeople.people[index].joinSeatNum = index + 1;
} else {
this.waitpeople.people.push({
status: "0",
joinSeatNum: index + 1
});
}
}///人数判断有几个人
// v2 将用户分配到指定座位
// 遍历arr1中的每一项
this.joinSeatNumV2.status = res.data.data.status;
this.joinSeatNumV2.people.forEach(item1 => {
// 遍历arr2中的每一项,寻找joinSeatNum相等的项
res.data.data.userData.forEach(item2 => {
if (item1.joinSeatNum === item2.joinSeatNum) {
// 如果找到相等的项,在arr1的当前项中添加realuser属性,并设置其值为arr2的当前项
item1.realuser = item2;
}
});
});
//每个人
this.joinSeatNumV2.people = this.joinSeatNumV2.people.map(item => ({
...item,
realdrop: []
}));
if (this.roomstatus == "0") { /////////如果他的状态时0的话就是等待中
///this.get(this.totalround);//总回合数
this.deng = setTimeout(() => {
this.getDetial()
}, 1000);
} else if (this.roomstatus == "1") {
getpkrealdetial({
fightId: this.$route.query.id,
rounds: this.totalround
}).then(res => {
const roundresult = res.data.data.playerGainsOrnamentsData;
if (res.data.code === 500) {
console.log("结束")
} else {
this.realround = res.data.data.round;///第几回合
if (res.data.data.playerGainsOrnamentsData == null) {
this.getpkResult()
} else {
getBoxdetial({//根据宝箱的id获取宝箱的数据
id: this.detialList.boxData[Number(res.data.data.round - 1)].boxId
}).then(res => {
// const money=
this.joinSeatNumV2.people.forEach(item1 => {
roundresult.forEach(item2 => {
if (item1.joinSeatNum === item2.joinSeatNum) {
let drawList = this.generateRandomDrawList(
res.data.data.boxOrnamentsList,
20
);
item1.roundresult = drawList;
item1.roundresult.push(item2.ornamentsData);
item1.realmoney = 0;
this.$forceUpdate();
setTimeout(() => {
item1.realmoney += Number(
item2.ornamentsData.ornamentsPrice
);
item1.realget.unshift(item2.ornamentsData);
}, 6200);
}
});
});
this.begin = false;
setTimeout(() => {
this.begin = true;
}, 10);
});
}
}
});
this.aaaaa = setTimeout(() => {
this.get(this.totalround);//传总回合数
}, 6000);
} else if (this.roomstatus == "2") {
/* this.refresh() */
clearTimeout(this.deng);
this.getpkResult();
clearTimeout(this.aaaaa)
clearTimeout(this.aaa)
this.aaa = null
clearTimeout(this.timerv2)
clearTimeout(this.ding)
this.timerv2 = null
}
});
},
cleantimer(){
clearTimeout(this.timerv2);
this.timerv2 = null;
},
refresh() {
location.reload();
},
get(round) {
this.timerv2 = setInterval(() => {
if (this.realround == null) {
this.cleantimer();
this.getpkResult();
this.refresh()
} else {
getpkrealdetial({
fightId: this.$route.query.id,
rounds: round
}).then(res => {
if (res.data.code == 500) {
this.cleantimer();
/* this.aaaa=setTimeout(() => { */
this.getpkResult();
/* this.getDetial(); */
/* this.clearTimeout(this.aaaa)
}, 6500); */
//
} else {
const roundresult = res.data.data.playerGainsOrnamentsData;
this.realround = res.data.data.round;
if (res.data.data.playerGainsOrnamentsData == null) {
clearTimeout(this.timerv2);
this.timerv2 = null;
this.getDetial();
} else {
getBoxdetial({
id: this.detialList.boxData[Number(res.data.data.round - 1)]
.boxId
}).then(res => {
// const money=
this.joinSeatNumV2.people.forEach(item1 => {
roundresult.forEach(item2 => {
if (item1.joinSeatNum === item2.joinSeatNum) {
let drawList = this.generateRandomDrawList(
res.data.data.boxOrnamentsList,
20
);
item1.roundresult = drawList;
item1.roundresult.push(item2.ornamentsData);
this.$forceUpdate();
setTimeout(() => {
item1.realmoney += Number(
item2.ornamentsData.ornamentsPrice
);
item1.realget.unshift(item2.ornamentsData);
}, 6200);
}
});
});
this.begin = false;
setTimeout(() => {
this.begin = true;
}, 100);
});
}
}
});
}
}, 5000);
},
generateRandomDrawList(ornamentsArray, drawListLength) {
const drawList = [];
for (let i = 0; i < drawListLength; i++) {
const randomIndex = Math.floor(Math.random() * ornamentsArray.length);
drawList.push(ornamentsArray[randomIndex]);
}
return drawList;
},
formatter(value) {
// 格式化函数,可以根据需要自定义
return value.toFixed(2); // 格式化为本地数字字符串
},
handlejointrue() {
let obj = {
fightId: this.$route.query.id,
joinSeatNum: this.peopleselect,
rounds: this.totalround
};
joinFight(obj).then(() => {
this.isjoin = false;
this.dings = setTimeout(() => {
this.getDetial();
clearTimeout(this.dings)
}, 500);
});
},
handleJoin(res) {
this.peopleselect = res;
this.title = "加入房间";
this.isjoin = true;
},
///复制分享链接
async handlecopy() {
const url = window.location.href; // 获取当前地址栏的URL
const textarea = document.createElement("textarea");
textarea.value = url;
document.body.appendChild(textarea);
textarea.focus();
textarea.select();
// 执行复制操作
try {
const successful = document.execCommand("copy");
if (successful) {
// 复制成功,使用 Element UI 的 $message 显示通知
this.$message({
message: "复制成功",
type: "success",
customClass: "log_success"
});
} else {
// 复制失败,显示错误信息
this.$message({
message: "浏览器版本过低,请升级浏览器",
type: "warning",
customClass: "log_warning"
});
}
} catch (err) {
this.$message({
message: "浏览器版本过低,请升级浏览器",
type: "warning",
customClass: "log_warning"
});
}
// 移除textarea元素
document.body.removeChild(textarea);
},
getrealPeople() { },
getpkResult() {
clearTimeout(this.aaa)
clearTimeout(this.deng);
this.aaa = null
getFightResult(this.id).then(res => {
this.jieshuList = res.data.data;
this.jieshuList.winnerGainsOrnamentsData.forEach(item => {
let totalPrice = 0;
if (item.ornamentsDataList) {
item.ornamentsDataList.forEach(ornament => {
totalPrice += ornament.ornamentsPrice;
});
item.totalprize = totalPrice;
}
});
this.ding = setTimeout(() => {
if (this.detialList.status == "2") {
for (let i = 0; i < this.waitpeople.people.length; i++) {
// 遍历 arr2
for (
let j = 0;
j < this.jieshuList.winnerGainsOrnamentsData.length;
j++
) {
// 如果 joinSeatNum 相等
if (
this.waitpeople.people[i].joinSeatNum ===
this.jieshuList.winnerGainsOrnamentsData[j].joinSeatNum
) {
// 如果 arr1 的当前项没有 result 属性,则添加该属性
// 将 arr2 的当前项添加到 arr1 的 result 属性中
this.waitpeople.people[
i
].result = this.jieshuList.winnerGainsOrnamentsData[j];
this.waitpeople.people[i].winner = true;
} else {
this.waitpeople.people[i].winner = false;
this.waitpeople.people[i].resultcoin = "0.00";
}
}
}
this.waitpeople.people.forEach(item => {
let resultcoin = 0;
if (item.result) {
item.result.ornamentsDataList.forEach(ornament => {
resultcoin += ornament.ornamentsPrice;
});
item.resultcoin = resultcoin;
}
});
this.loading = false;
this.$forceUpdate();
}
if (this.joinSeatNumV2.status == "2") {
for (let i = 0; i < this.joinSeatNumV2.people.length; i++) {
// 遍历 arr2
for (
let j = 0;
j < this.jieshuList.winnerGainsOrnamentsData.length;
j++
) {
// 如果 joinSeatNum 相等
if (
this.joinSeatNumV2.people[i].joinSeatNum ===
this.jieshuList.winnerGainsOrnamentsData[j].joinSeatNum
) {
// 如果 arr1 的当前项没有 result 属性,则添加该属性
// 将 arr2 的当前项添加到 arr1 的 result 属性中
this.joinSeatNumV2.people[
i
].result = this.jieshuList.winnerGainsOrnamentsData[j];
this.joinSeatNumV2.people[i].winner = true;
} else {
this.joinSeatNumV2.people[i].winner = false;
this.joinSeatNumV2.people[i].resultcoin = "0.00";
}
}
}
this.joinSeatNumV2.people.forEach(item => {
let resultcoin = 0;
if (item.result) {
item.result.ornamentsDataList.forEach(ornament => {
resultcoin += ornament.ornamentsPrice;
});
item.resultcoin = resultcoin;
}
});
}
}, 450);
/* clearTimeout(this.ding) */
});
// 对战结果
setInterval(() => {
// 遍历arr2,找到arr1中对应的项,并将ornamentsDataList添加到realdrop属性中
this.jieshuList.playerGainsOrnamentsData.forEach(item2 => {
const foundIndex = this.joinSeatNumV2.people.findIndex(
item1 => item1.joinSeatNum === item2.joinSeatNum
);
if (foundIndex !== -1) {
// 如果找到了对应的项,则添加ornamentsDataList到realdrop中
this.joinSeatNumV2.people[foundIndex].realdrop.push(
...item2.ornamentsDataList
);
}
});
}, 700);
}
File diff suppressed because it is too large Load Diff
+311
View File
@@ -0,0 +1,311 @@
<template>
<div class="creat_bg" v-if="boxDetail.flag">
<div class="animate__animated animate__fadeInDown" ref="slider">
<div class="title">盒子包含</div>
<div
class="creat_close"
@click="
handleclose();
playAudio();
"
>
<svg
t="1708678106448"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2989"
>
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477"
p-id="2990"
/>
</svg>
</div>
<div class="box_bottom grade2">
<div
class="box_bottom_hzbh"
:style="{ 'background-image': `url(${item.levelImg})` }"
v-for="(item, index) in list"
:key="index"
>
<div class="hzbh_img">
<img :src="item.imageUrl|fullPath" width="100%" height="100%" />
</div>
<div class="hzbh_bl">{{ item.oddsResult }}%</div>
<div class="hzbh_name textover-f">{{ item.name }}</div>
<div class="hzbh_money">
<money class="money"></money>
{{ item.usePrice }}
</div>
</div>
</div>
<div
class="cerate_btn center"
@click="
handleclose();
playAudio();
"
>
关闭
</div>
</div>
</div>
</template>
<script>
import { getDetail } from "@/api/index";
export default {
props: ["boxDetail"],
data() {
return {
show_box_detail: false,
list: [],
};
},
created() {
window.addEventListener("popstate", () => {
if (this.show_box_detail) {
this.show_box_detail = false;
}
});
// this.$bus.$on("show_box_detail", (data) => {
// this.show_box_detail = data.flag;
// });
},
beforeDestroy() {
// this.$bus.$off('show_box_detail')
},
computed: {},
watch: {
boxDetail: {
handler(newValue) {
if (newValue.flag) {
const state = { title: "title", url: "#" };
console.log("window.histroy", window);
window.history.pushState(state, state.title, state.url);
getDetail(newValue.boxId).then((res) => {
console.log("simpleBoxDetail", res);
this.list = res.data.data.boxOrnamentsList;
});
}
},
deep: true,
},
},
methods: {
playAudio() {
this.$store.commit("playAudio");
},
/* 关闭 */
handleclose() {
const element = this.$refs.slider;
element.classList += " animate__fadeOutDown";
setTimeout(() => {
this.boxDetail.flag=false
this.$router.back();
}, 350);
},
},
};
</script>
<style lang="scss" scoped>
.box_bottom {
width: 90%;
margin: 0 auto;
// display: flex;
height: auto;
max-height: 70vh;
overflow-y: auto;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
&::-webkit-scrollbar {
width: 2px;
}
&::-webkit-scrollbar-thumb {
background: #3fa2c7;
border-radius: 5px;
}
@media (max-width: 550px) {
&::-webkit-scrollbar {
width: 2px;
}
}
.box_bottom_hzbh {
position: relative;
margin-top: 4px;
background-size: 100% 100%;
width: 97%;
height: 224px;
background-color: #1f2023;
border-radius: 14px 14px 14px 14px;
transition: all 0.2s ease-in-out;
opacity: 1;
margin: 1%;
&:hover {
.hzbh_img {
transition: all 0.2s ease-in-out;
transform: translateY(-10px);
}
}
@media (max-width: 550px) {
height: 187px;
}
.hzbh_img {
transition: all 0.2s ease-in-out;
// height: 168px;
width: 168px;
height: 126px;
margin: 0 auto;
margin-top: 30px;
@media (max-width: 550px) {
margin-top: 28px;
width: 120px;
height: 90px;
}
}
.hzbh_name {
font-size: 19px;
@media (max-width: 550px) {
font-size: 13px;
}
}
.hzbh_bl {
position: absolute;
right: 7px;
top: 14px;
font-weight: bold;
@media (max-width: 550px) {
font-size: 13px;
}
}
.hzbh_money {
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
color: #3fa2c7;
margin-top: 12px;
font-size: 21px;
@media (max-width: 550px) {
font-size: 15px;
}
}
}
.box_bottom_hydl {
position: relative;
margin-top: 4px;
background-size: 100% 100%;
width: 100%;
height: 175px;
background-color: #1f2023;
border-radius: 14px 14px 14px 14px;
transition: all 0.2s ease-in-out;
opacity: 1;
font-size: 13px;
&:hover {
.hydl_img {
transition: all 0.2s ease-in-out;
transform: translateY(-10px);
}
// background-color: red;
}
@media (max-width: 550px) {
height: 125px;
font-size: 9px;
}
.hydl_img {
width: 80%;
transition: all 0.2s ease-in-out;
// height: 112px;
margin: 0 auto;
margin-top: 5%;
@media (max-width: 550px) {
width: 80px;
height: 80px;
}
}
.hydl_money {
margin-top: 5%;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
color: #3fa2c7;
// font-size: 14px;
.moneys {
margin-right: 2px;
width: 14px;
height: 14px;
}
}
}
}
.creat_bg {
position: fixed;
top: 0;
left: 50%;
// margin-left: -262.5px;
width: 525px;
transform: translateX(-50%);
height: 100vh;
z-index: 20;
background: rgba(0, 0, 0, 0.85);
padding: 2% 0;
@media (max-width: 550px) {
width: 100%;
}
.creat_close {
width: 100%;
text-align: right;
position: relative;
height: 25px;
.icon {
position: absolute;
right: 10px;
margin: 0;
width: 22px;
height: 22px;
@media (max-width: 550px) {
width: 16px;
height: 16px;
}
}
}
.cerate_btn {
width: 93.5%;
height: 56px;
margin: 0 auto;
margin-top: 14px;
background: linear-gradient(
360deg,
#1f3a58 0%,
rgba(37, 244, 132, 0.1) 100%
);
opacity: 1;
border: 1px solid #3fa2c7;
font-size: 25px;
@media (max-width: 550px) {
font-size: 18px;
height: 40px;
}
}
}
</style>
+905
View File
@@ -0,0 +1,905 @@
<template>
<!-- 创建房间 -->
<div class="creat_bg">
<boxDetail :boxDetail="boxDetail"></boxDetail>
<div class="animate__animated animate__fadeInDown" ref="slider">
<div class="creat_close" @click="
handleclose();
playAudio();
">
<svg t="1708678106448" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="2989">
<path
d="M898.844444 830.577778c22.755556 17.066667 22.755556 51.2 0 73.955555s-51.2 22.755556-73.955555 0L512 591.644444l-312.888889 312.888889c-11.377778 11.377778-22.755556 17.066667-39.822222 17.066667-11.377778 0-28.444444-5.688889-39.822222-17.066667-22.755556-22.755556-22.755556-51.2 0-73.955555l312.888889-312.888889-307.2-318.577778c-11.377778-5.688889-17.066667-22.755556-17.066667-34.133333 0-11.377778 5.688889-28.444444 17.066667-34.133334 22.755556-22.755556 51.2-22.755556 73.955555 0L512 443.733333l312.888889-312.888889c22.755556-22.755556 51.2-22.755556 73.955555 0s22.755556 51.2 0 73.955556l-312.888888 312.888889 312.888888 312.888889z"
fill="#727477" p-id="2990" />
</svg>
</div>
<div class="creat_number">
<div style="width: 57%" class="fjrs">房间人数</div>
<div class="creat_number_select space_around">
<div class="select_btn center" @click="
selectpeople(2);
playAudio();
" :class="objj.playerNumber == 2 ? 'active' : ''">
2
</div>
<div class="select_btn center" @click="
selectpeople(3);
playAudio();
" :class="objj.playerNumber == 3 ? 'active' : ''">
3
</div>
<div class="select_btn center" @click="
selectpeople(4);
playAudio();
" :class="objj.playerNumber == 4 ? 'active' : ''">
4
</div>
</div>
</div>
<div class="creat_type">
<div class="space_between">
<div class="create_type_home">
房间类别模式
<div class="create_type_model space_around">
<div class="select_btn center" @click="
selectmodel(0);
playAudio();
" :class="objj.model == 0 ? 'active' : ''">
欧皇
</div>
<div class="select_btn center" @click="
selectmodel(1);
playAudio();
" :class="objj.model == 1 ? 'active' : ''">
非酋
</div>
</div>
</div>
</div>
</div>
<!-- <div class="creat_box left">
<div
v-for="(item, index) in obj.boxData"
:key="index"
class="center_img"
>
<div v-if="item.boxNum > 0">
<div>
<img :src="item.boxImg01" alt width="100%" />
</div>
<div class="center_number center">{{ item.boxNum }}</div>
</div>
</div>
</div> -->
<div class="creat_msg space_around">
<div>
回合数
<div>
<span style="color: #25f484">{{ totalround }}</span>/12
</div>
</div>
<div>
盲盒种类
<div>
<span style="color: #25f484">{{ obj.boxData.length }}</span>/6
</div>
</div>
<div>
盲盒价值
<div style="color: #25f484">{{ totalmoney }}</div>
</div>
</div>
<div class="creat_boxlist" @scroll="handleScroll">
<div class="boxlist_box" :class="item.boxNum > 0 ? 'active' : ''" v-for="(item, index) in boxList" :key="index">
<div class="boxlist_img" @click="getBoxDetail(item.boxId)">
<img :src="item.boxImg01|fullPath" alt width="100%" />
</div>
<div class="boxlist_number">
<plusreduce style="width: 100%; height: 100%" :class="item.boxNum > 0 ? 'actives' : ''"></plusreduce>
<div class="space_between boxlist_input">
<div @click="
handleDel(item, index);
playAudio();
" class="jian"></div>
<div class="input_number">{{ item.boxNum }}</div>
<div @click="
handlePush(item);
playAudio();
" class="jia"></div>
</div>
</div>
<div class="boxlist_money money-money">
<money class="money"></money>
{{ item.price }}
</div>
<div class="textover-f center_boxboxlist_name">
{{ item.boxName }}
</div>
</div>
</div>
<div class="cerate_btn center" @click="
handleCreat();
playAudio();
">
创建
</div>
</div>
</div>
</template>
<script>
import boxDetail from "./boxDetail.vue";
import {
createFight,
getUserInfo,
getBoxList,
/* getBoxTypeList, */
} from "@/api/index";
export default {
components: {
boxDetail,
},
data() {
return {
show_create_room: false,
istypeshow: false,
boxtype: "",
selectedmodel: 0,
people: 2,
isCreat: false,
model: 0,
boxList: [],
changeboxList: [],
boxTypeList: [],
money: 0,
obj: {
boxData: [],
createNum: 0,
},
boxobj: {},
objj: {
/* boxIdAndNumber:null, */
boxIdAndNumber: {53: 2, 54: 2, 55: 1, 56: 1},
model: 0, //模式
playerNumber: 2, //人数
},
boxPage: {
page: 1,
size: 10,
gameMouldId: 2,
boxTypeId: "",
orderByFie: 2,
},
typePage: {
page: 1,
size: 10,
},
isOver: "加载中",
boxDetail: {
flag: false,
boxId: "",
},
};
},
mounted() {
this.getBox();
this.getuser();
/* if (this.boxTypeList.length == 0) {
getBoxTypeList(this.typePage).then((res) => {
if (res.data.code == 200) {
this.boxTypeList.push(...res.data.data.records);
if (res.data.data.records.length == this.typePage.size) {
this.typePage.page++;
this.getTypeList();
} else {
this.getAll = true;
}
}
console.log("玩法列表", this.boxTypeList);
});
} */
},
computed: {
totalround() {
return this.obj.boxData.reduce((total, box) => total + box.boxNum, 0);
},
totalmoney() {
let bean = 0;
this.obj.boxData.forEach((item) => {
bean += item.price * item.boxNum;
});
return bean.toFixed(2);
},
},
methods: {
getBoxDetail(boxId) {
console.log(boxId);
this.boxDetail.flag = true;
this.boxDetail.boxId = boxId;
},
handleScroll(e) {
if (
e.srcElement.scrollTop + e.srcElement.clientHeight >=
e.srcElement.scrollHeight
) {
if (this.isOver == "加载中") {
this.boxPage.page++;
setTimeout(() => {
this.getBox();
}, 5);
}
}
},
playAudio() {
this.$store.commit("playAudio");
},
//设置房间人数
selectpeople(res) {
this.objj.playerNumber = res;
},
//获取用户信息
getuser() {
getUserInfo().then((res) => {
if (res.data.code == 200) {
this.userId = res.data.data.userId;
console.log(this.userId);
}
});
},
//设置房间类型
selectmodel(res) {
this.objj.model = res;
console.log(this.objj);
},
//箱子的类别
//获取全部的箱子
getBox() {
let data={
boxType:2
}
getBoxList(data).then((res) => {
if (res.data.code == 200) {
console.log("箱子列表", res.data.data);
// this.boxTypelist = res.data.data;
let arr = res.data.data;
arr.map((item) => {
return (item.boxNum = 0);
});
let arr2=[]
arr.forEach((item) => {
arr2.push(...item.boxList)
})
this.boxList = arr2
this.boxList.map((item) => {
return (item.boxNum = 0);
});
console.log(this.boxList)
if (res.data.data.length < this.boxPage.size) {
this.isOver = "暂无更多";
}
}
});
},
/* 关闭 */
handleclose() {
const element = this.$refs.slider;
element.classList += " animate__fadeOutDown";
setTimeout(() => {
this.boxList = [];
this.changeboxList = [];
this.boxTypelist = [];
this.$bus.$emit("show_create_room", false);
this.$router.back();
this.obj = {
boxData: [],
createNum: 0,
model: 0,
};
this.boxTypelist = [];
}, 350);
},
//创建房间
handleCreat() {
/* console.log(this.objj)
createFight(this.objj).then((res) => {
console.log(res);
if (res.data.code == 200) {
this.$message({
type: "success",
message: "创建成功",
customClass: "log_success",
});
this.$router.push({
name: "battleroom",
query: {
id: res.data.data.id,
uid: this.userId,
},
});
} else {
this.$message({
type: "warning",
message: res.data.msg,
customClass: "log_warning",
});
}
}); */
if (this.objj.boxIdAndNumber) {
const obj = Array.from(this.objj.boxIdAndNumber).reduce(
(obj, [key, value]) => Object.assign(obj, { [key]: value }),
{}
);
this.objj.boxIdAndNumber = obj;
console.log("创建房间数据", this.objj);
// 请求服务器创建对战
createFight(this.objj).then((res) => {
if (res.data.code == 200) {
this.$bus.$emit("show_create_room", false);
// this.$router.back()
// this.handleclose();
// 提示
this.$message({
type: "success",
message: "创建成功",
customClass: "log_success",
});
// 跳转
// this.$router.back()
setTimeout(() => {
this.$router.replace({
name: "battleroom",
query: {
id: res.data.data.id,
uid: this.userId,
},
});
}, 500);
} else {
console.log("api/fight/createFight 异常");
this.$message({
type: "warning",
message: res.data.msg,
customClass: "log_warning",
});
}
});
}
/* const round = this.obj.boxData.reduce(
(total, box) => total + box.boxNum,
0
);
this.obj.rounds = round;
createFight(this.obj).then((res) => {
console.log(res)
if (res.data.code == 200)
this.$message({
type: "success",
message: res.data.msg,
customClass: "log_success",
});
this.handleclose();
this.$router.push({
name: "battleroom",
query: {
id: res.data.data.id,
},
});
}, 199); */
},
handleDel(res) {
console.log(res)
if (res.boxNum <= 0) {
return;
} else {
console.log("减", this.objj.boxIdAndNumber);
if (!this.objj.boxIdAndNumber.set) {
// console.log('不是map');
let map = new Map();
let key;
for (key in this.objj.boxIdAndNumber) {
map.set(key, this.objj.boxIdAndNumber[key]);
}
this.objj.boxIdAndNumber = map;
}
this.objj.boxIdAndNumber.set(res.boxId, res.boxNum - 1);
// console.log(this.objj.boxIdAndNumber);
this.$set(res, "boxNum", res.boxNum - 1);
// console.log(res);
// res.boxNum -= 1;
this.$forceUpdate();
/* map1.delete(); */
this.obj.boxData.forEach((item) => {
if (item.boxNum === 0) {
let index = this.changeboxList.indexOf(item); // 获取元素在数组中的索引位置
this.obj.boxData.splice(index, 1); // 从数组中移除该元素
}
/* else {
// // this.$forceUpdate();
// // this.totalround = 0;
// // this.obj.boxData.forEach(item => {
// // this.totalround += item.boxNum;
// // });
// } */
});
}
},
handlePush(res) {
if (this.obj.boxData.length == 6 && res.boxNum == 0) {
this.$message({
type: "warning",
message: "最多选择6种盲盒",
customClass: "log_warning",
});
return false;
}
if (this.totalround < 12) {
res.boxNum += 1;
let index = this.changeboxList.findIndex(
(item) => item.boxId === res.boxId
);
// 如果有就替换,没有就添加
if (index !== -1) {
this.changeboxList.splice(index, 1, res);
} else {
this.changeboxList.push(res);
}
let sum = 0;
this.changeboxList.forEach((obj) => {
sum += obj.boxNum; // 将每个对象的 value1 值相加到 sum 上
this.money += obj.price;
});
/* console.log(this.changeboxList) */
const map1 = new Map();
this.changeboxList.forEach((v) => {
map1.set(v.boxId, v.boxNum);
});
this.objj.boxIdAndNumber = map1;
/* console.log(this.objj.boxIdAndNumber) */
/* boxobj */
this.obj.createNum = sum;
this.obj.boxData = this.changeboxList;
} else {
this.$message({
type: "warning",
message: "选择数量超出最大限制",
customClass: "log_warning",
});
}
},
},
};
</script>
<style lang="scss" scoped>
.creat_bg {
position: fixed;
top: 0;
left: 50%;
// margin-left: -262.5px;
width: 525px;
transform: translateX(-50%);
height: 100vh;
z-index: 20;
background: rgba(0, 0, 0, 0.85);
padding: 2% 0;
@media (max-width: 550px) {
width: 100%;
}
.creat_close {
width: 100%;
text-align: right;
position: relative;
height: 25px;
.icon {
position: absolute;
right: 10px;
margin: 0;
width: 22px;
height: 22px;
@media (max-width: 550px) {
width: 16px;
height: 16px;
}
}
}
.fjrs {
@media (max-width: 550px) {
font-size: 15px;
}
}
.creat_number {
width: 93.5%;
margin: 0 auto;
text-align: left;
.creat_number_select {
width: 57%;
height: 42px;
margin-top: 1%;
background: #323436;
border-radius: 70px 70px 70px 70px;
opacity: 1;
color: #727477;
font-size: 14px;
@media (max-width: 550px) {
width: 215px;
height: 30px;
font-size: 10px;
}
.active {
background: linear-gradient(-90deg, #3a97e4 0%, #3fa2c7 100%);
color: #fff;
}
.select_btn {
width: 32%;
height: 35px;
border-radius: 70px;
@media (max-width: 550px) {
width: 70px;
height: 25px;
}
}
}
}
.creat_type {
width: 93.5%;
margin: 0 auto;
margin-top: 1%;
.create_type_home {
width: 40%;
@media (max-width: 550px) {
font-size: 15px;
}
.create_type_model {
margin-top: 1%;
width: 100%;
height: 43px;
background: #323436;
border-radius: 70px 70px 70px 70px;
opacity: 1;
color: #727477;
@media (max-width: 550px) {
width: 145px;
height: 30px;
font-size: 10px;
}
.select_btn {
width: 48%;
height: 35px;
border-radius: 70px 70px 70px 70px;
opacity: 1;
@media (max-width: 550px) {
width: 70px;
height: 25px;
}
}
.active {
background: linear-gradient(-90deg, #3a97e4 0%, #3fa2c7 100%);
color: #fff;
}
}
}
.box_type {
width: 140px;
height: 42px;
background: #323436;
border-radius: 70px 70px 70px 70px;
opacity: 1;
position: relative;
@media (max-width: 550px) {
width: 100px;
height: 30px;
font-size: 11px;
}
.box_type_low {
position: absolute;
top: 45px;
width: 100%;
background: #323436;
border-radius: 0px 0px 0px 0px;
opacity: 1;
animation: xiala 0.3s linear;
overflow: hidden;
@media (max-width: 550px) {
top: 35px;
// height: 30px;
}
@keyframes xiala {
0% {
height: 0;
}
50% {
height: 50%;
}
100% {
height: 100%;
}
}
.active {
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
}
.type_btn {
width: 100%;
height: 42px;
@media (max-width: 550px) {
height: 30px;
}
}
}
}
}
.creat_box {
width: 93.5%;
height: 98px;
background: #101115;
border-radius: 14px 14px 14px 14px;
opacity: 1;
margin: 0 auto;
margin-top: 1%;
@media (max-width: 550px) {
height: 70px;
}
.center_img {
width: 70px;
margin-right: 28px;
position: relative;
@media (max-width: 550px) {
width: 50px;
margin-right: 20px;
}
}
.center_number {
width: 28px;
height: 28px;
position: absolute;
right: -11px;
top: 50%;
transform: translateY(-50%);
background: #3fa2c7;
border-radius: 50%;
@media (max-width: 550px) {
font-size: 13px;
width: 21px;
height: 21px;
}
}
}
.creat_msg {
margin: 0 auto;
margin-top: 14px;
width: 93.5%;
height: 98px;
background: #101115;
border-radius: 14px;
font-size: 18px;
line-height: 2;
@media (max-width: 550px) {
font-size: 13px;
height: 70px;
}
}
.creat_boxlist {
width: 93.5%;
margin: 0 auto;
padding: 14px 32px;
height: 434px;
background-color: #101115;
border-radius: 14px;
margin-top: 14px;
overflow-y: scroll;
scrollbar-width: none;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
@media (max-width: 550px) {
padding: 10px 13px;
height: 360px;
}
@media (max-width: 375px) {
height: 270px;
}
.active {
border: 1px solid #3fa2c7 !important;
}
.boxlist_box {
width: 100%;
height: 280px;
margin: 0 auto;
padding: 6% 0;
border: 1px solid #727477;
border-radius: 14px;
transition: all 0.3s ease;
background-color: rgba(114, 116, 119, 0.1);
@media (max-width: 550px) {
height: 200px;
}
}
.boxlist_img {
width: 128px;
height: 128px;
margin: 0 auto;
@media (max-width: 550px) {
width: 91px;
height: 91px;
}
}
::v-deep .boxlist_number {
position: relative;
margin: 0 auto;
margin-top: 5%;
width: 140px;
font-size: 22px;
height: 38px;
@media (max-width: 550px) {
width: 100px;
height: 27px;
}
.boxlist_input {
position: absolute;
top: 0px;
left: 50%;
height: 38px;
width: 100%;
transform: translateX(-50%);
@media (max-width: 550px) {
height: 27px;
}
}
.input_number {
@media (max-width: 550px) {
width: 41px;
font-size: 16px;
}
}
.jian {
width: 39px;
height: 39px;
@media (max-width: 550px) {
width: 27px;
height: 27px;
}
}
.jia {
width: 39px;
height: 39px;
@media (max-width: 550px) {
width: 27px;
height: 27px;
}
}
.actives {
svg {
path {
fill: #3fa2c7 !important;
}
}
}
}
.boxlist_money {
margin-top: 5%;
@media (max-width: 550px) {
font-size: 10px;
}
}
.center_boxboxlist_name {
margin-top: 5%;
@media (max-width: 550px) {
font-size: 16px;
}
}
}
.creat_boxlist::-webkit-scrollbar {
background: transparent;
height: 7px;
}
.creat_boxlist::-webkit-scrollbar-thumb {
width: 7px;
background: #323436;
opacity: 1;
border-radius: 7px;
}
.cerate_btn {
position: fixed;
top: 70%;
right: 20px;
z-index: 999;
width: 60px !important;
height: 60px !important;
margin: 0 auto;
margin-top: 14px;
background: linear-gradient(360deg,
#1f3a58 0%,
rgba(37, 244, 132, 0.1) 100%);
opacity: 1;
// border: 1px solid #3fa2c7;
font-size: 20px;
border-radius: 50%;
box-shadow: 2px 2px 9px #000000a1;
@media (max-width: 550px) {
font-size: 18px;
height: 40px;
}
}
}
</style>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+676
View File
@@ -0,0 +1,676 @@
<template>
<div class="root">
<div>
test01文档流
</div>
<div>
<lotteryRounds
class="lotteryRounds"
:records="lotteryRoundsRecord"
:singlePlayTime="speed"
@locationChange="resLocationChange"
></lotteryRounds>
</div>
<!-- <div style="border: 1px solid greenyellow;">
{{ `location:${resLocation.y}` }}
</div> -->
<div>
test01文档流
</div>
</div>
</template>
<script>
import lotteryRounds from "@/components/pkHome/lotteryRounds.vue";
export default {
data() {
return {
lotteryRoundsRecord: [
{
boxId: 3,
boxName: "测试1-3",
boxPrice: 90,
fightId: 827,
fightRoundNumber: 1,
id: 5620,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChGaWVsZC1UZXN0ZWQp.png",
isShow: 0,
ornamenName: "AK-47 | 二西莫夫",
ornamentsId: 3609,
ornamentsLevelId: 1,
ornamentsPrice: 148.85,
source: "0",
status: "0",
userId: 32,
boxInfo: {
boxId: 3,
boxImg01: "",
boxImg02: "",
number: 3,
ornaments: [
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 28,
imageUrl:
"https://img.zbt.com/e/steam/item/730/TTRBNCB8IEFzaWltb3YgKEZpZWxkLVRlc3RlZCk=.png",
itemName: "M4A4 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3858,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 888.49,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 22,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoRmllbGQtVGVzdGVkKQ==.png",
itemName: "AWP | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3606,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 784.18,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 30,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoV2VsbC1Xb3JuKQ==.png",
itemName: "AWP | 二西莫夫 (破损不堪)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 4177,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 557.22,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 26,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoQmF0dGxlLVNjYXJyZWQp.png",
itemName: "AWP | 二西莫夫 (战痕累累)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3854,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 429.61,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 23,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChNaW5pbWFsIFdlYXIp.png",
itemName: "AK-47 | 二西莫夫 (略有磨损)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3713,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 271.31,
},
{
anchorOdds: 1,
anchorOddsPercentum: "100.00%",
boxId: 3,
id: 21,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChGaWVsZC1UZXN0ZWQp.png",
itemName: "AK-47 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3609,
ornamentsLevelId: 1,
realOdds: 1,
realOddsPercentum: "100.00%",
usePrice: 148.85,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 29,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDkwIHwgQXNpaW1vdiAoTWluaW1hbCBXZWFyKQ==.png",
itemName: "P90 | 二西莫夫 (略有磨损)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 1985,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 98.74,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 25,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDkwIHwgQXNpaW1vdiAoRmllbGQtVGVzdGVkKQ==.png",
itemName: "P90 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 1912,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 47.23,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 24,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDI1MCB8IEFzaWltb3YgKEZpZWxkLVRlc3RlZCk=.png",
itemName: "P250 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 9059,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 17.69,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 27,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDI1MCB8IEFzaWltb3YgKEJhdHRsZS1TY2FycmVkKQ==.png",
itemName: "P250 | 二西莫夫 (战痕累累)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 9270,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 9.58,
},
],
},
},
{
boxId: 3,
boxName: "测试1-3",
boxPrice: 90,
fightId: 827,
fightRoundNumber: 2,
id: 5622,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChGaWVsZC1UZXN0ZWQp.png",
isShow: 0,
ornamenName: "AK-47 | 二西莫夫",
ornamentsId: 3609,
ornamentsLevelId: 1,
ornamentsPrice: 148.85,
source: "0",
status: "0",
userId: 32,
boxInfo: {
boxId: 3,
boxImg01: "",
boxImg02: "",
number: 3,
ornaments: [
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 28,
imageUrl:
"https://img.zbt.com/e/steam/item/730/TTRBNCB8IEFzaWltb3YgKEZpZWxkLVRlc3RlZCk=.png",
itemName: "M4A4 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3858,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 888.49,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 22,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoRmllbGQtVGVzdGVkKQ==.png",
itemName: "AWP | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3606,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 784.18,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 30,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoV2VsbC1Xb3JuKQ==.png",
itemName: "AWP | 二西莫夫 (破损不堪)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 4177,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 557.22,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 26,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoQmF0dGxlLVNjYXJyZWQp.png",
itemName: "AWP | 二西莫夫 (战痕累累)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3854,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 429.61,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 23,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChNaW5pbWFsIFdlYXIp.png",
itemName: "AK-47 | 二西莫夫 (略有磨损)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3713,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 271.31,
},
{
anchorOdds: 1,
anchorOddsPercentum: "100.00%",
boxId: 3,
id: 21,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChGaWVsZC1UZXN0ZWQp.png",
itemName: "AK-47 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3609,
ornamentsLevelId: 1,
realOdds: 1,
realOddsPercentum: "100.00%",
usePrice: 148.85,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 29,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDkwIHwgQXNpaW1vdiAoTWluaW1hbCBXZWFyKQ==.png",
itemName: "P90 | 二西莫夫 (略有磨损)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 1985,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 98.74,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 25,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDkwIHwgQXNpaW1vdiAoRmllbGQtVGVzdGVkKQ==.png",
itemName: "P90 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 1912,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 47.23,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 24,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDI1MCB8IEFzaWltb3YgKEZpZWxkLVRlc3RlZCk=.png",
itemName: "P250 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 9059,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 17.69,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 27,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDI1MCB8IEFzaWltb3YgKEJhdHRsZS1TY2FycmVkKQ==.png",
itemName: "P250 | 二西莫夫 (战痕累累)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 9270,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 9.58,
},
],
},
},
{
boxId: 3,
boxName: "测试1-3",
boxPrice: 90,
fightId: 827,
fightRoundNumber: 3,
id: 5624,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChGaWVsZC1UZXN0ZWQp.png",
isShow: 0,
ornamenName: "AK-47 | 二西莫夫",
ornamentsId: 3609,
ornamentsLevelId: 1,
ornamentsPrice: 148.85,
source: "0",
status: "0",
userId: 32,
boxInfo: {
boxId: 3,
boxImg01: "",
boxImg02: "",
number: 3,
ornaments: [
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 28,
imageUrl:
"https://img.zbt.com/e/steam/item/730/TTRBNCB8IEFzaWltb3YgKEZpZWxkLVRlc3RlZCk=.png",
itemName: "M4A4 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3858,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 888.49,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 22,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoRmllbGQtVGVzdGVkKQ==.png",
itemName: "AWP | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3606,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 784.18,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 30,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoV2VsbC1Xb3JuKQ==.png",
itemName: "AWP | 二西莫夫 (破损不堪)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 4177,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 557.22,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 26,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QVdQIHwgQXNpaW1vdiAoQmF0dGxlLVNjYXJyZWQp.png",
itemName: "AWP | 二西莫夫 (战痕累累)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3854,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 429.61,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 23,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChNaW5pbWFsIFdlYXIp.png",
itemName: "AK-47 | 二西莫夫 (略有磨损)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3713,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 271.31,
},
{
anchorOdds: 1,
anchorOddsPercentum: "100.00%",
boxId: 3,
id: 21,
imageUrl:
"https://img.zbt.com/e/steam/item/730/QUstNDcgfCBBc2lpbW92IChGaWVsZC1UZXN0ZWQp.png",
itemName: "AK-47 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 3609,
ornamentsLevelId: 1,
realOdds: 1,
realOddsPercentum: "100.00%",
usePrice: 148.85,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 29,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDkwIHwgQXNpaW1vdiAoTWluaW1hbCBXZWFyKQ==.png",
itemName: "P90 | 二西莫夫 (略有磨损)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 1985,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 98.74,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 25,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDkwIHwgQXNpaW1vdiAoRmllbGQtVGVzdGVkKQ==.png",
itemName: "P90 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 1912,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 47.23,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 24,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDI1MCB8IEFzaWltb3YgKEZpZWxkLVRlc3RlZCk=.png",
itemName: "P250 | 二西莫夫 (久经沙场)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 9059,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 17.69,
},
{
anchorOdds: 0,
anchorOddsPercentum: "0.00%",
boxId: 3,
id: 27,
imageUrl:
"https://img.zbt.com/e/steam/item/730/UDI1MCB8IEFzaWltb3YgKEJhdHRsZS1TY2FycmVkKQ==.png",
itemName: "P250 | 二西莫夫 (战痕累累)",
level: "金色",
odds: 1,
oddsPercentum: "10.00%",
ornamentsId: 9270,
ornamentsLevelId: 1,
realOdds: 0,
realOddsPercentum: "0.00%",
usePrice: 9.58,
},
],
},
},
],
speed: 6,
//---------------------------------
boxItem: 0,
// debug 目标位置
resLocation: {},
};
},
components: {
lotteryRounds,
},
methods: {
resLocationChange(L) {
//console.log("test01位置改变 "+JSON.stringify(L))
this.resLocation = L;
},
onRun(newv) {
console.log("speed=" + newv);
},
},
};
</script>
<style lang="scss" scoped>
.lotteryRounds {
position: relative;
height: 50%;
border: 1px solid white;
}
.boxItem {
transition: all 2s linear;
}
.boxItem:hover {
transform: translate(0px, 200px);
}
.list_animate {
// transition: all 5.5s cubic-bezier(0, 0, 0, 1) 0.1s;
// transform: translateY(-1947px);
}
.list_animate:hover {
// transition: all 5.5s cubic-bezier(0, 0, 0, 1) 0.1s;
// transform: translateY(-1947px);
}
.list_box {
width: 92px;
height: 98px;
background-size: 100% 100%;
}
</style>
File diff suppressed because it is too large Load Diff
+10
View File
@@ -0,0 +1,10 @@
<template>
<div>汰换</div>
</template>
<script>
export default {};
</script>
<style lang="scss" scoped>
</style>
File diff suppressed because it is too large Load Diff
+675
View File
@@ -0,0 +1,675 @@
<template>
<div class="home">
<!-- <div>{{list}}</div> -->
<div class="header_top">
<div style="width:4.5rem"></div>
<div @click="playAudio()">ROLL房</div>
<div
@click="
handleilltate();
playAudio();
"
>
玩法说明
</div>
</div>
<div class="roll_status ">
<div
@click="
handleChange(0);
playAudio();
"
:class="type == 0 ? 'active' : ''"
class="status_btn center"
>
进行中
</div>
<div
@click="
handleChange(1);
playAudio();
"
:class="type == 1 ? 'active' : ''"
class="status_btn center"
>
已结束
</div>
<div
@click="
handlemy(2);
playAudio();
"
:class="type == 2 ? 'active' : ''"
class="status_btn center"
>
我参与的
</div>
</div>
<div class="roll_type_serch space_between">
<!-- 官方/主播筛选已隐藏
<div class="roll_type space_around">
<div
@click="
handletype(0);
playAudio();
"
class="type_btn center"
:class="queryParams.rollType === 0 ? 'active' : ''"
>
官方
</div>
<div
@click="
handletype(1);
playAudio();
"
class="type_btn center"
:class="queryParams.rollType === 1 ? 'active' : ''"
>
主播
</div>
</div>
-->
<div class="roll_serch roll_serch_full">
<input
type="text"
v-model="queryParams.rollName"
name
id
style="serch"
placeholder="请输入ROLL房名称"
/>
<div @click="handleserch"
class="icon"></div>
</div>
</div>
<div class="roll_room_list" @scroll="scroll">
<div
:class="{
'roll_room animate__animated finish': item.rollStatus == 1,
'roll_room animate__animated anchor':
item.rollStatus != 1 && item.rollType == 1,
'roll_room animate__animated official':
item.rollStatus != 1 && item.rollType == 0,
}"
v-for="(item, index) in rolllist"
:key="index"
@click="
handleGo(item.id);
playAudio();
"
>
<div class="room_type center">{{ item.rollTypeName }}</div>
<div class="room_title left">
<div class="room_name left">{{ item.rollName }}</div>
</div>
<div class="room_weapon">
<div class="room_weapon_back left">
<div
class="weapon_bg center"
v-for="(weapon, weaponindex) in JSON.parse(item.ornamentsList)"
:key="weaponindex"
:style="{
background: `url(${weapon.ornamentsLevelImg}) center no-repeat`,
'background-size': '60px 60px',
}"
>
<img :src="weapon.imgUrl | fullPath" alt width="60px" />
</div>
</div>
</div>
<div class="room_detial space_around">
<div class="detial_public center">
<svg
t="1706769767743"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3482"
>
<path
d="M650.24 230.4H921.6c43.52 0 76.8 33.28 76.8 76.8s-33.28 76.8-76.8 76.8H102.4c-43.52 0-76.8-33.28-76.8-76.8s33.28-76.8 76.8-76.8h271.36l-102.4-58.88C235.52 151.04 222.72 102.4 243.2 66.56s69.12-48.64 104.96-28.16L512 133.12l163.84-94.72c35.84-20.48 84.48-7.68 104.96 28.16 20.48 35.84 7.68 84.48-28.16 104.96l-102.4 58.88zM153.6 435.2h716.8c43.52 0 76.8 33.28 76.8 76.8v409.6c0 43.52-33.28 76.8-76.8 76.8H153.6c-43.52 0-76.8-33.28-76.8-76.8V512c0-43.52 33.28-76.8 76.8-76.8z"
fill="#3A97E4"
p-id="3483"
/>
</svg>
{{ item.ornamentsNum }}
</div>
<div class="detial_public center">
<svg
t="1706770215849"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
p-id="3627"
>
<path
d="M164.445091 330.984727c0-95.604364 79.080727-173.102545 176.64-173.102545 97.605818 0 176.686545 77.498182 176.686545 173.102545s-79.127273 173.102545-176.686545 173.102546-176.64-77.498182-176.64-173.102546zM407.272727 808.354909v-11.962182c0-88.250182 45.986909-165.794909 115.339637-211.502545a230.958545 230.958545 0 0 0-100.491637-23.086546H274.850909c-126.045091 0-228.212364 100.072727-228.212364 223.557819v14.42909c0 50.501818 102.167273 50.501818 228.212364 50.501819H415.650909a101.841455 101.841455 0 0 1-8.378182-41.937455z m313.623273-532.852364c-80.942545 0-146.618182 64.325818-146.618182 143.685819s65.675636 143.685818 146.618182 143.685818c80.989091 0 146.618182-64.325818 146.618182-143.685818s-65.582545-143.685818-146.618182-143.685819z m0 0c-80.942545 0-146.618182 64.325818-146.618182 143.685819s65.675636 143.685818 146.618182 143.685818c80.989091 0 146.618182-64.325818 146.618182-143.685818s-65.582545-143.685818-146.618182-143.685819z m-54.923636 335.313455c-104.634182 0-189.44 83.083636-189.44 185.576727v11.962182c0 41.890909 84.805818 41.890909 189.44 41.890909h122.228363c104.587636 0 189.346909-1.536 189.346909-41.890909v-11.962182c0-102.493091-84.759273-185.576727-189.346909-185.576727h-122.228363z m0 0"
fill="#727477"
p-id="3628"
/>
</svg>
{{ item.currentPeopleNum }} / {{ item.peopleNum }}
</div>
<div
class="detial_public center"
style="color: rgba(37, 244, 132, 1)"
>
<svg
t="1706770289544"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="3776"
>
<path
d="M955.733333 511.931733q0 10.922667-0.546133 21.777067-0.512 10.888533-1.604267 21.7088-1.024 10.8544-2.6624 21.640533-1.604267 10.752-3.720533 21.435734t-4.778667 21.265066q-2.628267 10.581333-5.802666 20.957867-3.140267 10.4448-6.826667 20.6848-3.652267 10.24-7.850667 20.343467-4.164267 10.0352-8.8064 19.899733-4.676267 9.8304-9.796266 19.456-5.12 9.591467-10.717867 18.944-5.632 9.3184-11.6736 18.397867-6.0416 9.045333-12.526933 17.783466-6.485333 8.772267-13.4144 17.169067-6.894933 8.430933-14.2336 16.4864-7.304533 8.0896-15.018667 15.7696-7.68 7.714133-15.7696 15.018667-8.055467 7.338667-16.4864 14.2336-8.430933 6.929067-17.169067 13.4144t-17.8176 12.526933q-9.045333 6.0416-18.397866 11.639467-9.3184 5.597867-18.944 10.752-9.591467 5.12-19.456 9.796266-9.8304 4.642133-19.899734 8.8064t-20.309333 7.850667q-10.24 3.652267-20.6848 6.826667-10.4448 3.1744-20.992 5.802666-10.581333 2.6624-21.265067 4.778667-10.683733 2.116267-21.469866 3.720533-10.752 1.604267-21.6064 2.6624-10.820267 1.058133-21.7088 1.604267t-21.777067 0.546133q-10.922667 0-21.777067-0.546133-10.888533-0.546133-21.7088-1.604267-10.8544-1.058133-21.640533-2.6624-10.752-1.604267-21.435733-3.754666-10.683733-2.082133-21.265067-4.744534-10.581333-2.628267-20.992-5.802666-10.410667-3.1744-20.6848-6.826667-10.24-3.6864-20.309333-7.850667-10.069333-4.164267-19.899734-8.8064-9.864533-4.676267-19.456-9.796266-9.6256-5.12-18.944-10.752-9.352533-5.597867-18.432-11.605334-9.045333-6.075733-17.783466-12.561066t-17.169067-13.4144q-8.430933-6.894933-16.4864-14.199467-8.0896-7.338667-15.7696-15.018667-7.714133-7.714133-15.018667-15.803733-7.338667-8.055467-14.2336-16.4864-6.929067-8.3968-13.4144-17.169067-6.485333-8.738133-12.526933-17.783466t-11.639467-18.432q-5.632-9.3184-10.752-18.909867-5.12-9.6256-9.796266-19.456-4.642133-9.864533-8.8064-19.899733-4.1984-10.069333-7.850667-20.343467-3.6864-10.24-6.826667-20.650667-3.1744-10.4448-5.802666-20.992-2.6624-10.581333-4.778667-21.265066-2.116267-10.683733-3.754667-21.435734-1.570133-10.786133-2.628266-21.640533-1.092267-10.820267-1.604267-21.7088Q68.266667 522.820267 68.266667 511.931733t0.546133-21.742933q0.512-10.922667 1.604267-21.742933 1.024-10.820267 2.6624-21.6064 1.604267-10.786133 3.720533-21.435734 2.116267-10.683733 4.778667-21.265066 2.628267-10.581333 5.802666-20.992 3.140267-10.410667 6.826667-20.6848 3.652267-10.24 7.850667-20.309334 4.164267-10.069333 8.8064-19.899733 4.676267-9.864533 9.796266-19.456 5.12-9.591467 10.752-18.944 5.597867-9.352533 11.605334-18.432 6.075733-9.0112 12.561066-17.749333 6.485333-8.772267 13.4144-17.2032 6.894933-8.3968 14.2336-16.4864 7.304533-8.055467 15.018667-15.7696 7.68-7.714133 15.7696-15.018667 8.055467-7.304533 16.4864-14.2336 8.430933-6.894933 17.169067-13.380267t17.8176-12.526933q9.045333-6.075733 18.397866-11.6736 9.3184-5.597867 18.944-10.717867 9.591467-5.12 19.456-9.796266 9.8304-4.642133 19.899734-8.840534 10.069333-4.164267 20.309333-7.850666 10.24-3.652267 20.6848-6.826667 10.4448-3.140267 20.992-5.802667 10.581333-2.628267 21.265067-4.778666 10.683733-2.082133 21.435733-3.6864 10.786133-1.604267 21.640533-2.6624 10.820267-1.092267 21.7088-1.604267Q501.111467 68.266667 512 68.266667q10.922667 0 21.777067 0.546133 10.888533 0.512 21.7088 1.604267 10.8544 1.024 21.6064 2.6624 10.786133 1.604267 21.504 3.720533 10.6496 2.116267 21.230933 4.778667 10.581333 2.628267 20.992 5.802666 10.410667 3.140267 20.6848 6.826667 10.24 3.652267 20.309333 7.850667 10.069333 4.164267 19.899734 8.8064 9.864533 4.642133 19.456 9.796266 9.6256 5.12 18.944 10.717867 9.352533 5.597867 18.432 11.6736 9.045333 6.0416 17.783466 12.526933t17.169067 13.380267q8.430933 6.929067 16.4864 14.2336 8.0896 7.304533 15.7696 15.018667 7.714133 7.714133 15.018667 15.7696 7.338667 8.0896 14.2336 16.4864 6.929067 8.430933 13.4144 17.169066 6.485333 8.772267 12.526933 17.8176t11.639467 18.397867q5.632 9.352533 10.752 18.944t9.796266 19.456q4.642133 9.8304 8.8064 19.899733 4.1984 10.069333 7.850667 20.309334 3.6864 10.24 6.826667 20.6848 3.1744 10.410667 5.802666 20.992 2.6624 10.581333 4.778667 21.265066 2.1504 10.6496 3.754667 21.435734 1.570133 10.786133 2.628266 21.6064 1.092267 10.8544 1.604267 21.7088 0.546133 10.922667 0.546133 21.777066z"
fill="#3fa2c7"
fill-opacity="0.1"
p-id="3777"
/>
<path
d="M71.68 325.973333Q34.133333 414.72 34.133333 511.8976q0 97.211733 37.546667 186.026667 36.283733 85.742933 102.4 151.8592 66.1504 66.116267 151.893333 102.4 88.814933 37.546667 186.026667 37.546666 97.211733 0 186.026667-37.546666 85.742933-36.283733 151.893333-102.4 66.116267-66.116267 102.4-151.893334 37.546667-88.7808 37.546667-185.992533 0-97.1776-37.546667-185.992533-36.283733-85.742933-102.4-151.8592-66.1504-66.116267-151.893333-102.4Q609.211733 34.133333 512 34.133333q-97.211733 0-186.026667 37.546667-85.742933 36.283733-151.893333 102.4-66.116267 66.116267-102.4 151.893333z m62.907733 345.361067Q102.4 595.285333 102.4 511.931733q0-83.319467 32.187733-159.402666 31.061333-73.489067 87.790934-130.184534 56.695467-56.661333 130.184533-87.790933Q428.6464 102.4 512 102.4t159.402667 32.1536q73.5232 31.095467 130.218666 87.790933 56.7296 56.695467 87.790934 130.184534 32.187733 76.0832 32.187733 159.402666 0 83.3536-32.187733 159.402667-31.061333 73.489067-87.790934 130.184533-56.695467 56.7296-130.184533 87.790934-76.0832 32.187733-159.4368 32.187733t-159.402667-32.187733q-73.5232-31.061333-130.218666-87.790934-56.7296-56.661333-87.790934-130.184533z"
fill="#3fa2c7"
p-id="3778"
/>
<path
d="M584.2944 657.2032H785.066667l-37.7856-16.657067v-248.081066L785.066667 375.466667h-127.931734l-145.646933 145.3056L363.178667 375.466667H238.933333l36.078934 16.9984v248.081066L238.933333 657.2032h199.0656l-35.7376-16.657067v-93.252266l104.106667 138.171733h10.581333l102.741334-138.171733v92.910933l-35.396267 16.9984z"
fill="#3fa2c7"
p-id="3779"
/>
</svg>
{{ item.totalOrnamentsPrice }}
</div>
<div
class="roll_time"
v-if="item.rollStatus === '0'"
style="color: rgba(194, 61, 212, 1)"
>
{{ item.endTime }}
</div>
<div
class="roll_time"
v-if="item.rollStatus === '1'"
style="color: rgba(78, 78, 78, 1)"
>
{{ item.endTime }}
</div>
</div>
<div class="room_btn_bg" >
<!-- && item.rollType === '0'" -->
<div v-if="item.rollStatus === '1'" class="center">
<div class="room_btn_yjs center">
<!-- rollType -->
<div style="position: absolute;">已结束</div>
</div>
</div>
<!-- && item.rollType === '0' -->
<div v-if="item.rollStatus === '0' && item.rollType === '0'">
<div class="room_btn_yjs center">
<div style="position: absolute; margin-left: 15px">查看房间</div>
</div>
</div>
<div v-if="item.rollStatus === '0' && item.rollType === '1'">
<div class="room_btn_yjs center">
<div style="position: absolute; margin-left: 60px">加入房间</div>
</div>
</div>
</div>
</div>
<div class="center isnull">
{{ rolllength }}
<!-- <div class="loader" v-if="isloading">
<div class="orbe" style="--index: 0"></div>
<div class="orbe" style="--index: 1"></div>
<div class="orbe" style="--index: 2"></div>
<div class="orbe" style="--index: 3"></div>
<div class="orbe" style="--index: 4"></div>
</div>-->
</div>
</div>
</div>
</template>
<script>
import { getRollList, getUserInfo } from "@/api/index";
export default {
data() {
return {
type: 0,
queryParams: {
rollType: 0,
rollStatus: 0,
page: 1,
size: 10,
rollName: "",
userId: "",
},
rolllength: "加载中",
rolllist: [],
isloading: true,
daqweq: "roll",
};
},
mounted() {
this.getlist();
},
computed: {},
methods: {
scroll(e) {
if (
e.srcElement.scrollTop + e.srcElement.clientHeight >=
e.srcElement.scrollHeight
) {
console.log(1);
if (this.rolllength !== "暂无更多Roll房") {
this.queryParams.page++;
setTimeout(() => {
this.getlist();
}, 5);
}
}
},
playAudio() {
this.$store.commit("playAudio");
},
handleilltate() {
this.$bus.$emit("is_illustrate", true);
setTimeout(() => {
this.$bus.$emit("nr_illustrate", "roll");
}, 100);
},
handleGo(res) {
localStorage.setItem("rollid", res);
this.$router.push({
name: "rolldetial",
// query:{
// obj:JSON.stringify(item)
// }
});
},
handletype(res) {
this.queryParams.rollType = res;
this.queryParams.page = 1;
this.rolllist = [];
this.getlist();
},
handleserch() {
this.rolllist = [];
this.queryParams.page = 1;
this.getlist();
},
getMyList() {
this.rolllist = [];
getUserInfo().then((res) => {
this.queryParams.userId = res.data.data.userId;
this.getlist();
// console.log(res);
});
// getMyPartRollList().then(res => {
// this.rolllist = res.data.rows;
// this.isloading = false;
// });
},
handlemy() {
this.type = 2;
this.rolllist = [];
this.queryParams.page = 1;
this.queryParams.rollStatus = "";
this.getMyList();
},
handleChange(res) {
this.type = res;
this.rolllist = [];
this.queryParams.rollStatus = res;
this.queryParams.userId = "";
this.getlist();
},
getlist() {
this.isloading = true;
getRollList(this.queryParams).then((res) => {
console.log("getRollList", res);
if (res.data.total > this.rolllist.length) {
this.rolllist.push(...res.data.rows);
this.rolllength = "下拉加载更多";
this.isloading = false;
} else {
this.rolllength = "暂无更多Roll房";
}
});
},
},
};
</script>
<style lang="scss" scoped>
.roll_type_serch {
width: 100%;
}
.roll_type {
width: 34%;
height: 43px;
background: url("../../assets/pinxiangBottom_top.png") no-repeat center center;
background-size: 100% 100%;
color: rgba(114, 116, 119, 1);
@media (max-width: 550px) {
height: 30px;
font-size: 10px;
}
.type_btn {
width: 49%;
height: 35px;
// border-radius: 70px;
@media (max-width: 550px) {
// border-radius: 50px;
height: 25px;
}
}
.active {
color: rgba(255, 255, 255, 1);
background: url("../../assets/pinxiangBottom_text_bg.png") no-repeat center
center;
background-size: cover;
}
}
.roll_serch {
width: 64%;
height: 42px;
padding: 0 2% 0 5%;
background: url('../../assets/roll_serch.png') no-repeat center center;
background-size: 100% 100%;
border-radius: 8px;
// border: 1px solid #40649e;
// border-radius: 70px 70px 70px 70px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
.icon{
height: 100%;
width: 50px;
}
@media (max-width: 550px) {
height: 30px;
font-size: 11px;
}
input {
width: 100%;
height: 100%;
border-radius: 35px;
border: none;
color: #fff;
font-size: 15px;
background-color: transparent;
text-indent: 10px;
outline: none;
@media (max-width: 550px) {
font-size: 11px;
}
}
}
.roll_serch_full {
width: 96% !important;
margin: 0 auto;
}
.roll_status {
width: 100%;
background: url('../../assets/roll_status.png') no-repeat center center;
background-size: 100% 100%;
height: 52px;
padding: 0 20px;
display: flex;
margin-bottom:20px;
.status_btn {
margin-top: 3%;
overflow: hidden;
flex-wrap: nowrap;
width: 20%;
height: 35px;
margin-right: 2%;
opacity: 1;
font-size: 18px;
color: #fff;
@media (max-width: 550px) {
font-size: 13px;
height: 25px;
}
}
.active {
background: url('../../assets/status_btn_active.png') no-repeat center;
background-size: 100% 100%;
color: #3a97e4;
width: 80px;
height: 30px;
line-height: 30px;
text-align: center;
}
}
.roll_room_list {
width: 100%;
height: 570px;
overflow-y: auto;
// border: #c23dd4 1px solid;
&::-webkit-scrollbar {
width: 2px;
}
&::-webkit-scrollbar-thumb {
background: #3fa2c7;
border-radius: 5px;
}
@media (max-width: 550px) {
&::-webkit-scrollbar {
width: 2px;
}
}
.finish {
border: 2px solid #4e4e4e;
}
.anchor {
border: 2px solid #3fa2c7;
}
.official {
// border: 2px solid #c23dd4;
}
.roll_room {
width: 100%;
margin: 0 auto;
height: 300px;
margin-top: 2%;
box-sizing: border-box;
overflow: hidden;
// border-radius: 15px;
position: relative;
background:url('../../assets/roll-official-bg-DRp1UF5D.png') no-repeat top center;
background-size: 100% 100%;
transition: all 0.2s linear;
&:hover {
transform: translateY(-5px);
}
@media (max-width: 550px) {
height: 220px;
}
}
.room_type{
position: absolute;
top: -2px;
left: 50%;
transform: translateX(-50%);
}
.room_weapon {
width: 70%;
margin:0 auto;
margin-top: 3%;
.room_weapon_back {
width: 100%;
height: 69px;
overflow: hidden;
overflow-x: scroll;
@media (max-width: 550px) {
height: 41px;
}
.weapon_bg {
margin-right: 2%;
width: 60px;
height: 60px;
background: #323436;
border-radius: 10px 10px 10px 10px;
@media (max-width: 550px) {
width: 60px;
height: 60px;
}
img {
margin: 0 auto;
@media (max-width: 550px) {
width: 35px;
height: 21px;
}
}
}
}
.room_weapon_back::-webkit-scrollbar {
background: none;
height: 5px;
}
.room_weapon_back::-webkit-scrollbar-thumb {
border-radius: 5px;
background: #323436;
}
}
.room_title {
padding: 0 2%;
height: 70px;
background: rgba(50, 52, 54, 0.2);
margin-top: 30px;
@media (max-width: 550px) {
height: 50px;
}
.room_type {
width: 70px;
height: 35px;
background: #323436;
border-radius: 70px;
margin-right: 7px;
}
.room_name {
// width: 137px;
max-width: 200px;
@media (max-width: 550px) {
max-width: 250px;
}
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.room_btn_bg {
position: absolute;
left: 50%;
bottom: 2px;
font-size: 21px;
line-height: 70px;
transform: translateX(-50%);
@media (max-width: 550px) {
font-size: 15px;
bottom: 2px;
}
.room_btn_yjs {
position: relative;
width: 128px;
height: 48px;
background: url('../../assets/room_btn_yjs.png') no-repeat center center;
background-size: contain;
// bottom: 10px;
.icon {
width: 190px;
height: 70px;
@media (max-width: 550px) {
width: 185px;
height: 50px;
}
}
}
.room_btnn_yjs {
position: absolute;
left: 50%;
top: 50%;
}
}
.room_detial {
margin-top: 3%;
.roll_time {
font-size: 13px;
@media (max-width: 550px) {
font-size: 11px;
}
}
.detial_public {
@media (max-width: 550px) {
font-size: 10px;
}
svg {
margin-right: 5px;
}
.icon {
width: 20px;
height: 20px;
@media (max-width: 550px) {
width: 14px;
height: 14px;
}
}
}
}
}
.isnull {
width: 100%;
height: 250px;
font-size: 12px;
color: #878787;
}
.home {
width: 100%;
margin: 0 auto;
height: 100vh;
// background: #0e1227c4;
padding: 0 2%;
}
.header_top {
width: 100%;
height: 56px;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
div:first-child {
}
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
}
}
</style>
+459
View File
@@ -0,0 +1,459 @@
<template>
<div class="home">
<div class="header_top">
<handleback></handleback>
<div >兑换红包</div>
<div>12322</div>
</div>
</div>
</template>
<script>
import {} from "@/api/index";
export default {
data() {
return {
kami:''
};
},
mounted() {},
methods: {},
};
</script>
<style lang="scss" scoped>
.pay {
margin: 0 auto;
@media (max-width: 550px) {
width: 140px;
}
}
.home {
margin: 0 auto;
width: 95%;
.header_top {
width: 100%;
height: 56px;
border-radius: 0px 0px 0px 0px;
opacity: 1;
display: flex;
align-items: center;
justify-content: space-between;
div:first-child {
}
div:last-child {
color: #fff;
font-size: 12px;
text-decoration: underline;
line-height: 1.5;
opacity: 0;
}
}
}
.tab {
// width: 399px;
width: 300px;
height: 42px;
background: #323436;
border-radius: 50px 50px 50px 50px;
opacity: 1;
margin: 0 auto;
transition: all 0.3s linear;
color: #727477;
font-size: 14px;
position: relative;
@media (max-width: 550px) {
// width: 285px;
width: 215px;
height: 30px;
}
}
.btn {
width: 98px;
height: 35px;
position: relative;
z-index: 2;
// border: 1px solid red;
@media (max-width: 550px) {
width: 70px;
height: 25px;
font-size: 10px;
}
.icon {
width: 28px;
height: 28px;
margin: 5px;
@media (max-width: 550px) {
width: 20px;
height: 20px;
}
}
}
.slider {
position: absolute;
width: 99px;
height: 35px;
background: linear-gradient(-90deg, #3a97e4 0%, #3fa2c7 100%);
border-radius: 70px;
transition: left 0.2s ease-in-out;
@media (max-width: 550px) {
width: 70px;
height: 25px;
}
}
.active {
color: #fff;
transition: all 0.2s ease-in-out;
svg {
path {
fill: #fff;
transition: all 0.2s ease-in-out;
}
}
}
.header {
margin-top: 29px;
}
.card {
width: 147px;
height: 98px;
background: #323436;
border-radius: 14px 14px 14px 14px;
position: relative;
margin: 0 auto;
color: #727477;
font-weight: 700;
font-size: 35px;
// padding-top: 20px;
@media (max-width: 550px) {
// padding-top: 20px;
font-size: 25px;
width: 100%;
height: 70px;
}
}
.prz {
width: 98px;
height: 35px;
background: linear-gradient(90deg, #c23dd4 0%, #6f4fff 100%);
opacity: 1;
position: absolute;
left: 0;
top: 0;
border-radius: 14px 14px 14px 14px;
color: #fff;
font-size: 14px;
@media (max-width: 550px) {
width: 70px;
height: 25px;
font-size: 10px;
}
.icon {
width: 21px;
height: 21px;
margin: 0;
@media (max-width: 550px) {
width: 15px;
height: 15px;
}
}
}
.main_center_bottom {
margin-top: 21px;
display: flex;
justify-content: space-between;
.select {
background: #3a97e4 !important;
border: 2px solid #3a97e4 !important;
}
div:first-child {
width: 12px;
height: 12px;
border-radius: 50%;
border: 2px solid #727477;
box-sizing: border-box;
margin-top: 5px;
@media (max-width: 550px) {
margin-top: 3px;
width: 8px;
height: 8px;
border: 1px solid #727477;
}
}
div:last-child {
width: 95%;
color: #ffffff;
font-size: 16.8px;
text-align: left;
word-spacing: -2px;
@media (max-width: 550px) {
font-size: 12px;
}
}
}
.main {
width: 100%;
height: 56px;
background: #585a60;
border-radius: 35px 35px 35px 35px;
opacity: 1;
margin: 0 auto;
margin-top: 29px;
font-size: 21px;
padding: 0 66px 0 33px;
@media (max-width: 550px) {
margin-top: 20px;
font-size: 15px;
height: 40px;
padding: 0 47px 0 24px;
}
}
.bottom {
width: 100%;
height: 56px;
background: linear-gradient(
360deg,
rgba(114, 116, 119, 0.2) 0%,
rgba(114, 116, 119, 0.1) 100%
);
opacity: 1;
border: 1px solid #727477;
margin: 0 auto;
margin-top: 14px;
font-size: 25px;
@media (max-width: 550px) {
font-size: 18px;
height: 40px;
}
}
.actives {
color: #fff;
background: linear-gradient(
-90deg,
rgba(58, 151, 228, 0.3) 0%,
rgba(37, 244, 132, 0.3) 100%
);
opacity: 1;
border: 1px solid;
// border-image: linear-gradient(
// 270deg,
// rgba(37.00000159442425, 244.0000006556511, 132.0000073313713, 1),
// rgba(58.00000034272671, 151.00000619888306, 228.0000016093254, 1)
// )
// 1 1;
border-left-color: rgba(37, 244, 132, 1);
border-right-color: rgba(58, 151, 228, 1);
border-top-color: rgba(37, 244, 132, 1);
border-bottom-color: rgba(58, 151, 228, 1);
}
.activess {
background: linear-gradient(
360deg,
#1f3a58 0%,
rgba(37, 244, 132, 0.1) 100%
);
opacity: 1;
border: 1px solid #3fa2c7;
transition: all 0.3s ease-in-out;
}
.footer {
margin-top: 40px;
font-size: 18px;
@media (max-width: 550px) {
font-size: 13px;
}
}
.footer_x {
width: 329px;
margin: 0 auto;
color: #3fa2c7;
@media (max-width: 550px) {
width: 237px;
}
.footer_x_u {
width: 100%;
height: 3px;
background-color: #3fa2c7;
border-radius: 50px;
}
}
.footer_d {
margin: 0 auto;
width: 95px;
color: #727477;
@media (max-width: 550px) {
width: 71px;
}
.footer_d_u {
width: 100%;
height: 3px;
background-color: #727477;
border-radius: 50px;
}
}
.out_II {
width: 525px;
height: 100vh;
transform: translateX(-50%);
position: fixed;
left: 50%;
top: 0;
background: rgba(0, 0, 0, 0.85);
z-index: 2;
@media (max-width: 550px) {
width: 100%;
}
.out_II_I {
width: 95%;
margin: 0 auto;
position: relative;
height: 315px;
background: #101115;
border-radius: 23px 23px 23px 23px;
margin-top: 211px;
overflow: hidden;
justify-content: space-around;
@media (max-width: 550px) {
margin-top: 150px;
height: 251px;
}
.out_II_I_I {
font-size: 28px;
text-align: center;
@media (max-width: 550px) {
font-size: 20px;
}
}
.out_II_I_II {
width: 89%;
height: 56px;
@media (max-width: 550px) {
height: 40px;
}
input {
position: relative;
z-index: 2;
width: 100%;
height: 100%;
background: #323436;
border-radius: 35px 35px 35px 35px;
border: none;
outline: none;
font-size: 21px;
color: #fff;
text-align: center;
}
input::-webkit-input-placeholder {
text-align: center;
font-size: 21px;
color: #fff;
@media (max-width: 550px) {
font-size: 15px;
}
}
}
.out_II_I_III {
width: 89%;
height: 56px;
input {
position: relative;
z-index: 2;
width: 100%;
height: 100%;
background: #323436;
border-radius: 20px;
border: none;
outline: none;
font-size: 21px;
color: #fff;
text-align: center;
@media (max-width: 550px) {
height: 40px;
}
}
input::-webkit-input-placeholder {
text-align: center;
font-size: 21px;
color: #fff;
@media (max-width: 550px) {
font-size: 15px;
}
}
}
.out_II_I_IIII {
width: 89%;
margin: 0 auto;
position: relative;
z-index: 2;
font-size: 21px;
.btn_c {
width: 196px;
height: 42px;
background: linear-gradient(
360deg,
rgba(114, 116, 119, 0.5) 0%,
rgba(114, 116, 119, 0.25) 100%
);
opacity: 1;
border: 1px solid #727477;
@media (max-width: 550px) {
width: 140px;
height: 30px;
font-size: 15px;
}
}
.btn_s {
width: 196px;
height: 42px;
background: #1f3a58;
opacity: 1;
border: 1px solid #3fa2c7;
@media (max-width: 550px) {
width: 140px;
height: 30px;
font-size: 15px;
}
}
}
}
.out_II_I::before {
content: ""; /*必须设置content属性*/
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(
-222deg,
#1f3a58 0%,
rgba(32, 29, 48, 0) 40%,
rgba(248, 125, 81, 0) 100%
);
position: absolute;
left: 0;
top: 0;
}
}
</style>
File diff suppressed because it is too large Load Diff
+377
View File
@@ -0,0 +1,377 @@
<template>
<div class="home">
<div>任务中心</div>
<div class="main">
<div
class="main_body"
v-for="(item, index) in taskdetial"
:key="index"
:style="{ 'background-image': `url(${item.placardUrl})` }"
>
<div class="mian_top">{{ item.beginTime }} 天后结束</div>
<div class="mian_center">{{ item.taskDescribe }}</div>
<div class="main_bottom space_between">
<div class="mian_bottom_left space_around">
<div class="mian_bottom_left_icon" v-if="item.type == 1">
<svg
t="1708151121750"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4150"
>
<path
d="M64 756.138667l734.165333 1.194666v100.778667c-0.128 88.704-69.376 161.109333-156.458666 165.674667l-8.490667 0.213333H228.949333a164.48 164.48 0 0 1-117.077333-49.024 166.357333 166.357333 0 0 1-47.616-107.946667L64 856.917333v-100.736z m318.848 78.336a68.096 68.096 0 0 0-14.592 73.941333 67.413333 67.413333 0 0 0 62.293333 41.856 67.882667 67.882667 0 0 0 25.813334-130.517333 67.157333 67.157333 0 0 0-73.514667 14.72zM634.154667 40.96c-25.557333 34.261333-40.704 76.8-40.704 122.88 0 113.109333 91.178667 204.8 203.648 204.8l1.066666-0.042667v327.765334H64V206.848C64 115.242667 137.813333 40.96 228.949333 40.96h405.205334zM247.893333 410.752c-1.92 0-1.92 0-3.370666 4.522667-2.517333 7.936-2.517333 7.936-31.914667 87.466666-27.136 73.6-27.136 73.6-27.136 76.714667 0 3.498667 0 3.498667 18.346667 3.498667 23.296 0 23.296 0 27.392-0.981334 3.242667-0.853333 3.242667-0.853333 5.546666-10.794666 2.474667-10.922667 2.474667-10.922667 4.522667-12.842667 1.322667-1.066667 1.322667-1.066667 21.76-1.066667 30.208 0 30.208 0 32.128 0.853334 2.304 1.152 2.304 1.152 6.4 18.432 1.024 4.565333 1.024 4.565333 5.12 5.418666 4.906667 0.938667 4.906667 0.938667 22.101333 0.938667 18.688 0 18.688 0 22.314667-0.938667 2.986667-0.853333 2.986667-0.853333 2.986667-2.986666 0-3.242667 0-3.242667-28.586667-77.525334-28.416-73.813333-28.416-73.813333-34.304-86.4-1.92-3.968-1.92-3.968-4.181333-3.968-3.114667 0-3.114667 0-9.386667 0.426667-6.357333 0.426667-6.357333 0.426667-9.6 0.426667-3.328 0-3.328 0-10.112-0.597334l-4.138667-0.341333c-3.712-0.256-3.712-0.256-5.888-0.256z m162.474667 2.858667c-31.914667 0-31.914667 0-41.258667 1.194666-2.901333 0.384-2.901333 0.384-3.498666 1.706667l-0.128 1.066667 0.128 1.706666c3.242667 41.472 3.242667 41.472 3.242666 79.146667 0 11.093333 0 11.093333-0.298666 31.530667l-0.256 17.066666c-0.298667 20.352-0.298667 20.352-0.298667 31.445334 0 3.498667 0 3.498667 3.498667 3.498666 7.296 0 7.296 0 21.973333 0.426667 14.634667 0.426667 14.634667 0.426667 21.930667 0.426667 2.56 0 2.56 0 2.56-2.773334 0-5.418667 0-5.418667-1.109334-16.341333l-0.469333-5.12c-0.597333-7.168-0.597333-7.168-0.597333-11.306667 0-4.437333 0-4.437333 5.12-4.437333 4.821333 0 4.821333 0 14.506666 0.554667 9.642667 0.512 9.642667 0.512 14.421334 0.512 28.714667 0 28.714667 0 45.013333-19.072 15.232-18.005333 15.232-18.005333 15.232-47.018667 0-28.330667 0-28.330667-17.749333-45.866667-17.408-17.024-17.408-17.024-45.824-17.877333-17.28-0.426667-17.28-0.426667-36.138667-0.426667z m160.213333 0c-31.914667 0-31.914667 0-41.301333 1.194666-2.858667 0.384-2.858667 0.384-3.413333 1.706667l-0.170667 1.066667 0.128 1.706666c3.242667 41.472 3.242667 41.472 3.242667 79.146667 0 11.093333 0 11.093333-0.298667 31.530667l-0.256 17.066666c-0.298667 20.352-0.298667 20.352-0.298667 31.445334 0 3.498667 0 3.498667 3.498667 3.498666 7.296 0 7.296 0 21.930667 0.426667 14.634667 0.426667 14.634667 0.426667 21.973333 0.426667 2.517333 0 2.517333 0 2.517333-2.773334 0-4.053333 0-4.053333-0.597333-11.221333l-0.469333-5.12c-1.109333-10.88-1.109333-10.88-1.109334-16.426667 0-4.437333 0-4.437333 5.162667-4.437333 4.821333 0 4.821333 0 14.506667 0.554667 9.642667 0.512 9.642667 0.512 14.421333 0.512 28.672 0 28.672 0 45.013333-19.072 15.232-18.005333 15.232-18.005333 15.232-47.018667 0-28.330667 0-28.330667-17.749333-45.866667-17.408-17.024-17.408-17.024-45.866667-17.877333-17.28-0.426667-17.28-0.426667-36.096-0.426667z m-301.568 56.021333c2.517333 4.821333 2.517333 4.821333 7.936 22.101333 5.504 17.92 5.504 17.92 5.504 21.845334 0 1.066667 0 1.066667-0.256 1.706666-0.853333 1.877333-0.853333 1.877333-8.746666 1.877334-8.533333 0-8.533333 0-12.245334-0.213334-7.210667-0.256-7.210667-0.256-7.210666-2.432 0-3.242667 0-3.242667 6.485333-21.930666 5.973333-17.664 5.973333-17.664 8.533333-22.912z m165.973334-17.877333c27.221333 0 27.221333 0 27.221333 27.989333 0 26.282667 0 26.282667-26.026667 26.282667-21.589333 0-21.589333 0-21.589333-2.432 0-3.712 0-3.712-0.298667-10.965334-0.341333-7.253333-0.341333-7.253333-0.341333-10.965333 0-26.154667 0-26.154667 0.853333-27.733333 0.981333-2.133333 0.981333-2.133333 20.181334-2.133334z m160.170666 0c27.264 0 27.264 0 27.264 27.989333 0 26.282667 0 26.282667-26.026666 26.282667-21.632 0-21.632 0-21.632-2.432 0-3.712 0-3.712-0.298667-10.965334l-0.256-8.106666v-2.858667c0-26.154667 0-26.154667 0.810667-27.733333 0.938667-2.133333 0.938667-2.133333 20.138666-2.133334zM797.098667 0C887.04 0 960 73.386667 960 163.84s-72.96 163.84-162.901333 163.84c-89.984 0-162.901333-73.386667-162.901334-163.84S707.157333 0 797.098667 0z m32.384 81.92H776.533333a16.042667 16.042667 0 0 0-16 16.085333v69.12h-36.778666a8.192 8.192 0 0 0-5.973334 13.738667l79.232 86.272a8.106667 8.106667 0 0 0 11.946667 0L888.32 180.906667a8.192 8.192 0 0 0-5.973333-13.696h-36.821334v-69.12a16.042667 16.042667 0 0 0-16-16.128z"
fill="#3A97E4"
p-id="4151"
/>
</svg>
</div>
<div class="mian_bottom_left_icon" v-else>
<svg
t="1708151380258"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4299"
>
<path
d="M512 42.666667c212.053333 0 384 175.104 384 391.082666a393.898667 393.898667 0 0 1-100.394667 263.765334l-9.386666 10.069333-245.205334 260.266667a38.058667 38.058667 0 0 1-56.490666 1.706666h-0.085334l-242.261333-257.536A393.557333 393.557333 0 0 1 128 433.749333C128 217.770667 299.946667 42.666667 512 42.666667z m0 213.333333a192 192 0 1 0 0 384 192 192 0 0 0 0-384z m32 85.333333v96H640v64h-160V341.333333h64z"
fill="#C23DD4"
p-id="4300"
/>
</svg>
</div>
<div>{{ item.name }}</div>
</div>
<div class="mian_bottom_right center" @click="handleget(item)">
<div
v-if="item.completionState == 1"
class="mian_bottom_right_icon"
>
<svg
t="1708151448051"
class="icon"
viewBox="0 0 3973 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4452"
data-spm-anchor-id="a313x.manage_type_myprojects.0.i16.63743a81JjJsEM"
>
<path
d="M0 1024h3778.56V0H501.76L0 1024z"
fill="#3a97e4"
fill-opacity="0.2"
p-id="4453"
data-spm-anchor-id="a313x.manage_type_myprojects.0.i15.63743a81JjJsEM"
class="selected"
/>
<path
d="M194.56 1024h3778.56V0H696.32L194.56 1024z"
fill="#3a97e4"
p-id="4454"
data-spm-anchor-id="a313x.manage_type_myprojects.0.i14.63743a81JjJsEM"
class="selected"
/>
</svg>
</div>
<div v-else-if="item.type == 2" class="mian_bottom_right_icon">
<svg
t="1708152049249"
class="icon"
viewBox="0 0 3973 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4694"
>
<path
d="M0 1024h3778.56V0H501.76L0 1024z"
fill="#C23DD4"
fill-opacity="0.2"
p-id="4695"
/>
<path
d="M194.56 1024h3778.56V0H696.32L194.56 1024z"
fill="#C23DD4"
p-id="4696"
/>
</svg>
</div>
<div v-else class="mian_bottom_right_icon">
<svg
t="1710059812078"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="7182"
width="200"
height="200"
>
<path
d="M744.448 232.448v24.576L727.04 271.36l-22.528 17.408H356.864V180.224h388.096l-0.512 52.224c0-0.512 0-0.512 0 0"
fill="#38CEB1"
p-id="7183"
></path>
<path
d="M924.16 855.04c0 16.896-54.784 30.72-71.68 30.72h-619.52c-16.896 0-30.72-13.824-30.72-30.72V275.968c0-16.896 13.824-30.72 30.72-30.72h44.032V250.88c0 22.528 18.432 40.96 40.96 40.96h388.096c22.528 0 40.96-18.432 40.96-40.96v-5.632h105.472c16.896 0 30.72 13.824 30.72 30.72l40.96 26.624V855.04z"
fill="#38CEB1"
p-id="7184"
></path>
<path
d="M903.68 719.872m-20.48 0a20.48 20.48 0 1 0 40.96 0 20.48 20.48 0 1 0-40.96 0Z"
fill="#231815"
p-id="7185"
></path>
<path
d="M903.68 773.632c-11.264 0-20.48 9.216-20.48 20.48v61.44c0 16.896-13.824 30.72-30.72 30.72h-680.96c-16.896 0-30.72-13.824-30.72-30.72V245.248c0-16.896 13.824-30.72 30.72-30.72h105.472v36.864c0 22.528 18.432 40.96 40.96 40.96h388.096c22.528 0 40.96-18.432 40.96-40.96v-36.864h105.472c16.896 0 30.72 13.824 30.72 30.72v397.824c0 11.264 9.216 20.48 20.48 20.48s20.48-9.216 20.48-20.48V245.248c0-39.424-32.256-71.68-71.68-71.68h-105.472v-36.864c0-22.528-18.432-40.96-40.96-40.96H318.464c-22.528 0-40.96 18.432-40.96 40.96v36.864H171.52c-39.424 0-71.68 32.256-71.68 71.68V855.04c0 39.424 32.256 71.68 71.68 71.68h680.96c39.424 0 71.68-32.256 71.68-71.68v-61.44c0-10.752-9.216-19.968-20.48-19.968zM318.464 137.216H706.56V250.88H318.464V137.216z"
fill="#231815"
p-id="7186"
></path>
<path
d="M751.616 401.92l-290.304 290.304-143.36-143.36c-8.192-8.192-20.992-8.192-29.184 0-8.192 8.192-8.192 20.992 0 29.184l143.36 143.36c8.192 8.192 18.432 11.776 29.184 11.776 10.24 0 20.992-4.096 29.184-11.776l290.304-290.304c8.192-8.192 8.192-20.992 0-29.184-8.192-8.192-20.992-8.192-29.184 0z"
fill="#231815"
p-id="7187"
></path>
</svg>
<!-- <svg
t="1708152049249"
class="icon"
viewBox="0 0 3973 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4694"
>
<path
d="M0 1024Eh3778.56V0H501.76L0 1024z"
fill="#4E4E4E"
fill-opacity="0.2"
p-id="4695"
/>
// d= M0 1024Eh3778.56V0H501.76L0 1024z
<path
d="M194.56 1024h3778.56V0H696.32L194.56 1024z"
fill="#4E4E4E"
p-id="4696"
/>
</svg> -->
</div>
<div class="mian_bottom_right_font">
<div v-if="item.completionState == 1">领取</div>
<div v-if="item.completionState == 2">待完成</div>
<div v-if="item.completionState == 3">超时</div>
<div v-if="item.completionState == 4">已完成</div>
</div>
</div>
</div>
</div>
</div>
<div class="bottom">*任务完成后5-10分钟才可领取奖励</div>
</div>
</template>
<script>
import { gettaskList, claimTasks } from "@/api/index";
// import { creditsRank } from "@/api/index";
export default {
data() {
return {
taskdetial: [
// {
// imgUrl:
// "https://hbimg.huaban.com/7ee3fd0fcae95a3ece1464e9e99a83c35f8dcca481cdb-NTecIK_fw658",
// endTime: 365,
// describe:
// "app100M10M",
// // 1 2 0
// status: 1,
// taskname: "",
// type: 1,
// },
// {
// imgUrl: "https://pic2.52pk.com/files/171228/7229806_151902_5671.jpg",
// endTime: 365,
// describe: "000M000M",
// // 1 2 0
// status: 1,
// taskname: "",
// type: 2,
// },
],
};
},
mounted() {
this.gettask();
},
methods: {
playAudio(){
this.$store.commit("playAudio");
},
gettask() {
gettaskList().then((res) => {
console.log('gettaskList',res);
this.taskdetial = res.data;
});
},
handleget(res) {
// res.status = 2;
claimTasks(res.taskId).then((resa) => {
if (resa.data.code == 200) {
this.$message({
type: "success",
message: "领取成功",
customClass: "log_success",
});
this.gettask();
} else if(resa.data.code==500) {
this.$message({
type: "warning",
message: resa.data.msg,
customClass: "log_warning",
});
this.gettask();
}
});
setTimeout(() => {
res.status = 0;
clearTimeout();
}, 5000);
},
},
};
</script>
<style lang="scss" scoped>
.main_body {
width: 100%;
margin-top: 28px;
height: 168px;
border-radius: 14px 14px 14px 14px;
background-size: 100% 100%;
overflow: hidden;
// position: relative;
@media (max-width: 550px) {
margin-top: 20px;
height: 120px;
}
.mian_top {
text-align: left;
font-weight: 600;
// position: absolute;
margin-top: 15px;
margin-left: 15px;
@media (max-width: 550px) {
font-size: 10px;
margin-top: 11px;
margin-left: 13px;
}
}
.mian_center {
margin-top: 13px;
margin-left: 63px;
width: 247px;
// height: 36px;
font-size: 11px;
text-align: left;
@media (max-width: 550px) {
margin-top: 10px;
margin-left: 48px;
font-size: 8px;
}
}
.main_bottom {
margin-top: 29px;
width: 100%;
height: 42px;
background: rgba(50, 52, 54, 0.2);
padding-left: 14px;
position: relative;
@media (max-width: 550px) {
margin-top: 24px;
height: 30px;
}
.mian_bottom_left {
width: 126px;
height: 35px;
background: #323436;
border-radius: 70px 70px 70px 70px;
font-size: 14px;
opacity: 1;
padding: 0 10px;
@media (max-width: 550px) {
width: 90px;
height: 25px;
font-size: 10px;
}
.mian_bottom_left_icon {
width: 21px;
height: 21px;
@media (max-width: 550px) {
width: 15px;
height: 15px;
}
.icon {
width: 100%;
height: 100%;
}
}
}
.mian_bottom_right {
width: 188px;
height: 42px;
position: relative;
right: 0;
top: 0;
overflow: hidden;
@media (max-width: 550px) {
height: 30px;
width: 134px;
}
.mian_bottom_right_icon {
position: absolute;
.icon {
width: 100%;
height: 100%;
}
}
.mian_bottom_right_font {
position: relative;
// transform: translateX(-50%);
z-index: 2;
font-size: 21px;
@media (max-width: 550px) {
font-size: 15px;
left: 21%;
}
}
}
}
}
.home {
width: 95%;
margin: 0 auto;
}
.bottom {
width: 100%;
margin-top: 35px;
font-size: 14px;
color: #3fa2c7;
@media (max-width: 550px) {
margin-top: 25px;
font-size: 10px;
}
}
</style>
+44
View File
@@ -0,0 +1,44 @@
import vue from 'vue'
// 这里就是我们刚刚创建的那个静态组件
import toastComponent from './toast.vue'
// 返回一个 扩展实例构造器
const ToastConstructor = vue.extend(toastComponent)
const toastDom = new ToastConstructor({
el: document.createElement('div'),
data() {
return {
text:'',
showWrap:true, // 是否显示组件
showContent:true,
duration:0 // 作用:在隐藏组件之前,显示隐藏动画
}
}
})
// 定义弹出组件的函数 接收2个参数, 要显示的文本 和 显示时间
function showToast(text, duration=2000) {
toastDom.text=text
toastDom.duration=duration
toastDom.showWrap=true
toastDom.showContent=true
document.body.appendChild(toastDom.$el)
}
function hideToast() {
// 提前 250ms 执行淡出动画(因为我们再css里面设置的隐藏动画持续是250ms)
setTimeout(() => {toastDom.showContent = false} ,toastDom.duration - 2250)
// 过了 duration 时间后隐藏整个组件
setTimeout(() => {toastDom.showWrap = false} ,toastDom.duration)
}
// 注册为全局组件的函数
function registryToast() {
// 将组件注册到 vue 的 原型链里去,
// 这样就可以在所有 vue 的实例里面使用 this.$toast()
vue.prototype.$toast = showToast
vue.prototype.$hide = hideToast
}
export default registryToast
+39
View File
@@ -0,0 +1,39 @@
<template>
<div class="wrap" v-if="showWrap" :class="showContent ?'fadein':'fadeout'">{{text}}</div>
</template>
<style scoped>
.wrap{
position: fixed;
left: 50%;
top:50%;
background: rgba(0, 0, 0, 0.623);
padding: 30px;
border-radius: 5px;
transform: translate(-50%,-50%);
color:#fff;
}
.fadein {
animation: animate_in 0.25s;
}
.fadeout {
animation: animate_out 0.25s;
opacity: 0;
}
@keyframes animate_in {
0% {
opacity: 0;
}
100%{
opacity: 1;
}
}
@keyframes animate_out {
0% {
opacity: 1;
}
100%{
opacity: 0;
}
}
</style>
File diff suppressed because it is too large Load Diff