Commit 0950ebd28006f733e3e308879d45e07cc855e629
Merge branch 'ww' into 'main'
fix: global notify has exit don not have permiseion See merge request huang/yun-teng-iot-front!352
Showing
4 changed files
with
22 additions
and
6 deletions
@@ -8,7 +8,6 @@ | @@ -8,7 +8,6 @@ | ||
8 | 8 | ||
9 | <script lang="ts" setup> | 9 | <script lang="ts" setup> |
10 | import { ConfigProvider } from 'ant-design-vue'; | 10 | import { ConfigProvider } from 'ant-design-vue'; |
11 | - import { useAlarmNotify } from './views/alarm/log/hook/useAlarmNotify'; | ||
12 | import { AppProvider } from '/@/components/Application'; | 11 | import { AppProvider } from '/@/components/Application'; |
13 | import { useTitle } from '/@/hooks/web/useTitle'; | 12 | import { useTitle } from '/@/hooks/web/useTitle'; |
14 | import { useLocale } from '/@/locales/useLocale'; | 13 | import { useLocale } from '/@/locales/useLocale'; |
@@ -16,5 +15,4 @@ | @@ -16,5 +15,4 @@ | ||
16 | const { getAntdLocale } = useLocale(); | 15 | const { getAntdLocale } = useLocale(); |
17 | 16 | ||
18 | useTitle(); | 17 | useTitle(); |
19 | - useAlarmNotify(); | ||
20 | </script> | 18 | </script> |
@@ -29,6 +29,7 @@ | @@ -29,6 +29,7 @@ | ||
29 | import { useLockPage } from '/@/hooks/web/useLockPage'; | 29 | import { useLockPage } from '/@/hooks/web/useLockPage'; |
30 | 30 | ||
31 | import { useAppInject } from '/@/hooks/web/useAppInject'; | 31 | import { useAppInject } from '/@/hooks/web/useAppInject'; |
32 | + import { useAlarmNotify } from '/@/views/alarm/log/hook/useAlarmNotify'; | ||
32 | 33 | ||
33 | export default defineComponent({ | 34 | export default defineComponent({ |
34 | name: 'DefaultLayout', | 35 | name: 'DefaultLayout', |
@@ -57,7 +58,7 @@ | @@ -57,7 +58,7 @@ | ||
57 | } | 58 | } |
58 | return cls; | 59 | return cls; |
59 | }); | 60 | }); |
60 | - | 61 | + useAlarmNotify(); |
61 | return { | 62 | return { |
62 | getShowFullHeaderRef, | 63 | getShowFullHeaderRef, |
63 | getShowSidebar, | 64 | getShowSidebar, |
@@ -4,6 +4,9 @@ import { notification, Button, Tag } from 'ant-design-vue'; | @@ -4,6 +4,9 @@ import { notification, Button, Tag } from 'ant-design-vue'; | ||
4 | import { h, onMounted, onUnmounted } from 'vue'; | 4 | import { h, onMounted, onUnmounted } from 'vue'; |
5 | import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; | 5 | import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; |
6 | import { alarmLevel } from '/@/views/device/list/config/detail.config'; | 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 | interface UseAlarmNotifyParams { | 11 | interface UseAlarmNotifyParams { |
9 | alarmNotifyStatus?: AlarmStatus; | 12 | alarmNotifyStatus?: AlarmStatus; |
@@ -88,8 +91,22 @@ export function useAlarmNotify(params: UseAlarmNotifyParams = {}) { | @@ -88,8 +91,22 @@ export function useAlarmNotify(params: UseAlarmNotifyParams = {}) { | ||
88 | }, interval); | 91 | }, interval); |
89 | }; | 92 | }; |
90 | 93 | ||
94 | + const { hasPermission } = usePermission(); | ||
95 | + | ||
91 | onMounted(() => { | 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 | onUnmounted(() => { | 112 | onUnmounted(() => { |
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | import { Tabs, Row, Col, Spin, Button, Pagination, Empty } from 'ant-design-vue'; | 5 | import { Tabs, Row, Col, Spin, Button, Pagination, Empty } from 'ant-design-vue'; |
6 | import { cameraPage } from '/@/api/camera/cameraManager'; | 6 | import { cameraPage } from '/@/api/camera/cameraManager'; |
7 | import { CameraRecord } from '/@/api/camera/model/cameraModel'; | 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 | import { useFullscreen } from '@vueuse/core'; | 10 | import { useFullscreen } from '@vueuse/core'; |
11 | import CameraDrawer from './CameraDrawer.vue'; | 11 | import CameraDrawer from './CameraDrawer.vue'; |
12 | import { useDrawer } from '/@/components/Drawer'; | 12 | import { useDrawer } from '/@/components/Drawer'; |