@ -111,6 +111,7 @@ if (article?.brand_id) {
|
||||
|
||||
{/* 单图收藏:hover 显示,已收藏常驻实心 */}
|
||||
<button
|
||||
login-required
|
||||
type="button"
|
||||
data-fav-id={im.id}
|
||||
data-fav-url={im.raw}
|
||||
@ -139,7 +140,7 @@ if (article?.brand_id) {
|
||||
<figure
|
||||
x-show="!isAuthed && preview"
|
||||
x-cloak
|
||||
@click="goLogin()"
|
||||
login-redirect
|
||||
class="relative bg-[#f2f2f2] cursor-pointer group overflow-hidden"
|
||||
>
|
||||
{/* 与真实图片等高的 3:4 图位:锁图标 + 提示,点击跳登录 */}
|
||||
@ -178,6 +179,7 @@ if (article?.brand_id) {
|
||||
class="w-full aspect-[3/4] object-cover group-hover:opacity-90 transition-opacity"
|
||||
/>
|
||||
<button
|
||||
login-required
|
||||
type="button"
|
||||
:data-fav-id="im.id"
|
||||
:data-fav-url="im.raw"
|
||||
@ -239,6 +241,7 @@ if (article?.brand_id) {
|
||||
></div>
|
||||
|
||||
<button
|
||||
login-required
|
||||
type="button"
|
||||
@click.stop="toggleFav(currentFavId, currentFavUrl)"
|
||||
:class="isFav(currentFavId) ? 'is-fav' : ''"
|
||||
@ -474,6 +477,21 @@ if (article?.brand_id) {
|
||||
}))
|
||||
this.extraImages = mapped
|
||||
this.showAll = true
|
||||
// VIP:前 PREVIEW_LIMIT 张是 SSR 静态渲染的普通样式图(SSR 无用户令牌,
|
||||
// 后端回落 normal)。VIP 已登录后此处把首屏图也替换为高清原图(后端对 VIP 返回 HD URL),
|
||||
// 否则 VIP 仅第 6 张起看高清,首屏仍是普通图,体验不一致。
|
||||
const me = getUser()
|
||||
if (me && me.tier === "vip") {
|
||||
const hd = (full.images || []).slice(0, 5).map((im: any) => toAbs(im.image || ""))
|
||||
hd.forEach((url: string, i: number) => {
|
||||
if (!url) return
|
||||
const fig = document.querySelector<HTMLElement>(`#article-gallery [data-image-index="${i}"]`)
|
||||
if (!fig) return
|
||||
fig.dataset.imageUrl = url
|
||||
const img = fig.querySelector("img")
|
||||
if (img) img.setAttribute("src", url)
|
||||
})
|
||||
}
|
||||
await this.$nextTick()
|
||||
this.imageCount = document.querySelectorAll(
|
||||
"#article-gallery [data-image-index]"
|
||||
@ -486,13 +504,6 @@ if (article?.brand_id) {
|
||||
}
|
||||
},
|
||||
|
||||
// 未登录门禁:跳登录并回跳本篇详情
|
||||
goLogin() {
|
||||
const back = window.location.pathname + window.location.search
|
||||
const loc = window.location.pathname.startsWith("/cn") ? "cn" : "en"
|
||||
window.location.href = `/${loc}/login?redirect=${encodeURIComponent(back)}`
|
||||
},
|
||||
|
||||
// ?img=<图片uid> 深链:个人中心点单图收藏 → 打开所属图集并滚动定位到该图。
|
||||
// 默认只定位 + 短暂高亮,不弹灯箱(不打断浏览);显式带 &lb=1 才自动开灯箱。
|
||||
maybeLocateImageFromUrl() {
|
||||
@ -568,13 +579,6 @@ if (article?.brand_id) {
|
||||
|
||||
toggleFav(id: string, url: string) {
|
||||
if (!id) return
|
||||
// 未登录:收藏无处落盘(服务端无 token、本地无用户 key),引导登录后回跳本篇
|
||||
if (!getUser()) {
|
||||
const back = window.location.pathname + window.location.search
|
||||
const loc = window.location.pathname.startsWith("/cn") ? "cn" : "en"
|
||||
window.location.href = `/${loc}/login?redirect=${encodeURIComponent(back)}`
|
||||
return
|
||||
}
|
||||
toggleImageFavorite({
|
||||
imageId: id,
|
||||
type: this.favType === "snap_image" ? "snap_image" : "runway_image",
|
||||
|
||||
Reference in New Issue
Block a user