<template>
|
|
<view class="page">
|
|
<navbar/>
|
|
|
|
<view class="content">
|
|
<!-- 顶部横幅广告 -->
|
|
<view class="banner">
|
|
<image src="https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain" mode="widthFix"></image>
|
|
</view>
|
|
|
|
<!-- 通知区域 -->
|
|
<view class="notice">
|
|
<view class="notice-icon">
|
|
<image src="https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain" mode="widthFix"></image>
|
|
</view>
|
|
<view class="notice-text">
|
|
2025年2月平台福利活动截稿作品公示
|
|
</view>
|
|
<view class="notice-more">
|
|
<uv-icon name="arrow-right" color="#999" size="24rpx"></uv-icon>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 最近更新 -->
|
|
|
|
<view class="section">
|
|
<view class="section-header">
|
|
<text class="section-title">最近更新</text>
|
|
|
|
</view>
|
|
<view class="recommend-list">
|
|
<view class="recommend-item" v-for="(item, index) in recommendList" :key="index" @click="$utils.navigateTo('/pages_order/product/productDetail?id='+index)">
|
|
<image class="recommend-cover" :src="item.cover" mode="aspectFill"></image>
|
|
<view class="recommend-title">{{item.title}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 精品推荐 -->
|
|
<view class="section1">
|
|
<view class="section-header">
|
|
<text class="section-title">精品推荐</text>
|
|
<text class="section-more" @click="$utils.navigateTo('/pages/index/category')">查看更多 ></text>
|
|
</view>
|
|
<view class="novel-list">
|
|
<view class="novel-item" v-for="(item, index) in 5" :key="index" @click="$utils.navigateTo('/pages_order/product/productDetail?id='+index)">
|
|
<image class="novel-cover" :src="novelCovers[index]" mode="aspectFill"></image>
|
|
<view class="novel-info">
|
|
<view class="novel-title">{{novelTitles[index]}}</view>
|
|
<view class="novel-desc">{{novelDescs[index]}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
|
|
<PrivacyAgreementPoup/>
|
|
|
|
<tabber select="home"/>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import PrivacyAgreementPoup from '@/components/config/PrivacyAgreementPoup.vue'
|
|
import Position from '@/utils/position.js'
|
|
import tabber from '@/components/base/tabbar.vue'
|
|
import productList from '@/components/user/productList.vue'
|
|
import { mapGetters } from 'vuex'
|
|
// import selectArea from '../../components/selectArea.vue';
|
|
export default {
|
|
components : {
|
|
tabber,
|
|
productList,
|
|
PrivacyAgreementPoup,
|
|
},
|
|
data() {
|
|
return {
|
|
area: '长沙',
|
|
text : '长沙市刘师傅在服务过程中客户投诉"服务过程中有不文明的行为".....',
|
|
queryParams: {
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
title: ''
|
|
},
|
|
bannerList: [
|
|
{
|
|
url: 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
|
|
},
|
|
{
|
|
url: 'https://cdn.uviewui.com/uview/swiper/swiper2.png',
|
|
},
|
|
{
|
|
url: 'https://cdn.uviewui.com/uview/swiper/swiper3.png',
|
|
},
|
|
],
|
|
productList: [],
|
|
// 精品推荐
|
|
novelCovers: [
|
|
'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain',
|
|
'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain',
|
|
'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain',
|
|
'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain',
|
|
'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain'
|
|
],
|
|
// 小说标题数据
|
|
novelTitles: [
|
|
'我是半妖',
|
|
'兽王进化',
|
|
'魔法少女纯爷们',
|
|
'我是一条小青龙',
|
|
'女帝归来'
|
|
],
|
|
// 小说描述数据
|
|
novelDescs: [
|
|
'都市玄幻小说,主角获得半妖化能力,通过吸收妖气不断变强...',
|
|
'一场意外让主角获得兽王血脉,开始了进化之路...',
|
|
'一个普通男孩意外获得魔法少女的力量,开始了奇妙冒险...',
|
|
'重生为一条小青龙,主角在修仙世界中成长的故事...',
|
|
'曾经的女帝重生归来,开始了复仇之路...'
|
|
],
|
|
// 最近更新
|
|
recommendList: [
|
|
{
|
|
title: '重生后,我给妹妹假装动漫女主角',
|
|
cover: 'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain'
|
|
},
|
|
{
|
|
title: '我在亮剑提前帮助',
|
|
cover: 'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain'
|
|
},
|
|
{
|
|
title: '斗罗:开局魂师测试99级',
|
|
cover: 'https://tse4-mm.cn.bing.net/th/id/OIP-C.iUyxJ_fxLjjX3kEBjteXWwAAAA?rs=1&pid=ImgDetMain'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
computed : {
|
|
...mapGetters(['userShop']),
|
|
},
|
|
methods: {
|
|
//显示选择地区
|
|
showSelectArea() {
|
|
// this.$refs.selectArea.open()
|
|
},
|
|
//搜索地址
|
|
searchAddress() {
|
|
Position.getLocation(res => {
|
|
Position.selectAddress(res.longitude, res.latitude, success => {
|
|
let address = this.extractProvinceAndCity(success)
|
|
this.queryParams.title = address.city
|
|
})
|
|
})
|
|
},
|
|
//提取用户选择的地址信息(省市县信息)
|
|
extractProvinceAndCity(res) { //提取用户选择的地址信息(省市)
|
|
if (!res.address && res.name) { //用户直接选择城市的逻辑
|
|
return {
|
|
province: '',
|
|
city: res.name
|
|
};
|
|
}
|
|
|
|
if (res.address) { //用户选择了详细地址,要从详细地址中提取出省市县信息
|
|
// 使用正则表达式匹配省市县
|
|
const regex = /(?<province>[\u4e00-\u9fa5]+?省)(?<city>[\u4e00-\u9fa5]+?(?:市|自治州|盟|地区))/;
|
|
const match = res.address.match(regex);
|
|
if (match) { // 如果匹配成功,则返回省和市的信息
|
|
return {
|
|
province: match.groups.province,
|
|
city: match.groups.city
|
|
};
|
|
}
|
|
}
|
|
|
|
return { //用户没选择地址就点了确定按钮
|
|
province: '',
|
|
city: ''
|
|
}
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.page {
|
|
background-color: #f5f5f5;
|
|
// min-height: 100vh;
|
|
|
|
.content {
|
|
padding-bottom: 75rpx;
|
|
}
|
|
|
|
.banner {
|
|
padding: 0;
|
|
|
|
|
|
image {
|
|
width: 100%;
|
|
height: 250rpx;
|
|
border-radius: 0;
|
|
}
|
|
}
|
|
|
|
.notice {
|
|
display: flex;
|
|
align-items: center;
|
|
background-color: #fff;
|
|
margin: 0;
|
|
padding: 20rpx 30rpx;
|
|
border-radius: 0;
|
|
|
|
.notice-icon {
|
|
margin-right: 20rpx;
|
|
|
|
image {
|
|
width: 80rpx;
|
|
height: 80rpx;
|
|
}
|
|
}
|
|
|
|
.notice-text {
|
|
flex: 1;
|
|
font-size: 28rpx;
|
|
color: #333;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.notice-more {
|
|
margin-left: 20rpx;
|
|
}
|
|
}
|
|
|
|
.section {
|
|
background-color: #fff;
|
|
margin: 30rpx 0 0 0;
|
|
padding: 10rpx 30rpx;
|
|
border-radius: 0;
|
|
|
|
.section-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 20rpx;
|
|
|
|
.section-title {
|
|
font-size: 32rpx;
|
|
font-weight: bold;
|
|
color: #333;
|
|
}
|
|
|
|
.section-more {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
}
|
|
}
|
|
|
|
.novel-list {
|
|
.novel-item {
|
|
display: flex;
|
|
padding: 20rpx 0;
|
|
border-bottom: 1px solid #eee;
|
|
|
|
&:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.novel-cover {
|
|
width: 160rpx;
|
|
height: 200rpx;
|
|
border-radius: 8rpx;
|
|
margin-right: 20rpx;
|
|
}
|
|
|
|
.novel-info {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
|
|
.novel-title {
|
|
font-size: 28rpx;
|
|
font-weight: bold;
|
|
color: #333;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
|
|
.novel-desc {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
line-height: 1.5;
|
|
display: -webkit-box;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 3;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.recommend-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
|
|
.recommend-item {
|
|
width: 30%;
|
|
margin-bottom: 20rpx;
|
|
|
|
.recommend-cover {
|
|
width: 100%;
|
|
height: 200rpx;
|
|
border-radius: 8rpx;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
|
|
.recommend-title {
|
|
font-size: 24rpx;
|
|
color: #333;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.section1 {
|
|
background-color: #fff;
|
|
margin: 0rpx 0 0 0;
|
|
padding: 20rpx 30rpx;
|
|
border-radius: 0;
|
|
|
|
.section-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 20rpx;
|
|
|
|
.section-title {
|
|
font-size: 32rpx;
|
|
font-weight: bold;
|
|
color: #333;
|
|
}
|
|
|
|
.section-more {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
}
|
|
}
|
|
|
|
.novel-list {
|
|
.novel-item {
|
|
display: flex;
|
|
padding: 20rpx 0;
|
|
border-bottom: 1px solid #eee;
|
|
|
|
&:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.novel-cover {
|
|
width: 160rpx;
|
|
height: 200rpx;
|
|
border-radius: 8rpx;
|
|
margin-right: 20rpx;
|
|
}
|
|
|
|
.novel-info {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
|
|
.novel-title {
|
|
font-size: 28rpx;
|
|
font-weight: bold;
|
|
color: #333;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
|
|
.novel-desc {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
line-height: 1.5;
|
|
display: -webkit-box;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 3;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.recommend-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
|
|
.recommend-item {
|
|
width: 30%;
|
|
margin-bottom: 20rpx;
|
|
|
|
.recommend-cover {
|
|
width: 100%;
|
|
height: 200rpx;
|
|
border-radius: 8rpx;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
|
|
.recommend-title {
|
|
font-size: 24rpx;
|
|
color: #333;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|