Files
tk-mini-program/pages/PKMessageprocessing/PKMessageprocessing.vue
pengxiaolong 8580cd18fa 优化
2025-07-25 16:39:52 +08:00

574 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="container">
<view class="background">
<image
style="width: 100%; height: 100%"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/HomeBackground.png"
mode="scaleToFill"
/>
</view>
<view class="Navigation">
<view class="Return" @click="goBack">
<image
class="Return"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Return.png"
mode="scaleToFill"
/>
</view>
</view>
<view class="Content">
<!-- 发布者 -->
<view class="sender">
<view class="sengderIcon">
<image class="Icon" :src="SenderData.anchorIcon" mode="scaleToFill" />
</view>
<view class="Individual">
<view class="name">{{ SenderData.anchorId }}</view>
<view class="GenderAndAge">
<view class="male" v-if="SenderData.sex === '1'">
<view>
<image
style="width: 20rpx; height: 20rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/male.png"
mode="scaleToFill"
/>
</view>
<view class="age"> {{ SenderData.sex == 1 ? "男" : "女" }} </view>
</view>
<view class="female" v-else>
<view>
<image
style="width: 20rpx; height: 20rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/female.png"
mode="scaleToFill"
/>
</view>
<view class="age">{{ SenderData.sex == 1 ? "男" : "女" }}</view>
</view>
</view>
<view class="nation">{{ SenderData.country }}</view>
</view>
<view class="Time">PK时间:{{ formatDate(SenderData.pkTime) }}</view>
<view class="SessionAndGoldCoin">
<view class="goldCoin">
<image
style="width: 72rpx; height: 72rpx; margin-left: 36rpx; margin-right: 32rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/gold.png"
mode="scaleToFill"
/>
<view class="goldcard">
<view class="goldnumber">{{ SenderData.coin }}</view>
<view class="goldtext">金币</view>
</view>
</view>
<view class="Session">
<image
style="width: 72rpx; height: 72rpx; margin-left: 36rpx; margin-right: 32rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/session.png"
mode="scaleToFill"
/>
<view class="goldcard">
<view class="goldnumber">{{ SenderData.pkNumber }}</view>
<view class="goldtext">PK场数</view>
</view>
</view>
</view>
</view>
<!-- 被邀请者 -->
<view class="sender">
<view class="sengderIcon">
<image class="Icon" :src="ReceiverData.anchorIcon" mode="scaleToFill" />
</view>
<view class="Individual">
<view class="name">{{ ReceiverData.anchorId }}</view>
<view class="GenderAndAge">
<view class="male" v-if="ReceiverData.sex === '1'">
<view>
<image
style="width: 20rpx; height: 20rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/male.png"
mode="scaleToFill"
/>
</view>
<view class="age"> {{ ReceiverData.sex == 1 ? "男" : "女" }} </view>
</view>
<view class="female" v-else>
<view>
<image
style="width: 20rpx; height: 20rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/female.png"
mode="scaleToFill"
/>
</view>
<view class="age">{{ ReceiverData.sex == 1 ? "男" : "女" }}</view>
</view>
</view>
<view class="nation">{{ ReceiverData.country }}</view>
</view>
<view class="Time">PK时间:{{ formatDate(ReceiverData.pkTime) }}</view>
<view class="SessionAndGoldCoin">
<view class="goldCoin">
<image
style="width: 72rpx; height: 72rpx; margin-left: 36rpx; margin-right: 32rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/gold.png"
mode="scaleToFill"
/>
<view>
<view class="goldnumber">{{ ReceiverData.coin }}</view>
<view class="goldtext">金币</view>
</view>
</view>
<view class="Session">
<image
style="width: 72rpx; height: 72rpx; margin-left: 36rpx; margin-right: 32rpx"
src="https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/session.png"
mode="scaleToFill"
/>
<view>
<view class="goldnumber">{{ ReceiverData.pkNumber }}</view>
<view class="goldtext">PK场数</view>
</view>
</view>
</view>
</view>
<!-- 邀请信息 -->
<view
class="button"
v-if="PkIDInfodata.pkStatus === 0 && ReceiverData.senderId !== id"
>
<button class="accept" @click="AcceptHint()">接受邀请</button>
<button class="reject" @click="RefuseHint()">拒绝邀请</button>
</view>
<view
v-if="ReceiverData.senderId === id && PkIDInfodata.pkStatus === 0"
class="button buttontext"
>等待对方接受邀请</view
>
<view v-if="PkIDInfodata.pkStatus === 1" class="button buttontext">已接受邀请</view>
<view v-if="PkIDInfodata.pkStatus === 2" class="button buttontext">已拒绝邀请</view>
</view>
</view>
<uni-popup ref="popups" type="center" border-radius="10px 10px 0 0">
<view class="popup-Hintcontent">
<view class="popup-text">提示</view>
<view class="popup-texts">邀请成功后的pk不可修改不可删除请谨慎操作</view>
<view class="popup-btn">
<button class="invite" type="primary" @click="operation(1)">确认</button>
<button class="cancel" type="default" @click="closeHint()">取消</button>
</view>
</view>
</uni-popup>
<uni-popup ref="Refusepopup" type="center" border-radius="10px 10px 0 0">
<view class="popup-Hintcontent">
<view class="popup-text">提示</view>
<view class="popup-texts">您确定要拒绝该邀请吗</view>
<view class="popup-btn">
<button class="invite" type="primary" @click="operation(2)">确认</button>
<button class="cancel" type="default" @click="RefuseHintcloseHint()">取消</button>
</view>
</view>
</uni-popup>
</template>
<script>
import request from "../../components/request.js";
import formatDate from "../../components/formatDate.js";
export default {
data() {
return {
customData: {},
SenderData: {},
ReceiverData: {},
PkIDInfodata: {},
id: "",
};
},
onLoad(options) {
uni.getStorage({
key: "userinfo",
success: (res) => {
this.id = res.data.id;
},
});
this.customData = JSON.parse(options.customData);
setTimeout(() => {
this.getPkIDInfo();
this.getPkyourInfo();
this.getPkmineInfo();
}, 1000);
},
onShareAppMessage(res) {
if (res.from === "menu") {
return {
title: "分享",
path: `${
getCurrentPages()[getCurrentPages().length - 1].route
}?customData=${JSON.stringify(this.customData)}`,
};
}
},
methods: {
//根据当前消息ID查询pk信息
async getPkIDInfo() {
const res = await request({
url: "pk/singleRecord",
method: "POST",
data: {
id: this.customData.id,
},
userInfo: true,
}).then((res) => {
console.log(res.data);
this.PkIDInfodata = res.data;
});
},
//发布者
async getPkyourInfo() {
const res = await request({
url: "pk/pkInfoDetail",
method: "POST",
data: {
id: this.customData.pkIdA,
userId: this.id,
from: 2,
},
userInfo: false,
}).then((res) => {
console.log(res);
if (res.code === 200) {
console.log(res.data);
this.SenderData = res.data;
}else{
wx.showToast({
title: "获取发布者信息失败",
icon: "none",
duration: 2000,
});
}
});
},
//被邀请者
async getPkmineInfo() {
const res = await request({
url: "pk/pkInfoDetail",
method: "POST",
data: {
id: this.customData.pkIdB,
userId: this.id,
from: 2,
},
userInfo: false,
}).then((res) => {
if (res.code === 200) {
console.log(res.data);
this.ReceiverData = res.data;
}else{
wx.showToast({
title: "获取被邀请者信息失败",
icon: "none",
duration: 2000,
});
}
});
},
//返回上一页
goBack() {
wx.navigateBack({
delta: 1,
});
},
formatDate: formatDate,
//接受邀请提示
AcceptHint() {
this.$refs.popups.open("center");
},
closeHint() {
this.$refs.popups.close();
},
//拒绝邀请提示
RefuseHint() {
this.$refs.Refusepopup.open("center");
},
RefuseHintcloseHint() {
this.$refs.Refusepopup.close();
},
//操作
async operation(status) {
const res = await request({
url: "pk/updatePkStatus",
method: "POST",
data: {
id: this.customData.id,
pkStatus: status,
},
userInfo: true,
}).then((res) => {
const Hinttext = status === 1 ? "接受邀请成功" : "拒绝邀请成功";
if (res.code === 200) {
this.getPkIDInfo();
this.$refs.popups.close();
this.$refs.Refusepopup.close();
wx.showToast({
title: Hinttext,
icon: "success",
duration: 2000,
});
wx.navigateBack({
delta: 1,
});
} else {
wx.showToast({
title: "操作失败",
icon: "none",
duration: 2000,
});
}
});
},
},
};
</script>
<style scoped>
.background {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
}
.Navigation {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 200rpx;
display: flex;
align-items: center;
padding: 0 60rpx;
z-index: 1;
}
.Return {
width: 60rpx;
height: 60rpx;
margin-top: 20rpx;
}
.Content {
position: absolute;
top: 200rpx;
left: 0;
right: 0;
bottom: 0;
display: flex;
flex-direction: column;
align-items: center;
}
.sender {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 80rpx;
}
.sengderIcon {
width: 150rpx;
height: 150rpx;
border-radius: 50%;
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
}
.Icon {
width: 100%;
height: 100%;
border-radius: 50%;
}
.Individual {
display: flex;
justify-content: center;
align-items: center;
margin-top: 34.35rpx;
}
.name {
font-size: 30.53rpx;
color: #161616;
margin-right: 16.22rpx;
}
.nation {
width: 56.3rpx;
height: 29.58rpx;
font-size: 17.18rpx;
color: #666666;
text-align: center;
line-height: 29.58rpx;
background-color: #fff;
border-radius: 50rpx;
padding: 6rpx 12rpx;
display: flex;
justify-content: center;
align-items: center;
}
.male {
width: 56.3rpx;
height: 29.58rpx;
background-color: #5bced1;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
padding: 6rpx 12rpx;
margin-right: 12rpx;
}
.female {
width: 56.3rpx;
height: 29.58rpx;
background-color: #f3876f;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
padding: 6rpx 12rpx;
margin-right: 12rpx;
}
.age {
font-size: 17.18rpx;
color: #fff;
margin-left: 4rpx;
}
.Time {
color: #666666;
font-size: 26.72rpx;
margin-top: 48.7rpx;
}
.goldCoin {
background-image: url("https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Backgroundofgoldcoins.png");
width: 334.83rpx;
height: 124.05rpx;
margin-right: 21rpx;
display: flex;
align-items: center;
}
.Session {
background-image: url("https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/Fieldnumberbackground.png");
width: 334.83rpx;
height: 124.05rpx;
display: flex;
align-items: center;
}
.SessionAndGoldCoin {
display: flex;
justify-content: center;
align-items: center;
margin-top: 60rpx;
display: flex;
justify-content: center;
}
.goldtext {
font-size: 28.63rpx;
color: #929292;
}
.goldnumber {
font-size: 34.35rpx;
color: #161616;
font-weight: bold;
}
.goldcard {
display: flex;
flex-direction: column;
align-items: center;
}
.button {
display: flex;
justify-content: center;
align-items: center;
margin-top: 150rpx;
}
.buttontext {
font-size: 40rpx;
color: #666666;
font-weight: bold;
}
.accept {
width: 325.38rpx;
height: 77.29rpx;
margin-right: 35.5rpx;
border-radius: 50rpx;
background-color: #fff;
border: 1rpx solid #03aba8;
color: #03aba8;
font-size: 28.63rpx;
line-height: 77.29rpx;
}
.reject {
width: 325.38rpx;
height: 77.29rpx;
border-radius: 50rpx;
background-color: #03aba8;
border: 1rpx solid #03aba8;
color: #fff;
font-size: 28.63rpx;
line-height: 77.29rpx;
}
.popup-Hintcontent {
width: 600rpx;
height: 500rpx;
background-repeat: no-repeat;
border-radius: 10px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-image: url(https://vv-1317974657.cos.ap-shanghai.myqcloud.com/util/chard1.png);
background-position: center;
}
.popup-text {
color: #161616;
font-size: 36.26rpx;
font-weight: bold;
margin-bottom: 30rpx;
}
.popup-texts {
margin-left: 50rpx;
color: #7e7e7e;
font-size: 26rpx;
margin-right: 50rpx;
margin-top: 70rpx;
margin-bottom: 70rpx;
}
.popup-btn {
display: flex;
justify-content: space-around;
margin-top: 50rpx;
}
.invite {
width: 225.19rpx;
height: 78.24rpx;
font-size: 28.63rpx;
line-height: 80rpx;
border-top-left-radius: 50rpx;
border-bottom-left-radius: 50rpx;
border-bottom-right-radius: 50rpx;
background-image: linear-gradient(135deg, #4fcacd, #5fdbde);
}
.cancel {
width: 225.19rpx;
height: 78.24rpx;
font-size: 28.63rpx;
line-height: 80rpx;
margin-left: 30rpx;
color: #03aba8;
border-top-left-radius: 50rpx;
border-bottom-left-radius: 50rpx;
border-bottom-right-radius: 50rpx;
border: 1rpx solid #03aba8;
}
</style>