|
@@ -2,21 +2,25 @@
|
|
|
<div class="message">
|
|
|
<el-popover placement="bottom" :width="310" trigger="click">
|
|
|
<template #reference>
|
|
|
- <el-badge :value="5" class="item">
|
|
|
+ <el-badge :value="newNotice" class="item">
|
|
|
<i :class="'iconfont icon-xiaoxi'" class="toolBar-icon"></i>
|
|
|
</el-badge>
|
|
|
</template>
|
|
|
<el-tabs v-model="activeName">
|
|
|
- <el-tab-pane label="通知(5)" name="first">
|
|
|
+ <el-tab-pane :label="`通知(${newNotice})`" name="first">
|
|
|
<div class="message-list">
|
|
|
- <div class="message-item">
|
|
|
- <img src="@/assets/images/msg01.png" alt="" class="message-icon" />
|
|
|
- <div class="message-content">
|
|
|
- <span class="message-title">一键三连 eco-Admin 🧡</span>
|
|
|
- <span class="message-date">一分钟前</span>
|
|
|
+ <template v-for="(item, index) in newsList" :key="index">
|
|
|
+ <div class="message-item">
|
|
|
+ <img src="@/assets/images/msg01.png" alt="" @click="onNewsClick(index)" class="message-icon" />
|
|
|
+ <div class="message-content">
|
|
|
+ <span class="message-title">{{ item.message }} 🧡</span>
|
|
|
+ <span class="message-date">{{ item.time }}</span>
|
|
|
+ </div>
|
|
|
+ <span v-if="item.read" class="el-tag el-tag--success el-tag--mini read">已读</span>
|
|
|
+ <span v-else class="el-tag el-tag--danger el-tag--mini read">未读</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="message-item">
|
|
|
+ </template>
|
|
|
+ <!-- <div class="message-item">
|
|
|
<img src="@/assets/images/msg02.png" alt="" class="message-icon" />
|
|
|
<div class="message-content">
|
|
|
<span class="message-title">一键三连 eco-Admin 💙</span>
|
|
@@ -43,7 +47,7 @@
|
|
|
<span class="message-title">一键三连 eco-Admin 💛</span>
|
|
|
<span class="message-date">一个月前</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="消息(0)" name="second">
|
|
@@ -66,6 +70,7 @@
|
|
|
<script setup lang="ts">
|
|
|
import useNoticeStore from '@/stores/modules/notice'
|
|
|
const noticeStore = storeToRefs(useNoticeStore())
|
|
|
+// const { readAll } = useNoticeStore()
|
|
|
const activeName = ref('first')
|
|
|
const newNotice = ref(0)
|
|
|
// 定义变量内容
|
|
@@ -73,7 +78,12 @@ const state = reactive({
|
|
|
loading: false
|
|
|
})
|
|
|
const newsList = ref([]) as any
|
|
|
-
|
|
|
+//点击消息,写入已读
|
|
|
+const onNewsClick = (item: any) => {
|
|
|
+ newsList.value[item].read = true
|
|
|
+ //并且写入pinia
|
|
|
+ noticeStore.state.value.notices = newsList.value
|
|
|
+}
|
|
|
/**
|
|
|
* 初始化数据
|
|
|
* @returns
|
|
@@ -109,6 +119,7 @@ watch(
|
|
|
.message-list {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
+ min-height: 260px;
|
|
|
.message-item {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
@@ -121,10 +132,12 @@ watch(
|
|
|
width: 40px;
|
|
|
height: 40px;
|
|
|
margin: 0 20px 0 5px;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
.message-content {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
+ margin-right: 20px;
|
|
|
.message-title {
|
|
|
margin-bottom: 5px;
|
|
|
}
|