138 lines
2.2 KiB
Vue
138 lines
2.2 KiB
Vue
<!--
|
||
@name: 分享跳转页面
|
||
@author: kahu4
|
||
@date: 2023-11-10 11:33
|
||
@description:index
|
||
@update: 2023-11-10 11:33
|
||
-->
|
||
<script
|
||
setup
|
||
>
|
||
import { onBeforeUnmount, onMounted, ref } from "vue";
|
||
import { onLoad } from "@dcloudio/uni-app";
|
||
import { lazyLoading } from "@/utils/images";
|
||
import { useShareInner } from "@/hooks/useShare";
|
||
|
||
let colorTime
|
||
const textColor = ref('#cccccc')
|
||
const text = ref('数据处理中...')
|
||
|
||
const {
|
||
params,
|
||
analysisParams
|
||
} = useShareInner()
|
||
onMounted(() => {
|
||
colorTime = setInterval(() => {
|
||
textColor.value = textColor.value === '#333' ? "#cccccc" : "#333"
|
||
}, 800)
|
||
})
|
||
|
||
onLoad(options => {
|
||
// 解析参数
|
||
analysisParams(options)
|
||
})
|
||
|
||
onBeforeUnmount(() => {
|
||
colorTime && clearInterval(colorTime)
|
||
})
|
||
</script>
|
||
|
||
<template>
|
||
<view class="share-container">
|
||
<view class="main-box">
|
||
<view
|
||
class="loading"
|
||
|
||
>
|
||
<image :src="lazyLoading" />
|
||
</view>
|
||
<view
|
||
class="text"
|
||
:style="{color:textColor}"
|
||
>
|
||
<view
|
||
:style="{animationDelay: `${index*0.2}s`}"
|
||
v-for="(item,index) in text"
|
||
:key="index"
|
||
>
|
||
{{ item }}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
|
||
<style lang="scss">
|
||
page {
|
||
background: #fafafa;
|
||
}
|
||
</style>
|
||
<style
|
||
scoped
|
||
lang="scss"
|
||
>
|
||
.share-container {
|
||
width: 100%;
|
||
|
||
.main-box {
|
||
position: absolute;
|
||
top: 30%;
|
||
left: 0;
|
||
width: 100%;
|
||
transform: translateY(-50%);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
|
||
.loading {
|
||
image{
|
||
width: 300px;
|
||
height: 300px;
|
||
|
||
}
|
||
}
|
||
|
||
.text {
|
||
margin: 30rpx 0;
|
||
transition: all .3s;
|
||
font-size: 48rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
|
||
view {
|
||
margin: 0 5rpx;
|
||
animation: jump 3s ease-in-out infinite;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
@keyframes spin {
|
||
0% {
|
||
rotate: 0deg;
|
||
}
|
||
100% {
|
||
rotate: 360deg;
|
||
}
|
||
80% {
|
||
rotate: 460deg;
|
||
}
|
||
|
||
}
|
||
|
||
@keyframes jump {
|
||
0%, 60% {
|
||
transform: translateY(0);
|
||
}
|
||
20% {
|
||
transform: translateY(-15rpx);
|
||
}
|
||
40% {
|
||
transform: translateY(15rpx);
|
||
}
|
||
}
|
||
</style>
|