|
@@ -3,23 +3,21 @@
|
|
|
<el-popover :width="220">
|
|
|
<div v-if="data.systemUpdatesMessage">
|
|
|
系统更新通知:
|
|
|
- <span style="color: red;text-decoration: underline">
|
|
|
+ <span style="color: red; text-decoration: underline">
|
|
|
{{ data.systemUpdatesMessage }}
|
|
|
- </span>
|
|
|
- <br>
|
|
|
+ </span>
|
|
|
+ <br />
|
|
|
<span style="color: red">
|
|
|
- <span class="red-point">
|
|
|
- 注意
|
|
|
- </span>
|
|
|
- 系统更新期间请勿操作
|
|
|
- </span>
|
|
|
+ <span class="red-point"> 注意 </span>
|
|
|
+ 系统更新期间请勿操作
|
|
|
+ </span>
|
|
|
</div>
|
|
|
普通通知: {{ data.scrollingMessages }}
|
|
|
<template #reference>
|
|
|
<div class="scroll_system_box">
|
|
|
- <i class="iconfont icon-tongzhi"/>
|
|
|
+ <i class="iconfont icon-tongzhi" />
|
|
|
<transition name="el-zoom-in-top">
|
|
|
- <div class='ad' ref="adRef"/>
|
|
|
+ <div class="ad" ref="adRef" />
|
|
|
</transition>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -27,68 +25,69 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<script setup name='ScrollNotifications' lang="ts">
|
|
|
-import {ref, onMounted, Ref, nextTick, watch} from "vue";
|
|
|
-import {setCallback} from "@/utils/websocket";
|
|
|
-import {getSystemAnnouncement} from "@/api/public-api";
|
|
|
+<script setup name="ScrollNotifications" lang="ts">
|
|
|
+import { ref, onMounted, Ref, nextTick, watch } from "vue";
|
|
|
+import { setCallback } from "@/utils/websocket";
|
|
|
+import { getSystemAnnouncement } from "@/api/public-api";
|
|
|
|
|
|
const props = defineProps({
|
|
|
- data: Object
|
|
|
-})
|
|
|
-const adRef: Ref<HTMLElement> = ref(null)
|
|
|
+ data: Object,
|
|
|
+});
|
|
|
+const adRef: Ref<HTMLElement> = ref(null);
|
|
|
|
|
|
const scrollStyle: object = ref({
|
|
|
- '--xc-translateX': 0,
|
|
|
- '--xc-width': 40,
|
|
|
-})
|
|
|
-let marginRight = 40
|
|
|
-
|
|
|
+ "--xc-translateX": 0,
|
|
|
+ "--xc-width": 40,
|
|
|
+});
|
|
|
+let marginRight = 40;
|
|
|
|
|
|
const data = ref({
|
|
|
- systemUpdatesMessage: '',
|
|
|
- scrollingMessages: ''
|
|
|
-})
|
|
|
-
|
|
|
-watch(() => data.value, async () => {
|
|
|
- await nextTick()
|
|
|
- if (data.value.systemUpdatesMessage || data.value.scrollingMessages) {
|
|
|
- adRef.value.style.display = null
|
|
|
- scrollStyle.value['--xc-width'] = 'max-content'
|
|
|
- } else {
|
|
|
- adRef.value.style.display = 'none'
|
|
|
- scrollStyle.value['--xc-width'] = '30px'
|
|
|
- }
|
|
|
- adRef.value.innerHTML = null
|
|
|
- let div1 = document.createElement('div')
|
|
|
- let html = `
|
|
|
- <span style="color: red">${data.value.systemUpdatesMessage ? data.value.systemUpdatesMessage : ''}</span>
|
|
|
- <span style="color: #0a84fd">${data.value.scrollingMessages ? data.value.scrollingMessages : ''}</span>
|
|
|
- `
|
|
|
- div1.innerHTML = html
|
|
|
- adRef.value.append(div1)
|
|
|
- let width = div1.clientWidth
|
|
|
- if (width >= 220) {
|
|
|
- div1.style.marginRight = '40px'
|
|
|
- div1.className = 'scroll_system_message'
|
|
|
- await nextTick()
|
|
|
- scrollStyle.value['--xc-translateX'] = -(width + marginRight) + 'px'
|
|
|
- let div2 = document.createElement('div')
|
|
|
- div2.innerHTML = html
|
|
|
- div2.className = 'scroll_system_message'
|
|
|
- adRef.value.append(div2)
|
|
|
- }
|
|
|
-}, {immediate: true})
|
|
|
-
|
|
|
+ systemUpdatesMessage: "",
|
|
|
+ scrollingMessages: "",
|
|
|
+});
|
|
|
+
|
|
|
+watch(
|
|
|
+ () => data.value,
|
|
|
+ async () => {
|
|
|
+ await nextTick();
|
|
|
+ if (data.value.systemUpdatesMessage || data.value.scrollingMessages) {
|
|
|
+ adRef.value.style.display = null;
|
|
|
+ scrollStyle.value["--xc-width"] = "max-content";
|
|
|
+ } else {
|
|
|
+ adRef.value.style.display = "none";
|
|
|
+ scrollStyle.value["--xc-width"] = "30px";
|
|
|
+ }
|
|
|
+ adRef.value.innerHTML = null;
|
|
|
+ let div1 = document.createElement("div");
|
|
|
+ let html = `
|
|
|
+ <span style="color: red">${data.value.systemUpdatesMessage ? data.value.systemUpdatesMessage : ""}</span>
|
|
|
+ <span style="color: #0a84fd">${data.value.scrollingMessages ? data.value.scrollingMessages : ""}</span>
|
|
|
+ `;
|
|
|
+ div1.innerHTML = html;
|
|
|
+ adRef.value.append(div1);
|
|
|
+ let width = div1.clientWidth;
|
|
|
+ if (width >= 220) {
|
|
|
+ div1.style.marginRight = "40px";
|
|
|
+ div1.className = "scroll_system_message";
|
|
|
+ await nextTick();
|
|
|
+ scrollStyle.value["--xc-translateX"] = -(width + marginRight) + "px";
|
|
|
+ let div2 = document.createElement("div");
|
|
|
+ div2.innerHTML = html;
|
|
|
+ div2.className = "scroll_system_message";
|
|
|
+ adRef.value.append(div2);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ { immediate: true }
|
|
|
+);
|
|
|
|
|
|
onMounted(() => {
|
|
|
- setCallback("systemAnnouncement", async ({data: res}) => {
|
|
|
- data.value = res
|
|
|
- })
|
|
|
- getSystemAnnouncement().then((res) => {
|
|
|
- data.value = res
|
|
|
- })
|
|
|
-})
|
|
|
-
|
|
|
+ setCallback("systemAnnouncement", async ({ data: res }) => {
|
|
|
+ data.value = res;
|
|
|
+ });
|
|
|
+ getSystemAnnouncement().then(res => {
|
|
|
+ data.value = res;
|
|
|
+ });
|
|
|
+});
|
|
|
</script>
|
|
|
<style lang="scss">
|
|
|
@keyframes move {
|
|
@@ -107,7 +106,6 @@ onMounted(() => {
|
|
|
</style>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
-
|
|
|
.scroll_system_box {
|
|
|
display: flex;
|
|
|
justify-content: center;
|
|
@@ -153,8 +151,5 @@ onMounted(() => {
|
|
|
overflow: hidden;
|
|
|
margin-left: 5px;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
</style>
|