@@ -30,11 +30,6 @@
|
|||||||
<view class="hero-copy">
|
<view class="hero-copy">
|
||||||
<text class="detail-title">{{ exhibit.title }}</text>
|
<text class="detail-title">{{ exhibit.title }}</text>
|
||||||
<text class="detail-meta">{{ heroSubtitle }}</text>
|
<text class="detail-meta">{{ heroSubtitle }}</text>
|
||||||
<view v-if="exhibit.linkedExhibitStatusText" class="detail-chip-row">
|
|
||||||
<view class="detail-chip" :class="{ shared: exhibit.isSharedStop }">
|
|
||||||
<text class="detail-chip-text">{{ exhibit.linkedExhibitStatusText }}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="language-anchor" v-if="contentLanguageOptions.length">
|
<view class="language-anchor" v-if="contentLanguageOptions.length">
|
||||||
<view
|
<view
|
||||||
@@ -55,39 +50,6 @@
|
|||||||
<text class="section-text">{{ currentDetailText }}</text>
|
<text class="section-text">{{ currentDetailText }}</text>
|
||||||
<text v-if="currentDetailTextLoading" class="section-hint">正在加载讲解正文</text>
|
<text v-if="currentDetailTextLoading" class="section-hint">正在加载讲解正文</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view v-if="visibleLinkedExhibits.length" class="content-section">
|
|
||||||
<view class="section-heading compact">
|
|
||||||
<view class="section-marker muted"></view>
|
|
||||||
<text class="section-title">关联展品</text>
|
|
||||||
</view>
|
|
||||||
<view class="linked-exhibit-list">
|
|
||||||
<view
|
|
||||||
v-for="linked in visibleLinkedExhibits"
|
|
||||||
:key="linked.id"
|
|
||||||
class="linked-exhibit-item"
|
|
||||||
>
|
|
||||||
<image
|
|
||||||
v-if="linked.coverImageUrl"
|
|
||||||
class="linked-exhibit-image"
|
|
||||||
:src="linked.coverImageUrl"
|
|
||||||
mode="aspectFill"
|
|
||||||
/>
|
|
||||||
<view v-else class="linked-exhibit-image placeholder">
|
|
||||||
<text class="linked-exhibit-placeholder">展品</text>
|
|
||||||
</view>
|
|
||||||
<view class="linked-exhibit-main">
|
|
||||||
<text class="linked-exhibit-name">{{ linked.name }}</text>
|
|
||||||
<text v-if="linked.exhibitCode || linked.code" class="linked-exhibit-code">
|
|
||||||
{{ linked.exhibitCode || linked.code }}
|
|
||||||
</text>
|
|
||||||
<text v-if="linked.galleryUrls?.length" class="linked-exhibit-gallery">
|
|
||||||
图集 {{ linked.galleryUrls.length }} 张
|
|
||||||
</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
|
|
||||||
@@ -229,15 +191,6 @@ const hallLocationId = computed(() => exhibit.value.hallId || resolvedHallId.val
|
|||||||
const heroSubtitle = computed(() => [
|
const heroSubtitle = computed(() => [
|
||||||
detailMeta.value
|
detailMeta.value
|
||||||
].filter(Boolean).join(' · '))
|
].filter(Boolean).join(' · '))
|
||||||
const currentExhibitIds = computed(() => new Set([
|
|
||||||
exhibit.value.id,
|
|
||||||
detailEntryRequest.value?.exhibitId
|
|
||||||
].filter(Boolean)))
|
|
||||||
const visibleLinkedExhibits = computed(() => (
|
|
||||||
[...(exhibit.value.linkedExhibits || [])]
|
|
||||||
.filter((linked) => !currentExhibitIds.value.has(linked.id))
|
|
||||||
.sort((a, b) => (a.sortOrder ?? 0) - (b.sortOrder ?? 0))
|
|
||||||
))
|
|
||||||
const currentAudioTarget = computed(() => ({
|
const currentAudioTarget = computed(() => ({
|
||||||
targetType: exhibit.value.audio.playTargetType || 'ITEM',
|
targetType: exhibit.value.audio.playTargetType || 'ITEM',
|
||||||
targetId: exhibit.value.audio.playTargetId || exhibit.value.id,
|
targetId: exhibit.value.audio.playTargetId || exhibit.value.id,
|
||||||
@@ -930,76 +883,6 @@ const handleBack = () => {
|
|||||||
color: #68725d;
|
color: #68725d;
|
||||||
}
|
}
|
||||||
|
|
||||||
.linked-exhibit-list {
|
|
||||||
margin-top: 14px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-item {
|
|
||||||
min-height: 72px;
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 12px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background: #ffffff;
|
|
||||||
border: 1px solid #e1e5dc;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-image {
|
|
||||||
flex-shrink: 0;
|
|
||||||
width: 52px;
|
|
||||||
height: 52px;
|
|
||||||
border-radius: 6px;
|
|
||||||
background: #eef1e8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-image.placeholder {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-placeholder,
|
|
||||||
.linked-exhibit-name,
|
|
||||||
.linked-exhibit-code,
|
|
||||||
.linked-exhibit-gallery {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-placeholder {
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 16px;
|
|
||||||
font-weight: 700;
|
|
||||||
color: #68725d;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-main {
|
|
||||||
min-width: 0;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-name {
|
|
||||||
font-size: 15px;
|
|
||||||
line-height: 21px;
|
|
||||||
font-weight: 800;
|
|
||||||
color: #151713;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-code,
|
|
||||||
.linked-exhibit-gallery {
|
|
||||||
margin-top: 3px;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 17px;
|
|
||||||
color: #666d61;
|
|
||||||
}
|
|
||||||
|
|
||||||
.action-bar {
|
.action-bar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -1281,17 +1164,6 @@ const handleBack = () => {
|
|||||||
color: #6d7568;
|
color: #6d7568;
|
||||||
}
|
}
|
||||||
|
|
||||||
.linked-exhibit-list {
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.linked-exhibit-item {
|
|
||||||
min-height: 86px;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 14px;
|
|
||||||
box-shadow: 0 10px 24px rgba(40, 49, 42, 0.07);
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-audio-dock {
|
.detail-audio-dock {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
Reference in New Issue
Block a user