155 lines
3.2 KiB
Vue
155 lines
3.2 KiB
Vue
<template>
|
||
<div class="system-message">
|
||
<!-- 顶部导航 -->
|
||
<div class="nav-tabs">
|
||
<el-tabs v-model="activeTab">
|
||
<el-tab-pane label="系统消息" name="system"></el-tab-pane>
|
||
<el-tab-pane label="交易消息" name="trade"></el-tab-pane>
|
||
<el-tab-pane label="论坛社区互动" name="forum"></el-tab-pane>
|
||
</el-tabs>
|
||
<div class="read-all">
|
||
<el-button type="primary" link>全部已读</el-button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 消息列表 -->
|
||
<div class="message-list">
|
||
<div v-for="(message, index) in messages" :key="index" class="message-item">
|
||
<div class="message-icon">
|
||
<el-icon size="24">
|
||
<Bell />
|
||
</el-icon>
|
||
</div>
|
||
<div class="message-content">
|
||
<div class="message-title">
|
||
<span>{{ message.title }}</span>
|
||
</div>
|
||
<div class="message-desc">{{ message.description }}</div>
|
||
</div>
|
||
<div class="message-time">{{ message.time }}</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 查看更多 -->
|
||
<div class="view-more">
|
||
<el-button type="primary" link>查看更多 >></el-button>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup lang="ts">
|
||
import { ref } from 'vue'
|
||
import { Bell } from '@element-plus/icons-vue'
|
||
|
||
const activeTab = ref('system')
|
||
|
||
interface Message {
|
||
title: string
|
||
description: string
|
||
time: string
|
||
}
|
||
|
||
const messages = ref<Message[]>([
|
||
{
|
||
title: '国庆夕金币充值优惠!',
|
||
description: '国庆夕限时优惠,微信满500送50金币,充200送10金币',
|
||
time: '2025-03-05 17:00:57',
|
||
},
|
||
{
|
||
title: '国庆夕金币充值优惠!',
|
||
description: '国庆夕限时优惠,微信满500送50金币,充200送10金币',
|
||
time: '2025-03-05 17:00:57',
|
||
},
|
||
])
|
||
</script>
|
||
|
||
<style scoped>
|
||
.system-message {
|
||
/* background-color: #f0f6ff; */
|
||
width: 913px;
|
||
padding: 20px 25px;
|
||
box-sizing: border-box;
|
||
background: #ffffff;
|
||
border-radius: 6px;
|
||
border: 1px solid #eeeeee;
|
||
}
|
||
|
||
.nav-tabs {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
background: white;
|
||
border-radius: 8px;
|
||
margin-bottom: 20px;
|
||
width: 100%;
|
||
}
|
||
|
||
.read-all {
|
||
padding-right: 20px;
|
||
}
|
||
|
||
.message-list {
|
||
background: white;
|
||
border-radius: 8px;
|
||
width: 100%;
|
||
}
|
||
|
||
.message-item {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
padding: 15px 20px;
|
||
border-bottom: 1px solid #eee;
|
||
}
|
||
|
||
.message-item:last-child {
|
||
border-bottom: none;
|
||
}
|
||
|
||
.message-icon {
|
||
color: #409eff;
|
||
margin-right: 15px;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.message-content {
|
||
flex: 1;
|
||
min-width: 0; /* 防止文本溢出 */
|
||
}
|
||
|
||
.message-title {
|
||
font-weight: bold;
|
||
margin-bottom: 5px;
|
||
}
|
||
|
||
.message-desc {
|
||
color: #666;
|
||
font-size: 14px;
|
||
}
|
||
|
||
.message-time {
|
||
color: #999;
|
||
font-size: 12px;
|
||
flex-shrink: 0;
|
||
margin-left: 15px;
|
||
}
|
||
|
||
.view-more {
|
||
text-align: center;
|
||
padding: 10px 0;
|
||
color: #409eff;
|
||
background: white;
|
||
margin-top: 20px;
|
||
border-radius: 8px;
|
||
width: 100%;
|
||
}
|
||
|
||
:deep(.el-tabs__header) {
|
||
margin-bottom: 0;
|
||
padding-left: 20px;
|
||
}
|
||
|
||
:deep(.el-tabs__nav-wrap) {
|
||
padding-right: 20px;
|
||
}
|
||
</style>
|