Commit 0950ebd28006f733e3e308879d45e07cc855e629

Authored by xp.Huang
2 parents 5b396414 7ae0d08a

Merge branch 'ww' into 'main'

fix: global notify has exit don not have permiseion

See merge request huang/yun-teng-iot-front!352
@@ -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';