接口返回完善
This commit is contained in:
@@ -18,6 +18,14 @@ function request(method, url, data = {}) {
|
|||||||
if (message.indexOf("登录身份已失效") !== -1) {
|
if (message.indexOf("登录身份已失效") !== -1) {
|
||||||
uni.removeStorageSync("token");
|
uni.removeStorageSync("token");
|
||||||
}
|
}
|
||||||
|
if (message === "ROOM_FULL") {
|
||||||
|
resolve({ full: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (message === "ERROR_ROOM_GAME_START") {
|
||||||
|
resolve({ started: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (url.indexOf("/user/room") !== -1 && method === "GET") {
|
if (url.indexOf("/user/room") !== -1 && method === "GET") {
|
||||||
resolve({});
|
resolve({});
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from "vue";
|
import { ref, onMounted, onUnmounted } from "vue";
|
||||||
import Container from "@/components/Container.vue";
|
import Container from "@/components/Container.vue";
|
||||||
import Avatar from "@/components/Avatar.vue";
|
import Avatar from "@/components/Avatar.vue";
|
||||||
import SButton from "@/components/SButton.vue";
|
import SButton from "@/components/SButton.vue";
|
||||||
@@ -16,6 +16,9 @@ const { updateUser } = store;
|
|||||||
|
|
||||||
const selectedVIP = ref(0);
|
const selectedVIP = ref(0);
|
||||||
const showModal = ref(false);
|
const showModal = ref(false);
|
||||||
|
const lastDate = ref(user.value.expiredAt);
|
||||||
|
const refreshing = ref(false);
|
||||||
|
const timer = ref(null);
|
||||||
|
|
||||||
const onPay = async () => {
|
const onPay = async () => {
|
||||||
if (!user.value.id) {
|
if (!user.value.id) {
|
||||||
@@ -35,12 +38,19 @@ const onPay = async () => {
|
|||||||
paySign: params.paySign, // 签名
|
paySign: params.paySign, // 签名
|
||||||
signType: "RSA", // 签名类型,默认为RSA
|
signType: "RSA", // 签名类型,默认为RSA
|
||||||
async success(res) {
|
async success(res) {
|
||||||
const result = await getHomeData();
|
|
||||||
if (result.user) updateUser(result.user);
|
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "支付成功",
|
title: "支付成功",
|
||||||
icon: "none",
|
icon: "none",
|
||||||
});
|
});
|
||||||
|
timer.value = setInterval(async () => {
|
||||||
|
refreshing.value = true;
|
||||||
|
const result = await getHomeData();
|
||||||
|
if (result.user.expiredAt > lastDate.value) {
|
||||||
|
refreshing.value = false;
|
||||||
|
if (result.user) updateUser(result.user);
|
||||||
|
clearInterval(timer.value);
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
},
|
},
|
||||||
fail(res) {
|
fail(res) {
|
||||||
console.log("pay error", res);
|
console.log("pay error", res);
|
||||||
@@ -56,6 +66,10 @@ const toOrderPage = () => {
|
|||||||
url: "/pages/orders",
|
url: "/pages/orders",
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
if (timer.value) clearInterval(timer.value);
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -66,9 +80,18 @@ const toOrderPage = () => {
|
|||||||
<Avatar :src="user.avatar" :size="35" />
|
<Avatar :src="user.avatar" :size="35" />
|
||||||
<text class="truncate">{{ user.nickName }}</text>
|
<text class="truncate">{{ user.nickName }}</text>
|
||||||
</view>
|
</view>
|
||||||
<text v-if="user.expiredAt">
|
<block v-if="refreshing">
|
||||||
{{ formatTimestamp(user.expiredAt) }}到期
|
<image
|
||||||
</text>
|
src="../static/btn-loading.png"
|
||||||
|
mode="widthFix"
|
||||||
|
class="loading"
|
||||||
|
/>
|
||||||
|
</block>
|
||||||
|
<block v-else>
|
||||||
|
<text v-if="user.expiredAt">
|
||||||
|
{{ formatTimestamp(user.expiredAt) }}到期
|
||||||
|
</text>
|
||||||
|
</block>
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view
|
||||||
class="container"
|
class="container"
|
||||||
@@ -229,4 +252,12 @@ const toOrderPage = () => {
|
|||||||
.my-orders > view > image {
|
.my-orders > view > image {
|
||||||
width: 15px;
|
width: 15px;
|
||||||
}
|
}
|
||||||
|
.loading {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin-left: 10px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
background-blend-mode: darken;
|
||||||
|
animation: rotate 2s linear infinite;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -31,14 +31,19 @@ const enterRoom = debounce(async () => {
|
|||||||
const alreadyIn = room.members.find(
|
const alreadyIn = room.members.find(
|
||||||
(item) => item.userInfo.id === user.value.id
|
(item) => item.userInfo.id === user.value.id
|
||||||
);
|
);
|
||||||
if (!alreadyIn) await joinRoomAPI(roomNumber.value);
|
if (!alreadyIn) {
|
||||||
|
const result = await joinRoomAPI(roomNumber.value);
|
||||||
|
if (result.full) warnning.value = "房间已满员";
|
||||||
|
showModal.value = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
roomNumber.value = "";
|
roomNumber.value = "";
|
||||||
showModal.value = false;
|
showModal.value = false;
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/battle-room?roomNumber=${room.number}`,
|
url: `/pages/battle-room?roomNumber=${room.number}`,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
warnning.value = "查无此房";
|
warnning.value = room.started ? "该房间对战已开始,无法加入" : "查无此房";
|
||||||
showModal.value = true;
|
showModal.value = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user