Files
MER-2.2_2601/mer_uniapp/pages/discover_index/index.vue
2026-03-08 20:07:52 +08:00

1082 lines
29 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view :data-theme="theme" class="discover_index">
<view class="page_con">
<view class="discover-header bg--w111-fff relative z-999">
<!-- #ifdef APP || MP -->
<view class="sys-head" :style="{ height: sysHeight+'px' }"></view>
<!-- #endif -->
<view class="discover-navTab acea-row row-middle" :style="[headerBoxStyle]">
<image @click="goUser" class="avatar"
:src="userInfo.avatar ? userInfo.avatar : urlDomain+'crmebimage/presets/morenT.png'">
</image>
<view class="acea-row row-center-wrapper" :style="[textBoxStyle]">
<view :class="tabActive == 0 ? 'on' : ''" class="nav-item"
@click="tabActive=0;showCateDrawer = false">关注</view>
<view :class="tabActive == 1 ? 'on' : ''" class="nav-item" @click="tabActive=1;">发现</view>
<view style="width: 32rpx;">
<navigator v-show="tabActive == 1" url="/pages/discover/discover_search_list/index"
hover-class="none" class="search">
<text class="iconfont icon-ic_search"></text>
</navigator>
</view>
</view>
<!-- #ifndef MP -->
<view style="width: 32rpx;"></view>
<!-- #endif -->
</view>
<!-- 话题分类 -->
<view class="longTab" scroll-y enhanced>
<view class="flex-y-center" :class="tabActive == 1?'h96':'h36'">
<scroll-view v-if="tabActive == 1" scroll-x="true" style="white-space: nowrap; display: flex;"
scroll-with-animation class="menu" :scroll-left="tabLeft" :show-scrollbar="false">
<view class="longItem" :data-index="index" :class="index === tabClick ? 'click' : ''"
v-for="(item, index) in categoryList" :key="index" :id="'id' + index"
@click.stop="selectMenu(item, index, true)">
<text>{{ item.name }}</text>
</view>
</scroll-view>
<view v-show="tabActive == 1" class="w-76 flex-center topic-box"
@tap="showCateDrawer = !showCateDrawer">
<text class="iconfont"
:class="!showCateDrawer?'icon-ic_downarrow':'icon-ic_uparrow'"></text>
</view>
</view>
</view>
</view>
<!-- 话题分类下拉 -->
<view class="fixed-lt w-full bg--w111-fff rd-b-24rpx z-100 pt-22" v-if="showCateDrawer"
:style="{top: listMarTop + 'px'}">
<view class="w-full pr-20 pb-30 pl-30">
<view class="flex flex-wrap">
<view class="h-58 bg--w111-f5f5f5 rd-29rpx px-24 flex-center fs-24 mr-14 mb-28"
v-for="(item,index) in categoryList" :key="index"
:class="{'active-topic': index === tabClick}" @tap="selectMenu(item, index)">
{{item.name}}
</view>
</view>
</view>
</view>
<view class="mask z-80" v-if="showCateDrawer" @tap="()=>{showCateDrawer = false}"></view>
<view class="discover-box">
<!-- 发现 -->
<scroll-view scroll-y="true" @scroll="followScroll">
<view class="tab-cont" id="main">
<!-- 发现 -->
<view class="main" v-if="tabActive === 1">
<swiper :interval="interval" indicator-color="rgba(255,255,255,0.6)"
:current="swiperCurrent" @change="swiperChange" :style="'height:'+swiperHeight+'px'">
<block v-for="(item,index) in categoryList" :key="index">
<swiper-item :item-id="`${item.id}`">
<scroll-view @scroll="scrollLeft" scroll-y="true" :show-scrollbar="false"
class="scroll-view" :style="'height:'+swiperHeight+'px'" id="goods"
refresher-enabled="true" :refresher-threshold="100"
:refresher-triggered="triggeredDiscover"
@refresherrefresh="onRefreshDiscover" @refresherpulling="onPulling"
@refresherrestore="onRestore" @refresherabort="onAbort">
<view class="goods padbottom">
<view class="goods-wrap" id="goods"
v-if="discoverList[item.id] && discoverList[item.id].goods.length">
<view>
<WaterfallsFlow v-if="discoverList[item.id].goods.length"
:wfList="discoverList[item.id].goods" :fromType="1">
</WaterfallsFlow>
</view>
</view>
<view class='loadingicon acea-row row-center-wrapper'>
<text class='loading iconfont icon-jiazai'
:hidden='loading==false'></text>{{discoverList[item.id] &&discoverList[item.id].goods.length>0?loadTitle:''}}
</view>
<view class="empty-boxs noContent"
v-if="discoverList[item.id] && discoverList[item.id].goods.length == 0 && !loading">
<emptyPage title="暂无内容~" mTop="13%"
:imgSrc="urlDomain+'crmebimage/presets/noguanzhu.png'">
</emptyPage>
</view>
<view class="footerBottoms"></view>
</view>
</scroll-view>
</swiper-item>
</block>
</swiper>
</view>
<!-- 关注 登录后 -->
<view id="goods" v-if="isLogin&&tabActive == 0" class="discover-detail">
<scroll-view scroll-y="true" :show-scrollbar="false" class="scroll-view recommendList"
:style="'height:'+swiperHeight+'px'" id="recommendList"
@scrolltolower="onTouchmoveRecommend" :refresher-threshold="100" @scroll="followScroll"
refresher-enabled="true" :refresher-triggered="triggered" @refresherrefresh="onRefresh"
@refresherpulling="onPulling" @refresherrestore="onRestore" @refresherabort="onAbort">
<view class="goods padbottom main">
<view class="goods-wrap" id="goods" v-if="noteRecommendList.length">
<view>
<WaterfallsFlow v-if="noteRecommendList.length" :wfList="noteRecommendList"
:fromType="1">
</WaterfallsFlow>
</view>
</view>
<view :hidden='loadingfollow==false'
class='loadingicon acea-row row-center-wrapper'>
<text
class='loading iconfont icon-jiazai'></text>{{noteRecommendList.length>0?loadTitleFollow:''}}
</view>
<view
v-if="isLogin&&tabActive == 0 && noteRecommendList.length===0 &&!loadingfollow"
class="empty-boxs noContent">
<emptyPage title="暂无更多内容~" mTop="0%"
:imgSrc="urlDomain+'crmebimage/presets/noguanzhu.png'"></emptyPage>
</view>
</view>
<!-- 为你推荐 -->
<view v-if="authorList.length>0 && !loadingfollow" class="author-list mt-24">
<title-box title="为你推荐"></title-box>
<view v-for="(item, index) in authorList" :key="item.authorId" class="author-item"
@click="goAuthor(item)">
<view class="acea-row row-between row-middle mb30">
<view class="acea-row row-middle">
<view class="author-head">
<image :src="item.authorAvatar"></image>
</view>
<view class="author-info">
<view class="author-name">{{item.authorName}}</view>
<view v-show="item.authorSignature" class="author-sign line1">
{{item.authorSignature}}
</view>
<view class="author-fans">
粉丝<text
class="text-333 ml-8">{{ item.fansNum < 10000 ? item.fansNum : (item.fansNum / 10000).toFixed(2) }}</text>
</view>
</view>
</view>
<view @click.stop="followAuthor(item, index)" class="author-follow acea-row"
:class="item.isConcerned ? 'focusBtn' : ''">
<text v-if="!item.isConcerned"
class="iconfont icon-ic_increase"></text>
{{!item.isConcerned ? '关注' : '已关注'}}
</view>
</view>
<scroll-view scroll-x="true" class="white-nowrap vertical-middle w-full"
show-scrollbar="false">
<view class="inline-block mr-20" v-for="items in item.noteList"
:key="items.id">
<view class="relative">
<easy-loadimage :image-src="items.cover" width="184rpx"
height="254rpx" radius="16rpx"></easy-loadimage>
<view class="discover_video_icon" v-show="items.type == 2">
<text class="iconfont icon-ic_right2"></text>
</view>
</view>
</view>
</scroll-view>
</view>
<view class='loadingicon acea-row row-center-wrapper'>
<text class='loading iconfont icon-jiazai'
:hidden='loading==false'></text>{{authorList.length>0?loadTitle:''}}
</view>
</view>
<view class="footerBottoms"></view>
</scroll-view>
</view>
<!-- 关注未登录 -->
<view class="empty-boxs" v-if="!isLogin&&tabActive == 0">
<emptyPage title="登录后可查看关注用户的内容哦~" mTop="30%"
:imgSrc="urlDomain+'crmebimage/presets/nodenglu.png'"></emptyPage>
<view class="btn" @click="openAuto">立即登录</view>
</view>
</view>
</scroll-view>
</view>
<view class="publish" @click="publish" :class="bottomNavigationIsCustom?'bottom':''"><text
class="iconfont icon-ic_edit"></text></view>
</view>
<page-footer v-if="isShowFooter"></page-footer>
</view>
</template>
<script>
import {
mapGetters
} from "vuex";
import {
toLogin
} from '@/libs/login.js';
import {
BACK_URL
} from '@/config/cache';
import {
communityCategoryListApi,
recommendAuthorListApi,
discoverListApi,
followListApi
} from '@/api/discover.js';
import {
discoverFollowAuthor,
} from '@/libs/follow.js';
import {
tokenIsExistApi
} from '@/api/api.js';
import {
silenceBindingSpread,
getUserSpread
} from '@/utils/index.js';
import onShare from "@/mixins/onShare";
import animationType from '@/utils/animationType.js'
import pageFooter from "@/components/pageFooter/index.vue";
import navBar from '@/components/navBar';
import emptyPage from '@/components/emptyPage.vue';
import easyLoadimage from '@/components/base/easy-loadimage.vue';
import WaterfallsFlow from '@/components/WaterfallsFlow/WaterfallsFlow.vue'
import WaterfallsFlowItem from '@/components/discoverFlowItem/discoverFlowItem.vue'
import TitleBox from '@/components/titleBox/index.vue';
let app = getApp();
let sysHeight = uni.getSystemInfoSync().statusBarHeight;
export default {
mixins: [onShare],
components: {
pageFooter,
navBar,
emptyPage,
easyLoadimage,
WaterfallsFlowItem,
WaterfallsFlow,
TitleBox
},
computed: {
...mapGetters(['globalData', 'isLogin', 'userInfo', 'bottomNavigationIsCustom']),
headerBoxStyle(){
return {
// #ifndef MP
paddingTop:'4rpx',
// #endif
// #ifdef MP
paddingTop: this.marTop + "px",
marginRight:this.statusWidth + this.searchRight+'px',
// #endif
}
},
textBoxStyle(){
return {
// #ifdef MP
height:this.searchHeight + 'px',
lineHeight:this.searchHeight + 'px',
// #endif
}
}
},
onLoad(options) {
//分销码
getUserSpread(options);
this.windowWidth = uni.getSystemInfoSync().screenWidth; //获取屏幕宽度
tokenIsExistApi().then(res => {
this.tokenIsExist = res.data;
if (this.tokenIsExist && this.isLogin) {
this.getFollowList();
setTimeout(() => {
if (this.noteRecommendList.length === 0 || this.loadendfollow) this
.getRecommendAuthorList();
}, 500)
}
if (!this.tokenIsExist) {
this.$store.commit('UPDATE_LOGIN', '');
this.$store.commit('UPDATE_USERINFO', {});
}
})
this.getDiscoverList();
this.getCommunityCategoryList();
this._freshing = false;
},
data() {
return {
urlDomain: this.$Cache.get("imgHost"),
sysHeight: sysHeight,
windowWidth: 0, //获取屏幕宽度🌟💗
interval: 3000,
swiperHeight: 0,
listMarTop: 0,
tabClick: 0, //设置导航点击了哪一个
tabLeft: 0, //设置下划线位置
isLeft: 0, //导航栏下划线位置
isWidth: 0, //每个导航栏占位
tabActive: 1, // 顶部关注、发现切换
windowHeight: 0,
theme: app.globalData.theme,
marTop: 0,
categoryList: [], //分类列表
categoryId: '', //分类id
swiperCurrent: 0, //分类索引
isScroll: false, //是否是滑动
params: { //推荐作者
page: 1,
limit: 10
},
followParams: { //关注内容
page: 1,
limit: 10
},
noteRecommendList: [], //关注内容
loadendfollow: false, //关注内容
loadingfollow: false, //关注内容
where: {
categoryId: 0,
page: 1,
limit: 10
},
loadend: false,
loading: false,
loadTitle: '加载更多',
loadTitleFollow: '加载更多',
onnnn: {
good: [{
authorId: 1
}]
},
discoverList: {}, //内容信息
authorList: [], //推荐作者列表
isOpenRefresh: true, // 是否开启下拉
triggered: false,
triggeredDiscover: false,
isShow: false, //加载完成
tokenIsExist: false, //校验token是否有效,true为有效false为无效
isRefresher: false, //下拉刷新状态
noteDetails: {}, //内容详情
showComment: false, //评论弹窗
isShowFooter: true,
loadingAuthor: false, //推荐作者
showCateDrawer: false, //分类下拉展示
searchRight:0,
statusWidth:0,
searchHeight:0,
}
},
// 滚动监听
onPageScroll(e) {
// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
uni.$emit('scroll');
},
onShow() {
this.showCateDrawer = false;
this.getTokenIsExist();
//分销绑定
silenceBindingSpread(this.isLogin, this.globalData.spread);
},
mounted() {
this.$nextTick(function() {
const query = uni.createSelectorQuery().in(this);
query.select('.discover-header').boundingClientRect(data => {
// #ifndef H5
this.listMarTop = data.height
// #endif
// #ifdef H5
this.listMarTop = data.height
// #endif
}).exec();
});
},
created() {
var that = this;
// 获取设备宽度
uni.getSystemInfo({
success(e) {
that.isWidth = e.windowWidth / 6;
that.windowHeight = e.windowHeight;
that.swiperHeight = that.windowHeight - 205
that.$set(that, 'swiperHeight', that.windowHeight - 55);
}
});
that.getNavH()
// #ifdef MP
const res = uni.getMenuButtonBoundingClientRect()
const jnHeight = res.height //胶囊高度
const statusHeight = res.top //胶囊距离顶部
const statusRight = res.right //胶囊右边界坐标
this.statusWidth= res.width
this.searchHeight=jnHeight
this.marTop=statusHeight-this.sysHeight
//搜索框宽度计算
uni.getSystemInfo({
success:res=>{
this.searchRight=res.windowWidth-statusRight
}
})
// #endif
},
//uniapp小程序用deep重写组件样式不生效
options: {
styleIsolation: 'shared'
},
methods: {
getNavH(marTop) {
// #ifdef H5
this.marTop = 30;
// #endif
// #ifdef APP
this.marTop = marTop - 60;
// #endif
},
//校验token是否有效,true为有效false为无效
getTokenIsExist() {
tokenIsExistApi().then(res => {
this.tokenIsExist = res.data;
if (!this.tokenIsExist) {
this.$store.commit('UPDATE_LOGIN', '');
this.$store.commit('UPDATE_USERINFO', {});
}
})
},
// 去推荐作者个人主人
goAuthor(item) {
// #ifdef MP || H5
uni.navigateTo({
url: `/pages/discover/discover_user/index?id=${item.authorId}`
})
// #endif
// #ifdef APP-PLUS
uni.navigateTo({
animationType: animationType.type,
animationDuration: animationType.duration,
url: `/pages/discover/discover_user/index?id=${item.authorId}`
})
// #endif
},
// 自定义下拉刷新被中止
onAbort() {
console.error("onAbort");
},
onPulling(e) {
if (e.detail.deltaY < 0) return // 防止上滑页面也触发下拉
if (this.tabActive == 1) {
this.triggeredDiscover = true;
} else {
this.triggered = true;
}
},
// 下拉刷新触发
refresherpullingFun() {
this.isRefresher = true
},
onRefreshDiscover() {
if (this._freshing) return;
this._freshing = true;
setTimeout(() => {
this._freshing = false;
this.discoverList = {}
this.getDiscoverList();
this.triggeredDiscover = false;
uni.stopPullDownRefresh();
this._freshing = false;
}, 1000)
},
onRefresh() {
if (this._freshing) return;
this._freshing = true;
setTimeout(() => {
this.loadendfollow = false;
this.loadend = false;
this.noteRecommendList = [];
this.followParams.page = 1;
this.authorList = [];
this.params.page = 1;
this.getFollowList();
setTimeout(() => {
if (this.noteRecommendList.length === 0 || this.loadendfollow) this
.getRecommendAuthorList();
}, 400)
this.triggered = false
uni.stopPullDownRefresh();
this._freshing = false;
}, 1000)
},
onRestore() {
this.triggeredDiscover = false;
},
//关注内容
getFollowList() {
if (this.loadendfollow) {
this.triggered = false;
return;
}
this.loadingfollow = true;
followListApi(this.followParams).then(res => {
this.$set(this.followParams, 'page', this.followParams.page + 1);
this.loadendfollow = this.followParams.page > res.data.totalPage;
this.loadTitleFollow = this.loadendfollow ? '' : '加载更多';
this.noteRecommendList = this.noteRecommendList.concat(res.data.list || []);
this.loadingfollow = false
this.triggered = false;
}).catch(err => {
this.loadingfollow = false;
this.triggered = false;
uni.showToast({
title: err,
icon: 'none'
})
});
},
// 关注作者
followAuthor(item) {
if (this.isLogin) {
discoverFollowAuthor(item.authorId).then(() => {
this.$set(item, 'isConcerned', !item.isConcerned);
});
} else {
toLogin();
}
},
//回退页面之后重新加载页面
reFresh() {
this.loading = true
this.discoverList = {};
this.getDiscoverList();
},
//发布内容
publish() {
if (this.isLogin) {
// #ifdef MP || H5
uni.navigateTo({
url: `/pages/discover/discover_release/index`
})
// #endif
// #ifdef APP-PLUS
uni.navigateTo({
animationType: animationType.type,
animationDuration: animationType.duration,
url: `/pages/discover/discover_release/index`
})
// #endif
} else {
toLogin();
}
},
/**
* 发现列表滑动中用到的方法
*/
followScroll() {
uni.$emit('scroll');
},
onTouchmoveRecommend(e) {
if (!this.loadendfollow) this.getFollowList();
if (this.loadendfollow && !this.loadend) this.getRecommendAuthorList();
},
onTouchmove(e) {
this.getDiscoverList();
},
scrollLeft: function(e) {
uni.$emit('scroll');
if (e.detail.scrollTop > e.detail.scrollHeight - 1500) {
this.getDiscoverList();
}
this.swiperHeight = this.windowHeight - 55
},
swiperChange(e) {
let {
current,
source,
currentItemId
} = e.detail;
if (source === 'autoplay' || source === 'touch') {
this.categoryId = currentItemId;
this.swiperCur = current
this.selectMenu(this.categoryList[this.swiperCur], this.swiperCur, false)
if (this.categoryList.length > 3) {
var tempIndex = this.swiperCur - 2;
tempIndex = tempIndex <= 0 ? 0 : tempIndex;
let tabLeft = (this.swiperCur - 2) * this.isWidth; //设置下划线位置
this.$nextTick(function() {
this.$set(this, 'tabLeft', tabLeft);
});
}
}
},
/*******************发现列表滑动中用到的方法结束*********************/
// 去个人主人
goUser() {
if (!this.isLogin) {
this.openAuto();
} else {
// #ifdef MP || H5
uni.navigateTo({
url: '/pages/discover/discover_user/index'
})
// #endif
// #ifdef APP-PLUS
uni.navigateTo({
animationType: animationType.type,
animationDuration: animationType.duration,
url: '/pages/discover/discover_user/index'
})
// #endif
}
},
// 打开授权
openAuto() {
this.$Cache.set(BACK_URL, '')
toLogin();
},
//发现列表
getDiscoverList() {
let that = this;
this.isShow = false;
if (!this.discoverList[this.categoryId]) {
this.$set(this.discoverList, this.categoryId, {
where: {
...this.where,
categoryId: this.categoryId
},
goods: []
})
}
const data = this.discoverList[this.categoryId];
const cateId = this.categoryId;
if (data.loading || data.loadend) {
this.triggeredDiscover = false;
return
};
data.loading = true
this.loading = true
this.loadTitle = '';
if (data.where.categoryId === 0) data.where.categoryId = ''
discoverListApi(data.where).then(res => {
data.loadend = res.data.list.length < that.where.limit;
if (data.where.page == 1) {
data.goods = [];
}
this.loadTitle = data.loadend ? '没有了' : '加载更多';
data.goods.push.apply(data.goods, res.data.list);
data.where.page = data.where.page + 1;
that.$nextTick(() => {
that.$set(that.discoverList, cateId, {
...data
});
});
data.loading = false;
this.loading = false;
this.triggeredDiscover = false;
this.$forceUpdate()
}).catch(err => {
data.loading = false;
this.loading = false;
uni.showToast({
title: err,
icon: 'none'
})
this.$set(this.discoverList, cateId, data);
});
},
//推荐作者列表
getRecommendAuthorList() {
if (this.loadend) return;
this.loading = true
recommendAuthorListApi(this.params).then(res => {
this.$set(this.params, 'page', this.params.page + 1);
this.loadend = this.params.page > res.data.totalPage;
this.authorList = this.authorList.concat(res.data.list || []);
this.loadTitle = this.loadend ? '没有了' : '加载更多';
this.loading = false
})
},
//分类列表
getCommunityCategoryList() {
let data = [{
name: "推荐",
id: ''
}];
communityCategoryListApi().then(res => {
this.categoryList = Array.from(new Set([...data, ...res.data]));
})
},
// 点击列表头部
selectMenu(item, index, isScroll) {
this.triggeredDiscover = false;
this.categoryId = item.id;
this.swiperCurrent = index;
this.isScroll = isScroll;
this.tabClick = index; //设置导航点击了哪一个
this.isLeft = index * this.isWidth; //设置下划线位置
this.where.categoryId = item.id;
this.showCateDrawer = false
this.getDiscoverList();
},
}
}
</script>
<style lang="scss" scoped>
.icon-ic_search{
font-size: 36rpx !important;
}
.discover_video_icon {
top: 50% !important;
left: 50% !important;
right: 0 !important;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.active-topic {
@include main_color(theme);
@include main_rgba_color(theme);
@include coupons_border_color(theme);
}
.padbottom {
/* #ifndef H5 */
padding-bottom: calc(100rpx+ constant(safe-area-inset-bottom)) !important; ///兼容 IOS<11.2/
padding-bottom: calc(100rpx + env(safe-area-inset-bottom)) !important;
/* #endif */
}
.bottom {
bottom: 218rpx !important;
}
.footerBottoms {
width: 100%;
/* #ifndef H5 */
height: calc(200rpx+ constant(safe-area-inset-bottom)) !important; ///兼容 IOS<11.2/
height: calc(200rpx + env(safe-area-inset-bottom)) !important;
/* #endif */
/* #ifdef H5 */
height: calc(100rpx+ constant(safe-area-inset-bottom)) !important; ///兼容 IOS<11.2/
height: calc(100rpx + env(safe-area-inset-bottom)) !important;
/* #endif */
}
.discover_index {
/deep/.no-border {
bottom: 40rpx;
}
/deep/.author-list {
padding-left: 24rpx;
padding-right: 24rpx;
}
}
.menu {
padding: 0 34rpx 0 34rpx;
box-sizing: border-box;
width: 676rpx;
}
.page_con {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: flex;
flex-direction: column;
}
.empty-boxs {
margin: auto;
}
.goods {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
background: #ffffff;
}
.publish {
position: fixed;
z-index: 9999;
width: 100rpx;
height: 100rpx;
opacity: 1;
border-radius: 50%;
bottom: 142rpx;
right: 24rpx;
color: #fff;
line-height: 100rpx;
text-align: center;
@include linear-gradient(theme);
.iconfont {
font-size: 50rpx;
}
}
.main {
width: 100%;
}
.author {
&-item {
padding-bottom: 40rpx;
}
&-title {
height: 120rpx;
line-height: 120rpx;
font-size: 32rpx;
color: #333333;
.iconfont {
font-size: 170rpx;
color: #454545;
}
.lefticon {
transform: rotate(180deg);
}
}
.name {
margin: 0 28rpx;
}
&-head {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
margin-right: 20rpx;
}
&-name {
font-size: 28rpx;
font-family: PingFang SC-Medium, PingFang SC;
font-weight: 600;
color: #282828;
}
&-sign,
&-fans {
font-size: 22rpx;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
}
&-sign {
width: 370rpx;
}
&-pictrue {
width: 222rpx;
height: 222rpx;
border-radius: 10px 10px 10px 10px;
opacity: 1;
margin-right: 18rpx;
/deep/image,
/deep/.easy-loadimage,
uni-image {
width: 100%;
height: 100%;
border-radius: 10px 10px 10px 10px;
overflow: hidden;
}
}
&-pictrue:nth-of-type(3n) {
margin-right: 0;
}
}
.noContent {
/deep/.empty-box {
padding-top: 80rpx !important;
}
}
.btn {
width: 440rpx;
height: 86rpx;
line-height: 86rpx;
text-align: center;
border-radius: 43rpx 43rpx 43rpx 43rpx;
opacity: 1;
border: 1px solid #E93323;
font-size: 32rpx;
margin: auto;
font-family: PingFang SC-Medium, PingFang SC;
@include main_color(theme);
@include coupons_border_color(theme);
font-weight: 600;
}
.cart_nav {
/deep/.nav_title {
font-size: 36rpx;
color: #333333;
}
}
.discover {
&-header {
background-size: cover;
top: 0;
left: 0;
.title {
font-size: 36rpx;
color: #333333;
}
}
&-navTab {
/* #ifdef H5 */
padding: 24rpx 34rpx 0 34rpx;
/* #endif */
/* #ifndef H5 */
padding: 0 34rpx 0 34rpx;
/* #endif */
justify-content: space-between;
.nav-item {
font-size: 32rpx;
color: #666666;
margin-right: 52rpx;
&.on {
font-size: 38rpx;
color: #333;
font-weight: bold;
}
}
.release_btn {
width: 58rpx;
height: 58rpx;
border-radius: 100%;
background-image: linear-gradient(126deg, var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
color: #fff;
position: absolute;
top: 20rpx;
left: 0;
.iconfont {
font-size: 28rpx;
}
}
.avatar {
width: 64rpx;
height: 64rpx;
border-radius: 50%;
}
}
&-box {
flex: 1;
min-height: 83vh;
height: auto;
width: 100%;
background-color: #fff;
left: 0;
}
}
.h96 {
height: 96rpx;
}
.h36 {
/* #ifdef H5 */
height: 28rpx;
/* #endif */
/* #ifndef H5 */
height: 18rpx;
/* #endif */
}
.longTab {
width: 100%;
background: #fff;
border-radius: 16rpx 16rpx 0 0;
.longItem {
height: 50upx;
display: inline-block;
text-align: center;
font-size: 30rpx;
color: #999999;
margin-right: 56rpx;
text {
display: block;
max-width: 326rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
&:last-child {
margin-right: 0;
}
/*解决ios上滑动不流畅*/
-webkit-overflow-scrolling: touch;
position: relative;
&.click {
font-weight: bold;
font-size: 34rpx;
@include main_color(theme);
&::after {
content: "";
display: block;
width: 40rpx;
height: 5rpx;
@include main_bg_color(theme);
display: flex;
position: absolute;
left: 50%;
margin-left: -22rpx;
bottom: -8rpx;
}
.underline {
opacity: 1;
}
}
}
.underlineBox {
height: 3px;
width: 20%;
display: flex;
align-content: center;
justify-content: center;
.underline {
opacity: 0;
width: 60rpx;
height: 4rpx;
background-color: #e93323;
}
}
}
.author-fans {
font-size: 24rpx !important;
}
</style>