| | |
| | | <span>最新公告</span> |
| | | </div> |
| | | <div class="notice_box_body"> |
| | | <div class="notice_item" v-for="item in state.announcementList" :key="item.notify_id"> |
| | | <div |
| | | class="notice_item" |
| | | v-for="item in state.announcementList" |
| | | :key="item.notify_id" |
| | | @click="announcementContentClick(item)" |
| | | > |
| | | <p>{{ item.notify_message }}</p> |
| | | <p class="text-right mr-[23px]"> |
| | | <p class="text-right mr-[19px]"> |
| | | <span>{{ item.notify_time }}</span> |
| | | </p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog |
| | | v-model="state.isAnnouncementDialog" |
| | | width="500" |
| | | :before-close="handleCloseAnnouncement" |
| | | :modal="false" |
| | | :align-center="true" |
| | | > |
| | | <div class="set-content"> |
| | | <span class="notice-content">{{ state.announcementContent }}</span> |
| | | </div> |
| | | <template #footer> |
| | | <p class="text-right text-[#555]"> |
| | | <span>{{ state.announcementTime }}</span> |
| | | </p> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import router from '/@/router'; |
| | | let state = reactive({ |
| | | isShowAnnouncement: false, |
| | | isAnnouncementDialog: false, |
| | | announcementList: [], |
| | | announcementContent: '', |
| | | announcementTime: '', |
| | | }); |
| | | |
| | | const getSystemNotify = async () => { |
| | | const res = await systemNotifyList(); |
| | | state.announcementList = res.messages || []; |
| | | res.messages.forEach((element) => { |
| | | element.notify_time = element.notify_time.slice(0, 10); |
| | | }); |
| | | state.announcementList = res.messages.sort(sortData).reverse().slice(0, 5); |
| | | }; |
| | | const routerMeta = computed(() => router.currentRoute.value.meta); |
| | | const handleAnnouncementClick = () => { |
| | |
| | | |
| | | const goBack = () => { |
| | | router.back(); |
| | | }; |
| | | //根据指定字段 规则排序 这里是获取时间的时间戳然后比较 |
| | | function sortData(a, b) { |
| | | return new Date(b.notify_time).getTime() - new Date(a.notify_time).getTime(); |
| | | } |
| | | //公告内容点击事件 |
| | | const announcementContentClick = (item) => { |
| | | state.announcementContent = item.notify_message; |
| | | state.announcementTime = item.notify_time.slice(0, 10); |
| | | state.isAnnouncementDialog = true; |
| | | }; |
| | | const handleCloseAnnouncement = () => { |
| | | state.isAnnouncementDialog = false; |
| | | }; |
| | | onMounted(() => { |
| | | getSystemNotify(); |
| | |
| | | .notice_item { |
| | | cursor: pointer; |
| | | padding: 10px; |
| | | width: 280px; |
| | | width: 272px; |
| | | border-top: 1px solid #efefef; |
| | | color: #767a97; |
| | | position: relative; |
| | | box-sizing: border-box; |
| | | line-height: 19px; |
| | | font-size: 12px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | :deep(.el-dialog__header) { |
| | | padding: 20px 20px 10px; |
| | | background: none; |
| | | .el-dialog__headerbtn .el-dialog__close { |
| | | color: #909399; |
| | | } |
| | | } |
| | | .set-content { |
| | | padding: 0px 20px; |
| | | .notice-content { |
| | | white-space: pre-wrap; |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | :deep(.el-dialog__footer) { |
| | | border-top: unset; |
| | | padding: 10px 20px 20px; |
| | | box-sizing: border-box; |
| | | } |
| | | </style> |