Browse Source

Merge branch 'dev_pig' into dev_des

dev_des
1054425342@qq.com 2 months ago
parent
commit
79849ceeb8
  1. 1
      README.md
  2. 22
      pages/index/sensoryStore.vue
  3. 11
      pig/chapter1/chapter1.vue
  4. 8
      pig/chapter2/chapter2.vue
  5. 6
      pig/chapter3/art.vue
  6. 6
      pig/chapter3/brave.vue
  7. 9
      pig/chapter3/chapter3.vue
  8. 6
      pig/chapter3/humble.vue
  9. 30
      pig/chapter3/sacred.vue
  10. 6
      pig/chapter3/smart.vue
  11. 30
      pig/chapter3/stupid.vue
  12. 106
      pig/chapter4/chapter4.vue
  13. 6
      pig/chapter4/first.vue
  14. 6
      pig/chapter4/fourth.vue
  15. 23
      pig/chapter4/secBuy.vue
  16. 6
      pig/chapter4/second.vue
  17. 6
      pig/chapter4/third.vue
  18. 257
      pig/components/SideNav.vue
  19. 169
      pig/home/home.vue

1
README.md

@ -1,2 +1 @@
# EpicSoul

22
pages/index/sensoryStore.vue

@ -19,18 +19,21 @@
<view class="product-content">
<image class="head-img" src="https://static.ticket.sz-trip.com/uploads/20250625/e3112c280ef9761af741907a737ef221.png"></image>
<view class="product">
<view class="item" v-for="(item,i) in list" :key="item.goods.id" @click="goDetailByType(item)">
<image class="item-img" :src="showImg(item.goods.image)"></image>
<view class="content">
<view class="title text-overflow">{{item.goods.title}}</view>
<view class="bottom">
<view class="price">{{item.goods.money/100}}</view>
<image src="https://static.ticket.sz-trip.com/epicSoul/readingBody/gwc.png" class="buy-cart"></image>
<scroll-view style="width: 100%;" scroll-x>
<view class="product">
<view class="item" v-for="(item,i) in list" :key="item.goods.id" @click="goDetailByType(item)">
<image class="item-img" :src="showImg(item.goods.image)"></image>
<view class="content">
<view class="title text-overflow">{{item.goods.title}}</view>
<view class="bottom">
<view class="price">{{item.goods.money/100}}</view>
<image src="https://static.ticket.sz-trip.com/epicSoul/readingBody/gwc.png" class="buy-cart"></image>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<image style="margin: 53rpx 0 35rpx;" class="head-img" src="https://static.ticket.sz-trip.com/uploads/20250627/73153098ff5c115e02afb0328ade1e29.png"></image>
@ -90,7 +93,6 @@
this.Post({
tag_id: 40,
offset: 0,
limit: 3,
},'/api/tag/getGoodsByTagId').then(res => {
this.list = res.data;
})

11
pig/chapter1/chapter1.vue

