|
|
|
// ... existing code ...
|
|
|
|
<template>
|
|
|
|
<view class="content">
|
|
|
|
<!-- 顶部导航 -->
|
|
|
|
<!-- <view class="top-nav">
|
|
|
|
<view class="back-btn" @click="goBack">返回</view>
|
|
|
|
<view class="add-book-btn" @click="addToBookshelf">+ 加入书架</view>
|
|
|
|
</view> -->
|
|
|
|
<BackButton />
|
|
|
|
<!-- 封面图 -->
|
|
|
|
<image class="cover-image" :src="showImg('/uploads/20250919/c4c909e3c543ddb738e56462fd047c59.png')"
|
|
|
|
mode="aspectFill"></image>
|
|
|
|
|
|
|
|
<!-- 小说信息 -->
|
|
|
|
<view class="book-info">
|
|
|
|
<text class="title">{{ bookTitle }}</text>
|
|
|
|
<view class="info-row">
|
|
|
|
<text class="info-text">{{ updateInfo }} | 字数: {{ wordCount }}万字</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 更新进度 -->
|
|
|
|
<view class="progress-row">
|
|
|
|
<text class="progress-label">更新进度:</text>
|
|
|
|
<text class="progress-text">{{ progressText }}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 分类标签 -->
|
|
|
|
<view class="tags-container">
|
|
|
|
<view class="tag-item" v-for="tag in tags" :key="tag">{{ tag }}</view>
|
|
|
|
</view>
|
|
|
|
<view class="line">
|
|
|
|
|
|
|
|
</view>
|
|
|
|
<!-- 简介 -->
|
|
|
|
<view class="intro-container">
|
|
|
|
<text class="intro-text">{{ intro }}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 按钮组 -->
|
|
|
|
<view class="button-group">
|
|
|
|
<view class="read-btn" @click="startReading">
|
|
|
|
<text class="btn-icon">📖</text>
|
|
|
|
<text class="btn-text">开始阅读</text>
|
|
|
|
</view>
|
|
|
|
<view class="read-btn" @click="playAudio">
|
|
|
|
<text class="btn-icon">🎧</text>
|
|
|
|
<text class="btn-text">点击播放</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
bookTitle: '《园门修真传》',
|
|
|
|
updateInfo: '1天前更新',
|
|
|
|
wordCount: '20',
|
|
|
|
progressText: '第八十九章(未完结)',
|
|
|
|
tags: ['穿越玄幻', '修真进阶', '古典园林', '热血爽文'],
|
|
|
|
intro: '张锁仙意外穿越修仙世界,凭借着自己的扫地圣体本以为会在宗门大开杀戒,没想到竟被扔到山门做个杂役弟子?从此过上了钓鱼种田的不被卷生活。可偏偏宗门大会要拉他一个没有灵力的人上场看笑话?'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onLoad() {
|
|
|
|
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
goBack() {
|
|
|
|
uni.navigateBack();
|
|
|
|
},
|
|
|
|
addToBookshelf() {
|
|
|
|
uni.showToast({
|
|
|
|
title: '已加入书架',
|
|
|
|
icon: 'success'
|
|
|
|
});
|
|
|
|
},
|
|
|
|
startReading() {
|
|
|
|
uni.navigateTo({
|
|
|
|
url: '/subPackages/other/read'
|
|
|
|
});
|
|
|
|
},
|
|
|
|
playAudio() {
|
|
|
|
uni.navigateTo({
|
|
|
|
url: '/subPackages/other/novelCatalog'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.content {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
padding: 20rpx;
|
|
|
|
background-color: #EAD2AE;
|
|
|
|
min-height: 100vh;
|
|
|
|
}
|
|
|
|
|
|
|
|
.top-nav {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
|
|
|
padding: 20rpx 30rpx;
|
|
|
|
position: relative;
|
|
|
|
z-index: 10;
|
|
|
|
background-color: #ffffff;
|
|
|
|
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
|
|
|
|
}
|
|
|
|
|
|
|
|
.back-btn {
|
|
|
|
font-size: 32rpx;
|
|
|
|
color: #333;
|
|
|
|
}
|
|
|
|
|
|
|
|
.add-book-btn {
|
|
|
|
font-size: 28rpx;
|
|
|
|
color: #e64340;
|
|
|
|
background-color: #fff;
|
|
|
|
border: 1rpx solid #e64340;
|
|
|
|
border-radius: 20rpx;
|
|
|
|
padding: 8rpx 16rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.cover-image {
|
|
|
|
width: 300rpx;
|
|
|
|
height: 400rpx;
|
|
|
|
margin: 30rpx auto;
|
|
|
|
border-radius: 16rpx;
|
|
|
|
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
|
|
|
|
}
|
|
|
|
|
|
|
|
.book-info {
|
|
|
|
width: 100%;
|
|
|
|
text-align: center;
|
|
|
|
padding: 20rpx 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.title {
|
|
|
|
font-size: 48rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
color: #333;
|
|
|
|
line-height: 1.4;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-row {
|
|
|
|
font-size: 28rpx;
|
|
|
|
color: #666;
|
|
|
|
margin: 10rpx 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.progress-row {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
font-size: 28rpx;
|
|
|
|
color: #999;
|
|
|
|
margin-top: 10rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.progress-label {
|
|
|
|
margin-right: 10rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.progress-text {
|
|
|
|
color: #333;
|
|
|
|
}
|
|
|
|
|
|
|
|
.tags-container {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
justify-content: center;
|
|
|
|
gap: 15rpx;
|
|
|
|
margin: 30rpx 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.tag-item {
|
|
|
|
background-color: #76352D;
|
|
|
|
color: #fff;
|
|
|
|
padding: 6rpx 12rpx;
|
|
|
|
border-radius: 12rpx;
|
|
|
|
font-size: 24rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.line {
|
|
|
|
width: 100%;
|
|
|
|
height: 1rpx;
|
|
|
|
/* border: 1rpx solid #d3d3d3; */
|
|
|
|
background: #d3d3d3;
|
|
|
|
margin: 20rpx 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.intro-container {
|
|
|
|
width: 100%;
|
|
|
|
padding: 20rpx 40rpx;
|
|
|
|
/* background-color: #ffffff; */
|
|
|
|
border-radius: 16rpx;
|
|
|
|
/* box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.1); */
|
|
|
|
margin-bottom: 40rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.intro-text {
|
|
|
|
font-size: 22rpx;
|
|
|
|
color: #333;
|
|
|
|
line-height: 1.8;
|
|
|
|
text-align: left;
|
|
|
|
}
|
|
|
|
|
|
|
|
.button-group {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-around;
|
|
|
|
gap: 30rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.read-btn,
|
|
|
|
.play-btn {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 300rpx;
|
|
|
|
height: 80rpx;
|
|
|
|
border-radius: 40rpx;
|
|
|
|
font-size: 32rpx;
|
|
|
|
color: #333;
|
|
|
|
background-color: #ffffff;
|
|
|
|
border: 1rpx solid #ddd;
|
|
|
|
}
|
|
|
|
|
|
|
|
.read-btn {
|
|
|
|
border-color: #895A4E;
|
|
|
|
color: #895A4E;
|
|
|
|
}
|
|
|
|
|
|
|
|
.play-btn {
|
|
|
|
border-color: #888;
|
|
|
|
color: #888;
|
|
|
|
}
|
|
|
|
|
|
|
|
.btn-icon {
|
|
|
|
font-size: 36rpx;
|
|
|
|
margin-right: 10rpx;
|
|
|
|
}
|
|
|
|
</style>
|