You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
4.8 KiB

// ... 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 />
<!-- 封面图 -->
1 month ago
<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;
1 month ago
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 {
1 month ago
border-color: #895A4E;
color: #895A4E;
}
.play-btn {
border-color: #888;
color: #888;
}
.btn-icon {
font-size: 36rpx;
margin-right: 10rpx;
}
</style>