@ -16,7 +16,7 @@
class="bg-image"
:src="
showImg(
'/uploads/20250802/e2e3e00841d713937d938ae45835d016.png'
'/uploads/20250806/85e0256e5a5c8014c7ec2f321805fc8c.png'
)
"
:lazy-load="true"
@ -80,7 +80,7 @@
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/dee49f1aa510d85c368aafc889e24cc0.png')
showImg('/uploads/20250804/d2a7c31d03d3ade96ae6a9abefb78869.png')
"
mode="aspectFill"
></image>
@ -101,14 +101,21 @@
</view>
</swiper-item>
</swiper>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="4" />
<MusicControl />
</view>
</template>
<script>
import TitleHeader from "@/components/TitleHeader.vue";
import SideNav from "../components/SideNav.vue";
import MusicControl from "@/components/MusicControl.vue";
export default {
components: {
TitleHeader,
SideNav,
MusicControl
},
data() {
return {

8
pig/chapter2/chapter2.vue

@ -97,7 +97,7 @@
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/c25deec8a6e4f84c8229718312c6ff02.png')
showImg('/uploads/20250808/48c6045b781a8c2a2b8f87a9c79ee4f1.png')
"
mode="aspectFill"
></image>
@ -118,14 +118,20 @@
</view>
</swiper-item>
</swiper>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="5" />
<MusicControl></MusicControl>
</view>
</template>
<script>
import TitleHeader from "@/components/TitleHeader.vue";
import SideNav from "../components/SideNav.vue";
import MusicControl from "@/components/MusicControl.vue";
export default {
components: {
TitleHeader,
SideNav,MusicControl
},
data() {
return {

6
pig/chapter3/art.vue

@ -14,10 +14,16 @@
:src="showImg('/uploads/20250802/1f89c03f361dbcfe3f195f1cb14a92d3.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {

6
pig/chapter3/brave.vue

@ -14,11 +14,17 @@
:src="showImg('/uploads/20250802/aa1669fbcb9177b4be1c8eed12fb4de0.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {

9
pig/chapter3/chapter3.vue

@ -134,7 +134,7 @@
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/c21b01fea9610f8069a768f03a173b66.png')
showImg('/uploads/20250808/9dffa7a9ed0ca7c0a7135e1a28da8011.png')
"
mode="aspectFill"
></image>
@ -155,14 +155,21 @@
</view>
</swiper-item>
</swiper>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
<MusicControl></MusicControl>
</view>
</template>
<script>
import TitleHeader from "@/components/TitleHeader.vue";
import SideNav from "../components/SideNav.vue";
import MusicControl from "@/components/MusicControl.vue";
export default {
components: {
TitleHeader,
SideNav,
MusicControl
},
data() {
return {

6
pig/chapter3/humble.vue

@ -14,10 +14,16 @@
:src="showImg('/uploads/20250802/4acd9c894c2a464100ef21dae4d85652.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {

30
pig/chapter3/sacred.vue

@ -9,27 +9,31 @@
></image>
</view>
</view>
<image
class="tag-image"
:src="showImg('/uploads/20250802/590d1fc5594c8c2700eaf9e901af2cad.png')"
mode="aspectFill"
></image>
<image
class="tag-image"
:src="showImg('/uploads/20250802/590d1fc5594c8c2700eaf9e901af2cad.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {
}
return {};
},
methods: {
goBack() {
uni.navigateBack()
}
}
}
uni.navigateBack();
},
},
};
</script>
<style lang="scss" scoped>
@ -81,4 +85,4 @@ export default {
color: white;
line-height: 1.6;
}
</style>
</style>

6
pig/chapter3/smart.vue

@ -14,10 +14,16 @@
:src="showImg('/uploads/20250802/1459fab5f195fa3ed6b17be8591a592d.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {

30
pig/chapter3/stupid.vue

@ -9,26 +9,30 @@
></image>
</view>
</view>
<image
class="tag-image"
:src="showImg('/uploads/20250802/c3d19d8a0b35d6acbcfd0a9748806951.png')"
mode="aspectFill"
></image>
<image
class="tag-image"
:src="showImg('/uploads/20250802/c3d19d8a0b35d6acbcfd0a9748806951.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="6" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {
}
return {};
},
methods: {
goBack() {
uni.navigateBack()
}
}
}
uni.navigateBack();
},
},
};
</script>
<style lang="scss" scoped>
@ -80,4 +84,4 @@ export default {
color: white;
line-height: 1.6;
}
</style>
</style>

106
pig/chapter4/chapter4.vue

