fix: wteail detail
This commit is contained in:
@@ -13,3 +13,10 @@ export const getWallpaperCategoryList = async () => {
|
|||||||
method: "GET",
|
method: "GET",
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getWallpaperRecommendList = async () => {
|
||||||
|
return request({
|
||||||
|
url: `/api/blessing/wallpaper/recommend/list`,
|
||||||
|
method: "get",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -13,109 +13,107 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<scroll-view scroll-y class="content-scroll">
|
<view class="content-container">
|
||||||
<view class="content-container">
|
<!-- Sharer Info -->
|
||||||
<!-- Sharer Info -->
|
<view class="sharer-info" v-if="detailData.from">
|
||||||
<view class="sharer-info" v-if="detailData.from">
|
<image
|
||||||
<image
|
:src="detailData.from.avatar || '/static/default-avatar.png'"
|
||||||
:src="detailData.from.avatar || '/static/default-avatar.png'"
|
class="avatar"
|
||||||
class="avatar"
|
mode="aspectFill"
|
||||||
mode="aspectFill"
|
/>
|
||||||
/>
|
<view class="info-text">
|
||||||
<view class="info-text">
|
<view class="nickname">{{
|
||||||
<view class="nickname">{{
|
detailData.from.nickname || "神秘好友"
|
||||||
detailData.from.nickname || "神秘好友"
|
}}</view>
|
||||||
}}</view>
|
<view class="action-text">给你分享了一张2026新春精美壁纸</view>
|
||||||
<view class="action-text">给你分享了一张2026新春精美壁纸</view>
|
<view class="sub-text">★ 2026 且马贺岁</view>
|
||||||
<view class="sub-text">★ 2026 且马贺岁</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- Wallpaper Preview -->
|
|
||||||
<view class="preview-card">
|
|
||||||
<view class="preview-badge">PREVIEW</view>
|
|
||||||
<image
|
|
||||||
:src="detailData.imageUrl"
|
|
||||||
mode="widthFix"
|
|
||||||
class="main-image"
|
|
||||||
@tap="previewImage"
|
|
||||||
/>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- Action Buttons -->
|
|
||||||
<view class="action-buttons">
|
|
||||||
<button class="btn primary-btn" @tap="goToIndex">
|
|
||||||
<text class="btn-icon">✨</text>
|
|
||||||
<text>我也要领同款壁纸</text>
|
|
||||||
</button>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- More Wallpapers -->
|
|
||||||
<view class="more-section">
|
|
||||||
<view class="section-header">
|
|
||||||
<text class="section-title">更多精美新春壁纸</text>
|
|
||||||
<view class="more-link" @tap="goToIndex">
|
|
||||||
<text>查看更多</text>
|
|
||||||
<text class="arrow">›</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="more-grid">
|
|
||||||
<view
|
|
||||||
v-for="(item, index) in recommendList"
|
|
||||||
:key="index"
|
|
||||||
class="grid-item"
|
|
||||||
@tap="onRecommendClick(item)"
|
|
||||||
>
|
|
||||||
<image :src="item.imageUrl" mode="aspectFill" class="grid-img" />
|
|
||||||
<text class="item-title">{{ item.title || "新春壁纸" }}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- Fortune Banner -->
|
|
||||||
<!-- Wallpaper Banner -->
|
|
||||||
<view class="wallpaper-banner" @tap="goToFortune">
|
|
||||||
<view class="banner-icon">
|
|
||||||
<text>🏮</text>
|
|
||||||
</view>
|
|
||||||
<view class="banner-content">
|
|
||||||
<text class="banner-title">去抽取新年运势</text>
|
|
||||||
<text class="banner-desc">每日一签,开启你的新年好运</text>
|
|
||||||
</view>
|
|
||||||
<text class="banner-arrow">›</text>
|
|
||||||
</view>
|
|
||||||
<view class="wallpaper-banner" @tap="goToGreeting">
|
|
||||||
<view class="banner-icon">
|
|
||||||
<text>🧧</text>
|
|
||||||
</view>
|
|
||||||
<view class="banner-content">
|
|
||||||
<text class="banner-title">去制作新年贺卡</text>
|
|
||||||
<text class="banner-desc">定制专属祝福,传递浓浓年味</text>
|
|
||||||
</view>
|
|
||||||
<text class="banner-arrow">›</text>
|
|
||||||
</view>
|
|
||||||
<view class="wallpaper-banner" @tap="goToAvatar">
|
|
||||||
<view class="banner-icon">
|
|
||||||
<text>🖼</text>
|
|
||||||
</view>
|
|
||||||
<view class="banner-content">
|
|
||||||
<text class="banner-title">去挑选新年头像</text>
|
|
||||||
<text class="banner-desc">精选新年头像,让手机也过年</text>
|
|
||||||
</view>
|
|
||||||
<text class="banner-arrow">›</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- Footer -->
|
|
||||||
<view class="footer">
|
|
||||||
<view class="footer-divider">
|
|
||||||
<view class="line"></view>
|
|
||||||
<text class="footer-text">2026 HAPPY NEW YEAR</text>
|
|
||||||
<view class="line"></view>
|
|
||||||
</view>
|
|
||||||
<view class="footer-sub">新春祝福 · 传递温情</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
|
||||||
|
<!-- Wallpaper Preview -->
|
||||||
|
<view class="preview-card">
|
||||||
|
<view class="preview-badge">PREVIEW</view>
|
||||||
|
<image
|
||||||
|
:src="detailData.imageUrl"
|
||||||
|
mode="widthFix"
|
||||||
|
class="main-image"
|
||||||
|
@tap="previewImage"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- Action Buttons -->
|
||||||
|
<view class="action-buttons">
|
||||||
|
<button class="btn primary-btn" @tap="goToIndex">
|
||||||
|
<text class="btn-icon">✨</text>
|
||||||
|
<text>我也要领同款壁纸</text>
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- More Wallpapers -->
|
||||||
|
<view class="more-section">
|
||||||
|
<view class="section-header">
|
||||||
|
<text class="section-title">更多精美新春壁纸</text>
|
||||||
|
<view class="more-link" @tap="goToIndex">
|
||||||
|
<text>查看更多</text>
|
||||||
|
<text class="arrow">›</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="more-grid">
|
||||||
|
<view
|
||||||
|
v-for="(item, index) in recommendList"
|
||||||
|
:key="index"
|
||||||
|
class="grid-item"
|
||||||
|
@tap="onRecommendClick(item)"
|
||||||
|
>
|
||||||
|
<image :src="item.imageUrl" mode="aspectFill" class="grid-img" />
|
||||||
|
<text class="item-title">{{ item.title || "新春壁纸" }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- Fortune Banner -->
|
||||||
|
<!-- Wallpaper Banner -->
|
||||||
|
<view class="wallpaper-banner" @tap="goToFortune">
|
||||||
|
<view class="banner-icon">
|
||||||
|
<text>🏮</text>
|
||||||
|
</view>
|
||||||
|
<view class="banner-content">
|
||||||
|
<text class="banner-title">去抽取新年运势</text>
|
||||||
|
<text class="banner-desc">每日一签,开启你的新年好运</text>
|
||||||
|
</view>
|
||||||
|
<text class="banner-arrow">›</text>
|
||||||
|
</view>
|
||||||
|
<view class="wallpaper-banner" @tap="goToGreeting">
|
||||||
|
<view class="banner-icon">
|
||||||
|
<text>🧧</text>
|
||||||
|
</view>
|
||||||
|
<view class="banner-content">
|
||||||
|
<text class="banner-title">去制作新年贺卡</text>
|
||||||
|
<text class="banner-desc">定制专属祝福,传递浓浓年味</text>
|
||||||
|
</view>
|
||||||
|
<text class="banner-arrow">›</text>
|
||||||
|
</view>
|
||||||
|
<view class="wallpaper-banner" @tap="goToAvatar">
|
||||||
|
<view class="banner-icon">
|
||||||
|
<text>🖼</text>
|
||||||
|
</view>
|
||||||
|
<view class="banner-content">
|
||||||
|
<text class="banner-title">去挑选新年头像</text>
|
||||||
|
<text class="banner-desc">精选新年头像,让手机也过年</text>
|
||||||
|
</view>
|
||||||
|
<text class="banner-arrow">›</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<view class="footer">
|
||||||
|
<view class="footer-divider">
|
||||||
|
<view class="line"></view>
|
||||||
|
<text class="footer-text">2026 HAPPY NEW YEAR</text>
|
||||||
|
<view class="line"></view>
|
||||||
|
</view>
|
||||||
|
<view class="footer-sub">新春祝福 · 传递温情</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -124,7 +122,7 @@ import { ref } from "vue";
|
|||||||
import { onLoad } from "@dcloudio/uni-app";
|
import { onLoad } from "@dcloudio/uni-app";
|
||||||
import { getBavBarHeight } from "@/utils/system";
|
import { getBavBarHeight } from "@/utils/system";
|
||||||
import { getPageDetail } from "@/api/system";
|
import { getPageDetail } from "@/api/system";
|
||||||
import { getWallpaperList } from "@/api/wallpaper";
|
import { getWallpaperRecommendList } from "@/api/wallpaper";
|
||||||
import { saveViewRequest } from "@/utils/common.js";
|
import { saveViewRequest } from "@/utils/common.js";
|
||||||
|
|
||||||
const navHeight = getBavBarHeight();
|
const navHeight = getBavBarHeight();
|
||||||
@@ -162,13 +160,8 @@ const fetchDetail = async () => {
|
|||||||
|
|
||||||
const fetchRecommend = async () => {
|
const fetchRecommend = async () => {
|
||||||
try {
|
try {
|
||||||
// Try to get wallpapers. Assuming empty category returns a default list or we use a known category if available.
|
const res = await getWallpaperRecommendList();
|
||||||
// For now, passing empty string as categoryId.
|
recommendList.value = res;
|
||||||
const res = await getWallpaperList("", 1);
|
|
||||||
if (res && res.list) {
|
|
||||||
// Take first 3 items
|
|
||||||
recommendList.value = res.list.slice(0, 3);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Failed to fetch recommendations", e);
|
console.error("Failed to fetch recommendations", e);
|
||||||
}
|
}
|
||||||
@@ -198,22 +191,15 @@ const goToFortune = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const previewImage = () => {
|
const previewImage = () => {
|
||||||
if (detailData.value.imageUrl) {
|
// if (detailData.value.imageUrl) {
|
||||||
uni.previewImage({
|
// uni.previewImage({
|
||||||
urls: [detailData.value.imageUrl],
|
// urls: [detailData.value.imageUrl],
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
};
|
};
|
||||||
|
|
||||||
const onRecommendClick = (item) => {
|
const onRecommendClick = () => {
|
||||||
// If clicking a recommended item, maybe we just preview it or go to wallpaper list?
|
goToIndex();
|
||||||
// Since this is a "detail" page for a specific share, clicking another wallpaper
|
|
||||||
// might normally go to its detail, but we don't have a generic detail page logic
|
|
||||||
// (unless we reuse this page with a new token, but these items might not have tokens).
|
|
||||||
// Best fallback: Preview it.
|
|
||||||
uni.previewImage({
|
|
||||||
urls: [item.imageUrl],
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const goToGreeting = () => {
|
const goToGreeting = () => {
|
||||||
@@ -232,8 +218,6 @@ const goToAvatar = () => {
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar {
|
.nav-bar {
|
||||||
@@ -242,7 +226,7 @@ const goToAvatar = () => {
|
|||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
background-color: transparent; // Make it transparent as per design
|
background-color: #ffffff;
|
||||||
|
|
||||||
.nav-content {
|
.nav-content {
|
||||||
height: 44px; // Standard nav height
|
height: 44px; // Standard nav height
|
||||||
@@ -274,11 +258,6 @@ const goToAvatar = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-scroll {
|
|
||||||
flex: 1;
|
|
||||||
height: 0; // Important for scroll-view in flex container
|
|
||||||
}
|
|
||||||
|
|
||||||
.content-container {
|
.content-container {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
padding-bottom: 40px;
|
padding-bottom: 40px;
|
||||||
|
|||||||
Reference in New Issue
Block a user