|
|
@@ -0,0 +1,347 @@
|
|
|
+<template>
|
|
|
+ <view class="body">
|
|
|
+
|
|
|
+ <view v-if="pageType == 1" class="content bg-led01">
|
|
|
+ <view class="distance-container-1">
|
|
|
+ <view class="total-time-1">总用时: {{durationStr}}</view>
|
|
|
+ <view class="total-distance-1">{{distanceKm}}KM</view>
|
|
|
+ </view>
|
|
|
+ <image class="run" mode="aspectFit" src="/static/led/run.gif"></image>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view v-if="pageType == 2" class="content bg-led02">
|
|
|
+ <view class="pic-container">
|
|
|
+ <!-- <image class="pic" mode="aspectFill" :src="imageSrc"></image> -->
|
|
|
+ <swiper class="swiper" autoplay circular :current="picCurIndex" :interval="picInterval"
|
|
|
+ :duration="picDuration" @change="swiperChange">
|
|
|
+ <swiper-item v-for="(image, index) in picList" :key="index">
|
|
|
+ <image class="pic-bg" :src="image"></image>
|
|
|
+ <image class="pic" mode="aspectFit" :src="image"></image>
|
|
|
+ </swiper-item>
|
|
|
+ </swiper>
|
|
|
+ </view>
|
|
|
+ <view class="distance-container-2">
|
|
|
+ <view class="total-time-2">总用时: {{durationStr}}</view>
|
|
|
+ <view class="total-distance-2">{{distanceKm}}KM</view>
|
|
|
+ </view>
|
|
|
+ <image class="mascot" mode="aspectFit" src="/static/led/mascot.png"></image>
|
|
|
+ <image class="lpzg" mode="aspectFit" src="/static/lpzg.png"></image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import tools from '../../common/tools';
|
|
|
+ import { apiGetStatistics, apiGetUploadPic } from '../../common/api';
|
|
|
+
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ testMode: 0, // 测试模式 0:否 1:是
|
|
|
+ testDuration: 0,
|
|
|
+ testDistance: 0,
|
|
|
+ pageAutoChange: 0, // 有照片是否自动切换背景 0:否 1:是
|
|
|
+ pageType: 1, // 1: 无照片 2: 有照片
|
|
|
+ actIdArrStr: "",
|
|
|
+ SumDuration: 0,
|
|
|
+ SumDistance: 0,
|
|
|
+ picCount: 0,
|
|
|
+ picList: [],
|
|
|
+ picInterval: 3000, // 自动切换时间间隔
|
|
|
+ picDuration: 500, // 滑动动画时长
|
|
|
+ picCurIndex: 0, // swiper当前所在滑块的 index
|
|
|
+ intervalSta: 0,
|
|
|
+ // imageSrc: '',
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ durationStr() {
|
|
|
+ return tools.convertSecondsToHMS(this.SumDuration);
|
|
|
+ },
|
|
|
+ distanceKm() {
|
|
|
+ if (this.SumDistance < 1000000)
|
|
|
+ return Math.round(this.SumDistance * 10 / 1000) / 10;
|
|
|
+ else
|
|
|
+ return Math.round(this.SumDistance / 1000);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onLoad(event) { // 类型非必填,可自动推导
|
|
|
+ // this.SumDuration = 1622;
|
|
|
+ // this.SumDistance = 999050;
|
|
|
+ // this.SumDistance = 999949;
|
|
|
+ // this.SumDistance = 2066869;
|
|
|
+ // this.imageSrc = "/static/led/pic2.jpg";
|
|
|
+
|
|
|
+ this.testMode = event["test"] ?? 0;
|
|
|
+ this.pageAutoChange = event["pac"] ?? 0;
|
|
|
+ this.pageType = event["page"] ?? 1;
|
|
|
+ this.actIdArrStr = event["act"] ?? "175,176,177,178";
|
|
|
+
|
|
|
+ this.getUploadPic();
|
|
|
+ this.getStatistics();
|
|
|
+
|
|
|
+ this.intervalSta = setInterval(this.getStatistics, 1000);
|
|
|
+ },
|
|
|
+ onUnload() {
|
|
|
+ console.log("onUnload");
|
|
|
+ clearInterval(this.intervalSta);
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getStatistics() {
|
|
|
+ if (this.testMode == 1) {
|
|
|
+ this.testDuration += 1;
|
|
|
+ this.testDistance += 100;
|
|
|
+ this.SumDuration = this.testDuration;
|
|
|
+ this.SumDistance = this.testDistance;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ uni.request({
|
|
|
+ url: apiGetStatistics,
|
|
|
+ header: {
|
|
|
+ "Content-Type": "application/x-www-form-urlencoded",
|
|
|
+ },
|
|
|
+ method: "POST",
|
|
|
+ data: {
|
|
|
+ actIdArrStr: this.actIdArrStr
|
|
|
+ },
|
|
|
+ success: (res) => {
|
|
|
+ // console.log("getStatistics", res)
|
|
|
+ const data = res.data.data;
|
|
|
+ this.SumDuration = data.SumDuration;
|
|
|
+ this.SumDistance = data.SumDistance;
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ console.log("getStatistics err", err)
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getUploadPic() {
|
|
|
+ uni.request({
|
|
|
+ url: apiGetUploadPic,
|
|
|
+ header: {
|
|
|
+ "Content-Type": "application/x-www-form-urlencoded",
|
|
|
+ },
|
|
|
+ method: "POST",
|
|
|
+ data: {
|
|
|
+ actIdArrStr: this.actIdArrStr
|
|
|
+ },
|
|
|
+ success: (res) => {
|
|
|
+ // console.log("getUploadPic", res);
|
|
|
+ const data = res.data.data;
|
|
|
+ const newCount = data.List.length;
|
|
|
+ console.log("获取到的图片数量:", newCount);
|
|
|
+
|
|
|
+ if (newCount > 0) {
|
|
|
+ if (this.pageAutoChange == 1) {
|
|
|
+ this.pageType = 2;
|
|
|
+ }
|
|
|
+ /* this.picList.length = 0; // 清空数组
|
|
|
+ for (let i = 0; i < newCount; i++) {
|
|
|
+ let picUrl = data.Domain + data.List[i];
|
|
|
+ // console.log("picUrl: " + picUrl);
|
|
|
+ this.picList.push(picUrl);
|
|
|
+ }
|
|
|
+ if (this.picCount > 0) {
|
|
|
+ this.picCurIndex = this.picCount - 1;
|
|
|
+ console.log("重定位 index", this.picCurIndex);
|
|
|
+ } */
|
|
|
+ } else {
|
|
|
+ if (this.pageAutoChange == 1) {
|
|
|
+ if (this.picCount == 0)
|
|
|
+ this.pageType = 1;
|
|
|
+ else
|
|
|
+ this.pageType = 2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (newCount > this.picCount) { // 有新图片
|
|
|
+ console.log("有 " + (newCount - this.picCount) + " 张新图片");
|
|
|
+ // 将新增的图片追加到图片队列
|
|
|
+ for (let i = this.picCount; i < newCount; i++) {
|
|
|
+ let picUrl = data.Domain + data.List[i];
|
|
|
+ console.log("[" + i + "] picUrl: " + picUrl);
|
|
|
+ this.picList.push(picUrl);
|
|
|
+ }
|
|
|
+ if (this.picCount > 0) {
|
|
|
+ this.picCurIndex = this.picCount;
|
|
|
+ console.log("重定位 index", this.picCurIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.picCount = newCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.picCount == 0) {
|
|
|
+ // console.log('this.picCount == 0');
|
|
|
+ setTimeout(this.getUploadPic, 1000);
|
|
|
+ }
|
|
|
+ else if (this.picCount == 1) {
|
|
|
+ // console.log('this.picCount == 1');
|
|
|
+ // swiper在只有1张图片的情况下不会触发 @change事件,需要在这里再次获取图片数据
|
|
|
+ setTimeout(this.getUploadPic, this.picInterval);
|
|
|
+ }
|
|
|
+ // console.log("picList", this.picList);
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ console.log("getUploadPic err", err);
|
|
|
+ setTimeout(this.getUploadPic, 3000);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //当前轮播索引
|
|
|
+ swiperChange(e) {
|
|
|
+ console.log("pic index: " + e.detail.current);
|
|
|
+ const curIndex = e.detail.current;
|
|
|
+ // 播放完最后一张图片后重新获取图片数据
|
|
|
+ if (curIndex == this.picCount - 1) {
|
|
|
+ console.log("播放完毕,重新获取图片数据...");
|
|
|
+ // this.picCurIndex = curIndex;
|
|
|
+ this.getUploadPic();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //点击轮播
|
|
|
+ swiperClick(e) {
|
|
|
+ console.log('点击轮播', e);
|
|
|
+ },
|
|
|
+ animationfinish() {
|
|
|
+ console.log('animationfinish');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+ .body {
|
|
|
+ /* width: 100%; */
|
|
|
+ /* height: 100vh; */
|
|
|
+ width: 1920px;
|
|
|
+ height: 1440px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ flex-direction: row;
|
|
|
+ align-items: flex-start;
|
|
|
+ /* justify-content: flex-start; */
|
|
|
+ }
|
|
|
+
|
|
|
+ .bg-led01 {
|
|
|
+ background-image: url("/static/led/led01.webp");
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: contain;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bg-led02 {
|
|
|
+ background-image: url("/static/led/led02.webp");
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: contain;
|
|
|
+ }
|
|
|
+
|
|
|
+ .pic-container {
|
|
|
+ width: 1300px;
|
|
|
+ height: 850px;
|
|
|
+ margin-left: 76px;
|
|
|
+ margin-top: 303px;
|
|
|
+ background: url("/static/led/pic_border.png");
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: contain;
|
|
|
+ }
|
|
|
+
|
|
|
+ .swiper {
|
|
|
+ height: 852px;
|
|
|
+ mask-image: url('/static/led/pic_mask.png');
|
|
|
+ mask-size: 1298px;
|
|
|
+ mask-repeat: no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ .pic {
|
|
|
+ margin: 3px;
|
|
|
+ width: 1300px;
|
|
|
+ height: 840px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .pic-bg {
|
|
|
+ position: absolute;
|
|
|
+ margin: -10px;
|
|
|
+ width: 1320px;
|
|
|
+ height: 860px;
|
|
|
+ filter: blur(15px);
|
|
|
+ }
|
|
|
+
|
|
|
+ .distance-container-1 {
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-around;
|
|
|
+ width: 1070px;
|
|
|
+ height: 450px;
|
|
|
+ margin-left: 766px;
|
|
|
+ margin-top: 850px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .total-time-1 {
|
|
|
+ font-family: 'Arial Black';
|
|
|
+ font-size: 50px;
|
|
|
+ color: #ffffff;
|
|
|
+ margin-left: 390px;
|
|
|
+ line-height: 100px;
|
|
|
+ margin-top: 6px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .total-distance-1 {
|
|
|
+ font-family: 'Arial';
|
|
|
+ font-size: 330px;
|
|
|
+ transform: scaleX(0.8);
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 330px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .distance-container-2 {
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-around;
|
|
|
+ width: 695px;
|
|
|
+ height: 296px;
|
|
|
+ margin-left: -253px;
|
|
|
+ margin-top: 946px;
|
|
|
+ background: url("/static/led/distance_bg.png") no-repeat;
|
|
|
+ background-size: cover;
|
|
|
+ }
|
|
|
+
|
|
|
+ .total-time-2 {
|
|
|
+ font-family: 'Arial Black';
|
|
|
+ font-size: 36px;
|
|
|
+ color: #ffffff;
|
|
|
+ margin-left: 250px;
|
|
|
+ line-height: 50px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .total-distance-2 {
|
|
|
+ font-family: 'Arial';
|
|
|
+ font-size: 200px;
|
|
|
+ transform: scaleX(0.8);
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 180px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .run {
|
|
|
+ width: 520px;
|
|
|
+ height: 520px;
|
|
|
+ margin-left: -880px;
|
|
|
+ margin-top: 356px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .mascot {
|
|
|
+ height: 468px;
|
|
|
+ margin-left: -495px;
|
|
|
+ margin-top: 486px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .lpzg {
|
|
|
+ width: 468px;
|
|
|
+ margin-left: -1540px;
|
|
|
+ margin-top: 1072px;
|
|
|
+ }
|
|
|
+</style>
|