Commit 7ae0d08ab556c6e1fc7e657342b0cd223f7856c9

Authored by ww
1 parent a93f9961

fix: global notify has exit don not have permiseion

... ... @@ -8,7 +8,6 @@
8 8
9 9 <script lang="ts" setup>
10 10 import { ConfigProvider } from 'ant-design-vue';
11   - import { useAlarmNotify } from './views/alarm/log/hook/useAlarmNotify';
12 11 import { AppProvider } from '/@/components/Application';
13 12 import { useTitle } from '/@/hooks/web/useTitle';
14 13 import { useLocale } from '/@/locales/useLocale';
... ... @@ -16,5 +15,4 @@
16 15 const { getAntdLocale } = useLocale();
17 16
18 17 useTitle();
19   - useAlarmNotify();
20 18 </script>
... ...
... ... @@ -29,6 +29,7 @@
29 29 import { useLockPage } from '/@/hooks/web/useLockPage';
30 30
31 31 import { useAppInject } from '/@/hooks/web/useAppInject';
  32 + import { useAlarmNotify } from '/@/views/alarm/log/hook/useAlarmNotify';
32 33
33 34 export default defineComponent({
34 35 name: 'DefaultLayout',
... ... @@ -57,7 +58,7 @@
57 58 }
58 59 return cls;
59 60 });
60   -
  61 + useAlarmNotify();
61 62 return {
62 63 getShowFullHeaderRef,
63 64 getShowSidebar,
... ...
... ... @@ -4,6 +4,9 @@ import { notification, Button, Tag } from 'ant-design-vue';
4 4 import { h, onMounted, onUnmounted } from 'vue';
5 5 import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
6 6 import { alarmLevel } from '/@/views/device/list/config/detail.config';
  7 +import { RoleEnum } from '/@/enums/roleEnum';
  8 +import { usePermission } from '/@/hooks/web/usePermission';
  9 +import { useUserStore } from '/@/store/modules/user';
7 10
8 11 interface UseAlarmNotifyParams {
9 12 alarmNotifyStatus?: AlarmStatus;
... ... @@ -88,8 +91,22 @@ export function useAlarmNotify(params: UseAlarmNotifyParams = {}) {
88 91 }, interval);
89 92 };
90 93
  94 + const { hasPermission } = usePermission();
  95 +
91 96 onMounted(() => {
92   - polling();
  97 + const alarmPermissionKey = 'api:alarm:global:notify';
  98 + const hasPermissionRole = [RoleEnum.CUSTOMER_USER, RoleEnum.TENANT_ADMIN];
  99 + const userInfo = useUserStore().getUserInfo;
  100 + const userRoles = userInfo.roles || [];
  101 +
  102 + const getPermissionFlag = () => {
  103 + for (const item of userRoles) {
  104 + const flag = hasPermissionRole.find((each) => item === each);
  105 + if (flag) return true;
  106 + }
  107 + return false;
  108 + };
  109 + if (hasPermission(alarmPermissionKey) && getPermissionFlag()) polling();
93 110 });
94 111
95 112 onUnmounted(() => {
... ...
... ... @@ -5,8 +5,8 @@
5 5 import { Tabs, Row, Col, Spin, Button, Pagination, Empty } from 'ant-design-vue';
6 6 import { cameraPage } from '/@/api/camera/cameraManager';
7 7 import { CameraRecord } from '/@/api/camera/model/cameraModel';
8   - import { videoPlay as VideoPlay } from 'vue3-video-play'; // 引入组件
9   - import 'vue3-video-play/dist/style.css'; // 引入css
  8 + import { videoPlay as VideoPlay } from 'vue3-video-play';
  9 + import 'vue3-video-play/dist/style.css';
10 10 import { useFullscreen } from '@vueuse/core';
11 11 import CameraDrawer from './CameraDrawer.vue';
12 12 import { useDrawer } from '/@/components/Drawer';
... ...