feat: add heritage discovery tab and AIGC consent dialog

- Add new HeritageDiscoverySection and HeritageQuickPrompts components for dedicated heritage discovery view
- Implement reusable AigcConsentDialog component for AI service user agreement prompts
- Update Discovery page to toggle between explore and heritage tab layouts
- Refactor legacy CardSwiper component into generic ExploreCards
- Adjust ChatMainList layout to include home hero sprite animation and restructure welcome section
- Refine NoticeMessage component styling and layout for better consistency
- Add build best practices guidance to AGENTS.md documentation
- Clean up minor config whitespace and formatting issues across files
This commit is contained in:
duanshuwen
2026-07-05 14:56:55 +08:00
parent 251f92bc1a
commit ca680ab41b
16 changed files with 1021 additions and 125 deletions

View File

@@ -3,11 +3,11 @@
<swiper @change="onSwiperChange" class="swiper" circular :autoplay="autoplay" :interval="interval"
:duration="duration" :indicator-dots="false">
<swiper-item v-for="item in bannerList" :key="item.entityName">
<view class="swiper-item flex flex-col flex-items-start flex-justify-between px-10" @click="clickItem(item)">
<view class="swiper-item" @click="clickItem(item)">
<text class="text-color font-size-12 font-600">
{{ item.entityName }}
</text>
<view class="flex flex-row flex-justify-between">
<view class="notice-footer">
<text class="text-color font-size-10 font-500">
发布时间{{ item.effectiveStartTime }}
</text>
@@ -19,10 +19,6 @@
</swiper-item>
</swiper>
<yo-indicator-dot :current-index="currentIndex" :length="bannerList.length" duration="0.5" default-width="4px"
active-width="16px" dot-height="4px" shape="circle" default-color="rgba(255,255,255,0.5)"
active-color="rgba(255,255,255,1)" />
</view>
<view v-else-if="props.tipsMessage">
@@ -83,45 +79,60 @@ const clickItem = (item) => {
<style lang="scss" scoped>
.swiper {
height: 50px;
height: 48px;
margin-top: 8px;
}
.swiper-item {
display: block;
height: 46px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: stretch;
height: 48px;
padding: 7px 8px;
box-sizing: border-box;
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05);
border-radius: 12px;
border: 1px solid $theme-color-200;
background: $theme-color-100;
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.9);
background: rgba(255, 255, 255, 0.96);
}
.notice-footer {
display: flex;
align-items: center;
justify-content: space-between;
min-width: 0;
}
.text-color {
color: $theme-color-500;
color: $text-color-900;
}
.underline-text {
text-decoration: underline;
text-decoration-color: $theme-color-500;
text-decoration-color: $text-color-400;
color: $text-color-400;
}
.noMessage {
display: inline-flex;
display: flex;
align-items: center;
margin-top: 8px;
padding: 4px 12px;
height: 48px;
padding: 7px 8px;
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05);
border-radius: 8px;
border: 1px solid $theme-color-200;
background: $theme-color-100;
width: fit-content;
max-width: 100%;
border: 1px solid rgba(255, 255, 255, 0.9);
background: rgba(255, 255, 255, 0.96);
width: 100%;
box-sizing: border-box;
}
.noMessage-text {
line-height: 18px;
color: $text-color-900;
line-height: 16px;
white-space: normal;
overflow-wrap: break-word;
word-break: break-all;
}
</style>
</style>