|
@@ -29,18 +29,28 @@
|
|
|
</transition>
|
|
|
</template>
|
|
|
|
|
|
-<script setup name='Notice' lang="ts">
|
|
|
+<script setup lang="ts">
|
|
|
import {onMounted, ref} from 'vue'
|
|
|
import sleep from "@/utils/sleep";
|
|
|
import {setCallback} from '@/utils/websocket'
|
|
|
import store from '@/store'
|
|
|
import {isDev} from '@/utils/public'
|
|
|
+import Queue from "@/utils/my-queue";
|
|
|
|
|
|
const isShow = ref(false)
|
|
|
const displaySeconds = 1000 * 2
|
|
|
const isMouse = ref(false)
|
|
|
|
|
|
-const msg = ref({
|
|
|
+interface Msg {
|
|
|
+ avatar: string
|
|
|
+ deptName: string
|
|
|
+ name: string
|
|
|
+ msg: string
|
|
|
+ title: string
|
|
|
+ countDown: number,
|
|
|
+}
|
|
|
+
|
|
|
+const msg = ref<Msg>({
|
|
|
avatar: '',
|
|
|
deptName: '',
|
|
|
name: '',
|
|
@@ -49,7 +59,7 @@ const msg = ref({
|
|
|
countDown: 2,
|
|
|
})
|
|
|
|
|
|
-let queue = new Queue()
|
|
|
+let queue = new Queue<Msg>()
|
|
|
const fillData = async () => {
|
|
|
let temp = queue.poll()
|
|
|
if (temp === null) {
|
|
@@ -97,7 +107,6 @@ const test = () => {
|
|
|
// 是否开启显示通知
|
|
|
let open = true
|
|
|
onMounted(() => {
|
|
|
- // test()
|
|
|
setCallback('avatarNotification', async (value) => {
|
|
|
let newCount = store.state.app.unreadMessageCount + value.count
|
|
|
store.commit('app/setUnreadMessageCount', newCount)
|
|
@@ -110,32 +119,6 @@ onMounted(() => {
|
|
|
})
|
|
|
})
|
|
|
|
|
|
-function Queue() {
|
|
|
-
|
|
|
- let items = []
|
|
|
-
|
|
|
- Queue.prototype.enqueue = element => {
|
|
|
- items.push(element)
|
|
|
- }
|
|
|
-
|
|
|
- Queue.prototype.poll = () => {
|
|
|
- if (items.length === 0) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- let temp = items[0];
|
|
|
- items.shift();
|
|
|
- return temp;
|
|
|
- }
|
|
|
-
|
|
|
- Queue.prototype.getElement = () => {
|
|
|
- return items;
|
|
|
- }
|
|
|
-
|
|
|
- Queue.prototype.size = () => {
|
|
|
- return items.length;
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
|
|
|
</script>
|
|
|
|