Commit 7ae0d08ab556c6e1fc7e657342b0cd223f7856c9
1 parent
a93f9961
fix: global notify has exit don not have permiseion
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'; |