feat: 修改跳转小屋的路由,和修改header的样式
This commit is contained in:
parent
75893b1f42
commit
958dffce6a
@ -2,7 +2,7 @@
|
||||
"name" : "TopFans",
|
||||
"appid" : "__UNI__F199FF4",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.2",
|
||||
"versionName" : "1.0.3",
|
||||
"versionCode" : 100,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
@ -69,6 +69,12 @@
|
||||
"apikey" : "l2FgEjJBl96gUsAEQ6nf0asA",
|
||||
"secretkey" : "1i5Aj8FwL3i11LYPeXMRwRWycictWq2X"
|
||||
}
|
||||
},
|
||||
"push" : {
|
||||
"unipush" : {
|
||||
"version" : "2",
|
||||
"offline" : false
|
||||
}
|
||||
}
|
||||
},
|
||||
"icons" : {
|
||||
|
||||
@ -61,8 +61,11 @@
|
||||
:src="item.coverUrl || '/static/nft/collection.png'"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view class="status-badge" :class="item.display_status === 1 ? 'badge-active' : 'badge-pending'">
|
||||
<text class="status-text">{{ item.display_status === 1 ? '已展示' : '待展示' }}</text>
|
||||
<view v-if="item.display_status === 1" class="status-overlay">
|
||||
<text class="status-text-center">已展示</text>
|
||||
</view>
|
||||
<view v-else class="status-overlay-pending">
|
||||
<text class="status-text-pending">待展示</text>
|
||||
</view>
|
||||
<view class="asset-info">
|
||||
<text class="asset-name">{{ item.name }}</text>
|
||||
@ -89,8 +92,11 @@
|
||||
:src="item.coverUrl || '/static/nft/collection.png'"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view class="status-badge" :class="item.display_status === 1 ? 'badge-active' : 'badge-pending'">
|
||||
<text class="status-text">{{ item.display_status === 1 ? '已展示' : '待展示' }}</text>
|
||||
<view v-if="item.display_status === 1" class="status-overlay">
|
||||
<text class="status-text-center">已展示</text>
|
||||
</view>
|
||||
<view v-else class="status-overlay-pending">
|
||||
<text class="status-text-pending">待展示</text>
|
||||
</view>
|
||||
<view class="asset-info">
|
||||
<text class="asset-name">{{ item.name }}</text>
|
||||
@ -514,25 +520,49 @@ const handleTouchEnd = (e) => {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.status-badge {
|
||||
.status-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 192rpx;
|
||||
height: 224rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 16rpx;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.status-text-center {
|
||||
font-size: 24rpx;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.8);
|
||||
background: linear-gradient(to bottom right,
|
||||
#F0E4B1 0%,
|
||||
#F08399 50%,
|
||||
#B94E73 100%
|
||||
);
|
||||
border-radius: 24rpx;
|
||||
box-shadow:
|
||||
0 4rpx 12rpx rgba(255, 143, 158, 0.2),
|
||||
0 2rpx 6rpx rgba(255, 143, 158, 0.15),
|
||||
inset 0 2rpx 4rpx rgba(255, 255, 255, 0.4),
|
||||
inset 0 -2rpx 4rpx rgba(0, 0, 0, 0.05);
|
||||
padding: 16rpx;
|
||||
}
|
||||
|
||||
.status-overlay-pending {
|
||||
position: absolute;
|
||||
top: 8rpx;
|
||||
right: 8rpx;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
border-radius: 8rpx;
|
||||
padding: 4rpx 8rpx;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.badge-active {
|
||||
background: linear-gradient(135deg, #FFD700, #FFA500);
|
||||
box-shadow: 0 0 12rpx rgba(255, 215, 0, 0.6);
|
||||
}
|
||||
|
||||
.badge-pending {
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
.status-text {
|
||||
.status-text-pending {
|
||||
font-size: 18rpx;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<swiper class="banner-swiper" :indicator-dots="true" :autoplay="true" :interval="3000" :duration="500"
|
||||
indicator-color="rgba(255, 255, 255, 0.3)" indicator-active-color="#FF6B9D">
|
||||
<swiper-item v-for="(banner, index) in bannerList" :key="index" @click="handleBannerClick(banner)">
|
||||
<image class="banner-image" :src="banner.image_url" mode="aspectFill"></image>
|
||||
<image class="banner-image" :src="banner.image_url" mode="widthFill"></image>
|
||||
<view class="banner-overlay">
|
||||
<text class="banner-title">{{ banner.title }}</text>
|
||||
</view>
|
||||
@ -101,13 +101,13 @@ const backButtonTop = computed(() => {
|
||||
// 轮播图数据
|
||||
const bannerList = ref([
|
||||
{
|
||||
image_url: '/static/sucai/image-01.png',
|
||||
image_url: '/static/sucai/image-05.png',
|
||||
title: '这河非遇美学宇宙联名',
|
||||
link_type: 'activity',
|
||||
link_value: '1'
|
||||
},
|
||||
{
|
||||
image_url: '/static/sucai/image-02.png',
|
||||
image_url: '/static/sucai/image-06.png',
|
||||
title: '限时创作活动',
|
||||
link_type: 'activity',
|
||||
link_value: '2'
|
||||
@ -125,7 +125,7 @@ const mainTabs = ref([
|
||||
{
|
||||
name: '星卡',
|
||||
type: 'star_card',
|
||||
icon: '/static/sucai/image-04.png'
|
||||
icon: '/static/sucai/image-03.png'
|
||||
},
|
||||
{
|
||||
name: '吧唧',
|
||||
|
||||
@ -412,7 +412,7 @@ defineExpose({
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
height: 144rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
@ -505,7 +505,7 @@ defineExpose({
|
||||
.task-text-label {
|
||||
font-size: 16rpx;
|
||||
color: #fff;
|
||||
text-shadow: 1rpx 1rpx 2rpx rgba(255, 255, 255, 0.5);
|
||||
text-shadow: 1rpx 1rpx 2rpx rgba(0, 0, 0, 0.9);
|
||||
margin-top: 32rpx;
|
||||
|
||||
}
|
||||
@ -588,7 +588,7 @@ defineExpose({
|
||||
color: #FFFFFF;
|
||||
margin-bottom: 2rpx;
|
||||
margin-left: 28rpx;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.5);
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.9);
|
||||
}
|
||||
|
||||
/* --- 下层:渐变背景 --- */
|
||||
|
||||
@ -113,8 +113,8 @@ const isSharedBgTab = computed(() => [0, 1, 2, 3].includes(activeSubTab.value));
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
padding-top: 160rpx;
|
||||
padding-bottom: 0;
|
||||
padding-top: 256rpx;
|
||||
padding-bottom: 48rpx;
|
||||
padding-left: 20rpx;
|
||||
padding-right: 20rpx;
|
||||
height: 240rpx;
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
:class="{ active: currentType === 'regular' }"
|
||||
@click="switchType('regular')"
|
||||
>
|
||||
<text>原创</text>
|
||||
<text>自创</text>
|
||||
</view>
|
||||
<view
|
||||
class="tab-item"
|
||||
@ -43,7 +43,7 @@
|
||||
<!-- 藏品列表 - 可滚动区域 -->
|
||||
<scroll-view v-else class="nft-scroll-view" scroll-y :show-scrollbar="false">
|
||||
<view class="nft-list-container">
|
||||
<!-- 原创藏品:按 category > grade 分组 -->
|
||||
<!-- 自创藏品:按 category > grade 分组 -->
|
||||
<view v-if="currentType === 'regular'">
|
||||
<view v-for="(group, gIndex) in regularGroups" :key="group.category" class="nft-group">
|
||||
<!-- 分组标题:category_name -->
|
||||
|
||||
@ -415,6 +415,7 @@ onShow(() => {
|
||||
.nav-settings-text {
|
||||
font-size: 24rpx;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.8);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
@ -463,6 +464,7 @@ onShow(() => {
|
||||
z-index: 1;
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.9);
|
||||
font-weight: 600;
|
||||
padding: 0 28rpx;
|
||||
}
|
||||
@ -625,7 +627,7 @@ onShow(() => {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 80rpx 0;
|
||||
/* padding: 80rpx 0; */
|
||||
gap: 24rpx;
|
||||
}
|
||||
|
||||
@ -790,9 +792,10 @@ onShow(() => {
|
||||
.liked-status {
|
||||
font-size: 28rpx;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.7);
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
/* overflow: hidden; */
|
||||
text-overflow: ellipsis;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
@ -806,6 +809,7 @@ onShow(() => {
|
||||
.liked-score {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.7);
|
||||
font-weight: 700;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
<view class="section-bg" style="padding-top: 0;">
|
||||
<view class="section-title">我的资产</view>
|
||||
<view class="assets-grid">
|
||||
<view class="asset-card" @tap="handleAssetClick('exhibition')">
|
||||
<view class="asset-card" @tap="handleAssetClick('myWorks')">
|
||||
<image class="asset-icon" src="/static/icon/square.png" mode="aspectFit"></image>
|
||||
<text class="asset-text">我的展馆</text>
|
||||
<!-- <text class="arrow">›</text> -->
|
||||
@ -294,7 +294,7 @@ const showOldPassword = ref(false);
|
||||
|
||||
// 新手引导
|
||||
const showGuideListModal = ref(false);
|
||||
const guideClaimableCount = computed(() => getClaimableRewardCount());
|
||||
// const guideClaimableCount = computed(() => getClaimableRewardCount());
|
||||
const showNewPassword = ref(false);
|
||||
|
||||
// 添加身份弹窗
|
||||
@ -450,10 +450,10 @@ const copyAddress = () => {
|
||||
|
||||
// 处理资产按钮点击
|
||||
const handleAssetClick = (type) => {
|
||||
if (type === 'exhibition') {
|
||||
if (type === 'myWorks') {
|
||||
// 跳转到展馆页面
|
||||
uni.navigateTo({
|
||||
url: '/pages/exhibition/exhibition'
|
||||
url: '/pages/profile/myWorks'
|
||||
});
|
||||
} else if (type === 'starbook') {
|
||||
// 跳转到星册页面
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<!-- 左侧图标,绝对浮动覆盖背景左侧色块,不影响文字布局 -->
|
||||
<view class="tab-left" :class="{ 'tab-left-first': index === 0 }">
|
||||
<view class="tab-left" :class="{ 'tab-left-first': index === 2 }">
|
||||
<text v-if="tab.emoji" class="tab-emoji">{{ tab.emoji }}</text>
|
||||
<image
|
||||
v-else
|
||||
@ -33,16 +33,16 @@
|
||||
|
||||
<script setup>
|
||||
defineProps({
|
||||
modelValue: { type: String, default: 'new' }
|
||||
modelValue: { type: String, default: 'random' }
|
||||
})
|
||||
|
||||
defineEmits(['update:modelValue'])
|
||||
|
||||
const tabs = [
|
||||
{ key: 'hot', label: '人气王者', emoji: null, icon: '/static/square/rementubiao.png', iconWidth: 104, iconHeight: 104 },
|
||||
{ key: 'new', label: '新鲜上架', emoji: null, icon: '/static/square/baji.png', iconWidth: 80, iconHeight: 80 },
|
||||
{ key: 'potential', label: '潜力之星', emoji: null, icon: '/static/square/xingka.png', iconWidth: 80, iconHeight: 80 },
|
||||
{ key: 'random', label: '随机寻宝', emoji: null, icon: '/static/square/haibao.png', iconWidth: 96, iconHeight: 96 },
|
||||
{ key: 'hot', label: '人气王者', emoji: null, icon: '/static/square/3.png',iconWidth: 80, iconHeight: 80 },
|
||||
{ key: 'new', label: '新鲜上架', emoji: null, icon: '/static/square/2.png',iconWidth: 80, iconHeight: 80 },
|
||||
{ key: 'potential', label: '潜力之星', emoji: null, icon: '/static/square/1.png',iconWidth: 96, iconHeight: 96 },
|
||||
{ key: 'random', label: '随机寻宝', emoji: null, icon: '/static/square/4.png',iconWidth: 80, iconHeight: 80 },
|
||||
]
|
||||
</script>
|
||||
|
||||
@ -97,9 +97,9 @@ const tabs = [
|
||||
.tab-left {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
left: -10rpx;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: -16rpx;
|
||||
top: 35%;
|
||||
transform: translateY(-50%) rotateZ(8deg);
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
@ -110,8 +110,7 @@ const tabs = [
|
||||
|
||||
/* 第一个 tab 图标单独样式 */
|
||||
.tab-left-first {
|
||||
top: 40%;
|
||||
transform: translateY(-70%);
|
||||
top: 23%;
|
||||
|
||||
}
|
||||
|
||||
@ -133,11 +132,13 @@ const tabs = [
|
||||
.tab-label {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
font-size: 20rpx;
|
||||
font-size: 18rpx;
|
||||
font-weight: 600;
|
||||
color: rgba(255, 255, 255, 0.65);
|
||||
color: rgba(255, 255, 255, 0.95);
|
||||
/* color: #ffffff; */
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.8);
|
||||
white-space: nowrap;
|
||||
margin-left: 60rpx;
|
||||
margin-left: 48rpx;
|
||||
}
|
||||
|
||||
.tab-item.active .tab-label {
|
||||
|
||||
@ -37,36 +37,36 @@ export const SPAN_CONFIG = {
|
||||
// 人气王者:高点赞为主,大卡片多
|
||||
hot: {
|
||||
thresholds: [
|
||||
{ max: 30000, span: 1 }, // 3w 以下 → span 1
|
||||
{ max: 60000, span: 2 }, // 3w-6w → span 2
|
||||
{ max: 100000, span: 3 }, // 6w-10w → span 3
|
||||
{ max: Infinity, span: 4 }, // 10w+ → span 4
|
||||
{ max: 300, span: 1 }, // 300 以下 → span 1
|
||||
{ max: 600, span: 2 }, // 300-600 → span 2
|
||||
{ max: 1000, span: 3 }, // 600-1000 → span 3
|
||||
{ max: Infinity, span: 4 }, // 1000+ → span 4
|
||||
]
|
||||
},
|
||||
// 新鲜上架:低点赞,小卡片为主
|
||||
new: {
|
||||
thresholds: [
|
||||
{ max: 200, span: 1 }, // 200 以下 → span 1
|
||||
{ max: 500, span: 2 }, // 200-500 → span 2
|
||||
{ max: Infinity, span: 3 },// 500+ → span 3
|
||||
{ max: 2, span: 1 }, // 2 以下 → span 1
|
||||
{ max: 5, span: 2 }, // 2-5 → span 2
|
||||
{ max: Infinity, span: 3 },// 5+ → span 3
|
||||
]
|
||||
},
|
||||
// 潜力之星:中等点赞,中小卡片
|
||||
potential: {
|
||||
thresholds: [
|
||||
{ max: 5000, span: 1 }, // 5k 以下 → span 1
|
||||
{ max: 10000, span: 2 }, // 5k-1w → span 2
|
||||
{ max: 15000, span: 3 }, // 1w-1.5w → span 3
|
||||
{ max: Infinity, span: 4 },// 1.5w+ → span 4
|
||||
{ max: 50, span: 1 }, // 50 以下 → span 1
|
||||
{ max: 100, span: 2 }, // 50-100 → span 2
|
||||
{ max: 150, span: 3 }, // 100-150 → span 3
|
||||
{ max: Infinity, span: 4 },// 150+ → span 4
|
||||
]
|
||||
},
|
||||
// 随机寻宝:混合
|
||||
random: {
|
||||
thresholds: [
|
||||
{ max: 10000, span: 1 }, // 1w 以下 → span 1
|
||||
{ max: 30000, span: 2 }, // 1w-3w → span 2
|
||||
{ max: 60000, span: 3 }, // 3w-6w → span 3
|
||||
{ max: Infinity, span: 4 },// 6w+ → span 4
|
||||
{ max: 100, span: 1 }, // 100 以下 → span 1
|
||||
{ max: 300, span: 2 }, // 100-300 → span 2
|
||||
{ max: 600, span: 3 }, // 300-600 → span 3
|
||||
{ max: Infinity, span: 4 },// 600+ → span 4
|
||||
]
|
||||
},
|
||||
}
|
||||
@ -84,17 +84,17 @@ export function calcSpan(category, likes) {
|
||||
// span 由 WaterfallGrid._span() 根据 like_count 计算
|
||||
export const MOCK_RENQIWANG = {
|
||||
items: [
|
||||
{ asset_id: 10001, name: '星光璀璨', cover_url: MOCK_IMAGES[0], like_count: 125800, owner_nickname: '小甜心' },
|
||||
{ asset_id: 10002, name: '爱的绽放', cover_url: MOCK_IMAGES[1], like_count: 98600, owner_nickname: '爱豆粉' },
|
||||
{ asset_id: 10003, name: '温暖守护', cover_url: MOCK_IMAGES[2], like_count: 87200, owner_nickname: '星星控' },
|
||||
{ asset_id: 10004, name: '甜蜜暴击', cover_url: MOCK_IMAGES[3], like_count: 76800, owner_nickname: '追星族' },
|
||||
{ asset_id: 10005, name: '闪耀舞台', cover_url: MOCK_IMAGES[4], like_count: 65400, owner_nickname: '小太阳' },
|
||||
{ asset_id: 10006, name: '为你疯狂', cover_url: MOCK_IMAGES[5], like_count: 58900, owner_nickname: '小可爱' },
|
||||
{ asset_id: 10007, name: '心动时刻', cover_url: MOCK_IMAGES[6], like_count: 52100, owner_nickname: '小天使' },
|
||||
{ asset_id: 10008, name: '永相随', cover_url: MOCK_IMAGES[7], like_count: 48700, owner_nickname: '小甜豆' },
|
||||
{ asset_id: 10009, name: '粉红泡泡', cover_url: MOCK_IMAGES[8], like_count: 45600, owner_nickname: '小迷糊' },
|
||||
{ asset_id: 10010, name: '爱的力量', cover_url: MOCK_IMAGES[9], like_count: 42300, owner_nickname: '小幸运' },
|
||||
{ asset_id: 10011, name: '璀璨星河', cover_url: MOCK_IMAGES[10], like_count: 39800, owner_nickname: '小浪漫' },
|
||||
{ asset_id: 10001, name: '星光璀璨', cover_url: MOCK_IMAGES[0], like_count: 1258, owner_nickname: '小甜心' },
|
||||
{ asset_id: 10002, name: '爱的绽放', cover_url: MOCK_IMAGES[1], like_count: 986, owner_nickname: '爱豆粉' },
|
||||
{ asset_id: 10003, name: '温暖守护', cover_url: MOCK_IMAGES[2], like_count: 872, owner_nickname: '星星控' },
|
||||
{ asset_id: 10004, name: '甜蜜暴击', cover_url: MOCK_IMAGES[3], like_count: 768, owner_nickname: '追星族' },
|
||||
{ asset_id: 10005, name: '闪耀舞台', cover_url: MOCK_IMAGES[4], like_count: 654, owner_nickname: '小太阳' },
|
||||
{ asset_id: 10006, name: '为你疯狂', cover_url: MOCK_IMAGES[5], like_count: 589, owner_nickname: '小可爱' },
|
||||
{ asset_id: 10007, name: '心动时刻', cover_url: MOCK_IMAGES[6], like_count: 521, owner_nickname: '小天使' },
|
||||
{ asset_id: 10008, name: '永相随', cover_url: MOCK_IMAGES[7], like_count: 487, owner_nickname: '小甜豆' },
|
||||
{ asset_id: 10009, name: '粉红泡泡', cover_url: MOCK_IMAGES[8], like_count: 456, owner_nickname: '小迷糊' },
|
||||
{ asset_id: 10010, name: '爱的力量', cover_url: MOCK_IMAGES[9], like_count: 423, owner_nickname: '小幸运' },
|
||||
{ asset_id: 10011, name: '璀璨星河', cover_url: MOCK_IMAGES[10], like_count: 398, owner_nickname: '小浪漫' },
|
||||
],
|
||||
cursor: 'renqiwang_cursor_001',
|
||||
has_more: true,
|
||||
@ -104,17 +104,17 @@ export const MOCK_RENQIWANG = {
|
||||
// ========== 新鲜上架 - 新发布作品,点赞较低 ==========
|
||||
export const MOCK_XINXIANSHANG = {
|
||||
items: [
|
||||
{ asset_id: 30001, name: '刚刚发布', cover_url: MOCK_IMAGES[0], like_count: 128, owner_nickname: '新手小白' },
|
||||
{ asset_id: 30002, name: '今日新鲜', cover_url: MOCK_IMAGES[1], like_count: 256, owner_nickname: '小萌新' },
|
||||
{ asset_id: 30003, name: '刚出锅', cover_url: MOCK_IMAGES[2], like_count: 89, owner_nickname: '新来的' },
|
||||
{ asset_id: 30004, name: '热乎的', cover_url: MOCK_IMAGES[3], like_count: 167, owner_nickname: '小试牛刀' },
|
||||
{ asset_id: 30005, name: '新品上市', cover_url: MOCK_IMAGES[4], like_count: 234, owner_nickname: '初来乍到' },
|
||||
{ asset_id: 30006, name: '今日首发', cover_url: MOCK_IMAGES[5], like_count: 178, owner_nickname: '小透明' },
|
||||
{ asset_id: 30007, name: '刚出炉', cover_url: MOCK_IMAGES[6], like_count: 145, owner_nickname: '新手村' },
|
||||
{ asset_id: 30008, name: '最新创作', cover_url: MOCK_IMAGES[7], like_count: 312, owner_nickname: '小画师' },
|
||||
{ asset_id: 30009, name: '新鲜出炉', cover_url: MOCK_IMAGES[8], like_count: 98, owner_nickname: '小创作者' },
|
||||
{ asset_id: 30010, name: '首发作品', cover_url: MOCK_IMAGES[9], like_count: 267, owner_nickname: '小练手' },
|
||||
{ asset_id: 30011, name: '全新上线', cover_url: MOCK_IMAGES[10], like_count: 189, owner_nickname: '新起步' },
|
||||
{ asset_id: 30001, name: '刚刚发布', cover_url: MOCK_IMAGES[0], like_count: 1, owner_nickname: '新手小白' },
|
||||
{ asset_id: 30002, name: '今日新鲜', cover_url: MOCK_IMAGES[1], like_count: 2, owner_nickname: '小萌新' },
|
||||
{ asset_id: 30003, name: '刚出锅', cover_url: MOCK_IMAGES[2], like_count: 0, owner_nickname: '新来的' },
|
||||
{ asset_id: 30004, name: '热乎的', cover_url: MOCK_IMAGES[3], like_count: 1, owner_nickname: '小试牛刀' },
|
||||
{ asset_id: 30005, name: '新品上市', cover_url: MOCK_IMAGES[4], like_count: 2, owner_nickname: '初来乍到' },
|
||||
{ asset_id: 30006, name: '今日首发', cover_url: MOCK_IMAGES[5], like_count: 1, owner_nickname: '小透明' },
|
||||
{ asset_id: 30007, name: '刚出炉', cover_url: MOCK_IMAGES[6], like_count: 1, owner_nickname: '新手村' },
|
||||
{ asset_id: 30008, name: '最新创作', cover_url: MOCK_IMAGES[7], like_count: 3, owner_nickname: '小画师' },
|
||||
{ asset_id: 30009, name: '新鲜出炉', cover_url: MOCK_IMAGES[8], like_count: 0, owner_nickname: '小创作者' },
|
||||
{ asset_id: 30010, name: '首发作品', cover_url: MOCK_IMAGES[9], like_count: 2, owner_nickname: '小练手' },
|
||||
{ asset_id: 30011, name: '全新上线', cover_url: MOCK_IMAGES[10], like_count: 1, owner_nickname: '新起步' },
|
||||
],
|
||||
cursor: 'xinxianshang_cursor_001',
|
||||
has_more: true,
|
||||
@ -124,17 +124,17 @@ export const MOCK_XINXIANSHANG = {
|
||||
// ========== 潜力之星 - 中等点赞有潜力的作品 ==========
|
||||
export const MOCK_QIANLIXING = {
|
||||
items: [
|
||||
{ asset_id: 20001, name: '初露锋芒', cover_url: MOCK_IMAGES[0], like_count: 12800, owner_nickname: '小新芽' },
|
||||
{ asset_id: 20002, name: '蓄势待发', cover_url: MOCK_IMAGES[1], like_count: 11500, owner_nickname: '小嫩草' },
|
||||
{ asset_id: 20003, name: '冉冉升起', cover_url: MOCK_IMAGES[2], like_count: 10200, owner_nickname: '小泡泡' },
|
||||
{ asset_id: 20004, name: '明日之星', cover_url: MOCK_IMAGES[3], like_count: 9800, owner_nickname: '小火苗' },
|
||||
{ asset_id: 20005, name: '潜力无限', cover_url: MOCK_IMAGES[4], like_count: 8900, owner_nickname: '小萌芽' },
|
||||
{ asset_id: 20006, name: '闪耀新星', cover_url: MOCK_IMAGES[5], like_count: 8200, owner_nickname: '小水滴' },
|
||||
{ asset_id: 20007, name: '小荷才露', cover_url: MOCK_IMAGES[6], like_count: 7600, owner_nickname: '小竹笋' },
|
||||
{ asset_id: 20008, name: '锋芒初现', cover_url: MOCK_IMAGES[7], like_count: 7100, owner_nickname: '小鸽子' },
|
||||
{ asset_id: 20009, name: '闪闪发光', cover_url: MOCK_IMAGES[8], like_count: 6500, owner_nickname: '小萤火' },
|
||||
{ asset_id: 20010, name: '未来可期', cover_url: MOCK_IMAGES[9], like_count: 5900, owner_nickname: '小芽芽' },
|
||||
{ asset_id: 20011, name: '新秀登场', cover_url: MOCK_IMAGES[10], like_count: 5400, owner_nickname: '小藤蔓' },
|
||||
{ asset_id: 20001, name: '初露锋芒', cover_url: MOCK_IMAGES[0], like_count: 128, owner_nickname: '小新芽' },
|
||||
{ asset_id: 20002, name: '蓄势待发', cover_url: MOCK_IMAGES[1], like_count: 115, owner_nickname: '小嫩草' },
|
||||
{ asset_id: 20003, name: '冉冉升起', cover_url: MOCK_IMAGES[2], like_count: 102, owner_nickname: '小泡泡' },
|
||||
{ asset_id: 20004, name: '明日之星', cover_url: MOCK_IMAGES[3], like_count: 98, owner_nickname: '小火苗' },
|
||||
{ asset_id: 20005, name: '潜力无限', cover_url: MOCK_IMAGES[4], like_count: 89, owner_nickname: '小萌芽' },
|
||||
{ asset_id: 20006, name: '闪耀新星', cover_url: MOCK_IMAGES[5], like_count: 82, owner_nickname: '小水滴' },
|
||||
{ asset_id: 20007, name: '小荷才露', cover_url: MOCK_IMAGES[6], like_count: 76, owner_nickname: '小竹笋' },
|
||||
{ asset_id: 20008, name: '锋芒初现', cover_url: MOCK_IMAGES[7], like_count: 71, owner_nickname: '小鸽子' },
|
||||
{ asset_id: 20009, name: '闪闪发光', cover_url: MOCK_IMAGES[8], like_count: 65, owner_nickname: '小萤火' },
|
||||
{ asset_id: 20010, name: '未来可期', cover_url: MOCK_IMAGES[9], like_count: 59, owner_nickname: '小芽芽' },
|
||||
{ asset_id: 20011, name: '新秀登场', cover_url: MOCK_IMAGES[10], like_count: 54, owner_nickname: '小藤蔓' },
|
||||
],
|
||||
cursor: 'qianlixing_cursor_001',
|
||||
has_more: true,
|
||||
@ -144,17 +144,17 @@ export const MOCK_QIANLIXING = {
|
||||
// ========== 随机寻宝 - 随机混合数据 ==========
|
||||
export const MOCK_SUIJIXUNBAO = {
|
||||
items: [
|
||||
{ asset_id: 40001, name: '神秘宝藏1', cover_url: MOCK_IMAGES[0], like_count: 45000, owner_nickname: '寻宝达人' },
|
||||
{ asset_id: 40002, name: '神秘宝藏2', cover_url: MOCK_IMAGES[1], like_count: 32000, owner_nickname: '探险家' },
|
||||
{ asset_id: 40003, name: '神秘宝藏3', cover_url: MOCK_IMAGES[2], like_count: 78000, owner_nickname: '淘宝高手' },
|
||||
{ asset_id: 40004, name: '神秘宝藏4', cover_url: MOCK_IMAGES[3], like_count: 1500, owner_nickname: '捡漏王' },
|
||||
{ asset_id: 40005, name: '神秘宝藏5', cover_url: MOCK_IMAGES[4], like_count: 8500, owner_nickname: '挖宝专家' },
|
||||
{ asset_id: 40006, name: '神秘宝藏6', cover_url: MOCK_IMAGES[5], like_count: 55000, owner_nickname: '收藏家' },
|
||||
{ asset_id: 40007, name: '神秘宝藏7', cover_url: MOCK_IMAGES[6], like_count: 200, owner_nickname: '淘宝达人' },
|
||||
{ asset_id: 40008, name: '神秘宝藏8', cover_url: MOCK_IMAGES[7], like_count: 12000, owner_nickname: '猎奇者' },
|
||||
{ asset_id: 40009, name: '神秘宝藏9', cover_url: MOCK_IMAGES[8], like_count: 62000, owner_nickname: '寻宝奇兵' },
|
||||
{ asset_id: 40010, name: '神秘宝藏10', cover_url: MOCK_IMAGES[9], like_count: 800, owner_nickname: '淘宝猎人' },
|
||||
{ asset_id: 40011, name: '神秘宝藏11', cover_url: MOCK_IMAGES[10], like_count: 9500, owner_nickname: '挖宝小分队' },
|
||||
{ asset_id: 40001, name: '神秘宝藏1', cover_url: MOCK_IMAGES[0], like_count: 450, owner_nickname: '寻宝达人' },
|
||||
{ asset_id: 40002, name: '神秘宝藏2', cover_url: MOCK_IMAGES[1], like_count: 320, owner_nickname: '探险家' },
|
||||
{ asset_id: 40003, name: '神秘宝藏3', cover_url: MOCK_IMAGES[2], like_count: 780, owner_nickname: '淘宝高手' },
|
||||
{ asset_id: 40004, name: '神秘宝藏4', cover_url: MOCK_IMAGES[3], like_count: 15, owner_nickname: '捡漏王' },
|
||||
{ asset_id: 40005, name: '神秘宝藏5', cover_url: MOCK_IMAGES[4], like_count: 85, owner_nickname: '挖宝专家' },
|
||||
{ asset_id: 40006, name: '神秘宝藏6', cover_url: MOCK_IMAGES[5], like_count: 550, owner_nickname: '收藏家' },
|
||||
{ asset_id: 40007, name: '神秘宝藏7', cover_url: MOCK_IMAGES[6], like_count: 2, owner_nickname: '淘宝达人' },
|
||||
{ asset_id: 40008, name: '神秘宝藏8', cover_url: MOCK_IMAGES[7], like_count: 120, owner_nickname: '猎奇者' },
|
||||
{ asset_id: 40009, name: '神秘宝藏9', cover_url: MOCK_IMAGES[8], like_count: 620, owner_nickname: '寻宝奇兵' },
|
||||
{ asset_id: 40010, name: '神秘宝藏10', cover_url: MOCK_IMAGES[9], like_count: 8, owner_nickname: '淘宝猎人' },
|
||||
{ asset_id: 40011, name: '神秘宝藏11', cover_url: MOCK_IMAGES[10], like_count: 95, owner_nickname: '挖宝小分队' },
|
||||
],
|
||||
cursor: 'suijixunbao_cursor_001',
|
||||
has_more: true,
|
||||
@ -185,19 +185,19 @@ export function generateMockItems(category = 'hot', count = 20, startId = 50000)
|
||||
// 根据分类生成不同的点赞数范围
|
||||
switch (category) {
|
||||
case 'hot':
|
||||
like_count = 20000 + Math.floor(Math.random() * 100000) // 2w-12w
|
||||
like_count = 200 + Math.floor(Math.random() * 1000) // 200-1200
|
||||
break
|
||||
case 'new':
|
||||
like_count = 50 + Math.floor(Math.random() * 500) // 50-550
|
||||
like_count = Math.floor(Math.random() * 5) // 0-5
|
||||
break
|
||||
case 'potential':
|
||||
like_count = 3000 + Math.floor(Math.random() * 15000) // 3k-18k
|
||||
like_count = 30 + Math.floor(Math.random() * 150) // 30-180
|
||||
break
|
||||
case 'random':
|
||||
like_count = Math.floor(Math.random() * 80000) // 0-8w
|
||||
like_count = Math.floor(Math.random() * 800) // 0-800
|
||||
break
|
||||
default:
|
||||
like_count = Math.floor(Math.random() * 50000)
|
||||
like_count = Math.floor(Math.random() * 500)
|
||||
}
|
||||
|
||||
items.push({
|
||||
|
||||
@ -234,7 +234,7 @@ onUnmounted(() => {
|
||||
|
||||
.banner-tabs-wrapper {
|
||||
position: fixed;
|
||||
top: 216rpx;
|
||||
top: 248rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 100;
|
||||
|
||||
@ -85,7 +85,7 @@ const progressPercent = computed(() => {
|
||||
width: 98%;
|
||||
height: 328rpx;
|
||||
position: relative;
|
||||
margin-top: 176rpx;
|
||||
top: 240rpx;
|
||||
overflow: hidden;
|
||||
/* 性能优化:启用硬件加速 */
|
||||
transform: translateZ(0);
|
||||
|
||||
@ -323,7 +323,7 @@ function getStatusClass(status) {
|
||||
|
||||
function getStatusText(status) {
|
||||
switch (status) {
|
||||
case 'pending': return '前往'
|
||||
case 'pending': return '未完成'
|
||||
case 'completed': return '可领取'
|
||||
case 'claimed': return '已完成'
|
||||
default: return status
|
||||
|
||||
BIN
frontend/static/square/1.png
Normal file
BIN
frontend/static/square/1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 MiB |
BIN
frontend/static/square/2.png
Normal file
BIN
frontend/static/square/2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
BIN
frontend/static/square/3.png
Normal file
BIN
frontend/static/square/3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 MiB |
BIN
frontend/static/square/4.png
Normal file
BIN
frontend/static/square/4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 MiB |
@ -79,10 +79,7 @@ export function doubleTapLike(assetId, callback) {
|
||||
if (callback) callback(true);
|
||||
}).catch(err => {
|
||||
console.error('点赞失败:', err);
|
||||
// 如果是"已点赞"错误,也更新本地记录
|
||||
if (err.message && err.message.includes('already liked')) {
|
||||
markLikedToday(assetId);
|
||||
}
|
||||
uni.showToast({ title: '今日已点赞', icon: 'none' });
|
||||
if (callback) callback(false);
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user