Слияние кода завершено, страница обновится автоматически
<template>
<div class="user-news-container">
<el-tabs stretch class="content-box">
<el-tab-pane label="站内信">
<template #label>
<el-icon><ele-Bell /></el-icon>
<span style="margin-left: 5px">站内信</span>
</template>
<div class="notice-box">
<template v-if="noticeList.length > 0">
<div class="notice-item" v-for="(v, k) in noticeList" :key="k" @click="viewNoticeDetail(v)" v-show="v.readStatus == 1 ? false : true">
<div class="notice-title">{{ v.type == 1 ? '【通知】' : '【公告】' }}{{ v.title }}</div>
<div class="notice-content">{{ removeHtmlSub(v.content) }}</div>
<div class="notice-time">{{ v.publicTime }}</div>
<el-divider border-style="dashed" style="margin: 10px 0" />
</div>
</template>
<el-empty description="空" v-else></el-empty>
</div>
<div class="notice-foot" @click="goToNotice" v-if="noticeList.length > 0">前往通知中心</div>
</el-tab-pane>
<el-tab-pane label="我的">
<template #label>
<el-icon><ele-Position /></el-icon>
<span style="margin-left: 5px">我的</span>
</template>
<div style="height: 400px; overflow-y: auto; padding-right: 10px">
<el-empty description="空"></el-empty>
</div>
</el-tab-pane>
</el-tabs>
<el-dialog v-model="state.dialogVisible" draggable width="769px">
<template #header>
<div style="color: #fff">
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Bell /> </el-icon>
<span> 消息详情 </span>
</div>
</template>
<div class="w-e-text-container">
<div v-html="state.content" data-slate-editor></div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="state.dialogVisible = false">确认</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts" name="layoutBreadcrumbUserNews">
import '@wangeditor/editor/dist/css/style.css';
import { reactive } from 'vue';
import router from '/@/router';
import commonFunction from '/@/utils/commonFunction';
import { getAPI } from '/@/utils/axios-utils';
import { SysNoticeApi } from '/@/api-services/api';
defineProps({
noticeList: Array as any,
});
const { removeHtmlSub } = commonFunction();
const state = reactive({
dialogVisible: false,
content: '',
});
// 前往通知中心点击
const goToNotice = () => {
router.push('/dashboard/notice');
};
// 查看消息详情
const viewNoticeDetail = async (notice: any) => {
state.content = notice.content;
state.dialogVisible = true;
// 设置已读
notice.readStatus = 1;
await getAPI(SysNoticeApi).apiSysNoticeSetReadPost({ id: notice.id });
};
</script>
<style scoped lang="scss">
.user-news-container {
.content-box {
font-size: 12px;
.notice-box {
height: 400px;
padding-right: 10px;
margin-bottom: 35px;
&:hover {
overflow-y: scroll;
}
}
.notice-item {
&:hover {
background-color: rgba(#b8b8b8, 0.1);
}
// .notice-title {
// color: var(--el-color-primary);
// }
.notice-content {
color: var(--el-text-color-secondary);
margin-top: 3px;
margin-bottom: 3px;
}
.notice-time {
color: var(--el-text-color-secondary);
text-align: right;
}
}
}
.notice-foot {
height: 35px;
width: 100%;
color: var(--el-color-primary);
font-size: 14px;
cursor: pointer;
position: absolute;
bottom: 0px;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )