diff --git a/public/13203.wav b/public/13203.wav
new file mode 100644
index 0000000..adc45dd
Binary files /dev/null and b/public/13203.wav differ
diff --git a/src/App.vue b/src/App.vue
index da5ad17..53eec9c 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -7,17 +7,19 @@
import zhCN from 'ant-design-vue/es/locale/zh_CN';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
- import { onMounted } from 'vue';
+ import { h, nextTick, onMounted, ref, watch } from 'vue';
import { getEmergencyCenterApi } from '/@/api/user.ts';
import { useUserStore } from '/@/store/modules/user.ts';
import { useRouter } from 'vue-router';
import { getBaseLogin } from '/@/enum/pageEnum.ts';
+ import { Modal } from 'ant-design-vue';
dayjs.locale('zh-cn');
const locle = zhCN;
const userStore = useUserStore();
const router = useRouter();
+ const appRouteView = ref();
onMounted(async () => {
try {
@@ -31,7 +33,32 @@
userStore.setCenterInfo(result);
}
} catch (e) {}
+ if (userStore.getUserInfo) {
+ }
+ document.body.addEventListener('click', initAudio);
});
+
+ watch(
+ () => userStore.getCount,
+ () => {
+ audioPlay();
+ }
+ );
+
+ const audio = new Audio('13203.wav');
+ function initAudio() {
+ audioPlay(true);
+ document.body.addEventListener('remove', initAudio);
+ }
+ function audioPlay(flag: boolean = false) {
+ audio.muted = flag;
+ audio.play();
+ }
+
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index ab566c0..765a48c 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -21,6 +21,7 @@ export const useUserStore = defineStore({
flag3: '', //新版大屏标识
centerId: '', //中心点id
centerInfo: null, //应急中心信息
+ count: 0,
}),
getters: {
getUserInfo(): UserInfo {
@@ -50,6 +51,9 @@ export const useUserStore = defineStore({
getCenterInfo(): any {
return this.centerInfo || getAuthCache('centerInfo');
},
+ getCount(): any {
+ return this.count || getAuthCache('count');
+ },
},
actions: {
setToken(info: string | undefined) {
@@ -87,6 +91,10 @@ export const useUserStore = defineStore({
this.centerInfo = info;
setAuthCache('centerInfo', info);
},
+ setCount() {
+ this.count++;
+ setAuthCache('count', this.count);
+ },
/**
* 登录事件
*/
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index e579384..2a2a016 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -1,5 +1,7 @@
import dayjs from 'dayjs';
import { cloneDeep } from 'lodash-es';
+import { h, nextTick } from 'vue';
+import { Modal } from 'ant-design-vue';
export function getZero(num: any) {
if (num < 10) {
@@ -69,3 +71,17 @@ export function emptyChart() {
},
};
}
+
+export function openTestModal() {
+ nextTick(() => {
+ Modal.warning({
+ content: h('span', { style: { color: '#ffffff' } }, '点击确定打开提示音'),
+ okText: '确定',
+ class: 'modal-confirm-d',
+ bodyStyle: {
+ background: '#00152b',
+ color: '#ffffff !important',
+ },
+ });
+ });
+}
diff --git a/src/views/centralScreen/centralScreen.vue b/src/views/centralScreen/centralScreen.vue
index 657f263..e873bb4 100644
--- a/src/views/centralScreen/centralScreen.vue
+++ b/src/views/centralScreen/centralScreen.vue
@@ -66,7 +66,7 @@
import PhysicalExaminationData from '/@/views/centralScreen/components/physicalExaminationData.vue';
import { useRefresh } from '/@/hooks/autoRefresh';
import { DEFAULT_TIME } from '/@/hooks/autoRefresh/pageRefreshTime.ts';
- import { useTopTime } from '/@/utils/utils.ts';
+ import { openTestModal, useTopTime } from '/@/utils/utils.ts';
import { DataType, getSettings, ThemeType } from '/@/utils/settings.ts';
import { useUserStore } from '/@/store/modules/user.ts';
import PhoneDialog from '/@/views/centralScreen/components/phoneDialog.vue';
@@ -132,6 +132,7 @@
console.log([getCenterInfo?.longitude || 106.32, getCenterInfo?.latitude || 38.45]);
init();
document.title = title.value;
+ openTestModal();
document.addEventListener('visibilitychange', checkTabState);
//设置主题
store.setThemeType(ThemeType.dark);
@@ -288,6 +289,7 @@
watch(emergencyData, (nVal) => {
if (nVal) {
nextTick(() => {
+ userStore.setCount();
setEmergencyData(nVal);
emergencyDialogRef.value.openDialog();
});
@@ -305,18 +307,21 @@
let { popType } = nVal;
if (popType == 1) {
nextTick(() => {
+ userStore.setCount();
setSocketData(nVal);
emergencyDialogRef.value.openDialog();
});
}
if (popType == 2) {
nextTick(() => {
+ userStore.setCount();
setSocketData(nVal);
yunZuoXiDialogRef.value.openDialog();
});
}
if (popType == 3) {
nextTick(() => {
+ userStore.setCount();
setSocketData(nVal);
employeeDialogRef.value.openDialog();
});
diff --git a/src/views/centralScreen/centralScreenD.vue b/src/views/centralScreen/centralScreenD.vue
index cc65e8d..a7faf1d 100644
--- a/src/views/centralScreen/centralScreenD.vue
+++ b/src/views/centralScreen/centralScreenD.vue
@@ -66,7 +66,7 @@
import PhysicalExaminationData from '/@/views/centralScreen/components/physicalExaminationData.vue';
import { useRefresh } from '/@/hooks/autoRefresh';
import { DEFAULT_TIME } from '/@/hooks/autoRefresh/pageRefreshTime.ts';
- import { useTopTime } from '/@/utils/utils.ts';
+ import { openTestModal, useTopTime } from '/@/utils/utils.ts';
import { DataType, getSettings, ThemeType } from '/@/utils/settings.ts';
import { useUserStore } from '/@/store/modules/user.ts';
import PhoneDialog from '/@/views/centralScreen/components/phoneDialog.vue';
@@ -134,6 +134,7 @@
console.log([getCenterInfo?.longitude || 106.32, getCenterInfo?.latitude || 38.45]);
init();
document.title = title.value;
+ openTestModal();
document.addEventListener('visibilitychange', checkTabState);
//设置主题
store.setThemeType(ThemeType.dark);
@@ -290,6 +291,7 @@
watch(emergencyData, (nVal) => {
if (nVal) {
nextTick(() => {
+ userStore.setCount();
setEmergencyData(nVal);
emergencyDialogRef.value.openDialog();
});
@@ -307,18 +309,21 @@
let { popType } = nVal;
if (popType == 1) {
nextTick(() => {
+ userStore.setCount();
setSocketData(nVal);
emergencyDialogRef.value.openDialog();
});
}
if (popType == 2) {
nextTick(() => {
+ userStore.setCount();
setSocketData(nVal);
yunZuoXiDialogRef.value.openDialog();
});
}
if (popType == 3) {
nextTick(() => {
+ userStore.setCount();
setSocketData(nVal);
employeeDialogRef.value.openDialog();
});
diff --git a/src/views/centralScreen/centralScreenYinChuan.vue b/src/views/centralScreen/centralScreenYinChuan.vue
index 5522983..11fc194 100644
--- a/src/views/centralScreen/centralScreenYinChuan.vue
+++ b/src/views/centralScreen/centralScreenYinChuan.vue
@@ -67,7 +67,7 @@
import PhysicalExaminationData from '/@/views/centralScreen/components/physicalExaminationData.vue';
import { useRefresh } from '/@/hooks/autoRefresh';
import { DEFAULT_TIME } from '/@/hooks/autoRefresh/pageRefreshTime.ts';
- import { useTopTime } from '/@/utils/utils.ts';
+ import { openTestModal, useTopTime } from '/@/utils/utils.ts';
import { DataType, getSettings, ThemeType } from '/@/utils/settings.ts';
import { useUserStore } from '/@/store/modules/user.ts';
import PhoneDialog from '/@/views/centralScreen/components/phoneDialog.vue';
@@ -134,6 +134,7 @@
console.log([getCenterInfo?.longitude || 106.32, getCenterInfo?.latitude || 38.45]);
init();
document.title = title.value;
+ openTestModal();
document.addEventListener('visibilitychange', checkTabState);
//设置主题
store.setThemeType(ThemeType.dark);
@@ -289,6 +290,7 @@
watch(emergencyData, (nVal) => {
if (nVal) {
+ userStore.setCount();
nextTick(() => {
setEmergencyData(nVal);
emergencyDialogRef.value.openDialog();
@@ -306,18 +308,21 @@
if (nVal) {
let { popType } = nVal;
if (popType == 1) {
+ userStore.setCount();
nextTick(() => {
setSocketData(nVal);
emergencyDialogRef.value.openDialog();
});
}
if (popType == 2) {
+ userStore.setCount();
nextTick(() => {
setSocketData(nVal);
yunZuoXiDialogRef.value.openDialog();
});
}
if (popType == 3) {
+ userStore.setCount();
nextTick(() => {
setSocketData(nVal);
employeeDialogRef.value.openDialog();
diff --git a/src/views/index.vue b/src/views/index.vue
index c58e270..b370dd1 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -53,7 +53,7 @@
import EmployeeDialog from '/@/views/components/employeeDialog.vue';
import EmergencyDialog from '/@/views/components/emergencyDialog.vue';
import YunZuoXiDialog from '/@/views/components/yunZuoXiDialog.vue';
- import { useTopTime } from '/@/utils/utils.ts';
+ import { openTestModal, useTopTime } from '/@/utils/utils.ts';
import { basicPath, emergencyPath, xianYunPath, useSocket } from '/@/utils/socket.ts';
import { useRefresh } from '/@/hooks/autoRefresh';
import { DEFAULT_TIME } from '/@/hooks/autoRefresh/pageRefreshTime.ts';
@@ -72,7 +72,6 @@
const dayTimeT = ref();
const interval = ref(1);
const setting = getSettings(DataType.xian);
-
function init() {
getTime();
interval.value = setInterval(() => {
@@ -89,6 +88,7 @@
const store = useUserStore();
onMounted(() => {
init();
+ openTestModal();
document.addEventListener('visibilitychange', checkTabState);
//设置主题
store.setThemeType(ThemeType.light);
@@ -166,6 +166,7 @@
watch(socketData, (nVal) => {
if (nVal) {
nextTick(() => {
+ store.setCount();
setSocketData(nVal);
employeeDialogRef.value.openDialog();
});
@@ -179,6 +180,7 @@
watch(emergencyData, (nVal) => {
if (nVal) {
nextTick(() => {
+ store.setCount();
setEmergencyData(nVal);
emergencyDialogRef.value.openDialog();
});
@@ -190,6 +192,7 @@
watch(xianYunData, (nVal) => {
if (nVal) {
nextTick(() => {
+ store.setCount();
setXianYunData(nVal);
yunZuoXiDialogRef.value.openDialog();
});
diff --git a/src/views/yinChuan/yinChuan.vue b/src/views/yinChuan/yinChuan.vue
index 49f3d28..b5555bf 100644
--- a/src/views/yinChuan/yinChuan.vue
+++ b/src/views/yinChuan/yinChuan.vue
@@ -67,7 +67,7 @@
import PhoneDialog from '/@/views/components/phoneDialog/phoneDialog.vue';
import TerminalAlarmDialog from '/@/views/yinChuan/componetns/TerminalAlarmDialog/TerminalAlarmDialog.vue';
import EmergencyData from '/@/views/yinChuan/componetns/emergencyData/emergencyData.vue';
- import { useTopTime } from '/@/utils/utils.ts';
+ import { openTestModal, useTopTime } from '/@/utils/utils.ts';
import { basicPath, emergencyPath, useSocket, yinChuanPath } from '/@/utils/socket.ts';
import { useRefresh } from '/@/hooks/autoRefresh';
import { DEFAULT_TIME } from '/@/hooks/autoRefresh/pageRefreshTime.ts';
@@ -85,6 +85,7 @@
onMounted(() => {
init();
document.title = title.value;
+ openTestModal();
document.addEventListener('visibilitychange', checkTabState);
//设置主题
store.setThemeType(ThemeType.dark);
@@ -131,6 +132,7 @@
watch(socketData, (nVal) => {
if (nVal) {
nextTick(() => {
+ store.setCount();
setSocketData(nVal);
employeeDialogRef.value.openDialog();
});
@@ -201,6 +203,7 @@
watch(emergencyData, (nVal) => {
if (nVal) {
nextTick(() => {
+ store.setCount();
setEmergencyData(nVal);
emergencyDialogRef.value.openDialog();
});
@@ -212,6 +215,7 @@
watch(yunZuoXiData, (nVal) => {
if (nVal) {
nextTick(() => {
+ store.setCount();
setYunZuoXiData(nVal);
yunZuoXiDialogRef.value.openDialog();
});