Files
shoot-miniprograms/src/App.vue

207 lines
3.3 KiB
Vue
Raw Normal View History

2025-04-10 11:11:46 +08:00
<script setup>
import { watch } from "vue";
2025-07-18 13:38:01 +08:00
import { onShow, onHide } from "@dcloudio/uni-app";
2025-06-05 21:32:15 +08:00
import websocket from "@/websocket";
import useStore from "@/store";
import { storeToRefs } from "pinia";
const store = useStore();
const { user } = storeToRefs(store);
const { updateUser } = store;
2025-04-10 11:11:46 +08:00
2025-06-05 21:32:15 +08:00
watch(
() => user.value.id,
(newVal) => {
const token = uni.getStorageSync("token");
if (newVal && token) {
websocket.createWebSocket(token, (content) => {
2025-06-05 21:32:15 +08:00
uni.$emit("socket-inbox", content);
});
}
2025-06-22 02:39:03 +08:00
if (!newVal) {
websocket.closeWebSocket();
}
2025-06-05 21:32:15 +08:00
},
{
deep: false, // 如果 user 是一个对象或数组,建议开启
immediate: false, // 若想在初始化时立即执行一次回调,可开启。
}
);
2025-06-22 02:39:03 +08:00
onShow(() => {
const token = uni.getStorageSync("token");
if (user.value.id && token) {
2025-07-18 13:38:01 +08:00
console.log("回到前台,重新连接 websocket");
websocket.createWebSocket(token, (content) => {
uni.$emit("socket-inbox", content);
2025-06-22 02:39:03 +08:00
});
}
});
2025-07-18 13:38:01 +08:00
onHide(() => {
websocket.closeWebSocket();
});
2025-04-10 11:11:46 +08:00
</script>
2025-05-07 23:34:15 +08:00
<style>
2025-05-08 22:05:53 +08:00
page {
-webkit-touch-callout: none;
-webkit-user-select: none;
user-select: none;
2025-06-13 14:22:23 +08:00
background-color: #000;
2025-05-08 22:05:53 +08:00
}
2025-05-07 23:34:15 +08:00
button {
margin: 0;
padding: 0;
border: none;
background: none;
line-height: 1;
outline: none;
box-sizing: border-box;
}
button::after {
border: none;
}
2025-05-08 22:05:53 +08:00
.guide-tips {
display: flex;
flex-direction: column;
}
.guide-tips > text:first-child {
color: #fed847;
2025-05-07 23:34:15 +08:00
}
2025-05-10 16:57:36 +08:00
2025-07-10 19:55:30 +08:00
@keyframes fadeInOut {
0% {
2025-06-08 12:52:49 +08:00
transform: translateY(20px);
opacity: 0;
}
2025-07-10 19:55:30 +08:00
30% {
2025-06-08 12:52:49 +08:00
transform: translateY(0);
opacity: 1;
}
2025-07-10 19:55:30 +08:00
80% {
opacity: 1;
}
100% {
opacity: 0;
}
2025-06-08 12:52:49 +08:00
}
2025-07-10 19:55:30 +08:00
.fade-in-out {
animation: fadeInOut 1s ease forwards;
2025-06-08 12:52:49 +08:00
}
@keyframes fadeOut {
from {
transform: translateY(0);
opacity: 1;
}
to {
transform: translateY(20px);
opacity: 0;
}
}
.fade-out {
animation: fadeOut 0.3s ease forwards;
}
2025-05-10 16:57:36 +08:00
@keyframes scaleIn {
from {
transform: scale(0);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
.scale-in {
animation: scaleIn 0.3s ease-out forwards;
transform-origin: center center;
}
@keyframes scaleOut {
from {
transform: scale(1);
opacity: 1;
}
to {
transform: scale(0);
opacity: 0;
}
}
.scale-out {
animation: scaleOut 0.3s ease-out forwards;
transform-origin: center center;
}
2025-06-19 01:55:40 +08:00
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes pumpIn {
from {
transform: scale(2);
}
to {
transform: scale(1);
}
}
.pump-in {
animation: pumpIn 0.3s ease-out forwards;
transform-origin: center center;
}
2025-06-21 21:40:31 +08:00
.share-canvas {
2025-06-21 22:28:42 +08:00
width: 300px;
2025-06-22 16:15:37 +08:00
height: 534px;
2025-06-21 21:40:31 +08:00
position: absolute;
top: -1000px;
left: 0;
}
2025-07-02 15:57:58 +08:00
2025-06-24 13:18:03 +08:00
.truncate {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.modal {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
2025-07-11 00:47:34 +08:00
.user-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 15px;
padding-top: 20px;
2025-07-12 16:01:49 +08:00
position: relative;
2025-07-11 00:47:34 +08:00
}
2025-07-15 17:10:41 +08:00
.half-time-tip {
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.half-time-tip > text:last-child {
margin-top: 20px;
color: #fff9;
}
2025-05-07 23:34:15 +08:00
</style>