@ -16,7 +16,7 @@
class="bg-image"
:src="
showImg(
'/uploads/20250802/85bba0ce5a8113fe6331f335a4cfd7f7.png'
'/uploads/20250807/71e6ef3d1901198a9266c0ace04fe80c.png'
)
"
:lazy-load="true"
@ -48,7 +48,7 @@
}"
:src="
showImg(
'/uploads/20250802/70cb6f2efde536bdde781ae387529a5c.png'
'/uploads/20250804/6c06d6b668450c7837970e5f8d3ed0c7.gif'
)
"
:lazy-load="true"
@ -100,7 +100,7 @@
class="bg-image"
:src="
showImg(
'/uploads/20250802/23fc62e1cd91bc373dbf7eb9e741721e.png'
'/uploads/20250806/c936771f3c6289bfd8a3d0fa9d5e53fd.png'
)
"
:lazy-load="true"
@ -186,6 +186,20 @@
:lazy-load="true"
mode="widthFix"
></image>
<image
class="layer-img7"
:class="{
hidden: !animationStates[7],
'fade-in': animationStates[7],
}"
:src="
showImg(
'/uploads/20250806/b8aa4923d2994836bee0ebed5dc255a6.png'
)
"
:lazy-load="true"
mode="widthFix"
></image>
</view>
</template>
</view>
@ -233,6 +247,20 @@
:lazy-load="true"
mode="widthFix"
></image>
<image
class="layer-img7"
:class="{
hidden: !animationStates[7],
'fade-in': animationStates[7],
}"
:src="
showImg(
'/uploads/20250806/b8aa4923d2994836bee0ebed5dc255a6.png'
)
"
:lazy-load="true"
mode="widthFix"
></image>
</view>
</template>
</view>
@ -297,7 +325,7 @@
class="bg-image"
:src="
showImg(
'/uploads/20250802/c6cec7ca05b3804d0d26b701b40ff9d6.png'
'/uploads/20250808/40c24fb30246c84537a5667f52f36495.jpg'
)
"
:lazy-load="true"
@ -367,15 +395,53 @@
</template>
</view>
</swiper-item>
<swiper-item>
<view class="page-container">
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250808/04677ae870e7a21f7e1292a94ed4b35a.png')
"
mode="aspectFill"
></image>
</view>
</swiper-item>
<swiper-item>
<view class="page-container home-page">
<template>
<image
class="bg-image"
src="https://static.ticket.sz-trip.com/epicSoul/footers.png"
:lazy-load="true"
mode="aspectFill"
></image>
<image
class="qrCode-image"
src="https://static.ticket.sz-trip.com/epicSoul/qrCode.png"
:lazy-load="true"
mode="widthFix"
:show-menu-by-longpress="true"
></image>
</template>
</view>
</swiper-item>
</swiper>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="7" />
<MusicControl></MusicControl>
</view>
</template>
<script>
import TitleHeader from "@/components/TitleHeader.vue";
import SideNav from "../components/SideNav.vue";
import MusicControl from "@/components/MusicControl.vue";
export default {
components: {
TitleHeader,
SideNav,
MusicControl
},
data() {
return {
@ -495,15 +561,6 @@ export default {
margin-top: 50rpx;
}
.layer-img2 {
z-index: 2;
position: absolute;
bottom: 18%;
left: 0;
width: 100%;
height: 350rpx;
}
.content-layer {
margin: 130rpx 0;
width: 100%;
@ -526,7 +583,7 @@ export default {
height: 302rpx;
z-index: 2;
position: absolute;
top: 200rpx;
bottom: 0;
left: 35rpx;
}
@ -534,10 +591,19 @@ export default {
z-index: 2;
width: 530rpx;
height: 409rpx;
bottom: 130rpx;
bottom: 230rpx;
left: 91rpx;
position: absolute;
}
.layer-img7{
z-index: 2;
width: 530rpx;
bottom: 40rpx;
left: 91rpx;
position: absolute;
}
.layer-img5 {
z-index: 2;
@ -551,7 +617,7 @@ export default {
.layer-img6 {
z-index: 2;
position: absolute;
bottom: 163rpx;
bottom: 263rpx;
left: 95rpx;
width: 261rpx;
height: 268rpx;
@ -640,5 +706,13 @@ export default {
100% {
opacity: 1;
}
}.qrCode-image {
position: absolute;
left: 0;
right: 0;
bottom: 192rpx;
margin: 0 auto;
z-index: 2;
width: 30vw;
}
</style>

6
pig/chapter4/first.vue

@ -37,10 +37,16 @@
:src="showImg('/uploads/20250802/bc8c6d0f121669388d93ccf5494c7f47.png')"
mode="widthFix"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="7" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {};
},

6
pig/chapter4/fourth.vue

@ -37,10 +37,16 @@
:src="showImg('/uploads/20250802/a0c7c45de62ec0d5bd6163b30932e1e3.png')"
mode="widthFix"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="7" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {};
},

23
pig/chapter4/secBuy.vue

@ -26,7 +26,19 @@
:src="showImg(imgMap[type].title)"
mode="widthFix"
></image>
<image
v-if="type"
style="position: absolute; z-index: 9; bottom: 340rpx"
:style="{
width: '510rpx',
left: '120rpx',
}"
:src="showImg('/uploads/20250806/b8aa4923d2994836bee0ebed5dc255a6.png')"
mode="widthFix"
></image>
<image
@click="toBuy"
style="
position: absolute;
z-index: 9;
@ -51,10 +63,16 @@
:src="showImg('/uploads/20250802/b458d05790345ec9ae9a3bea23495b46.png')"
mode="aspectFill"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="7" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {
type: 1,
@ -94,6 +112,11 @@ export default {
goBack() {
uni.navigateBack();
},
toBuy(){
uni.navigateTo({
url:'/subPackages/techan/detail?id=38'
})
},
goBackChange() {
uni.navigateBack({
delta: 2,

6
pig/chapter4/second.vue

@ -37,10 +37,16 @@
:src="showImg('/uploads/20250802/92779fd82f7c0c0358ca453fd3071e7b.png')"
mode="widthFix"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="7" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {};
},

6
pig/chapter4/third.vue

@ -37,10 +37,16 @@
:src="showImg('/uploads/20250802/bc5905a9ddebeb3833429c95b9b0d967.png')"
mode="widthFix"
></image>
<!-- 侧边导航组件 -->
<SideNav :currentIndex="7" />
</view>
</template>
<script>
import SideNav from "../components/SideNav.vue";
export default {
components: {
SideNav,
},
data() {
return {};
},

257
pig/components/SideNav.vue

@ -0,0 +1,257 @@
<template>
<view>
<!-- 遮罩层 -->
<view class="overlay" v-if="showMenu" @click="closeMenu"></view>
<!-- 固定导航按钮 -->
<view class="fixed-nav" :class="{ hidden: showMenu }" @click="showNavMenu">
<image
class="nav-icon"
:class="{ rotated: iconRotated, 'bounce-back': iconBounceBack }"
src="https://static.ticket.sz-trip.com/epicSoul/taozi/nav-icon.png"
mode="aspectFill"
></image>
</view>
<!-- 侧边导航菜单 -->
<view class="nav-menu" :class="{ show: showMenu }">
<view
class="nav-item"
:class="{ 'item-active': isItemActive(item) }"
v-for="item in menuItems"
:key="item.targetIndex"
@click="() => jumpToPage(item.targetIndex)"
>
<view v-if="item.text.includes('#Chapter')" class="chapter-text">
<text class="chapter-title">#Chapter</text>
<text :class="{ active: isItemActive(item) }" class="chapter-number">
{{ item.text.replace("#Chapter", "") }}
</text>
</view>
<text v-else :class="{ active: isItemActive(item) }">{{
item.text
}}</text>
</view>
</view>
</view>
</template>
<script>
export default {
name: "SideNav",
props: {
currentIndex: {
type: Number,
default: 0,
},
},
data() {
return {
showMenu: false,
iconRotated: false,
iconBounceBack: false,
menuItems: [
{
text: "序章",
targetIndex: 0,
path: "/pig/home/home",
},
{
text: "第一章猪的起源",
targetIndex: 4,
path: "/pig/chapter1/chapter1",
},
{
text: "第二章驯为良伴",
targetIndex: 5,
path: "/pig/chapter2/chapter2",
},
{
text: "第三章身份之谜",
targetIndex: 6,
path: "/pig/chapter3/chapter3",
},
{
text: "第四章 东方之猪",
targetIndex: 7,
path: "/pig/chapter4/chapter4",
},
{
text: "点击购买",
targetIndex: 8,
path: "/subPackages/techan/detail?id=38",
},
],
};
},
methods: {
showNavMenu() {
this.iconRotated = true;
setTimeout(() => {
this.showMenu = true;
}, 300);
},
closeMenu() {
this.showMenu = false;
setTimeout(() => {
this.iconBounceBack = true;
this.iconRotated = false;
setTimeout(() => {
this.iconBounceBack = false;
}, 500);
}, 300);
},
jumpToPage(targetIndex) {
const menuItem = this.menuItems.find(
(item) => item.targetIndex === targetIndex
);
if (menuItem) {
// path
if (menuItem.path) {
uni.navigateTo({
url:
menuItem.path +
(targetIndex > 0 ? `?targetIndex=${targetIndex}` : ""),
});
} else {
//
this.$emit("navigate", targetIndex);
}
}
this.closeMenu();
},
isItemActive(item) {
return this.currentIndex === item.targetIndex;
},
},
};
</script>
<style lang="scss" scoped>
.overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.3);
z-index: 10;
}
.fixed-nav {
width: 80rpx;
height: 80rpx;
background-color: rgb(0 0 0 / 0.7);
border-radius: 10rpx 0 0 10rpx;
position: fixed;
right: 0;
top: 0;
bottom: 0;
margin: auto 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 9;
transition: transform 0.3s ease, opacity 0.3s ease;
}
.fixed-nav.hidden {
transform: translateX(100%);
opacity: 0;
pointer-events: none;
}
.nav-icon {
width: 35rpx;
height: 35rpx;
transition: transform 0.3s ease;
}
.nav-icon.rotated {
transform: rotate(180deg);
}
.nav-icon.bounce-back {
animation: bounceRotation 0.5s ease;
}
@keyframes bounceRotation {
0% {
transform: rotate(180deg);
}
50% {
transform: rotate(-20deg);
}
75% {
transform: rotate(10deg);
}
100% {
transform: rotate(0deg);
}
}
.nav-menu {
position: fixed;
top: 50%;
right: 0;
transform: translate(100%, -50%);
z-index: 11;
background-color: rgba(255, 255, 255, 0.95);
border-radius: 16rpx 0 0 16rpx;
box-shadow: -4px 0 15px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.nav-menu.show {
transform: translate(0, -50%);
}
.nav-item {
padding: 20rpx;
text-align: center;
text {
color: #333;
opacity: 0.7;
font-size: 28rpx;
}
}
.item-active {
background-color: rgba(0, 0, 0, 0.1);
}
.nav-item .active {
color: #333;
opacity: 1;
}
.chapter-text {
display: flex;
flex-direction: column;
align-items: center;
line-height: 1.3;
}
.chapter-title {
color: #333;
opacity: 0.7;
font-size: 24rpx;
}
.chapter-number {
color: #333;
opacity: 0.7;
font-size: 28rpx;
margin-top: 8rpx;
}
.item-active .chapter-title,
.item-active .chapter-number.active {
opacity: 1;
}
</style>

169
pig/home/home.vue

@ -16,7 +16,7 @@
class="bg-image"
:src="
showImg(
'/uploads/20250801/fe2e7779e0c438ea36308390cba55ef1.png'
'/uploads/20250804/1830fb1be82f44d6405d35cebd70b78a.gif'
)
"
:lazy-load="true"
@ -31,7 +31,7 @@
}"
:src="
showImg(
'/uploads/20250801/4059157496ea8a1ce3ef9610a63858a7.png'
'/uploads/20250806/a0663a49a6037da67fa5cd897311765e.png'
)
"
:lazy-load="true"
@ -43,7 +43,7 @@
</view>
</swiper-item>
<swiper-item>
<view class="page-container">
<view class="page-container" style="background-color: #efefef">
<template v-if="loadedPages[1]">
<image
v-show="shouldShowContent(1)"
@ -54,7 +54,7 @@
)
"
:lazy-load="true"
mode="aspectFill"
mode="aspectFit"
></image>
</template>
</view>
@ -63,29 +63,12 @@
<view class="page-container">
<template v-if="loadedPages[2]">
<image
v-show="shouldShowContent(2)"
style="
position: absolute;
width: 32.67%;
height: 4.2%;
top: 33.73%;
left: 16%;
z-index: 9999;
"
:src="
showImg(
'/uploads/20250801/01f02fc938da66f4da5019da6f98a664.png'
)
"
:lazy-load="true"
mode="aspectFill"
></image>
<image
@click="nextIndex"
v-show="shouldShowContent(2)"
class="bg-image"
:src="
showImg(
'/uploads/20250801/d4efcdff86a15f7feb28d3662ee055ca.png'
'/uploads/20250804/5e9bdcff219f92fd6bc33444d670b807.png'
)
"
:lazy-load="true"
@ -115,14 +98,44 @@
style="position: absolute; top: 375rpx; left: 100rpx"
>
<image
style="width: 286rpx"
style="width: 590rpx"
:src="
showImg(
'/uploads/20250804/071658650e402f55ac2cbf87cf7ce0e5.png'
)
"
mode="widthFix"
@click="showPopupImage(1)"
></image>
<image
style="width: 590rpx; margin-top: 175rpx"
:src="
showImg(
'/uploads/20250804/418af80ee3c09def1768da53b5c8760a.png'
)
"
mode="widthFix"
@click="showPopupImage(2)"
></image>
<image
style="width: 590rpx; margin-top: 160rpx"
:src="
showImg(
'/uploads/20250804/c82764802f8022eb14d40d222a29fcd3.png'
)
"
mode="widthFix"
@click="showPopupImage(3)"
></image>
<image
style="width: 590rpx; margin-top: 160rpx"
:src="
showImg(
'/uploads/20250802/4eaea258b31e3d7a62a9b2511465261f.png'
'/uploads/20250804/da9b9a28af4dcaac683d9a5af53a7667.png'
)
"
mode="widthFix"
@click="showPopupImage"
@click="showPopupImage(4)"
></image>
</view>
</view>
@ -159,7 +172,7 @@
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/dee49f1aa510d85c368aafc889e24cc0.png')
showImg('/uploads/20250804/d2a7c31d03d3ade96ae6a9abefb78869.png')
"
mode="aspectFill"
></image>
@ -184,7 +197,7 @@
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/c25deec8a6e4f84c8229718312c6ff02.png')
showImg('/uploads/20250808/48c6045b781a8c2a2b8f87a9c79ee4f1.png')
"
mode="aspectFill"
></image>
@ -209,7 +222,7 @@
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/c21b01fea9610f8069a768f03a173b66.png')
showImg('/uploads/20250808/9dffa7a9ed0ca7c0a7135e1a28da8011.png')
"
mode="aspectFill"
></image>
@ -229,37 +242,6 @@
></image>
</view>
</swiper-item>
<swiper-item>
<view class="page-container">
<image
style="width: 100%; height: 100%"
:src="
showImg('/uploads/20250802/bb670192ddcc2bf81aad4eb030ca6cbf.png')
"
mode="aspectFill"
></image>
</view>
</swiper-item>
<swiper-item>
<view class="page-container home-page">
<template>
<image
class="bg-image"
src="https://static.ticket.sz-trip.com/epicSoul/footers.png"
:lazy-load="true"
mode="aspectFill"
></image>
<image
class="qrCode-image"
src="https://static.ticket.sz-trip.com/epicSoul/qrCode.png"
:lazy-load="true"
mode="widthFix"
:show-menu-by-longpress="true"
></image>
</template>
</view>
</swiper-item>
</swiper>
<view class="overlay" v-if="showMenu" @click="closeMenu"></view>
<view class="fixed-nav" :class="{ hidden: showMenu }" @click="showNavMenu">
@ -288,6 +270,15 @@
item.text
}}</text>
</view>
<view
class="nav-item"
@click="toBuy"
>
<text >
点击购买
</text>
</view>
</view>
<!-- <BuyPeaches /> -->
<!-- <BackgroundMusic /> -->
@ -302,6 +293,7 @@
<view class="image-popup-container" @click.stop>
<image
class="popup-image"
v-if="currentTagImg == 1"
:src="
showImg('/uploads/20250802/a2245bbeba155410fd765439a18774f7.png')
"
@ -309,6 +301,7 @@
></image>
<image
class="popup-image"
v-if="currentTagImg == 2"
:src="
showImg('/uploads/20250802/6a740ec7fc10dd0f6ddcc65faca3b3c8.png')
"
@ -316,12 +309,14 @@
></image>
<image
class="popup-image"
v-if="currentTagImg == 3"
:src="
showImg('/uploads/20250802/4e89bbb52de311cfae7ef1b59ee2f2c8.png')
"
mode="widthFix"
></image>
<image
v-if="currentTagImg == 4"
class="popup-image"
:src="
showImg('/uploads/20250802/76b84f3dd91bfebaec35aadc086410b8.png')
@ -353,6 +348,7 @@ export default {
},
data() {
return {
currentTagImg: 1,
currentIndex: 0,
loadedPages: {
0: false,
@ -387,23 +383,23 @@ export default {
showImagePopup: false,
menuItems: [
{
text: "Intro序曲",
text: "序章",
targetIndex: 0,
},
{
text: "#Chapter 壹",
text: "第一章猪的起源",
targetIndex: 4,
},
{
text: "#Chapter 贰",
text: "第二章驯为良伴",
targetIndex: 5,
},
{
text: "#Chapter 叁",
text: "第三章身份之谜",
targetIndex: 6,
},
{
text: "#Chapter 肆",
text: "第四章 东方之猪",
targetIndex: 7,
},
// {
@ -439,6 +435,10 @@ export default {
},
},
methods: {
nextIndex() {
console.log("---");
this.currentIndex = this.currentIndex + 1;
},
handleSwiperChange(e) {
const newIndex = e.detail.current;
this.currentIndex = newIndex;
@ -464,6 +464,11 @@ export default {
this.showMenu = true;
}, 300);
},
toBuy(){
uni.navigateTo({
url:'/subPackages/techan/detail?id=38'
})
},
closeMenu() {
this.showMenu = false;
setTimeout(() => {
@ -486,8 +491,9 @@ export default {
isItemActive(item) {
return this.currentIndex === item.targetIndex;
},
showPopupImage() {
showPopupImage(index) {
this.showImagePopup = true;
this.currentTagImg = index;
},
hidePopupImage() {
this.showImagePopup = false;
@ -495,11 +501,8 @@ export default {
},
mounted() {
this.titleHeight = uni.getStorageSync("titleHeight");
console.log(this.titleHeight);
const app = getApp();
app.updateMusicSrc(
"https://static.ticket.sz-trip.com/epicSoul/taozi/bg.m4a"
);
app.updateMusicSrc("https://static.ticket.sz-trip.com/epicSoul/bgm.mp3");
app.initBackgroundMusic(); //
uni.$bgMusic.play(); //
for (let i = 0; i <= Math.min(1 + this.preloadBuffer, 6); i++) {
@ -535,19 +538,19 @@ export default {
// #ifdef MP-WEIXIN
onShareAppMessage() {
return {
title: "三个桃子·时间里的约定|「Epic Soul」阅读体 issue01",
title: "猪的美学进化史|「Epic Soul」阅读体 issue04",
mpId: "wx8954209bb3ad489e",
path: "/taozi/home/home",
path: "/pig/home/home",
imageUrl:
"https://static.ticket.sz-trip.com/epicSoul/taozi/home/taoziShare.png",
"https://epic.js-dyyj.com/uploads/20250805/4a90a8f7de19b0c465ff30e1b8e0c35c.png",
};
},
onShareTimeline() {
return {
title: "三个桃子·时间里的约定|「Epic Soul」阅读体 issue01",
query: "",
title: "猪的美学进化史|「Epic Soul」阅读体 issue04",
path: "/pig/home/home",
imageUrl:
"https://static.ticket.sz-trip.com/epicSoul/taozi/home/taoziShare.png",
"https://epic.js-dyyj.com/uploads/20250805/4a90a8f7de19b0c465ff30e1b8e0c35c.png",
};
},
// #endif
@ -699,7 +702,7 @@ export default {
}
.layer-img {
width: 541rpx;
width: 650rpx;
height: 100%;
}
@ -786,7 +789,7 @@ export default {
right: 0;
transform: translate(100%, -50%);
z-index: 11;
background-color: rgb(0 0 0 / 0.5);
background-color: rgba(255, 255, 255, 0.95);
border-radius: 16rpx 0 0 16rpx;
box-shadow: -4px 0 15px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
@ -801,18 +804,18 @@ export default {
text-align: center;
text {
color: #fff;
color: #333;
opacity: 0.7;
font-size: 28rpx;
}
}
.item-active {
background-color: rgba(0, 0, 0, 0.718);
background-color: rgba(0, 0, 0, 0.1);
}
.nav-item .active {
color: #fff;
color: #333;
opacity: 1;
}
@ -824,13 +827,13 @@ export default {
}
.chapter-title {
color: #fff;
color: #333;
opacity: 0.7;
font-size: 24rpx;
}
.chapter-number {
color: #fff;
color: #333;
opacity: 0.7;
font-size: 28rpx;
margin-top: 8rpx;

Loading…
Cancel
Save